如何仅使用perl

时间:2016-05-09 19:33:31

标签: perl task fasta

我需要你的帮助。

我做了一个将multifasta文件转换为fasta文件的perl脚本。 例如:

在multi-fasta文件中包含:

  

GI | 983431797 | REF | NZ_LN000000.1 | Nocardia farcinica基因组装配NCTC11134,染色体:1   CTGACTGGGAGTACGAAGGCCGCCTGCACAAGACAACGGGGCAGCGAACCTTCTTCTGCACCGGCACGGA

     

GI | 983431797 | REF | NZ_LN123456.1 | Nocardia farcinica基因组装配NCTC11134,染色体:2   CTGACTGGGAGTACGAAGGCCGCCTGCACAAGACAACGGGGCAGCGAACCTTCTTCTGCACCGGCACGGA

     

GI | 983431797 | REF | NZ_LN457532.1 | Nocardia farcinica基因组装配NCTC11134,染色体:3

CTGACTGGGAGTACGAAGGCCGCCTGCACAAGACAACGGGGCAGCGAACCTTCTTCTGCACCGGCACGGA

我的脚本执行此操作:

file1.fa

  

GI | 983431797 | REF | NZ_LN000000.1 | Nocardia farcinica基因组装配NCTC11134,染色体:1   CTGACTGGGAGTACGAAGGCCGCCTGCACAAGACAACGGGGCAGCGAACCTTCTTCTGCACCGGCACGGA

file2.fa

  

GI | 983431797 | REF | NZ_LN123456.1 | Nocardia farcinica基因组装配NCTC11134,染色体:2   CTGACTGGGAGTACGAAGGCCGCCTGCACAAGACAACGGGGCAGCGAACCTTCTTCTGCACCGGCACGGA

在不同的fasta文件中。

但我需要我的脚本生成一个包含multifasta文件中所有引用的文件。 例如:

fileReferences.txt: 裁判| NZ_LN000000.1 | Nocardia farcinica基因组装配NCTC11134,染色体:1 裁判| NZ_LN123456.1 | Nocardia farcinica基因组装配NCTC11134,染色体:2 裁判| NZ_LN457532.1 | Nocardia farcinica基因组装配NCTC11134,染色体:3

你明白吗?

对不起,我是perl语言的新手,经过大量研究后我做了第一个脚本,但我无法完成它。所以,如果有人能帮助我,我将不胜感激。 P.S:原谅我的英语。 ^^

我的剧本:

#!/usr/bin/env perl

use strict;

use warnings;

use IO::File;

my $usage = "\nUSAGE: perl $0 <Fasta>"."\n";

print $usage and exit unless($ARGV[0]);

my $input  = IO::File->new("$ARGV[0]");

my $output = "";


while(my $line = $input->getline)

{

    chomp($line);

    if($line =~ /^>/)

    {

         if($output ne "")

         {

              close ($output);

         }

         $line =~ s/^>//;

         $output  = IO::File->new("> $line.fa");

         print $output ">".$line."\n";

      }

      else

      {

          print $output $line."\n";

      }

  }


close ($input);

close ($output);

1 个答案:

答案 0 :(得分:0)

所以基本上,你想要*.fa中的每个fileReferences.txt文件的第一行?如果是这样,试试这个:

awk 'FNR==1' *.fa > fileReferences.txt