Hi all,
I have a very strange problem using the java OpenBabel library. I have an SDF
File with severals molecules where every molecule has x conformers. I am using
a class to parse these molecules from iMolecule class from CDK (Chemistry
Development Kit) to openBabel. I need to do this since all our programs are
working with CDK and the goal is to pass the CDK mols directly to openBabel
without i/o operations.
I am using the OpenBabel forcefield (OBForceField) to minimize the conformers.
And here is the strangest thing happening: If I read a second conformer from
the sdf of a molecule and parse it to OpenBabel and the corresponding
forcefield I get this error:
Invalid memory access of location 0x0 rip=0x1149a2639
I only get this error if I parse two different conformations of the same
molecule in a raw to the forcefield(i.e. they only differ in coordinates). I
can minimize hundreds of structures without problems. Also I can alter between
conformations like mol1,mol2,mol1, ... that also works fine, but whenever I
have two conformations of one molecule in my sdf file in a raw( like
mol1_conf1, mol1_conf2,...), the program will terminate and give the error
message mentioned above. I have absolutely no idea why conformations of the
same molecule can cause an error like this...
I am always dealing with new instances and the CDK-Reader knows nothing about
the molecule it read before. Theres just no way I can imagine why this can
happen.
Here is the code of the method I use:
-----------
public void testCase() throws IOException, Exception {
System.load("/Users/aklenner/Modlab/Java-Projekte/OpenBable/openbabel-2.2.3/scripts/java/libopenbabel.jnilib");
IteratingMolFileReader imfr = new
IteratingMolFileReader("input_confomers.sdf");
ForceField ff=null;
OBMol mol=null;
while(imfr.hasNext()) {
mol
=MoleculeConvertingFactory.convertCDKMoltoBabelMol(imfr.readNextMol());
ff = new ForceField("MMFF94",mol);
ff.ConjugateGradient(1000, true);
}
}
-----------
MoleculeConvertingFactory.convertCDKMoltoBabelMol() returns an OBMol;
ForceField is just a container for the OBForceField
and ConjugateGradient just calls the same method for OBForceField. I also tried
to use the 'native' classes without the container- same problem.
Again, if 'input_confomers.sdf' only has one conformation each or the
conformations are altered the minimization works perfect.
Any idea or help is appreciated,
Thanks,
Alex
--
ETH Zurich
Dipl.-Bioinf. Alexander G. Klenner
Institute of Pharmaceutical Sciences
HCI G 496
Wolfgang-Pauli-Str. 10
8093 Zürich
SWITZERLAND
+41 44 633 74 23 phone
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
OpenBabel-scripting mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbabel-scripting