Dear OpenBabel developers, while playing with obenergy I found a few more misassignments of MMFF94 atom types and/or MMFF94 charges. Included is a test.sdf file which triggers the misassignments, so you may test yourself the results before and after the cure.
The attached patch fixes all problems with no collateral issues: I have verified that the whole 761-molecule MMFF94 validation set is correctly typed and charged. I hope you will consider including it in the forthcoming 2.3 release. Thanks for your time, best regards Paolo -- ================================================================ Paolo Tosco, Ph.D. Phone: +39 011 6707680 Dipartimento di Scienza Fax: +39 011 6707687 e Tecnologia del Farmaco Mob: +39 348 5537206 Via Pietro Giuria, 9 E-mail: [email protected] I-10125 Torino Italy http://www.open3dqsar.org ================================================================ ##### ATTACHMENTS ##### ##### START ob_test_suite_05-Oct-2010.sdf ##### CUDPAS CUDPAS 17 17 0 0 0 0 0 0 0 0999 V2000 -8.6500 -7.0282 14.6685 N 0 0 0 0 0 0 0 0 0 0 0 0 -8.4295 -6.1672 15.6857 C 0 0 0 0 0 0 0 0 0 0 0 0 -8.4616 -4.7920 15.5489 C 0 0 0 0 0 0 0 0 0 0 0 0 -8.7204 -4.2531 14.2851 C 0 0 0 0 0 0 0 0 0 0 0 0 -8.9198 -5.1097 13.2036 C 0 0 0 0 0 0 0 0 0 0 0 0 -8.8790 -6.4748 13.4528 C 0 0 0 0 0 0 0 0 0 0 0 0 -9.1333 -4.7224 11.9116 O 0 0 0 0 0 0 0 0 0 0 0 0 -8.8081 -2.7918 14.1699 C 0 0 0 0 0 0 0 0 0 0 0 0 -8.0140 -1.8188 14.5078 N 0 0 0 0 0 0 0 0 0 0 0 0 -6.8082 -2.1949 15.0372 O 0 5 0 0 0 0 0 0 0 0 0 0 -10.0274 -2.2522 13.5585 N 0 3 0 0 0 0 0 0 0 0 0 0 -11.0231 -2.1167 14.2902 O 0 0 0 0 0 0 0 0 0 0 0 0 -10.0028 -2.0935 12.3224 O 0 5 0 0 0 0 0 0 0 0 0 0 -8.2205 -6.6240 16.6483 H 0 0 0 0 0 0 0 0 0 0 0 0 -8.2759 -4.1425 16.3998 H 0 0 0 0 0 0 0 0 0 0 0 0 -9.0291 -7.1852 12.6451 H 0 0 0 0 0 0 0 0 0 0 0 0 -8.9776 -3.7617 11.8043 H 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 1 6 2 0 0 0 0 2 3 2 0 0 0 0 2 14 1 0 0 0 0 3 4 1 0 0 0 0 3 15 1 0 0 0 0 4 5 2 0 0 0 0 4 8 1 0 0 0 0 5 6 1 0 0 0 0 5 7 1 0 0 0 0 6 16 1 0 0 0 0 7 17 1 0 0 0 0 8 9 2 0 0 0 0 8 11 1 0 0 0 0 9 10 1 0 0 0 0 11 12 2 0 0 0 0 11 13 1 0 0 0 0 M CHG 1 10 -1 M CHG 1 11 1 M CHG 1 13 -1 M END $$$$ FADVUB FADVUB 23 22 0 0 1 0 0 0 0 0999 V2000 3.6430 9.3364 15.9668 S 0 0 3 0 0 0 0 0 0 0 0 0 2.5018 10.2318 15.9341 O 0 0 0 0 0 0 0 0 0 0 0 0 3.6326 7.9472 15.2961 N 0 0 0 0 0 0 0 0 0 0 0 0 5.0525 10.2191 15.3273 C 0 0 0 0 0 0 0 0 0 0 0 0 4.0636 9.0822 17.6871 C 0 0 0 0 0 0 0 0 0 0 0 0 3.8229 10.3355 18.5335 C 0 0 0 0 0 0 0 0 0 0 0 0 4.7014 10.3639 19.7737 C 0 0 0 0 0 0 0 0 0 0 0 0 4.1033 11.3322 20.7816 N 0 0 0 0 0 0 0 0 0 0 0 0 6.1611 10.8340 19.4749 C 0 0 0 0 0 0 0 0 0 0 0 0 6.6676 10.4904 18.3864 O 0 0 0 0 0 0 0 0 0 0 0 0 6.5565 11.5892 20.4214 O 0 0 0 0 0 0 0 0 0 0 0 0 2.8042 7.4109 15.5588 H 0 0 0 0 0 0 0 0 0 0 0 0 5.9489 9.6113 15.4640 H 0 0 0 0 0 0 0 0 0 0 0 0 5.1488 11.1682 15.8569 H 0 0 0 0 0 0 0 0 0 0 0 0 4.8824 10.4096 14.2653 H 0 0 0 0 0 0 0 0 0 0 0 0 5.0946 8.7211 17.7138 H 0 0 0 0 0 0 0 0 0 0 0 0 3.4242 8.2717 18.0553 H 0 0 0 0 0 0 0 0 0 0 0 0 4.0058 11.2431 17.9454 H 0 0 0 0 0 0 0 0 0 0 0 0 2.7619 10.3616 18.8134 H 0 0 0 0 0 0 0 0 0 0 0 0 4.7345 9.3951 20.2831 H 0 0 0 0 0 0 0 0 0 0 0 0 4.9808 11.7054 21.2274 H 0 0 0 0 0 0 0 0 0 0 0 0 3.5150 10.9125 21.4995 H 0 0 0 0 0 0 0 0 0 0 0 0 3.6864 12.1537 20.3367 H 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 1 3 2 0 0 0 0 1 4 1 0 0 0 0 1 5 1 0 0 0 0 3 12 1 0 0 0 0 4 13 1 0 0 0 0 4 14 1 0 0 0 0 4 15 1 0 0 0 0 5 6 1 0 0 0 0 5 16 1 0 0 0 0 5 17 1 0 0 0 0 6 7 1 0 0 0 0 6 18 1 0 0 0 0 6 19 1 0 0 0 0 7 8 1 0 0 0 0 7 9 1 0 0 0 0 7 20 1 0 0 0 0 8 21 1 0 0 0 0 8 22 1 0 0 0 0 8 23 1 0 0 0 0 9 10 2 0 0 0 0 9 11 1 0 0 0 0 M CHG 1 8 1 M CHG 1 11 -1 M END $$$$ FIYBIY FIYBIY 26 27 0 0 1 0 0 0 0 0999 V2000 0.8736 2.9588 0.7491 S 0 0 3 0 0 0 0 0 0 0 0 0 1.0726 1.6584 0.1414 O 0 0 0 0 0 0 0 0 0 0 0 0 -0.7561 4.8572 -1.7033 O 0 0 0 0 0 0 0 0 0 0 0 0 1.1857 5.4699 -0.7407 O 0 0 0 0 0 0 0 0 0 0 0 0 -0.2174 3.9606 0.3549 N 0 0 0 0 0 0 0 0 0 0 0 0 0.7468 2.6933 2.5083 C 0 0 0 0 0 0 0 0 0 0 0 0 1.3313 1.5509 3.0644 C 0 0 0 0 0 0 0 0 0 0 0 0 1.2508 1.3370 4.4405 C 0 0 0 0 0 0 0 0 0 0 0 0 0.5843 2.2556 5.2525 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.0103 3.3870 4.6917 C 0 0 0 0 0 0 0 0 0 0 0 0 0.0657 3.6088 3.3163 C 0 0 0 0 0 0 0 0 0 0 0 0 0.0130 4.7593 -0.7599 C 0 0 0 0 0 0 0 0 0 0 0 0 2.0522 5.3191 0.4038 C 0 0 3 0 0 0 0 0 0 0 0 0 2.4062 3.8531 0.5903 C 0 0 0 0 0 0 0 0 0 0 0 0 3.3019 6.1488 0.1415 C 0 0 0 0 0 0 0 0 0 0 0 0 1.8393 0.8207 2.4380 H 0 0 0 0 0 0 0 0 0 0 0 0 1.6983 0.4486 4.8799 H 0 0 0 0 0 0 0 0 0 0 0 0 0.5158 2.0821 6.3240 H 0 0 0 0 0 0 0 0 0 0 0 0 -0.5441 4.0902 5.3268 H 0 0 0 0 0 0 0 0 0 0 0 0 -0.4200 4.4839 2.8918 H 0 0 0 0 0 0 0 0 0 0 0 0 1.5431 5.7311 1.2846 H 0 0 0 0 0 0 0 0 0 0 0 0 3.0364 3.6755 1.4650 H 0 0 0 0 0 0 0 0 0 0 0 0 2.9060 3.4534 -0.2991 H 0 0 0 0 0 0 0 0 0 0 0 0 3.0353 7.1997 -0.0149 H 0 0 0 0 0 0 0 0 0 0 0 0 4.0028 6.0874 0.9795 H 0 0 0 0 0 0 0 0 0 0 0 0 3.8115 5.8159 -0.7695 H 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 1 5 2 0 0 0 0 1 6 1 0 0 0 0 1 14 1 0 0 0 0 3 12 2 0 0 0 0 4 12 1 0 0 0 0 4 13 1 0 0 0 0 5 12 1 0 0 0 0 6 7 1 0 0 0 0 6 11 2 0 0 0 0 7 8 2 0 0 0 0 7 16 1 0 0 0 0 8 9 1 0 0 0 0 8 17 1 0 0 0 0 9 10 2 0 0 0 0 9 18 1 0 0 0 0 10 11 1 0 0 0 0 10 19 1 0 0 0 0 11 20 1 0 0 0 0 13 14 1 0 0 0 0 13 15 1 0 0 0 0 13 21 1 0 0 0 0 14 22 1 0 0 0 0 14 23 1 0 0 0 0 15 24 1 0 0 0 0 15 25 1 0 0 0 0 15 26 1 0 0 0 0 M END $$$$ FIZGOK FIZGOK 21 21 0 0 0 0 0 0 0 0999 V2000 1.7957 1.3128 7.9486 S 0 0 0 0 0 0 0 0 0 0 0 0 1.4860 0.8966 6.2778 C 0 0 0 0 0 0 0 0 0 0 0 0 0.2127 1.1307 5.9565 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.5629 1.6810 7.0492 C 0 0 0 0 0 0 0 0 0 0 0 0 0.1447 1.8482 8.1676 C 0 0 0 0 0 0 0 0 0 0 0 0 2.7726 0.2964 5.3600 Cl 0 0 0 0 0 0 0 0 0 0 0 0 -0.4489 0.8414 4.4044 Cl 0 0 0 0 0 0 0 0 0 0 0 0 -2.2166 2.0955 6.8949 Cl 0 0 0 0 0 0 0 0 0 0 0 0 -0.2919 2.4706 9.6776 Cl 0 0 0 0 0 0 0 0 0 0 0 0 2.8683 2.4065 8.1591 N 0 0 0 0 0 0 0 0 0 0 0 0 2.8022 3.6208 7.5007 C 0 0 0 0 0 0 0 0 0 0 0 0 1.9115 3.9210 6.7174 O 0 0 0 0 0 0 0 0 0 0 0 0 3.8375 4.4328 7.8267 O 0 0 0 0 0 0 0 0 0 0 0 0 3.8245 5.7059 7.1764 C 0 0 0 0 0 0 0 0 0 0 0 0 5.0365 6.4891 7.6422 C 0 0 0 0 0 0 0 0 0 0 0 0 1.8915 0.0432 8.6558 O 0 0 0 0 0 0 0 0 0 0 0 0 3.8696 5.5681 6.0902 H 0 0 0 0 0 0 0 0 0 0 0 0 2.9103 6.2487 7.4418 H 0 0 0 0 0 0 0 0 0 0 0 0 5.0696 7.4746 7.1694 H 0 0 0 0 0 0 0 0 0 0 0 0 5.9591 5.9504 7.4022 H 0 0 0 0 0 0 0 0 0 0 0 0 5.0171 6.6187 8.7294 H 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 1 5 1 0 0 0 0 1 10 2 0 0 0 0 1 16 2 0 0 0 0 2 3 2 0 0 0 0 2 6 1 0 0 0 0 3 4 1 0 0 0 0 3 7 1 0 0 0 0 4 5 2 0 0 0 0 4 8 1 0 0 0 0 5 9 1 0 0 0 0 10 11 1 0 0 0 0 11 12 2 0 0 0 0 11 13 1 0 0 0 0 13 14 1 0 0 0 0 14 15 1 0 0 0 0 14 17 1 0 0 0 0 14 18 1 0 0 0 0 15 19 1 0 0 0 0 15 20 1 0 0 0 0 15 21 1 0 0 0 0 M END $$$$ SEMDIX SEMDIX 28 27 0 0 1 0 0 0 0 0999 V2000 0.8497 6.5570 9.1635 S 0 0 0 0 0 0 0 0 0 0 0 0 -1.6670 6.2080 9.8154 F 0 0 0 0 0 0 0 0 0 0 0 0 1.0246 5.0706 8.9656 O 0 0 0 0 0 0 0 0 0 0 0 0 1.4995 7.4084 8.0980 O 0 5 0 0 0 0 0 0 0 0 0 0 -1.5325 8.1908 8.5575 N 0 3 0 0 0 0 0 0 0 0 0 0 -0.9631 6.7618 8.7906 C 0 0 3 0 0 0 0 0 0 0 0 0 -1.0031 8.6752 7.1863 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.7131 9.9192 6.6599 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.0109 9.1509 9.6394 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.3361 8.7553 11.0734 C 0 0 0 0 0 0 0 0 0 0 0 0 -3.0573 8.0969 8.6094 C 0 0 0 0 0 0 0 0 0 0 0 0 -3.6695 7.1965 7.5435 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.1630 6.1753 7.8879 H 0 0 0 0 0 0 0 0 0 0 0 0 -1.1044 7.8541 6.4691 H 0 0 0 0 0 0 0 0 0 0 0 0 0.0516 8.9292 7.2918 H 0 0 0 0 0 0 0 0 0 0 0 0 -1.6419 10.7610 7.3535 H 0 0 0 0 0 0 0 0 0 0 0 0 -1.2423 10.2331 5.7217 H 0 0 0 0 0 0 0 0 0 0 0 0 -2.7680 9.7391 6.4390 H 0 0 0 0 0 0 0 0 0 0 0 0 -1.4694 10.1259 9.4419 H 0 0 0 0 0 0 0 0 0 0 0 0 0.0694 9.2712 9.5121 H 0 0 0 0 0 0 0 0 0 0 0 0 -0.8940 7.7993 11.3612 H 0 0 0 0 0 0 0 0 0 0 0 0 -0.9279 9.5106 11.7543 H 0 0 0 0 0 0 0 0 0 0 0 0 -2.4125 8.7147 11.2584 H 0 0 0 0 0 0 0 0 0 0 0 0 -3.3475 7.7212 9.5954 H 0 0 0 0 0 0 0 0 0 0 0 0 -3.4525 9.1149 8.5237 H 0 0 0 0 0 0 0 0 0 0 0 0 -3.3939 6.1480 7.6876 H 0 0 0 0 0 0 0 0 0 0 0 0 -3.3930 7.4904 6.5284 H 0 0 0 0 0 0 0 0 0 0 0 0 -4.7617 7.2494 7.6099 H 0 0 0 0 0 0 0 0 0 0 0 0 1 3 2 0 0 0 0 1 4 1 0 0 0 0 1 6 1 0 0 0 0 2 6 1 0 0 0 0 5 6 1 0 0 0 0 5 7 1 0 0 0 0 5 9 1 0 0 0 0 5 11 1 0 0 0 0 6 13 1 0 0 0 0 7 8 1 0 0 0 0 7 14 1 0 0 0 0 7 15 1 0 0 0 0 8 16 1 0 0 0 0 8 17 1 0 0 0 0 8 18 1 0 0 0 0 9 10 1 0 0 0 0 9 19 1 0 0 0 0 9 20 1 0 0 0 0 10 21 1 0 0 0 0 10 22 1 0 0 0 0 10 23 1 0 0 0 0 11 12 1 0 0 0 0 11 24 1 0 0 0 0 11 25 1 0 0 0 0 12 26 1 0 0 0 0 12 27 1 0 0 0 0 12 28 1 0 0 0 0 M CHG 1 4 -1 M CHG 1 5 1 M END $$$$ SURDOX02 SURDOX02 10 9 0 0 0 0 0 0 0 0999 V2000 4.9022 2.5288 1.4835 S 0 0 0 0 0 0 0 0 0 0 0 0 6.5479 2.5279 2.1508 C 0 0 0 0 0 0 0 0 0 0 0 0 7.1781 3.6960 2.3858 N 0 0 0 0 0 0 0 0 0 0 0 0 4.3537 1.2552 1.9185 O 0 0 0 0 0 0 0 0 0 0 0 0 7.9904 3.7319 2.9887 H 0 0 0 0 0 0 0 0 0 0 0 0 6.6186 4.5496 2.3672 H 0 0 0 0 0 0 0 0 0 0 0 0 4.3401 3.7831 1.9554 O 0 0 0 0 0 0 0 0 0 0 0 0 7.1907 1.3603 2.3517 N 0 0 0 0 0 0 0 0 0 0 0 0 8.0034 1.3156 2.9534 H 0 0 0 0 0 0 0 0 0 0 0 0 6.6404 0.5016 2.3081 H 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 1 4 2 0 0 0 0 1 7 2 0 0 0 0 2 3 1 0 0 0 0 2 8 1 0 0 0 0 3 5 1 0 0 0 0 3 6 1 0 0 0 0 8 9 1 0 0 0 0 8 10 1 0 0 0 0 M END $$$$ VALWOU VALWOU 31 32 0 0 0 0 0 0 0 0999 V2000 -3.2041 0.1999 8.6171 S 0 0 0 0 0 0 0 0 0 0 0 0 -3.0262 2.5287 6.7298 S 0 0 0 0 0 0 0 0 0 0 0 0 -3.2872 3.2134 8.0550 O 0 0 0 0 0 0 0 0 0 0 0 0 -1.5541 2.3398 6.4435 O 0 5 0 0 0 0 0 0 0 0 0 0 -3.6498 0.7930 6.9989 C 0 0 0 0 0 0 0 0 0 0 0 0 -5.0072 0.8218 6.8941 F 0 0 0 0 0 0 0 0 0 0 0 0 -3.2190 -0.0349 6.0148 F 0 0 0 0 0 0 0 0 0 0 0 0 -1.5176 -0.2065 8.2909 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.0555 -0.0076 7.0443 F 0 0 0 0 0 0 0 0 0 0 0 0 -1.4197 -1.5634 8.4557 F 0 0 0 0 0 0 0 0 0 0 0 0 -0.5217 0.3612 9.3001 N 0 3 0 0 0 0 0 0 0 0 0 0 -0.8475 -0.1028 10.7071 C 0 0 0 0 0 0 0 0 0 0 0 0 0.2631 0.3441 11.6625 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.4851 1.8901 9.2453 C 0 0 0 0 0 0 0 0 0 0 0 0 0.5153 2.3997 10.2936 C 0 0 0 0 0 0 0 0 0 0 0 0 0.8513 -0.1557 8.8803 C 0 0 0 0 0 0 0 0 0 0 0 0 1.9200 0.4078 9.8214 C 0 0 0 0 0 0 0 0 0 0 0 0 1.2739 1.2343 10.9352 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.9413 -1.1944 10.7077 H 0 0 0 0 0 0 0 0 0 0 0 0 -1.7996 0.3412 11.0154 H 0 0 0 0 0 0 0 0 0 0 0 0 0.7656 -0.5355 12.0831 H 0 0 0 0 0 0 0 0 0 0 0 0 -0.1774 0.8803 12.5118 H 0 0 0 0 0 0 0 0 0 0 0 0 -1.4770 2.2803 9.4712 H 0 0 0 0 0 0 0 0 0 0 0 0 -0.1454 2.1848 8.2527 H 0 0 0 0 0 0 0 0 0 0 0 0 1.2153 3.0993 9.8208 H 0 0 0 0 0 0 0 0 0 0 0 0 -0.0165 2.9732 11.0629 H 0 0 0 0 0 0 0 0 0 0 0 0 1.0505 0.1556 7.8484 H 0 0 0 0 0 0 0 0 0 0 0 0 0.8360 -1.2507 8.9270 H 0 0 0 0 0 0 0 0 0 0 0 0 2.5068 -0.4158 10.2459 H 0 0 0 0 0 0 0 0 0 0 0 0 2.6256 1.0251 9.2518 H 0 0 0 0 0 0 0 0 0 0 0 0 2.0330 1.6041 11.6322 H 0 0 0 0 0 0 0 0 0 0 0 0 1 5 1 0 0 0 0 1 8 1 0 0 0 0 2 3 2 0 0 0 0 2 4 1 0 0 0 0 2 5 1 0 0 0 0 5 6 1 0 0 0 0 5 7 1 0 0 0 0 8 9 1 0 0 0 0 8 10 1 0 0 0 0 8 11 1 0 0 0 0 11 12 1 0 0 0 0 11 14 1 0 0 0 0 11 16 1 0 0 0 0 12 13 1 0 0 0 0 12 19 1 0 0 0 0 12 20 1 0 0 0 0 13 18 1 0 0 0 0 13 21 1 0 0 0 0 13 22 1 0 0 0 0 14 15 1 0 0 0 0 14 23 1 0 0 0 0 14 24 1 0 0 0 0 15 18 1 0 0 0 0 15 25 1 0 0 0 0 15 26 1 0 0 0 0 16 17 1 0 0 0 0 16 27 1 0 0 0 0 16 28 1 0 0 0 0 17 18 1 0 0 0 0 17 29 1 0 0 0 0 17 30 1 0 0 0 0 18 31 1 0 0 0 0 M CHG 1 4 -1 M CHG 1 11 1 M END $$$$ VUWXUG VUWXUG 10 9 0 0 0 0 0 0 0 0999 V2000 -1.1326 2.7484 -0.7778 O 0 5 0 0 0 0 0 0 0 0 0 0 -0.1903 0.7437 0.1965 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.4738 1.5328 -0.9252 N 0 0 0 0 0 0 0 0 0 0 0 0 -0.1968 1.0800 1.3793 O 0 0 0 0 0 0 0 0 0 0 0 0 -0.5916 1.0431 -1.8066 H 0 0 0 0 0 0 0 0 0 0 0 0 0.1903 -0.7437 -0.1965 C 0 0 0 0 0 0 0 0 0 0 0 0 0.4738 -1.5328 0.9252 N 0 0 0 0 0 0 0 0 0 0 0 0 0.1968 -1.0800 -1.3793 O 0 0 0 0 0 0 0 0 0 0 0 0 1.1326 -2.7484 0.7778 O 0 5 0 0 0 0 0 0 0 0 0 0 0.5916 -1.0431 1.8066 H 0 0 0 0 0 0 0 0 0 0 0 0 1 3 1 0 0 0 0 2 3 1 0 0 0 0 2 4 2 0 0 0 0 2 6 1 0 0 0 0 3 5 1 0 0 0 0 6 7 1 0 0 0 0 6 8 2 0 0 0 0 7 9 1 0 0 0 0 7 10 1 0 0 0 0 M CHG 1 1 -1 M CHG 1 9 -1 M END $$$$ ##### END ob_test_suite_05-Oct-2010.sdf ##### ##### PATCH ##### *** forcefieldmmff94.cpp 2010-10-05 11:45:30.000000000 +0200 --- forcefieldmmff94.cpp 2010-10-05 11:45:41.000000000 +0200 *************** *** 2306,2313 **** // Nitrate anion oxygen (O2N, O2NO, O3N) } if (bond->IsSingle()) { // O--N ! return 32; // Oxygen in N-oxides (ONX) } else { // O==N return 7; // Nitroso oxygen (O=N) --- 2306,2317 ---- // Nitrate anion oxygen (O2N, O2NO, O3N) } if (bond->IsSingle()) { + if ((nbr->GetValence() == 2) || (nbr->BOSum() == 3)) + // O(-)--N + return 35; + else // O--N ! return 32; // Oxygen in N-oxides (ONX) } else { // O==N return 7; // Nitroso oxygen (O=N) *************** *** 2329,2349 **** // are all sulfur nbr atoms carbon? bool isSulfoxide = true; FOR_NBORS_OF_ATOM (nbr2, &*nbr) { if (atom == &*nbr2) continue; ! if (nbr->GetBond(&*nbr2)->IsDouble() && !nbr2->IsOxygen()) ! return 7; // O=S on sulfur doubly bonded to, e.g., C (O=S=) ! if (nbr2->IsOxygen() && nbr2->GetValence() == 1) isSulfoxide = false; } if (isSulfoxide) return 7; // Doubly bonded sulfoxide oxygen (O=S) else ! return 32; // (O2S, O3S, O4S) } } --- 2333,2363 ---- // are all sulfur nbr atoms carbon? bool isSulfoxide = true; + int oxygenBoundToSulfur = 0; FOR_NBORS_OF_ATOM (nbr2, &*nbr) { if (atom == &*nbr2) continue; ! if (nbr2->IsOxygen()) ! ++oxygenBoundToSulfur; ! } ! FOR_NBORS_OF_ATOM (nbr2, &*nbr) { ! if (atom == &*nbr2) ! continue; ! ! if (nbr->GetBond(&*nbr2)->IsDouble() ! && nbr2->IsCarbon() && oxygenBoundToSulfur == 1) ! isSulfoxide = false; // O=S on sulfur doubly bonded to, e.g., C (O=S=) ! if ((nbr2->IsOxygen() && nbr2->GetValence() == 1) ! || (nbr2->IsNitrogen() && nbr2->GetValence() == 2)) isSulfoxide = false; } if (isSulfoxide) return 7; // Doubly bonded sulfoxide oxygen (O=S) else ! return 32; // (O2S, O2S=C, O3S, O4S) } } *************** *** 2423,2429 **** FOR_NBORS_OF_ATOM (nbr, atom) { bond = _mol.GetBond(&*nbr, atom); if (bond->IsDouble()) { ! doubleBondTo = nbr->GetAtomicNum(); } if (nbr->GetValence() == 1) { --- 2437,2444 ---- FOR_NBORS_OF_ATOM (nbr, atom) { bond = _mol.GetBond(&*nbr, atom); if (bond->IsDouble()) { ! if (nbr->GetAtomicNum() == 6) ! doubleBondTo = 6; } if (nbr->GetValence() == 1) { *************** *** 3655,3660 **** --- 3670,3676 ---- if (type == 32) { int o_count = 0; bool sulfonamide = false; + bool sulfone_s_c = false; int s_count = 0; FOR_NBORS_OF_ATOM(nbr, &*atom) { *************** *** 3665,3670 **** --- 3681,3688 ---- s_count++; if (nbr2->IsNitrogen() && !nbr2->IsAromatic()) sulfonamide = true; + if (nbr2->IsCarbon() && nbr->GetBond(&*nbr2)->IsDouble()) + sulfone_s_c = true; } if (nbr->IsCarbon()) *************** *** 3674,3681 **** atom->SetPartialCharge(-1.0 / o_count); // O3N if (nbr->IsSulfur() && !sulfonamide) ! if (((o_count + s_count) == 2) && (nbr->GetValence() == 3) && (nbr->BOSum() == 3)) ! atom->SetPartialCharge(-0.5); // O2S else if ((o_count + s_count) == 3) atom->SetPartialCharge(-1.0 / 3.0); // O3S else if ((o_count + s_count) == 4) --- 3692,3700 ---- atom->SetPartialCharge(-1.0 / o_count); // O3N if (nbr->IsSulfur() && !sulfonamide) ! if (((o_count + s_count) == 2) && (nbr->GetValence() == 3) ! && (nbr->BOSum() >= 3) && !sulfone_s_c) ! atom->SetPartialCharge(-0.5); // O2S (sulfinate) else if ((o_count + s_count) == 3) atom->SetPartialCharge(-1.0 / 3.0); // O3S else if ((o_count + s_count) == 4) ------------------------------------------------------------------------------ Beautiful is writing same markup. Internet Explorer 9 supports standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3. Spend less time writing and rewriting code and more time creating great experiences on the web. Be a part of the beta today. http://p.sf.net/sfu/beautyoftheweb _______________________________________________ OpenBabel-discuss mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openbabel-discuss
