readfq安装与使用(生物信息学工具-023)

01 背景

Readfq 是一个用于解析 FASTA/FASTQ 格式的例程集合。它可以无缝解析 FASTA 和多行 FASTQ,界面简单易用。

Readfq 首先在一个 C 头文件中实现,然后移植到 Lua、Perl 和 Python,作为单个函数,代码行数少于 50 行。对于脚本语言的用户,建议直接复制粘贴函数,而不是将 readfq 作为库使用。避免不必要的库依赖始终是一个好习惯。

Readfq 还追求效率。C 实现是最快的(如果不是最快的话)。Python 和 Perl 实现比官方的 Bio* 实现快几倍到几十倍。

02 参考
https://github.com/lh3/readfq   #官网
03 安装
git clone https://github.com/lh3/readfq.git

wget -c https://github.com/lh3/readfq/archive/refs/heads/master.zip
zip
readfq XXX_R1.fastq.gz  
04 使用及常用命令行
统计fastq文件的reads数目和碱基数目

#!/bin/bash
for i in $(find SRR*)
do
        printf $i"\t" >> result.txt; kseq_fastq_base $i >> result.txt
done

```perl
# Perl
my @aux = undef; # 这是用于保存中间数据
while (my ($name, $seq, $qual) = readfq(\*STDIN, \@aux)) { print "$seq\n"; }
```

```python
# Python: 生成器函数
for name, seq, qual in readfq(sys.stdin): print(seq)
```

```lua
-- Lua: 闭包
for name, seq, qual in readfq(io.stdin) do print(seq) end
```

```go
/* Go */
package main

import (
  "fmt"
  "bufio"
  "github.com/drio/drio.go/bio/fasta"
)

func main() {
  var fqr fasta.FqReader
  fqr.Reader = bufio.NewReader(os.Stdin)
  for r, done := fqr.Iter(); !done; r, done = fqr.Iter() {
    fmt.Println(r.Seq)
  }
}
```

```c
/* C */
#include <zlib.h>
#include <stdio.h>
#include "kseq.h"
KSEQ_INIT(gzFile, gzread)

int main() {
  gzFile fp;
  kseq_t *seq;
  fp = gzdopen(fileno(stdin), "r");
  seq = kseq_init(fp);
  while (kseq_read(seq) >= 0) puts(seq->seq.s);
  kseq_destroy(seq);
  gzclose(fp);
  return 0;
}
```

一些简单的基准测试结果:将包含 2500 万个 100bp 读数的 FASTQ 转换为 FASTA,FASTX-Toolkit(仅解析 4 行 FASTQ)耗时 325.0 CPU 秒,EMBOSS 的 seqret 耗时 247.8 秒。 seqtk 使用 kseq.h 库完成任务只需 24.6 秒,快了 10 倍。从同一个 FASTQ 中按名称检索 25000 个序列,BioPython 耗时 963 秒,而 readfq.py 耗时 136 秒;BioPerl 超过 40 分钟(被终止),而 readfq.pl 仅耗时 273 秒。Seqtk 耗时 29 秒。

推荐,seqtk等优化软件代替此脚本。

SeqKit v2.5.1 (bioinfomatics tools-003)

seqtk安装与使用-seqtk-1.4(bioinfomatics tools-012)

06 参考文献

W Shen, S Le, Y Li*, F Hu*. SeqKit: a cross-platform and ultrafast toolkit for FASTA/Q file manipulation. PLOS ONE. doi:10.1371/journal.pone.0163962. 

孟倩.基于高通量测序的短序列生物数据压缩研究[J].计算机应用与软件,2017,34(04):22-27+98.

Shen, W., Le, S., Li, Y., & Hu, F. (2016). SeqKit: A Cross-Platform and Ultrafast Toolkit for FASTA/Q File Manipulation. PloS one, 11(10), e0163962. https://doi.org/10.1371/journal.pone.0163962

桂元苗.    面向蛋白互作预测的序列数据特征识别研究[D].    中国科学技术大学,    2019.     DOI:10.27517/d.cnki.gzkju.2019.000074.   
孙佳伟.    基于核酸序列功能修饰位点的识别研究[D].    江苏科技大学,    2018.  
汪俊.    我国养殖太平洋牡蛎中诺瓦克样病毒的检测及部分核酸序列的分析[D].    中国海洋大学,    2005.  

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值