$basename="mouse_42_poly"; open RSVFILE, "< $basename" . ".rsv" or die "Can't open RSV file\n"; open RESFILE, "< $basename" . ".res" or die "Can't open ASR file\n"; open SLNFILE, "< $basename" . "_sln.txt" or die "Can't open SLN file\n"; open PREDFILE, "> $basename" . "_pred.txt" or die "Can't open PRED file\n"; open VARFILE, "> $basename" . "_var.txt" or die "Can't open VAR file\n"; while(){ if(/^ *leg\(([A-Za-z0-9]+),([0-9]+)\)/){ $var=$1; $num=$2; $i=0; ZIN: while(){ last ZIN if !/^ *[0-9.]/; chomp(); @parts=split / +/; $t{$var}{$num}{++$i}=$parts[1]; for($j=0;$j<=$num;$j++){ $z{$var}{$num}{$i}{$j}=$parts[$j+2]; } } $numElm{$var}{$num}=$i; } } while(){ if(/^*leg\(([A-Za-z0-9]+)+,([0-9]+)/){ $var=$1; $num=$2; @parts=split /\t/; $label=$parts[0]; $level=$parts[1]; $u[0]=$parts[2]; for($j=1;$j<=$num;$j++){ $_=; @parts=split /\t/; $u[$j]=$parts[2]; } print PREDFILE "$label\t$level"; for($j=1;$j<=$numElm{$var}{$num};$j++){ $tot=0; for($k=0;$k<=$num;$k++){ $tot+=$u[$k]*$z{$var}{$num}{$j}{$k}; } print PREDFILE "\t$tot"; } print PREDFILE "\n"; } } while(){ if(/leg\(([A-Za-z0-9]+),([0-9]+)\)/){ chomp(); $var=$1; $num=$2; @parts=split / +/; $label=$parts[0]; STRUCTURE: while(){ chomp(); @parts=split / +/; last STRUCTURE if $parts[4]==9; } $pos=5; for($i=0;$i<=$num;$i++){ for($j=0;$j<=$i;$j++){ if($#parts<$pos){ $_=; chomp(); @parts=split / +/; $pos=0; } $v[$i][$j]=$parts[$pos++]; $v[$j][$i]=$v[$i][$j]; } } for($k=1;$k<=$numElm{$var}{$num};$k++){ for($l=1;$l<=$numElm{$var}{$num};$l++){ $varcomp=0; for($i=0;$i<=$num;$i++){ for($j=0;$j<=$num;$j++){ $varcomp+=$z{$var}{$num}{$k}{$i}*$v[$i][$j]*$z{$var}{$num}{$l}{$j}; #print "$l $l $i $j $varcomp+=$z{$var}{$num}{$k}{$i}*$v[$i][$j]*$z{$var}{$num}{$l}{$j}\n" if $k==$l && $k==1; } } print VARFILE "$label\t$t{$var}{$num}{$k}\t$t{$var}{$num}{$l}\t$varcomp\n"; } } } }