1

差次的に発現する (DE) 遺伝子の遺伝子配列情報と、配列の 2 つのハッシュに含まれるトランスクリプトーム配列データ (すべての発現遺伝子) があります。両方のハッシュには、キーとして一意の遺伝子 ID があります (例: 'XLOC_000001')。

DE 遺伝子 HoA のキーを使用してタンスクリプトーム HoA をループ処理するプログラムを作成したので、DE 遺伝子のみの遺伝子配列が得られます。

HoA は次のように初期化されます。

my %hash;
push @{ $hash{ $firstkey[$_] } }, [ $p_value[$_], $q_value[$_], $log_fold_change[$_] ] for 0 .. $#firstkey;

my %hash2;
push @{ $hash2{ $secondkey[$_] } }, [ $transcriptID[$_], $sequence[$_] ] for 0 .. $#secondkey;

次に、最初のハッシュのキーを使用して、2 番目のハッシュから値を抽出します (両方のハッシュのキーは同じ形式です)。

for my $firstkey (sort keys %hash) {
    for my $part (@{ $hash2{$firstkey} }) {
        my ($value3, $value4) = @$part; 
        print $output "$firstkey\n$value4\n";
    }
}

これはうまくいきます。私が今やろうとしているのは、最初の HoA からの追加情報 (P/Q 値、および発現変化のレベルに関する情報) を出力に含めることです。私の質問は: 出力に最初のハッシュの値を含めるにはどうすればよいですか? 理想的には印刷したい:

%hash2{$firstkey} => $sequence[$_], $p_value[$_], $q_value[$_], $log_fold_change[$_] 

配列の 2 番目のハッシュを最初の配列にプッシュする必要があるか (そうであれば、どのように?!)、または最後に両方のハッシュをループする必要があるかについて混乱していますか?

- - - - アップデート - - - - -

各 HoA の例:

最初のキー:

Key 'XLOC_001155' contains the values: [ TCONS_00001774 Scaffold10052 SEchx 0 SEchxdex 3.51656 inf 0.00345 0.803695 ] 
Key 'XLOC_001173' contains the values: [ TCONS_00001795 Scaffold10222 SEchx 26.3355 SEchxdex 70.1758 1.41397 0.0199 0.998513 ] 
Key 'XLOC_001177' contains the values: [ TCONS_00001799 Scaffold10227 SEchx 26.2873 SEchxdex 0 -inf 0.01285 0.998513 ] 
Key 'XLOC_001195' contains the values: [ TCONS_00001826 Scaffold10227 SEchx 0.0580138 SEchxdex 0.688545 3.56908 0.0398 0.998513 ] 
Key 'XLOC_000001' contains the values: [ TCONS_00000001 Scaffold10262 SEchx 0 SEchxdex 2.01554 inf 0.00615 0.998513 ] 
Key 'XLOC_001290' contains the values: [ TCONS_00001955 Scaffold103603 SEchx 0 SEchxdex 0.732931 inf 0.0139 0.998513 ] 
Key 'XLOC_001308' contains the values: [ TCONS_00001973 Scaffold1001 SEchx 0 SEchxdex 1.11927 inf 0.00295 0.763416 ] 
Key 'XLOC_000002' contains the values: [ TCONS_00000002 Scaffold10052 SEchx 0.0923385 SEchxdex 23.4041 7.98561 0.02025 0.998513 ]

セカンドキー:

Key 'XLOC_000001' contains the values: [ TCONS_00000001 ATTACAATAACTAAGGAGGACATAGCTTAATTTGCACTATTTACTTTAGTGCATCTGTTGTAGTAGGACGTACAAGGACTTTATTGCTTCAGATAAAGACATTTTATTGCTTTCAAGGTATTCCTGAGACAATTGATCGTGCACTGCAAGCTCCACTTCTAAGTATAAACCAGAGGATTGCAAAACTGGAAGCAGTTCTTAGTTTGACTGGACAATTGTATCAAGTAGGAGGAAAAATGTTTGCCACTAATGGGGAGCAAGTTGATTTTGAGGCCTCTAAACTGACCTGTGAAAAGGCTGGTGGACGAATTGCTACTCCAAAGAATGAAGCAGAGAACAATGTTGTGCTAAGTATTTTAAAGAAACACAATAAATATGCATACCTAGGTGTTACAG ] 

Key 'XLOC_000002' contains the values: [ TCONS_00000002 GTCACACGGCCAGCATCACGCGTGTCACGCTTTTATCCGGAATGAGACCAACTCCAACTTTTTGTGACTGACTTATTTTTCTTCTAGTATAAAAAAATGTCTCGCAGCCACGAGAGACTTCAACGCCTATAACCACCGGCGTACCTCAAAACAAGCAGATAATACCGCGCTAAGCAGCGTTCGGGTTTATAGGCGGGCATAGCCTCACTTCCGGCAGGCTGCTAGGAAACCAAAGAGACGCGGATTCTGATGTTTTGAGCTGCGAGGGTGAAGCGACTGCAAGGACAACAATGGATTCTGAATACATAAAGCGCTGTTTAGGGAAGTGTTTGTCCGAAGGACTTGCAGAAGTCGCGGAAAAAAGACCGATGGATCCTATTGAGT ] 

4

2 に答える 2