0

GBK ファイルを解析しようとしています。基本的には、パターンにマッチした遺伝子のローカスタグとプロダクトネームを返す必要があります。したがって、すべての予測遺伝子産物を検索したいモチーフの場合、「予測」という検索語は次のように返されます。

/product="predicted semialdehyde dehydrogenase"
/locus_tag="ECDH10B_2481"

を返すことはできました/productが、「後方」を解析して を取得する方法がわかりません/locus_tag

これが私がこれまでに持っているものです:

my $fasta_file = 'example.txt';
open(INPUT, $fasta_file) || die "ERROR: can't read input FASTA file: $!";
while ( <INPUT> ) {
     if(/predicted/){
            print $_;
     }
}

> example.txt

gene            complement(2525423..2526436)
                 /gene="usg"
                 /locus_tag="ECDH10B_2481"
 CDS             complement(2525423..2526436)
                 /gene="usg"
                 /locus_tag="ECDH10B_2481"
                 /codon_start=1
                 /transl_table=11
                 /product="predicted semialdehyde dehydrogenase"
                 /protein_id="ACB03477.1"
                 /db_xref="GI:169889770"
                 /db_xref="ASAP:AEC-0002184"
                 /translation="MSEGWNIAVLGATGAVGEALLETLAERQFPVGEIYALARNESAG
                 EQL"
 gene            complement(2526502..2527638)
                 /gene="pdxB"
                 /locus_tag="ECDH10B_2482"
 CDS             complement(2526502..2527638)
                 /gene="pdxB"
                 /locus_tag="ECDH10B_2482"
                 /codon_start=1
                 /transl_table=11
                 /product="erythronate-4-phosphate dehydrogenase"
                 /protein_id="ACB03478.1"
                 /db_xref="GI:169889771"
                 /db_xref="ASAP:AEC-0002185"
                 /translation="MKILVDENMPYARDLFSRLGEVTAVPGRPIPVAQLADADALMVR
                 SVTKVNESLLAGKPIKFVGTATAGTDHVDEAWLKQAGIGFSAAP"
4

3 に答える 3

1

最後に遭遇した遺伝子座タグを覚えて、予測された場合はそれを印刷してください。

#!/usr/bin/perl
use warnings;
use strict;

my $fasta_file = 'example.txt';
open my $INPUT, '<', $fasta_file or die "ERROR: can't read input FASTA file: $!";

my $locus_tag;
while (<$INPUT>) {
    if (/locus_tag/) {
        $locus_tag = $_;
    } elsif (/predicted/) {
        print;
        print $locus_tag;
    }
}
于 2013-03-04T20:40:55.830 に答える
1

「逆方向に解析」しないでください。あなたの/locusタグはイベントであり、マッチングは別です。あなたのロジックはそれを実行する必要があります

  1. すべての遺伝子座タグをキャプチャして保存します
  2. マッチングしたら、ローカスタグをキーパーリストに保存
  3. 最後の遺伝子座タグは、次を保存するときに自動的に上書きされます。
于 2013-03-04T20:37:46.193 に答える
0

逆方向に解析するのは非常に困難です。それぞれの完全なエントリを解析し、それが一致するかどうかを判断することで、より良いサービスを受けることができます。これはもう少し手間がかかりますが、遺伝子データを使って何か他のことをしたいときに非常に便利です。

以下で使用するアプローチは、のエントリを構築し%entryます。次の「遺伝子」行を検出すると、そのエントリを処理します。この場合は、製品の一致をチェックし、次のエントリをクリアします。

私はDATAテスト目的でファイルハンドルを使用しました、それは__DATA__行の後のすべてを読み込みます。

#!/usr/bin/env perl
use v5.10;
use strict;
use warnings;

my %entry;
while(my $line = <DATA>) {
    # new entry, process the previous one and clear it
    if( $line =~ m{^ gene \s+ complement \( (.*) \) }x ) {
        process_entry(\%entry) if keys %entry;
        %entry = ( complement => $1 );
    }
    elsif( $line =~ m{^CDS \s+ }x ) {
        # ignore CDS lines for now
    }
    elsif( $line =~ m{^\s+/(\w+)=(.*)} ) {
        $entry{$1} = $2;
    }
    else {
        warn "Unknown line $line";
    }
}

# Process the last one.
process_entry(\%entry) if keys %entry;

sub process_entry {
    my $entry = shift;

    say "MATCH! $entry->{locus_tag}" if $entry->{product} =~ /predicted/;

    return;
}


__DATA__
gene            complement(2525423..2526436)
                /gene="usg"
                /locus_tag="ECDH10B_2481"
CDS             complement(2525423..2526436)
                /gene="usg"
                /locus_tag="ECDH10B_2481"
                /codon_start=1
                /transl_table=11
                /product="predicted semialdehyde dehydrogenase"
                /protein_id="ACB03477.1"
                /db_xref="GI:169889770"
                /db_xref="ASAP:AEC-0002184"
                /translation="MSEGWNIAVLGATGAVGEALLETLAERQFPVGEIYALARNESAGEQL"
gene            complement(2526502..2527638)
                /gene="pdxB"
                /locus_tag="ECDH10B_2482"
CDS             complement(2526502..2527638)
                /gene="pdxB"
                /locus_tag="ECDH10B_2482"
                /codon_start=1
                /transl_table=11
                /product="erythronate-4-phosphate dehydrogenase"
                /protein_id="ACB03478.1"
                /db_xref="GI:169889771"
                /db_xref="ASAP:AEC-0002185"
                /translation="MKILVDENMPYARDLFSRLGEVTAVPGRPIPVAQLADADALMVRSVTKVNESLLAGKPIKFVGTATAGTDHVDEAWLKQAGIGFSAAP"

あるいは、 Bio :: SeqReader::FastaBio::DB:: Fastaを含むいくつかのFastaリーダーがCPANにあります。

于 2013-03-04T20:52:12.677 に答える