Skip to main content

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.

Metadata

Release files for cnv-from-bam 0.4.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cnv-from-bam 0.4.4
File Size Uploaded
cnv_from_bam-0.4.4.tar.gz 38.1 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for cnv-from-bam 0.4.4
File
cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl PyPy 3.10 PyPy 3.10 7.3 Linux glibc 2.28+ ARM64 Details
cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.10 PyPy 3.10 7.3 Linux glibc 2.17+ x86-64 Details
cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl PyPy 3.10 PyPy 3.10 7.3 macOS 11.0+ ARM64 Details
cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl PyPy 3.10 PyPy 3.10 7.3 macOS 10.12+ x86-64 Details
cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl PyPy 3.9 PyPy 3.9 7.3 Linux glibc 2.28+ ARM64 Details
cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.9 PyPy 3.9 7.3 Linux glibc 2.17+ x86-64 Details
cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl PyPy 3.9 PyPy 3.9 7.3 macOS 11.0+ ARM64 Details
cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl PyPy 3.9 PyPy 3.9 7.3 macOS 10.12+ x86-64 Details
cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl PyPy 3.8 PyPy 3.8 7.3 Linux glibc 2.28+ ARM64 Details
cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.8 PyPy 3.8 7.3 Linux glibc 2.17+ x86-64 Details
cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl PyPy 3.8 PyPy 3.8 7.3 macOS 11.0+ ARM64 Details
cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl PyPy 3.8 PyPy 3.8 7.3 macOS 10.12+ x86-64 Details
cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
cnv_from_bam-0.4.4-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
cnv_from_bam-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
cnv_from_bam-0.4.4-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
cnv_from_bam-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
cnv_from_bam-0.4.4-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
cnv_from_bam-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details
cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_28_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ ARM64 Details
cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
cnv_from_bam-0.4.4-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
cnv_from_bam-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.12+ x86-64 Details
cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_28_aarch64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ ARM64 Details
cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
cnv_from_bam-0.4.4-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
cnv_from_bam-0.4.4-cp38-cp38-macosx_10_12_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.12+ x86-64 Details

Total release size: 64.3 MB

Release files / cnv_from_bam-0.4.4.tar.gz

Download URL cnv_from_bam-0.4.4.tar.gz
Size 38.1 MB
Tags Source
SHA-256 checksum
How to use checksums
2908250502e73bf5be92d612922b066dcdd6f3ec5b018a4ea6c3a509cfa1282a
BLAKE2b-256 checksum
How to use checksums
4318b7b34c378ae4630405111e3bb14fd1cb693686e7eaf5b8ba045ba5f756f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl

Download URL cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
d72238c03aeb3b80bb06b39c4823ca9564f8b4ad6e5a33fd19a103af1dbd4d41
BLAKE2b-256 checksum
How to use checksums
edac3bbba135d1c3d93c5eb69062feafbf8324f15ffc71c8f5498caf11971549
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cnv_from_bam-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
032c3777ee3e1efeeb7670384df573231418791894627d2c3d55540101f774fa
BLAKE2b-256 checksum
How to use checksums
277734e37d5666d085eea6235a72350216562576010f19ea88b452a3244b1f10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl

Download URL cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Size 569.6 kB
Tags PyPy 3.10 PyPy 3.10 7.3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
12b1e20c67f5fde99fa5d167232649be0fc346c4f0963d9632f4a109f6c6e6b0
BLAKE2b-256 checksum
How to use checksums
f7e4ab1b91c07f653e4c5d8474efae39363c6f22bd403d0c2e8007e731b36778
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl

Download URL cnv_from_bam-0.4.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl
Size 592.3 kB
Tags PyPy 3.10 PyPy 3.10 7.3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
244031a58889bb362dec1ae16ad51c9fd94420d2bfa05e6f73b9597f14cd976b
BLAKE2b-256 checksum
How to use checksums
d53a7153511401987b96162d295fad31e27c084900e4d014342c68e6dc5d5b48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl

Download URL cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
6b615d765fe80557a2223f4b9b5e571b564f3bb888e2f370ce7c29248fc75445
BLAKE2b-256 checksum
How to use checksums
214f3d1efdc52f96891ab44d800ecdec79087943357c5934b93fcd923b1a485a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cnv_from_bam-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
3eed69f6858db09a04eb116f2e46c223e2264acc429a79a9e3b2f171c63d3514
BLAKE2b-256 checksum
How to use checksums
e909d381490c702c58e60ba42e23da4eecd252109ef2d2a0d3c9ac52431ab5e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl

Download URL cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Size 569.6 kB
Tags PyPy 3.9 PyPy 3.9 7.3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
143d1da1155a8826757739840b30201747100a8a6cca207dd02f36e0a8fcc686
BLAKE2b-256 checksum
How to use checksums
58841e7e7c94ca516732805bcb8ee503e1a9112e8ae86ab2480b2aa24a56b30c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl

Download URL cnv_from_bam-0.4.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl
Size 592.3 kB
Tags PyPy 3.9 PyPy 3.9 7.3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
6eac56d2bc49368b5bf1991a15a40c9b018c22fb86333f15775a7044e676a1b3
BLAKE2b-256 checksum
How to use checksums
47aeaec5cf9630db8f91968791c7ed28ae5d7210a423eaa8257fd0e693acddfb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl

Download URL cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.8 PyPy 3.8 7.3
SHA-256 checksum
How to use checksums
57fab4bc4f16161f6704d042e0bc8394d7e584849cdaece8fda224f2dc268c9b
BLAKE2b-256 checksum
How to use checksums
efa54c40db5654c3e64c662500099c71d359879c3d5ded3b1241dd26339353dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cnv_from_bam-0.4.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.8 PyPy 3.8 7.3
SHA-256 checksum
How to use checksums
1e608362c7c615a91eea7a99097de5af5dd6dfdb9be757e288567cd22c7c313c
BLAKE2b-256 checksum
How to use checksums
f1c3ab4a269f2ed233e57d2e282a909a2e22e508b4446991e8f04938e06c66e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl

Download URL cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Size 569.8 kB
Tags PyPy 3.8 PyPy 3.8 7.3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
31d48087cb8ec270dbf0311ee11f3825c3b8beb2bf5af8881310307e3db65713
BLAKE2b-256 checksum
How to use checksums
4c62c77c31eb535c16952c7c6cf7d67d1620e44c16be955ec27eda2362077192
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl

Download URL cnv_from_bam-0.4.4-pp38-pypy38_pp73-macosx_10_12_x86_64.whl
Size 592.6 kB
Tags PyPy 3.8 PyPy 3.8 7.3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
a2e4e6af41f531854b583523b774886f449f9c5f90f7665dbd04015bf62b47ca
BLAKE2b-256 checksum
How to use checksums
2d878a131226bc89057bd4ab6418f33b6426f9a252b7907fbee27ec84da8e7d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
06e467437276ed6ae327833cb10dae29df5ee93b8bfabed48365e2f7700bdc2b
BLAKE2b-256 checksum
How to use checksums
d15972b5174ddc422395020ac13216c55eedeca03210ba53a8fdfe267cb9d222
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3fb72d2d0e3b8151d1b3a84a95cc63542639f260aab6b87ffc6efd4eb67a97aa
BLAKE2b-256 checksum
How to use checksums
5a0841dd494a1488fc6e8a68415173f276ceafa7a848f1fee53977df50fc7c45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp312-cp312-macosx_11_0_arm64.whl

Download URL cnv_from_bam-0.4.4-cp312-cp312-macosx_11_0_arm64.whl
Size 569.6 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6fbf0749693e54233a87339631e0869ac6e5463906cd9f693f77862073baab6d
BLAKE2b-256 checksum
How to use checksums
8c8c26a21c7bde9dabae5db393dea0e33c2901079d529972015f0c6c138a0f30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl
Size 592.0 kB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
df111a42f4d432f7312ed40ca5945ebe99712e21819896c656acbccd129f104f
BLAKE2b-256 checksum
How to use checksums
0be433898e71b81efbb929bb3d9840aefe88d676899f5c15c4faa22343ae2bee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9293e93637c959b1f3eca8e629188356b3ed5182ce142eab699b60003642c857
BLAKE2b-256 checksum
How to use checksums
ea8e985d6e6d3cd6b4890d8a646bfc7f88487fb6a6b1ff2ebf99e6b9df57b77b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4f7389cfda11bcf9e302d2ca2a339a3c1ab98221ad0c846ecc61ea7e70f6efd4
BLAKE2b-256 checksum
How to use checksums
df46437c3c0e7196bd690c5630998fa54836a3766831b3a89b2a75de6a46d9ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp311-cp311-macosx_11_0_arm64.whl

Download URL cnv_from_bam-0.4.4-cp311-cp311-macosx_11_0_arm64.whl
Size 569.7 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
060d8e0a9b39cf875e809e8436ac63ff5ebaa4c927ac78fc2613bf4970e0b8fe
BLAKE2b-256 checksum
How to use checksums
ee1fb2b3302d4dd2ae5a34344dbca8a01f5b392d6414a71031e8d8246d1756dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl
Size 592.5 kB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
69e811e1c245239b3106e22ddc3afd93420f12a598d8e30c4673530c100e7997
BLAKE2b-256 checksum
How to use checksums
afa2a777b85ab76a4caf9463cb147808069e4a7ed720089da492ac679d87e243
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
346979dbca9a1ab6cd89d7caacb5fe0cad871178173ab63fee329658a1bbae7b
BLAKE2b-256 checksum
How to use checksums
f26dce3a7b00ecf1c998e99f7352e1c7d8faf517d9309c509c42ff4333938089
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e7e083325ac2ff59872bf019b895bdc28f5ed9e6ddea5fb6f9a6f035458c28a5
BLAKE2b-256 checksum
How to use checksums
7089fbd48e7c3b4d4eba8c80c7cbe303a9fc77eb4cd84e25f75018bfb3586b95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp310-cp310-macosx_11_0_arm64.whl

Download URL cnv_from_bam-0.4.4-cp310-cp310-macosx_11_0_arm64.whl
Size 569.7 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
260e845121ea85b341c0d619760ccc466184296826eda99d5838c3c5fcd975df
BLAKE2b-256 checksum
How to use checksums
d15ed30274879b9f8373ab3ff2e8eed8105fba64a861be9bb05fe8f613c8fb3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl
Size 592.4 kB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
406caa2ae2ff6e9cb5b18def268c0ae22ccf1e11a14740771316752e3f8218f7
BLAKE2b-256 checksum
How to use checksums
5378f8c71bc3dc156bc4595c787020b06de5660751c4749cdaabc734059d423e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_28_aarch64.whl

Download URL cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9919178746e4cbdecd0bce299f6c497f86a7218a996c1cd5ca29c49711fe3a98
BLAKE2b-256 checksum
How to use checksums
77f735ac402ca69a137cee301c2d3837f697151260020e618e35bbcac0e5246a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
43038d222ca8d7018cc70344178aed466f82082f7efe96d7be670f70399a90c6
BLAKE2b-256 checksum
How to use checksums
ec1666bb9ef283d7e6b8568a0082370d4610d2f05e956b0782a3380ae919cb43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp39-cp39-macosx_11_0_arm64.whl

Download URL cnv_from_bam-0.4.4-cp39-cp39-macosx_11_0_arm64.whl
Size 569.9 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fd6c50de1e40f80e5de830f383303a2443a6eb2d5e6aaa217f229768950d2183
BLAKE2b-256 checksum
How to use checksums
8ba78628a0323fa0e5ed94ae2a89be6f422deda06a79e7d3d6c2d56be2b2cf2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl
Size 592.6 kB
Tags CPython 3.9 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f87f0f20947a92053ca5744fada74980d3a9cb8a9a4ed699a485d62bb8ff62d4
BLAKE2b-256 checksum
How to use checksums
70e763981dfbaad5ab3932b0f91269caff6503ee98d4800521c810e0901cd83a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_28_aarch64.whl

Download URL cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_28_aarch64.whl
Size 1.1 MB
Tags CPython 3.8 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
50405e56f96cd86319a2fbe7565d3b320b472a4f2d01bb5ad66b3d26114b0aa8
BLAKE2b-256 checksum
How to use checksums
2f952f51c6abaf190656352975fd617e5b02689e55341b4d010a373b76276f53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.1 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7f30b7c31570b94bf071377526d64ae5d44f35dd504352c0f81a558134f365b7
BLAKE2b-256 checksum
How to use checksums
b38477ec9dc6f2fd5c44b9834bb2e683f568d93127ae681436a9673ca77ce8b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp38-cp38-macosx_11_0_arm64.whl

Download URL cnv_from_bam-0.4.4-cp38-cp38-macosx_11_0_arm64.whl
Size 569.8 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
874fabd17d83627f1a4d31ca5d35a46f9c6be1c8847e8f12d442ec26259a4a00
BLAKE2b-256 checksum
How to use checksums
ede63aa17dedf8aeb9fe0908400a139635affded771c6a38389e3315d3892c1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / cnv_from_bam-0.4.4-cp38-cp38-macosx_10_12_x86_64.whl

Download URL cnv_from_bam-0.4.4-cp38-cp38-macosx_10_12_x86_64.whl
Size 592.8 kB
Tags CPython 3.8 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
dff581452f2db942a751269cafc9f1595e725e84c8ec8bfa4def4b7accdfcd07
BLAKE2b-256 checksum
How to use checksums
f1e7a91bdd2311b10a517b4513c3542c05dbbbfe59161323647baaf6a53f5376
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.4.4 This release

33 release files

0.4.3

33 release files

0.3.0

33 release files

0.2.0

33 release files

0.1.0

25 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page