I think that I sorted out the issue. The problem was in the phmodel.txt, where the azide transformations were matching the group using only two nitrogens instead of three:
[ND1:1]=[ND2:2]=A >> [N-:1]=[N+:2]=A I suspect that when modifying the bonds, a nitrogen was getting detached from the atom to which it was bonded, splitting the molecule. I've come up with some patterns matching the azide and it doesn't seem to break bonds anymore (plus, now it catches also the isolated azide cation). I've patched phmodel.txt and I'm making a pull request. Cheers, S On 03/09/2016 02:58 PM, Stefano Forli wrote: > I'm moving this discussion to the development list, I think it's more > appropriate. > I've tried to debug the issue and I've checked the state of the molecule > after each > operation. I've tested the code in Python with v.2.3.2 and the latest source > code from Git. > > This is what happens when I follow the procedure I described before to > process this SMILES > string: '[N-]=[N+]=NC' > > mol.DeleteHydrogens() -> [N-]=[N+]=NC > mol.UnsetFlag(ob.OB_PH_CORRECTED_MOL) -> [N-]=[N+]=NC > mol.SetAutomaticFormalCharge(True) -> [N-]=[N+]=NC > mol.AddHydrogens(False, True, 7.4) -> [N-]=[NH2+].C > > If I apply the formal charge correction used in Avogadro, the charge > information is lost, > but the result is the same: > > mol.DeleteHydrogens() -> [N-]=[N+]=NC > mol.UnsetFlag(ob.OB_PH_CORRECTED_MOL) -> [N-]=[N+]=NC > for a in MOLATOMS: a.SetFormalCharge(0) -> [N]=[N]=NC > mol.SetAutomaticFormalCharge(True) -> [N]=[N]=NC > mol.AddHydrogens(False, True, 7.4) -> [N-]=[NH2+].C > > In both cases, one bond gets lost and the molecule gets fragmented, and the > culprit seems > to be AddHydrogens(), but only when the pH is set: > > mol.DeleteHydrogens() -> [N-]=[N+]=NC > mol.UnsetFlag(ob.OB_PH_CORRECTED_MOL) -> [N-]=[N+]=NC > mol.SetAutomaticFormalCharge(True) -> [N-]=[N+]=NC > mol.AddHydrogens(False, False) -> [N-]=[N+]=NC > > It's fairly obvious that something is wrong in way pH is handled. > Unfortunately, I have to process a fair amount of molecules containing this > group, so I > have to come up with a post-processing code to fix molecules before they get > written, but > I'm open to consider alternatives. > > I'll be happy to help further debugging the issue. > > Cheers, > > S > > > > On 03/07/2016 09:50 AM, Stefano Forli wrote: >> Hi, >> I have a problem adding hydrogens (correcting for the pH) to molecules >> containing the azide group. >> I'm attaching a script that reproduces the bug. Basically, the procedure I >> use is the following: >> >> mol.DeleteHydrogens() >> mol.UnsetFlag(ob.OB_PH_CORRECTED_MOL) >> mol.SetAutomaticFormalCharge(True) >> mol.AddHydrogens(False, True, 7.4) >> >> Using this code, the amine nitrogen gets properly protonated, but the azide >> group gets disconnected from the molecule, one of the azide nitrogens >> disappears and the remaining ones get hydrogenated. >> >> If I don't use SetAutomaticFormalCharge(), the azide is fine, but the amine >> doesn't get protonated. >> I've tested writing the output molecules in Mol2 and PDB, and the missing >> nitrogen never gets written in the molecule. >> Surprisingly, the both number of heavy atoms and the formula reported by OB >> does not change, meaning the nitrogen is still there, somewhere. >> Is this a bug or am I doing something wrong? >> >> Thanks, >> >> S >> >> > -- Stefano Forli, PhD Assistant Professor of Integrative Structural and Computational Biology, Molecular Graphics Laboratory Dept. of Integrative Structural and Computational Biology, MB-112A The Scripps Research Institute 10550 North Torrey Pines Road La Jolla, CA 92037-1000, USA. tel: +1 (858)784-2055 fax: +1 (858)784-2860 email: fo...@scripps.edu http://www.scripps.edu/~forli/ ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785111&iu=/4140 _______________________________________________ OpenBabel-Devel mailing list OpenBabel-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbabel-devel