0

現在、2 つのリスト間で重複する遺伝子を見つけることを目的として、2 つの遺伝子リストを比較しています。

現時点では、遺伝子の名前を両方のリスト (blast1 と blast2) のハッシュ キーとして保存し、両方のハッシュに存在するキー (遺伝子) を見つけます。

入力 1:

XLOC_000157_6.21019:12.8196,_Change:1.04564,_p:0.04915,_q:0.999592      99.66   gi|475392713|dbj|AB759708.1|_Xenopus_laevis_PhyHd_mRNA_for_phytanoyl-CoA_dioxygenase_like_protein,_complete_cds
XLOC_000159_636.025:343.104,_Change:-0.890436,_p:0.00575,_q:0.999592    99.47   gi|9909981|emb|AJ278067.1|_Xenopus_laevis_mRNA_for_putative_XIRG_protein
XLOC_000561_31.1018:14.9273,_Change:-1.05905,_p:0.0073,_q:0.999592      91.57   gi|165973401|ref|NM_001113689.1|_Xenopus_(Silurana)_tropicalis_cytokine_inducible_SH2-containing_protein_(cish),_mRNA

最初の遺伝子リストに割り当て...

$input1 = $ARGV[0];
open my $blast1, '<', $input1 or die $!;

my $results1 = 0;
my (@blast1ID, @blast1_info, @percent_id, @split);
while (<$blast1>) {
    chomp;
    @split = split('\t');
    push @blast1_info, $split[0];
    push @percent_id, $split[1];
    push @blast1ID, $split[2];
    $results1++;
}   

print "$results1 blast hits in '$input1'\n";

push @{$blast1{$blast1ID[$_]} }, [ $blast1_info[$_], $percent_id[$_] ] for 0 .. $#blast1ID;

入力 2:

XLOC_000561_31.1018:14.9273,_Change:-1.05905,_p:0.0073,_q:0.999592      91.57   gi|165973401|ref|NM_001113689.1|_Xenopus_(Silurana)_tropicalis_cytokine_inducible_SH2-containing_protein_(cish),_mRNA
XLOC_000679_57.3461:29.2637,_Change:-0.970585,_p:0.03645,_q:0.999592    85.13   gi|51704135|gb|BC081195.1|_Xenopus_laevis_hypothetical_protein_LOC446937,_mRNA_(cDNA_clone_IMAGE:6640116),_partial_cds
XLOC_000766_10.699:6.33756,_Change:-0.755473,_p:0.0384,_q:0.999592      99.04   gi|195972824|ref|NM_001130940.1|_Xenopus_laevis_interleukin_6_signal_transducer_(gp130,_oncostatin_M_receptor)_(il6st),_mRNA

2 番目の遺伝子リストの割り当て

$input2 = $ARGV[1];
open my $blast2, '<', $input2 or die $!;

my $results2 = 0;
my (@blast2ID, @blast2_info, @percent_id);
while (<$blast2>) {
    chomp;
    @split = split('\t'); 
    push @blast2_info, $split[0];
    push @percent_id, $split[1];
    push @blast2ID, $split[2];
    $results2++;
}   
print "$results2 blast hits in '$input2'\n";

push @{$blast2{$blast2ID[$_]} }, [ $blast2_info[$_], $percent_id[$_] ] for 0 .. $#blast2ID;

両方のハッシュに存在するキー (遺伝子) を見つけます。

my $intersect_count = 0;
for my $key (sort keys %blast1) {
    if (exists $blast1{$key} && $blast2{$key}) {
        $intersect_count++;
            for my $part1 (@ { $blast1{$key} } ) {
                ($hit1, $percent_id1) = @$part1;
            } 
            for my $part2 (@ { $blast2{$key} } ) {
                ($hit2, $percent_id2) = @$part2;
            }
    push @intersect, "$key\tC1:$hit1 [$percent_id1]\tC2:$hit2 [$percent_id2]\n";            
    push @intersecting_list, "$key";                
    }
}

上記のコードは、両方のリストに存在する 1 つの遺伝子を見つけます。

gi|165973401|ref|NM_001113689.1|_Xenopus_(Silurana)_tropicalis_cytokine_inducible_SH2-containing_protein_(cish),_mRNA

私の質問は、同様の名前を持つ遺伝子が出力に含まれるように、これをどのように適応させることができるでしょうか? たとえば、私は見たいと思います:

gi|186928837|ref|NM_005982.3|_Homo_sapiens_SIX_homeobox_1_(SIX1),_mRNA

一致を見つける:

gi|154142326|ref|NM_001100275.1|_Xenopus_(Silurana)_tropicalis_SIX_homeobox_1_(six1),_mRNA

助言がありますか?

4

1 に答える 1