-
Notifications
You must be signed in to change notification settings - Fork 6
/
ChangeLog
3271 lines (2945 loc) · 136 KB
/
ChangeLog
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
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
170427 Martin Mann
* ggl/chem/SMILESwriter :
* NodeData :
+ classLabel : atom class label if present (used for rank tie break)
* canonize() :
+ use class labels for rank tie-breaking
170426 Martin Mann
+ ggl/chem/Molecule_Graph_noClass : wrapper for a ggl::chem::Molecule_Graph
that removes all class label information from the atom node labels
* toyChem/Util :
+ argument 'ignoreAtomClass' : ignore atom class label for rule matching
170407 Martin Mann
* configure.ac :
+ "-DBOOST_SYSTEM_NO_DEPRECATED" compiler flag to disable unneeded
dependency to boost_system library
170407 moving source to github:BackofenLab/GGL
version 4.1.2 Martin Mann
150430 Martin Mann
* ggl/Rule_GML_grammar.icc :
+ list parsing : now allows for empty lists
* testggl_Rule_GML_grammar.cc :
+ test example for empty context
version 4.1.1 Martin Mann
150424 Martin Mann
* misc/m4/m4_ax_boost_base.m4 : updated to version 26
* ggl/chem/MoleculeUtil.cc :
* ggl/chem/SMILESwriter.cc :
* bin/toyChemUtil.cc :
* boost namespace usage extended to avoid compilation issues
* misc/manual/Makefile.am :
+ missing figures added
- faq.tex disabled
version 4.1.0 Martin Mann
140728 Martin Mann
* tests/test_ggl_chem_AP_NSPDK :
* tests/test_bin_aromModelNSPDK :
* verified files updated
140725 Martin Mann
! BOOST_NOINLINE not correctly defined for boost versions 1.53.00 in debug
--> make CPPFLAGS="-DBOOST_NOINLINE='__attribute__ ((noinline))' -fpermissive"
fixes the problem
* ggl/MR_ApplyRule
* ggl/chem/ChemRule
* ggl/chem/MoleculeUtil
* ggl/chem/ReactionTransitionState
- obsolete typedefs removed
* test/ggl_chem_MoleculeUtil.cc
* extended valence check values integrated
* configure.ac
* AM_INIT_AUTOMAKE([subdir-objects]) : to enable subdirectory sources
140412 Martin Mann
* ggl/Rule_GMLparser :
+ parseCompactRule() : parses a compacted rule encoding without parsing
rule constraints, rule label, etc. just nodes and edges
+ test/testggl_Rule_GMLparser : tests
+ parseRule()
+ parseCompactRule()
* bin/toyChemUtil :
+ parseCompactRules() : parses rules from compacted GML
* parseRules() : new parameter "compactGML" to use parseCompactRules()
* bin/reactionTool :
+ inMode=C : read compacted GML as input
140328 Martin Mann
* ggl/chem/AromaticityPerception :
* correctMolecule() : now virtual to make it "overwritable" for
subclasses, e.g. to really disable aromaticity perception
* ggl/chem/AP_disabled :
+ correctMolecule() : does nothing and thus disables aromaticity
perception
* ggl/chem/SMILESparser :
* pruneAromaticNonRingBonds() : BUGFIX : increase of ring enumeration
from 15 to 20 to catch also weird molecules of current interest...
e.g. SMILES "Bc1c2ccc(cc3ccc(cc4ccc(cc5ccc1[nH]5)n4)[nH]3)n2"
140306 Martin Mann
* bin/aromModelNSPDK :
* mode "cluster" :
+ prints now for each representative (*) a ring annotated SMILES (*) the
cluster size (*) the number of molecules for this cluster
* BUGFIX: feature vector less operator now based on sparse data and
comparing whole data set if needed
140210 Martin Mann
* ggl/chem/MoleculeUtil :
* AtomLabelData :
+ isToBeChecked : new flag (0/1) that encodes whether a valence check is
to be done for this type of atom or not
* constructor adapted
* checkAtomValence() : only applied for atoms with atomData->isToBeChecked
== 1
* getAtomData() : inilization now sets the isToBeChecked flag. currently
only 1 for atom 1-11, 15-17, 33-35
140205 Martin Mann
* ggl/chem/MoleculeUtil :
* AtomLabelData :
+ vector of alternative valences (including the standard valence)
* checkAtomValence() :
* now tests against all alternative valences for each atom
140131 Martin Mann
* ggl/chem/MoleculeUtil :
* AtomLabelData :
* constructor parameter order changed
+ static shellSizeSize member : holds the list of electron shell size
sums that is to be used to get a more precise proton filling system
140130 Martin Mann
* bin/aromModelNSPDK :
+ new parameter 'xval' that guides the cross validation
+ mode "xval" : does an 'xval'-cross validation on the given data and
prints all target-prediction value pairs to 'out' stream and statistics
to 'log' stream
140124 Martin Mann
* bin/aromModelNSPDK :
* mode "cluster" :
* picks only one random element per cluster
+ reports number of molecules per cluster
140122 Martin Mann
* bin/aromModelNSPDK :
+ new mode "cluster" : sorts all features and reports only up to two
random representative SMILES for each unique feature (and a cluster size
histogram)
NOTE: one molecule might be selected for different ring features, such
that the final list of selected SMILES might be smaller than the number
of clusters
140109 Martin Mann :
+ bin/gmlRings : ring enumeration for arbitrary graphs in GML format
providing the functionality of molRings
+ chem/AP_disabled : dummy aromaticiy perception implementation, which
does no aromaticity perception but just preserves the current aromaticity
assignment
* bin/molTool :
* no aromaticity perception is now done via AP_disabled
* bin/toyChem :
+ disabling of aromaticity perception now via "-aromaticity=N", which
triggers the use of AP_disabled
131210 Martin Mann :
* bin/molRings :
* parameter "graph" now optional (since default = STDIN)
131025 Martin Mann :
* ggl/chem/AP_NSPDK_Model_Marvin_general_2013
* test results were wrong (CnP from OpenBabel results)
* ggl/chem/AP_NSPDK_Model :
+ nspdk_maxRingDistance : If ringCentered == true, this parameter defines
up to what distance of ring nodes nodes are viewPoints, ie. a value = 0
restricts the viewpoints to the ring only.
* ggl/chem/AP_NSPDK :
+ RingWeightVec : data structure to encode (index,nodeWeight) for node
weight computation
+ getViewPoints() : central function to generate the view point set
* if (model.nspdk_maxRingDistance > 0) : all nodes up to the given
distance from the ring nodes are view points
* bin/aromModelNSPDK :
* adaption to AP_NSPDK::RingWeightVec
* adaption to AP_NSPDK_Model::nspdk_maxRingDistance
131023 Martin Mann :
* ggl/chem/AP_NSPDK_Model :
- pruneProtons : obsolete member, only full proton models are used
+ ringCentered : new parameter, stats whether or not features have to be
ring connected or not
* bin/aromModelNSPDK :
- pruneProtons : obsolete parameter, only full proton models are used
+ ringCentered : new parameter, stats whether or not features have to be
ring connected or not
* printWeightedGML() : BUGFIX : weights were given for wrong (shifted) IDs
* ggl/chem/AP_NSPDK :
* getFeatures() : viewpoints according to model.ringCentered
* getFeaturesOfRing() : viewpoints according to model.ringCentered
* getWeightsOfRing() : viewpoints according to model.ringCentered
* getWeightsOfRing() : viewpoints according to model.ringCentered
* ggl/chem/AromaticityPerception :
* relabelMolecule()
* data structure changed for nodes2relabel
* resorting instead of data structure shrinking
* AdjacencyComp :
* operator() : restructuring for better overview and maybe bugfixing ;)
* bin/reactionTool :
* SMIRK output : will now ALWAYS feature class labels to make it really
represent the reaction
131022 Martin Mann :
* ggl/chem/MoleculeUtil :
+ isGroupLabel() : checks whether or not a given atom label represents a
group
* insertGroups() :
* uses now isGroupLabel() for group node check
* removeProtons() :
* ignores group nodes
+ getGroupLabel() : extracts the group label from a complex node label
* bin/toyChemUtil :
- GROUP_Container : replaced by ggl::chem::GroupMap
* bin/* :
* GROUP_Container -> ggl::chem::GroupMap
* bin/molTool :
* bin/reactionTool :
+ if groups are present, they are inserted in the output too
+ "noGroupInsertion" parameter : disables the group insertion for output
* ggl/chem/ChemRule :
* insertGroups()
+ returns true if all group labels are replaced and false otherwise
* unknown group labels result in return value false instead of throwing
an exception
* ggl/chem/SMILESwriter :
* canonize() :
+ group labels are now extracted via MoleculeUtil::getGroupLabel()
131018 Martin Mann :
* ggl/Graph_GML_writer :
* write() : new paramter "additionalGML" to provide additional GML to be
part of the generated graph GML encoding
* bin/aromModelNSPDK :
* printWeightedGML()
+ new parameter "multilineGML" guides GML output
* ring weights are now encoded in specific "ring" GML list encodings
and only one weighted output graph is generated per molecule
* ggl/chem/AromaticityPerception :
* RingDescriptor :
+ member predCertainty : a value >= 0 indicating the certainty of the
predState given that the larger the more certain
* ggl/chem/AP_NSPDK :
* getNodeWeights() :
+ set the predCertainty of a ring to the absolute prediction value
* BUGFIX : pruneNonSingleDoubleBondRings() was not called
* getFeature() :
* BUGFIX : pruneNonSingleDoubleBondRings() was not called
+ isAromaticRing(double) : aromaticity decision for a given pred. value
+ getPredictionValue(ring) : prediction value generation for a given ring
* sgd/svmmodel :
+ predict(double) : does a classification for a given prediction value
* ggl/chem/AromaticityPerception :
* correctAromaticity() and all subclasses :
* TWEAK : now first fused rings are removed before single-bond-only and
triple-bond-containing rings are removed; should reduce candidate set
* ggl/chem/SMILES_grammar :
* SMILES encoding documentation corrected
* ggl/chem/SMILESparser :
* parseReactionSMILES()
+ protons without class ID adjacent to atoms with class ID (eg from
complex atom labels within SMIRKS) are automatically assigned with a
generated class ID instead raising an exception
130924 Martin Mann :
* ggl/chem/ChemRule :
* TransitionState.getSMILES() :
* does now catch exceptions of SMILES generation and always returns a
SMILES. In case of an exception a dummy label "???" is returned.
* now rules mit wildcards are supported via SMILESwriter
* ggl/chem/SMILESwriter :
* optional support for wildcard atom labels introduced
* getSMILES() :
* canonize() :
+ new parameter "allowWildcard" and according forwarding to NodeData()
* NodeData() :
+ new parameter "allowWildcard" that defines whether or not an exception
is raised if a wildcard is given as atom label.
130823 Martin Mann :
* ggl/chem/AromaticityPerception :
* RingDescriptor :
+ default constructor added
* now public sub class
* relabelMolecule() : now inplace molecule change
* correctAromaticity() : now inplace molecule change
* ggl/chem/AP_NSPDK :
* getNodeWeights() : return value changed
* perl/Chemistry-GGL/GGL.xs :
* ggl/chem/GS_MolCheck :
* tests
* adaption to AromaticityPerception interface changes
130821 Martin Mann :
+ data/aromModel : holds all source data needed to train the aromaticity
SVM models using bin/aromModelNSPDK
+ AP_NSPDK_Model_Marvin_general_2013.zip : model "Marvin:general:2013"
+ AP_NSPDK_Model_OpenBabel_2013.zip : model "OpenBabel:2013"
- ggl/chem/AP_NSPDK_Model_PubChem* : incompatible to new NSPDK kernel
- ggl/chem/AP_NSPDK_Model_ChEBI* : incompatible to new NSPDK kernel
+ ggl/chem/AP_NSPDK_OpenBabel_2013* : new model based on OpenBabel output
+ ggl/chem/AP_NSPDK_Marvin_general_2013* : new model based on Marvin output
using the 'general' aromaticity prediction mode
* ggl/chem/AP_NSPDK_Model :
- old models removed (PubChem*,ChEBI*)
+ new models added "OpenBabel:2013" and "Marvin:general:2013"
* perl/Chemistry-GGL/GGL.xs :
* new default aromaticity model is "Marvin:general:2013"
* bin/molTool :
* bin/toyChem :
- aromaticity_noH model removed (obsolete)
* available aromaticity models changed to "OpenBabel:2013" and
"Marvin:general:2013"
* default aromaticity model is now "Marvin:general:2013"
* ggl/chem/SMILES_grammar :
* memorize_atom : undo bugfix of 130920, since not working for all SMILES,
e.g. "COc(cc1)ccc1C#N" -> has to be done "brute force" by an extra run
of ring perception and aromatic edge handling within SMILESparser
* sgm/RP_Hanser96 :
+ findRingBonds() : enumerates all bonds participating in rings
* ggl/chem/SMILESparser :
+ pruneAromaticNonRingBonds() : checks for aromatic bonds that are not
part of an aromatic ring (artifacts from SMILES parsing using the
grammar) and replaces them with a single bond label '-'
* parse* : apply pruneAromaticNonRingBonds() on all parsed molecules
= BUGFIX for non-specified single bonds between two aromatic rings
* ggl/chem/MR_Reaction :
* default aromaticity model is now "Marvin:general:2013"
+ test/bin_aromModelNSPDK
+ test for apply mode
* sgm/NSPDK_port :
+ getNodeFeatures() : generates the feature vector for each node
* ggl/Graph_GML_writer :
* ggl/Rule_GML_writer :
* BUGFIX : missing blank in front of "target" keyword
* ggl/chem/AP_NSPDK :
+ getNodeWeights() : generates the feature vector for each node for each
ring
+ getWeightsOfRing() : generates the feature vector for a specific ring
* bin/aromModelNSPDK :
+ option to load one of the default models "OpenBabel:2013" or
"Marvin:general:2013" for test or apply mode
+ parameter "outNodeWeight" enables the GML output for each prediction
graph in GML where each node label is featuring the according
normalized NSPDK weight
130820 Martin Mann :
* sgd/* : adaptions to new NSPDK version
* nspdk/* : adaptions to new NSPDK version
!!! NOTE: THIS INVALIDATES THE AROMATICITY MODELS !!! TO BE UPDATED SOON !!!
* ggl/chem/SMILES_grammar :
* memorize_atom : BUGFIX : aromatic bond label only inserted if at least
one ring closure is open. fixes issues with "c1ccccc1-c2ccccc2"
130819 Martin Mann :
+ misc/manual/tutorial-viz : new tutorial for the visualization scripts
written by Norah Schnorr
130814 Martin Mann :
* ggl/Rule_GML_writer :
+ writeCompact() : writes a simple graph encoding of the rule where
changes are encoded within an single label
* Therin, each node/label occurs only once. To indicate label changes or
* edge insertions/deletions, a label is in one of the following 4 forms:
*
* - "C" : the according node/edge has this label left and right = context
* - "L|" : the according edge is removed and the left side label L is given
* - "|R" : the according edge is inserted and the right side label R is given
* - "L|R" : the node label changes from left label L to right label R or
* the edge changes from valence L to valence R when applied
* bin/reactionTool :
+ outMode=C : compacted GML that generates a single graph encoding of a
reaction
130718 Martin Mann :
* bin/aromModelNSPDK :
* BUGFIX : application mode was not returning the aromaticity corrected
molecule
130718 Martin Mann :
* bin/aromModelNSPDK :
+ new mode 'apply' to apply a given model for aromaticity perception onto
a given list of molecules in SMILES format
* bin/molMatch :
+ outMode 'L' : one line GML output
130710 Martin Mann :
+ ggl/chem/ClassIDGraph : graph wrapper that appends the node ID as class
information to the atom label.
* bin/reactionTool :
+ enabling of atom mapping information within SMIRKS output
130709 Martin Mann :
* bin/reactionTool :
+ outMode=S : write ChemRule to SMIRKS reaction SMILES output
130704 Martin Mann :
* configure :
- "--with-boost-include" obsolete since boost m4 macro usage
(thanks to Jakob Lykke Andersen)
130703 Martin Mann :
* misc/manual/tutorial-rules.tex.in :
* typo fixed (thanks to Robert Haas)
* testggl_chem_SMILES_grammar :
+ new test for the ring closure BUGFIX
130702 Martin Mann :
* ggl/chem/SMILES_grammar :
* BUGFIX : ring_closure definition was missing a possible bond in front of
a complex ring closure. (thanks to Daniela Pütz)
130701 Martin Mann :
* bin/toyChemUtil :
* correctInputMolecules() :
- noH aromaticity parameter removed
- protonRemoval parameter removed
+ support for NULL aromaticity model added (no aromaticity perception in
that case)
* old stuff removed and cleaned
* bin/molTool :
* bin/toyChem :
* correctInputMolecules() call adaptions
+ support for no aromaticity perception (-aromaticity=N)
* bin/molTool :
+ outMode 'L' : one line GML output
* bin/molMatch :
* extended parsing error reporting
130629 Martin Mann :
* ggl/chem/MoleculeUtil :
* getBondData() :
+ new bond type "^" with valence 0 for coordinative bonds
* bin/Makefile
* tests/Makefile
- catalan and hanser binary disabled until we enforce BGL version >= 1.50
130619 Martin Mann :
* ggl/chem/SMILESwriter :
+ if unknown bond or atom labels are found an according exception is
thrown (previously only ensured by asserts)
+ wildcard not supported for SMILES generation (dummy AtomLabelData is
available -> special check needed)
- assert for "HH" case removed and replaced with changed conditional
* bin/toyChemUtil :
+ additional exception handling for SMILESwriter exceptions to skip graphs
that are not convertable into SMILES
130618 Martin Mann :
* bin/toyChemUtil :
* parseMolGML() :
+ support for GML encoding covering multiple molecule, ie. connected
components; now each is added individually to the molecule storage
130614 Martin Mann :
+ bin/molMatch : computes a mapping of a molecule representation given in
SMILES format onto a representation of the same molecule in GML format.
It outputs the mapping as a reindexed version of the SMILES in GML format.
Furthermore, it ignores all aromaticity information for the mapping to
enable the mapping of Kelkule forms onto representations with aromatitic
labels.
+ bin/molRings : enumerates all rings that are candidates for aromaticity
perception
130529 Martin Mann :
* ggl/chem/MoleculeUtil :
* isConsistent() :
- valence check disabled, since does not cover all cases (e.g. 'S')
130527 Martin Mann :
* ggl/chem/ChemRule/TransitionState :
+ allows now the presence of class information within the atom labels.
the valence change information is now added with a leading "000" as a
separator to already present class information. This enables the
distinction of the class information from the valence change.
130516 Martin Mann :
* ggl/chem/MoleculeUtil :
* checkAtomValence() : checks now for a more constrained variant
0 <= [(bondValenceSum+aromAdd) - (valence+charge)] <= aromAdd
+ misc/m4/ : directory for all autoconf m4 extensions
+ misc/m4/m4_ax_prog_doxygen.m4 : former content of acinclude.m4 for doxygen
configuration
+ misc/m4/m4_ax_boost_base.m4 : boost check extension for autoconf
- acinclude.am : replaced by specific m4 inclusions
* configure.ac :
+ explicit inclusions of doxygen and boost check extensions
+ boost lib version check for >= 1.50.0 since it contains the bugfix of
clear_vertex() for self-loops (needed e.g. for hanser and catalan)
- selfwritten boost path support and check is now obsolete
* ggl/MR_ApplyRule :
* loop-edge removal for obsolete nodes is different (should be obsolete
for boost >= 1.50.0)
130515 Martin Mann :
* bin/toyChemUtil :
* parseSMILES() :
* parseMolGML() : disabled input sanity check from SMILES and GML
Molecule parsing, is and has to be done externally (thanks to xtof)
* ggl/chem/MoleculeUtil :
* checkAtomValence() : checks now for
0 <= [(bondValenceSum+aromAdd) - (valence+charge)] <= 1
to cover also cases where only single bonds contribute to the aromatic
ring system
130514 Christoph Flamm :
* perl/lib :
* adaptions to changed interfaces in version 4.*
* perl/tests :
* adaptions to lib changes
130419 Martin Mann :
* ggl/chem/SMILESwriter :
* build_dfs() : check for non-to-print edge labels now explicitely checks
for bond_valence == 1
* ggl/chem/AromaticityPerception :
- pruneTripleBondRings() : replaced by pruneNonSingleDoubleBondRings()
+ pruneNonSingleDoubleBondRings() : formerly pruneTripleBondRings
prunes all rings not composed from single and double bonds
* ggl/chem/AP_NSPDK :
* initializeGraph() : check for aromatic ring candidates now explicitely
checks for single double bond valence
* ggl/chem/MoleculeUtil :
- C_BondRing : renamed to C_BondLoop
+ C_BondLoop : formerly C_BondRing
- checkBondRing() : renamed to checkBondLoop()
+ checkBondLoop() : formerly checkBondRing()
+ checkAtomValence() : checks whether or not all atoms show sane electron
distributions
+ C_AtomValence : error code for non-consistent electron distributions
* isConsistent() :
+ checkAtomValence added
* dependency of checks now guided via boolean flags
* decodeConsistencyStatus() :
* description for C_AtomValence added
* test/ggl_chem_MoleculeUtil .
+ isConsistent() tests for molecules before and after proton filling
* ggl/chem/ChemRule :
- C_BondRing : renamed to C_BondLoop
+ C_BondLoop : formerly C_BondRing
- checkBondRing() : renamed to checkBondLoop()
+ checkBondLoop() : formerly checkBondRing()
130418 Martin Mann :
- ggl::NodeVec
- ggl::OutEdgeMap;
- ggl::NodeMap;
+ ggl::Rule::NodeVec : formerly ggl::NodeVec
+ ggl::Rule::OutEdgeMap : formerly ggl::OutEdgeMap
+ ggl::Rule::NodeMap : formerly ggl::NodeMap
* ggl/chem/MoleculeUtil :
* obsolete and wrong namespace statements removed
* ggl/Graph.hh :
+ ggl::NodeIndexVec
+ ggl::NodeIndexSet
* ggl/chem/Molecule.hh :
+ ggl::chem::NodeIndexVec
+ ggl::chem::NodeIndexSet
130416 Martin Mann :
+ bin/reactionTool : chemical rule conversion and checking tool
+ testggl_chem_SMILESparser
+ test parseMultiSMILES
+ test parseReactionSMILES
* ggl/chem/SMILESparser :
* parseReactionSMILES() :
+ classID pruning now optional
130415 Martin Mann :
* ggl/chem/SMILES_grammar :
+ leading and tailing whitespaces are ignored for parsing
* ggl/chem/SMILESparser :
+ parseMultiSMILES( ) : parsing of a SMILES that encodes multiple
molecules separated by '.' and returns a vector of the parsed molecules
+ parseReactionSMILES( ) : parsing of a reaction SMILES producing
a graph grammar rule based on the atom mapping provided by the class IDs
of educt and product atoms
130413 Martin Mann :
+ ggl/Rule_GML_writer : create a GML encoding for a rule
NOTE: currently incomplete : no constraints and C&P operations encoded
version 4.0.1 Martin Mann
130408 Martin Mann :
* tests/Makefile :
* BUGFIX : wrong variable to add verified sources of binary tests to dist
* misc/tutorial/Makefile :
* BUGFIX : logo of University of Freiburg missing
130405 Martin Mann :
+ misc/literature/Bemis-1996.pdf : scaffold annotation of molecular graphs
+ sgm/GraphScaffold : implementation of Bemis-1996 for scaffold annotation
+ testsgm_GraphScaffold : simple test for the scaffold assignment
+ ggl/Graph_gSpan_writer : writing ggl::Graph object in gSpan format
- bin/molCheck : renamed to molTool since it does more than checking
+ bin/molTool : formerly molCheck
+ gSpan output mode added
+ graph scaffold annotation added as class information within atom label
- testbin_molCheck : renamed to molTool
+ testbin_molTool : formerly molCheck test
130403 Martin Mann :
* bin/toyChemUtil :
* printSMILES() : proton compression was not enabled for toyChem output
* tests/toyChem :
+ formose-process : example from GGL paper added
* ggl/Graph_GML_grammar :
* ggl/Rule_GML_grammar :
* keyvalue_closure member definition corrected (no typename needed)
* ggl/chem/MoleculeUtil :
* ggl/chem/AromatiticyPerception :
* ggl/chem/MoleculeDecomposition :
* ggl/chem/MoleculeComponent_GMLparser :
* <stdexcept> header missing
* ggl/chem/SMILESwriter :
* ggl/chem/MR_Reaction :
* ggl/chem/AromatiticyPerception :
* ggl/chem/GS_chem :
* "typename" not needed
130321 Martin Mann :
* ggl/chem/MoleculeOB :
* BUGFIX : labels with atomic number 0 cause now a runtime error
(thanks to Bernhard Thiel)
* ggl/chem/SMILESwriter :
* BUGFIX : all single char atom labels were treated as non-complex labels
(thanks to Bernhard Thiel)
130315 Martin Mann :
* ggl/chem/AromaticityPerception :
* BUGFIX : memory leak since clearData() was called in constructor instead
of within destructor (thanks to Bernhard Thiel)
130312 Martin Mann :
* misc/manual :
+ Freiburg University logo and naming added
+ section about radical encoding within rules tutorial
* copy-and-paste section within rules tutorial moved out of chem part
130311 Martin Mann :
* ggl/chem/MoleculeOB :
+ convert( OBMol ) : conversion from OpenBabel molecule to Molecule via
CML, ie. currently quite inefficient
+ convert( Molecule ) : conversion from Molecule to OpenBabel molecule,
currently only atom type and charge are considered for atom labels
* tests/testggl_chem_MoleculeOB :
+ test for convert methods
* ggl/chem/MoleculeUtil :
+ compressGroups(..) : replaces group subgraphs with according group
identifiers
* ggl/chem/SMILESwriter :
+ getSMILES( .. groups ..) : support for group labels within generated
SMILES
* NodeData :
+ isAromatic : store aromaticity flag of atom data
* all node aromaticity checks are done via nodeData (avoids recomputation)
+ tests/testggl_chem_MoleculeGroups :
+ test for group handling in SMILESparser and SMILESwriter
version 4.0.0 Martin Mann
130125 Martin Mann :
* ggl/chem/MoleculeUtil :
+ copy() : copies a Graph_Interface object into a molecule graph. Note,
no sanity checks for node/edge labels, degrees, etc. are done!
* tests/testbin_molcheck :
+ sorting order ensured using LC_ALL setup before calling sort
130117 Martin Mann :
* ggl/chem/SMILESwriter :
* BUGFIX : canonize() : missing invariant update for tie break case
(thanks to and fixed by Jakob Lykke Andersen)
* test/ggl_chem_SMILESwriter :
+ generates node rotation permutations for some molecules to check for
uniqueness of generated SMILES
121116 Martin Mann :
* ggl/Rule :
* C_Consistent : BUGFIX : now value of 1 instead of 0... this made the
whole error reporting faulty (thanks to Berhard Thiel)
* isConsistent() : obsolete statement pruned
* ggl/chem/ChemRule :
* isConsistent() : obsolete statement pruned
* checkElectronChange() : BUGFIX : special handling of proton atoms amiss
* sgm/Pattern/MatchConstraint :
* sgm/MC_Node :
* sgm/MC_Edge :
+ isConstraining(nodeID) : checks whether or not a given node is covered
by the current constraint or not
121107 Martin Mann :
* tests/Makefile.am :
+ dataChemRule.icc was missing and thus not part of generated
distributions (thanks to Kadir F. Uyanik)
121024 Martin Mann :
* ggl/chem/ChemRule :
* insertGroup() :
+ ensures now that groups are only given and replaced in context or
label change nodes. otherwise an exception is raised
+ BUGFIX : handling of right label of label change nodes was missing
* misc/manual/tutorial-groups :
+ example of label changing proxy node added
* ggl/chem/SMILES_grammar :
+ parsing of class name in SMILES enabled
* perl/chemrule2svg.pl
+ support of class name added
* usage info corrected
* height setup corrected
* perl/molcomp2svg.pl
+ support of class name added
121023 Martin Mann :
* sgm/Pattern :
* MatchConstraint::remap() : new parameter to hint at unmatched nodes.
if this constraint covers unmatched nodes, no remapped version is
returned.
* sgm/SubGraphPattern :
* remapConstraints() : prunes now constraints that were not remapped since
not covered by this subgraph
* ggl/Rule :
* getUsedWildcard() : now virtual to be overwritten
* setUsedWildcard() : now virtual to be overwritten
* ggl/Rule_GML_grammar :
* wildcard "not-set" setup and check uses now the same string as the rest
* ggl/MC_* :
* remap() : adapted to MatchConstraint interface change
* ggl/chem/ChemRule :
+ getUsedWildcard() : returns chemical wildcard label of MoleculeUtil
+ setUsedWildcard() : overwrites wildcard setting without any consequence
* ggl/chem/LeftSidePattern :
- getUsedWildcard() : obsolete since done via ChemRule function
* ggl/chem/MC_MoleculeDecomposition :
* MC_MC_RingNode::remap() : adapted to MatchConstraint interface change
* ggl/chem/MC_MC_Node* :
* remap() : adapted to MatchConstraint interface change
* bin/toyChemUtil :
* singleRuleApplicationRec() : BUGFIX : was not copying the match
constraints and wildcards to the subpatterns to match for
multi-component left side patterns (thanks to Bernhard Thiel)
121022 Martin Mann :
* ggl/chem/AromaticityPerception :
* pruneRings : ring overlap computation now via pure iteration and without
temporary data structure creation
* relabelRings : BUGFIX : was using old iterator (C&P bug)
121018 Martin Mann :
* ggl/chem/SMILESwriter :
* handling of non-aromatic single bonds connecting aromatic atoms added
* BUGFIX : ignoreProton handling of single atoms with adjacent protons
* NodeData :
+ new constructor based on atom label
* ggl/chem/SMILES_grammar :
* BUGFIX : was not parsing aromatic complex atom labels
* ggl/chem/MoleculeUtil :
* removeProtons() : is now only pruning protons that cannot be inferred
from atom valence, charge, and adjacent bond information. Remaining
non-inferrable protons are preserved within complex atom labels.
* bin/molCheck :
- "removeProtons" parameter : now standard behaviour to produce small
SMILES
+ "noProtonRemoval" parameter : optional preserving of adjacent protons
for the output
121017 Martin Mann :
* ggl/chem/AromaticityPerception :
+ pruneTripleBondRings() : removes all rings that contain triple bonds or
higher. This is applied before fused rings are pruned. This way, only
rings that can be aromatic are predicted in the end.
+ AdjacencyData : formerly EdgeData
+ AdjacencyComp : formerly EdgeDataComp
* comparison ensures now that single bond inclusions are always smaller
than any other inclusion and thus handled first
121013 Martin Mann :
* ggl/chem/AromaticityPerception :
+ implements RingReporter
+ RingDescriptor : formerly part of AP_NSPDK
+ AromaticityState information to store the prediction per ring
* rename AromaticEdge -> Edge
* rename AtomaticEdgeSet -> EdgeSet
+ allRings : formerly part of AP_NSPDK : holds all rings to predict
+ pruneFusedRings() : formerly part of AP_NSPDK : removes larger rings
from allRings that can be decomposed into two known smaller ones
+ findAllRings() : abstract function that fills allRings member
* ggl/chem/AP_NSPDK :
- allRings : now part of AromaticityPerception
- pruneFusedRings() : now part of AromaticityPerception
- does not implement RingReporter : now part of AromaticityPerception
+ findAllRings() : finds all rings up to the maximal size the used model
can predict
- RR_RelabelRings : replaced by relabelRings()
+ relabelRings() : relabels all rings within NSPDK class based on allRings
+ isAromaticRing() : individual check for aromaticity for a single ring
120925 Martin Mann :
* configure.ac :
+ support for build with 2011 ISO C++ standard via "--enable-c++11"
120905 Martin Mann :
* configure.ac :
* non-debug compilation options changed : "-fno-strict-aliasing" added
REASON: boost library seems to be incompatible with some aliasing
implementations within gcc-4.7 and above. Thus, this optimization is
disabled to avoid unexpected segfaults.
120904 Martin Mann :
* configure.ac :
- explicit definition of "__cplusplus" removed since internally set by
C++ compiler and thus causing compilation warnings
* nspdk/*FlagTraits :
+ virtual destructor added to make ANSI-conform
* bin/soduko :
* comparison between signed and unsigned integer expressions fixed
120706 Martin Mann :
* ggl/chem/SMILES_grammar :
* BUGFIX : atom2_parser : first character was not set correctly since the
parser is copied. Thus it is now set via an external char and accessed
via char pointer.
* tests/testggl_chem_SMILES_grammar : SMILES list extended
* sgm/SubGraph : some member functions are now inlined
120702 Martin Mann :
+ misc/logo/GGL-logo* : new logo added
* misc/manual : new logo incorporated
* misc/doxygen : new logo incorporated
* misc/literature :
+ Weininger-1989-2 : unique SMILES generation in ggl::chem::SMILESwriter
120629 Martin Mann :
* ggl/chem/MoleculeUtil :
* getAtomLabel(..) : if the label is unknown and cannot be split: no
label is returned (so far only checked via an assert)
* ggl/chem/SMILES_grammar :
+ simpleSymbol_parser : dedicated parser for single character atom labels,
checks whether or not the label is known in MoleculeUtil::getAtomData()
+ atom1_parser : dedicated parser for single character atom labels that
checks whether or not the label is known in MoleculeUtil::getAtomData()
+ atom2_parser : dedicated parser for two character atom labels that
checks whether or not the label is known in MoleculeUtil::getAtomData()
+ bond_parser : dedicated parser for single character bond labels that
checks whether or not the label is known in MoleculeUtil::getBondData()
* definition : the grammar definition uses now the new parsers instead of
the list of explicit character or string parser. This should be more
performant and ensures the compatibility of parsable molecules with the
ggl::chem package. The latter is most important.
* sgm/Graph_Interface : inline function definitions now within .icc-file
* ggl/chem/SMILESwriter :
* canonize(..) : performance tuning
* vertex iteration based on nodeData, ie. only non-proton nodes
* overwrite of rank vectors instead of clear and recreate
* last obsolete while loop pruned
120628 Martin Mann :
* ggl/chem/SMILESwriter :
* produces now ALWAYS complex atom labels, ie. no explicit proton
information is produced
+ if protons are to be ignored within the SMILES string, only protons
that can be inferred from atom and bond valence are removed. all other
mandatory proton information is kept.
! NOTE ! This is the new default behaviour !
* tests : updated accordingly
120627 Martin Mann :
* ggl/chem/SMILESwriter :
* build_dfs(..) and canonize(..) interface includes graph property maps
* canonize(..) :
* computes ranks only for non-hydrogens
* initial invariant computation follows now Weiniger-1998-2
* code documentation extended
* getSMILES(..) :
+ new parameter "ignoreProtons" : triggers that protons are ignored
for SMILES generation. Should mimic the behavior of first removing all
protons before calling the function, but faster since the molecule
graph is not changed here. Nevertheless, different SMILES will result
from the two alternatives!
* ggl/chem/MoleculeUtil :
* removeProtons(..) : directly changes input molecule without copying
* fillProtons(..) : directly changes input molecule without copying
* compressHnodes(..) : directly changes input molecule without copying
* tests :
* use of XXXparser instead of XXX_grammar
+ ggl_chem_MR_Reaction test added to Makefile (was missing so far)
* ggl/chem/Reaction :
* operator < : order of order checks changed to hierarchical less on
(id, #metabolites, #products, metabolites, transState, products, rates)
120625 Martin Mann :
* sgm/Graph_Interface : performance tuning
* (Out_)Edge_iterator :
* access operators are now const members
- NO_FURTHER_EDGE : obsolete
* EdgeDescriptor :
- label : obsolete : access now virtual to enable direct reference
* operator != : now pure virtual : enforces overwrite within subclasses
* Graph_Interface subclasses :
* explicit implementation of getEdgeLabel()
* explicit implementation of operator != (Graph_Interface) that forwards
to subclass specific operator (so far these functions were not used!)
120619 Martin Mann :
* ggl/chem/AromaticityPerception :
* relabelMolecule(..) : special handling of remaining valence count when
relabeling aromatic nodes back to non-aromatice: in somce cases only
two double bonds are contributed, thus no aromaticity add required
* EdgeDataComp::() : ordering of edge data changed : first all sure
single bonds are pushed to the front; enables more complete non-aromatic
labeling
120617 Martin Mann :
* ggl/chem/GS_MolCheck :
* ignoreExceptions : decides whether or not exceptions thrown during the
molecule correction are silently ignored or forwarded to be catched
within the calling functions
* ggl/chem/AromaticityPerception :
* relabelMolecule(..) : BUGFIX : checks for exception raising were wrong
* relabelMolecule(..) : BUGFIX : remaining valence was without atom charge
120616 Martin Mann :
* ggl/chem/AP_NSPDK :
* reportRing(..) : rings with bond label valences > 2 are ignored
120615 Martin Mann :
* ggl/chem/AromaticityPerception :
* node relabeling restricted to atoms with different aromatic/non-aromatic
atom label
* ggl/chem/SMILES_grammar :
* BUGFIX : list of valid atom labels incomplete
* double charge (-- or ++) are now replaced with -2 and +2, resp.
120608 Martin Mann :
* sgm/VF2_MatchingHandler : memory and efficiency tuning
- label2string(..) : obsolete when using a map for the EdgeLabel2idx
mapping
120606 Martin Mann :
+ *_GMLparser : wrapper for *_GML_grammar to push the boost
parser includes etc. to the lib to reduce compilation times.
The same for SMILESparser/SMILES_grammar.
* use of *_GMLparser instead of *_GML_grammar
* thrown exception information extended and documented
* sgm/VF2_MatchingHandler : memory and efficiency tuning
* edge label handling now centralized too, ie. only one EdgeLabel instance
for equal edges (should reduce memory usage and needed (de)allocations)
+ label2string(..) : produces a string representation of an EdgeLabel,
needed to identify equal edges
120605 Martin Mann :
* perl/molcomp2svg.pl : produces a 2D SVG depiction of a molecule component
from GML format highlighting the specified compIDs
* misc/manual/turorial-groups.tex : tutorial for the definition and use
of molecular groups finished
* sgm/VF2_MatchingHandler : memory and efficiency tuning
* Label : now a simple integer; thus labels are indices instead of newly
allocated strings
* LabelComparator::compatible() : now virtual
+ labelComparator::compatibleLabel() : explicit label comparison based on
integer encoding
+ NodeData::NodeData() : empty default construction added
* NodeDataVec : now a storage of NodeData objects instead of pointers;
thus, entries are overwritten without reallocation in case several
pattern graphs are given
120601 Martin Mann :
* bin/molCheck :
+ parameter "pruneProtons" : if present, protons are removed from the
molecule before the output is produced
* BUGFIX : semantic implementation of "noProtonFilling" corrected
* misc/manual/turorial-rules.tex :
+ group support described
* GML examples corrected
* GML description and definitions now within included, separate files
+ misc/manual/gml-include.tex : contains the general GML descriptions
+ misc/manual/def-include.tex : contains the general definitions common
to all tutorials
+ misc/manual/turorial-groups.tex : tutorial for the definition and use
of molecular groups (not finished yet)
120531 Martin Mann :
* tests/testbin_molCheck :
* adaptions to changes in toyChem/purine.smi
+ check of group support
* bin/toyChemUtil :
* correctInputMolecules(..) : uses now the same pipeline via GS_MolCheck
as done for all molecules produced by rule applications; makes the whole
input conform to produced molecules
120530 Martin Mann :
* bin/toyChem :
- XTOF hack removed, not needed anymore
* GML example replaced with molecule
* rule example : constraints added
* ggl/Rule
+ MatchConstraintVec : typdef for a vector of matching constraints
+ getMatchConstraints() : access to the constraints of the left side
pattern (needed for external Rule copy operations)
* bin/molCheck :
+ new parameter "groups" to specify molecule components to be used
abbreviated within the rule and molecule specifications
* ggl/chem/MoleculeUtil :