SeqKit-FASTA/Q序列处理神器

SeqKit发布2周年了,终于还是决定自己写一篇中文文章来详细介绍一下。

先前写了一篇csvtk的介绍文章,但可能是因为行文偏x冷淡风,撩不起大家的兴趣。 所以我争取好好表现,让大家真正兴奋起来。

背景

搞生物信息的亲们一定碰到过处理序列数据,其中FASTA和FASTQ是最简单但又最常见的 序列格式了。通常大家都会用shell命令或者写一些小脚本来处理。

当年我刚入行的时候,也是从玩弄FASTA序列开始,比如最简单的看看序列数量, 或者修改一下序列名称,复杂点的分割一下大文件。说起来也是很丰富(艰辛)的历程:

1. 最开始每遇到一种操作就写个Perl脚本,但写脚本费时费力啊,编程水平也不行, 经常持续写一两个小时的bug。

2. 好不容易写好,发现工头,哦是老板频繁改需求, 被虐几次后,我终于把经常要改的参数都写成命令行参数,轻松应对各种场景。

3. 有时候我想给网友分享我的脚本,但需要他安装Perl,甚至需要安装一些库。什么?没安Perl?不会安脚本?

4. 后来我终于知道不用什么都自己写脚本,得学会用现成的工具。但,但,一有的是C写点,好吧,自己编译,oh No! 编译失败~~。要么就是要安装库,比如Bioperl,谁试谁知道,编译过程让人生畏,让人崩溃。。

5. 已有的工具也良莠不齐,要么功能太少,不能满足需求,要么性能捉急。。

后来我逐渐攒了很多脚本,都放在 https://github.com/shenwei356/bio_scripts 上面分享, 多为Perl写的,但正如前面写点,人家难得安装啊。。。

直到我听说了go语言,我就决定重写所有工具。为什么是go语言呢,当然这是后话了。

SeqKit

如果你也有类似的痛苦经历,或者不想经历这些梦魇,那你一定要试一试SeqKit -- 处理FASTA/Q序列文件的跨平台且超快的工具!

用户数说明了一切,目前最新版下载量已经1300+了,还不含Bioconda的下载数据。 那么多人用,你还在犹豫什么呢?

卖点

它究竟靠什么吸引为何那么多用户下载,受到用户的一致好评呢? 因为它真的很好用:

跨平台, 支持Linux, Mac OS X,Windows,甚至BSD几乎所有的现代操作系统。

无依赖,免编译,免安装,免配置,下载即用,下载编译好的压缩包解压就能用了,就那么简单。

速度超快,高度优化的序列解析库,速度接近大牛Heng Li写的klib,无缝支持FASTA与FASTQ。

23个子命令提供丰富的功能,且能通过命令行管道任意组合

易用,支持bash补全。

子命令

下列的子命令均来自于作者多年的分析经历,以及用户的反馈不断增加改进。 多数命令都支持STDIN,从而能通过命令行管道任意组合,实现复杂的功能。

一、序列与子序列

验证序列,显示序列名称/序列,反向互补,去除gap,大小写转换,按长度筛选

通过自定义区域(异常强大)/gtf/bed提取目标子序列,甚至包括侧翼序列。

序列滑窗(sliding)

序列统计,数量,碱基数,gap数,最小/最长序列,N50

创建FASTA index file,并提取序列,比samtools faidx快,且功能多一点

二、格式转换

转FASTA/Q为表格格式,可附带序列长度,GC含量等信息,非常有用

转表格格式回FASTA/Q

转FASTQ为FASTA

FASTQ质量编码相互转换(Sanger, Solexa and Illumina)

三、搜索

通过命令/序列/序列motif来搜索序列

定位子序列/motifs

四、集合操作

输出前面N条序列

输出任意范围的序列:前面,中间,最后

按比例或数量进行采样

按序列ID/名称/序列进行去重

重复序列

按序列ID/名称/序列寻找多个文件间的共有序列

按ID/大小/份数,甚至子序列来分割

五、编辑

用正则表达式来编辑序列/名称,支持按key-value文件来替换

对重复的序列ID重命名

对环状基因组重新设定序列起始位点。

连接多个文件中具有相同ID的序列

六、排序

打乱顺序

按序列ID/名称/序列/序列长度进行排序

功能实在太多,就不一一举例了,项目网站提供了丰富的文档供查阅,包括用法和详细的例子,甚至开发文档。

最后

稍微有点遗憾的是,那么多人用,但是目前仍然只有2个引用,或许大家的文章还在审稿吧? 或许工具太基础了,就像R语言一样,谁会去引用一个大家都在用的人人知道的编程语言呢?

如果你觉得SeqKit和作者的其它工具有用,请分享给你的同学、同事。如果有Github帐号,也可star该项目以表支持。

如果有任何疑问或者建议、需求,请在Github项目主页的issue页面新建issue。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180309G01AHG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券