我无法确定我正在为分析酵母基因组而编写的这个子模块中的错误。帮助任何人?
sub 应该使用散列键作为正则表达式来检查某对大写字母。如果我们有匹配项,则返回关联的值。但是,它似乎只匹配“TT”并返回值 5。我不知道为什么它会跳转到 TT 哈希元素;不同元素之间的其他一切似乎都是相同的。我认为它会返回每个值,或者不返回任何值,但它只返回 TT。
完整代码在 github 上:https ://github.com/bsima/yeast-TRX
以下是相关代码(script.pl 的第 159 行):
sub trxScore {
my ( $dinucleotide ) = @_;
my %trxScores = (
qr/(CG)/ => 43,
qr/(CA)/ => 42,
qr/(TG)/ => 42,
qr/(GG)/ => 42,
qr/(CC)/ => 42,
qr/(GC)/ => 25,
qr/(GA)/ => 22,
qr/(TC)/ => 22,
qr/(TA)/ => 14,
qr/(AG)/ => 9,
qr/(CT)/ => 9,
qr/(AA)/ => 5,
qr/(TT)/ => 5,
qr/(AC)/ => 4,
qr/(GT)/ => 4,
qr/(AT)/ => 0
);
foreach my $re (keys %trxScores) {
if ( match($re,$dinucleotide) ) {
return $trxScores{$re};
} else {
return "null";
}
}
}
输出在bayanus-TRXscore.csv 中:
Saccharomyces bayanus
gene,gene pair,position,trx score
...
eYAL001C,TA,23,null
eYAL001C,AT,24,null
eYAL001C,TT,25,5
eYAL001C,TT,26,5
eYAL001C,TT,27,5
eYAL001C,TA,28,null