Skip to main content

DNA Hash

A specialized datastructure and tokenization library for counting genetic sequences for use in Machine Learning and Bioinformatics. DNA Hash stores k-mer sequence counts by their up2bit encoding - an efficient two-way hash that works with variable-length sequences. As such, DNA Hash uses considerably less memory than a lookup table that stores sequences in plaintext. In addition, DNA Hash's novel autoscaling Bloom filter eliminates the need to explicitly store singletons and makes it suitable for use on streaming data.

  • Ultra-low memory footprint
  • Variable sequence lengths
  • Embarrassingly parallelizable
  • Open-source and free to use commercially

Note: Due to the probabilistic nature of the Bloom filter, DNA Hash may over count sequences at a bounded rate.

Installation

Install DNA Hash using a Python package manager, example pip:

pip install dnahash

Example Usage

from dna_hash import DNAHash
from dna_hash.tokenizers import Kmer, Canonical

from Bio import SeqIO
from matplotlib import pyplot as plt

hash_table = DNAHash(max_false_positive_rate=0.001)

tokenizer = Canonical(Kmer(6))

with open('covid-19-virus.fasta', 'r') as file:
    for record in SeqIO.parse(file, 'fasta'):
        for token in tokenizer.tokenize(str(record.seq)):
            hash_table.increment(token)

for sequence, count in hash_table.top(25):
    print(f'{sequence}: {count}')

print(f'Total sequences: {hash_table.num_sequences}')
print(f'# of unique sequences: {hash_table.num_unique_sequences}')
print(f'# of singletons: {hash_table.num_singletons}')

plt.hist(list(hash_table.counts.values()), bins=20)
plt.title('SARS-CoV-2 Genome')
plt.xlabel('Counts')
plt.ylabel('Frequency')
plt.show()
TAACAA: 70
TTAAAA: 68
ACAACA: 65
...
CATTAA: 49

Total sequences: 29876
# of unique sequences: 2013
# of singletons: 100

SARS-CoV-2 Histogram

References

Metadata

Release files for DNAHash 0.0.3

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

Source distribution (sdist)

Source distribution for DNAHash 0.0.3
File Size Uploaded
dnahash-0.0.3.tar.gz 7.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for DNAHash 0.0.3
File Interpreter ABI Platform
dnahash-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 13.5 kB

Release files / dnahash-0.0.3.tar.gz

Download URL dnahash-0.0.3.tar.gz
Size 7.2 kB
Tags Source
SHA-256 checksum
How to use checksums
512f4c2c8835bd53843a81ed8607fb414768835669beaef501ec35c992bb3d71
BLAKE2b-256 checksum
How to use checksums
f1708ebb0252bb21741ea8d1a8908a528f98cb6509b6e97eee927c17a7247511
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release files / dnahash-0.0.3-py3-none-any.whl

Download URL dnahash-0.0.3-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
589bb0f123eb9802877032491ae950a08fdd63b28a92eb1c62562a6a98b74dbc
BLAKE2b-256 checksum
How to use checksums
99ff69f8f2ede8ff9ea1c54ed8e1b4b584ab7264a5395ef85ecc0780e4e248c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files

0.0.2

2 release files

0.0.1

2 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