From c844b7d5a2e7835de404e9fd038218924794d709 Mon Sep 17 00:00:00 2001 From: Cezary Czaplewski Date: Mon, 9 Mar 2020 01:34:19 +0100 Subject: [PATCH] UNRES-Dock ctest --- ctest/dock/2WFU_A.pdb | 161 ++++++ ctest/dock/2WFU_B.pdb | 173 +++++++ ctest/dock/2WFU_dock.inp | 28 ++ ctest/dock/cluster.inp | 21 + ctest/dock/cluster_wham_check.sh | 23 + ctest/dock/mremd_check.sh | 19 + ctest/dock/test_mpi_DOCK.sh | 17 + ctest/dock/wham.inp | 44 ++ ctest/dock/wham_check.sh | 41 ++ source/unres-dock/CMakeLists.txt | 167 ++++++- source/unres-dock/generator.f | 948 +++++++++++++++++++++++++++++++++++ source/unres-dock/generator_v13b.F | 967 ------------------------------------ 12 files changed, 1641 insertions(+), 968 deletions(-) create mode 100644 ctest/dock/2WFU_A.pdb create mode 100644 ctest/dock/2WFU_B.pdb create mode 100644 ctest/dock/2WFU_dock.inp create mode 100644 ctest/dock/cluster.inp create mode 100755 ctest/dock/cluster_wham_check.sh create mode 100755 ctest/dock/mremd_check.sh create mode 100755 ctest/dock/test_mpi_DOCK.sh create mode 100644 ctest/dock/wham.inp create mode 100755 ctest/dock/wham_check.sh create mode 100644 source/unres-dock/generator.f delete mode 100644 source/unres-dock/generator_v13b.F diff --git a/ctest/dock/2WFU_A.pdb b/ctest/dock/2WFU_A.pdb new file mode 100644 index 0000000..5c20de0 --- /dev/null +++ b/ctest/dock/2WFU_A.pdb @@ -0,0 +1,161 @@ +ATOM 1 N GLY A 1 18.230 4.903 9.716 1.00 28.23 N +ATOM 2 CA GLY A 1 16.795 5.303 9.674 1.00 26.95 C +ATOM 3 C GLY A 1 15.903 4.106 9.901 1.00 26.34 C +ATOM 4 O GLY A 1 16.336 3.112 10.496 1.00 25.78 O +ATOM 5 N VAL A 2 14.648 4.221 9.474 1.00 25.88 N +ATOM 6 CA VAL A 2 13.627 3.183 9.727 1.00 25.44 C +ATOM 7 C VAL A 2 13.981 1.814 9.147 1.00 25.29 C +ATOM 8 O VAL A 2 13.737 0.794 9.782 1.00 24.50 O +ATOM 9 CB VAL A 2 12.180 3.666 9.357 1.00 25.92 C +ATOM 10 CG1 VAL A 2 11.954 3.744 7.847 1.00 26.79 C +ATOM 11 CG2 VAL A 2 11.074 2.815 10.029 1.00 26.46 C +ATOM 12 N VAL A 3 14.567 1.792 7.942 1.00 25.41 N +ATOM 13 CA VAL A 3 15.020 0.524 7.365 1.00 24.91 C +ATOM 14 C VAL A 3 16.105 -0.118 8.242 1.00 24.49 C +ATOM 15 O VAL A 3 16.056 -1.305 8.572 1.00 23.75 O +ATOM 16 CB VAL A 3 15.492 0.705 5.885 1.00 25.10 C +ATOM 17 CG1 VAL A 3 15.909 -0.638 5.270 1.00 25.30 C +ATOM 18 CG2 VAL A 3 14.381 1.329 5.065 1.00 25.09 C +ATOM 19 N ASP A 4 17.098 0.654 8.646 1.00 24.84 N +ATOM 20 CA ASP A 4 18.079 0.067 9.522 1.00 25.25 C +ATOM 21 C ASP A 4 17.462 -0.448 10.831 1.00 24.23 C +ATOM 22 O ASP A 4 17.802 -1.539 11.276 1.00 24.33 O +ATOM 23 CB ASP A 4 19.206 1.037 9.849 1.00 25.95 C +ATOM 24 CG ASP A 4 20.336 0.345 10.555 1.00 30.13 C +ATOM 25 OD1 ASP A 4 21.131 -0.360 9.884 1.00 34.07 O +ATOM 26 OD2 ASP A 4 20.411 0.485 11.791 1.00 35.94 O +ATOM 27 N SER A 5 16.551 0.318 11.425 1.00 23.38 N +ATOM 28 CA SER A 5 16.018 -0.068 12.733 1.00 23.67 C +ATOM 29 C SER A 5 14.966 -1.197 12.715 1.00 23.52 C +ATOM 30 O SER A 5 14.885 -1.961 13.689 1.00 23.70 O +ATOM 31 CB SER A 5 15.445 1.161 13.459 1.00 23.38 C +ATOM 32 OG SER A 5 16.511 2.027 13.882 1.00 24.84 O +ATOM 33 N CYS A 6 14.151 -1.260 11.649 1.00 23.25 N +ATOM 34 CA CYS A 6 12.933 -2.098 11.605 1.00 23.79 C +ATOM 35 C CYS A 6 12.934 -3.155 10.494 1.00 23.94 C +ATOM 36 O CYS A 6 12.054 -4.026 10.480 1.00 22.81 O +ATOM 37 CB CYS A 6 11.683 -1.207 11.500 1.00 24.12 C +ATOM 38 SG CYS A 6 11.463 -0.110 12.949 1.00 25.12 S +ATOM 39 N CYS A 7 13.907 -3.079 9.577 1.00 23.80 N +ATOM 40 CA CYS A 7 14.064 -4.074 8.484 1.00 24.46 C +ATOM 41 C CYS A 7 15.332 -4.873 8.649 1.00 24.96 C +ATOM 42 O CYS A 7 15.325 -6.104 8.508 1.00 25.76 O +ATOM 43 CB CYS A 7 14.077 -3.378 7.109 1.00 24.78 C +ATOM 44 SG CYS A 7 14.603 -4.366 5.689 1.00 26.21 S +ATOM 45 N ARG A 8 16.447 -4.164 8.849 1.00 24.83 N +ATOM 46 CA ARG A 8 17.745 -4.827 9.109 1.00 25.46 C +ATOM 47 C ARG A 8 17.853 -5.417 10.519 1.00 24.81 C +ATOM 48 O ARG A 8 18.723 -6.266 10.806 1.00 24.82 O +ATOM 49 CB ARG A 8 18.894 -3.871 8.797 1.00 25.20 C +ATOM 50 CG ARG A 8 18.884 -3.448 7.341 1.00 25.55 C +ATOM 51 CD ARG A 8 19.916 -2.396 6.986 1.00 27.54 C +ATOM 52 NE ARG A 8 21.268 -2.836 7.266 1.00 31.59 N +ATOM 53 CZ ARG A 8 22.086 -3.405 6.370 1.00 33.27 C +ATOM 54 NH1 ARG A 8 21.705 -3.612 5.110 1.00 30.56 N +ATOM 55 NH2 ARG A 8 23.305 -3.752 6.745 1.00 37.60 N +ATOM 56 N ASN A 9 16.934 -4.978 11.379 1.00 24.16 N +ATOM 57 CA ASN A 9 16.831 -5.403 12.758 1.00 24.72 C +ATOM 58 C ASN A 9 15.332 -5.386 13.068 1.00 24.90 C +ATOM 59 O ASN A 9 14.537 -4.802 12.307 1.00 23.58 O +ATOM 60 CB ASN A 9 17.621 -4.439 13.665 1.00 25.74 C +ATOM 61 CG ASN A 9 19.129 -4.495 13.405 1.00 27.91 C +ATOM 62 OD1 ASN A 9 19.788 -5.470 13.749 1.00 31.23 O +ATOM 63 ND2 ASN A 9 19.673 -3.455 12.771 1.00 29.96 N +ATOM 64 N SER A 10 14.915 -6.058 14.128 1.00 24.54 N +ATOM 65 CA SER A 10 13.534 -5.884 14.550 1.00 24.95 C +ATOM 66 C SER A 10 13.452 -4.622 15.414 1.00 24.44 C +ATOM 67 O SER A 10 14.461 -4.191 15.999 1.00 24.32 O +ATOM 68 CB SER A 10 13.006 -7.130 15.266 1.00 25.87 C +ATOM 69 OG SER A 10 13.668 -7.355 16.498 1.00 28.76 O +ATOM 70 N CYS A 11 12.275 -4.001 15.481 1.00 23.98 N +ATOM 71 CA CYS A 11 12.133 -2.832 16.349 1.00 24.19 C +ATOM 72 C CYS A 11 10.802 -2.892 17.098 1.00 24.36 C +ATOM 73 O CYS A 11 9.882 -3.615 16.696 1.00 25.50 O +ATOM 74 CB CYS A 11 12.204 -1.561 15.494 1.00 24.84 C +ATOM 75 SG CYS A 11 10.772 -1.380 14.392 1.00 24.93 S +ATOM 76 N SER A 12 10.694 -2.133 18.180 1.00 23.94 N +ATOM 77 CA SER A 12 9.465 -2.070 18.928 1.00 23.32 C +ATOM 78 C SER A 12 8.516 -1.175 18.146 1.00 22.71 C +ATOM 79 O SER A 12 8.934 -0.391 17.295 1.00 22.56 O +ATOM 80 CB SER A 12 9.715 -1.485 20.337 1.00 22.85 C +ATOM 81 OG SER A 12 10.019 -0.090 20.273 1.00 20.95 O +ATOM 82 N PHE A 13 7.237 -1.255 18.483 1.00 22.23 N +ATOM 83 CA PHE A 13 6.284 -0.393 17.843 1.00 22.99 C +ATOM 84 C PHE A 13 6.544 1.079 18.147 1.00 23.33 C +ATOM 85 O PHE A 13 6.400 1.934 17.245 1.00 23.58 O +ATOM 86 CB PHE A 13 4.847 -0.807 18.178 1.00 22.86 C +ATOM 87 CG PHE A 13 3.806 0.006 17.472 1.00 22.36 C +ATOM 88 CD1 PHE A 13 3.397 -0.326 16.160 1.00 24.58 C +ATOM 89 CD2 PHE A 13 3.196 1.079 18.116 1.00 25.52 C +ATOM 90 CE1 PHE A 13 2.424 0.450 15.512 1.00 23.56 C +ATOM 91 CE2 PHE A 13 2.192 1.848 17.476 1.00 28.44 C +ATOM 92 CZ PHE A 13 1.812 1.525 16.178 1.00 24.75 C +ATOM 93 N SER A 14 6.971 1.392 19.374 1.00 22.92 N +ATOM 94 CA SER A 14 7.245 2.792 19.704 1.00 23.78 C +ATOM 95 C SER A 14 8.443 3.335 18.912 1.00 22.99 C +ATOM 96 O SER A 14 8.457 4.527 18.605 1.00 22.38 O +ATOM 97 CB SER A 14 7.411 3.028 21.215 1.00 23.86 C +ATOM 98 OG SER A 14 8.373 2.104 21.713 1.00 28.91 O +ATOM 99 N THR A 15 9.406 2.477 18.570 1.00 21.61 N +ATOM 100 CA THR A 15 10.529 2.849 17.692 1.00 22.47 C +ATOM 101 C THR A 15 10.076 3.147 16.251 1.00 22.47 C +ATOM 102 O THR A 15 10.513 4.137 15.646 1.00 22.91 O +ATOM 103 CB THR A 15 11.632 1.745 17.679 1.00 21.94 C +ATOM 104 OG1 THR A 15 12.143 1.591 18.998 1.00 24.54 O +ATOM 105 CG2 THR A 15 12.820 2.125 16.775 1.00 20.96 C +ATOM 106 N LEU A 16 9.218 2.285 15.713 1.00 22.64 N +ATOM 107 CA LEU A 16 8.601 2.542 14.397 1.00 23.38 C +ATOM 108 C LEU A 16 7.950 3.914 14.418 1.00 23.19 C +ATOM 109 O LEU A 16 8.165 4.710 13.542 1.00 23.55 O +ATOM 110 CB LEU A 16 7.531 1.528 14.118 1.00 22.93 C +ATOM 111 CG LEU A 16 6.915 1.613 12.703 1.00 24.17 C +ATOM 112 CD1 LEU A 16 7.939 1.311 11.620 1.00 25.00 C +ATOM 113 CD2 LEU A 16 5.688 0.682 12.645 1.00 25.66 C +ATOM 114 N ARG A 17 7.088 4.125 15.397 1.00 23.18 N +ATOM 115 CA ARG A 17 6.389 5.400 15.571 1.00 25.38 C +ATOM 116 C ARG A 17 7.319 6.614 15.658 1.00 25.75 C +ATOM 117 O ARG A 17 6.969 7.708 15.206 1.00 25.40 O +ATOM 118 CB ARG A 17 5.513 5.322 16.830 1.00 25.81 C +ATOM 119 CG ARG A 17 4.320 4.414 16.656 1.00 30.48 C +ATOM 120 CD ARG A 17 3.165 5.210 16.114 1.00 37.86 C +ATOM 121 NE ARG A 17 2.728 6.262 17.020 1.00 40.36 N +ATOM 122 CZ ARG A 17 2.363 7.487 16.640 1.00 42.12 C +ATOM 123 NH1 ARG A 17 2.421 7.837 15.364 1.00 42.72 N +ATOM 124 NH2 ARG A 17 1.965 8.378 17.540 1.00 42.89 N +ATOM 125 N ALA A 18 8.497 6.441 16.251 1.00 25.66 N +ATOM 126 CA ALA A 18 9.446 7.567 16.391 1.00 25.85 C +ATOM 127 C ALA A 18 10.033 7.969 15.047 1.00 25.48 C +ATOM 128 O ALA A 18 10.581 9.040 14.912 1.00 25.40 O +ATOM 129 CB ALA A 18 10.576 7.236 17.375 1.00 25.73 C +ATOM 130 N TYR A 19 9.908 7.101 14.051 1.00 26.27 N +ATOM 131 CA TYR A 19 10.420 7.402 12.731 1.00 27.14 C +ATOM 132 C TYR A 19 9.383 8.090 11.855 1.00 27.61 C +ATOM 133 O TYR A 19 9.667 8.392 10.684 1.00 29.08 O +ATOM 134 CB TYR A 19 10.983 6.136 12.065 1.00 26.44 C +ATOM 135 CG TYR A 19 12.382 5.763 12.527 1.00 25.09 C +ATOM 136 CD1 TYR A 19 12.592 4.678 13.365 1.00 24.77 C +ATOM 137 CD2 TYR A 19 13.506 6.459 12.056 1.00 25.15 C +ATOM 138 CE1 TYR A 19 13.869 4.326 13.772 1.00 26.48 C +ATOM 139 CE2 TYR A 19 14.778 6.114 12.449 1.00 24.51 C +ATOM 140 CZ TYR A 19 14.955 5.041 13.313 1.00 25.85 C +ATOM 141 OH TYR A 19 16.218 4.687 13.681 1.00 27.58 O +ATOM 142 N CYS A 20 8.190 8.332 12.416 1.00 27.45 N +ATOM 143 CA CYS A 20 7.149 9.149 11.760 1.00 28.63 C +ATOM 144 C CYS A 20 7.579 10.594 11.704 1.00 29.12 C +ATOM 145 O CYS A 20 8.437 11.027 12.486 1.00 29.95 O +ATOM 146 CB CYS A 20 5.808 9.082 12.512 1.00 27.21 C +ATOM 147 SG CYS A 20 5.054 7.400 12.643 1.00 27.12 S +ATOM 148 N ASP A 21 6.957 11.355 10.809 1.00 29.71 N +ATOM 149 CA ASP A 21 7.069 12.816 10.878 1.00 31.80 C +ATOM 150 C ASP A 21 6.156 13.379 11.967 1.00 32.16 C +ATOM 151 O ASP A 21 5.066 12.863 12.223 1.00 32.73 O +ATOM 152 CB ASP A 21 6.743 13.456 9.532 1.00 31.84 C +ATOM 153 CG ASP A 21 7.737 13.075 8.451 1.00 34.01 C +ATOM 154 OD1 ASP A 21 8.776 12.448 8.773 1.00 37.23 O +ATOM 155 OD2 ASP A 21 7.485 13.399 7.276 1.00 36.47 O +ATOM 156 N SER A 22 6.636 14.421 12.624 1.00 32.79 N +ATOM 157 CA SER A 22 5.831 15.204 13.544 1.00 33.86 C +ATOM 158 C SER A 22 6.297 16.650 13.500 1.00 33.85 C +ATOM 159 O SER A 22 5.699 17.505 12.842 1.00 34.42 O +ATOM 160 CB SER A 22 5.960 14.654 14.965 1.00 33.89 C +ATOM 161 OG SER A 22 7.297 14.662 15.416 1.00 34.18 O diff --git a/ctest/dock/2WFU_B.pdb b/ctest/dock/2WFU_B.pdb new file mode 100644 index 0000000..83df2b5 --- /dev/null +++ b/ctest/dock/2WFU_B.pdb @@ -0,0 +1,173 @@ +ATOM 163 N ASN B 1 7.777 -9.125 21.533 1.00 33.02 N +ATOM 164 CA ASN B 1 7.394 -7.701 21.494 1.00 32.93 C +ATOM 165 C ASN B 1 8.165 -6.972 20.418 1.00 32.33 C +ATOM 166 O ASN B 1 8.826 -5.961 20.667 1.00 32.66 O +ATOM 167 CB ASN B 1 7.627 -6.995 22.843 1.00 34.21 C +ATOM 168 CG ASN B 1 6.898 -5.663 22.919 1.00 35.43 C +ATOM 169 OD1 ASN B 1 6.894 -4.997 23.955 1.00 39.65 O +ATOM 170 ND2 ASN B 1 6.249 -5.277 21.811 1.00 34.80 N +ATOM 171 N SER B 2 8.077 -7.464 19.197 1.00 31.35 N +ATOM 172 CA SER B 2 8.918 -6.884 18.179 1.00 30.61 C +ATOM 173 C SER B 2 8.236 -6.894 16.849 1.00 28.89 C +ATOM 174 O SER B 2 7.254 -7.611 16.627 1.00 29.38 O +ATOM 175 CB SER B 2 10.252 -7.634 18.097 1.00 30.61 C +ATOM 176 OG SER B 2 10.103 -8.762 17.271 1.00 33.42 O +ATOM 177 N LEU B 3 8.738 -6.068 15.952 1.00 26.72 N +ATOM 178 CA LEU B 3 8.265 -6.161 14.580 1.00 25.18 C +ATOM 179 C LEU B 3 9.430 -6.045 13.615 1.00 24.27 C +ATOM 180 O LEU B 3 10.429 -5.380 13.873 1.00 24.05 O +ATOM 181 CB LEU B 3 7.174 -5.139 14.284 1.00 25.73 C +ATOM 182 CG LEU B 3 7.627 -3.682 14.188 1.00 23.35 C +ATOM 183 CD1 LEU B 3 7.962 -3.282 12.724 1.00 27.40 C +ATOM 184 CD2 LEU B 3 6.522 -2.803 14.735 1.00 26.91 C +ATOM 185 N ARG B 4 9.286 -6.694 12.477 1.00 23.24 N +ATOM 186 CA ARG B 4 10.292 -6.606 11.476 1.00 23.81 C +ATOM 187 C ARG B 4 9.587 -6.562 10.140 1.00 23.82 C +ATOM 188 O ARG B 4 8.791 -7.452 9.836 1.00 23.19 O +ATOM 189 CB ARG B 4 11.181 -7.837 11.555 1.00 23.89 C +ATOM 190 CG ARG B 4 12.356 -7.683 10.679 1.00 29.24 C +ATOM 191 CD ARG B 4 13.449 -8.499 11.250 1.00 33.23 C +ATOM 192 NE ARG B 4 14.623 -8.240 10.478 1.00 33.66 N +ATOM 193 CZ ARG B 4 15.799 -8.768 10.720 1.00 33.11 C +ATOM 194 NH1 ARG B 4 15.939 -9.618 11.724 1.00 36.61 N +ATOM 195 NH2 ARG B 4 16.807 -8.472 9.917 1.00 30.33 N +ATOM 196 N ALA B 5 9.851 -5.514 9.370 1.00 22.74 N +ATOM 197 CA ALA B 5 9.252 -5.359 8.056 1.00 24.42 C +ATOM 198 C ALA B 5 10.204 -4.684 7.073 1.00 25.45 C +ATOM 199 O ALA B 5 10.924 -3.742 7.441 1.00 23.37 O +ATOM 200 CB ALA B 5 7.949 -4.606 8.162 1.00 25.02 C +ATOM 201 N CYS B 6 10.214 -5.193 5.834 1.00 25.89 N +ATOM 202 CA CYS B 6 11.090 -4.713 4.783 1.00 27.91 C +ATOM 203 C CYS B 6 10.248 -4.437 3.532 1.00 29.07 C +ATOM 204 O CYS B 6 9.114 -4.955 3.389 1.00 30.54 O +ATOM 205 CB CYS B 6 12.216 -5.728 4.469 1.00 27.14 C +ATOM 206 SG CYS B 6 13.453 -6.025 5.744 1.00 29.35 S +ATOM 207 N GLY B 7 10.766 -3.581 2.658 1.00 30.07 N +ATOM 208 CA GLY B 7 10.084 -3.274 1.405 1.00 29.90 C +ATOM 209 C GLY B 7 8.703 -2.668 1.624 1.00 29.69 C +ATOM 210 O GLY B 7 8.519 -1.915 2.585 1.00 29.52 O +ATOM 211 N PRO B 8 7.738 -2.980 0.729 1.00 28.92 N +ATOM 212 CA PRO B 8 6.397 -2.394 0.712 1.00 27.64 C +ATOM 213 C PRO B 8 5.624 -2.549 2.038 1.00 26.51 C +ATOM 214 O PRO B 8 4.876 -1.659 2.404 1.00 25.63 O +ATOM 215 CB PRO B 8 5.691 -3.188 -0.374 1.00 29.36 C +ATOM 216 CG PRO B 8 6.778 -3.579 -1.307 1.00 29.26 C +ATOM 217 CD PRO B 8 7.936 -3.911 -0.410 1.00 30.42 C +ATOM 218 N ALA B 9 5.801 -3.678 2.718 1.00 24.26 N +ATOM 219 CA ALA B 9 5.135 -3.901 4.015 1.00 23.27 C +ATOM 220 C ALA B 9 5.565 -2.853 5.028 1.00 21.89 C +ATOM 221 O ALA B 9 4.763 -2.404 5.844 1.00 21.62 O +ATOM 222 CB ALA B 9 5.473 -5.300 4.543 1.00 22.17 C +ATOM 223 N LEU B 10 6.837 -2.471 4.983 1.00 22.23 N +ATOM 224 CA LEU B 10 7.341 -1.520 5.957 1.00 22.40 C +ATOM 225 C LEU B 10 6.732 -0.170 5.629 1.00 23.35 C +ATOM 226 O LEU B 10 6.280 0.544 6.509 1.00 22.50 O +ATOM 227 CB LEU B 10 8.867 -1.482 5.967 1.00 21.92 C +ATOM 228 CG LEU B 10 9.447 -0.374 6.867 1.00 21.79 C +ATOM 229 CD1 LEU B 10 9.135 -0.654 8.337 1.00 22.63 C +ATOM 230 CD2 LEU B 10 10.956 -0.255 6.666 1.00 21.99 C +ATOM 231 N MET B 11 6.670 0.154 4.347 1.00 23.15 N +ATOM 232 CA MET B 11 6.064 1.417 3.971 1.00 24.74 C +ATOM 233 C MET B 11 4.566 1.418 4.323 1.00 23.95 C +ATOM 234 O MET B 11 4.071 2.422 4.814 1.00 22.80 O +ATOM 235 CB MET B 11 6.348 1.756 2.496 1.00 25.08 C +ATOM 236 CG MET B 11 7.871 1.889 2.178 1.00 30.95 C +ATOM 237 SD MET B 11 8.800 3.187 3.075 1.00 42.86 S +ATOM 238 CE MET B 11 9.806 2.229 4.203 1.00 36.96 C +ATOM 239 N ASP B 12 3.873 0.280 4.155 1.00 23.76 N +ATOM 240 CA ASP B 12 2.424 0.208 4.497 1.00 23.79 C +ATOM 241 C ASP B 12 2.182 0.380 6.015 1.00 24.03 C +ATOM 242 O ASP B 12 1.204 1.034 6.459 1.00 24.81 O +ATOM 243 CB ASP B 12 1.833 -1.150 4.100 1.00 23.87 C +ATOM 244 CG ASP B 12 1.706 -1.360 2.574 1.00 27.76 C +ATOM 245 OD1 ASP B 12 1.520 -0.421 1.801 1.00 28.65 O +ATOM 246 OD2 ASP B 12 1.771 -2.522 2.159 1.00 30.65 O +ATOM 247 N MET B 13 3.088 -0.194 6.800 0.50 22.32 N +ATOM 248 CA MET B 13 3.030 -0.068 8.253 0.50 22.27 C +ATOM 249 C MET B 13 3.290 1.367 8.715 1.00 23.91 C +ATOM 250 O MET B 13 2.554 1.890 9.547 1.00 24.64 O +ATOM 251 CB MET B 13 3.982 -1.066 8.911 0.50 22.09 C +ATOM 252 CG MET B 13 3.381 -2.492 8.962 0.50 23.66 C +ATOM 253 SD MET B 13 1.782 -2.604 9.828 0.50 34.49 S +ATOM 254 CE MET B 13 1.906 -1.416 11.168 0.50 27.34 C +ATOM 255 N LEU B 14 4.299 2.021 8.142 1.00 24.10 N +ATOM 256 CA LEU B 14 4.531 3.441 8.452 1.00 25.59 C +ATOM 257 C LEU B 14 3.335 4.292 8.062 1.00 25.96 C +ATOM 258 O LEU B 14 2.984 5.235 8.759 1.00 26.04 O +ATOM 259 CB LEU B 14 5.752 3.959 7.713 1.00 25.58 C +ATOM 260 CG LEU B 14 7.108 3.706 8.366 1.00 26.83 C +ATOM 261 CD1 LEU B 14 8.211 3.994 7.344 1.00 27.29 C +ATOM 262 CD2 LEU B 14 7.281 4.557 9.636 1.00 27.12 C +ATOM 263 N ARG B 15 2.708 3.961 6.942 1.00 26.18 N +ATOM 264 CA ARG B 15 1.557 4.706 6.490 1.00 26.93 C +ATOM 265 C ARG B 15 0.434 4.695 7.543 1.00 26.95 C +ATOM 266 O ARG B 15 -0.108 5.745 7.860 1.00 27.66 O +ATOM 267 CB ARG B 15 1.084 4.207 5.119 1.00 27.18 C +ATOM 268 CG ARG B 15 -0.082 4.997 4.551 1.00 30.65 C +ATOM 269 CD ARG B 15 -0.087 4.946 3.031 1.00 34.85 C +ATOM 270 NE ARG B 15 -0.395 3.614 2.535 1.00 36.65 N +ATOM 271 CZ ARG B 15 -0.360 3.252 1.250 1.00 38.61 C +ATOM 272 NH1 ARG B 15 -0.011 4.112 0.301 1.00 38.36 N +ATOM 273 NH2 ARG B 15 -0.663 2.010 0.918 1.00 39.33 N +ATOM 274 N VAL B 16 0.098 3.534 8.097 1.00 25.17 N +ATOM 275 CA VAL B 16 -0.976 3.478 9.087 1.00 25.70 C +ATOM 276 C VAL B 16 -0.523 3.865 10.514 1.00 25.06 C +ATOM 277 O VAL B 16 -1.345 4.291 11.316 1.00 25.34 O +ATOM 278 CB VAL B 16 -1.707 2.097 9.086 1.00 25.20 C +ATOM 279 CG1 VAL B 16 -2.364 1.882 7.739 1.00 24.24 C +ATOM 280 CG2 VAL B 16 -0.765 0.931 9.457 1.00 26.54 C +ATOM 281 N ALA B 17 0.757 3.651 10.846 1.00 25.74 N +ATOM 282 CA ALA B 17 1.270 4.027 12.181 1.00 26.71 C +ATOM 283 C ALA B 17 1.463 5.546 12.314 1.00 27.40 C +ATOM 284 O ALA B 17 1.537 6.073 13.439 1.00 26.17 O +ATOM 285 CB ALA B 17 2.582 3.342 12.477 1.00 26.10 C +ATOM 286 N CYS B 18 1.604 6.241 11.182 1.00 27.75 N +ATOM 287 CA CYS B 18 2.018 7.653 11.246 1.00 30.16 C +ATOM 288 C CYS B 18 0.874 8.545 10.800 1.00 32.63 C +ATOM 289 O CYS B 18 0.453 8.457 9.663 1.00 33.66 O +ATOM 290 CB CYS B 18 3.251 7.928 10.375 1.00 29.69 C +ATOM 291 SG CYS B 18 4.706 6.903 10.750 1.00 27.57 S +ATOM 292 N PRO B 19 0.384 9.417 11.692 1.00 35.61 N +ATOM 293 CA PRO B 19 -0.756 10.280 11.313 1.00 36.79 C +ATOM 294 C PRO B 19 -0.335 11.358 10.311 1.00 38.57 C +ATOM 295 O PRO B 19 -1.008 11.547 9.284 1.00 38.86 O +ATOM 296 CB PRO B 19 -1.209 10.893 12.643 1.00 37.04 C +ATOM 297 CG PRO B 19 -0.356 10.252 13.725 1.00 36.65 C +ATOM 298 CD PRO B 19 0.863 9.687 13.059 1.00 35.75 C +ATOM 299 N ASN B 20 0.773 12.040 10.608 1.00 40.17 N +ATOM 300 CA ASN B 20 1.302 13.135 9.777 1.00 41.84 C +ATOM 301 C ASN B 20 2.319 12.659 8.727 1.00 42.49 C +ATOM 302 O ASN B 20 2.981 13.474 8.075 1.00 43.37 O +ATOM 303 CB ASN B 20 1.953 14.224 10.653 1.00 41.95 C +ATOM 304 CG ASN B 20 1.022 14.760 11.730 1.00 42.67 C +ATOM 305 OD1 ASN B 20 -0.061 15.279 11.439 1.00 43.67 O +ATOM 306 ND2 ASN B 20 1.448 14.641 12.986 1.00 44.42 N +ATOM 307 N GLY B 21 2.448 11.345 8.579 1.00 43.01 N +ATOM 308 CA GLY B 21 3.307 10.759 7.547 1.00 43.59 C +ATOM 309 C GLY B 21 4.765 10.573 7.935 1.00 43.93 C +ATOM 310 O GLY B 21 5.116 10.609 9.110 1.00 43.44 O +ATOM 311 N PHE B 22 5.605 10.381 6.920 1.00 44.41 N +ATOM 312 CA PHE B 22 7.020 10.035 7.072 1.00 45.10 C +ATOM 313 C PHE B 22 7.719 10.326 5.744 1.00 45.44 C +ATOM 314 O PHE B 22 7.081 10.277 4.695 1.00 45.70 O +ATOM 315 CB PHE B 22 7.167 8.548 7.432 1.00 44.91 C +ATOM 316 CG PHE B 22 6.626 7.609 6.377 1.00 45.86 C +ATOM 317 CD1 PHE B 22 5.262 7.313 6.316 1.00 45.83 C +ATOM 318 CD2 PHE B 22 7.485 7.020 5.447 1.00 45.83 C +ATOM 319 CE1 PHE B 22 4.765 6.449 5.343 1.00 46.40 C +ATOM 320 CE2 PHE B 22 6.996 6.157 4.469 1.00 46.08 C +ATOM 321 CZ PHE B 22 5.636 5.867 4.415 1.00 45.74 C +ATOM 322 N ASN B 23 9.019 10.613 5.767 1.00 46.04 N +ATOM 323 CA ASN B 23 9.707 11.001 4.522 1.00 46.82 C +ATOM 324 C ASN B 23 11.159 10.546 4.310 1.00 47.22 C +ATOM 325 O ASN B 23 11.711 10.741 3.221 1.00 47.50 O +ATOM 326 CB ASN B 23 9.582 12.511 4.281 1.00 46.85 C +ATOM 327 CG ASN B 23 8.570 12.851 3.193 1.00 47.41 C +ATOM 328 OD1 ASN B 23 7.402 12.460 3.263 1.00 47.41 O +ATOM 329 ND2 ASN B 23 9.016 13.596 2.185 1.00 48.44 N +ATOM 330 N SER B 24 11.769 9.963 5.341 1.00 47.58 N +ATOM 331 CA SER B 24 13.164 9.502 5.297 1.00 47.77 C +ATOM 332 C SER B 24 14.119 10.465 4.589 1.00 47.92 C +ATOM 333 O SER B 24 14.379 11.569 5.069 1.00 48.09 O +ATOM 334 CB SER B 24 13.253 8.110 4.659 1.00 47.93 C +ATOM 335 OG SER B 24 12.414 7.184 5.333 1.00 48.18 O diff --git a/ctest/dock/2WFU_dock.inp b/ctest/dock/2WFU_dock.inp new file mode 100644 index 0000000..9f01a03 --- /dev/null +++ b/ctest/dock/2WFU_dock.inp @@ -0,0 +1,28 @@ +2wfu UNRES-Dock test +SEED=-77763650 pdbstart re one_letter BOXX=78.90 & +BOXY=78.90 BOXZ=78.90 CONSTR_HOMOL=8 pdbref + reset_vel=1000 nstep=200000 ntwe=1000 ntwx=1000 dt=0.2 lang=1 & +scal_fric=0.02 preminim cart +print_min_ini print_min_res print_min_stat maxfun=15000 +nrep=8 nstex=1000 tlist mlist sync nsyn=1000 traj1file rest1file & +TRAJCACHE=200 +270 280 290 300 310 320 330 345 +1 1 1 1 1 1 1 1 +WSC=1.00000 WSCP=1.23315 WELEC=0.84476 WBOND=1.00000 WANG=0.62954 & +WSCLOC=0.10554 WTOR=1.34316 WTORD=1.26571 WCORRH=0.19212 WCORR5=0.00000 & +WCORR6=0.00000 WEL_LOC=0.37357 WTURN3=1.40323 WTURN4=0.64673 WTURN6=0.00000 & +WVDWPP=0.23173 WHPB=1.00000 WSCCOR=0.25 & +CUTOFF=7.00000 WCORR4=0.00000 +plik1ter.pdb +0 +0 +HOMOL_DIST=0.1 HOMOL_ANGLE=1.0 HOMOL_THETA=1.0 HOMOL_SCD=1.0 DIST_CUT=15.0 & +READ2SIGMA START_FROM_MODELS +model01.pdb +model02.pdb +model03.pdb +model04.pdb +model05.pdb +model06.pdb +model07.pdb +model08.pdb diff --git a/ctest/dock/cluster.inp b/ctest/dock/cluster.inp new file mode 100644 index 0000000..4434d1e --- /dev/null +++ b/ctest/dock/cluster.inp @@ -0,0 +1,21 @@ +2wfu UNRES-Dock +nres=49 one_letter rescale=2 PRINT_CART PDBOUT=1 iopt=1 temper=280.0 & + CONSTR_HOMOL=8 & +BOXX=78.90 BOXY=78.90 BOXZ=78.90 +WSC=1.00000 WSCP=1.23315 WELEC=0.84476 WBOND=1.00000 WANG=0.62954 & +WSCLOC=0.10554 WTOR=1.34316 WTORD=1.26571 WCORRH=0.19212 WCORR5=0.00000 & +WCORR6=0.00000 WEL_LOC=0.37357 WTURN3=1.40323 WTURN4=0.64673 WTURN6=0.00000 & +WVDWPP=0.23173 WHPB=1.00000 WSCCOR=0.25 & +CUTOFF=7.00000 WCORR4=0.00000 +GVVDSCCRNSCSFSTLRAYCDSXXNSLRACGPALMDMLRVACPNGFNSX +0 +HOMOL_DIST=0.1 HOMOL_ANGLE=1.0 HOMOL_THETA=1.0 HOMOL_SCD=1.0 DIST_CUT=15.0 & +READ2SIGMA +model01.pdb +model02.pdb +model03.pdb +model04.pdb +model05.pdb +model06.pdb +model07.pdb +model08.pdb diff --git a/ctest/dock/cluster_wham_check.sh b/ctest/dock/cluster_wham_check.sh new file mode 100755 index 0000000..4865997 --- /dev/null +++ b/ctest/dock/cluster_wham_check.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [ "$1" == "cluster" ]; then + file=wham_T280K_ave.pdb +else + exit 1 +fi + +# Check if file exist +if [ ! -f $file ]; then + echo "CRITICAL: out $file does not exist" + exit 2 +fi + +fam=`grep THERE clust_clust.out_000|awk '{print $3}'` +grep THERE clust_clust.out_000 +grep REMARK wham*[1-9].pdb + + if [ "$fam" != "5" ]; then + echo 'ERROR: number of families not equal 5' + exit 1 + fi + diff --git a/ctest/dock/mremd_check.sh b/ctest/dock/mremd_check.sh new file mode 100755 index 0000000..c72de4f --- /dev/null +++ b/ctest/dock/mremd_check.sh @@ -0,0 +1,19 @@ +#!/bin/bash + + rm -rf remd_all.stat + tail -q -n +200 2WFU_dock*.stat >remd_all.stat + if [ ! -s remd_all.stat ]; then + echo 'FATAL error - stat files empty' + exit 2 + fi + + grep ACC 2WFU_dock.out_GB000 |tail -7 + exchange=`grep ACC 2WFU_dock.out_GB000 |tail -7|awk '{a=a+$4}END{print a/NR}'` + echo "average exchange = ${exchange}" + if [ `echo "a=${exchange};a<0.2"|bc -l` != "0" ]; then + echo 'ERROR average exchange smaller than 0.2' + exit 1 + else + exit 0 + fi + diff --git a/ctest/dock/test_mpi_DOCK.sh b/ctest/dock/test_mpi_DOCK.sh new file mode 100755 index 0000000..58788b2 --- /dev/null +++ b/ctest/dock/test_mpi_DOCK.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +../../bin/generator $1 $2 0 8 -991234 +cat 2WFU_A.pdb > plik1ter.pdb +echo TER >> plik1ter.pdb +cat 2WFU_B.pdb >> plik1ter.pdb + +pdb=`ls model??.pdb |wc -w` +sco=`ls template??.sco |wc -w` + +if [ "$pdb" = "8" ] && [ "$sco" = "8" ]; then + echo "8 starting models generated" +else + exit 1 +fi + + \ No newline at end of file diff --git a/ctest/dock/wham.inp b/ctest/dock/wham.inp new file mode 100644 index 0000000..1b83d17 --- /dev/null +++ b/ctest/dock/wham.inp @@ -0,0 +1,44 @@ + isampl=1 & +SEED=-77763650 einicheck=1 rescale=2 delta=0.02 cxfile classify & + n_ene=19 CONSTR_HOMOL=8 & +BOXX=78.90 BOXY=78.90 BOXZ=78.90 +nres=49 one_letter +GVVDSCCRNSCSFSTLRAYCDSXXNSLRACGPALMDMLRVACPNGFNSX +0 +HOMOL_DIST=0.1 HOMOL_ANGLE=1.0 HOMOL_THETA=1.0 HOMOL_SCD=1.0 DIST_CUT=15.0 & +READ2SIGMA +model01.pdb +model02.pdb +model03.pdb +model04.pdb +model05.pdb +model06.pdb +model07.pdb +model08.pdb +WSC=1.00000 WSCP=1.23315 WELEC=0.84476 WBOND=1.00000 WANG=0.62954 & +WSCLOC=0.10554 WTOR=1.34316 WTORD=1.26571 WCORRH=0.19212 WCORR5=0.00000 & +WCORR6=0.00000 WEL_LOC=0.37357 WTURN3=1.40323 WTURN4=0.64673 WTURN6=0.00000 & +WVDWPP=0.23173 WHPB=1.00000 WSCCOR=0.25 & +CUTOFF=7.00000 WCORR4=0.00000 + +nt=8 replica read_iset +nr=1 temp=270 fi=0.0 0.0 0.0 0.0 0.0 +kh= 0.0 Q0=0.0 +nr=1 temp=280 fi=0.0 0.0 0.0 0.0 0.0 +kh= 0.0 Q0=0.0 +nr=1 temp=290 fi=0.0 0.0 0.0 0.0 0.0 +kh= 0.0 Q0=0.0 +nr=1 temp=300 fi=0.0 0.0 0.0 0.0 0.0 +kh= 0.0 Q0=0.0 +nr=1 temp=310 fi=0.0 0.0 0.0 0.0 0.0 +kh= 0.0 Q0=0.0 +nr=1 temp=320 fi=0.0 0.0 0.0 0.0 0.0 +kh= 0.0 Q0=0.0 +nr=1 temp=330 fi=0.0 0.0 0.0 0.0 0.0 +kh= 0.0 Q0=0.0 +nr=1 temp=345 fi=0.0 0.0 0.0 0.0 0.0 +kh= 0.0 Q0=0.0 +nfile_cx=1 rec_start=50 rec_end=500 totraj=8 +2WFU_dock_MD000 +pdbref +plik1ter.pdb diff --git a/ctest/dock/wham_check.sh b/ctest/dock/wham_check.sh new file mode 100755 index 0000000..1cb888c --- /dev/null +++ b/ctest/dock/wham_check.sh @@ -0,0 +1,41 @@ +#!/bin/bash + +if [ "$1" == "wham" ]; then + file=wham.thermal +else + exit 1 +fi + +# Check if file exist +if [ ! -f $file ]; then + echo "CRITICAL: out $file do not exist" + exit 2 +fi + +error=0 +max=`awk '{print $1,$7*1}' $file | sort -n -k 2 | awk 'END{print $1}'` +echo 'T of max Cv(T) ' $max +rms=`awk '{if ($1<280) {a=a+$5;n++}}END{print a/n}' $file` +echo 'average rms for T<280 ' $rms + + if [ `grep differs wham.out* |wc -l` != "0" ]; then + echo 'ERROR: energy differs remarkably from the value read in' + echo 'first 10 warnings' + grep differs wham.out*|head -10 + error=1 + fi + + if [ `echo "a=$max-293;if(0>a)a*=-1;a>10.0"|bc -l` != "0" ]; then + echo 'ERROR wrong T max of Cv(T) by more than 10 K' + error=1 + fi + + if [ `echo "a=$rms-9.3;if(0>a)a*=-1;a>0.2"|bc -l` != "0" ]; then + echo 'ERROR wrong average rms for T<280 by more than 0.2' + error=1 + fi + + if [ "$error" != "0" ];then + exit 1 + fi + \ No newline at end of file diff --git a/source/unres-dock/CMakeLists.txt b/source/unres-dock/CMakeLists.txt index f7a596f..0d09fca 100644 --- a/source/unres-dock/CMakeLists.txt +++ b/source/unres-dock/CMakeLists.txt @@ -1,7 +1,9 @@ # +enable_language (Fortran) + set(UNRES_DOCK - generator_v13b.F + generator.f ) @@ -23,3 +25,166 @@ set_property(TARGET UNRES_DOCK_BIN PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BIN #========================================= install(TARGETS UNRES_DOCK_BIN DESTINATION ${CMAKE_INSTALL_PREFIX}/unres-dock) +# Add tests + +# MESSAGE (STATUS "${MPI_Fortran_LIBRARIES}") + if ("${MPI_Fortran_LIBRARIES}" MATCHES "lam") + MESSAGE (STATUS "LAM MPI library detected") + set (boot_lam "-boot") + else() + set (boot_lam "") + endif() + + if (UNRES_SRUN) + set (np "-n") + set (mpiexec "srun") + elseif(UNRES_MPIRUN) + set (np "-np") + set (mpiexec "mpirun") + else() + set (np "-np") + set (mpiexec "mpiexec") + endif() + + + +FILE(COPY ${CMAKE_SOURCE_DIR}/ctest/dock/ + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} FILES_MATCHING PATTERN "*" ) + + +if(UNRES_WITH_MPI) + if(UNRES_MD_FF STREQUAL "E0LL2Y") + + set(UNRES_BIN "unresMD-mult_${Fortran_COMPILER_NAME}_MPI_${UNRES_MD_FF}.exe") + set(UNRES_WHAM_M_BIN "wham-mult_${Fortran_COMPILER_NAME}_MPI_${UNRES_MD_FF}.exe") + set(UNRES_CLUSTER_WHAM_M_BIN "cluster_wham-mult_${Fortran_COMPILER_NAME}_MPI_${UNRES_MD_FF}.exe") + +FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_mpi_E0LL2Y.sh +"#!/bin/sh +export POT=GB +export FGPROCS=$2 +export PREFIX=$1 +#----------------------------------------------------------------------------- +UNRES_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_BIN} +#----------------------------------------------------------------------------- +DD=${CMAKE_SOURCE_DIR}/PARAM +export BONDPAR=$DD/bond_AM1_ext_dum.parm +export THETPAR=$DD/theta_abinitio_old_ext.parm +export THETPARPDB=$DD/thetaml_ext.5parm +export ROTPARPDB=$DD/scgauss_ext.parm +export ROTPAR=$DD/rotamers_AM1_aura_ext.10022007.parm +export TORPAR=$DD/torsion_631Gdp_old_ext.parm +export TORDPAR=$DD/torsion_double_631Gdp_old_ext.parm +export ELEPAR=$DD/electr_631Gdp_ext.parm +export SIDEPAR=$DD//scinter_GB_ext_lip.parm +export FOURIER=$DD/fourier_opt_ext.parm.1igd_hc_iter3_3 +export SCCORPAR=$DD/sccor_am1_pawel_ext.dat +export SCPPAR=$DD/scp_ext.parm +export PATTERN=$DD/patterns.cart +export LIPTRANPAR=$DD/Lip_tran_initial_ext.parm +#----------------------------------------------------------------------------- +echo CTEST_FULL_OUTPUT +${mpiexec} ${boot_lam} ${np} $3 $UNRES_BIN | grep -v traj1file +./mremd_check.sh $1 +") + +# +# File permissions workaround +# +FILE( COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/test_mpi_E0LL2Y.sh + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +) + +FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/wham_mpi_E0LL2Y.sh +"#!/bin/sh +export POT=GB +export PREFIX=$1 +#----------------------------------------------------------------------------- +WHAM_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_WHAM_M_BIN} +#----------------------------------------------------------------------------- +DD=${CMAKE_SOURCE_DIR}/PARAM +export BONDPAR=$DD/bond_AM1_ext_dum.parm +export THETPAR=$DD/theta_abinitio_old_ext.parm +export ROTPAR=$DD/rotamers_AM1_aura_ext.10022007.parm +export TORPAR=$DD/torsion_631Gdp_old_ext.parm +export TORDPAR=$DD/torsion_double_631Gdp_old_ext.parm +export ELEPAR=$DD/electr_631Gdp_ext.parm +export SIDEPAR=$DD/scinter_GB_ext_lip.parm +export FOURIER=$DD/fourier_opt_ext.parm.1igd_hc_iter3_3 +export SCPPAR=$DD/scp_ext.parm +export SCCORPAR=$DD/sccor_am1_pawel_ext.dat +export THETPARPDB=$DD/thetaml_ext.5parm +export ROTPARPDB=$DD/scgauss_ext.parm +export PATTERN=$DD/patterns.cart +export LIPTRANPAR=$DD/Lip_tran_initial_ext.parm +export CONTFUNC=GB +export SIDEP=$DD/contact_ext.3.parm +export SCRATCHDIR=. +#----------------------------------------------------------------------------- +echo CTEST_FULL_OUTPUT +${mpiexec} ${boot_lam} ${np} $2 $WHAM_BIN +./wham_check.sh $1 +") + +# +# File permissions workaround +# +FILE( COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/wham_mpi_E0LL2Y.sh + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +) + +FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/scripts/cluster_wham_mpi_E0LL2Y.sh +"#!/bin/sh +export POT=GB +export INPUT=$1 +export INTIN=wham +export OUTPUT=clust +export PDB=CART +export COORD=CX +export PRINTCOOR=PRINT_PDB +#----------------------------------------------------------------------------- +CLUSTER_WHAM_BIN=${CMAKE_BINARY_DIR}/bin/${UNRES_CLUSTER_WHAM_M_BIN} +#----------------------------------------------------------------------------- +DD=${CMAKE_SOURCE_DIR}/PARAM +export BONDPAR=$DD/bond_AM1_ext_dum.parm +export THETPAR=$DD/theta_abinitio_old_ext.parm +export ROTPAR=$DD/rotamers_AM1_aura_ext.10022007.parm +export TORPAR=$DD/torsion_631Gdp_old_ext.parm +export TORDPAR=$DD/torsion_double_631Gdp_old_ext.parm +export ELEPAR=$DD/electr_631Gdp_ext.parm +export SIDEPAR=$DD/scinter_GB_ext_lip.parm +export FOURIER=$DD/fourier_opt_ext.parm.1igd_hc_iter3_3 +export SCPPAR=$DD/scp_ext.parm +export SCCORPAR=$DD/sccor_am1_pawel_ext.dat +export THETPARPDB=$DD/thetaml_ext.5parm +export ROTPARPDB=$DD/scgauss_ext.parm +export PATTERN=$DD/patterns.cart +export LIPTRANPAR=$DD/Lip_tran_initial_ext.parm +export CONTFUNC=GB +export SIDEP=$DD/contact_ext.3.parm +export SCRATCHDIR=. +#----------------------------------------------------------------------------- +echo CTEST_FULL_OUTPUT +${mpiexec} ${boot_lam} ${np} $2 $CLUSTER_WHAM_BIN +./cluster_wham_check.sh $1 +") + +# +# File permissions workaround +# +FILE( COPY ${CMAKE_CURRENT_BINARY_DIR}/scripts/cluster_wham_mpi_E0LL2Y.sh + DESTINATION ${CMAKE_CURRENT_BINARY_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +) + + + add_test(NAME UNRES_M_DOCK_generator COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_DOCK.sh 2WFU_A.pdb 2WFU_B.pdb ) + add_test(NAME UNRES_M_DOCK_mremd COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/test_mpi_E0LL2Y.sh 2WFU_dock 1 8 ) + add_test(NAME UNRES_M_DOCK_wham COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/wham_mpi_E0LL2Y.sh wham 2) + add_test(NAME UNRES_M_DOCK_cluster COMMAND sh ${CMAKE_CURRENT_BINARY_DIR}/cluster_wham_mpi_E0LL2Y.sh cluster 2 ) + + + endif(UNRES_MD_FF STREQUAL "E0LL2Y") +endif(UNRES_WITH_MPI) diff --git a/source/unres-dock/generator.f b/source/unres-dock/generator.f new file mode 100644 index 0000000..a8dd761 --- /dev/null +++ b/source/unres-dock/generator.f @@ -0,0 +1,948 @@ + program generator + implicit none + integer proba, conf, cm1, cm2, accept, nd + integer krok, i, n, j, g, ii1, ilosc, ijl + integer nnn, seed, proba1, proba2, proba3, proba0x,proba0y,proba0z + integer ilosc_atomow1, ilosc_atomow2, korekta1, korekta2 + integer ile_reszt_mol1, ile_reszt_mol2, ir, peptide,numerr2(90000) + integer numera1(90000),numerr1(90000),numera2(90000) + integer glys1, glys2, glye1, glye2, ilee + integer no_models, seed1, seed11, seed12, seed13 + real*8 rand, r, boxx, boxy, boxz, dist2acm, dist1acm, b(4), t(3) + real*8 minx1, miny1, minz1, maxx1, maxy1, maxz1 + real*8 minx2, miny2, minz2, maxx2, maxy2, maxz2 + real*8 distx1, disty1, distz1, distx2, disty2, distz2 + real*8 xcm1, ycm1, zcm1, xcm2, ycm2, zcm2 + real*8 dist1cm, dist1cmt, dist2cm, dist2cmt + real*8 cm2xr, cm2yr, cm2zr,x2r(90000),y2r(90000),z2r(90000),dist12 + real*8 angle, c, s, x2new, y2new, z2new + character*60 plik1, plik2, plik3, plik4, arg4, arg5 + character*54 linia + real*8 x1(90000),y1(90000),z1(90000),x2(90000),y2(90000),z2(90000) + real*8 dd, wymiar, cmxx(900), cmyy(900), cmzz(900),xt2(90000,3) + real*8 xf(90000,3) + character*1 chain + character*3 r1s, r2s, r1e, r2e + character*5 atoma1(90000), atoma2(90000) + character*6 nazwaa1(90000), nazwar1(90000) + character*6 nazwaa2(90000), nazwar2(90000) + + korekta1 = 1 + korekta2 = 1 + +c write(*,*)"Sposob uruchamiania:" +c write(*,*)"nazwa_programu nazwa_pliku_inp_pdb1 +c & nazwa_pliku_inp_pdb2 nazwa_pliku_out" +c write(*,*)"" + + nnn = iargc() + if (nnn.lt.5) then + write(*,*)"program input_pdb1 input_pdb2 + & [0-1] number_of_models seed_number + & 0 for protein, 1 for peptide" + stop + endif + + call getarg(1,plik1) + call getarg(2,plik2) + call getarg(3,plik3) + call getarg(4,arg4) + call getarg(5,arg5) + open(1,file=plik1,status="old") + open(2,file=plik2,status="old") + open(4,file='temp1') + open(5,file='temp2') + write(*,*) "All files read" + + read(plik3(1:1),'(i1)') peptide + read(arg4,'(i2)') no_models + read(arg5,'(i19)') seed1 + + if (peptide.ne.0.and.peptide.ne.1) then + write(*,*) "Third parameter must be 0 or 1, + & where 0 is for a protein-protein docking, + & and 1 is for protein-peptide docking." + STOP + endif + + write(*,*) "Option", peptide, "selected + & (0 for protein, 1 for peptide)" + + +c MOLEKULA 1 + do while (.true.) + read(1,'(a54)',end=22) linia + if (linia(1:4).eq.'ATOM'.and.linia(17:17).lt.'B') then + write(4,'(a54)') linia + endif + if (linia(1:3).eq.'TER') then +c write(2,'(a54)') linia + goto 22 + endif + enddo + +22 continue + close(4) + write(*,*) "Molecule 1 read" + + +c MOLEKULA 2 + do while (.true.) + read(2,'(a54)',end=23) linia + if (linia(1:4).eq.'ATOM'.and.linia(17:17).lt.'B') then + write(5,'(a54)') linia + endif + if (linia(1:3).eq.'TER') then +c write(2,'(a54)') linia + goto 23 + endif + enddo +23 continue + close(5) + write(*,*) "Molecule 2 read" + + open(4,file='temp1') + open(5,file='temp2') + + minx1=999.99 + miny1=999.99 + minz1=999.99 + + maxx1=-999.99 + maxy1=-999.99 + maxz1=-999.99 + + + minx2=999.99 + miny2=999.99 + minz2=999.99 + + maxx2=-999.99 + maxy2=-999.99 + maxz2=-999.99 + + + +c MOLEKULA 1 + i=1 + xcm1=0 + ycm1=0 + zcm1=0 + ile_reszt_mol1=0 + + do while (.true.) + read(4,800,end=111) + & atoma1(i),numera1(i),nazwaa1(i),nazwar1(i),chain,numerr1(i), + & x1(i),y1(i),z1(i) + + +c write(*,300) minx, maxx, miny, maxy, minz, maxz + + if (x1(i).lt.minx1) minx1=x1(i) + if (y1(i).lt.miny1) miny1=y1(i) + if (z1(i).lt.minz1) minz1=z1(i) + + if (x1(i).gt.maxx1) maxx1=x1(i) + if (y1(i).gt.maxy1) maxy1=y1(i) + if (z1(i).gt.maxz1) maxz1=z1(i) + +c write(*,300) minx, maxx, miny, maxy, minz, maxz + +c write(*,*) nazwaa1(i) + if (nazwaa1(i).eq.' CA ') then + xcm1 = xcm1 + x1(i) + ycm1 = ycm1 + y1(i) + zcm1 = zcm1 + z1(i) + ile_reszt_mol1 = ile_reszt_mol1 +1 + endif + + if (atoma1(i).eq.'TER ') goto 111 + if (atoma1(i).eq.'END ') goto 111 + if (i.eq.1) write(3,'(a6)') "REMARK" +c write(3,800) atoma1(i),numera1(i),nazwaa1(i),nazwar1(i), +c & numerr1(i),x1(i),y1(i),z1(i) + +c write(*,*) i, x(i),y(i),z(i) + + i=i+1 + enddo +111 continue + + distx1=maxx1-minx1 + disty1=maxy1-miny1 + distz1=maxz1-minz1 + ilosc_atomow1 = i-1 + xcm1 = xcm1 / (ile_reszt_mol1*1.0) + ycm1 = ycm1 / (ile_reszt_mol1*1.0) + zcm1 = zcm1 / (ile_reszt_mol1*1.0) + + do i=1,ilosc_atomow1 + x1(i)=x1(i)-xcm1 + y1(i)=y1(i)-ycm1 + z1(i)=z1(i)-zcm1 + enddo + + xcm1=0 + ycm1=0 + zcm1=0 + + do i=1,ilosc_atomow1 + if (nazwaa1(i).eq.' CA ') then + xcm1 = xcm1 + x1(i) + ycm1 = ycm1 + y1(i) + zcm1 = zcm1 + z1(i) + endif + enddo + xcm1 = xcm1 / (ile_reszt_mol1*1.0) + ycm1 = ycm1 / (ile_reszt_mol1*1.0) + zcm1 = zcm1 / (ile_reszt_mol1*1.0) + + dist1cm=999.9 + dist1acm=0.0 + do i=1,ilosc_atomow1 +c write(3,800) atoma1(i),numera1(i),nazwaa1(i),nazwar1(i), +c & numerr1(i),x1(i)-xcm1,y1(i)-ycm1,z1(i)-zcm1 + + dist1cmt = dsqrt(((xcm1-x1(i))**2)+ + & ((ycm1-y1(i))**2)+ + & ((zcm1-z1(i))**2)) + +c write(*,*) dist1cmt, dist1cm, i, cm1 + if (dist1cm.gt.dist1cmt) then + dist1cm=dist1cmt + cm1=i + endif + + enddo + + do i=1,ilosc_atomow1 + do j=i,ilosc_atomow1 + dist1cmt = dsqrt(((x1(j)-x1(i))**2)+ + & ((y1(j)-y1(i))**2)+ + & ((z1(j)-z1(i))**2)) + if (dist1acm.lt.dist1cmt) then + dist1acm=dist1cmt + endif + enddo + enddo + + +c write(3,303) "TER" +c write(3,304) "ENDMDL" + + write(*,*) "Molecule 1 calculated" + +c MOLEKULA 2 + i=1 + xcm2=0 + ycm2=0 + zcm2=0 + ile_reszt_mol2=0 + + do while (.true.) + read(5,800,end=112) + & atoma2(i),numera2(i),nazwaa2(i),nazwar2(i),chain,numerr2(i), + & x2(i),y2(i),z2(i) + +c write(*,300) minx, maxx, miny, maxy, minz, maxz + + if (x2(i).lt.minx2) minx2=x2(i) + if (y2(i).lt.miny2) miny2=y2(i) + if (z2(i).lt.minz2) minz2=z2(i) + + if (x2(i).gt.maxx2) maxx2=x2(i) + if (y2(i).gt.maxy2) maxy2=y2(i) + if (z2(i).gt.maxz2) maxz2=z2(i) + +c write(*,300) minx, maxx, miny, maxy, minz, maxz + +c write(*,*) nazwaa1(i) + if (nazwaa2(i).eq.' CA ') then + xcm2 = xcm2 + x2(i) + ycm2 = ycm2 + y2(i) + zcm2 = zcm2 + z2(i) + ile_reszt_mol2 = ile_reszt_mol2 + 1 + endif + + if (atoma2(i).eq.'TER ') goto 111 + if (atoma2(i).eq.'END ') goto 111 +c if (i.eq.1) write(3,'(a6)') "REMARK" +c write(3,800) atoma2(i),numera2(i),nazwaa2(i),nazwar2(i), +c & numerr2(i),x2(i),y2(i),z2(i) +c write(*,*) i, x(i),y(i),z(i) + + i=i+1 + enddo +112 continue + + distx2=maxx2-minx2 + disty2=maxy2-miny2 + distz2=maxz2-minz2 + ilosc_atomow2 = i-1 + + xcm2 = xcm2 / (ile_reszt_mol2*1.0) + ycm2 = ycm2 / (ile_reszt_mol2*1.0) + zcm2 = zcm2 / (ile_reszt_mol2*1.0) + + do i=1,ilosc_atomow2 + x2(i)=x2(i)-xcm2 + y2(i)=y2(i)-ycm2 + z2(i)=z2(i)-zcm2 +c write(*,*) x2(i),y2(i),z2(i) + xt2(i,1)=x2(i) + xt2(i,2)=y2(i) + xt2(i,3)=z2(i) +c write(*,*) xt2(i,1), xt2(i,2), xt2(i,3) + enddo + + xcm2=0 + ycm2=0 + zcm2=0 + do i=1,ilosc_atomow2 + if (nazwaa2(i).eq.' CA ') then + xcm2 = xcm2 + x2(i) + ycm2 = ycm2 + y2(i) + zcm2 = zcm2 + z2(i) + endif + enddo + xcm2 = xcm2 / (ile_reszt_mol2*1.0) + ycm2 = ycm2 / (ile_reszt_mol2*1.0) + zcm2 = zcm2 / (ile_reszt_mol2*1.0) + + + dist2cm=999.9 + dist2acm=0.0 + do i=1,ilosc_atomow2 +c write(3,800) atoma2(i),numera2(i),nazwaa2(i),nazwar2(i), +c & numerr2(i),x2(i)-xcm2,y2(i)-ycm2,z2(i)-zcm2 + + dist2cmt = dsqrt(((xcm2-x2(i))**2)+ + & ((ycm2-y2(i))**2)+ + & ((zcm2-z2(i))**2)) + +c write(*,*) dist2cmt, dist2cm, i, cm2 + if (dist2cm.gt.dist2cmt) then + dist2cm=dist2cmt + cm2=i + endif + + enddo + + + do i=1,ilosc_atomow2 + do j=i,ilosc_atomow2 + dist2cmt = dsqrt(((x2(j)-x2(i))**2)+ + & ((y2(j)-y2(i))**2)+ + & ((z2(j)-z2(i))**2)) + if (dist2acm.lt.dist2cmt) then + dist2acm=dist2cmt + endif + enddo + enddo + + +c write(3,303) "TER" + + glys1=0 + glys2=0 + glye1=0 + glye2=0 + r1s=nazwar1(1) + r2s=nazwar2(1) + r1e=nazwar1(ile_reszt_mol1) + r2e=nazwar2(ile_reszt_mol2) + + if (r1s.eq."GLY") then + glys1=1 + write(*,*) "Chain 1 is starting from Gly ", r1s, glys1 + endif + + if (r2s.eq."GLY") then + glys2=1 + write(*,*) "Chain 2 is starting from Gly ", r2s, glys2 + endif + + if (r1e.eq."GLY") then + glye1=1 + write(*,*) "Chain 1 is ending at Gly ", r1e, glye1 + endif + + + if (r2e.eq."GLY") then + glye2=1 + write(*,*) "Chain 2 is ending from Gly ", r2e, glye2 + endif + + +c checking for Gly + ilee=4 + if(glys1.eq.1) ilee=ilee-1 + if(glys2.eq.1) ilee=ilee-1 + if(glye1.eq.1) ilee=ilee-1 + if(glye2.eq.1) ilee=ilee-1 + write(*,*) "How many dummy atoms:", ilee + write(*,*) "" + + + write(*,*) "Molecule 2 calculated" + write(*,*) "Number of atoms:", ilosc_atomow1, ilosc_atomow2 + + write(*,*) "Min and max coordinates in the systems" + write(*,300) minx1, maxx1, miny1, maxy1, minz1, maxz1 + write(*,300) minx2, maxx2, miny2, maxy2, minz2, maxz2 + + write(*,*) "Distances in axes x, y, z" + write(*,301) distx1, disty1, distz1 + write(*,301) distx2, disty2, distz2 + + boxx = (distx1 + distx2)*1.5 + 20.0 + boxy = (disty1 + disty2)*1.5 + 20.0 + boxz = (distz1 + distz2)*1.5 + 20.0 + +c write(*,*) "Boxsize [x, y, z]" +c write(*,301) boxx, boxy, boxz + + write(*,*) "Maximum distances:" + write(*,*) dist1acm, dist2acm + + write(*,*) "Boxsize (suggested)" + write(*,*) (dist1acm+dist2acm)*1.2+20 + open(61,file='boxsize.txt') + write(61,302) ((dist1acm+dist2acm)*1.2+20) + close (61) + + write(*,*) "Center of masses:" + write(*,301) xcm1, ycm1, zcm1 + write(*,301) xcm2, ycm2, zcm2 + + write(*,*) "Center of masses atoms:" + write(*,800) atoma1(cm1),numera1(cm1),nazwaa1(cm1),nazwar1(cm1), + & " ",numerr1(cm1),x1(cm1),y1(cm1),z1(cm1) + write(*,800) atoma2(cm2),numera2(cm2),nazwaa2(cm2),nazwar2(cm2), + & " ",numerr2(cm2),x2(cm2),y2(cm2),z2(cm2) + + + write(*,*) "Number of amino-acid residues in two proteins:" + write(*,*) ile_reszt_mol1, ile_reszt_mol2 + + +c --------------------------------------------------------------------- +c KONIEC WCZYTYWANIA +c --------------------------------------------------------------------- + + korekta1 = numerr1(1) + write(*,*) "Original number of the first residue in + & the first protein:" + write(*,*) numerr1(1) + + write(*,*) "Correction of the first residue in the first protein:" + write(*,*) korekta1 + + +c wymiar=(distx1 + distx2)+(disty1 + disty2)+(distz1 + distz2) +c wymiar=wymiar/12.0 +c wymiar=10.0 + +c write(*,*) "Minimum required distance between centers of mass:" +c write(*,*) wymiar + + boxx = (6.5+distx1 + dist2acm)/2.0 + boxy = (6.5+disty1 + dist2acm)/2.0 + boxz = (6.5+distz1 + dist2acm)/2.0 + write(*,*) "Rotation space (+/-):", boxx, boxy, boxz + + + do ii1=1,no_models + + proba = 1 + proba0x = 1 + proba0y = 1 + proba0z = 1 + proba1 = 1 + proba2 = 1 + proba3 = 1 + conf = 1 + + + if (ii1.lt.10) then + write (plik3, "(A6,I1,a4)") "model0", ii1, ".pdb" + else + write (plik3, "(A5,I2,a4)") "model", ii1, ".pdb" + endif + + write(*,*) "Conformation will be saved to file:", plik3 + +c plik3a = plik3//ilosc + open(3,file=plik3) + + + do i=1,ilosc_atomow1 + write(3,800) atoma1(i),numera1(i),nazwaa1(i),nazwar1(i),"A", + & (numerr1(i)-korekta1+1), + & x1(i),y1(i),z1(i) + enddo + write(3,303) "TER" +c write(3,304) "ENDMDL" + + if (peptide.eq.1) then + wymiar=((distx1 + distx2)+(disty1 + disty2)+(distz1 + distz2))/4 + endif + + if (peptide.eq.0) then + wymiar=((distx1 + distx2)+(disty1 + disty2)+(distz1 + distz2))/8 + endif + + if (ii1.eq.1) then + write(*,*) "Initial minimum distance between centers of mass:", + & wymiar + endif + +c ROTATIONS OF THE SECOND MOLECULE + nd=4 + t(1)=0.0 + t(2)=0.0 + t(3)=0.0 + call ranorND(b,nd,ilosc_atomow2,ii1,seed1) +c do i=1,4 +c write(*,*) b(i) +c enddo + call rot_trans(xt2,t,b,xf,ilosc_atomow2) + do i=1,ilosc_atomow2 + x2(i)=xf(i,1) + y2(i)=xf(i,2) + z2(i)=xf(i,3) + enddo +c END OF ROTATIONS + + + do while (.true.) + if (conf.gt.1) goto 133 + + seed = ABS((seed1+proba)/(ii1**2)) + call srand(seed) + r = rand(seed) + seed11=ABS(seed+ii1-proba)*proba + seed12=ABS(seed+ii1-(proba**2))*proba + seed13=ABS(seed+ii1-(proba))*proba**2 +c write(*,*) seed11, seed12, seed13 + cm2xr = (rand(seed11)*2*boxx)-(boxx) + cm2yr = (rand(seed12)*2*boxy)-(boxy) + cm2zr = (rand(seed13)*2*boxz)-(boxz) + + do i=1,ilosc_atomow2 + x2r(i)=x2(i)-cm2xr + y2r(i)=y2(i)-cm2yr + z2r(i)=z2(i)-cm2zr + enddo + + +c SPRAWDZANIE CZY NIE JEST ZBYT PODOBNE DO JUZ WYLOSOWANEGO + cmxx(ii1)=cm2xr + cmyy(ii1)=cm2yr + cmzz(ii1)=cm2zr + + if (ii1.gt.1) then + + do ir=1,ii1-1 + dd=sqrt((cm2xr-cmxx(ir))**2+(cm2yr-cmyy(ir))**2+ + & (cm2zr-cmzz(ir))**2) + +c write(*,*) "Center of mass is", dd, "A away from", ir +c write(*,*) "Minimum distance required:", wymiar, "A" + +c write(*,*) ii1, ir, proba3, dd, wymiar + + if (dd.lt.wymiar) then + proba3=proba3+1 + if (proba3.gt.1.and.peptide.eq.1) wymiar=wymiar*0.99992 + if (proba3.gt.1.and.peptide.eq.0) wymiar=wymiar*0.99992 +c write(*,*) proba3, wymiar + goto 200 + endif + + enddo + endif + + + + +c SPRAWDZANIE ODLEGLOSCI + accept=0 + do i=1,ilosc_atomow2 +c write(3,800) atoma2(i),numera2(i),nazwaa2(i),nazwar2(i), +c & numerr2(i),x2(i)-xcm2,y2(i)-ycm2,z2(i)-zcm2 + + do j=1,ilosc_atomow1 + dist12 = sqrt(((x2r(i)-x1(j))**2)+ + & ((y2r(i)-y1(j))**2)+ + & ((z2r(i)-z1(j))**2)) +c write(*,*) dist12, cm2xr, cm2yr, cm2zr + if (dist12.lt.2.5) then + proba1=proba1+1 + goto 200 + endif + + if (dist12.le.3.5) accept=1 +c if (dist12.le.3.5) accept=1 +c if (dist12.gt.3.5) proba2=proba2+1 + enddo + enddo + +c write(*,*) "No overlaps", proba + if (accept.eq.0) goto 200 +c write(*,*) "No overlaps, contact", conf, proba +c write(3,305) "MODEL", conf +c conf = conf+1 + + + + write(*,*) "Conformation", ii1, "Is accepted after", + & proba0x+proba0y+proba0z, + & proba1, proba2, proba3, proba, "attempts. ", + & "Dist between CoM of previous=", wymiar + +c Dodatkowe info + write(*,*)"Extr",ABS(cm2xr+xcm1), ABS(cm2yr+ycm1), ABS(cm2zr+zcm1) + + + conf=conf+1 +c write (*,*) + + + + + + korekta2 = numerr2(1)-1 +c write(*,*) "Original number of the first residue in +c & the second protein:" +c write(*,*) numerr2(1) + +c write(*,*)"Correction of the first residue in the second protein:" +c write(*,*) korekta2 + do i=1,ilosc_atomow2 + write(3,800) atoma2(i),numera2(i),nazwaa2(i),nazwar2(i),"B", + & (numerr2(i)+ile_reszt_mol1-korekta2), + & x2r(i),y2r(i),z2r(i) + enddo + write(3,303) "TER" +c write(3,304) "ENDMDL" +c write(3,305) "MODEL", conf + write(3,303) "END" + + 200 continue + proba = proba + 1 + enddo + 133 continue + + close (3) + +c call sleep(1) + + + if (ii1.lt.10) then + write (plik4, "(A9,I1,a4)") "template0", ii1, ".sco" + else + write (plik4, "(A8,I2,a4)") "template", ii1, ".sco" + endif + + open (7,file=plik4) + + + if (peptide.eq.1) then + do ijl=1,(ile_reszt_mol1+ile_reszt_mol2+ilee) + if (glys1.eq.0) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.ge.(ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + + if (glys1.eq.1) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.ge.(ile_reszt_mol1+1)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + enddo + endif + + + if (peptide.eq.0) then + do ijl=1,(ile_reszt_mol1+ile_reszt_mol2+ilee) +c write(*,*) "ijl" +c no Gly + if (glys1.eq.0.and.glye1.eq.0.and.glys2.eq.0) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+3)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.gt.(ile_reszt_mol1+3).and. + & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+3)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "2" + if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+4)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + + +c chain 1 first Gly + if (glys1.eq.1.and.glye1.eq.0.and.glys2.eq.0) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.ge.(ile_reszt_mol1+1).and.ijl.le.(ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.gt.(ile_reszt_mol1+2).and. + & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "2" + if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+3)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + +c chain 1 last Gly + if (glys1.eq.0.and.glye1.eq.1.and.glys2.eq.0) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.gt.(ile_reszt_mol1+2).and. + & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "2" + if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+3)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + +c chain 1 first Gly and chain 1 last Gly + if (glys1.eq.1.and.glye1.eq.1.and.glys2.eq.0) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.ge.(ile_reszt_mol1+1).and.ijl.le.(ile_reszt_mol1+1)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.gt.(ile_reszt_mol1+1).and. + & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+1)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "2" + if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + +c chain 2 first Gly + if (glys1.eq.0.and.glye1.eq.0.and.glys2.eq.1) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.gt.(ile_reszt_mol1+2).and. + & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "2" + if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+3)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + +c chain 1 first Gly chain 2 first Gly + if (glys1.eq.1.and.glye1.eq.0.and.glys2.eq.1) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.ge.(ile_reszt_mol1+1).and.ijl.le.(ile_reszt_mol1+1)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.gt.(ile_reszt_mol1+1).and. + & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+1)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "2" + if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + +c chain 1 last Gly chain 2 first Gly + if (glys1.eq.0.and.glye1.eq.1.and.glys2.eq.1) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" +c if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+3)) +c & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.gt.(ile_reszt_mol1+1).and. + & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+1)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "2" + if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+2)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + +c all Gly + if (glys1.eq.1.and.glye1.eq.1.and.glys2.eq.1) then + if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" + if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) + & write(7,*) ijl, "1.0 1.0 1.0 ", "1" +c if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+3)) +c & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + if (ijl.gt.(ile_reszt_mol1).and. + & ijl.le.(ile_reszt_mol2+ile_reszt_mol1)) + & write(7,*) ijl, "1.0 1.0 1.0 ", "2" +c if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+1)) +c & write(7,*) ijl, "1.0 1.0 1.0 ", "0" + endif + + + + enddo + endif + + + close (7) + +c koniec petli po ilosci struktur + enddo + +c do i=1,20 +c write(*,*) i, cmxx(i), cmyy(i), cmzz(i) +c dd=(cm2xr-cmxx(ir))**2+(cm2yr-cmyy(ir))**2+(cm2zr-cmyy(ir))**2 +c enddo + +c do i=1,20 +c do j=1,20 +c dd=sqrt((cmxx(i)-cmxx(j))**2+(cmyy(i)-cmyy(j))**2+ +c & (cmzz(i)-cmzz(j))**2) +c write(*,*) i,j,dd +c enddo +c enddo + + + 300 format(6f8.2) + 301 format(3f8.2) + 302 format(f8.2) + 800 format(a4,2X,i5,1X,a4,1X,a3,1X,a1,i4,4X,3f8.3) + 303 format(a3) + 304 format(a6) + 305 format(a5,1X,i8) + end + + + + + SUBROUTINE SRAND(ISEED) +C +C This subroutine sets the integer seed to be used with the +C companion RAND function to the value of ISEED. A flag is +C set to indicate that the sequence of pseudo-random numbers +C for the specified seed should start from the beginning. +C + COMMON /SEED/JSEED,IFRST +C + JSEED = ISEED + IFRST = 0 +C + RETURN + END + REAL FUNCTION RAND() +C +C This function returns a pseudo-random number for each invocation. +C It is a FORTRAN 77 adaptation of the "Integer Version 2" minimal +C standard number generator whose Pascal code appears in the article: +C +C Park, Steven K. and Miller, Keith W., "Random Number Generators: +C Good Ones are Hard to Find", Communications of the ACM, +C October, 1988. +C + PARAMETER (MPLIER=16807,MODLUS=2147483647,MOBYMP=127773, + + MOMDMP=2836) +C + COMMON /SEED/JSEED,IFRST + INTEGER HVLUE, LVLUE, TESTV, NEXTN + SAVE NEXTN +C + IF (IFRST .EQ. 0) THEN + NEXTN = JSEED + IFRST = 1 + ENDIF +C + HVLUE = NEXTN / MOBYMP + LVLUE = MOD(NEXTN, MOBYMP) + TESTV = MPLIER*LVLUE - MOMDMP*HVLUE + IF (TESTV .GT. 0) THEN + NEXTN = TESTV + ELSE + NEXTN = TESTV + MODLUS + ENDIF + RAND = REAL(NEXTN)/REAL(MODLUS) +C + RETURN + END + BLOCKDATA RANDBD + COMMON /SEED/JSEED,IFRST +C + DATA JSEED,IFRST/123456789,0/ +C + END + + Subroutine ranorND(b,nd,ilosc_atomow2,ii1,seed1) + double precision b +C generates a random vector on a unit sphere onC an ND-dimensional space. +C algorithm 40 page 410. +C the algorithm assumes that the formula for bz is valid, i.e +C bz=(1.0-2.0*ransq), +C and also that, ransq can be computed as as the sum of the independent random +C numbers to the second power (expression 3). + dimension ran(nd-1), b(nd) + integer seed,seed1 +c write(*,*) "In Subroutine ranorND(b,nd), nd=", nd +c write(*,*) "ilosc_atomow2=", ilosc_atomow2 +c do j=1,ilosc_atomow2 + ransq=2 + seed = seed1*ii1 + call srand(seed) + do while (ransq.ge.1) +c write(*,*) ransq + rsq=0.0 + do i=1,nd-1 + ran(i)=1.0-2.0*rand(0) +c write(*,*) i, ran(i) + rsq=ran(i)*ran(i)+rsq ! (3) +c write(*,*) i, rsq + enddo + ransq=rsq +c write(*,*) j, ransq + enddo + ranh=2.0*sqrt(1.0-ransq) +c write(*,*) j, ranh, ransq + do i=1,nd-1 + b(i)=ran(i)*ranh +c write(*,*) ran(i), ranh + enddo + b(nd)=(1.0-2.0*ransq) +c write(*,*) b(1,j), b(2,j), b(3,j), b(4,j) +c enddo + return + end + + subroutine rot_trans(xt2,t,q,xf,ilosc_atomow2) +C x coordinates, t translation vector, q quaternion + double precision xt2(90000,3),xf(90000,3) + double precision t(3),q(4) + integer i + write(*,*) "Rotation vector:", q(1), q(2), q(3), q(4) + r11= q(1)*q(1)+q(2)*q(2)-q(3)*q(3)-q(4)*q(4) + r22= q(1)*q(1)-q(2)*q(2)+q(3)*q(3)-q(4)*q(4) + r33= q(1)*q(1)-q(2)*q(2)-q(3)*q(3)+q(4)*q(4) + r12= 2*(q(2)*q(3)-q(1)*q(4)) + r21= 2*(q(2)*q(3)+q(1)*q(4)) + r13= 2*(q(2)*q(4)+q(1)*q(3)) + r31= 2*(q(2)*q(4)-q(1)*q(3)) + r23= 2*(q(3)*q(4)-q(1)*q(2)) + r32= 2*(q(3)*q(4)+q(1)*q(2)) + +c write(*,*) r11, r22, r33, r12, r21, r13, r31, r23, r32 + + do i=1,ilosc_atomow2 + xf(i,1)= r11*xt2(i,1)+r12*xt2(i,2)+r13*xt2(i,3) + t(1) + xf(i,2)= r21*xt2(i,1)+r22*xt2(i,2)+r23*xt2(i,3) + t(2) + xf(i,3)= r31*xt2(i,1)+r32*xt2(i,2)+r33*xt2(i,3) + t(3) +c write(*,*) i, xt2(i,1), xt2(i,2), xt2(i,3) +c write(*,*) i, xf(i,1), xf(i,2), xf(i,3) + enddo + + return + end + diff --git a/source/unres-dock/generator_v13b.F b/source/unres-dock/generator_v13b.F deleted file mode 100644 index 0a33cab..0000000 --- a/source/unres-dock/generator_v13b.F +++ /dev/null @@ -1,967 +0,0 @@ - program generator - implicit none - integer proba, conf, cm1, cm2, accept, nd - integer krok, i, n, j, g, ii1, ilosc, ijl - integer nnn, seed, proba1, proba2, proba3, proba0x,proba0y,proba0z - integer ilosc_atomow1, ilosc_atomow2, korekta1, korekta2 - integer ile_reszt_mol1, ile_reszt_mol2, ir, peptide,numerr2(90000) - integer numera1(90000),numerr1(90000),numera2(90000) - integer glys1, glys2, glye1, glye2, ilee - real*8 rand, r, boxx, boxy, boxz, dist2acm, dist1acm, b(4), t(3) - real*8 minx1, miny1, minz1, maxx1, maxy1, maxz1 - real*8 minx2, miny2, minz2, maxx2, maxy2, maxz2 - real*8 distx1, disty1, distz1, distx2, disty2, distz2 - real*8 xcm1, ycm1, zcm1, xcm2, ycm2, zcm2 - real*8 dist1cm, dist1cmt, dist2cm, dist2cmt - real*8 cm2xr, cm2yr, cm2zr,x2r(90000),y2r(90000),z2r(90000),dist12 - real*8 angle, c, s, x2new, y2new, z2new - character*60 plik1, plik2, plik3, plik4 - character*54 linia - real*8 x1(90000),y1(90000),z1(90000),x2(90000),y2(90000),z2(90000) - real*8 dd, wymiar, cmxx(900), cmyy(900), cmzz(900),xt2(90000,3) - real*8 xf(90000,3) - character*1 chain - character*3 r1s, r2s, r1e, r2e - character*5 atoma1(90000), atoma2(90000) - character*6 nazwaa1(90000), nazwar1(90000) - character*6 nazwaa2(90000), nazwar2(90000) - integer time_a(3) - - korekta1 = 1 - korekta2 = 1 - -c write(*,*)"Sposob uruchamiania:" -c write(*,*)"nazwa_programu nazwa_pliku_inp_pdb1 -c & nazwa_pliku_inp_pdb2 nazwa_pliku_out" -c write(*,*)"" - - nnn = iargc() - if (nnn.lt.3) then - write(*,*)"program input_pdb1 input_pdb2 - & [0-1] 0 for protein, 1 for peptide" - stop - endif - - call getarg(1,plik1) - call getarg(2,plik2) - call getarg(3,plik3) - open(1,file=plik1,status="old") - open(2,file=plik2,status="old") - open(4,file='temp1') - open(5,file='temp2') - write(*,*) "All files read" - - read(plik3(1:1),'(i1)') peptide - - if (peptide.ne.0.and.peptide.ne.1) then - write(*,*) "Third parameter must be 0 or 1, - & where 0 is for a protein-protein docking, - & and 1 is for protein-peptide docking." - STOP - endif - - write(*,*) "Option", peptide, "selected - & (0 for protein, 1 for peptide)" - - -c MOLEKULA 1 - do while (.true.) - read(1,'(a54)',end=22) linia - if (linia(1:4).eq.'ATOM'.and.linia(17:17).lt.'B') then - write(4,'(a54)') linia - endif - if (linia(1:3).eq.'TER') then -c write(2,'(a54)') linia - goto 22 - endif - enddo - -22 continue - close(4) - write(*,*) "Molecule 1 read" - - -c MOLEKULA 2 - do while (.true.) - read(2,'(a54)',end=23) linia - if (linia(1:4).eq.'ATOM'.and.linia(17:17).lt.'B') then - write(5,'(a54)') linia - endif - if (linia(1:3).eq.'TER') then -c write(2,'(a54)') linia - goto 23 - endif - enddo -23 continue - close(5) - write(*,*) "Molecule 2 read" - - open(4,file='temp1') - open(5,file='temp2') - - minx1=999.99 - miny1=999.99 - minz1=999.99 - - maxx1=-999.99 - maxy1=-999.99 - maxz1=-999.99 - - - minx2=999.99 - miny2=999.99 - minz2=999.99 - - maxx2=-999.99 - maxy2=-999.99 - maxz2=-999.99 - - - -c MOLEKULA 1 - i=1 - xcm1=0 - ycm1=0 - zcm1=0 - ile_reszt_mol1=0 - - do while (.true.) - read(4,800,end=111) - & atoma1(i),numera1(i),nazwaa1(i),nazwar1(i),chain,numerr1(i), - & x1(i),y1(i),z1(i) - - -c write(*,300) minx, maxx, miny, maxy, minz, maxz - - if (x1(i).lt.minx1) minx1=x1(i) - if (y1(i).lt.miny1) miny1=y1(i) - if (z1(i).lt.minz1) minz1=z1(i) - - if (x1(i).gt.maxx1) maxx1=x1(i) - if (y1(i).gt.maxy1) maxy1=y1(i) - if (z1(i).gt.maxz1) maxz1=z1(i) - -c write(*,300) minx, maxx, miny, maxy, minz, maxz - -c write(*,*) nazwaa1(i) - if (nazwaa1(i).eq.' CA ') then - xcm1 = xcm1 + x1(i) - ycm1 = ycm1 + y1(i) - zcm1 = zcm1 + z1(i) - ile_reszt_mol1 = ile_reszt_mol1 +1 - endif - - if (atoma1(i).eq.'TER ') goto 111 - if (atoma1(i).eq.'END ') goto 111 - if (i.eq.1) write(3,'(a6)') "REMARK" -c write(3,800) atoma1(i),numera1(i),nazwaa1(i),nazwar1(i), -c & numerr1(i),x1(i),y1(i),z1(i) - -c write(*,*) i, x(i),y(i),z(i) - - i=i+1 - enddo -111 continue - - distx1=maxx1-minx1 - disty1=maxy1-miny1 - distz1=maxz1-minz1 - ilosc_atomow1 = i-1 - xcm1 = xcm1 / (ile_reszt_mol1*1.0) - ycm1 = ycm1 / (ile_reszt_mol1*1.0) - zcm1 = zcm1 / (ile_reszt_mol1*1.0) - - do i=1,ilosc_atomow1 - x1(i)=x1(i)-xcm1 - y1(i)=y1(i)-ycm1 - z1(i)=z1(i)-zcm1 - enddo - - xcm1=0 - ycm1=0 - zcm1=0 - - do i=1,ilosc_atomow1 - if (nazwaa1(i).eq.' CA ') then - xcm1 = xcm1 + x1(i) - ycm1 = ycm1 + y1(i) - zcm1 = zcm1 + z1(i) - endif - enddo - xcm1 = xcm1 / (ile_reszt_mol1*1.0) - ycm1 = ycm1 / (ile_reszt_mol1*1.0) - zcm1 = zcm1 / (ile_reszt_mol1*1.0) - - dist1cm=999.9 - dist1acm=0.0 - do i=1,ilosc_atomow1 -c write(3,800) atoma1(i),numera1(i),nazwaa1(i),nazwar1(i), -c & numerr1(i),x1(i)-xcm1,y1(i)-ycm1,z1(i)-zcm1 - - dist1cmt = dsqrt(((xcm1-x1(i))**2)+ - & ((ycm1-y1(i))**2)+ - & ((zcm1-z1(i))**2)) - -c write(*,*) dist1cmt, dist1cm, i, cm1 - if (dist1cm.gt.dist1cmt) then - dist1cm=dist1cmt - cm1=i - endif - - enddo - - do i=1,ilosc_atomow1 - do j=i,ilosc_atomow1 - dist1cmt = dsqrt(((x1(j)-x1(i))**2)+ - & ((y1(j)-y1(i))**2)+ - & ((z1(j)-z1(i))**2)) - if (dist1acm.lt.dist1cmt) then - dist1acm=dist1cmt - endif - enddo - enddo - - -c write(3,303) "TER" -c write(3,304) "ENDMDL" - - write(*,*) "Molecule 1 calculated" - -c MOLEKULA 2 - i=1 - xcm2=0 - ycm2=0 - zcm2=0 - ile_reszt_mol2=0 - - do while (.true.) - read(5,800,end=112) - & atoma2(i),numera2(i),nazwaa2(i),nazwar2(i),chain,numerr2(i), - & x2(i),y2(i),z2(i) - -c write(*,300) minx, maxx, miny, maxy, minz, maxz - - if (x2(i).lt.minx2) minx2=x2(i) - if (y2(i).lt.miny2) miny2=y2(i) - if (z2(i).lt.minz2) minz2=z2(i) - - if (x2(i).gt.maxx2) maxx2=x2(i) - if (y2(i).gt.maxy2) maxy2=y2(i) - if (z2(i).gt.maxz2) maxz2=z2(i) - -c write(*,300) minx, maxx, miny, maxy, minz, maxz - -c write(*,*) nazwaa1(i) - if (nazwaa2(i).eq.' CA ') then - xcm2 = xcm2 + x2(i) - ycm2 = ycm2 + y2(i) - zcm2 = zcm2 + z2(i) - ile_reszt_mol2 = ile_reszt_mol2 + 1 - endif - - if (atoma2(i).eq.'TER ') goto 111 - if (atoma2(i).eq.'END ') goto 111 -c if (i.eq.1) write(3,'(a6)') "REMARK" -c write(3,800) atoma2(i),numera2(i),nazwaa2(i),nazwar2(i), -c & numerr2(i),x2(i),y2(i),z2(i) -c write(*,*) i, x(i),y(i),z(i) - - i=i+1 - enddo -112 continue - - distx2=maxx2-minx2 - disty2=maxy2-miny2 - distz2=maxz2-minz2 - ilosc_atomow2 = i-1 - - xcm2 = xcm2 / (ile_reszt_mol2*1.0) - ycm2 = ycm2 / (ile_reszt_mol2*1.0) - zcm2 = zcm2 / (ile_reszt_mol2*1.0) - - do i=1,ilosc_atomow2 - x2(i)=x2(i)-xcm2 - y2(i)=y2(i)-ycm2 - z2(i)=z2(i)-zcm2 -c write(*,*) x2(i),y2(i),z2(i) - xt2(i,1)=x2(i) - xt2(i,2)=y2(i) - xt2(i,3)=z2(i) -c write(*,*) xt2(i,1), xt2(i,2), xt2(i,3) - enddo - - xcm2=0 - ycm2=0 - zcm2=0 - do i=1,ilosc_atomow2 - if (nazwaa2(i).eq.' CA ') then - xcm2 = xcm2 + x2(i) - ycm2 = ycm2 + y2(i) - zcm2 = zcm2 + z2(i) - endif - enddo - xcm2 = xcm2 / (ile_reszt_mol2*1.0) - ycm2 = ycm2 / (ile_reszt_mol2*1.0) - zcm2 = zcm2 / (ile_reszt_mol2*1.0) - - - dist2cm=999.9 - dist2acm=0.0 - do i=1,ilosc_atomow2 -c write(3,800) atoma2(i),numera2(i),nazwaa2(i),nazwar2(i), -c & numerr2(i),x2(i)-xcm2,y2(i)-ycm2,z2(i)-zcm2 - - dist2cmt = dsqrt(((xcm2-x2(i))**2)+ - & ((ycm2-y2(i))**2)+ - & ((zcm2-z2(i))**2)) - -c write(*,*) dist2cmt, dist2cm, i, cm2 - if (dist2cm.gt.dist2cmt) then - dist2cm=dist2cmt - cm2=i - endif - - enddo - - - do i=1,ilosc_atomow2 - do j=i,ilosc_atomow2 - dist2cmt = dsqrt(((x2(j)-x2(i))**2)+ - & ((y2(j)-y2(i))**2)+ - & ((z2(j)-z2(i))**2)) - if (dist2acm.lt.dist2cmt) then - dist2acm=dist2cmt - endif - enddo - enddo - - -c write(3,303) "TER" - - glys1=0 - glys2=0 - glye1=0 - glye2=0 - r1s=nazwar1(1) - r2s=nazwar2(1) - r1e=nazwar1(ile_reszt_mol1) - r2e=nazwar2(ile_reszt_mol2) - - if (r1s.eq."GLY") then - glys1=1 - write(*,*) "Chain 1 is starting from Gly ", r1s, glys1 - endif - - if (r2s.eq."GLY") then - glys2=1 - write(*,*) "Chain 2 is starting from Gly ", r2s, glys2 - endif - - if (r1e.eq."GLY") then - glye1=1 - write(*,*) "Chain 1 is ending at Gly ", r1e, glye1 - endif - - - if (r2e.eq."GLY") then - glye2=1 - write(*,*) "Chain 2 is ending from Gly ", r2e, glye2 - endif - - -c checking for Gly - ilee=4 - if(glys1.eq.1) ilee=ilee-1 - if(glys2.eq.1) ilee=ilee-1 - if(glye1.eq.1) ilee=ilee-1 - if(glye2.eq.1) ilee=ilee-1 - write(*,*) "How many dummy atoms:", ilee - write(*,*) "" - - - write(*,*) "Molecule 2 calculated" - write(*,*) "Number of atoms:", ilosc_atomow1, ilosc_atomow2 - - write(*,*) "Min and max coordinates in the systems" - write(*,300) minx1, maxx1, miny1, maxy1, minz1, maxz1 - write(*,300) minx2, maxx2, miny2, maxy2, minz2, maxz2 - - write(*,*) "Distances in axes x, y, z" - write(*,301) distx1, disty1, distz1 - write(*,301) distx2, disty2, distz2 - - boxx = (distx1 + distx2)*1.5 + 20.0 - boxy = (disty1 + disty2)*1.5 + 20.0 - boxz = (distz1 + distz2)*1.5 + 20.0 - -c write(*,*) "Boxsize [x, y, z]" -c write(*,301) boxx, boxy, boxz - - write(*,*) "Maximum distances:" - write(*,*) dist1acm, dist2acm - - write(*,*) "Boxsize (suggested)" - write(*,*) (dist1acm+dist2acm)*1.2+20 - open(61,file='boxsize.txt') - write(61,302) ((dist1acm+dist2acm)*1.2+20) - close (61) - - write(*,*) "Center of masses:" - write(*,301) xcm1, ycm1, zcm1 - write(*,301) xcm2, ycm2, zcm2 - - write(*,*) "Center of masses atoms:" - write(*,800) atoma1(cm1),numera1(cm1),nazwaa1(cm1),nazwar1(cm1), - & " ",numerr1(cm1),x1(cm1),y1(cm1),z1(cm1) - write(*,800) atoma2(cm2),numera2(cm2),nazwaa2(cm2),nazwar2(cm2), - & " ",numerr2(cm2),x2(cm2),y2(cm2),z2(cm2) - - - write(*,*) "Number of amino-acid residues in two proteins:" - write(*,*) ile_reszt_mol1, ile_reszt_mol2 - - -c --------------------------------------------------------------------- -c KONIEC WCZYTYWANIA -c --------------------------------------------------------------------- - - korekta1 = numerr1(1) - write(*,*) "Original number of the first residue in - & the first protein:" - write(*,*) numerr1(1) - - write(*,*) "Correction of the first residue in the first protein:" - write(*,*) korekta1 - - -c wymiar=(distx1 + distx2)+(disty1 + disty2)+(distz1 + distz2) -c wymiar=wymiar/12.0 -c wymiar=10.0 - -c write(*,*) "Minimum required distance between centers of mass:" -c write(*,*) wymiar - - boxx = (7+distx1 + dist2acm)/2.0 - boxy = (7+disty1 + dist2acm)/2.0 - boxz = (7+distz1 + dist2acm)/2.0 - write(*,*) "Rotation space (+/-):", boxx, boxy, boxz - - - do ii1=1,24 - - proba = 1 - proba0x = 1 - proba0y = 1 - proba0z = 1 - proba1 = 1 - proba2 = 1 - proba3 = 1 - conf = 1 - - - if (ii1.lt.10) then - write (plik3, "(A6,I1,a4)") "model0", ii1, ".pdb" - else - write (plik3, "(A5,I2,a4)") "model", ii1, ".pdb" - endif - - write(*,*) "Conformation will be saved to file:", plik3 - -c plik3a = plik3//ilosc - open(3,file=plik3) - - - do i=1,ilosc_atomow1 - write(3,800) atoma1(i),numera1(i),nazwaa1(i),nazwar1(i),"A", - & (numerr1(i)-korekta1+1), - & x1(i),y1(i),z1(i) - enddo - write(3,303) "TER" -c write(3,304) "ENDMDL" - - if (peptide.eq.1) then - wymiar=((distx1 + distx2)+(disty1 + disty2)+(distz1 + distz2))/4 - endif - - if (peptide.eq.0) then - wymiar=((distx1 + distx2)+(disty1 + disty2)+(distz1 + distz2))/7 - endif - - if (ii1.eq.1) then - write(*,*) "Initial minimum distance between centers of mass:", - & wymiar - endif - -c ROTATIONS OF THE SECOND MOLECULE - nd=4 - t(1)=0.0 - t(2)=0.0 - t(3)=0.0 - call ranorND(b,nd,ilosc_atomow2,ii1) -c do i=1,4 -c write(*,*) b(i) -c enddo - call rot_trans(xt2,t,b,xf,ilosc_atomow2) - do i=1,ilosc_atomow2 - x2(i)=xf(i,1) - y2(i)=xf(i,2) - z2(i)=xf(i,3) - enddo -c END OF ROTATIONS - - - do while (.true.) - if (conf.gt.1) goto 133 - -#ifdef GFORTRAN - seed = time()*proba -#else - call itime(time_a) - seed = (60*time_a(2)+time_a(3))*proba -#endif - call srand(seed) - r = rand(0) -c write(*,*)rand(0),rand(0),rand(0) -c write(*,*)rand(0),rand(0),rand(0) - - cm2xr = (rand(0)*2*boxx)-(boxx) - cm2yr = (rand(0)*2*boxy)-(boxy) - cm2zr = (rand(0)*2*boxz)-(boxz) -c write(*,*) cm2xr, cm2yr, cm2zr -c write(*,300)rand(0),rand(0),rand(0) - -c write(*,*) ABS(cm2xr+xcm1), (dist1acm+dist2acm+3) - -c if (ABS(cm2xr+xcm1).gt.((dist1acm+dist2acm+5)*0.8)) then -c proba0x=proba0x+1 -c goto 200 -c endif - -c if (ABS(cm2yr+ycm1).gt.((dist1acm+dist2acm+5)*0.8)) then -c proba0y=proba0y+1 -c goto 200 -c endif - -c if (ABS(cm2zr+zcm1).gt.((dist1acm+dist2acm+5)*0.8)) then -c proba0z=proba0z+1 -c goto 200 -c endif - - - do i=1,ilosc_atomow2 - x2r(i)=x2(i)-cm2xr - y2r(i)=y2(i)-cm2yr - z2r(i)=z2(i)-cm2zr - enddo - - -c SPRAWDZANIE CZY NIE JEST ZBYT PODOBNE DO JUZ WYLOSOWANEGO - cmxx(ii1)=cm2xr - cmyy(ii1)=cm2yr - cmzz(ii1)=cm2zr - - if (ii1.gt.1) then - - do ir=1,ii1-1 - dd=sqrt((cm2xr-cmxx(ir))**2+(cm2yr-cmyy(ir))**2+ - & (cm2zr-cmzz(ir))**2) - -c write(*,*) "Center of mass is", dd, "A away from", ir -c write(*,*) "Minimum distance required:", wymiar, "A" - -c write(*,*) ii1, ir, proba3, dd, wymiar - - if (dd.lt.wymiar) then - proba3=proba3+1 - if (proba3.gt.1.and.peptide.eq.1) wymiar=wymiar*0.99992 - if (proba3.gt.1.and.peptide.eq.0) wymiar=wymiar*0.99992 -c write(*,*) proba3, wymiar - goto 200 - endif - - enddo - endif - - - - -c SPRAWDZANIE ODLEGLOSCI - accept=0 - do i=1,ilosc_atomow2 -c write(3,800) atoma2(i),numera2(i),nazwaa2(i),nazwar2(i), -c & numerr2(i),x2(i)-xcm2,y2(i)-ycm2,z2(i)-zcm2 - - do j=1,ilosc_atomow1 - dist12 = sqrt(((x2r(i)-x1(j))**2)+ - & ((y2r(i)-y1(j))**2)+ - & ((z2r(i)-z1(j))**2)) -c write(*,*) dist12, cm2xr, cm2yr, cm2zr - if (dist12.lt.2.5) then - proba1=proba1+1 - goto 200 - endif - - if (dist12.le.3.5) accept=1 -c if (dist12.le.3.5) accept=1 -c if (dist12.gt.3.5) proba2=proba2+1 - enddo - enddo - -c write(*,*) "No overlaps", proba - if (accept.eq.0) goto 200 -c write(*,*) "No overlaps, contact", conf, proba -c write(3,305) "MODEL", conf -c conf = conf+1 - - - - write(*,*) "Conformation", ii1, "Is accepted after", - & proba0x+proba0y+proba0z, - & proba1, proba2, proba3, proba, "attempts. ", - & "Dist between CoM of previous=", wymiar - -c Dodatkowe info - write(*,*)"Extr",ABS(cm2xr+xcm1), ABS(cm2yr+ycm1), ABS(cm2zr+zcm1) - - - conf=conf+1 -c write (*,*) - - - - - - korekta2 = numerr2(1)-1 -c write(*,*) "Original number of the first residue in -c & the second protein:" -c write(*,*) numerr2(1) - -c write(*,*)"Correction of the first residue in the second protein:" -c write(*,*) korekta2 - do i=1,ilosc_atomow2 - write(3,800) atoma2(i),numera2(i),nazwaa2(i),nazwar2(i),"B", - & (numerr2(i)+ile_reszt_mol1-korekta2), - & x2r(i),y2r(i),z2r(i) - enddo - write(3,303) "TER" -c write(3,304) "ENDMDL" -c write(3,305) "MODEL", conf - write(3,303) "END" - - 200 continue - proba = proba + 1 - enddo - 133 continue - - close (3) - -c call sleep(1) - - - if (ii1.lt.10) then - write (plik4, "(A9,I1,a4)") "template0", ii1, ".sco" - else - write (plik4, "(A8,I2,a4)") "template", ii1, ".sco" - endif - - open (7,file=plik4) - - - if (peptide.eq.1) then - do ijl=1,(ile_reszt_mol1+ile_reszt_mol2+ilee) - if (glys1.eq.0) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.ge.(ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - - if (glys1.eq.1) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.ge.(ile_reszt_mol1+1)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - enddo - endif - - - if (peptide.eq.0) then - do ijl=1,(ile_reszt_mol1+ile_reszt_mol2+ilee) -c write(*,*) "ijl" -c no Gly - if (glys1.eq.0.and.glye1.eq.0.and.glys2.eq.0) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+3)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.gt.(ile_reszt_mol1+3).and. - & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+3)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "2" - if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+4)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - - -c chain 1 first Gly - if (glys1.eq.1.and.glye1.eq.0.and.glys2.eq.0) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.ge.(ile_reszt_mol1+1).and.ijl.le.(ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.gt.(ile_reszt_mol1+2).and. - & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "2" - if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+3)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - -c chain 1 last Gly - if (glys1.eq.0.and.glye1.eq.1.and.glys2.eq.0) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.gt.(ile_reszt_mol1+2).and. - & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "2" - if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+3)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - -c chain 1 first Gly and chain 1 last Gly - if (glys1.eq.1.and.glye1.eq.1.and.glys2.eq.0) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.ge.(ile_reszt_mol1+1).and.ijl.le.(ile_reszt_mol1+1)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.gt.(ile_reszt_mol1+1).and. - & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+1)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "2" - if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - -c chain 2 first Gly - if (glys1.eq.0.and.glye1.eq.0.and.glys2.eq.1) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.gt.(ile_reszt_mol1+2).and. - & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "2" - if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+3)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - -c chain 1 first Gly chain 2 first Gly - if (glys1.eq.1.and.glye1.eq.0.and.glys2.eq.1) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.ge.(ile_reszt_mol1+1).and.ijl.le.(ile_reszt_mol1+1)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.gt.(ile_reszt_mol1+1).and. - & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+1)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "2" - if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - -c chain 1 last Gly chain 2 first Gly - if (glys1.eq.0.and.glye1.eq.1.and.glys2.eq.1) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.le.ile_reszt_mol1+1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" -c if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+3)) -c & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.gt.(ile_reszt_mol1+1).and. - & ijl.le.(ile_reszt_mol2+ile_reszt_mol1+1)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "2" - if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+2)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - -c all Gly - if (glys1.eq.1.and.glye1.eq.1.and.glys2.eq.1) then - if (ijl.eq.1) write(7,*) ijl, "1.0 1.0 1.0 ", "1" - if (ijl.le.ile_reszt_mol1.and.ijl.gt.1) - & write(7,*) ijl, "1.0 1.0 1.0 ", "1" -c if (ijl.ge.(ile_reszt_mol1+2).and.ijl.le.(ile_reszt_mol1+3)) -c & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - if (ijl.gt.(ile_reszt_mol1).and. - & ijl.le.(ile_reszt_mol2+ile_reszt_mol1)) - & write(7,*) ijl, "1.0 1.0 1.0 ", "2" -c if (ijl.ge.(ile_reszt_mol2+ile_reszt_mol1+1)) -c & write(7,*) ijl, "1.0 1.0 1.0 ", "0" - endif - - - - enddo - endif - - - close (7) - -c koniec petli po ilosci struktur - enddo - -c do i=1,20 -c write(*,*) i, cmxx(i), cmyy(i), cmzz(i) -c dd=(cm2xr-cmxx(ir))**2+(cm2yr-cmyy(ir))**2+(cm2zr-cmyy(ir))**2 -c enddo - -c do i=1,20 -c do j=1,20 -c dd=sqrt((cmxx(i)-cmxx(j))**2+(cmyy(i)-cmyy(j))**2+ -c & (cmzz(i)-cmzz(j))**2) -c write(*,*) i,j,dd -c enddo -c enddo - - - 300 format(6f8.2) - 301 format(3f8.2) - 302 format(f8.2) - 800 format(a4,2X,i5,1X,a4,1X,a3,1X,a1,i4,4X,3f8.3) - 303 format(a3) - 304 format(a6) - 305 format(a5,1X,i8) - end - - - - - SUBROUTINE SRAND(ISEED) -C -C This subroutine sets the integer seed to be used with the -C companion RAND function to the value of ISEED. A flag is -C set to indicate that the sequence of pseudo-random numbers -C for the specified seed should start from the beginning. -C - COMMON /SEED/JSEED,IFRST -C - JSEED = ISEED - IFRST = 0 -C - RETURN - END - REAL FUNCTION RAND() -C -C This function returns a pseudo-random number for each invocation. -C It is a FORTRAN 77 adaptation of the "Integer Version 2" minimal -C standard number generator whose Pascal code appears in the article: -C -C Park, Steven K. and Miller, Keith W., "Random Number Generators: -C Good Ones are Hard to Find", Communications of the ACM, -C October, 1988. -C - PARAMETER (MPLIER=16807,MODLUS=2147483647,MOBYMP=127773, - + MOMDMP=2836) -C - COMMON /SEED/JSEED,IFRST - INTEGER HVLUE, LVLUE, TESTV, NEXTN - SAVE NEXTN -C - IF (IFRST .EQ. 0) THEN - NEXTN = JSEED - IFRST = 1 - ENDIF -C - HVLUE = NEXTN / MOBYMP - LVLUE = MOD(NEXTN, MOBYMP) - TESTV = MPLIER*LVLUE - MOMDMP*HVLUE - IF (TESTV .GT. 0) THEN - NEXTN = TESTV - ELSE - NEXTN = TESTV + MODLUS - ENDIF - RAND = REAL(NEXTN)/REAL(MODLUS) -C - RETURN - END - BLOCKDATA RANDBD - COMMON /SEED/JSEED,IFRST -C - DATA JSEED,IFRST/123456789,0/ -C - END - - Subroutine ranorND(b,nd,ilosc_atomow2,ii1) - double precision b -C generates a random vector on a unit sphere onC an ND-dimensional space. -C algorithm 40 page 410. -C the algorithm assumes that the formula for bz is valid, i.e -C bz=(1.0-2.0*ransq), -C and also that, ransq can be computed as as the sum of the independent random -C numbers to the second power (expression 3). - dimension ran(nd-1), b(nd) - integer seed -c write(*,*) "In Subroutine ranorND(b,nd), nd=", nd -c write(*,*) "ilosc_atomow2=", ilosc_atomow2 -c do j=1,ilosc_atomow2 - ransq=2 - seed = time()*ii1 - call srand(seed) - do while (ransq.ge.1) -c write(*,*) ransq - rsq=0.0 - do i=1,nd-1 - ran(i)=1.0-2.0*rand(0) -c write(*,*) i, ran(i) - rsq=ran(i)*ran(i)+rsq ! (3) -c write(*,*) i, rsq - enddo - ransq=rsq -c write(*,*) j, ransq - enddo - ranh=2.0*sqrt(1.0-ransq) -c write(*,*) j, ranh, ransq - do i=1,nd-1 - b(i)=ran(i)*ranh -c write(*,*) ran(i), ranh - enddo - b(nd)=(1.0-2.0*ransq) -c write(*,*) b(1,j), b(2,j), b(3,j), b(4,j) -c enddo - return - end - - subroutine rot_trans(xt2,t,q,xf,ilosc_atomow2) -C x coordinates, t translation vector, q quaternion - double precision xt2(90000,3),xf(90000,3) - double precision t(3),q(4) - integer i - write(*,*) "Rotation vector:", q(1), q(2), q(3), q(4) - r11= q(1)*q(1)+q(2)*q(2)-q(3)*q(3)-q(4)*q(4) - r22= q(1)*q(1)-q(2)*q(2)+q(3)*q(3)-q(4)*q(4) - r33= q(1)*q(1)-q(2)*q(2)-q(3)*q(3)+q(4)*q(4) - r12= 2*(q(2)*q(3)-q(1)*q(4)) - r21= 2*(q(2)*q(3)+q(1)*q(4)) - r13= 2*(q(2)*q(4)+q(1)*q(3)) - r31= 2*(q(2)*q(4)-q(1)*q(3)) - r23= 2*(q(3)*q(4)-q(1)*q(2)) - r32= 2*(q(3)*q(4)+q(1)*q(2)) - -c write(*,*) r11, r22, r33, r12, r21, r13, r31, r23, r32 - - do i=1,ilosc_atomow2 - xf(i,1)= r11*xt2(i,1)+r12*xt2(i,2)+r13*xt2(i,3) + t(1) - xf(i,2)= r21*xt2(i,1)+r22*xt2(i,2)+r23*xt2(i,3) + t(2) - xf(i,3)= r31*xt2(i,1)+r32*xt2(i,2)+r33*xt2(i,3) + t(3) -c write(*,*) i, xt2(i,1), xt2(i,2), xt2(i,3) -c write(*,*) i, xf(i,1), xf(i,2), xf(i,3) - enddo - - return - end - -- 1.7.9.5