作者kzvito (HOW)
看板Perl
标题Re: [问题] 我的perl不会算数?
时间Sun Dec 26 17:38:32 2010
因为有板大想看看这神秘的程式码,
所以就放上来让大家看看。
新手的创作,还请大家也多指导哪里可以写得更好。
#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