@amplicon_exon
配列から同様の要素(がのように)〜@failedamplicons
の配列を含む要素を検索したいと思います。 @failedamplicons
の各要素は一意であり、@amplicon_exon
の1つの要素にのみ一致します。私は2つのループを試しましたが、繰り返し値を取得します。 2つの配列から同様の値を見つけて取得するより良い方法はありますか?ここでPerlは2つの配列から同様の要素を見つけよう
@failedamplicons: example:
OCP1_FGFR3_8.87
OCP1_AR_14.89
@amplicon_exon: example:
TEST_Focus_ERBB2_2:22:ERBB2:GENE_ID=ERBB2;PURPOSE=CNV,Hotspot;CNV_ID=ERBB2;CNV_HS=1
OCP1_FGFR3_8:intron:FGFR3:GENE_ID=FGFR3;PURPOSE=CNV;CNV_ID=FGFR3;CNV_HS=1
OCP1_CDK6_14:intron:CDK6:GENE_ID=CDK6;PURPOSE=CNV;CNV_ID=CDK6;CNV_HS=1
は、ループのコードのための2つです:
my $i = 0;
my $j = 0;
for ($i = 0; $i < @amplicon_exon; $i++) {
for ($j = 0; $j < @failedamplicons; $j++) {
my $fail_amp = (split /\./, $failedamplicons[$j])[0];
#print "the failed amp before match is $fail_amp\n";
if (index($amplicon_exon[$i], $fail_amp) != -1) {
#print "the amplicon exon that matches $amplicon_exon[$i] and sample is $sample_id\n";
print "the failed amp that matches $fail_amp and sample is $sample_id\n";
my @parts = split /:/, $amplicon_exon[$i];
my $exon_amp = $parts[1];
next unless $parts[3] =~ /Hotspot/; #includes only Hotspot amplicons
my $gene_res = $parts[2];
my $depth = (split /\./, $failedamplicons[$j])[1];
my @total_amps = (
$run_name, $sample_id, $gene_res, $depth, $fail_amp, $run_date, $matrix_status
);
my $lines = join "\t", @total_amps;
push(@finallines, $lines);
}
}
}
"_similar_"であるという正確な基準を指定できますか? – zdim
amplicon_exon要素には、 "。"の前にfailedamplicons要素の完全な文字列を含める必要があります。 OCP1_FGFR3_8:イントロン:FGFR3:GENE_ID = FGFR3;目的= CNV; CNV_ID = FGFR3; CNV_HS = 1'にはOCP1_FGFR3_8が含まれています。 – user3781528
@ user3781528:私はあなたのPerlコードを整理して読めるようにしました。将来は読みやすいコードを投稿してください。 – Borodin