1

私はPerlの初心者です。別のファイルの行と一致する 1 つのファイルから fasta シーケンスを抽出しようとしています。2 つのサンプル ファイルは次のとおりです。

ファイル1.fasta:

>gene_44|105_nt|+|47540|47644 GTGCGCCGGCGCGTCGCGATCGCGAACCGGCCCGTGCGAATCCTGCCGCATGCGCGCCGCATCTCGCCACGCCGCGCATTTCATTTCGACATCCATAACGTCTGA

>gene_69|111_nt|+|75846|75956 ATGCCGTTGCCGTCGCGCATCGCGGCGGCCGTGCGCGGCGCGCATGCATACGCCGGCACGGCCGATGCGCGCGCGACGCGCAAACTGCACGCGGCGCGGGATTTGTGTTGA

>gene_88|177_nt|-|97993|98169
ATGCGCCAGCCGACGCACGCCCATTCCGGGCGAAACGTTCCCCTTATCCATTCGATCATCCGTGCCGCACTGCGCGAAGCGGCCACCGCCGACACGTACCAAACCGCGCTCGATGCGACCGGCGCGGCACTCGTCGCCATCGCGGCGCTCGTGCGCGCGGAGGTGCGGCATGGCTGA

>gene_90|141_nt|-|99016|99156
TTGGAAGGGCGCTTTCCGCGTGCGAGTCGTCTGACGCAGCGTTGCACGGTCTGGTCGAATCGCGAGCTTCATCGCTGGATGGCCGATCCGTTGAACTATCGCGCTGTCGACGCGGCGAACCAGACGACGGAGGGCGCGTAA

File2.list:

前にある言葉、>gene_44|後ろにある言葉

ブラブラブラ、>gene_88|ブラブラブラブラブラ

私が期待する出力は次のとおりです。

>gene_44|105_nt|+|47540|47644 GTGCGCCGGCGCGTCGCGATCGCGAACCGGCCCGTGCGAATCCTGCCGCATGCGCGCCGCATCTCGCCACGCCGCGCATTTCATTTCGACATCCATAACGTCTGA

>gene_88|177_nt|-|97993|98169
ATGCGCCAGCCGACGCACGCCCATTCCGGGCGAAACGTTCCCCTTATCCATTCGATCATCCGTGCCGCACTGCGCGAAGCGGCCACCGCCGACACGTACCAAACCGCGCTCGATGCGACCGGCGCGGCACTCGTCGCCATCGCGGCGCTCGTGCGCGCGGAGGTGCGGCATGGCTGA

どうすればそれを達成できますか?前もって感謝します!:)

4

1 に答える 1

0

次回質問するときは、コードを表示してください。たとえば、

use strict;
use warnings;

my @genes;

open my $list, '<file2.list';
while (my $line = <$list>) {
    push (@genes, $1) if $line =~ /[^>]+>([^|]+)/;

}
my $input;
close $list;
{
    local $/ = undef;
    open my $fasta, '<file1.fasta';
    $input = <$fasta>;
    close $fasta;
}
my @lines = split(/>/,$input);
foreach my $l (@lines) {
    foreach my $reg (@genes) {
        print ">$l" if $l =~ /$reg/
    }
}
于 2013-04-06T14:02:06.647 に答える