Advertisement
ProzacR

tikrinti_rezultatus

Jul 15th, 2011
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.13 KB | None | 0 0
  1. #!/usr/bin/perl
  2. #VR
  3. #is *.mol isrenka ta kurio -SO2NH2 yra arciausiai Zn
  4.  
  5. ##naudoti su:
  6. ##!/bin/sh
  7. #
  8. #
  9. #for rezultatas in out_pdbqt/*.pdbqt; do
  10. #pavadinimas=${rezultatas%.pdbqt}
  11. #./tikrinti_rezultatus.pl $pavadinimas.00?.mol
  12. #done
  13.  
  14.  
  15. use Chemistry::MacroMol;
  16. use Chemistry::File::MDLMol;
  17. use Chemistry::File::PDB;
  18. use List::Util qw[min max];
  19.  
  20.  
  21. if(!-d "tikrinti_rezultatai/") {
  22. mkdir("tikrinti_rezultatai/", 0777);
  23. }
  24.  
  25.  
  26. while (@ARGV[$x]) {
  27. $macromol = Chemistry::MacroMol->read("@ARGV[$x]");
  28. #print "\nTikrinamas ", @ARGV[$x], ": ";
  29.  
  30. #imam Zn geroj padetyje
  31. $znmol = Chemistry::MacroMol->read("ZN.pdb");
  32. $Zn = $znmol->atoms_by_name('ZN');
  33. if ($topd > tikrinti(rastiN()) || $x == 0) {
  34. $topd = tikrinti(rastiN());
  35. $geriausias = $x;
  36. }
  37. $x++;
  38. }
  39.  
  40. $h = @ARGV[$geriausias];
  41. print "Geriausias: ", $h, "\n";
  42. system ("cp $h tikrinti_rezultatai/");
  43.  
  44.  
  45. sub tikrinti {
  46. @d = ();
  47. $i = 0;
  48. while (@_[$i]) {
  49. #print @S[$b]->distance($Zn), " ";
  50. @d[$i] = @_[$i]->distance($Zn);
  51. $i++;
  52. }
  53. return min(@d);
  54. }
  55.  
  56.  
  57. sub rastiN {
  58. @sulfonamidN = ();
  59.  
  60. #surenkami visi S atomai
  61. @all_atoms = $macromol->atoms;
  62. $a = 0;
  63. @S = ();
  64. while (@all_atoms[$a]) {
  65. push (@S, @all_atoms[$a]) if (@all_atoms[$a]->symbol eq 'S');
  66. $a++;
  67. }
  68.  
  69. #randami 6valenciu S atomu kaimynai
  70. @Skaimynai = ();
  71. $b = 0;
  72. while (@S[$b]) {
  73. push (@Skaimynai, @S[$b]->neighbors) if (@S[$b]->valence == 6);
  74. $b++;
  75. }
  76. #print "Skaimynai ", @Skaimynai;
  77.  
  78. #isrenkami kaimynai N
  79. @kaimynaiN = ();
  80. $c = 0;
  81. while (@Skaimynai[$c]) {
  82. push (@kaimynaiN, @Skaimynai[$c]) if (@Skaimynai[$c]->symbol eq 'N');
  83. $c++;
  84. }
  85. #print " kaimynaiN ", @kaimynaiN;
  86.  
  87. #randami ju kaimynai
  88. @Nkaimynai = ();
  89. $d = 0;
  90. while (@kaimynaiN[$d]) {
  91.   @Nkaimynai = @kaimynaiN[$d]->neighbors;
  92.   #isrenkami kaimynai H kuriu turi buti 2
  93.   @kaimynaiH = ();
  94.   $e = 0;
  95.   while (@Nkaimynai[$e]) {
  96.   push (@kaimynaiH, @Nkaimynai[$e]) if (@Nkaimynai[$e]->symbol eq 'H');
  97.   $e++;
  98.   }
  99.   #print " kaimynaiH ", @kaimynaiH;
  100.   if (@kaimynaiH == 2) {
  101.   push (@sulfonamidN, @kaimynaiN[$d]);
  102.   }
  103.   $d++;
  104.   @Nkaimynai = ();
  105. }
  106. #print " Nkaimynai ", @Nkaimynai;
  107. #print @sulfonamidN;
  108. return @sulfonamidN;
  109. print "\n";
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement