Linux 选择fasta文件中超过300 aa的序列和;";至少发生4次

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

我有一个包含蛋白质序列的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
 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扩展,它处理生物格式的数据。