From 431914e4423356139e61b3b1d3a62cdabe6b16b5 Mon Sep 17 00:00:00 2001 From: Mitch Miller Date: Thu, 9 May 2024 15:05:04 -0400 Subject: [PATCH] renamed maxUndefined to maxUndefinedStereoCenters cleaned up atom deletion in getSizeOfLargestRingSystem prevent double calls to getSizeOfLargestRingSystem use real logging instead of println --- .../ncats/molwitch/cdk/CdkChemical2FactoryImpl.java | 13 ++++++++----- .../gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java | 9 ++++++--- .../openscience/cdk/geometry/cip/CIPToolMod.java | 7 ++++--- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemical2FactoryImpl.java b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemical2FactoryImpl.java index 8627ffd..e1aed0c 100644 --- a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemical2FactoryImpl.java +++ b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemical2FactoryImpl.java @@ -31,6 +31,7 @@ import java.io.StringReader; import java.util.Map; import java.util.function.Consumer; +import java.util.logging.Logger; import java.util.stream.Stream; import org.openscience.cdk.atomtype.CDKAtomTypeMatcher; @@ -532,14 +533,16 @@ public boolean isDefault() { @Override public void applyParameters(Map params){ - System.out.println("in CdkChemical2FactoryImpl.applyParameters"); + Logger.getLogger(this.getClass().getName()).fine("in CdkChemical2FactoryImpl.applyParameters"); if( params.get("complexityCutoff") != null) { CdkChemicalImpl.setComplexityCutoff((Integer) params.get("complexityCutoff")); - System.out.printf("complexityCutoff: %s\n", params.get("complexityCutoff")); + Logger.getLogger(this.getClass().getName()).fine( + String.format("complexityCutoff: %s\n", params.get("complexityCutoff"))); } - if( params.get("maxUndefined") != null ) { - CdkChemicalImpl.setMaxUndefinedStereoCenters((Integer)params.get("maxUndefined")); - System.out.printf("maxUndefined: %s\n", params.get("maxUndefined")); + if( params.get("maxUndefinedStereoCenters") != null ) { + CdkChemicalImpl.setMaxUndefinedStereoCenters((Integer)params.get("maxUndefinedStereoCenters")); + Logger.getLogger(this.getClass().getName()).fine( + String.format("maxUndefinedStereoCenters: %s\n", params.get("maxUndefinedStereoCenters"))); } } } diff --git a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java index 5564070..7814c6e 100644 --- a/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java +++ b/src/main/java/gov/nih/ncats/molwitch/cdk/CdkChemicalImpl.java @@ -156,7 +156,9 @@ public static void setMaxUndefinedStereoCenters(int maxUndefinedStereoCenters) { CdkChemicalImpl.maxUndefinedStereoCenters = maxUndefinedStereoCenters; } - private static int maxUndefinedStereoCenters = 20; + //This parameter allows us to prevent a long calculation that enumerates all possibilities of undefined stereocenters. + // this should typically be set to values < 10 + private static int maxUndefinedStereoCenters = 5; // CDKAtomTypeMatcher matcher = CDKAtomTypeMatcher.getInstance(SilentChemObjectBuilder.getInstance()); @@ -215,8 +217,9 @@ public static void setMaxUndefinedStereoCenters(int maxUndefinedStereoCenters) { } CachedSupplier complexitySupplier =CachedSupplier.of(()->{ - Logger.getLogger(this.getClass().getName()).info("getSizeOfLargestRingSystem(this): " + getSizeOfLargestRingSystem(this)); - return getSizeOfLargestRingSystem(this)> complexityCutoff; + int sizeOfLargestRingSystem = getSizeOfLargestRingSystem(this); + Logger.getLogger(this.getClass().getName()).info("getSizeOfLargestRingSystem(this): " + sizeOfLargestRingSystem); + return sizeOfLargestRingSystem > complexityCutoff; }); CachedSupplier perceiveAtomTypesOfNonQueryAtoms = CachedSupplier.of(()->{ diff --git a/src/main/java/org/openscience/cdk/geometry/cip/CIPToolMod.java b/src/main/java/org/openscience/cdk/geometry/cip/CIPToolMod.java index 9a24ed1..dcd17ca 100644 --- a/src/main/java/org/openscience/cdk/geometry/cip/CIPToolMod.java +++ b/src/main/java/org/openscience/cdk/geometry/cip/CIPToolMod.java @@ -306,15 +306,16 @@ public static int getSizeOfLargestRingSystem(CdkChemicalImpl chemical) { return 0; } + List atomsToRemove = new ArrayList<>(); for(int i = copy.getAtomCount()-1; i >=0; i--) { Atom atom = copy.getAtom(i); if(atom.getBondCount() == 0) { //System.out.printf("atom %d of symbol %s has no bonds and will be deleted\n", i, atom.getSymbol()); - copy.removeAtom(i); + //copy.removeAtom(i); + atomsToRemove.add(atom); } } - - ChemObject chemObject = new ChemObject(); + atomsToRemove.forEach(a->copy.removeAtom(a)); Iterator iterator = copy.connectedComponents(); int fragmentCount=0;