scienide / helix
此包已被废弃,不再维护。未建议替代包。
一个用于生物信息学中计数短DNA序列的库。
dev-master
2021-06-22 07:02 UTC
Requires
- php: >=7.4
- scienide/okbloomer: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpbench/phpbench: ^1.0
- phpstan/phpstan: ^0.12.88
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2022-02-22 08:26:32 UTC
README
一个用于生物信息学中计数短DNA序列的库。Helix 包含数据提取工具以及一个针对计数DNA序列的专用超低内存哈希表 DNA Hash。DNA Hash 通过其 up2bit 编码存储序列计数 - 一个双向哈希,利用每个DNA碱基只需要2位即可完全编码的事实。因此,DNA Hash 比存储原始基因序列的查找表使用的内存更少。此外,DNA Hash 的分层 Bloom 过滤器消除了显式存储仅出现过一次的序列计数的需要。
- 超低内存占用
- 兼容于FASTA和FASTQ格式
- 支持规范序列计数
- 开源并可免费商用
注意:最大序列长度取决于平台。在64位机器上,最大长度为31。在32位机器上,最大长度为15。
注意:由于Bloom过滤器的概率性质,DNA Hash可能会以有限的速率高计数序列。
安装
使用 Composer 将其安装到您的项目中
$ composer require scienide/helix
要求
- PHP 7.4或更高版本
示例
use Helix\DNAHash; use Helix\Extractors\FASTA; use Helix\Tokenizers\Canonical; use Helix\Tokenizers\Kmer; $extractor = new FASTA('example.fa'); $tokenizer = new Canonical(new Kmer(25)); $hashTable = new DNAHash(0.001); foreach ($extractor as $sequence) { $tokens = $tokenizer->tokenize($sequence); foreach ($tokens as $token) { $hashTable->increment($token); } } $top10 = $hashTable->top(10); print_r($top10);
Array
(
[GCTATAAAAAGAAAATTTTGGAATA] => 19
[ATTCCAAAATTTTCTTTTTATAGCC] => 19
[TAAAAAGAAAATTTTGGAATAAAAA] => 18
[ATAAAAAGAAAATTTTGGAATAAAA] => 18
[TATAAAAAGAAAATTTTGGAATAAA] => 18
[CTATAAAAAGAAAATTTTGGAATAA] => 18
[AAATAATTTCAATTTTCTATCTCAA] => 17
[AAAATAATTTCAATTTTCTATCTCA] => 17
[CAAAATAATTTCAATTTTCTATCTC] => 17
[AGATAGAAAATTGAAATTATTTTGA] => 17
)
测试
要运行单元测试
$ composer test
静态分析
要运行静态代码分析
$ composer analyze
基准测试
要运行基准测试
$ composer benchmark
参考文献
- [1] https://github.com/JohnLonginotto/ACGTrie/blob/master/docs/UP2BIT.md.
- [2] P. Melsted et al. (2011). Efficient counting of k-mers in DNA sequences using a bloom filter.
- [3] S. Deorowicz et al. (2015). KMC 2: fast and resource-frugal k-mer counting.