rust-simulation-tools 0.2.2__tar.gz → 0.2.5__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.
Files changed (128) hide show
  1. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/Cargo.lock +233 -0
  2. rust_simulation_tools-0.2.5/Cargo.toml +8 -0
  3. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/PKG-INFO +172 -7
  4. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/README.md +170 -5
  5. rust_simulation_tools-0.2.5/crates/am1/Cargo.toml +7 -0
  6. rust_simulation_tools-0.2.5/crates/am1/src/charges.rs +30 -0
  7. rust_simulation_tools-0.2.5/crates/am1/src/fock.rs +223 -0
  8. rust_simulation_tools-0.2.5/crates/am1/src/hamiltonian.rs +128 -0
  9. rust_simulation_tools-0.2.5/crates/am1/src/lib.rs +77 -0
  10. rust_simulation_tools-0.2.5/crates/am1/src/molecule.rs +117 -0
  11. rust_simulation_tools-0.2.5/crates/am1/src/nuclear.rs +103 -0
  12. rust_simulation_tools-0.2.5/crates/am1/src/overlap.rs +780 -0
  13. rust_simulation_tools-0.2.5/crates/am1/src/params.rs +461 -0
  14. rust_simulation_tools-0.2.5/crates/am1/src/scf.rs +368 -0
  15. rust_simulation_tools-0.2.5/crates/am1/src/two_electron.rs +1336 -0
  16. rust_simulation_tools-0.2.5/crates/am1/tests/debug_benzene.rs +212 -0
  17. rust_simulation_tools-0.2.5/crates/am1/tests/validation_sqm.rs +499 -0
  18. rust_simulation_tools-0.2.5/crates/antechamber/Cargo.toml +9 -0
  19. rust_simulation_tools-0.2.5/crates/antechamber/data/ATOMTYPE_BCC.DEF +254 -0
  20. rust_simulation_tools-0.2.5/crates/antechamber/data/ATOMTYPE_GFF2.DEF +429 -0
  21. rust_simulation_tools-0.2.5/crates/antechamber/data/BCCPARM.DAT +405 -0
  22. rust_simulation_tools-0.2.5/crates/antechamber/data/GASPARM.DAT +40 -0
  23. rust_simulation_tools-0.2.5/crates/antechamber/data/RADIUS.DAT +140 -0
  24. rust_simulation_tools-0.2.5/crates/antechamber/src/aromatic.rs +220 -0
  25. rust_simulation_tools-0.2.5/crates/antechamber/src/atomtype.rs +738 -0
  26. rust_simulation_tools-0.2.5/crates/antechamber/src/bcc.rs +134 -0
  27. rust_simulation_tools-0.2.5/crates/antechamber/src/bondtype.rs +104 -0
  28. rust_simulation_tools-0.2.5/crates/antechamber/src/data.rs +19 -0
  29. rust_simulation_tools-0.2.5/crates/antechamber/src/equivalence.rs +100 -0
  30. rust_simulation_tools-0.2.5/crates/antechamber/src/gasteiger.rs +179 -0
  31. rust_simulation_tools-0.2.5/crates/antechamber/src/lib.rs +167 -0
  32. rust_simulation_tools-0.2.5/crates/antechamber/src/molecule.rs +273 -0
  33. rust_simulation_tools-0.2.5/crates/antechamber/tests/validation.rs +300 -0
  34. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/bindings/Cargo.toml +5 -0
  35. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/bindings/src/lib.rs +1002 -2
  36. rust_simulation_tools-0.2.5/crates/core/data/lib/amino19.lib +3570 -0
  37. rust_simulation_tools-0.2.5/crates/core/data/lib/aminoct12.lib +3344 -0
  38. rust_simulation_tools-0.2.5/crates/core/data/lib/aminont12.lib +3303 -0
  39. rust_simulation_tools-0.2.5/crates/core/data/lib/atomic_ions.lib +2480 -0
  40. rust_simulation_tools-0.2.5/crates/core/data/lib/lipid21.lib +4471 -0
  41. rust_simulation_tools-0.2.5/crates/core/data/lib/solvents.lib +156904 -0
  42. rust_simulation_tools-0.2.5/crates/core/data/parm/frcmod.ff19SB +2111 -0
  43. rust_simulation_tools-0.2.5/crates/core/data/parm/frcmod.ionslm_126_opc +125 -0
  44. rust_simulation_tools-0.2.5/crates/core/data/parm/frcmod.opc +25 -0
  45. rust_simulation_tools-0.2.5/crates/core/data/parm/gaff2.dat +13181 -0
  46. rust_simulation_tools-0.2.5/crates/core/data/parm/lipid21.dat +359 -0
  47. rust_simulation_tools-0.2.5/crates/core/data/parm/parm19.dat +1083 -0
  48. rust_simulation_tools-0.2.5/crates/core/src/amber/inpcrd_writer.rs +113 -0
  49. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/amber/mod.rs +2 -0
  50. rust_simulation_tools-0.2.5/crates/core/src/amber/prmtop_writer.rs +724 -0
  51. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/fingerprint.rs +1 -0
  52. rust_simulation_tools-0.2.5/crates/core/src/forcefield/atom_types.rs +86 -0
  53. rust_simulation_tools-0.2.5/crates/core/src/forcefield/data.rs +20 -0
  54. rust_simulation_tools-0.2.5/crates/core/src/forcefield/frcmod.rs +490 -0
  55. rust_simulation_tools-0.2.5/crates/core/src/forcefield/loader.rs +203 -0
  56. rust_simulation_tools-0.2.5/crates/core/src/forcefield/mod.rs +32 -0
  57. rust_simulation_tools-0.2.5/crates/core/src/forcefield/parameters.rs +370 -0
  58. rust_simulation_tools-0.2.5/crates/core/src/forcefield/parm_dat.rs +672 -0
  59. rust_simulation_tools-0.2.5/crates/core/src/forcefield/residue_lib.rs +645 -0
  60. rust_simulation_tools-0.2.5/crates/core/src/graph.rs +278 -0
  61. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/lib.rs +7 -0
  62. rust_simulation_tools-0.2.5/crates/core/src/mmcif.rs +1044 -0
  63. rust_simulation_tools-0.2.5/crates/core/src/mol2.rs +511 -0
  64. rust_simulation_tools-0.2.5/crates/core/src/pdb.rs +801 -0
  65. rust_simulation_tools-0.2.5/crates/core/src/pdb_writer.rs +415 -0
  66. rust_simulation_tools-0.2.5/crates/core/src/sdf.rs +526 -0
  67. rust_simulation_tools-0.2.5/crates/ipsae/Cargo.toml +7 -0
  68. rust_simulation_tools-0.2.5/crates/ipsae/src/lib.rs +58 -0
  69. rust_simulation_tools-0.2.5/crates/ipsae/src/parser.rs +268 -0
  70. rust_simulation_tools-0.2.5/crates/ipsae/src/scoring.rs +511 -0
  71. rust_simulation_tools-0.2.5/crates/ipsae/tests/integration.rs +203 -0
  72. rust_simulation_tools-0.2.5/crates/minimize/Cargo.toml +14 -0
  73. rust_simulation_tools-0.2.5/crates/minimize/src/bonded.rs +849 -0
  74. rust_simulation_tools-0.2.5/crates/minimize/src/config.rs +106 -0
  75. rust_simulation_tools-0.2.5/crates/minimize/src/force.rs +338 -0
  76. rust_simulation_tools-0.2.5/crates/minimize/src/io.rs +255 -0
  77. rust_simulation_tools-0.2.5/crates/minimize/src/lib.rs +17 -0
  78. rust_simulation_tools-0.2.5/crates/minimize/src/minimizer.rs +446 -0
  79. rust_simulation_tools-0.2.5/crates/minimize/src/neighbor_list.rs +425 -0
  80. rust_simulation_tools-0.2.5/crates/minimize/src/nonbonded.rs +876 -0
  81. rust_simulation_tools-0.2.5/crates/minimize/src/pbc.rs +190 -0
  82. rust_simulation_tools-0.2.5/crates/minimize/src/pme.rs +1589 -0
  83. rust_simulation_tools-0.2.5/crates/minimize/src/restraints.rs +347 -0
  84. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/benches/mmpbsa_bench.rs +1 -0
  85. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/examples/mmpbsa_binding.rs +1 -0
  86. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/binding.rs +116 -5
  87. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/decomposition.rs +1 -1
  88. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/gb_energy.rs +29 -13
  89. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/mdcrd.rs +16 -6
  90. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/mm_energy.rs +6 -4
  91. rust_simulation_tools-0.2.5/crates/mmpbsa/src/pb_energy.rs +571 -0
  92. rust_simulation_tools-0.2.5/crates/mmpbsa/src/pb_grid.rs +1065 -0
  93. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/pb_solver.rs +554 -200
  94. rust_simulation_tools-0.2.5/crates/tleap/Cargo.toml +11 -0
  95. rust_simulation_tools-0.2.5/crates/tleap/src/builder.rs +1206 -0
  96. rust_simulation_tools-0.2.5/crates/tleap/src/ions.rs +654 -0
  97. rust_simulation_tools-0.2.5/crates/tleap/src/lib.rs +19 -0
  98. rust_simulation_tools-0.2.5/crates/tleap/src/parameterize.rs +1143 -0
  99. rust_simulation_tools-0.2.5/crates/tleap/src/solvate.rs +432 -0
  100. rust_simulation_tools-0.2.5/crates/tleap/src/system.rs +461 -0
  101. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/pyproject.toml +2 -2
  102. rust_simulation_tools-0.2.2/Cargo.toml +0 -8
  103. rust_simulation_tools-0.2.2/crates/mmpbsa/src/pb_energy.rs +0 -333
  104. rust_simulation_tools-0.2.2/crates/mmpbsa/src/pb_grid.rs +0 -476
  105. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/Cargo.toml +0 -0
  106. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/benches/core_bench.rs +0 -0
  107. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/amber/inpcrd.rs +0 -0
  108. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/amber/prmtop.rs +0 -0
  109. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/kabsch.rs +0 -0
  110. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/sasa.rs +0 -0
  111. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/selection/ast.rs +0 -0
  112. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/selection/error.rs +0 -0
  113. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/selection/eval.rs +0 -0
  114. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/selection/keywords.rs +0 -0
  115. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/selection/mod.rs +0 -0
  116. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/selection/parser.rs +0 -0
  117. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/selection/selection.rs +0 -0
  118. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/selection/token.rs +0 -0
  119. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/trajectory/dcd.rs +0 -0
  120. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/trajectory/mod.rs +0 -0
  121. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/util.rs +0 -0
  122. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/core/src/wrapping.rs +0 -0
  123. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/Cargo.toml +0 -0
  124. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/examples/bench_pb_real.rs +0 -0
  125. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/entropy.rs +0 -0
  126. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/lib.rs +0 -0
  127. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/sa_energy.rs +0 -0
  128. {rust_simulation_tools-0.2.2 → rust_simulation_tools-0.2.5}/crates/mmpbsa/src/subsystem.rs +0 -0
@@ -38,6 +38,12 @@ version = "1.5.0"
38
38
  source = "registry+https://github.com/rust-lang/crates.io-index"
39
39
  checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
40
40
 
41
+ [[package]]
42
+ name = "bitflags"
43
+ version = "2.10.0"
44
+ source = "registry+https://github.com/rust-lang/crates.io-index"
45
+ checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
46
+
41
47
  [[package]]
42
48
  name = "bumpalo"
43
49
  version = "3.19.1"
@@ -187,6 +193,45 @@ version = "1.15.0"
187
193
  source = "registry+https://github.com/rust-lang/crates.io-index"
188
194
  checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
189
195
 
196
+ [[package]]
197
+ name = "errno"
198
+ version = "0.3.14"
199
+ source = "registry+https://github.com/rust-lang/crates.io-index"
200
+ checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
201
+ dependencies = [
202
+ "libc",
203
+ "windows-sys",
204
+ ]
205
+
206
+ [[package]]
207
+ name = "fastrand"
208
+ version = "2.3.0"
209
+ source = "registry+https://github.com/rust-lang/crates.io-index"
210
+ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
211
+
212
+ [[package]]
213
+ name = "getrandom"
214
+ version = "0.2.17"
215
+ source = "registry+https://github.com/rust-lang/crates.io-index"
216
+ checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
217
+ dependencies = [
218
+ "cfg-if",
219
+ "libc",
220
+ "wasi",
221
+ ]
222
+
223
+ [[package]]
224
+ name = "getrandom"
225
+ version = "0.3.4"
226
+ source = "registry+https://github.com/rust-lang/crates.io-index"
227
+ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
228
+ dependencies = [
229
+ "cfg-if",
230
+ "libc",
231
+ "r-efi",
232
+ "wasip2",
233
+ ]
234
+
190
235
  [[package]]
191
236
  name = "half"
192
237
  version = "2.7.1"
@@ -258,6 +303,12 @@ version = "0.2.176"
258
303
  source = "registry+https://github.com/rust-lang/crates.io-index"
259
304
  checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174"
260
305
 
306
+ [[package]]
307
+ name = "linux-raw-sys"
308
+ version = "0.11.0"
309
+ source = "registry+https://github.com/rust-lang/crates.io-index"
310
+ checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
311
+
261
312
  [[package]]
262
313
  name = "log"
263
314
  version = "0.4.29"
@@ -433,6 +484,24 @@ version = "1.11.1"
433
484
  source = "registry+https://github.com/rust-lang/crates.io-index"
434
485
  checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
435
486
 
487
+ [[package]]
488
+ name = "ppv-lite86"
489
+ version = "0.2.21"
490
+ source = "registry+https://github.com/rust-lang/crates.io-index"
491
+ checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
492
+ dependencies = [
493
+ "zerocopy",
494
+ ]
495
+
496
+ [[package]]
497
+ name = "primal-check"
498
+ version = "0.3.4"
499
+ source = "registry+https://github.com/rust-lang/crates.io-index"
500
+ checksum = "dc0d895b311e3af9902528fbb8f928688abbd95872819320517cc24ca6b2bd08"
501
+ dependencies = [
502
+ "num-integer",
503
+ ]
504
+
436
505
  [[package]]
437
506
  name = "proc-macro2"
438
507
  version = "1.0.101"
@@ -514,6 +583,42 @@ dependencies = [
514
583
  "proc-macro2",
515
584
  ]
516
585
 
586
+ [[package]]
587
+ name = "r-efi"
588
+ version = "5.3.0"
589
+ source = "registry+https://github.com/rust-lang/crates.io-index"
590
+ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
591
+
592
+ [[package]]
593
+ name = "rand"
594
+ version = "0.8.5"
595
+ source = "registry+https://github.com/rust-lang/crates.io-index"
596
+ checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
597
+ dependencies = [
598
+ "libc",
599
+ "rand_chacha",
600
+ "rand_core",
601
+ ]
602
+
603
+ [[package]]
604
+ name = "rand_chacha"
605
+ version = "0.3.1"
606
+ source = "registry+https://github.com/rust-lang/crates.io-index"
607
+ checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
608
+ dependencies = [
609
+ "ppv-lite86",
610
+ "rand_core",
611
+ ]
612
+
613
+ [[package]]
614
+ name = "rand_core"
615
+ version = "0.6.4"
616
+ source = "registry+https://github.com/rust-lang/crates.io-index"
617
+ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
618
+ dependencies = [
619
+ "getrandom 0.2.17",
620
+ ]
621
+
517
622
  [[package]]
518
623
  name = "rawpointer"
519
624
  version = "0.2.1"
@@ -569,6 +674,22 @@ version = "0.8.8"
569
674
  source = "registry+https://github.com/rust-lang/crates.io-index"
570
675
  checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
571
676
 
677
+ [[package]]
678
+ name = "rst-am1"
679
+ version = "0.1.0"
680
+ dependencies = [
681
+ "nalgebra",
682
+ ]
683
+
684
+ [[package]]
685
+ name = "rst-antechamber"
686
+ version = "0.1.0"
687
+ dependencies = [
688
+ "log",
689
+ "rst-am1",
690
+ "rst-core",
691
+ ]
692
+
572
693
  [[package]]
573
694
  name = "rst-bindings"
574
695
  version = "0.2.1"
@@ -577,8 +698,13 @@ dependencies = [
577
698
  "numpy",
578
699
  "pyo3",
579
700
  "rayon",
701
+ "rst-am1",
702
+ "rst-antechamber",
580
703
  "rst-core",
704
+ "rst-ipsae",
705
+ "rst-minimize",
581
706
  "rst-mmpbsa",
707
+ "rst-tleap",
582
708
  "rustc-hash 2.1.1",
583
709
  ]
584
710
 
@@ -592,6 +718,25 @@ dependencies = [
592
718
  "rayon",
593
719
  ]
594
720
 
721
+ [[package]]
722
+ name = "rst-ipsae"
723
+ version = "0.1.0"
724
+ dependencies = [
725
+ "rayon",
726
+ ]
727
+
728
+ [[package]]
729
+ name = "rst-minimize"
730
+ version = "0.1.0"
731
+ dependencies = [
732
+ "log",
733
+ "rayon",
734
+ "rst-core",
735
+ "rustfft",
736
+ "tempfile",
737
+ "thiserror",
738
+ ]
739
+
595
740
  [[package]]
596
741
  name = "rst-mmpbsa"
597
742
  version = "0.1.0"
@@ -603,6 +748,17 @@ dependencies = [
603
748
  "thiserror",
604
749
  ]
605
750
 
751
+ [[package]]
752
+ name = "rst-tleap"
753
+ version = "0.1.0"
754
+ dependencies = [
755
+ "log",
756
+ "rand",
757
+ "rst-antechamber",
758
+ "rst-core",
759
+ "thiserror",
760
+ ]
761
+
606
762
  [[package]]
607
763
  name = "rustc-hash"
608
764
  version = "1.1.0"
@@ -615,6 +771,33 @@ version = "2.1.1"
615
771
  source = "registry+https://github.com/rust-lang/crates.io-index"
616
772
  checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
617
773
 
774
+ [[package]]
775
+ name = "rustfft"
776
+ version = "6.4.1"
777
+ source = "registry+https://github.com/rust-lang/crates.io-index"
778
+ checksum = "21db5f9893e91f41798c88680037dba611ca6674703c1a18601b01a72c8adb89"
779
+ dependencies = [
780
+ "num-complex",
781
+ "num-integer",
782
+ "num-traits",
783
+ "primal-check",
784
+ "strength_reduce",
785
+ "transpose",
786
+ ]
787
+
788
+ [[package]]
789
+ name = "rustix"
790
+ version = "1.1.2"
791
+ source = "registry+https://github.com/rust-lang/crates.io-index"
792
+ checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
793
+ dependencies = [
794
+ "bitflags",
795
+ "errno",
796
+ "libc",
797
+ "linux-raw-sys",
798
+ "windows-sys",
799
+ ]
800
+
618
801
  [[package]]
619
802
  name = "rustversion"
620
803
  version = "1.0.22"
@@ -695,6 +878,12 @@ dependencies = [
695
878
  "wide",
696
879
  ]
697
880
 
881
+ [[package]]
882
+ name = "strength_reduce"
883
+ version = "0.2.4"
884
+ source = "registry+https://github.com/rust-lang/crates.io-index"
885
+ checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82"
886
+
698
887
  [[package]]
699
888
  name = "syn"
700
889
  version = "2.0.106"
@@ -712,6 +901,19 @@ version = "0.12.16"
712
901
  source = "registry+https://github.com/rust-lang/crates.io-index"
713
902
  checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
714
903
 
904
+ [[package]]
905
+ name = "tempfile"
906
+ version = "3.23.0"
907
+ source = "registry+https://github.com/rust-lang/crates.io-index"
908
+ checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
909
+ dependencies = [
910
+ "fastrand",
911
+ "getrandom 0.3.4",
912
+ "once_cell",
913
+ "rustix",
914
+ "windows-sys",
915
+ ]
916
+
715
917
  [[package]]
716
918
  name = "thiserror"
717
919
  version = "2.0.18"
@@ -742,6 +944,16 @@ dependencies = [
742
944
  "serde_json",
743
945
  ]
744
946
 
947
+ [[package]]
948
+ name = "transpose"
949
+ version = "0.2.3"
950
+ source = "registry+https://github.com/rust-lang/crates.io-index"
951
+ checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e"
952
+ dependencies = [
953
+ "num-integer",
954
+ "strength_reduce",
955
+ ]
956
+
745
957
  [[package]]
746
958
  name = "typenum"
747
959
  version = "1.18.0"
@@ -770,6 +982,21 @@ dependencies = [
770
982
  "winapi-util",
771
983
  ]
772
984
 
985
+ [[package]]
986
+ name = "wasi"
987
+ version = "0.11.1+wasi-snapshot-preview1"
988
+ source = "registry+https://github.com/rust-lang/crates.io-index"
989
+ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
990
+
991
+ [[package]]
992
+ name = "wasip2"
993
+ version = "1.0.2+wasi-0.2.9"
994
+ source = "registry+https://github.com/rust-lang/crates.io-index"
995
+ checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
996
+ dependencies = [
997
+ "wit-bindgen",
998
+ ]
999
+
773
1000
  [[package]]
774
1001
  name = "wasm-bindgen"
775
1002
  version = "0.2.108"
@@ -859,6 +1086,12 @@ dependencies = [
859
1086
  "windows-link",
860
1087
  ]
861
1088
 
1089
+ [[package]]
1090
+ name = "wit-bindgen"
1091
+ version = "0.51.0"
1092
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1093
+ checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
1094
+
862
1095
  [[package]]
863
1096
  name = "zerocopy"
864
1097
  version = "0.8.36"
@@ -0,0 +1,8 @@
1
+ [workspace]
2
+ members = ["crates/core", "crates/bindings", "crates/mmpbsa", "crates/ipsae", "crates/tleap", "crates/minimize", "crates/am1", "crates/antechamber"]
3
+ resolver = "2"
4
+
5
+ [profile.release]
6
+ opt-level = 3
7
+ lto = true
8
+ codegen-units = 1
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rust_simulation_tools
3
- Version: 0.2.2
3
+ Version: 0.2.5
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
- Requires-Dist: numpy>=1.26
6
+ Requires-Dist: numpy>=2.0
7
7
  Summary: Fast algorithms for MD trajectories
8
8
  Author-email: Matt Sinclair <msinclair@anl.gov>
9
9
  Requires-Python: >=3.10
@@ -37,11 +37,15 @@ maturin develop --release
37
37
 
38
38
  ## Features
39
39
 
40
- - **File I/O**: AMBER topology/coordinates, DCD and MDCRD trajectories
40
+ - **File I/O**: AMBER topology/coordinates, DCD and MDCRD trajectories; PDB, mmCIF, mol2, SDF structures
41
+ - **System building**: tleap-style `SystemBuilder` — force fields, solvation, ions, prmtop/inpcrd output
42
+ - **Ligand parameterization**: built-in antechamber — GAFF2 atom typing + AM1-BCC charges (no AmberTools needed)
41
43
  - **Selections**: VMD-style atom selection with property access
42
44
  - **Analysis**: SASA, trajectory unwrapping, Kabsch alignment
43
45
  - **Fingerprints**: Per-residue interaction energies (LJ + electrostatic)
46
+ - **Minimization**: Steepest-descent + conjugate-gradient with optional restraints
44
47
  - **MM-PBSA/GBSA**: Binding free energy with per-residue decomposition
48
+ - **Interface scoring**: ipSAE, pDockQ, pDockQ2, LIS, ipTM for predicted complexes
45
49
 
46
50
  ## Quick Start
47
51
 
@@ -59,6 +63,58 @@ dcd = DcdReader("trajectory.dcd")
59
63
  trajectory, boxes = dcd.read_all()
60
64
  ```
61
65
 
66
+ ### Build a System
67
+
68
+ The `SystemBuilder` parameterizes structures and writes simulation-ready AMBER
69
+ files — no AmberTools install required.
70
+
71
+ ```python
72
+ from rust_simulation_tools import SystemBuilder
73
+
74
+ builder = SystemBuilder()
75
+ builder.load_protein_ff19sb() # protein force field
76
+ builder.load_gaff2() # small-molecule force field
77
+ builder.load_water_opc() # OPC water model
78
+
79
+ # Load structures (PDB / mmCIF for proteins, mol2/SDF for ligands)
80
+ protein = builder.load_pdb("protein.pdb")
81
+ ligand = builder.load_ligand("ligand.sdf", net_charge=0) # auto GAFF2 + AM1-BCC
82
+
83
+ # Combine, solvate, ionize
84
+ system = builder.combine([protein, ligand])
85
+ builder.solvate_box(system, buffer=12.0)
86
+ builder.add_salt(system, "Na+", "Cl-", concentration=0.150) # neutralize + 150 mM
87
+
88
+ # Write output
89
+ builder.write_amber(system, "complex.prmtop", "complex.inpcrd")
90
+ builder.write_pdb(system, "complex.pdb")
91
+ ```
92
+
93
+ For implicit solvent, skip `load_water_opc`/solvation and write the topology
94
+ directly. See `examples/example_explicit_solvent.py`,
95
+ `example_implicit_solvent.py`, and `example_protein_ligand.py`.
96
+
97
+ ### Parameterize a Ligand
98
+
99
+ ```python
100
+ import rust_simulation_tools as rst
101
+
102
+ # Standalone: write a parameterized mol2 (GAFF2 types + charges)
103
+ rst.parameterize_ligand(
104
+ "ligand.sdf", "ligand_gaff2.mol2",
105
+ net_charge=0,
106
+ charge_method="am1bcc", # or "gasteiger" (faster, less accurate)
107
+ )
108
+
109
+ # Raw AM1 Mulliken charges from atomic numbers + coordinates
110
+ import numpy as np
111
+ charges = rst.compute_am1_charges(
112
+ np.array([8, 1, 1], dtype=np.int64), # O, H, H
113
+ np.array([[0, 0, 0], [0, 0.757, 0.587], [0, -0.757, 0.587]], dtype=float),
114
+ charge=0,
115
+ )
116
+ ```
117
+
62
118
  ### Atom Selection
63
119
 
64
120
  Select atoms using VMD-style expressions. The `select()` method returns a `Selection` object with direct property access.
@@ -97,9 +153,12 @@ from rust_simulation_tools import compute_sasa_from_topology
97
153
 
98
154
  # Single frame
99
155
  sasa = compute_sasa_from_topology(topo, coords)
100
- print(f"Total SASA: {sasa['total']:.1f} A^2")
101
- print(f"Per-atom: {sasa['per_atom'].shape}")
102
- print(f"Per-residue: {sasa['per_residue']}") # dict of residue_idx -> area
156
+ print(f"Total SASA: {sasa['total']:.1f} A^2") # float
157
+ print(f"Per-atom: {sasa['per_atom'].shape}") # ndarray (n_atoms,)
158
+ print(f"Per-residue: {sasa['per_residue'].shape}") # ndarray (n_residues,), by residue index
159
+
160
+ # Trajectory: total -> ndarray (n_frames,), per_residue -> list of per-frame dicts
161
+ traj_sasa = compute_sasa_trajectory_from_topology(topo, trajectory)
103
162
  ```
104
163
 
105
164
  ### Trajectory Alignment
@@ -187,6 +246,53 @@ for res in sorted(decomp.receptor_residues, key=lambda r: r.total())[:5]:
187
246
  print(f"{res.residue_label}{res.residue_index}: {res.total():.2f} kcal/mol")
188
247
  ```
189
248
 
249
+ ### Energy Minimization
250
+
251
+ Steepest-descent + conjugate-gradient minimization with optional positional
252
+ restraints and a full energy-component breakdown.
253
+
254
+ ```python
255
+ from rust_simulation_tools import minimize, MinimizeConfig
256
+
257
+ config = MinimizeConfig(
258
+ max_cycles=5000,
259
+ sd_cycles=100, # initial steepest-descent steps
260
+ convergence_rms=0.01,
261
+ cutoff=10.0,
262
+ restraint_mask="backbone", # optional; omit for unrestrained
263
+ restraint_weight=10.0,
264
+ )
265
+
266
+ result = minimize("system.prmtop", "system.inpcrd", config=config, output="min.inpcrd")
267
+ print(f"Energy: {result.final_energy:.2f} kcal/mol converged={result.converged}")
268
+
269
+ ec = result.energy_components # bond, angle, dihedral, vdw,
270
+ print(ec.total(), ec.vdw, ec.elec_recip) # elec_direct, elec_recip, vdw_14, elec_14
271
+ ```
272
+
273
+ Use `minimize_topology(topo, "system.inpcrd", ...)` to reuse a pre-loaded
274
+ topology. See `examples/example_minimization.py`.
275
+
276
+ ### Interface Scoring (ipSAE)
277
+
278
+ Score predicted complexes (AlphaFold-Multimer, Boltz, Chai) from pLDDT and PAE.
279
+
280
+ ```python
281
+ import numpy as np
282
+ from rust_simulation_tools import compute_ipsae
283
+
284
+ plddt = np.load("plddt.npy") # per-residue, 0-100 scale, shape (N,)
285
+ pae = np.load("pae.npy").flatten() # predicted aligned error, flattened (N*N,)
286
+
287
+ results = compute_ipsae("model.pdb", plddt, pae) # PDB or CIF
288
+ for pair in results["max_pairs"]: # also "directed_pairs"
289
+ print(f"{pair['chain1']}-{pair['chain2']}: "
290
+ f"ipSAE={pair['ipSAE']:.3f} pDockQ={pair['pDockQ']:.3f} LIS={pair['LIS']:.3f}")
291
+ ```
292
+
293
+ `compute_ipsae_from_arrays(coords, chains, chain_types, plddt, pae)` does the same
294
+ from in-memory arrays. See `examples/example_ipsae.py`.
295
+
190
296
  ## API Reference
191
297
 
192
298
  ### File I/O
@@ -198,6 +304,31 @@ for res in sorted(decomp.receptor_residues, key=lambda r: r.total())[:5]:
198
304
  | `DcdReader(path)` | DCD trajectory reader |
199
305
  | `MdcrdReader(path, n_atoms, has_box)` | AMBER ASCII trajectory reader |
200
306
 
307
+ ### System Building
308
+
309
+ | Method | Description |
310
+ |--------|-------------|
311
+ | `SystemBuilder()` | Create a tleap-style builder |
312
+ | `.load_protein_ff19sb()`, `.load_gaff2()`, `.load_water_opc()` | Load force fields / water model |
313
+ | `.load_custom_frcmod(path)`, `.load_custom_lib(path)` | Load custom ligand parameters |
314
+ | `.load_pdb(path)`, `.load_mmcif(path)`, `.load_mol2(path)` | Load a structure, returns `System` |
315
+ | `.load_ligand(path, net_charge=0)` | Load + parameterize a ligand (GAFF2 + AM1-BCC) |
316
+ | `.combine([systems])` | Merge systems into one `System` |
317
+ | `.solvate_box(system, buffer=12.0, closeness=1.0)` | Solvate in an OPC water box |
318
+ | `.add_ions(system, ion, count=None)` | Add ions (`"neutralize"`, int count, or float conc.) |
319
+ | `.add_salt(system, cation="Na+", anion="Cl-", concentration=0.150)` | Neutralize + add salt |
320
+ | `.write_amber(system, prmtop, inpcrd)`, `.write_prmtop/.write_inpcrd/.write_pdb` | Write output |
321
+
322
+ `System` exposes `.n_atoms`, `.n_residues`, `.total_charge`, `.box_dimensions`,
323
+ `.box_angles`.
324
+
325
+ ### Parameterization
326
+
327
+ | Function | Description |
328
+ |----------|-------------|
329
+ | `parameterize_ligand(input, output, net_charge=0, charge_method="am1bcc")` | Write a GAFF2/charge-assigned mol2 (`"am1bcc"` or `"gasteiger"`) |
330
+ | `compute_am1_charges(atomic_numbers, coords, charge=0)` | Raw AM1 Mulliken charges |
331
+
201
332
  ### AmberTopology
202
333
 
203
334
  | Property/Method | Description |
@@ -234,10 +365,24 @@ for res in sorted(decomp.receptor_residues, key=lambda r: r.total())[:5]:
234
365
  | Function | Description |
235
366
  |----------|-------------|
236
367
  | `compute_sasa_from_topology(topo, coords)` | SASA using topology for radii |
368
+ | `compute_sasa_trajectory_from_topology(topo, trajectory)` | Per-frame SASA over a trajectory |
237
369
  | `calculate_sasa(coords, radii, residue_indices)` | SASA with explicit radii |
238
370
  | `kabsch_align(trajectory, reference, align_indices)` | RMSD-minimizing alignment |
239
371
  | `unwrap_dcd(path)` | Remove PBC artifacts from DCD |
240
372
  | `unwrap_system(trajectory, boxes)` | Remove PBC artifacts |
373
+ | `FingerprintSession(prmtop, trajectory)` | Per-residue LJ/electrostatic fingerprints |
374
+
375
+ ### Minimization
376
+
377
+ | Function | Description |
378
+ |----------|-------------|
379
+ | `minimize(prmtop, inpcrd, config=None, output=None)` | Minimize from files, returns `MinimizeResult` |
380
+ | `minimize_topology(topo, inpcrd, config=None, output=None)` | Minimize with a pre-loaded topology |
381
+ | `MinimizeConfig(max_cycles, sd_cycles, convergence_rms, cutoff, restraint_mask, restraint_weight, initial_step_size)` | Minimization settings |
382
+
383
+ `MinimizeResult` exposes `.final_energy`, `.final_rms`, `.cycles`, `.converged`,
384
+ `.energy_components` (`.bond`, `.angle`, `.dihedral`, `.vdw`, `.elec_direct`,
385
+ `.elec_recip`, `.vdw_14`, `.elec_14`, `.total()`).
241
386
 
242
387
  ### MM-PBSA/GBSA
243
388
 
@@ -249,7 +394,27 @@ for res in sorted(decomp.receptor_residues, key=lambda r: r.total())[:5]:
249
394
  | `compute_mm_energy(topo, coords)` | Molecular mechanics energy |
250
395
  | `compute_gb_energy(topo, coords, params)` | GB solvation energy |
251
396
  | `compute_pb_energy(topo, coords, params)` | PB solvation energy |
252
- | `interaction_entropy(frames, temperature)` | Entropy correction |
397
+ | `compute_sa_energy(topo, coords, params)` | Nonpolar surface-area energy |
398
+ | `interaction_entropy(frames, temperature)` | Interaction-entropy correction |
399
+ | `quasi_harmonic_entropy(...)` | Quasi-harmonic entropy estimate |
400
+
401
+ Parameter objects: `GbParams`, `PbParams`, `SaParams`, `GbModel`.
402
+
403
+ ### Interface Scoring
404
+
405
+ | Function | Description |
406
+ |----------|-------------|
407
+ | `compute_ipsae(structure_path, plddt, pae, pdockq_cutoff=8.0, pae_cutoff=12.0)` | ipSAE/pDockQ/LIS/ipTM from a PDB/CIF file |
408
+ | `compute_ipsae_from_arrays(coords, chains, chain_types, plddt, pae, ...)` | Same, from in-memory arrays |
409
+
410
+ ## Agent Skills
411
+
412
+ The [`skills/`](skills) directory contains [agent skills](skills/README.md) that
413
+ teach AI coding assistants (e.g. Claude Code) how to use this package — system
414
+ building, ligand parameterization, trajectory analysis, MM-PBSA, minimization,
415
+ and ipSAE scoring. They are mirrored under `.claude/skills/` so they load
416
+ automatically when working in this repo. See [`skills/README.md`](skills/README.md)
417
+ for the full list and how to install them elsewhere.
253
418
 
254
419
  ## Development
255
420