Skip to main content

No project description provided

Project description

CNV From BAM

cnv_from_bam is a Rust library developed to efficiently calculate dynamic Copy Number Variation (CNV) profiles from sequence alignments contained in BAM files. It seamlessly integrates with Python using PyO3, making it an excellent choice for bioinformatics workflows involving genomic data analysis.

Features

  • Efficient Processing: Optimized for handling large genomic datasets in BAM format.
  • Python Integration: Built with PyO3 for easy integration into Python-based genomic analysis workflows.
  • Multithreading Support: Utilizes Rust's powerful concurrency model for improved performance.
  • Dynamic Binning: Bins the genome dynamically based on total read counts and genome length.
  • CNV Calculation: Accurately calculates CNV values for each bin across different contigs.
  • Directory Support: Supports processing of multiple BAM files in a directory. (Requires alignment to the same reference in all BAM files)

Installation

To use cnv_from_bam in your Rust project, add the following to your Cargo.toml file:

[dependencies]
cnv_from_bam = "0.1.0"  # Replace with the latest version

Calculation explainer

cnv_from_bam calculates copy number from binned mapping starts. Mapping starts from across the genome are binned into 1000 base wide windows.

The bin width of genomic bases for calculating the Copy Number for is calculated as follows -

let bin_width = genome_length as f64 / (number_mapped_reads as f64 / 100_f64).ceil()
let bin_width =
    (bin_width + (cnv_params.bin_size / 2)) / cnv_params.bin_size * cnv_params.bin_size;

Which effectively bins the reads so that we have roughly 100 reads in each bin. This assumes random sampling of reads across the genome. The bin width is then binned to the nearest bin size for the mapped read starts, which by default is 1000 bases.

We then sum the number of binned reads in this "super" bin, so if the binwidth is 10000, we sum the values of the 10 1000 base mapped start counts in this larger bin. We calculate the median for this new set of values. We then finally calculate the CNV across this set of bins as so:

let new_map: FnvHashMap<String, Vec<f64>> = bins
    .into_par_iter()
    .map(|(k, v)| {
        let sums = v
            .chunks(chunk_size)
            .map(|chunk| {
                let x = std::convert::Into::<f64>::into(chunk.iter().sum::<u16>())
                    / median_value as f64
                    * (cnv_params.ploidy as f64);
            })
            .collect::<Vec<f64>>();
        (k, sums)
    })
    .collect();

We sum the binned read counts (bins) int. the chunks, Chunk size is the bin_width from above divided by 1000, so it is scaled to the binned read counts from before. We then divide this by the median value of read counts in the bins across the genome, and multiply that by the expected ploidy. This gives us the Copy Number for each bin on the chromosome/contig.

Usage

Here's a quick example of how to use the iterate_bam_file function:

use cnv_from_bam::iterate_bam_file;
use std::path::PathBuf;

let bam_path = PathBuf::from("path/to/bam/file.bam");
// Iterate over the BAM file and calculate CNV values for each bin. Number of threads is set to 4 and mapping quality filter is set to 60.
// If number of threads is not specified, it defaults to the number of logical cores on the machine.
let result = iterate_bam_file(bam_path, Some(4), Some(60), None, None);
// Process the result...

The results in this case are returned as a CnvResult, which has the following structure:

/// Results struct for python

#[pyclass]
#[derive(Debug)]
pub struct CnvResult {
    /// The CNV per contig
    #[pyo3(get)]
    pub cnv: PyObject,
    /// Bin width
    #[pyo3(get)]
    pub bin_width: usize,
    /// Genome length
    #[pyo3(get)]
    pub genome_length: usize,
    /// Variance of the whole genome
    #[pyo3(get)]
    pub variance: f64,
}

Where result.cnv is a Python dict PyObject containing the Copy Number for each bin of bin_width bases for each contig in the reference genome, result.bin_width is the width of the bins in bases, result.genome_length is the total length of the genome and result.variance is a measure of the variance across the whole genome.

Variance is calculated as the average of the squared differences from the Mean.

[!NOTE] Note: Only the main primary mapping alignment start is binned, Supplementary and Secondary alignments are ignored. Supplementary alignments can be included by setting exclude_supplementary

Directory analysis To analyse a directory of BAM files, use the iterate_bam_dir function:

use cnv_from_bam::iterate_bam_dir;
use std::path::PathBuf;
let bam_path = PathBuf::from("path/to/bam_directory/");
// Iterate over the BAM files in the directory and calculate CNV values for the whole. Number of threads is set to 4 and mapping quality filter is set to 60.
// If number of threads is not specified, it defaults to the number of logical cores on the machine.
let result = iterate_bam_file(bam_path, Some(4), Some(60));

This again returns a CnvResult, but this time the CNV values are summed across all BAM files in the directory. The bin width and genome length are calculated based on the first BAM file in the directory.

[!NOTE] Note: All BAM files in the directory must be aligned to the same reference genome.

Python Integration

cnv_from_bam can be used in Python using the PyO3 bindings. To install the Python bindings, run:

pip install cnv_from_bam

The same iterate_bam_file is availabl e in python, accepting a path to a BAM file or a directory of BAM files, the number of threads (set to None to use the optimal number of threads for the machine), and the mapping quality filter.

Example simple plot in python, you will need matplotlib an numpy installed (pip install matplotlib numpy)

from matplotlib import pyplot as plt
import matplotlib as mpl
from pathlib import Path
from cnv_from_bam import iterate_bam_file
import numpy as np
fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(8, 3))
total = 0
bam_path = Path("path/to/bam/file.bam");
# Iterate over the BAM file and calculate CNV values for each bin. Number of threads is set to 4 and mapping quality filter is set to 60.
# If number of threads is not specified, it defaults to the optimal number of threads for the machine.
result = iterate_bam_file(bam_path, _threads=4, mapq_filter=60);
for contig, cnv in result.cnv.items():
    ax.scatter(x=np.arange(len(cnv)) + total, y=cnv, s =0.1)
    total += len(cnv)

ax.set_ylim((0,8))
ax.set_xlim((0, total))
fig.savefig("Example_cnv_plot.png")

Should look something like this. Obviously the cnv data is just a dictionary of lists, so you can do whatever you want with it vis a vis matplotlib, seaborn, etc. example cnv plot

Python keyword arguments

It is possible to fix some of the dynamically calculated values, for comparison purposes or whatever strikes your fancy.

This parameter accepts a dictionary of keyword arguments that are passed through to CNV calculation functions. These are primarily used to customize the CNV profile calculation according to specific needs. Here are the keys that can be included in py_kwargs:

  • bin_size: An override for the size of the bins which the BAM mapping starts are binned into. The default for this value is 1000.
  • bin_width: The width of the bins used to segment the genome for CNV calculations. If not given, this is dynamically calculated as described in Calculation explainer.
  • genome_length: The total length of the genome, which is used to calculate the number of bins across the genome. If not listed, this is calculated from the BAM file header by summing the lenght of each contig.
  • ploidy: The expected number of copies of each chromosome in a normal, non-variant condition. This is used in normalization and analysis of CNV data. The default for this is 2.
  • target_reads: The target number of reads per bin, which can be used to adjust the resolution of the CNV analysis based on sequencing depth. This is 100 by default.

Each key is optional and has default values or a value is calculated if not specified. When these arguments are provided, they override the default or calculated parameters used in CNV calculations.

Iterative use

It is possible to iteratively add bam files to a continuing count. By passing a dictionary to iterate_bam_file, the intermediate mapping start counts are kept in this dictionary.

This is limited to parsing files one at a time, rather than by directory.

from cnv_from_bam import iterate_bam_file
update = {}
bam_path = Path("path/to/bam/file.bam");
result = iterate_bam_file(bam_path, _threads=4, mapq_filter=60, copy_numbers=update);

bam_path_2 = Path("path/to/bam/file2.bam");
result = iterate_bam_file(bam_path_2, _threads=4, mapq_filter=60, copy_numbers=update);
# Result now contains the copy number as inferred by both BAMS

Terminal/stdout Output

This is new in version >= 0.3. If you just want raw stdout from rust and no faffing with loggers, use v0.2.

Progress Bar

By default, a progress bar is displayed, showing the progress of the iteration of each BAM file. To disable the progress bar, set the CI environment variable to 1 in your python script:

import os
os.environ["CI"] = "1"

Logging

We use the log crate for logging. By default, the log level is set to INFO, which means that the program will output the progress of the iteration of each BAM file. To disable all but warning and error logging, set the log level to WARN on the iterate_bam_file function:

import logging
from cnv_from_bam import iterate_bam_file
iterate_bam_file(bam_path, _threads=4, mapq_filter=60, log_level=int(logging.WARN))

getLevelName is a function from the logging module that converts the log level to the integer value of the level. These values are

Level Value
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0

[!NOTE] In v0.3 a regression was introduced, whereby keeping the GIL for logging meant that BAM reading was suddenly single threaded again. Whilst it was possible to fix this and keep PyO3-log, I decided to go for truly maximum speed instead. The only drawback to the removal of PyO3-log in (v0.4+) is that log messages will not be handled by python loggers, so they won't be written out by a file handler, for example.

Documentation

To generate the documentation, run:

cargo doc --open

Contributing

Contributions to cnv_from_bam are welcome!

We use pre-commit hooks (particularly cargo-fmt and ruff) to ensure that code is formatted correctly and passes all tests before being committed. To install the pre-commit hooks, run:

git clone https://github.com/Adoni5/cnv_from_bam.git
cd cnv_from_bam
pip install -e .[dev]
pre-commit install -t pre-commit -t post-checkout -t post-merge
pre-commit run --all-files

Changelog

Unreleased changes

  • None currently

v0.4.4

  • Adds python keyword arguments which are detailed in the README, allowing the fixing of various parameters which either have sensible defaults or are dynamically calculated to close #19
  • Address an issue spotted by @mattloose where we were becoming increasingly inaccurate across the contig when we plotted by bin_width via element index number, as we were rounding down from the bin_width / bin_size to do the chunking. Example being bin_width 5857 was rounded down to 5 chunks (5 1000 base bins of mapped binning starts), which then means each bin was 857 * index out. #21
  • Fixes the libdeflate on linux requiring GCC >= 4.9 (pure savagery) as detailed in https://github.com/ebiggers/libdeflate/commit/a83fb24e1cb0ec6b6fd53446c941013edf055192. This meant that we were failing to cross compile for linux aarch64 on manylinux 2014, which is gcc 4.8.5, which broke CI
  • Detailed in PR 20

v0.4.3

Iterative use

  • It is possible to iteratively add bam files to a continuing count. By passing a dictionary to iterate_bam_file, the intermediate mapping start counts are kept in this dictionary. This is limited to parsing files one at a time, rather than by directory. See example above under iterative use.

  • Catches bug where metadata (mapped and unmapped count) for a reference sequence in a BAI or CSI file would return None, and crash the calculation. As this was used to calculate the Progress bar total, just skips the offending reference sequence, returning - for both counts. May mean the progress bar can have a lower total than number of reads, but won't matter to final numbers.

  • Adds Cargo tests to CI

v0.4.2

  • Returns the contig names naturally sorted, rather than in random order!! For example chr1, chr2, chr3...chr22,chrM,chrX,chrY! Huge, will prevent some people getting repeatedly confused about expected CNV vs. Visualised and wasting an hour debugging a non existing issue.
  • Returns variance across the whole genome in the CNV result struct.

v0.4.1

  • Add exclude_supplementary parameter to iterate_bam_file, to exclude supplementary alignments (default True)

v0.4.0

  • Remove PyO3-log for maximum speed. This means that log messages will not be handled by python loggers. Can set log level on call to iterate_bam_file

v0.3.0

  • Introduce PyO3-log for logging. This means that log messages can be handled by python loggers, so they can be written out by a file handler, for example.
  • HAS A LARGE PERFORMANCE ISSUE
  • Can disable progress bar display by setting CI environment variable to 1 in python script.

v0.2.0

  • Purely rust based BAM parsing, using noodles.
  • Uses a much more sensible number for threading if not provided.
  • Allows iteration of BAMS in a directory

v0.1.0

  • Initial release
  • Uses rust-bio/rust-htslib for BAM parsing. Has to bind C code, is a faff.

License

This project is licensed under the Mozilla Public License 2.0.

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

cnv_from_bam-0.4.4.tar.gz (38.1 MB view details)

Uploaded Source

Built Distributions

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

cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl (569.6 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl (592.3 kB view details)

Uploaded PyPymacOS 10.12+ x86-64

cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl (569.6 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl (592.3 kB view details)

Uploaded PyPymacOS 10.12+ x86-64

cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl (569.8 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl (592.6 kB view details)

Uploaded PyPymacOS 10.12+ x86-64

cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cnv_from_bam-0.4.4-cp312-cp312-macosx_11_0_arm64.whl (569.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

cnv_from_bam-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl (592.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cnv_from_bam-0.4.4-cp311-cp311-macosx_11_0_arm64.whl (569.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

cnv_from_bam-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl (592.5 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cnv_from_bam-0.4.4-cp310-cp310-macosx_11_0_arm64.whl (569.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

cnv_from_bam-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl (592.4 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cnv_from_bam-0.4.4-cp39-cp39-macosx_11_0_arm64.whl (569.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

cnv_from_bam-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl (592.6 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_28_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cnv_from_bam-0.4.4-cp38-cp38-macosx_11_0_arm64.whl (569.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

cnv_from_bam-0.4.4-cp38-cp38-macosx_10_12_x86_64.whl (592.8 kB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

Details for the file cnv_from_bam-0.4.4.tar.gz.

File metadata

  • Download URL: cnv_from_bam-0.4.4.tar.gz
  • Upload date:
  • Size: 38.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for cnv_from_bam-0.4.4.tar.gz
Algorithm Hash digest
SHA256 2908250502e73bf5be92d612922b066dcdd6f3ec5b018a4ea6c3a509cfa1282a
MD5 cbbf4d83ad19922f13dd7c147a99d44c
BLAKE2b-256 4318b7b34c378ae4630405111e3bb14fd1cb693686e7eaf5b8ba045ba5f756f2

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d72238c03aeb3b80bb06b39c4823ca9564f8b4ad6e5a33fd19a103af1dbd4d41
MD5 89e8feafadb0882f56052ae18decfeb3
BLAKE2b-256 edac3bbba135d1c3d93c5eb69062feafbf8324f15ffc71c8f5498caf11971549

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 032c3777ee3e1efeeb7670384df573231418791894627d2c3d55540101f774fa
MD5 14ff552e87d5e02b9143d6d409cdfb4c
BLAKE2b-256 277734e37d5666d085eea6235a72350216562576010f19ea88b452a3244b1f10

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12b1e20c67f5fde99fa5d167232649be0fc346c4f0963d9632f4a109f6c6e6b0
MD5 693726948b6b081ab7a2081891c12943
BLAKE2b-256 f7e4ab1b91c07f653e4c5d8474efae39363c6f22bd403d0c2e8007e731b36778

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 244031a58889bb362dec1ae16ad51c9fd94420d2bfa05e6f73b9597f14cd976b
MD5 7cab8095abbc8093fee729cfb2b7ae35
BLAKE2b-256 d53a7153511401987b96162d295fad31e27c084900e4d014342c68e6dc5d5b48

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6b615d765fe80557a2223f4b9b5e571b564f3bb888e2f370ce7c29248fc75445
MD5 62dbcbc121edfd426fbc2c976edd0d57
BLAKE2b-256 214f3d1efdc52f96891ab44d800ecdec79087943357c5934b93fcd923b1a485a

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3eed69f6858db09a04eb116f2e46c223e2264acc429a79a9e3b2f171c63d3514
MD5 4ddad84749953e97a1e9a4c820d3e13f
BLAKE2b-256 e909d381490c702c58e60ba42e23da4eecd252109ef2d2a0d3c9ac52431ab5e3

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 143d1da1155a8826757739840b30201747100a8a6cca207dd02f36e0a8fcc686
MD5 c32e48660164331649f74ba53b8dcf01
BLAKE2b-256 58841e7e7c94ca516732805bcb8ee503e1a9112e8ae86ab2480b2aa24a56b30c

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6eac56d2bc49368b5bf1991a15a40c9b018c22fb86333f15775a7044e676a1b3
MD5 c9c1b88b27fb3b7bd6b7dd252229c0ad
BLAKE2b-256 47aeaec5cf9630db8f91968791c7ed28ae5d7210a423eaa8257fd0e693acddfb

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 57fab4bc4f16161f6704d042e0bc8394d7e584849cdaece8fda224f2dc268c9b
MD5 d220e7617e7effc47710a1ceb7e671e6
BLAKE2b-256 efa54c40db5654c3e64c662500099c71d359879c3d5ded3b1241dd26339353dc

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1e608362c7c615a91eea7a99097de5af5dd6dfdb9be757e288567cd22c7c313c
MD5 cd96dd13bd53e42aa13c09769d4fd946
BLAKE2b-256 f1c3ab4a269f2ed233e57d2e282a909a2e22e508b4446991e8f04938e06c66e1

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31d48087cb8ec270dbf0311ee11f3825c3b8beb2bf5af8881310307e3db65713
MD5 cfcbc5a49d27083b453f27f698134e22
BLAKE2b-256 4c62c77c31eb535c16952c7c6cf7d67d1620e44c16be955ec27eda2362077192

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a2e4e6af41f531854b583523b774886f449f9c5f90f7665dbd04015bf62b47ca
MD5 e55bdb7c13e89ac828d9e940e5788d8a
BLAKE2b-256 2d878a131226bc89057bd4ab6418f33b6426f9a252b7907fbee27ec84da8e7d0

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 06e467437276ed6ae327833cb10dae29df5ee93b8bfabed48365e2f7700bdc2b
MD5 67bd726a3589da9daf54b90a502a56dc
BLAKE2b-256 d15972b5174ddc422395020ac13216c55eedeca03210ba53a8fdfe267cb9d222

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3fb72d2d0e3b8151d1b3a84a95cc63542639f260aab6b87ffc6efd4eb67a97aa
MD5 5002269f9223ee625cb4f64e0c51837e
BLAKE2b-256 5a0841dd494a1488fc6e8a68415173f276ceafa7a848f1fee53977df50fc7c45

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6fbf0749693e54233a87339631e0869ac6e5463906cd9f693f77862073baab6d
MD5 73d14f56895ac7d146102447edf63b42
BLAKE2b-256 8c8c26a21c7bde9dabae5db393dea0e33c2901079d529972015f0c6c138a0f30

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 df111a42f4d432f7312ed40ca5945ebe99712e21819896c656acbccd129f104f
MD5 5bde12790ebd62aeccdc7427b036369b
BLAKE2b-256 0be433898e71b81efbb929bb3d9840aefe88d676899f5c15c4faa22343ae2bee

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9293e93637c959b1f3eca8e629188356b3ed5182ce142eab699b60003642c857
MD5 52656aa2399378a6a1a2bf7a830b69b1
BLAKE2b-256 ea8e985d6e6d3cd6b4890d8a646bfc7f88487fb6a6b1ff2ebf99e6b9df57b77b

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f7389cfda11bcf9e302d2ca2a339a3c1ab98221ad0c846ecc61ea7e70f6efd4
MD5 dfa57290dcc11d37b98522d2d2d30c0a
BLAKE2b-256 df46437c3c0e7196bd690c5630998fa54836a3766831b3a89b2a75de6a46d9ef

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 060d8e0a9b39cf875e809e8436ac63ff5ebaa4c927ac78fc2613bf4970e0b8fe
MD5 0805ef81fb86a8a9ccab76de6fd768e9
BLAKE2b-256 ee1fb2b3302d4dd2ae5a34344dbca8a01f5b392d6414a71031e8d8246d1756dc

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 69e811e1c245239b3106e22ddc3afd93420f12a598d8e30c4673530c100e7997
MD5 e16045210cd7059c1a6eef9699217fef
BLAKE2b-256 afa2a777b85ab76a4caf9463cb147808069e4a7ed720089da492ac679d87e243

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 346979dbca9a1ab6cd89d7caacb5fe0cad871178173ab63fee329658a1bbae7b
MD5 2e0168dfafe7dc5f11bac96b4ce1599d
BLAKE2b-256 f26dce3a7b00ecf1c998e99f7352e1c7d8faf517d9309c509c42ff4333938089

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e7e083325ac2ff59872bf019b895bdc28f5ed9e6ddea5fb6f9a6f035458c28a5
MD5 2bbecb2dfd858b03b3f607d2e245276d
BLAKE2b-256 7089fbd48e7c3b4d4eba8c80c7cbe303a9fc77eb4cd84e25f75018bfb3586b95

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 260e845121ea85b341c0d619760ccc466184296826eda99d5838c3c5fcd975df
MD5 905c522ff4a679a052be4c9d835fd6d6
BLAKE2b-256 d15ed30274879b9f8373ab3ff2e8eed8105fba64a861be9bb05fe8f613c8fb3c

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 406caa2ae2ff6e9cb5b18def268c0ae22ccf1e11a14740771316752e3f8218f7
MD5 63421a051ae5bc08d865376c3ffee1cf
BLAKE2b-256 5378f8c71bc3dc156bc4595c787020b06de5660751c4749cdaabc734059d423e

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9919178746e4cbdecd0bce299f6c497f86a7218a996c1cd5ca29c49711fe3a98
MD5 79b217c5f8e728e0e93c60d8c0d5a7c6
BLAKE2b-256 77f735ac402ca69a137cee301c2d3837f697151260020e618e35bbcac0e5246a

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 43038d222ca8d7018cc70344178aed466f82082f7efe96d7be670f70399a90c6
MD5 383c432b0358609c152dea7ec4f97082
BLAKE2b-256 ec1666bb9ef283d7e6b8568a0082370d4610d2f05e956b0782a3380ae919cb43

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fd6c50de1e40f80e5de830f383303a2443a6eb2d5e6aaa217f229768950d2183
MD5 ca0d171142e1f45a6c877ac7d8f80d32
BLAKE2b-256 8ba78628a0323fa0e5ed94ae2a89be6f422deda06a79e7d3d6c2d56be2b2cf2b

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f87f0f20947a92053ca5744fada74980d3a9cb8a9a4ed699a485d62bb8ff62d4
MD5 3d3e334c440a2c62bdb983f12d31ec78
BLAKE2b-256 70e763981dfbaad5ab3932b0f91269caff6503ee98d4800521c810e0901cd83a

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 50405e56f96cd86319a2fbe7565d3b320b472a4f2d01bb5ad66b3d26114b0aa8
MD5 8c1ca0d33495e181a90da2280bc5c288
BLAKE2b-256 2f952f51c6abaf190656352975fd617e5b02689e55341b4d010a373b76276f53

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f30b7c31570b94bf071377526d64ae5d44f35dd504352c0f81a558134f365b7
MD5 c98e748eaf25277cf689fa6ac721ed17
BLAKE2b-256 b38477ec9dc6f2fd5c44b9834bb2e683f568d93127ae681436a9673ca77ce8b5

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 874fabd17d83627f1a4d31ca5d35a46f9c6be1c8847e8f12d442ec26259a4a00
MD5 d9e835eda727089f58f277a36c51453f
BLAKE2b-256 ede63aa17dedf8aeb9fe0908400a139635affded771c6a38389e3315d3892c1b

See more details on using hashes here.

File details

Details for the file cnv_from_bam-0.4.4-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for cnv_from_bam-0.4.4-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dff581452f2db942a751269cafc9f1595e725e84c8ec8bfa4def4b7accdfcd07
MD5 5611d8a68c175318d9a9ae0c8ecf08c0
BLAKE2b-256 f1e7a91bdd2311b10a517b4513c3542c05dbbbfe59161323647baaf6a53f5376

See more details on using hashes here.

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