Seqtk、Seqkit两个处理fa/fq神器的学习记录

Seqtk

安装 # Conda也可

 git clone https://github.com/lh3/seqtk
    cd seqtk
    make   

1.将fastq 文件转换成fasta 文件

seqtk seq -A input.fastq  > output.fasta

2.得到反向互补序列

seqtk seq -Ar input.fastq > output.fasta

3.seqtk comp: 得到fastq/fasta 文件的碱基组成
(输出格式:序列id 序列长度 A C G T )

seqtk comp in.fa > out.fa

4.subseq 根据name.list(不带>符号)提取子序列 -l可设定输出的每行长度

seqtk subseq -l 40 B1_NR100nl.fasta name.list > out.fa

5.随机抽取序列,按照比例或者数量 -s设定随机种子,便于重复

seqtk sample -s 10 test.fq 0.4 #比例
seqtk sample -s 10 test.fq 100 #数量

6.重命名 会将序列id变为从1到n....

seqtk rename in.fa <前缀> > out.fa

7..fastq转换为fasta,支持压缩格式

seqtk seq -a in.fq.gz > out.fa.gz

8.使用Phred算法从两端修剪低质量的碱基:

  seqtk trimfq in.fq > out.fq

9.从每个读数的左端修剪5bp,从右端修剪10bp

  seqtk trimfq -b 5 -e 10 in.fa > out.fa

10.合并两个序列,通常我们Illunima双端测序会得到两个文件R1.fq.gz和R2.fq.gz,这个命令就是帮助怎么完美实现两两配对

$seqtk mergefa

Usage: seqtk mergefa [options] <in1.fa> <in2.fa># 合并两个的FASTA/Q files

Options: -q INT   quality threshold [0]
         -i       take intersection#取交集
         -m       convert to lowercase when one of the input base is N
         -r       pick a random allele from het
         -h       suppress hets in the input
  1. cutN 去掉序列中的N/或者查看N所在的位置信息(-n 指定N的最小长度) -g 只打印出位置信息
Usage:   seqtk cutN [options] <in.fa>

Options: -n INT    min size of N tract [1000]
         -p INT    penalty for a non-N [10]
         -g        print gaps only, no sequence

Seqkit

这个软件真的feel good,现有的轮子就不用再去造了,只记录一些常用的小命令,后续用到再进行更新,大家可以去原网页学习完整教程,点Here
1.seq子命令 读,换, 查看类型,统计基本信息

seqkit seq hairpin.fa.gz #查看

cat in.fa | seqkit stats #自动检测类型并给出统计信息
file  format  type  num_seqs  sum_len  min_len  avg_len  max_len
-     FASTA   RNA          1       11       11       11       11
seqkit stats *.f{a,q}.gz -T | csvtk pretty -t #可以统计多个fa/fq信息,结果形式更加友好
#  -j 参数会并行运算更快速度
seqkit seq hairpin.fa.gz -n #打印序列ID全名
seqkit seq hairpin.fa.gz -n  -i #只打印ID
seqkit seq hairpin.fa.gz -n -i --id-regexp ...  #通过正则去打印ID中内容(适用于所有的子命令)
seqkit seq hairpin.fa.gz -s -w 0 #只打印序列(全局标志-w定义输出行宽,0表示不换行)
seqkit seq reads_1.fq.gz -w 0 #转换多行fq为单行fq
seqkit seq hairpin.fa.gz -r -p #反向互补
echo -e ">seq\nACGT-ACTGC-ACC" | seqkit seq -g -u #移除gap
cat hairpin.fa | seqkit seq -m 100 -M 1000 | seqkit stats #过滤序列长度并进行统计
  1. subseq子命令
前12碱基
$ zcat hairpin.fa.gz | seqkit subseq -r 1:12
后12碱基
zcat hairpin.fa.gz | seqkit subseq -r -12:-1
过滤前后12碱基
zcat hairpin.fa.gz | seqkit subseq -r 13:-13
通过gtf文件得到序列
seqkit subseq --gtf t.gtf t.fa
通过bed文件得到序列并移除重复序列
seqkit subseq --bed Homo_sapiens.GRCh38.84.bed.gz --chr 1 hsa.fa  | seqkit rmdup > chr1.bed.rmdup.fa
  1. sliding
sliding sequences, circular genome supported
Usage:
  seqkit sliding [flags]

Flags:
  -C, --circular-genome   circular genome.
  -g, --greedy            greedy mode, i.e., exporting last subsequences even shorter than windows size
  -s, --step int          step size
  -W, --window int        window size

4.faidx (类似samtools中的faidx)

Usage:
  seqkit faidx [flags] <fasta-file> [regions...]

Flags:
  -f, --full-head     print full header line instead of just ID. New fasta index file ending with .seqkit.fai will be created
  -h, --help          help for faidx
  -i, --ignore-case   ignore case
  -r, --use-regexp    IDs are regular expression. But subseq region is not suppored here.

seqkit faidx tests/hairpin.fa hsa-let-7a-1 hsa-let-7a-2  #提取指定序列  -f 输出ID全名 1:10 输出相应位置序列

5.fq转换fa

seqkit fq2fa reads_1.fq.gz -o reads_1.fa.gz

6.将FASTA/Q转换为表格格式,并提供各种信息,
如序列长度 GC

$ seqkit fx2tab hairpin.fa.gz -l -g -n -i -H | head -n 4 | csvtk -t -C '&' pretty
#name       seq   qual   length   GC
cel-let-7                99       43.43
cel-lin-4                94       54.26
cel-mir-1                96       40.62

#两种形式转换
zcat hairpin.fa.gz | seqkit fx2tab | seqkit tab2fx

#按照长度排列序列
 seqkit sort -l hairpin.fa.gz

#得到前1000条reads
 seqkit fx2tab hairpin.fa.gz | head -n 1000 | seqkit tab2fx
  1. grep序列
zcat hairpin.fa.gz | seqkit grep -r -p ^hsa #提取ID开头为hsa的reads  -v取想反
zcat hairpin.fa.gz | seqkit grep -f list > new.fa #根据list取子集
cat hairpin.fa.gz | seqkit grep -s -i -p aggcg #提取序列里有AGGCG的reads  -m 允许误配的数量
zcat hairpin.fa.gz | seqkit grep -s -r -i -p TT[CG]AA  #带有模糊碱基的序列匹配    -R 1:30取前30 个碱基

8.duplicate

 cat tests/hairpin.fa | seqkit head -n 1 \
    | seqkit duplicate -n 2  #重复序列2次 

9.rmdup

移除重复序列 by id/name/sequence

Usage:
  seqkit rmdup [flags]

Flags:
  -n, --by-name                by full name instead of just id
  -s, --by-seq                 by seq
  -D, --dup-num-file string    file to save number and list of duplicated seqs
  -d, --dup-seqs-file string   file to save duplicated seqs
  -h, --help                   help for rmdup
  -i, --ignore-case            ignore case
  1. sample

zcat hairpin.fa.gz | seqkit sample -p 0.1 -o sample.fa.gz #按照比例取序列
 zcat hairpin.fa.gz | seqkit sample -n 1000 -o sample.fa.gz #按照数量
  1. rename
cat in.fa | less  #和seqtk中rename的区别是前者会从1到n重新排序,后者是对后来重复的内容加_2到_n的后缀
>a comment
acgt
>b comment of b
ACTG
>a_2 a comment
aaaa

OK,相信大家应该体会到这俩个软件的强大之处了,学好会省去你不少的time快去练习吧~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270