From: <Mar...@ep...> - 2006-10-02 15:02:31
|
I use the following code to remove all the hydrogens from a molecule: public static void RemoveHydrogens(IMolecule m) { for (int j = 0; j < m.getAtomCount(); j++) { if (m.getAtom(j).getSymbol().equals("H")) { m.removeAtomAndConnectedElectronContainers(m.getAtom(j)); } } } This used to work- now it deletes about half the hydrogens for some molecules. My apologies if this has been already discussed. Todd |
From: Rajarshi G. <rg...@in...> - 2006-10-02 15:20:02
|
On Mon, 2006-10-02 at 11:00 -0400, Mar...@ep... wrote: > I use the following code to remove all the hydrogens from a molecule: > > public static void RemoveHydrogens(IMolecule m) { > > for (int j = 0; j < m.getAtomCount(); j++) > { > if (m.getAtom(j).getSymbol().equals("H")) > { > > m.removeAtomAndConnectedElectronContainers(m.getAtom(j)); > } > } > } > > This used to work- now it deletes about half the hydrogens for some > molecules. My apologies if this has been already discussed. AtomContainerManipulator.removeHydrogens(...) does the job, though of course it doesn't explain why your code is not working :-/ ------------------------------------------------------------------- Rajarshi Guha <rg...@in...> GPG Fingerprint: 0CCA 8EE2 2EEB 25E2 AB04 06F7 1BB9 E634 9B87 56EE ------------------------------------------------------------------- 186,282 miles per second: It isn't just a good idea, it's the law! |
From: Kai H. <Kai.Hartmann@Uni-Koeln.De> - 2006-10-02 15:28:30
|
Hi Todd. Mar...@ep... schrieb: > I use the following code to remove all the hydrogens from a molecule: > > [...] > > This used to work- now it deletes about half the hydrogens for some > molecules. My apologies if this has been already discussed. Is this the current subversion version? If so, please check whether this method also fails: org.openscience.cdk.tools.manipulator.AtomContainerManipulator.removeHydrogens(IAtomContainer) If yes, please send a bug report with one sample molecule attached and write a test that fails in AtomContainerManipulatorTest. Thanks, Kai |
From: Egon W. <e.w...@sc...> - 2006-10-03 06:22:38
|
> There is something weird going on in the AtomContainerManipulator. > removeHydrogens method. > Why does it have this code: > neighb.setHydrogenCount(neighb.getHydrogenCount() + 1); > Shouldnt all the hydrogen counts be zero? > > Couldnt you just have done the following: > for (int i=0;i<mol.getAtomCount();i++ ) { > mol.getAtom(i).setHydrogenCount(0); > } setHydrogenCount() is for implicit hydrogens, while removeHydrogens() removes the explicit hydrogens. This should really be part of the JavaDoc. Can you please file the unclarity as bug report? > One more thing - why was the return class for getConnectedAtoms method > for the AtomContainer class made into a list- it seems like it makes it > a lot harder to use- for example to look at the symbol for a connected > atom one could previously just say ca[0].getSymbol() - now you have to > write ((IAtom)ca.get(0)).getSymbol(). > It seems to me that if you only have a few elements it's easier to have > an array than use a list and an iterator. > Was there some reason that a list is better? These changes are being applied to clean up the API for the data classes (cdk.interfaces), as discussed earlier and summarized in the wiki: http://wiki.cubic.uni-koeln.de/cdkwiki/doku.php?id=refactoringkernelclasses Egon |