У меня есть .pl файл, который я отредактированный немного, но когда я пытаюсь запустить его я получаю эту ошибкуHash Таблицы инициализация
Use of uninitialized value within %dca in concatenation (.) or string at ./createWindow.pl line 65.
Use of uninitialized value in concatenation (.) or string at ./createWindow.pl line 64.
Use of uninitialized value in concatenation (.) or string at ./createWindow.pl line 64.
Use of uninitialized value within %dca in concatenation (.) or string at ./createWindow.pl line 65.
Кодекса для следующего
#!/usr/bin/perl -w
use strict;
my $window=$ARGV[0];
my $windowCentral=$ARGV[1];
my $sep=$ARGV[2];
my @pairs=`cat $ARGV[3]`;
chomp @pairs;
my @pssm=`cat $ARGV[4]`;
chomp @pssm;
my @predSS=`cat $ARGV[5] | cut -d, -f1`;
chomp @predSS;
my @predSA=`cat $ARGV[6]`;
chomp @predSA;
my @predRCH=`cat $ARGV[7]`;
chomp @predRCH;
my @predCN=`cat $ARGV[8]`;
chomp @predCN;
my @seq=`cat $ARGV[9]`;
chomp @seq;
my @prop=`cat ../propensity.txt | cut -d\\ -f1,3`;
chomp @prop;
my %prop;
foreach(@prop) {
my @v=split(/ /);
$prop{$v[0]}=$v[1];
}
my @dca=`cat $ARGV[10]`;
chomp @dca;
my %dca;
foreach(@dca) {
my @v=split(/ /);
$dca{"$v[0],$v[1]"}="$v[2],$v[3]";
}
my $count=0;
foreach my $pair (@pairs) {
my @values=split(/,/,$pair);
next if($values[2]<$sep);
$count++;
my $r1=$values[0]-1;
my $r2=$values[1]-1;
my $central=($r2-$r1)/2;
#separation between contactd
print "$values[2],";
#propensity
my $AApair=$seq[$r1].$seq[$r2];
print "$prop{$AApair},";
#sequence length
my [email protected];
print "$num,";
#dca
my $posPair="$values[0],$values[1]";
print "$dca{$posPair},";
#PredSS of windows around contact residues
&dumpWindow($r1,$window,@predSS);
&dumpWindow($r2,$window,@predSS);
Остального кода работает отлично, но я не могу определить индексацию хэш-таблицы dca. Вам нужны все четыре столбца файла, а не только 1-й, 3-й и 4-й, поэтому не выполняют разрез.
my @dca=`cat $ARGV[10]`;
> chomp @dca;
> my %dca;
> foreach(@dca) {
> my @v=split(/ /);
> $dca{$v[0]}=$v[1];
> }
Ключ к хэш-таблицы должен быть конкатенация 2 остатков индексов, а значение конкатенация 3 и 4 столбцов:
$dca{"$v[0],$v[1]"}="$v[2],$v[3]";
>
> my $AApair=$seq[$r1].$seq[$r2];
> print "$dca{$AApair},";
>
Для индекса хэш-таблицу, нужны r1 и r2, а не аминокислоты в этих положениях.
my $posPair="$values[0],$values[1]";
print "$dca{$posPair},";
индексирование хеш-таблицы dca неправильным способом. Посмотрите, как вы заполняете его из файла .contact несколькими строками кода выше. Застрял в этом для веков теперь .....
1 2 0,311808 0,199348 1 3 0,310089 0,236611 1 4 0,344717 0,130342 1 5 0,449746 0,0971291 1 6 0,346515 0,194622 1 7 0,310089 0,207573 1 8 0,310452 0,195762 – user2689506
Это принимает входной сигнал из файла, который имеет 4 колонки. собираюсь попробовать ур код сейчас – user2689506
Глобальный символ «$ dca» требует явного имени пакета в ./createWindow.pl строке 43. Глобальный символ «$ dca» требует явного имени пакета в ./createWindow.pl строке 65. Выполнение. /createWindow.pl прервано из-за ошибок компиляции. – user2689506