Skip to content

Commit

Permalink
Convert IMolecule* to IAtomContainer* across many more classes
Browse files Browse the repository at this point in the history
Signed-off-by: Egon Willighagen <egonw@users.sourceforge.net>
  • Loading branch information
rajarshi authored and egonw committed Dec 10, 2011
1 parent c950448 commit c9847d2
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 121 deletions.
23 changes: 11 additions & 12 deletions src/main/org/openscience/cdk/io/pubchemxml/PubChemXMLHelper.java
Expand Up @@ -25,26 +25,25 @@
*/
package org.openscience.cdk.io.pubchemxml;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.vecmath.Point2d;
import javax.vecmath.Point3d;

import org.openscience.cdk.CDKConstants;
import org.openscience.cdk.config.IsotopeFactory;
import org.openscience.cdk.exception.CDKException;
import org.openscience.cdk.interfaces.IAtom;
import org.openscience.cdk.interfaces.IAtomContainerSet;
import org.openscience.cdk.interfaces.IBond;
import org.openscience.cdk.interfaces.IChemModel;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
import org.openscience.cdk.interfaces.IElement;
import org.openscience.cdk.interfaces.IMolecule;
import org.openscience.cdk.interfaces.IMoleculeSet;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
import org.openscience.cdk.interfaces.IPseudoAtom;
import org.xmlpull.v1.XmlPullParser;

import javax.vecmath.Point2d;
import javax.vecmath.Point3d;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
* Helper class to parse PubChem XML documents.
*
Expand Down Expand Up @@ -112,8 +111,8 @@ public PubChemXMLHelper(IChemObjectBuilder builder) throws IOException {
public final static String EL_PROPS_FVAL = "PC-InfoData_value_fval";
public final static String EL_PROPS_BVAL = "PC-InfoData_value_binary";

public IMoleculeSet parseCompoundsBlock(XmlPullParser parser) throws Exception {
IMoleculeSet set = builder.newInstance(IMoleculeSet.class);
public IAtomContainerSet parseCompoundsBlock(XmlPullParser parser) throws Exception {
IAtomContainerSet set = builder.newInstance(IAtomContainerSet.class);
// assume the current element is PC-Compounds
if (!parser.getName().equals(EL_PCCOMPOUNDS)) {
return null;
Expand Down Expand Up @@ -151,7 +150,7 @@ public IChemModel parseSubstance(XmlPullParser parser) throws Exception {
}
} else if (parser.getEventType() == XmlPullParser.START_TAG) {
if (EL_PCCOMPOUNDS.equals(parser.getName())) {
IMoleculeSet set = parseCompoundsBlock(parser);
IAtomContainerSet set = parseCompoundsBlock(parser);
model.setMoleculeSet(set);
} else if (EL_PCSUBSTANCE_SID.equals(parser.getName())) {
String sid = getSID(parser);
Expand Down
Expand Up @@ -21,26 +21,14 @@
*/
package org.openscience.cdk.modeling.builder3d;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.openscience.cdk.CDKConstants;
import org.openscience.cdk.fingerprint.HybridizationFingerprinter;
import org.openscience.cdk.fingerprint.IFingerprinter;
import org.openscience.cdk.interfaces.IAtomContainer;
import org.openscience.cdk.interfaces.IAtomContainerSet;
import org.openscience.cdk.interfaces.IBond;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
import org.openscience.cdk.interfaces.IMolecule;
import org.openscience.cdk.interfaces.IMoleculeSet;
import org.openscience.cdk.interfaces.IRingSet;
import org.openscience.cdk.io.MDLV2000Writer;
import org.openscience.cdk.io.iterator.IteratingMDLReader;
Expand All @@ -53,6 +41,18 @@
import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
import org.openscience.cdk.tools.manipulator.RingSetManipulator;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
* Helper class that help setup a template library of CDK's Builder3D.
*
Expand All @@ -71,7 +71,7 @@ public TemplateExtractor() {

public void cleanDataSet(String dataFile) {
IteratingMDLReader imdl = null;
IMoleculeSet som = builder.newInstance(IMoleculeSet.class);
IAtomContainerSet som = builder.newInstance(IAtomContainerSet.class);
try {
System.out.println("Start clean dataset...");
BufferedReader fin = new BufferedReader(new FileReader(dataFile));
Expand Down Expand Up @@ -108,7 +108,7 @@ public void cleanDataSet(String dataFile) {

public void ReadNCISdfFileAsTemplate(String dataFile) {
IteratingMDLReader imdl = null;
IMoleculeSet som = builder.newInstance(IMoleculeSet.class);
IAtomContainerSet som = builder.newInstance(IAtomContainerSet.class);
try {
System.out.println("Start...");
BufferedReader fin = new BufferedReader(new FileReader(dataFile));
Expand All @@ -133,7 +133,7 @@ public void ReadNCISdfFileAsTemplate(String dataFile) {

public void PartitionRingsFromComplexRing(String dataFile) {
IteratingMDLReader imdl = null;
IMoleculeSet som = builder.newInstance(IMoleculeSet.class);
IAtomContainerSet som = builder.newInstance(IAtomContainerSet.class);
IMolecule m = null;
try {
System.out.println("Start...");
Expand Down Expand Up @@ -290,7 +290,7 @@ public void extractUniqueRingSystemsFromFile(String dataFile) {
// writeChemModel(som,dataFile,"_TESTTESTTESTTESTTEST");
}

public void writeChemModel(IMoleculeSet som, String file, String endFix) {
public void writeChemModel(IAtomContainerSet som, String file, String endFix) {
System.out.println("WRITE Molecules:" + som.getAtomContainerCount());
String molfile = file + endFix;
try {
Expand Down Expand Up @@ -417,7 +417,7 @@ public List<BitSet> makeFingerprintsFromSdf(boolean anyAtom, boolean anyAtomAnyB
// store the time
String bin = Integer.toString((int)Math.floor(time/10));
if (timings.containsKey(bin)) {
timings.put(bin, new Integer((((Integer)timings.get(bin)).intValue()) + 1));
timings.put(bin, (timings.get(bin)) + 1);
} else {
timings.put(bin, new Integer(1));
}
Expand Down
@@ -1,16 +1,14 @@
package org.openscience.cdk.smsd.labelling;

import org.openscience.cdk.CDKConstants;
import org.openscience.cdk.DefaultChemObjectBuilder;
import org.openscience.cdk.Mapping;
import org.openscience.cdk.MoleculeSet;
import org.openscience.cdk.Reaction;
import org.openscience.cdk.interfaces.IAtom;
import org.openscience.cdk.interfaces.IAtomContainer;
import org.openscience.cdk.interfaces.IAtomContainerSet;
import org.openscience.cdk.interfaces.IChemObject;
import org.openscience.cdk.interfaces.IMapping;
import org.openscience.cdk.interfaces.IMolecule;
import org.openscience.cdk.interfaces.IMoleculeSet;
import org.openscience.cdk.interfaces.IReaction;
import org.openscience.cdk.tools.manipulator.ReactionManipulator;

Expand Down Expand Up @@ -46,7 +44,7 @@ private void fixAtomMapping(IAtomContainer canonicalForm) {

private Map<IAtom, IAtom> atomAtomMap(
IReaction reaction, IReaction clone,
Map<IMolecule, int[]> permutationMap) {
Map<IAtomContainer, int[]> permutationMap) {
// create a Map of corresponding atoms for molecules
// (key: original Atom, value: clone Atom)
Map<IAtom, IAtom> atomAtom = new Hashtable<IAtom, IAtom>();
Expand Down Expand Up @@ -111,7 +109,7 @@ private List<IMapping> cloneMappings(
*/
private void cloneAndSortMappings(
IReaction reaction, IReaction copyOfReaction,
Map<IMolecule, int[]> permutationMap) {
Map<IAtomContainer, int[]> permutationMap) {

// make a lookup for the indices of the atoms in the copy
final Map<IChemObject, Integer> indexMap =
Expand All @@ -126,8 +124,7 @@ private void cloneAndSortMappings(
}
}

Map<IAtom, IAtom> atomAtomMap = atomAtomMap(
reaction, copyOfReaction, permutationMap);
Map<IAtom, IAtom> atomAtomMap = atomAtomMap(reaction, copyOfReaction, permutationMap);
List<IMapping> map = cloneMappings(reaction, atomAtomMap);

Comparator<IMapping> mappingSorter = new Comparator<IMapping>() {
Expand Down Expand Up @@ -160,26 +157,26 @@ public IReaction labelReaction(
System.out.println("labelling");
IReaction canonReaction = new Reaction();

Map<IMolecule, int[]> permutationMap = new HashMap<IMolecule, int[]>();
Map<IAtomContainer, int[]> permutationMap = new HashMap<IAtomContainer, int[]>();

IMoleculeSet canonicalProducts = new MoleculeSet();
IAtomContainerSet canonicalProducts = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainerSet.class);
for (IAtomContainer product : reaction.getProducts().atomContainers()) {
IAtomContainer canonicalForm =
labeller.getCanonicalMolecule(product);
if (fixAtomMappingCastType) { fixAtomMapping(canonicalForm); }
IMolecule canonicalMolecule =
canonicalForm.getBuilder().newInstance(IMolecule.class, canonicalForm);
IAtomContainer canonicalMolecule =
canonicalForm.getBuilder().newInstance(IAtomContainer.class, canonicalForm);
permutationMap.put(
canonicalMolecule, labeller.getCanonicalPermutation(product));
canonicalProducts.addAtomContainer(canonicalMolecule);
}
IMoleculeSet canonicalReactants = new MoleculeSet();
IAtomContainerSet canonicalReactants = DefaultChemObjectBuilder.getInstance().newInstance(IAtomContainerSet.class);
for (IAtomContainer reactant: reaction.getReactants().atomContainers()) {
IAtomContainer canonicalForm =
labeller.getCanonicalMolecule(reactant);
if (fixAtomMappingCastType) { fixAtomMapping(canonicalForm); }
IMolecule canonicalMolecule =
canonicalForm.getBuilder().newInstance(IMolecule.class, canonicalForm);
IAtomContainer canonicalMolecule =
canonicalForm.getBuilder().newInstance(IAtomContainer.class, canonicalForm);
permutationMap.put(
canonicalMolecule, labeller.getCanonicalPermutation(reactant));
canonicalReactants.addAtomContainer(canonicalMolecule);
Expand Down

0 comments on commit c9847d2

Please sign in to comment.