Re: [問題] 我的perl不會算數?

看板Perl作者 (HOW)時間14年前 (2010/12/26 17:38), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
因為有板大想看看這神秘的程式碼, 所以就放上來讓大家看看。 新手的創作,還請大家也多指導哪裡可以寫得更好。 #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
文章代碼(AID): #1D5mqRFQ (Perl)
文章代碼(AID): #1D5mqRFQ (Perl)