Skip to content

Commit 9366268

Browse files
committed
SMSD 4.0.1, graph model constructors on ReactionMechanismTool
- Bump SMSD to 4.0.1 - Add ReactionGraph-based constructors to ReactionMechanismTool (backward compatible — CDK constructors unchanged) - Add getMappedReactionGraph() for toolkit-agnostic result access - All 135 tests pass Users can now: ChemToolkit.register(new CDKToolkit()); ReactionGraph rxn = ChemToolkit.get().parseReactionSmiles("CC>>CC"); new ReactionMechanismTool(rxn, true, true); Co-Authored-By: Syed Asad Rahman <asad.rahman@bioinceptionlabs.com>
1 parent 04f5d99 commit 9366268

3 files changed

Lines changed: 64 additions & 2 deletions

File tree

pom-local.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
<dependency>
4545
<groupId>com.bioinceptionlabs</groupId>
4646
<artifactId>smsd</artifactId>
47-
<version>4.0.0</version>
47+
<version>4.0.1</version>
4848
</dependency>
4949

5050
<dependency>

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
<dependency>
114114
<groupId>com.bioinceptionlabs</groupId>
115115
<artifactId>smsd</artifactId>
116-
<version>4.0.0</version>
116+
<version>4.0.1</version>
117117
</dependency>
118118

119119
<!-- https://mvnrepository.com/artifact/commons-cli/commons-cli -->

src/main/java/com/bioinceptionlabs/reactionblast/mechanism/ReactionMechanismTool.java

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,50 @@ public class ReactionMechanismTool implements Serializable {
7676
private Collection<MappingSolution> allSolutions;
7777
private final boolean accept_no_change;
7878

79+
// ---- Toolkit-agnostic constructors (ReactionGraph) ----
80+
81+
/**
82+
* Toolkit-agnostic constructor. Pass a ReactionGraph from any toolkit.
83+
*
84+
* @param reactionGraph toolkit-agnostic reaction graph
85+
* @param forcedMapping overwrite any existing mapping
86+
* @param generate2D deduce stereo on 2D
87+
* @param generate3D deduce stereo on 3D
88+
* @param checkComplex check complex mapping like ring systems
89+
* @param accept_no_change accept no bond change (transporter reactions)
90+
* @param standardizer reaction standardizer
91+
* @throws Exception
92+
*/
93+
public ReactionMechanismTool(
94+
com.bioinceptionlabs.reactionblast.model.ReactionGraph reactionGraph,
95+
boolean forcedMapping,
96+
boolean generate2D,
97+
boolean generate3D,
98+
boolean checkComplex,
99+
boolean accept_no_change,
100+
StandardizeReaction standardizer) throws Exception {
101+
this(com.bioinceptionlabs.reactionblast.cdk.CDKAdapter.toCDK(reactionGraph),
102+
forcedMapping, generate2D, generate3D, checkComplex, accept_no_change, standardizer);
103+
}
104+
105+
/**
106+
* Toolkit-agnostic constructor with defaults.
107+
*
108+
* @param reactionGraph toolkit-agnostic reaction graph
109+
* @param forcedMapping overwrite any existing mapping
110+
* @param checkComplex check complex mapping like ring systems
111+
* @throws Exception
112+
*/
113+
public ReactionMechanismTool(
114+
com.bioinceptionlabs.reactionblast.model.ReactionGraph reactionGraph,
115+
boolean forcedMapping,
116+
boolean checkComplex) throws Exception {
117+
this(com.bioinceptionlabs.reactionblast.cdk.CDKAdapter.toCDK(reactionGraph),
118+
forcedMapping, true, false, checkComplex, false, new StandardizeReaction());
119+
}
120+
121+
// ---- CDK constructors (backward compatible) ----
122+
79123
/**
80124
*
81125
* @param reaction
@@ -704,6 +748,24 @@ public Collection<MappingSolution> getAllSolutions() {
704748
return unmodifiableCollection(this.allSolutions);
705749
}
706750

751+
/**
752+
* Get the mapped reaction as a toolkit-agnostic ReactionGraph.
753+
*
754+
* @return ReactionGraph with atom-atom mapping, or null if no solution
755+
*/
756+
public com.bioinceptionlabs.reactionblast.model.ReactionGraph getMappedReactionGraph() {
757+
if (selectedMapping == null || selectedMapping.getReactor() == null) {
758+
return null;
759+
}
760+
try {
761+
IReaction mapped = selectedMapping.getReactor().getReactionWithAtomAtomMapping();
762+
return mapped != null ? com.bioinceptionlabs.reactionblast.cdk.CDKAdapter.fromCDK(mapped) : null;
763+
} catch (Exception e) {
764+
LOGGER.error(SEVERE, "Failed to get mapped reaction graph", e);
765+
return null;
766+
}
767+
}
768+
707769
private int getNonHydrogenMappingAtomCount(IAtomContainerSet mol) {
708770
int count = MIN_VALUE;
709771
List<IAtomContainer> allAtomContainers = getAllAtomContainers(mol);

0 commit comments

Comments
 (0)