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

dev-master 2022-01-24 04:20 UTC

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

参考文献