通过我几天的学习,我发现,seqkit十分好用,将序列的各种操作都囊括进去,加入多线程,我个人认为这将是非常好的胶水,在处理无论是基因组还是其他组学。定是一个必学神器。注意一下教程在0.15版本以后可用。低版本有些参数不可用。
支持Windows/Mac/Linux的32和64位系统。用户根据自己的系统自取。
最新版发布页面:https://github.com/shenwei356/seqkit/releases
软件优点
体积小巧、安装方便、无依赖关系
跨平台:Windows/Linux/Mac通用
运行效率高
本教程测试环境Ubuntu 16/18/20.04 LTS
目前可以安装比较最新的版本Version: 至少 >= 0.15.0。seqkit在github上的维护力度也比较大,功能比较完善,放心使用。
可选在 https://github.com/shenwei356/seqkit/releases 发布页直接下载适合的版本。
seqkit 一共有37个可用的命令,详细内容如下:
参数
下载的gtf文件似乎缺少一个transcript_id,这里补充一下。
提取1号染色体序列及注释作为示例
统计序列格式fasta(fa)/fastq(fq)、内容类型DNA/RNA/Protein,序列数量、总长度,最小、平均和最大长度
下面就四种格式序列构建和简单统计。
使用fq或者fa文件进行演示
“-n”: 提取序列ID,包括“>”后面的全部内容
“-n -i”: 仅提取第一个空格前的ID
按长度过滤(常用)
扩增子分析时要筛选扩增长度相近的片段,过长或过短一般都要删除。宏基因组中比如组装的结果,经常要过滤<200/300bp的短片段,分箱时要筛选>1000/2000的长片段使用。本条命令非常多的应用场景。筛选后结果可用 > 写入文件
-m 按照序列长度过滤,表示保留的最小长度,-M 此为保留的最大长度
提取ID
单行/多行转换
-s提取并展示序列
-w 代表每行的碱基数量,0代表不换行
反向/互补
-r 序列反向
-p序列互补
删除gap/大小写转换
-g 去除序列中的间隔,将中间的横杠去掉
-u转化序列为大写字母展示
RNA转为DNA
—rna2dna 将RNA序列转化为DNA序列
-r 通过区域来截取序列
如1:12提取前12个碱基,-12:-1提取序列结尾12个碱基;for last 12 bases, 13:-1 for cutting first 12 bases. type “seqkit subseq -h” for more examples
基于gtf/bed信息挑选子序列。
—gtf 根据gtf文件挑选基因,这部分功能用于根据基因注释快速提取基因序列,在宏基因组、转录组、重测序中常用。—chr 选择染色体,—feature cds选择序列类型
以拟南芥基因组的序列和注释数据演示:提取第一条染色体上的CDS基因信息,并统计基本信息
-u 可以提取目标基因上游的序列
-f 目标区域不展示
步长为5,取30个碱基序列,然后统计GC含量
fx2tab:统计fasta/fastq序列的信息为表格
-n仅输出ID,不输出序列
-g为GC含量
从有错误记录的fastq文件中挽救可用的读取
这里我专门将C1_1.fq的第一个序列进行了错位,进行测试。这个操作往往在进行数据整合的时候可以有很大作用。
这一转化很有用,往往用于表格/矩阵处理的时候。
通过矩阵格式的序列文件统计序列长度和质量值
-l 统计序列长度
-g 统计平均GC含量
-i 只打印名称(不打印序列)
-H 打印标题行
tab2fx 和表格格式转化为序列格式
这里同时支持fa和fq文件
按名称ID、给定区域的子序列、文件大小或序列数量将序列拆分为文件
可用于将大文件拆分后,并行处理,加速分析。如从contig中预测基因。
同时支持fa和fq文件。单端和双端序列拆分实例
-f强制覆盖结果,适合重复计算时使用
留下匹配的,去除不匹配的,这里我们使用扩增子的双端序列做一个演示:
注意:双端序列在两个文件中的顺序最好是一样的,否则会消耗大量内存去匹配。
按照百分比例和序列数量进行抽样
注意:1000条并不是很准确,可能是900多条,为什么呢?看这里了解问题。https://bioinfhttp://www.360doc.com/content/21/0315/08/seqkit/note/#effect-of-random-seed-on-results-of-seqkit-sample
这里为大家展示一下减少内存的序列抽样方法
—quiet 屏幕不输出过程
-i 排序忽略大小写
-l 按照序列长度排序
这个使用的比较少
pigz 或者 gzip 在部分操作中不能加速,所以在v.0.8.1版本以便关注了,然而还是可以使用命令:
因为seqkit使用了pgzip去写gzip。这比gzip和pigz更快。(10X of gzip, 4X of pigz),而且gzip压缩文件比较大。
seqkit无缝支持fa和fq格式数据,并且可以自动识别。除了 faidx之外,全部命令都可以处理这两种格式的数据。
只有fa格式支持命令(subseq, split, sort和shuffle)利用FASTA索引(by flag -two-pass)下提高大文件的性能。
序列类型的检测DNA/RNA/Protein,会使用子序列进行,默认检测第一条子序列,通过—alphabet-guess-seq-length参数默认为10000,如果长度小于10000,则检查整条序列。
所有的软件,包括seqkit,使用第一个空格之前的字符作为序列的名字:
需要注意的NCBI等一些序列的格式并不是如此,例如:
想要在seqkit中识别出来的序列ID为:NC_002516.2。
此时使用参数,或者添加参数,但如果是只要前面的gi数字作为ID的话,添加参数:。
注意:.seqkit.fai不同于samtools产生的.fai格式文件,seqkit使用整个序列开头而不是ID作为索引。
单核CPU默认线程:—threads 1,多个CPU,线程默认2.
seqkit许多的命令都不需要将整个序列读入到内存中。包括:stat, fq2fa, fx2tab, tab2fx, grep, locate, replace, seq, sliding, subseq。
注意:如果使用subseq —gtf | —bed时,如果GTF或者BED文件太大,内存使用量会暴增,可以通过指定染色体:—chr,或者—feature去限制特征。
有一些命令需要将文件读入内存,但是可以用过rmdup 和 common减少内存使用。
抽样命令sample和shuffle使用了随机功能,为了保证重现性,可以使用设置随机种子。这可以保证在不同的环境中可以有相同的抽样结果。
编辑:文涛
责编:刘永鑫
Wei Shen, Shuai Le, Yan Li & Fuquan Hu. (2016). SeqKit: a cross-platform and ultrafast toolkit for fasta/q file manipulation. PloS One 11, e0163962, doi: https:///10.1371/journal.pone.0163962
软件发布页:https://github.com/shenwei356/seqkit/releases