Linux 选择fasta文件中超过300 aa的序列和;";至少发生4次
我有一个包含蛋白质序列的fasta文件。我想选择含有300多个氨基酸的序列,半胱氨酸(C)氨基酸出现4次以上 我用这个命令选择了超过300 aa的序列:Linux 选择fasta文件中超过300 aa的序列和;";至少发生4次,linux,awk,bioinformatics,sequences,fasta,Linux,Awk,Bioinformatics,Sequences,Fasta,我有一个包含蛋白质序列的fasta文件。我想选择含有300多个氨基酸的序列,半胱氨酸(C)氨基酸出现4次以上 我用这个命令选择了超过300 aa的序列: cat 72hDOWN-fasta.fasta | bioawk -c fastx 'length($seq) > 300{ print ">"$name; print $seq }' 一些序列示例: >jgi|Triasp1|216614|CE216613_3477 MPSLYLTSALGLLSLLPAAQAGW
cat 72hDOWN-fasta.fasta | bioawk -c fastx 'length($seq) > 300{ print ">"$name; print $seq }'
一些序列示例:
>jgi|Triasp1|216614|CE216613_3477
MPSLYLTSALGLLSLLPAAQAGWNPNSKDNIVVYWGQDAGSIGQNRLSYYCENAPDVDVI
NISFLVGITDLNLNLANVGNNCTAFAQDPNLLDCPQVAADIVECQQTYGKTIMMSLFGST
YTESGFSSSSTAVSAAQEIWAMFGPVQSGNSTPRPFGNAVIDGFDFDLEDPIENNMEPFA
AELRSLTSAATSKKFYLSAAPQCVYPDASDESFLQGEVAFDWLNIQFYNNGCGTSYYPSG
YNYATWDNWAKTVSANPNTKLLVGTPASVHAVNFANYFPTNDQLAGAISSSKSYDSFAGV
MLWDMAQLFGNPGYLDLIVADLGGASTPPPPASTTLSTVTRSSTASTGPTSPPPSGGSVP
QWGQCGGQGYTGPTQCQSPYTCVVESQWWSSCQ*
我不知道
bioawk
,但我假设它与一些初始解析和常量定义相同
我将按以下方式进行。假设您希望查找长度大于4倍于中字母C
且长度大于300的字符串,则可以执行以下操作:
bioawk -c fastx '
(length($seq) > 300) && (gsub("C","C",$seq)>4) {
print ">"$name; print $seq
}' 72hDOWN-fasta.fasta
但这假设seq
是完整的字符序列
其背后的思想如下。gsub
命令以字符串形式执行替换,并返回所执行的替换总数。因此,如果我们用“C”替换所有字符“C”,实际上我们并没有改变字符串,而是得到了字符串中“C”的总量
来自:
gsub(ere,repl[,in])
:行为类似于sub
(见下文),但它应替换所有出现的正则表达式(如
$0
或in参数中的实用程序全局替换,
指定时
sub(ere,repl[,in])
:用字符串repl
替换字符串中扩展正则表达式ere
的第一个实例
和返回替换的数量。(一),
处理),该行为未定义。如果省略了
中的,则awk
应在其位置使用当前记录($0
)
注意:基于中记录的。我不确定此版本是否与兼容。请将代码正确地包装在代码标签中,并让我们知道您的帖子到目前为止似乎还不清楚。数据是像您上面显示的块还是一行?如果是一个块,序列是如何相互分离的,还是一个文件中只有一个序列?@RavinderSingh13谢谢!我希望它更好@JamesBrown这是一个块,序列用“>”分隔-这是序列的header@M.Sobreiro,不,您使用了引号标记。相反,您应该使用{}
按钮在您的帖子中的代码标签中包装您的代码。非常感谢!它非常有效!Bioawk是一个awk扩展,它处理生物格式的数据。