Skip to main content

A package for splitting reads in BAM/FASTQ files into smaller fragments.

Project description

Bamurai

A Python package for splitting reads in BAM/FASTQ files into smaller fragments.

Description

Bamurai is a command-line tool for splitting reads in BAM/FASTQ files into smaller fragments. It is designed to be fast and efficient, and can be used to split reads into a target length or a target number of pieces per read.

These are the current features of Bamurai:

  1. Splitting reads in a file to a target length
  2. Splitting reads in a file to a target number of pieces per read
  3. Getting statistics from a BAM or FASTQ(.gz) file
  4. Basic validation of BAM and FASTQ(.gz) files

The split command splits reads into a target length, each read will be split into fragments as close to the target length as possible. Reads shorter than the target length will not be split.

The divide command splits reads into a target number of pieces, each read will be split into the number of pieces specified. A further minimum length can be specified to ensure that reads are not split if the resultant fragments are less than the minimum length.

The stats command will output the following information by default:

Statistics for input.bam:
  Total reads: 8160
  Average read length: 30638
  Throughput: 250006998
  N50: 82547

It can be used with the --tsv argument to output the statistics in a tab-separated format for computational analysis.

file_name       total_reads     avg_read_len    throughput      n50
input.bam      8160    30638   250006998       82547

The validate command will check the integrity of a BAM or FASTQ(.gz) file and output the following information if the file is valid.:

input.bam is a valid BAM file with 8160 records.

Installation

To install the released version of Bamurai from PyPI

pip install bamurai

To install the latest version of Bamurai from GitHub

pip install git+https://github.com/Shians/Bamurai.git

Usage

To get help on the command-line interface and list available commands

bamurai --help

To get help on a specific command

bamurai <command> --help

Splitting reads to target size

To split a file into 10,000 bp reads

bamurai split input.bam --target-length 10000 --output output.fastq

To create a gzipped output file

bamurai split input.bam --target-length 10000 | gzip > output.fastq.gz

Dividing reads into a target number of pieces

To divide reads into 2 pieces

bamurai divide input.bam --num_fragments 2 --output output.fastq

To divide reads into 2 pieces unless resultant fragments are less than 1000 bp

bamurai divide input.bam --num_fragments 2 --min_length 1000 --output output.fastq

Getting statistics from a BAM or FASTQ file

To get stats from a BAM file

bamurai stats input.bam

To get stats from a FASTQ file or Gzipped FASTQ file

bamurai stats input.fastq
bamurai stats input.fastq.gz

Validating BAM or FASTQ files

To validate a BAM file

bamurai validate input.bam

Working with multi-sample BAM files

Bamurai provides commands for processing BAM files with multiple samples based on barcode information.

Splitting BAM files by donor ID

To split a BAM file into multiple BAM files, one for each donor ID:

bamurai split_samples --bam input.bam --tsv barcode_to_donor.tsv --output-dir donor_bams

The TSV file should contain at least two columns with headers 'barcode' and 'donor_id'. Each row maps a barcode to a donor ID.

You can process multiple BAM files at once:

bamurai split_samples --bam input1.bam input2.bam --tsv barcode_to_donor.tsv --output-dir donor_bams

Extracting reads for a specific donor

To extract all reads belonging to a specific donor from a BAM file:

bamurai extract_sample --bam input.bam --tsv barcode_to_donor.tsv --donor-id donor1 --output donor1.bam

You can also process multiple BAM files at once, combining all donor-specific reads into a single output file:

bamurai extract_sample --bam input1.bam input2.bam input3.bam --tsv barcode_to_donor.tsv --donor-id donor1 --output donor1.bam

This command will extract all reads with barcodes belonging to the specified donor ID and write them to a new BAM file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bamurai-0.6.4.tar.gz (18.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bamurai-0.6.4-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file bamurai-0.6.4.tar.gz.

File metadata

  • Download URL: bamurai-0.6.4.tar.gz
  • Upload date:
  • Size: 18.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for bamurai-0.6.4.tar.gz
Algorithm Hash digest
SHA256 2789f5e12f689c977c1e482c03d3a81ec13fbd3202f689027cfc7a56a960b9db
MD5 a460a5da19c58f49faa89690f03d0d4f
BLAKE2b-256 73e18499d391c2f37d1d467f864f91e1c0dccdb99bd3e04abae3864e377bd7eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for bamurai-0.6.4.tar.gz:

Publisher: publish-to-pypi.yml on Shians/Bamurai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bamurai-0.6.4-py3-none-any.whl.

File metadata

  • Download URL: bamurai-0.6.4-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for bamurai-0.6.4-py3-none-any.whl
Algorithm Hash digest
SHA256 23786f8bb6cecd1288e09adeda3ebb7bb0440fb181953b3fa23144171482b98f
MD5 3747f06eb5960ae58bcbcb3b5e3ad36f
BLAKE2b-256 7acd5b39002304da9a33c702b1dce79035825af8a21255560af03f13fe379b25

See more details on using hashes here.

Provenance

The following attestation bundles were made for bamurai-0.6.4-py3-none-any.whl:

Publisher: publish-to-pypi.yml on Shians/Bamurai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page