psiblast에서 출력 보고서를 파싱 중입니다. 나는 COG 정렬을 사용하고 일치 (homologues)를위한 유전자 데이터베이스를 검색했다. 내가하고 싶은 한 가지는 유전자가 하나 이상의 COG와 일치 하는지를 찾는 것입니다. 내 부분 스크립트는 아래 있습니다.배열의 해시에 값을 푸시하는 동안 오류가 발생했습니다.
저는 여러 COG에 할당 된 유전자에 대한 모든 COG를 보유하는 배열을 만드는 데 특히 문제가 있습니다.
다음과 같은 오류가 발생합니다. "strict refs"가 parse_POG_reports.pl 26 행, 67 행에서 사용 중일 때 ARRAY ref로 문자열 ("COG0003")을 사용할 수 없습니다. ".
배열의 해시로 요소를 푸시하는 것과 관련된 다른 게시물을 살펴 보았습니다. 하지만 하나의 유전자가 동일한 COG에 대해 2 개의 일치 항목을 가지고있을 때 오류가 발생했을 것으로 생각하고 동일한 COG를 배열에 밀어 넣으려고합니다 (즉, 샘플 입력의 마지막 2 줄). 이게 말이 돼? 그렇다면이 문제를 어떻게 피할 수 있습니까?
use strict;
use warnings;
my %maxBits;my %COGhit_count;
my $Hohits={};my %COGhits;
my $COG_psi_report=$ARGV[0];
open (IN, $COG_psi_report) or die "cannot open $COG_psi_report\n";
while (my $line=<IN>){
next if ($line =~/^#/);
chomp $line;
my @columns = split(/\t/,$line);
my $bits=$columns[11];
my $COG=$columns[0];
my $hit=$columns[1];
my $Eval=$columns[10];
next if ($Eval > 0.00001); # threshold for significant hits set by DK
$COGhit_count{$hit}++; # count how many COGs each gene is homologous to
$COGhits{$hit}=$COG;
if ($COGhit_count{$hit}>1) {
push @{$COGhits{$hit}}, $COG; #
}
## for those that there are multiple hits we need to select top hit ##
if (!exists $maxBits{$hit}){
$maxBits{$hit}=$bits;
}
elsif (exists $maxBits{$hit} && $bits > $maxBits{$hit}){
$maxBits{$hit}=$bits;
}
$Hohits->{$hit}->{$bits}=$COG;
}
close (IN);
예를 입력 :
당신은 라인 (24)을 제거 할 필요가POG0002 764184357-stool1_revised_scaffold22981_1_gene47608 23.90 159 112 3 1 156 1 153 2e-06 54.2
POG0002 764062976-stool2_revised_C999233_1_gene54902 23.63 182 121 5 3 169 2 180 2e-06 53.9
POG0002 763901136-stool1_revised_scaffold39447_1_gene145241 26.45 155 89 3 3 137 5 154 3e-06 53.9
POG0002 765701615-stool1_revised_C1349270_1_gene168522 23.53 187 115 5 3 169 2 180 5e-06 53.1
POG0002 158802708-stool2_revised_C1077267_1_gene26470 22.69 216 158 5 3 213 5 216 5e-06 52.7
POG0003 160502038-stool1_revised_scaffold47906_2_gene161164 33.00 297 154 6 169 424 334 626 6e-40 157
POG0003 160502038-stool1_revised_scaffold47906_2_gene161164 16.28 172 128 4 23 192 46 203 1e-06 56.6
POG0003 158337416-stool1_revised_C1254444_1_gene13533 30.06 346 184 7 133 424 57 398 6e-40 155
POG0003 158337416-stool1_revised_scaffold29713_1_gene153054 28.61 332 194 8 132 424 272 599 2e-38 152
POG0003 158337416-stool1_revised_scaffold29713_1_gene153054 24.00 200 131 5 1 193 5 190 9e-11 69.3
감사 - 난 정말 내가 그렇게 생각하지만 난 이전에 $ COGhits {$ 히트} [0] = $ COG을 시도했다 – user1249760