Re: [問題] 我的perl不會算數?
因為有板大想看看這神秘的程式碼,
所以就放上來讓大家看看。
新手的創作,還請大家也多指導哪裡可以寫得更好。
#1perl/bin/perl
#hpho=accessible surface area(J. Mol. Biol. 105, 1-14 (1976))
#分別計算各interface和non-interface內的hpho總合
#window => 以9 residues為寬度,若中央residue(#5)為interacting residue,則此
window屬interface;反之,則為non-interface。
open A, "< DATASET.txt";
@all_data=<A>;
close A;
open B, ">> hpho_method.txt";
printf B "%5s", "hpho";
printf B "%15s", "#(interface)";
printf B "%15s", "#(noninterface)";
print B "\n";
print B "=====" x 7;
print B "\n";
$n=0;
$residue9="final_one";
$total_residue=0;
$total_interacting_aa_counter=0;
while (($residue9 ne "") &&($residue9 ne "/n")){
$residue1=$all_data[$n];
$id1=substr($residue1,10,4);
$chain1=substr($residue1,20,1);
$aa1=substr($residue1,40,1);
$residue2=$all_data[$n+1];
$aa2=substr($residue2,40,1);
$residue3=$all_data[$n+2];
$aa3=substr($residue3,40,1);
$residue4=$all_data[$n+3];
$aa4=substr($residue4,40,1);
$residue5=$all_data[$n+4];
$aa5=substr($residue5,40,1);
$status5=substr($residue5,0,1);
$residue6=$all_data[$n+5];
$aa6=substr($residue6,40,1);
$residue7=$all_data[$n+6];
$aa7=substr($residue7,40,1);
$residue8=$all_data[$n+7];
$aa8=substr($residue8,40,1);
$residue9=$all_data[$n+8];
$id9=substr($residue9,10,4);
$chain9=substr($residue9,20,1);
$aa9=substr($residue9,40,1);
@local_seq=($aa1, $aa2, $aa3, $aa4, $aa5, $aa6, $aa7, $aa8, $aa9);
foreach $aminoacid (@local_seq){
chomp $aminoacid;
}
##debug
#print "@local_seq\n";
#debug
%hpho=(
"I"=> 4.5,"V"=> 4.2,"L"=> 3.8,"F"=> 2.8,"C"=> 2.5,
"M"=> 1.9,"A"=> 1.8,"G"=> -0.4,"T"=> -0.7,"W"=> -0.9,
"S"=> -0.8,"Y"=> -1.3,"P"=> -1.6,"H"=> -3.2,"Q"=> -3.5,
"E"=> -3.5,"D"=> -3.5,"N"=> -3.5,"K"=> -3.9,"R"=> -4.5,
);
if
(($hpho{$aa1}!=0)&&($hpho{$aa2}!=0)&&($hpho{$aa3}!=0)&&($hpho{$aa4}!=0)&&
($hpho{$aa5}!=0)&&($hpho{$aa6}!=0)&&($hpho{$aa7}!=0)&&($hpho{$aa8}!=0)&&
($hpho{$aa9}!=0))
{
$total_hpho=($hpho{$aa1})+($hpho{$aa2})+($hpho{$aa3})+($hpho{$aa4})+($hpho{$aa5})+($hpho{$aa6})+($hpho{$aa7})+($hpho{$aa8})+($hpho{$aa9});
$check=1;
}
else {
$check=0;
}
if (($id1 eq $id9) && ($chain1 eq $chain9) &&($check==1)){
if ($status5 == 1){
$in_hpho_counter{$total_hpho}+=1;
$non_hpho_counter{$total_hpho}+=0;
}
else{
$in_hpho_counter{$total_hpho}+=0;
$non_hpho_counter{$total_hpho}+=1;
}
}
$n+=1;
}
}
@total_hpho_collection=keys %in_hpho_counter;
sort @total_hpho_collection;
##debug
#print "@total_hpho_collection";
#debug
foreach $hpho(@total_hpho_collection){
printf B "%5g",$hpho;
printf B "%15g",$in_hpho_counter{$hpho};
printf B "%15g",$non_hpho_counter{$hpho};
print B "\n";
}
close B;
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.235.195.181
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
3
4
Perl 近期熱門文章
PTT數位生活區 即時熱門文章