Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl序列提取循环_Perl_Shell_Bioinformatics_Fasta - Fatal编程技术网

perl序列提取循环

perl序列提取循环,perl,shell,bioinformatics,fasta,Perl,Shell,Bioinformatics,Fasta,我有一个现有的perl one liner(来自爱德华兹实验室),它可以很好地读取包含一列ID的文本文件(名为ids.file),并搜索第二个特殊格式的文本文件(本例中名为fasta.file,对于了解生物信息学的人来说是“fasta”格式)并返回与第一个文件中的ID匹配的序列。我希望扩展这个脚本来做另外两件事: 当前的perl one liner似乎只有在ids.file包含一列数据时才起作用。我希望它处理一个包含两列(用空格分隔)的文件,并处理第二列数据(实际上是任何一列数据,但我假设如果有

我有一个现有的perl one liner(来自爱德华兹实验室),它可以很好地读取包含一列ID的文本文件(名为
ids.file
),并搜索第二个特殊格式的文本文件(本例中名为
fasta.file
,对于了解生物信息学的人来说是“fasta”格式)并返回与第一个文件中的ID匹配的序列。我希望扩展这个脚本来做另外两件事:

  • 当前的perl one liner似乎只有在
    ids.file
    包含一列数据时才起作用。我希望它处理一个包含两列(用空格分隔)的文件,并处理第二列数据(实际上是任何一列数据,但我假设如果有人可以使用第二列给出一个示例,它将非常明显地进行调整)
  • 我想将搜索输出返回的任何结果附加到第三列,而不仅仅是一个新文件
  • 如果有人愿意提供一个例子,但只花时间或倾向于研究其中一个,我希望您尝试解决#2-我已经接近解决#1,使用for循环,使用awk只在第二列上使用Perl代码-我还没有得到它,但已经接近了,所以#2对我来说似乎更难

    perl one liner如下所示:

    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
    

    一个输入和输出示例显示了三段以上的文本。而且更容易阅读。我完全同意。请添加一个示例。抱歉-这是两个输入文件的示例:文件ID.file如下所示:dog chevy bear kia cat ford和文件fasta.file如下所示:>chevy 334 3434 5 232 tgagagagagagagagagagagagagagagagagag>kia 2223 2323 acacacac所需的输出是一个脚本,使用第2列从ids.file并创建如下输出文件:dog chevy>chevy 334 3434 5 232 Tgagagagagagagagagagagagagagag bear kia>kia 2223 2323 Acacacacac cat For perreal提供的以下脚本确实有效,但似乎没有保留让awk可以轻松解析的列,例如,运行awk'{print$3}'将只返回一个结果,而不是所有结果。在上面的例子中,它将返回>雪佛兰334 3434 5 232 tgagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagagag@最亲爱的“佩雷尔”,它看起来确实有效!有些序列之间的间距不同(一组三个项目与另一组三个项目之间的间距似乎不一致),但这可能就是我屏幕上的显示方式。我会将其移动到CSV文件,这应该会有所帮助。非常感谢你!