moltric 0.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
moltric-0.0.2/PKG-INFO ADDED
@@ -0,0 +1,130 @@
1
+ Metadata-Version: 2.4
2
+ Name: moltric
3
+ Version: 0.0.2
4
+ Summary: Moltric Molecular Metric
5
+ Keywords: moleculardynamics,initialsampling
6
+ Classifier: Development Status :: 5 - Production/Stable
7
+ Classifier: Environment :: Console
8
+ Classifier: Intended Audience :: Science/Research
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python :: 3
11
+ Requires-Python: >=3.7
12
+ Description-Content-Type: text/markdown
13
+
14
+
15
+ For installation of Moltric, use pip: `pip install moltric`
16
+
17
+ For questions or suggestions for features to add, contact Kazuumi Fujioka: kazuumi@hawaii.edu
18
+
19
+
20
+
21
+ ## How do you best *overlap* two molecules? How do we order the atoms?
22
+
23
+ <p align="center">
24
+ <img width="900" height="400" src="images/permutation1.png">
25
+ </p>
26
+
27
+ ### Finding the best algorithm to do this is a Holy Grail
28
+ Many groups have searched for this, but improvements are constantly being made:
29
+
30
+
31
+ - ArbAlign, 2017: [[github](https://github.com/berhane/arbalign)] [[paper](https://doi.org/10.1021/acs.jcim.6b00546)]
32
+
33
+ - FASTOVERLAP, 2017: [[github](https://github.com/matthewghgriffiths/fastoverlap)] [[paper](https://doi.org/10.1021/acs.jctc.7b00543)]
34
+
35
+ - MolAlignLib, 2023: [[github](https://github.com/qcuaeh/molalignlib)] [[paper](https://doi.org/10.1021/acs.jcim.2c01187)]
36
+
37
+ - OTMol, 2025: [[github](https://github.com/weixiaoqimath/otmol)] [[paper](https://doi.org/10.1021/acs.jcim.5c02099)]
38
+
39
+
40
+ <p align="center">
41
+ <img width="900" height="400" src="images/rmsdtools1.png">
42
+ </p>
43
+
44
+ # Comparing Software
45
+
46
+
47
+ A few benchmarks will be compared over:
48
+ - C10H9 (Bimolecular Reaction of CH + C<sub>9</sub>H<sub>8</sub> and C<sub>2</sub>H<sub>4</sub> + C<sub>8</sub>H<sub>5</sub>)
49
+ - H3CS (Bimolecular Reaction of CH + H<sub>2</sub>S)
50
+ - H5CBr (Bimolecular Reaction of HBr<sup>+</sup> + CH<sub>4</sub>)
51
+ - Ne20 (20-atom Subsets of a Neon<sub>200</sub> Cluster) [[source](https://doi.org/10.1021/acs.jcim.5c02099)]
52
+ - Ne180 (180-atom Subsets of a Neon<sub>200</sub> Cluster) [[source](https://doi.org/10.1021/acs.jcim.5c02099)]
53
+ - FGG (FGG tripeptide C<sub>13</sub>H<sub>17</sub>N<sub>3</sub>O<sub>4</sub> Conformers) [[source](https://doi.org/10.1021/acs.jcim.5c02099)]
54
+ - BsMaWa (Bisulfate-Methylammonium-Water Cluster CH<sub>9</sub>NO<sub>5</sub>S Conformers) [[source](https://doi.org/10.1021/acs.jcim.5c02099)]
55
+
56
+
57
+
58
+
59
+ # Usage:
60
+
61
+ ## Comparing two sets of molecules:
62
+
63
+ From a terminal, prepare two xyz files of the two sets of molecules. Then call Moltric, like so:
64
+
65
+ ```
66
+ moltric/moltric.py examples/fromFujioka_CH.indene_19atoms.xyz examples/fromFujioka_CH.indene_19atoms.xyz
67
+ ```
68
+
69
+ this produces:
70
+
71
+ ```
72
+ # Number of points found in 'examples/fromFujioka_CH.indene_19atoms.xyz': 81
73
+ # Number of points found in 'examples/fromFujioka_CH.indene_19atoms.xyz': 81
74
+ # i j DMD
75
+ 0 0 0.0000
76
+ 0 1 2.1084
77
+ 0 2 3.9254
78
+ 0 3 3.9358
79
+ 0 4 1.7824
80
+ 0 5 2.6834
81
+ 0 6 5.1325
82
+ 0 7 3.6761
83
+ 0 8 6.9604
84
+ 0 9 2.2738
85
+ .
86
+ .
87
+ .
88
+ ```
89
+
90
+
91
+ ## Benchmarking different molecule alignments for RMSD:
92
+
93
+ Moltric and other methods can be compared with `compare_methods.py` from the terminal on an example xyz file:
94
+
95
+ ```
96
+ cat examples/fromFujioka_CH.indene_19atoms.xyz | moltric/compare_methods.py 0.00001 output.xyz
97
+ ```
98
+
99
+ this produces:
100
+
101
+ ```
102
+ .
103
+ .
104
+ .
105
+ DMDbound# i j ArbAlign OTMol MolAlign Umeyama FAQ GOATf GOAT minimum (Nf) (N)
106
+ Adding index 0 to the training set ... Sparsity 1.0000 = 1/1
107
+ 1.5928# 1 0 25.4432 31.6604 19.0167 13.8631 17.9570 21.2356 4.2362 4.2362 (21) (467)
108
+ Adding index 1 to the training set ... Sparsity 1.0000 = 2/2
109
+ 2.4458# 2 0 39.6316 29.3163 32.7360 11.1385 26.1334 21.7794 5.2278 5.2278 (26) (482)
110
+ 1.7212# 2 1 33.6609 12.9877 9.0464 3.5600 3.5600 3.5600 3.5600 3.5600 (18) (389)
111
+ Adding index 2 to the training set ... Sparsity 1.0000 = 3/3
112
+ 1.8722# 3 0 33.3322 21.9517 28.5810 9.6538 21.7277 21.1000 4.4000 4.4000 (20) (449)
113
+ 1.5957# 3 1 24.4360 17.1308 17.4071 3.6724 3.6724 3.6724 3.6724 3.6724 (16) (403)
114
+ 0.9671# 3 2 29.2970 22.7893 20.3330 2.0084 2.0084 2.0084 2.0084 2.0084 (18) (474)
115
+ Adding index 3 to the training set ... Sparsity 1.0000 = 4/4
116
+ 2.8128# 4 0 41.7131 22.6670 23.5538 11.3122 23.8455 22.5683 6.1147 6.1147 (21) (461)
117
+ 2.3773# 4 1 34.7580 31.9236 32.2770 4.3386 4.3386 4.3386 4.3386 4.3386 (17) (390)
118
+ 0.3376# 4 2 8.8606 6.1540 15.8762 0.7083 0.7083 0.7083 0.7083 0.7083 (18) (385)
119
+ 0.7713# 4 3 17.4316 4.9512 8.0874 1.3402 1.3402 1.3402 1.3402 1.3402 (17) (360)
120
+ Adding index 4 to the training set ... Sparsity 1.0000 = 5/5
121
+ 0.9072# 5 0 19.7347 18.7131 22.0875 2.7445 14.5171 14.5171 2.4299 2.4299 (18) (432)
122
+ 0.9114# 5 1 19.6808 3.3077 3.3077 12.6573 3.3077 3.3077 1.8983 1.8983 (16) (366)
123
+ 1.9796# 5 2 37.5165 9.5294 11.2601 14.6674 8.1114 6.3697 4.8420 4.8420 (18) (396)
124
+ 1.6283# 5 3 23.7955 15.7882 18.5697 9.7445 5.6637 5.6637 4.1777 4.1777 (17) (443)
125
+ 2.3768# 5 4 43.0193 24.0932 29.3850 19.2532 6.4887 6.4887 5.0040 5.0040 (17) (396)
126
+ .
127
+ .
128
+ .
129
+ ```
130
+
@@ -0,0 +1,117 @@
1
+
2
+ For installation of Moltric, use pip: `pip install moltric`
3
+
4
+ For questions or suggestions for features to add, contact Kazuumi Fujioka: kazuumi@hawaii.edu
5
+
6
+
7
+
8
+ ## How do you best *overlap* two molecules? How do we order the atoms?
9
+
10
+ <p align="center">
11
+ <img width="900" height="400" src="images/permutation1.png">
12
+ </p>
13
+
14
+ ### Finding the best algorithm to do this is a Holy Grail
15
+ Many groups have searched for this, but improvements are constantly being made:
16
+
17
+
18
+ - ArbAlign, 2017: [[github](https://github.com/berhane/arbalign)] [[paper](https://doi.org/10.1021/acs.jcim.6b00546)]
19
+
20
+ - FASTOVERLAP, 2017: [[github](https://github.com/matthewghgriffiths/fastoverlap)] [[paper](https://doi.org/10.1021/acs.jctc.7b00543)]
21
+
22
+ - MolAlignLib, 2023: [[github](https://github.com/qcuaeh/molalignlib)] [[paper](https://doi.org/10.1021/acs.jcim.2c01187)]
23
+
24
+ - OTMol, 2025: [[github](https://github.com/weixiaoqimath/otmol)] [[paper](https://doi.org/10.1021/acs.jcim.5c02099)]
25
+
26
+
27
+ <p align="center">
28
+ <img width="900" height="400" src="images/rmsdtools1.png">
29
+ </p>
30
+
31
+ # Comparing Software
32
+
33
+
34
+ A few benchmarks will be compared over:
35
+ - C10H9 (Bimolecular Reaction of CH + C<sub>9</sub>H<sub>8</sub> and C<sub>2</sub>H<sub>4</sub> + C<sub>8</sub>H<sub>5</sub>)
36
+ - H3CS (Bimolecular Reaction of CH + H<sub>2</sub>S)
37
+ - H5CBr (Bimolecular Reaction of HBr<sup>+</sup> + CH<sub>4</sub>)
38
+ - Ne20 (20-atom Subsets of a Neon<sub>200</sub> Cluster) [[source](https://doi.org/10.1021/acs.jcim.5c02099)]
39
+ - Ne180 (180-atom Subsets of a Neon<sub>200</sub> Cluster) [[source](https://doi.org/10.1021/acs.jcim.5c02099)]
40
+ - FGG (FGG tripeptide C<sub>13</sub>H<sub>17</sub>N<sub>3</sub>O<sub>4</sub> Conformers) [[source](https://doi.org/10.1021/acs.jcim.5c02099)]
41
+ - BsMaWa (Bisulfate-Methylammonium-Water Cluster CH<sub>9</sub>NO<sub>5</sub>S Conformers) [[source](https://doi.org/10.1021/acs.jcim.5c02099)]
42
+
43
+
44
+
45
+
46
+ # Usage:
47
+
48
+ ## Comparing two sets of molecules:
49
+
50
+ From a terminal, prepare two xyz files of the two sets of molecules. Then call Moltric, like so:
51
+
52
+ ```
53
+ moltric/moltric.py examples/fromFujioka_CH.indene_19atoms.xyz examples/fromFujioka_CH.indene_19atoms.xyz
54
+ ```
55
+
56
+ this produces:
57
+
58
+ ```
59
+ # Number of points found in 'examples/fromFujioka_CH.indene_19atoms.xyz': 81
60
+ # Number of points found in 'examples/fromFujioka_CH.indene_19atoms.xyz': 81
61
+ # i j DMD
62
+ 0 0 0.0000
63
+ 0 1 2.1084
64
+ 0 2 3.9254
65
+ 0 3 3.9358
66
+ 0 4 1.7824
67
+ 0 5 2.6834
68
+ 0 6 5.1325
69
+ 0 7 3.6761
70
+ 0 8 6.9604
71
+ 0 9 2.2738
72
+ .
73
+ .
74
+ .
75
+ ```
76
+
77
+
78
+ ## Benchmarking different molecule alignments for RMSD:
79
+
80
+ Moltric and other methods can be compared with `compare_methods.py` from the terminal on an example xyz file:
81
+
82
+ ```
83
+ cat examples/fromFujioka_CH.indene_19atoms.xyz | moltric/compare_methods.py 0.00001 output.xyz
84
+ ```
85
+
86
+ this produces:
87
+
88
+ ```
89
+ .
90
+ .
91
+ .
92
+ DMDbound# i j ArbAlign OTMol MolAlign Umeyama FAQ GOATf GOAT minimum (Nf) (N)
93
+ Adding index 0 to the training set ... Sparsity 1.0000 = 1/1
94
+ 1.5928# 1 0 25.4432 31.6604 19.0167 13.8631 17.9570 21.2356 4.2362 4.2362 (21) (467)
95
+ Adding index 1 to the training set ... Sparsity 1.0000 = 2/2
96
+ 2.4458# 2 0 39.6316 29.3163 32.7360 11.1385 26.1334 21.7794 5.2278 5.2278 (26) (482)
97
+ 1.7212# 2 1 33.6609 12.9877 9.0464 3.5600 3.5600 3.5600 3.5600 3.5600 (18) (389)
98
+ Adding index 2 to the training set ... Sparsity 1.0000 = 3/3
99
+ 1.8722# 3 0 33.3322 21.9517 28.5810 9.6538 21.7277 21.1000 4.4000 4.4000 (20) (449)
100
+ 1.5957# 3 1 24.4360 17.1308 17.4071 3.6724 3.6724 3.6724 3.6724 3.6724 (16) (403)
101
+ 0.9671# 3 2 29.2970 22.7893 20.3330 2.0084 2.0084 2.0084 2.0084 2.0084 (18) (474)
102
+ Adding index 3 to the training set ... Sparsity 1.0000 = 4/4
103
+ 2.8128# 4 0 41.7131 22.6670 23.5538 11.3122 23.8455 22.5683 6.1147 6.1147 (21) (461)
104
+ 2.3773# 4 1 34.7580 31.9236 32.2770 4.3386 4.3386 4.3386 4.3386 4.3386 (17) (390)
105
+ 0.3376# 4 2 8.8606 6.1540 15.8762 0.7083 0.7083 0.7083 0.7083 0.7083 (18) (385)
106
+ 0.7713# 4 3 17.4316 4.9512 8.0874 1.3402 1.3402 1.3402 1.3402 1.3402 (17) (360)
107
+ Adding index 4 to the training set ... Sparsity 1.0000 = 5/5
108
+ 0.9072# 5 0 19.7347 18.7131 22.0875 2.7445 14.5171 14.5171 2.4299 2.4299 (18) (432)
109
+ 0.9114# 5 1 19.6808 3.3077 3.3077 12.6573 3.3077 3.3077 1.8983 1.8983 (16) (366)
110
+ 1.9796# 5 2 37.5165 9.5294 11.2601 14.6674 8.1114 6.3697 4.8420 4.8420 (18) (396)
111
+ 1.6283# 5 3 23.7955 15.7882 18.5697 9.7445 5.6637 5.6637 4.1777 4.1777 (17) (443)
112
+ 2.3768# 5 4 43.0193 24.0932 29.3850 19.2532 6.4887 6.4887 5.0040 5.0040 (17) (396)
113
+ .
114
+ .
115
+ .
116
+ ```
117
+
@@ -0,0 +1,5 @@
1
+ from .moltric import *
2
+ from .arbalign import arbalign # Kazuumi's python3 translation for ArbAlign
3
+ from .otmol_alignment import otmol_alignment # Copy of OTMol for benchmarking
4
+
5
+ __version__ = "0.0.2"