scienide/helix

此包已被废弃,不再维护。未建议替代包。

一个用于生物信息学中计数短DNA序列的库。

dev-master 2021-06-22 07:02 UTC

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

参考文献