专栏名称: 生信菜鸟团
生信菜鸟团荣誉归来,让所有想分析生物信息学数据的小伙伴找到归属,你值得拥有!
目录
相关文章推荐
生物制品圈  ·  人类多能干细胞衍生治疗的下游生物工艺 ·  4 天前  
BioArt  ·  讲座预告 | 9月25-26日 ... ·  4 天前  
BioArt  ·  Cell Metab | ... ·  5 天前  
51好读  ›  专栏  ›  生信菜鸟团

SeqKit — 超快速的 FASTA和FASTQ 文件操作工具包

生信菜鸟团  · 公众号  · 生物  · 2024-09-24 22:00

正文

工欲善其事必先利其器


SeqKit

SeqKit 是沈伟(重庆医科大学附属第二医院)老师开发的一个跨平台且极速的生物信息分析工具,专为处理 FASTA/Q 文件而设计。它提供了一系列命令行工具和 API 接口,可以进行序列文件格式转换、序列处理和分析、序列统计等操作。其特性包括不限于:

  1. 易于安装和使用:提供一键式安装和静态链接的执行文件,无需任何配置,即可直接运行。
  2. 高性能:针对大规模数据进行了优化,执行速度快,处理能力强。
  3. 多功能:涵盖38个子命令,满足多种生物信息学需求。
  4. 兼容性强:支持各种操作系统和压缩格式,并能轻松融入工作流中。
  5. 跨平台:支持 Windows、Linux 和 macOS 系统。
  6. 无依赖关系:无需安装额外的依赖软件即可使用。
  7. 支持多种格式:支持读取和写入包括 GZIP、XZ、ZSTD 和 BZIP2 在内的多种压缩格式文件。
  • 编程语言:GO
  • Github:https://github.com/shenwei356/seqkit
  • 文档:https://bioinf.shenwei.me/seqkit/

发表文献

题目:SeqKit: A Cross-Platform and Ultrafast Toolkit for FASTA/Q File Manipulation
期刊:PLoS ONE
日期:2016年10月5日
作者&单位:沈伟 & 陆军军医大学
DOI:https://doi.org/10.1371/journal.pone.0163962

文献

如何安装

软件提供多种安装方式,安装非常简便。详见:https://bioinf.shenwei.me/seqkit/download/

二进制安装

下载对应系统的压缩文件,解压即可使用

#https://github.com/shenwei356/seqkit/releases/download/v2.8.2/seqkit_darwin_arm64.tar.gz

wget -c http://app.shenwei.me/data/seqkit/seqkit_linux_amd64.tar.gz
tar -xf seqkit_linux_amd64.tar.gz 

./seqkit
安装记录

conda 安装

conda activate RNAseq
conda install seqkit

功能简介

SeqKit 提供了一系列强大的子命令,用于高效地处理和分析基因序列。例如提取或过滤序列、获取简单统计信息、定位子序列、序列搜索和位置查找、移除重复序列、拆分文件等。它的使用非常灵活,通过子命令的组合使用,用户可以根据需要实现复杂的数据处理任务。

子命令功能

一个简单示例

假设现在我们有一个样本的fastq1和fastq2,如果数据没保存好,发生了部分损坏,很不幸有没有备份数据。此时我们只能尽量恢复能用的数据。对于这个需求,我们该如何解决?

如果不使用seqkit

参考 抢救你破碎的测序数据。首先我们定位到出错的行,然后截取正确的行。

##取出第三行
awk 'NR%4==3 {print NR " " $0}' Cko1_R2.fq > ./test/row3_Cko1_R2.fq.txt
##判断第三行是不是正常?
head row3_Cko1_R2.fq.txt |cut -d " " -f 2

#
#取出第三行不正常的序列
awk '$2 !="+" {print $0}' row3_Cko1_R2.fq.txt > err_row3_Cko2_R1.fq.txt

#
#查看开始出错的行
head -n 1 err_row3_Cko1_R2.fq.txt 

#
#保留正确的行号,出错的行减去3(理论上是,但是还需要查看一下原始数据,或者保险起见,可以多截取一部分),就是需要保留的
head -n 1 err_row3_Cko1_R2.fq.txt |awk '{print $1-7}' 
87508348

#
#截取正确的reads
head -n 87508348 Cko1_R1.fq|pigz -p 4 >./test/Cko1_1.fastq.gz
head -n 87508348 Cko1_R2.fq|pigz -p 4 >./test/Cko1_2.fastq.gz
截取正确的行

使用seqkit

如果了解seqkit的子命令,那么这个需求实现起来就很简单。只需要两个子命令。

sana :恢复格式错误的fastq文件

#Cko1_R2.fq.gz 是损坏的fastq文件

seqkit sana -j 4 ../Cko1_R1.fq -o rescued_Cko1_R1.fq  2>err1.log
seqkit sana -j 4 ../Cko1_R2.fq -o rescued_Cko1_R2.fq  2>err.log
seqkit sana -j 4 ../Cko1_R2.fq.gz -o rescued_Cko1_R2.fq.gz  2>err2.log
ls -lha rescued_Cko1_R* |cut -d " " -f 5-
9.2G 9月 24 17:09 rescued_Cko1_R1.fq
7.6G 9月 24 16:25 rescued_Cko1_R2.fq
1.7G 9月 24 17:17 rescued_Cko1_R2.fq.gz

$wc -l err* rescued_Cko1_R*
1 err1.log
14404520 err.log
106861528 rescued_Cko1_R1.fq
87508348 rescued_Cko1_R2.fq

$zcat rescued_Cko1_R2.fq.gz|wc -l
87508348

又因为fq1,fq2文件reads数如果不一致,后续分析会报错

pair: 匹配两对fastq文件中的成对reads

seqkit pair -j 4  -1 rescued_Cko1_R1.fq -2 rescued_Cko1_R2.fq -O pair_out

查看结果

$cd pair_out/

$ls -lha *.fq |cut -d " " -f 5-
7.6G 9月 24 17:51 rescued_Cko1_R1.fq
7.6G 9月 24 17:51 rescued_Cko1_R2.fq

$wc -l *.fq
87508348 rescued_Cko1_R1.fq
87508348 rescued_Cko1_R2.fq

stats 对比结果

seqkit stats Cko1_2.fastq.gz 
seqkit stats Cko1_1.fastq.gz

seqkit stats rescued_Cko1_R2.fq 
seqkit stats rescued_Cko1_R1.fq 
两次结果对比

更多用法示例见:

  • https://bioinf.shenwei.me/seqkit/faq/

注:对于大多数命令来说,使用四个线程已经足够快了,其中 FASTA/Q 读写是 性能瓶颈,使用更多线程不会提高速度。





文末友情宣传

强烈建议你推荐给身边的博士后以及年轻生物学PI,多一点数据认知,让他们的科研上一个台阶: