-
Notifications
You must be signed in to change notification settings - Fork 24
Expand file tree
/
Copy pathchanges.log
More file actions
391 lines (345 loc) · 12.9 KB
/
changes.log
File metadata and controls
391 lines (345 loc) · 12.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
-----------------------
Changes (24/03/2014)
----------------------
a) Code optimisation
b) Solution selection rule updated
c) Bug fixed for RXN files
-----------------------
Changes (25/03/2014)
----------------------
a) Code optimisation
b) Bug fix (Rule)
c) RXN File path tokeniser fixed.
d) Similarity matrix printing updated.
e) Matching optimisations ported.
-----------------------
Changes (26/03/2014)
-----------------------
a) Fixed aromaticity related CDK bug
-----------------------
Changes (29/03/2014)
-----------------------
a) Partial handling of missing atom types.
This needs to be fixed as CDK level.
b) Optimised mapping.
c) Unbalanced reaction reporter, exception generation.
d) Ring vs non-ring bug fixed.
-----------------------
Changes (30/03/2014)
-----------------------
a) Stereo conservation is restored.
b) InChi labelling promoted if available.
c) Canonical container and serialised mapping.
d) 2D relayout for missing atoms.
e) Accept user defined customised AAM for balanced
reaction.
f) Automorphism.
-----------------------
Changes (31/03/2014)
-----------------------
a) Code optimisation (large rings).
b) Intuitive error message for unbalanced reaction.
-----------------------
Changes (02/04/2014)
-----------------------
a) RXN file property block with unsupported potential
DIAT COORDINATE BOND TYPE handled.
b) Fixed Thread bug in MCSPlus algorithm.
c) Radical based changes highlighted in the images.
d) Image size optimised 2048*600.
e) Unique naming sensitive to Radicals.
-----------------------
Changes (12/04/2014)
-----------------------
a) AAM image with atom mapping number.
b) AAM image in top-down orientation.
c) Reaction Similarity parser bug fixed.
d) Reaction Annotation option added.
-----------------------
Changes (15/04/2014)
-----------------------
a) CDK library updated, RXN file Hydrogen adder updated.
-----------------------
Changes (26/04/2014)
-----------------------
a) Graph matching bug fixed.
-----------------------
Changes (09/05/2014)
-----------------------
a) CDK updated 1.5.7 snapshot
b) Bug fix for reaction (transferases).
c) MMP output format updated.
-----------------------
Changes (11/05/2014)
-----------------------
a) Algorithm call for subgraph mapping updated (case R03775)
b) FP updating
-----------------------
Changes (15/05/2014)
-----------------------
a) Canonicalise the atom container based on the SMILES
b) Stereo loss is protected by using method a).
c) Bug fixes (phosphate etc.).
d) Optimise VF MCS
-----------------------
Changes (28/05/2014)
-----------------------
a) SMSD ring and atom types based matcher updated
b) Ring mapping based algorithm updated
c) Selection algorithm updated
-----------------------
Changes (16/06/2014)
-----------------------
a) Single mapping bug fixed in substructure search
-----------------------
Changes (16/08/2014)
-----------------------
a) Mapping bug fixed
b) Code optimisation
c) SMSD updated
-----------------------
Changes (12/12/2014)
-----------------------
a) Mol Naming bug fixed
b) Complex mapping resolved 5.4.99.*
-----------------------
Changes (22/12/2014)
-----------------------
a) CDK-1.5.9
b) Minor tweaks
-----------------------
Changes (25/12/2014)
-----------------------
a) SMSD with max iteration limit
-----------------------
Changes (26/12/2014)
-----------------------
a) Ability to process unbalanced reactions, with warnings.
Note: Unbalanced reaction may result in erroneous bond change assumptions.
-----------------------
Changes (27/12/2014)
-----------------------
a) Unbalanced reaction bug fixed.
-----------------------
Changes (08/05/2015)
-----------------------
a) A few bug fixes
b) Draw aromatic bonds.
-----------------------
Changes (13/05/2015)
-----------------------
a) SMSD IAtom comparator
-----------------------
Changes (01/11/2015)
-----------------------
a) CDK-1.5.10
b) Minor Cleanups
-----------------------
Changes (08/11/2015)
-----------------------
a) Set all null hydrogen counts in molecules to 0
b) Cleanup and Optimisation
-----------------------
Changes (30/12/2015)
-----------------------
a) Missing libs added (CDK & commons-cli)
b) Added build.xml (netbeans)
-----------------------
Changes (02/01/2016)
-----------------------
a) CDK 1.5.12 supported
b) Code cleaned and optimised
-----------------------
Changes (22/03/2016)
-----------------------
a) Old Atom Rank (Index) reported
-----------------------
Changes (31/05/2016)
-----------------------
a) Unbalanced reactions with Rearrangement bug fixed
b) CDK jar cdk-1.5.13.jar added
-----------------------
Changes (01/06/2016)
-----------------------
a) Migrate to Maven project with POM.xml
b) Version rdt-2.0-SNAPSHOT
-----------------------
Changes (14/04/2017)
-----------------------
a) Migrate to Maven project with POM.xml
b) Roll back Version rdt-1.5-SNAPSHOT
c) Fixed bugs
d) SMSD precedence on filter frag > stereo > energy
e) Java 8.0
f) CDK 1.5.14
-----------------------
Changes (28/04/2017)
-----------------------
a) MCSPlus improved
b) Version 1.5.1
c) Fixed bugs
d) Speed improved
-----------------------
Changes (13/10/2018)
-----------------------
a) MCSPlus renamed flavours
b) Version 2.0.0-SNAPSHOT with
c) CDK 2.x
d) Author name format change
e) Date changes
-----------------------
Changes (15/10/2018)
-----------------------
a) Loggers cleaned up
b) Version 2.0.1-SNAPSHOT with minor updates
c) Reaction SMILES
-----------------------
Changes (17/10/2018)
-----------------------
a) Stereo flag used for SMILES
b) Clean up
c) Optimised fragment mapping speed (phase 1)
-----------------------
Changes (21/10/2018)
-----------------------
a) Major gain in AAM speed
b) Improved MCS code in the SMSD
c) Code Clean and Bug fixes
-----------------------
Changes (22/10/2018)
-----------------------
a) Code clean up
b) Subgraph mapping improved
c) improved AAM Speed for complex graph
-----------------------
Changes (21/06/2020)
-----------------------
a) Code clean up and minor bug fixed (improved mapping)
b) CDK 2.3 add to the new build
c) Code dependency with the CDK
d) POM Updated
-----------------------
Changes (30/06/2020)
-----------------------
a) Concurrent modification error fixed
b) Exit when job done
c) Command line input typo in -c option fixed
d) Mol layout fixed
e) Enrich mapping pair
f) Moiety added
g) Use multi core
-----------------------
Changes (07/07/2020)
-----------------------
a) BioInception's mapping algorithm patch added
-----------------------
Changes (05/03/2021)
-----------------------
a) -b option for transporter reactions (no bond change)
b) cdk-2.4-SNAPSHOT.jar added
c) clean up
-----------------------
Changes (2026-04-03) — v3.9.0
-----------------------
a) SMSD upgraded to 6.10.2 with energy filter NPE guard.
b) Deadlock fix: GraphMatcher and CallableAtomMappingTool now use
CompletionService.poll(timeout) instead of take() (which blocks forever),
with per-pair budget (15s), overall matcher budget (60s), and algorithm
worker timeout (120s). Orphaned futures are cancelled on timeout to free
the shared executor pool. Phase 1 inline call moved to executor with
timeout to prevent main-thread deadlocks.
c) Identity shortcut stereo + multiplicity fix: isIdentityReaction() now uses
SmiFlavor.Canonical|Stereo (E/Z and R/S are distinguished) and a sorted
List instead of a TreeSet (stoichiometric multiplicity is preserved).
Previously, F/C=C/F>>F/C=C\F was incorrectly classified as a transporter
and routed to MIN; 2CC+CO>>CC+2CO was incorrectly classified as identity.
d) Fractional stoichiometry handling: Reactor.expandReaction() now uses
Math.round() with a tolerance check instead of the while-loop subtraction
trick. Non-integer coefficients (e.g. 0.5, 1.5) emit a WARN and are
rounded to the nearest integer; previously they were silently rounded up
(0.5→1 by ceiling, 1.5→2) with no indication.
e) CompletionService fault isolation: the parallel algorithm collection loop
now wraps each cs.take().get() in its own try-catch(ExecutionException).
A single failing worker no longer aborts collection of all remaining
successful algorithm results; InterruptedException still stops the loop
and restores the interrupt flag.
f) Shared ExecutorService for parallel mapping phase: fixed thread pool
(min(2, min(3, nCPU))) named "rdt-mapping" daemon threads; eliminates
per-reaction thread-pool creation overhead in batch processing.
g) MIXTURE algorithm restored as genuine fallback: participates in phase-2
parallel search alongside MIN/MAX/RINGS; deduplicated by mapping signature
so it only contributes when MinSelection suppresses a valid pairing.
h) Stoichiometric coefficient loss fixed in reagent filter: filtered reaction
now passes Double coefficient from original IReaction to addReactant/addProduct
instead of silently defaulting to 1.0.
i) API bond-change count corrected: RDT.java now sums integer weights encoded
in "PATTERN:N" feature strings (weightSum helper) rather than counting
unique pattern types; fixes under-reporting for multi-bond reactions.
j) Weight-aware Tanimoto similarity: ReactionResult.getAllFingerprints() retains
full "PATTERN:N" strings so stoichiometric differences (C-O:2 vs C-O:1)
are correctly treated as distinct in similarity calculations.
k) MappingDiagnostics memory leak fixed: REACTIONS.get() replaced by
REACTIONS.remove() in snapshot(); static ConcurrentHashMap entries are now
released immediately after being consumed, preventing unbounded growth in
batch runs.
l) Memory architecture redesign: ThreadSafeCache now uses SoftReference values
so the JVM can reclaim cached MCSSolution objects under heap pressure.
Capacity reduced from 10,000 to 500 entries with GC-aware eviction.
m) Removed ThreadSafeCache.cleanup() calls from CallableAtomMappingTool that
were clearing the shared cache while MCS worker threads still accessed it
(concurrent read/delete race condition causing spurious recomputation).
n) InterruptedException propagation fix: GameTheoryEngine.UpdateMatrix() and
all four GenerateMapping() loops now check Thread.interrupted() and throw
InterruptedException instead of silently swallowing cancel signals.
Previously, future.cancel(true) from algorithm timeouts was ignored,
causing cancelled workers to run indefinitely on the shared executor.
o) GameTheoryMatrix.Clear() now releases all 7 data structures (was only
clearing 2 of 7), preventing per-reaction memory accumulation.
p) Local MCS executor threads are now daemon, preventing JVM hang on stuck
MCS pairs.
q) Surefire heap increased to 4g for benchmark dataset.
r) SMSD citations added to ALGORITHM.md and README.md (Rahman 2025, 2009).
s) SMSD Pro MCS algorithm pseudocode added as Appendix A in ALGORITHM.md.
t) CI publish trigger fixed: GitHub Packages deploy now triggers only on
version tags (refs/tags/v*), not on every master push (was returning
HTTP 409 Conflict on repeated same-version deploys).
u) Benchmark progress reporting reduced from every 100 to every 500 reactions
to keep CI logs clean.
v) Golden dataset benchmark report added: 1,851 reactions, 86.4% chemistry-
equivalent accuracy (100% on balanced reactions), charts, images, LaTeX.
w) Version bumped to 3.9.0; public release by BioInception PVT LTD.
-----------------------
Changes (2026-04-03) — v3.8.1
-----------------------
a) SMSD upgraded to 6.9.1
b) Identity pre-filter now uses MolGraph.toCanonicalSmiles() (stereo-aware,
consistent with internal MCS canonicalisation) instead of CDK SmilesGenerator
c) Stereo-correct identity detection: enantiomers and diastereomers no longer
incorrectly short-circuited to identity mapping
d) Java 21 full compatibility: removed --sun-misc-unsafe-memory-access=allow
from .mvn/jvm.config and surefire argLine (flag removed in Java 21)
e) Benchmark: 99.2% chemically-equivalent atom mapping on Lin et al. 2022
golden dataset; benchmark table corrected to use fair metric
f) Version bumped to 3.8.1; public release by BioInception PVT LTD
-----------------------
Changes (2026-03-xx) — v3.6 to v3.8.0
-----------------------
a) Complete internal rewrite and modernisation (BioInception PVT LTD)
b) SMSD upgraded 6.7.0 (proprietary BioInception library)
c) Identity pre-filter pipeline: identity → size ratio → Tanimoto similarity
reduces MCS workload without compromising chemistry accuracy
d) Formal algorithm description added (ALGORITHM.md)
e) Golden dataset benchmark (Lin et al. 2022, 1,851 reactions) added
f) Toolkit-agnostic graph model API (CDK / RDKit / OpenBabel interchange)
g) Clean one-line Java API: RDT.map(reactionSmiles)
h) Namespace migrated uk.ac.ebi → com.bioinceptionlabs
i) CDK updated to 2.12; Java 21 baseline
j) Codebase reduced from 345 to 68 files; 164-test suite at 100% pass
k) Security hardening, memory leak fixes, thread-safety improvements
-----------------------
TO DO
-----------------------
a) CDK to handle missing atom types like Fe, Co etc.
b) Fix DIAT bonds in the CDK.
c) Old Atom Rank reporting test.
d) Graphormer mapper benchmark comparison (in progress)