Skip to content

Commit 1d507cd

Browse files
committed
optimised the mapping code - speed up the code
1 parent 88b29d7 commit 1d507cd

File tree

2 files changed

+70
-17
lines changed

2 files changed

+70
-17
lines changed

src/test/java/org/openscience/smsd/algorithm/mcsplus1/MCSTest.java

Lines changed: 58 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
import org.openscience.cdk.DefaultChemObjectBuilder;
1212
import org.openscience.cdk.interfaces.IAtomContainer;
1313
import org.openscience.cdk.smiles.SmilesParser;
14+
import org.openscience.smsd.AtomAtomMapping;
15+
import org.openscience.smsd.Isomorphism;
16+
import org.openscience.smsd.interfaces.Algorithm;
1417

1518
/**
1619
*
@@ -35,9 +38,9 @@ public void testSet_IMolecule_IMolecule() throws Exception {
3538
mcs.search_cliques();
3639
List<List<Integer>> overlaps = mcs.getFinalMappings();
3740
assertEquals(overlaps.size(), 2);
38-
assertEquals((mcs.getFinalMappings().iterator().next().size() / 2), 7);
41+
assertEquals(7, (mcs.getFinalMappings().iterator().next().size() / 2));
3942
}
40-
43+
4144
/**
4245
* Test of set method, of class MCSPlusHandler.
4346
*
@@ -51,11 +54,61 @@ public void testSet_count() throws Exception {
5154
IAtomContainer target = sp.parseSmiles("*[P](=O)(O)OCC1O[CH]C(OC(=O)C(N)CC2=CC=C(O)C=C2)C1O");
5255

5356
org.openscience.smsd.algorithm.mcsplus.mcsplus1.MCSPlus mcs
54-
= new org.openscience.smsd.algorithm.mcsplus.mcsplus1.MCSPlus(query, target, true, false, false);
55-
mcs.search_cliques();
57+
= new org.openscience.smsd.algorithm.mcsplus.mcsplus1.MCSPlus(query, target, true, false, false);
58+
mcs.search_cliques();
5659
List<List<Integer>> overlaps = mcs.getFinalMappings();
5760
assertEquals(overlaps.size(), 1);
58-
assertEquals((mcs.getFinalMappings().iterator().next().size() / 2), 9);
61+
assertEquals(9, (mcs.getFinalMappings().iterator().next().size() / 2));
62+
}
63+
64+
/**
65+
* Test of set method, of class MCSPlusHandler.
66+
*
67+
* @throws Exception
68+
*/
69+
@Test
70+
public void test_MCS_count() throws Exception {
71+
////////System.out.println("3");
72+
SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
73+
//CHEBI:58504
74+
IAtomContainer query = sp.parseSmiles("CC1=C2N3[C@H]([C@H](CC(N)=O)[C@@]2"
75+
+ "(C)CCC([O-])=O)[C@]2(C)[N+]4=C([C@@H](CCC(N)=O)[C@]2(C)CC(N)=O)"
76+
+ "C(C)=C2[N+]5=C(C=C6[N+](=C1[C@@H](CCC(N)=O)C6(C)C)[Co--]345"
77+
+ "C[C@H]1O[C@H]([C@H](O)[C@@H]1O)n1cnc3c(N)ncnc13)[C@@H]"
78+
+ "(CCC(N)=O)[C@]2(C)CC(N)=O");
79+
//CHEBI:2480
80+
IAtomContainer target = sp.parseSmiles("[H][C@@]12[C@H](CC(N)=O)[C@@](C)"
81+
+ "(CCC(=O)NC[C@@H](C)O)C3=C(C)C4=[N+]5C(=CC6=[N+]7C(=C(C)C8=[N+]"
82+
+ "([C@]1(C)[C@@](C)(CC(N)=O)[C@@H]8CCC(N)=O)[Co--]57(C[C@H]1O[C@H]"
83+
+ "([C@H](O)[C@@H]1O)n1cnc5c(N)ncnc15)N23)[C@@](C)(CC(N)=O)"
84+
+ "[C@@H]6CCC(N)=O)C(C)(C)[C@@H]4CCC(N)=O");
85+
86+
Isomorphism mcs
87+
//= new Isomorphism(query, target, Algorithm.VFLibMCS, true, true, true);
88+
= new Isomorphism(query, target, Algorithm.DEFAULT, false, false, false);
89+
90+
List<AtomAtomMapping> allAtomMapping = mcs.getAllAtomMapping();
91+
assertEquals(81, mcs.getFirstAtomMapping().getCount());
92+
}
93+
94+
@Test
95+
public void test_VFMCS_count() throws Exception {
96+
////////System.out.println("3");
97+
SmilesParser sp = new SmilesParser(DefaultChemObjectBuilder.getInstance());
98+
// IAtomContainer query = sp.parseSmiles("*C1OC(CO)C(OP=O)C1O");
99+
// IAtomContainer target = sp.parseSmiles("*[P](=O)(O)OCC1O[CH]C(OC(=O)C(N)CC2=CC=C(O)C=C2)C1O");
100+
101+
IAtomContainer query = sp.parseSmiles("[N].[N]=C[N].[CH].[O].[NH2]");
102+
IAtomContainer target = sp.parseSmiles("[C]C(=O)N.[N].[N]C=[N].[NH2]");
103+
104+
Isomorphism mcs
105+
//= new Isomorphism(query, target, Algorithm.VFLibMCS, true, true, true);
106+
= new Isomorphism(query, target, Algorithm.VFLibMCS, false, false, false);
107+
108+
System.out.println("mcs.getFirstAtomMapping() " + mcs.getFirstAtomMapping());
109+
List<AtomAtomMapping> allAtomMapping = mcs.getAllAtomMapping();
110+
// assertEquals(2, allAtomMapping.size());
111+
assertEquals(7, mcs.getFirstAtomMapping().getCount());
59112
}
60113

61114
}

src/test/java/uk/ac/ebi/aamtool/RXNMappingTest.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1798,18 +1798,18 @@ public void Rhea10570() throws Exception {
17981798
/*
17991799
* @FIXME
18001800
* Takes Donkey Years to Run- TO FIX
1801-
*12573
1801+
* 12573
18021802
*
18031803
*/
1804-
// @Test
1805-
// public void Rhea12573() throws Exception {
1806-
//
1807-
// String reactionID = "12573";
1808-
// ReactionMechanismTool testReactions = testReactions(reactionID, RHEA_RXN_DIR);
1809-
// IPatternFingerprinter formedCleavedWFingerprint = testReactions
1810-
// .getSelectedSolution()
1811-
// .getBondChangeCalculator()
1812-
// .getFormedCleavedWFingerprint();
1813-
// assertEquals(1, formedCleavedWFingerprint.getFeatureCount());
1814-
// }
1804+
@Test
1805+
public void Rhea12573() throws Exception {
1806+
1807+
String reactionID = "12573";
1808+
ReactionMechanismTool testReactions = testReactions(reactionID, RHEA_RXN_DIR);
1809+
IPatternFingerprinter formedCleavedWFingerprint = testReactions
1810+
.getSelectedSolution()
1811+
.getBondChangeCalculator()
1812+
.getFormedCleavedWFingerprint();
1813+
assertEquals(4, formedCleavedWFingerprint.getFeatureCount());
1814+
}
18151815
}

0 commit comments

Comments
 (0)