软件推荐 | fasta文件的瑞士军刀

怎么计算fasta中序列的长度?怎么求N50?怎么过滤小于800的序列?怎么求反向互补序列?怎么把cds翻译成氨基酸?怎么随机抽取20条序列?怎么打乱fasta文件的顺序?这几天在基因课的群里、公众号后台,回答的最多的问题竟然都是这些他们又一个共性,fasta文件的处理是时候把这个神器推荐给大家了,fasta_tool你想要的一切,对他来说都是一句命令的事

介绍

fasta_tool是GAL软件包里的一个小命令,GAL是使用Perl语言编写的,代码放在github上。

trinity软件里也内置了fasta_tool,如果你安装了trinity可以直接使用

$TRINITY_HOME/trinity-plugins/GAL_0.2.1/fasta_tool

自己安装fasta_tool方法如下

下载

$ git clone https://github.com/The-Sequence-Ontology/GAL.git

安装

fasta_tool依赖Getopt::Long,Bio::SeqIO 和 IO::All三个perl模块,可以使用cpanm安装。

使用

#序列长度
$ fasta_tool --length Trinity.fasta
.....
TRINITY_DN615_c0_g1_i1    226
TRINITY_DN616_c0_g1_i1    248
TRINITY_DN617_c0_g1_i1    226
TRINITY_DN618_c0_g1_i1    211
TRINITY_DN619_c0_g1_i1    224
TRINITY_DN620_c0_g1_i1    241
Total    217443

#打乱fasta文件顺序
$ fasta_tool --shuffle_order Trinity.fasta > output.fasta

#统计碱基含量
$ fasta_tool --summary Trinity.fasta 
All sequences combined:
--------------------------------------------------------------------------------
A    59864    27.5309%
C    48341    22.2316%
G    49624    22.8216%
T    59614    27.4159%
aA    59864    27.5309%
aAtT    119478    54.9468%
aAtTgGcC    217443    100.0000%
cC    48341    22.2316%
gG    49624    22.8216%
gGcC    97965    45.0532%
tT    59614    27.4159%

Total nts    217443

#切分成多个文件,常用于并行处理
$ fasta_tool --chunks 5 Trinity.fasta 
$ ls
Trinity_0.fasta  Trinity_2.fasta  Trinity_4.fasta
Trinity_1.fasta  Trinity_3.fasta  Trinity.fasta

#提取在ID列表里的序列
$ fasta_tool --select ids.txt Trinity.fasta 
>TRINITY_DN11_c0_g1_i1 len=319 path=[297:0-318] [-1, 297, -2]
ACAGTGCCTGTAAGTTGCAACAATGCAGCGATCGAGTACGACTGAACTGCTGTACTAAGGAAATTGCTAACATAAGTTGTAGCAACCTTCTTGGTTTTACTTCCAGCGTCATATTCGACGTGAGGTGCAGTGCTCATTGCCCTTTTCCAAATATCGCCCATTAGGGGTCCATAAACGAGGAAAGAAGCAGCATGGTCGAAGGCAATCCCCAAGAGAATTGCACTAGGGCGTACATACGGCATGTGAGTGTAGGATGGCATTTCTTGTATTAATATTTAGTTTGAGTTAGAACAAGATTAATATGAATGTGAATATTTTG

#调整格式,50个碱基每行
$ head -5 Trinity.fasta 
>TRINITY_DN10_c0_g1_i1 len=334 path=[312:0-333] [-1, 312, -2]
TTCACGACGGTCTTGCCCGTGGTATTCGCGAGGCTTCCAAGGCTCTTGACCGCCGTCAAG
CTCACCTTTGCGTTCTTTGCGAGTCCTGTGACCAAGAAGCTTATGTTAAATTGGTTGAGG
CTCTTTGCGCTGAATCTGAGACTCCTTTGATCAAGGTTGCCGACCCCAAGGTTTTGGGTG
AATGGGCTGGCCTTTGTGTCCTTGACCGTGACGGTAATGCCCGTAAGGTTGTTGGATGCT
$ fasta_tool --wrap 50 Trinity.fasta >output.fa
$ head -5 output.fa 
>TRINITY_DN10_c0_g1_i1 len=334 path=[312:0-333] [-1, 312, -2]
TTCACGACGGTCTTGCCCGTGGTATTCGCGAGGCTTCCAAGGCTCTTGAC
CGCCGTCAAGCTCACCTTTGCGTTCTTTGCGAGTCCTGTGACCAAGAAGC
TTATGTTAAATTGGTTGAGGCTCTTTGCGCTGAATCTGAGACTCCTTTGA
TCAAGGTTGCCGACCCCAAGGTTTTGGGTGAATGGGCTGGCCTTTGTGTC

#提取序列TRINITY_DN11_c0_g1_i1中50~100的碱基
$ fasta_tool --subseq TRINITY_DN11_c0_g1_i1:50-100 Trinity.fasta 
CTGTACTAAGGAAATTGCTAACATAAGTTGTAGCAACCTTCTTGGTTTTAC

以下是常用功能:

$ fasta_tool 

Synopsis:

fasta_tool [-options] fasta_file

Options:


  --chunks <integer> 切分成多个文件
  --split 切分成每条序列一个文件

  --select 选择ID列表里的序列
  --remove 排除ID列表里的序列

  --grep_header <pattern> 提取特定ID的序列
  --grep_seq <pattern> 提取匹配特定序列的序列,排除使用--grepv_seq

  --subseq 提取特定位置的序列

  --nt_count 输出每条序列的碱基组成
  --summary 碱基组成统计
  --length 输出每条序列的长度
  --total_length 统计总长
  --n50 计算N50

  --wrap <integer> 调整格式,50个碱基每行
  --tab 输出为table格式,输出整个header和序列
  --table 输出为table格式,输出ID和序列

  --rev_seq 反向序列
  --comp_seq 互补序列
  --rev_comp 反向互补序列
  --translate <string> 翻译成氨基酸

  --uniq 去除重复的序列
  --reverse 反向顺序
  --shuffle_order 随机打乱序列顺序
  --shuffle_pick 随机抽取序列

评论

统计

391
分钟
0
你学会了
0%
完成

联系我们

QQ技术交流群

扫描微信二维码关注公众号

微信订阅号

扫描微信二维码关注公众号