andrewdalpino / helix
一个用于生物信息学中计算短DNA序列的PHP库。
dev-master
2022-01-24 04:20 UTC
Requires
- php: >=7.4
- andrewdalpino/okbloomer: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpbench/phpbench: ^1.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-24 10:14:14 UTC
README
一个用于生物信息学中计算短DNA序列的PHP库。Helix包含数据提取工具,以及一个称为DNA Hash的超低内存哈希表,专门用于计数DNA序列。DNA Hash通过其up2bit编码存储序列计数——这是一个双向哈希,利用了每个DNA碱基只需2位即可完全编码的事实。因此,DNA Hash比存储原始基因序列的查找表使用的内存更少。此外,DNA Hash新颖的分层布隆过滤器消除了存储仅见一次的序列计数的需求。
- 超低内存占用
- 兼容 FASTA和FASTQ格式
- 支持标准序列计数
- 开源并可免费商业使用
注意:最大序列长度取决于平台。在64位机器上,最大长度为31。在32位机器上,最大长度为15。
注意:由于布隆过滤器概率性质,DNA Hash可能会以有限的速率过度计数序列。
安装
使用Composer将Helix安装到您的项目中
$ composer require andrewdalpino/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.