Skip to content

Commit

Permalink
Removed the dependency on the data module, by adding the IChemObjectB…
Browse files Browse the repository at this point in the history
…uilder to the API

Change-Id: I05dc82cee22450879bec44bbbd8c98c58c9b7d75
Signed-off-by: John May <john.wilkinsonmay@gmail.com>
  • Loading branch information
egonw authored and johnmay committed Dec 21, 2013
1 parent e596106 commit b569dec
Show file tree
Hide file tree
Showing 12 changed files with 67 additions and 73 deletions.
1 change: 0 additions & 1 deletion src/META-INF/forcefield.cdkdepends
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
cdk-annotation.jar
cdk-core.jar
cdk-data.jar
cdk-interfaces.jar
cdk-io.jar
cdk-standard.jar
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public MMFF94PartialCharges() { }
*/
public IAtomContainer assignMMFF94PartialCharges(IAtomContainer ac) throws Exception {
ForceFieldConfigurator ffc = new ForceFieldConfigurator();
ffc.setForceFieldConfigurator("mmff94");
ffc.setForceFieldConfigurator("mmff94", ac.getBuilder());
ffc.assignAtomTyps(ac);
Map<String,Object> parameterSet = ffc.getParameterSet();
// for this calculation,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import org.openscience.cdk.interfaces.IAtomContainer;
import org.openscience.cdk.interfaces.IAtomType;
import org.openscience.cdk.interfaces.IBond;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
import org.openscience.cdk.interfaces.IPseudoAtom;
import org.openscience.cdk.interfaces.IRing;
import org.openscience.cdk.interfaces.IRingSet;
Expand Down Expand Up @@ -127,7 +128,7 @@ public boolean checkForceFieldType(String ffname) {
* @param ffname name of the force field data file
*/
@TestMethod("testSetForceFieldConfigurator")
public void setForceFieldConfigurator(String ffname) throws CDKException {
public void setForceFieldConfigurator(String ffname, IChemObjectBuilder builder) throws CDKException {
ffname=ffname.toLowerCase();
boolean check=false;

Expand All @@ -145,7 +146,7 @@ public void setForceFieldConfigurator(String ffname) throws CDKException {
mm2.setInputStream(ins);
//logger.debug("ForceFieldConfigurator: mm2 set input stream ... READY");
try{
this.setMM2Parameters();
this.setMM2Parameters(builder);
}catch (Exception ex1){
throw new CDKException("Problems with set MM2Parameters due to "+ex1.toString(), ex1);
}
Expand All @@ -158,7 +159,7 @@ public void setForceFieldConfigurator(String ffname) throws CDKException {

mmff94.setInputStream(ins);
try{
this.setMMFF94Parameters();
this.setMMFF94Parameters(builder);
}catch (Exception ex2){
throw new CDKException("Problems with set MM2Parameters due to"+ex2.toString(), ex2);
}
Expand Down Expand Up @@ -190,22 +191,22 @@ public void setParameters(Map<String, Object> parameterset) {
* Sets the parameters attribute of the ForceFieldConfigurator object, default is mm2 force field
*/
@TestMethod("testSetMM2Parameters")
public void setMM2Parameters() throws CDKException{
public void setMM2Parameters(IChemObjectBuilder builder) throws CDKException{
try{
if(mm2 == null)
mm2 = new MM2BasedParameterSetReader();
mm2.readParameterSets();
mm2.readParameterSets(builder);
}catch(Exception ex1){
throw new CDKException("Problem within readParameterSets due to:"+ex1.toString(), ex1);
}
parameterSet = mm2.getParamterSet();
atomTypes = mm2.getAtomTypes();
}
@TestMethod("testSetMMFF94Parameters")
public void setMMFF94Parameters() throws Exception{
public void setMMFF94Parameters(IChemObjectBuilder builder) throws Exception{
if(mmff94 == null)
mmff94 = new MMFF94BasedParameterSetReader();
mmff94.readParameterSets();
mmff94.readParameterSets(builder);
parameterSet = mmff94.getParamterSet();
atomTypes = mmff94.getAtomTypes();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
/* $RCSfile$
* $Author$
* $Date$
* $Revision$
*
* Copyright (C) 2005-2007 Christian Hoppe <chhoppe@users.sf.net>
/* Copyright (C) 2005-2007 Christian Hoppe <chhoppe@users.sf.net>
* 2013 Egon Willighagen <egonw@users.sf.net>
*
* Contact: cdk-devel@lists.sourceforge.net
*
Expand Down Expand Up @@ -40,8 +36,6 @@
import java.util.StringTokenizer;
import java.util.Vector;

import org.openscience.cdk.AtomType;
import org.openscience.cdk.DefaultChemObjectBuilder;
import org.openscience.cdk.config.Isotopes;
import org.openscience.cdk.interfaces.IAtomType;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
Expand Down Expand Up @@ -266,7 +260,7 @@ private void setForceFieldDefinitions() throws Exception {
*
* @exception Exception Description of the Exception
*/
private void setAtomTypes() throws Exception {
private void setAtomTypes(IChemObjectBuilder builder) throws Exception {
String name = "";
String rootType = "";
int an = 0;
Expand Down Expand Up @@ -294,7 +288,7 @@ private void setAtomTypes() throws Exception {
"Malformed Number");
}

IAtomType atomType = new AtomType(name, rootType);
IAtomType atomType = builder.newInstance(IAtomType.class, name, rootType);
atomType.setAtomicNumber(an);
atomType.setExactMass(mass);
atomType.setMassNumber(massNumber(an, mass));
Expand Down Expand Up @@ -810,7 +804,7 @@ private void setPiBond() throws Exception {
*
* @exception Exception Description of the Exception
*/
public void readParameterSets() throws Exception {
public void readParameterSets(IChemObjectBuilder builder) throws Exception {
//vdW,vdWp,bond,bond4,bond3,angle,angle4,angle3,
//strbond,opbend,torsion,torsion4,charge,dipole,
//dipole3,piatom,pibond,dipole3
Expand Down Expand Up @@ -840,7 +834,7 @@ public void readParameterSets() throws Exception {
a[0]++;
} else if (s.startsWith("atom") & nt <= 8) {
a[0]++;
setAtomTypes();
setAtomTypes(builder);
} else if (s.startsWith("vdw ") & nt <= 5) {
setvdWaals();
a[1]++;
Expand Down Expand Up @@ -909,7 +903,6 @@ public void readParameterSets() throws Exception {
*/
private Integer massNumber(int atomicNumber, double exactMass) throws IOException {
String symbol = PeriodicTable.getSymbol(atomicNumber);
IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
IIsotope isotope = Isotopes.getInstance()
.getIsotope(symbol,
exactMass,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@
import java.util.StringTokenizer;
import java.util.Vector;

import org.openscience.cdk.AtomType;
import org.openscience.cdk.config.Isotopes;
import org.openscience.cdk.interfaces.IAtomType;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
import org.openscience.cdk.interfaces.IIsotope;
import org.openscience.cdk.tools.periodictable.PeriodicTable;

Expand Down Expand Up @@ -177,7 +177,7 @@ private void setAtomTypeData() throws Exception {
*
* @exception Exception Description of the Exception
*/
private void setAtomTypes() throws Exception {
private void setAtomTypes(IChemObjectBuilder builder) throws Exception {
String name = "";
String rootType = "";
//int an = 0;
Expand Down Expand Up @@ -207,7 +207,7 @@ private void setAtomTypes() throws Exception {
"Malformed Number");
}

AtomType atomType = new AtomType(name, rootType);
IAtomType atomType = builder.newInstance(IAtomType.class, name, rootType);
atomType.setAtomicNumber(atomNr);
atomType.setExactMass(mass);
atomType.setMassNumber(massNumber(atomNr, mass));
Expand Down Expand Up @@ -450,7 +450,7 @@ private void setDefaultStrBnd() throws Exception {
*
* @exception Exception Description of the Exception
*/
public void readParameterSets() throws Exception {
public void readParameterSets(IChemObjectBuilder builder) throws Exception {
//vdW,bond,angle,strbond,opbend,torsion,data
//logger.debug("------ Read MMFF94 ParameterSets ------");

Expand Down Expand Up @@ -498,7 +498,7 @@ public void readParameterSets() throws Exception {
st = new StringTokenizer(s,"\t; ");
int nt = st.countTokens();
if (s.startsWith("atom") & nt <= 8) {
setAtomTypes();
setAtomTypes(builder);
a[0]++;
} else if (s.startsWith("bond") & nt == 9) {
setBond();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.openscience.cdk.interfaces.IAtom;
import org.openscience.cdk.interfaces.IAtomContainer;
import org.openscience.cdk.interfaces.IBond;
import org.openscience.cdk.interfaces.IChemObjectBuilder;
import org.openscience.cdk.interfaces.IRingSet;
import org.openscience.cdk.layout.AtomPlacer;
import org.openscience.cdk.ringsearch.RingPartitioner;
Expand Down Expand Up @@ -92,28 +93,28 @@ public class ModelBuilder3D {
* @param templateHandler templateHandler Object
* @param ffname name of force field
*/
private ModelBuilder3D(TemplateHandler3D templateHandler, String ffname) throws CDKException {
private ModelBuilder3D(TemplateHandler3D templateHandler, String ffname, IChemObjectBuilder builder) throws CDKException {
setTemplateHandler(templateHandler);
setForceField(ffname);
setForceField(ffname, builder);
}

public static ModelBuilder3D getInstance(TemplateHandler3D templateHandler, String ffname) throws CDKException {
public static ModelBuilder3D getInstance(TemplateHandler3D templateHandler, String ffname, IChemObjectBuilder chemObjectBuilder) throws CDKException {
if (ffname == null || ffname.length() == 0) throw new CDKException("The given ffname is null or empty!");
if (templateHandler == null) throw new CDKException("The given template handler is null!");

String builderCode = templateHandler.getClass().getName()+ "#" + ffname;
if (!memyselfandi.containsKey(builderCode)) {
ModelBuilder3D builder = new ModelBuilder3D(
templateHandler, ffname
templateHandler, ffname, chemObjectBuilder
);
memyselfandi.put(builderCode, builder);
return builder;
}
return memyselfandi.get(builderCode);
}

public static ModelBuilder3D getInstance() throws CDKException {
return getInstance(TemplateHandler3D.getInstance(), "mm2");
public static ModelBuilder3D getInstance(IChemObjectBuilder builder) throws CDKException {
return getInstance(TemplateHandler3D.getInstance(), "mm2", builder);
}

/**
Expand All @@ -131,13 +132,13 @@ public String[] getFfTypes(){
*
* @param ffname forceField name
*/
private void setForceField(String ffname) throws CDKException {
private void setForceField(String ffname, IChemObjectBuilder builder) throws CDKException {
if (ffname == null) {
ffname = "mm2";
}
try {
forceFieldName = ffname;
ffc.setForceFieldConfigurator(ffname);
ffc.setForceFieldConfigurator(ffname, builder);
parameterSet = ffc.getParameterSet();
} catch (CDKException ex1) {
logger.error("Problem with ForceField configuration due to>" + ex1.getMessage());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public void testCheckForceFieldType_String() {
@Test
public void testSetForceFieldConfigurator_String() throws CDKException {
String forceFieldName = "mmff94";
forceFieldConfigurator.setForceFieldConfigurator(forceFieldName);
forceFieldConfigurator.setForceFieldConfigurator(forceFieldName, DefaultChemObjectBuilder.getInstance());
List<IAtomType> mmff94AtomTypes = forceFieldConfigurator.getAtomTypes();
assertNotNull(mmff94AtomTypes);
IAtomType atomtype0 = mmff94AtomTypes.get(0);
Expand All @@ -75,7 +75,7 @@ public void testSetForceFieldConfigurator_String() throws CDKException {
assertEquals("Csp2", atomtype1.getAtomTypeName());

forceFieldName = "mm2";
forceFieldConfigurator.setForceFieldConfigurator(forceFieldName);
forceFieldConfigurator.setForceFieldConfigurator(forceFieldName, DefaultChemObjectBuilder.getInstance());
List<IAtomType> mm2AtomTypes = forceFieldConfigurator.getAtomTypes();
assertNotNull(mm2AtomTypes);
IAtomType atomtype2 = mm2AtomTypes.get(2);
Expand All @@ -87,7 +87,7 @@ public void testSetForceFieldConfigurator_String() throws CDKException {

@Test
public void testSetMM2Parameters() throws CDKException {
forceFieldConfigurator.setMM2Parameters();
forceFieldConfigurator.setMM2Parameters(DefaultChemObjectBuilder.getInstance());
assertNotNull(forceFieldConfigurator.getParameterSet());
List<IAtomType> atomtypeList = forceFieldConfigurator.getAtomTypes();
IAtomType atomtype1 = atomtypeList.get(1);
Expand All @@ -98,7 +98,7 @@ public void testSetMM2Parameters() throws CDKException {

@Test
public void testSetMMFF94Parameters() throws Exception {
forceFieldConfigurator.setMMFF94Parameters();
forceFieldConfigurator.setMMFF94Parameters(DefaultChemObjectBuilder.getInstance());
assertNotNull(forceFieldConfigurator.getParameterSet());
List<IAtomType> atomtypeList = forceFieldConfigurator.getAtomTypes();
IAtomType atomtype4 = atomtypeList.get(4);
Expand Down Expand Up @@ -130,7 +130,7 @@ public void testConfigureMMFF94BasedAtom_IAtom_String_boolean_hydroxyurea() thro
SmilesParser parser = new SmilesParser(builder);
IAtomContainer hu = parser.parseSmiles(husmi);
ForceFieldConfigurator ffc = new ForceFieldConfigurator();
ffc.setForceFieldConfigurator("mmff94");
ffc.setForceFieldConfigurator("mmff94", builder);
IAtom N1= hu.getAtom(0);
IAtom N2 = hu.getAtom(3);
ffc.configureAtom(N1,
Expand All @@ -151,7 +151,7 @@ public void testConfigureMMFF94BasedAtom_IAtom_String_boolean_propanamide() thro
SmilesParser parser = new SmilesParser(builder);
IAtomContainer pa = parser.parseSmiles(pasmi);
ForceFieldConfigurator ffc = new ForceFieldConfigurator();
ffc.setForceFieldConfigurator("mmff94");
ffc.setForceFieldConfigurator("mmff94", builder);
IAtom amideN = pa.getAtom(0);
ffc.configureMMFF94BasedAtom(amideN,
new HOSECodeGenerator().getHOSECode(pa, amideN, 3),
Expand All @@ -170,7 +170,7 @@ public void testConfigureMMFF94BasedAtom_IAtom_String_boolean_urea() throws CDKE
SmilesParser parser = new SmilesParser(builder);
IAtomContainer urea = parser.parseSmiles(usmi);
ForceFieldConfigurator ffc = new ForceFieldConfigurator();
ffc.setForceFieldConfigurator("mmff94");
ffc.setForceFieldConfigurator("mmff94", builder);
IAtom amideN = urea.getAtom(0);
ffc.configureMMFF94BasedAtom(amideN,
new HOSECodeGenerator().getHOSECode(urea, amideN, 3),
Expand Down Expand Up @@ -199,7 +199,7 @@ public void testAssignAtomTyps_test4_hydroxyurea() throws CDKException {
for(int i=0; i<molecule.getAtomCount(); i++) {
assertEquals(originalAtomTypes[i],molecule.getAtom(i).getAtomTypeName());
}
forceFieldConfigurator.setForceFieldConfigurator("mmff94");
forceFieldConfigurator.setForceFieldConfigurator("mmff94", builder);
IRingSet moleculeRingSet = forceFieldConfigurator.assignAtomTyps(molecule);
//no rings
assertEquals(0, moleculeRingSet.getAtomContainerCount());
Expand All @@ -221,7 +221,7 @@ public void testAssignAtomTyps_bug() throws Exception {
IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
SmilesParser parser = new SmilesParser(builder);
IAtomContainer bugmol = parser.parseSmiles(smiles);
forceFieldConfigurator.setForceFieldConfigurator("mmff94");
forceFieldConfigurator.setForceFieldConfigurator("mmff94", builder);
IAtom amideN = bugmol.getAtom(11);
forceFieldConfigurator.configureMMFF94BasedAtom(amideN,
new HOSECodeGenerator().getHOSECode(bugmol, amideN, 3),
Expand All @@ -239,7 +239,7 @@ public void testAssignAtomTyps_bug_no2() throws Exception {
IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
SmilesParser parser = new SmilesParser(builder);
IAtomContainer bugmol = parser.parseSmiles(smiles);
forceFieldConfigurator.setForceFieldConfigurator("mmff94");
forceFieldConfigurator.setForceFieldConfigurator("mmff94", builder);
IAtom amideN = bugmol.getAtom(2);
forceFieldConfigurator.configureMMFF94BasedAtom(amideN,
new HOSECodeGenerator().getHOSECode(bugmol, amideN, 3),
Expand All @@ -259,7 +259,7 @@ public void testAssignAtomTyps_bug_so2() throws Exception {
IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
SmilesParser parser = new SmilesParser(builder);
IAtomContainer bugmol = parser.parseSmiles(smiles);
forceFieldConfigurator.setForceFieldConfigurator("mmff94");
forceFieldConfigurator.setForceFieldConfigurator("mmff94", builder);
IAtom sulphur = bugmol.getAtom(1);
HOSECodeGenerator hscodegen = new HOSECodeGenerator();
forceFieldConfigurator.configureAtom(sulphur,
Expand All @@ -276,7 +276,7 @@ public void testAssignAtomTyps_bug_nitrogenatomType() throws Exception {
IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
SmilesParser parser = new SmilesParser(builder);
IAtomContainer bugmol = parser.parseSmiles(smiles);
forceFieldConfigurator.setForceFieldConfigurator("mmff94");
forceFieldConfigurator.setForceFieldConfigurator("mmff94", builder);
IAtom nitrogen1 = bugmol.getAtom(1);
IAtom nitrogen2 = bugmol.getAtom(4);
IAtom nitrogen3 = bugmol.getAtom(6);
Expand All @@ -301,7 +301,7 @@ public void testAssignAtomTyps_bug_amideRingAtomType() throws Exception {
IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance();
SmilesParser parser = new SmilesParser(builder);
IAtomContainer bugmol = parser.parseSmiles(smiles);
forceFieldConfigurator.setForceFieldConfigurator("mmff94");
forceFieldConfigurator.setForceFieldConfigurator("mmff94", builder);
IAtom nitrogen1 = bugmol.getAtom(2);
HOSECodeGenerator hscodegen = new HOSECodeGenerator();
forceFieldConfigurator.configureAtom(nitrogen1,
Expand Down
Loading

0 comments on commit b569dec

Please sign in to comment.