Perl序列提取循环



我有一个现有的perl单行程序(来自Edwards实验室),它可以很好地读取包含一个列ID的文本文件(名为ids.file),并搜索第二个特殊格式的文本文件(在本例中名为fasta.file -对于那些了解生物信息学的人来说是"fasta"格式),并返回与第一个文件的ID匹配的序列。我希望扩展这个脚本来做两个额外的事情:

  1. 如果ids.file包含一列数据,当前perl一行代码似乎可以工作。我想它的工作在一个文件,包含两列(由空格分隔),并对数据的第二列(好吧,真的任何列的数据,但我认为这将是明显的足以适应它,如果有人可以给出一个例子,使用第二列)
  2. 我想从搜索的输出返回的任何结果追加到第三列,而不是仅仅到一个新的文件。

如果有人好心地提供了一个示例,但只有时间或倾向于处理其中一个,我更希望您尝试解决第2个问题-我已经接近解决第1个问题,使用awk只在第二列上使用Perl代码的for循环-我还没有得到它,但很接近,所以第2个问题对我来说似乎更难。

perl一行如下:

perl -ne 'if(/^>(S+)/){$c=$i{$1}}$c?print:chomp;$i{$_}=1 if @ARGV' ids.file fasta.file
我很感激你能给予的任何帮助!

不太确定,但这可以吗?

perl -ne 'chomp; s/^>(S+).*/$c=$i{$1}/e; print if $c; 
    $i{(/^S*s(S*)$/)[0]}="$_ " if @ARGV' 
  ids.file fasta.file

最新更新