firecode 1.1.2__tar.gz → 1.1.3__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 (77) hide show
  1. {firecode-1.1.2 → firecode-1.1.3}/CHANGELOG.md +4 -0
  2. {firecode-1.1.2/firecode.egg-info → firecode-1.1.3}/PKG-INFO +5 -1
  3. {firecode-1.1.2 → firecode-1.1.3}/firecode/__main__.py +1 -1
  4. {firecode-1.1.2 → firecode-1.1.3}/firecode/embedder_options.py +2 -0
  5. {firecode-1.1.2 → firecode-1.1.3}/firecode/graph_manipulations.py +2 -2
  6. {firecode-1.1.2 → firecode-1.1.3}/firecode/operators.py +15 -2
  7. {firecode-1.1.2 → firecode-1.1.3}/firecode/utils.py +5 -5
  8. {firecode-1.1.2 → firecode-1.1.3/firecode.egg-info}/PKG-INFO +5 -1
  9. {firecode-1.1.2 → firecode-1.1.3}/setup.py +1 -1
  10. {firecode-1.1.2 → firecode-1.1.3}/LICENSE +0 -0
  11. {firecode-1.1.2 → firecode-1.1.3}/MANIFEST.in +0 -0
  12. {firecode-1.1.2 → firecode-1.1.3}/README.md +0 -0
  13. {firecode-1.1.2 → firecode-1.1.3}/docs/conf.py +0 -0
  14. {firecode-1.1.2 → firecode-1.1.3}/docs/examples.rst +0 -0
  15. {firecode-1.1.2 → firecode-1.1.3}/docs/index.rst +0 -0
  16. {firecode-1.1.2 → firecode-1.1.3}/docs/installation.rst +0 -0
  17. {firecode-1.1.2 → firecode-1.1.3}/docs/introduction.rst +0 -0
  18. {firecode-1.1.2 → firecode-1.1.3}/docs/license.rst +0 -0
  19. {firecode-1.1.2 → firecode-1.1.3}/docs/operators_keywords.rst +0 -0
  20. {firecode-1.1.2 → firecode-1.1.3}/docs/requirements.txt +0 -0
  21. {firecode-1.1.2 → firecode-1.1.3}/docs/usage.rst +0 -0
  22. {firecode-1.1.2 → firecode-1.1.3}/firecode/TEST_NOTEBOOK.ipynb +0 -0
  23. {firecode-1.1.2 → firecode-1.1.3}/firecode/__init__.py +0 -0
  24. {firecode-1.1.2 → firecode-1.1.3}/firecode/_gaussian.py +0 -0
  25. {firecode-1.1.2 → firecode-1.1.3}/firecode/algebra.py +0 -0
  26. {firecode-1.1.2 → firecode-1.1.3}/firecode/ase_manipulations.py +0 -0
  27. {firecode-1.1.2 → firecode-1.1.3}/firecode/atropisomer_module.py +0 -0
  28. {firecode-1.1.2 → firecode-1.1.3}/firecode/automep.py +0 -0
  29. {firecode-1.1.2 → firecode-1.1.3}/firecode/calculators/__init__.py +0 -0
  30. {firecode-1.1.2 → firecode-1.1.3}/firecode/calculators/_gaussian.py +0 -0
  31. {firecode-1.1.2 → firecode-1.1.3}/firecode/calculators/_mopac.py +0 -0
  32. {firecode-1.1.2 → firecode-1.1.3}/firecode/calculators/_openbabel.py +0 -0
  33. {firecode-1.1.2 → firecode-1.1.3}/firecode/calculators/_orca.py +0 -0
  34. {firecode-1.1.2 → firecode-1.1.3}/firecode/calculators/_xtb.py +0 -0
  35. {firecode-1.1.2 → firecode-1.1.3}/firecode/concurrent_test.py +0 -0
  36. {firecode-1.1.2 → firecode-1.1.3}/firecode/eig_based_RMSD_test.ipynb +0 -0
  37. {firecode-1.1.2 → firecode-1.1.3}/firecode/embedder.py +0 -0
  38. {firecode-1.1.2 → firecode-1.1.3}/firecode/embeds.py +0 -0
  39. {firecode-1.1.2 → firecode-1.1.3}/firecode/errors.py +0 -0
  40. {firecode-1.1.2 → firecode-1.1.3}/firecode/hypermolecule_class.py +0 -0
  41. {firecode-1.1.2 → firecode-1.1.3}/firecode/mep_relaxer.py +0 -0
  42. {firecode-1.1.2 → firecode-1.1.3}/firecode/modify_settings.py +0 -0
  43. {firecode-1.1.2 → firecode-1.1.3}/firecode/mprof.py +0 -0
  44. {firecode-1.1.2 → firecode-1.1.3}/firecode/multiembed.py +0 -0
  45. {firecode-1.1.2 → firecode-1.1.3}/firecode/nci.py +0 -0
  46. {firecode-1.1.2 → firecode-1.1.3}/firecode/numba_functions.py +0 -0
  47. {firecode-1.1.2 → firecode-1.1.3}/firecode/optimization_methods.py +0 -0
  48. {firecode-1.1.2 → firecode-1.1.3}/firecode/parameters.py +0 -0
  49. {firecode-1.1.2 → firecode-1.1.3}/firecode/pka.py +0 -0
  50. {firecode-1.1.2 → firecode-1.1.3}/firecode/profiler.py +0 -0
  51. {firecode-1.1.2 → firecode-1.1.3}/firecode/pruning.py +0 -0
  52. {firecode-1.1.2 → firecode-1.1.3}/firecode/pt.py +0 -0
  53. {firecode-1.1.2 → firecode-1.1.3}/firecode/quotes.json +0 -0
  54. {firecode-1.1.2 → firecode-1.1.3}/firecode/quotes.py +0 -0
  55. {firecode-1.1.2 → firecode-1.1.3}/firecode/reactive_atoms_classes.py +0 -0
  56. {firecode-1.1.2 → firecode-1.1.3}/firecode/references.py +0 -0
  57. {firecode-1.1.2 → firecode-1.1.3}/firecode/rmsd.py +0 -0
  58. {firecode-1.1.2 → firecode-1.1.3}/firecode/settings.py +0 -0
  59. {firecode-1.1.2 → firecode-1.1.3}/firecode/solvents.py +0 -0
  60. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/C2F2H4.xyz +0 -0
  61. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/C2H4.xyz +0 -0
  62. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/CH3Cl.xyz +0 -0
  63. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/HCOOH.xyz +0 -0
  64. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/HCOOOH.xyz +0 -0
  65. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/chelotropic.txt +0 -0
  66. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/cyclical.txt +0 -0
  67. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/dihedral.txt +0 -0
  68. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/string.txt +0 -0
  69. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests/trimolecular.txt +0 -0
  70. {firecode-1.1.2 → firecode-1.1.3}/firecode/tests.py +0 -0
  71. {firecode-1.1.2 → firecode-1.1.3}/firecode/torsion_module.py +0 -0
  72. {firecode-1.1.2 → firecode-1.1.3}/firecode.egg-info/SOURCES.txt +0 -0
  73. {firecode-1.1.2 → firecode-1.1.3}/firecode.egg-info/dependency_links.txt +0 -0
  74. {firecode-1.1.2 → firecode-1.1.3}/firecode.egg-info/requires.txt +0 -0
  75. {firecode-1.1.2 → firecode-1.1.3}/firecode.egg-info/top_level.txt +0 -0
  76. {firecode-1.1.2 → firecode-1.1.3}/pyproject.toml +0 -0
  77. {firecode-1.1.2 → firecode-1.1.3}/setup.cfg +0 -0
@@ -4,6 +4,10 @@
4
4
  <!-- - ... mep_relax> BETA
5
5
  - ... IMAGES kw, also implement it for neb>-->
6
6
 
7
+ ## FIRECODE 1.1.3 🔥 (June 3 2025)
8
+ - The CREST MTD operator checks that CREST 2 is installed before trying to run a search. For now, only CREST 2 is supported, as CREST 3 needs some updated interface
9
+ - Solved CRETSLEVEL bug.
10
+
7
11
  ## FIRECODE 1.1.2 🔥 (April 29 2025)
8
12
  - Added CRESTLEVEL keyword to specify CREST theory level (i.e. "CRESTLEVEL=GFN2").
9
13
  - Updated aimnet2 bindings to only useunderscore in the module name calls and not hyphens.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: firecode
3
- Version: 1.1.2
3
+ Version: 1.1.3
4
4
  Summary: Computational chemistry general purpose ensemble optimizer and transition state builder
5
5
  Home-page: https://www.github.com/ntampellini/firecode
6
6
  Author: Nicolò Tampellini
@@ -41,6 +41,10 @@ Ensemble optimizer. Systematic generation of multimolecular arrangements for mon
41
41
  <!-- - ... mep_relax> BETA
42
42
  - ... IMAGES kw, also implement it for neb>-->
43
43
 
44
+ ## FIRECODE 1.1.3 🔥 (June 3 2025)
45
+ - The CREST MTD operator checks that CREST 2 is installed before trying to run a search. For now, only CREST 2 is supported, as CREST 3 needs some updated interface
46
+ - Solved CRETSLEVEL bug.
47
+
44
48
  ## FIRECODE 1.1.2 🔥 (April 29 2025)
45
49
  - Added CRESTLEVEL keyword to specify CREST theory level (i.e. "CRESTLEVEL=GFN2").
46
50
  - Updated aimnet2 bindings to only useunderscore in the module name calls and not hyphens.
@@ -25,7 +25,7 @@ import sys
25
25
  from rich.traceback import install
26
26
  install(show_locals=True)
27
27
 
28
- __version__ = '1.1.2'
28
+ __version__ = '1.1.3'
29
29
 
30
30
  if __name__ == '__main__':
31
31
 
@@ -48,6 +48,8 @@ keywords_dict = {
48
48
 
49
49
  'CRESTNCI' : 1, # passes the "--nci" flag to CREST metadynamic conformational searches.
50
50
 
51
+ 'CRESTLEVEL' : 1, # level of the CREST run
52
+
51
53
  'DEEP' : 1, # Performs a deeper search, retaining more starting points
52
54
  # for calculations and smaller turning angles.
53
55
 
@@ -32,8 +32,8 @@ from firecode.algebra import all_dists, dihedral, norm_of
32
32
  from firecode.pt import pt
33
33
 
34
34
 
35
- def d_min_bond(e1, e2):
36
- return 1.2 * (pt[e1].covalent_radius + pt[e2].covalent_radius)
35
+ def d_min_bond(e1, e2, factor=1.2):
36
+ return factor * (pt[e1].covalent_radius + pt[e2].covalent_radius)
37
37
  # return 0.2 + (pt[e1].covalent_radius + pt[e2].covalent_radius)
38
38
  # if this is somewhat prone to bugs, this might help https://cccbdb.nist.gov/calcbondcomp1x.asp
39
39
 
@@ -23,6 +23,7 @@ https://www.gnu.org/licenses/lgpl-3.0.en.html#license-text.
23
23
 
24
24
  # import pickle
25
25
  import time
26
+ from shutil import which
26
27
  from subprocess import CalledProcessError
27
28
 
28
29
  import numpy as np
@@ -39,10 +40,11 @@ from firecode.optimization_methods import _refine_structures, optimize
39
40
  from firecode.pka import pka_routine
40
41
  from firecode.pruning import prune_by_rmsd, prune_by_rmsd_rot_corr
41
42
  from firecode.settings import (CALCULATOR, DEFAULT_FF_LEVELS, DEFAULT_LEVELS,
42
- FF_CALC, FF_OPT_BOOL, PROCS)
43
+ FF_CALC, FF_OPT_BOOL, PROCS)
43
44
  from firecode.torsion_module import _get_quadruplets, csearch
44
45
  from firecode.utils import (align_structures, get_scan_peak_index,
45
- molecule_check, read_xyz, time_to_string, write_xyz)
46
+ molecule_check, read_xyz, time_to_string,
47
+ write_xyz)
46
48
 
47
49
 
48
50
  def operate(input_string, embedder):
@@ -430,6 +432,9 @@ def mtd_search_operator(filename, embedder):
430
432
  '''
431
433
  Run a CREST metadynamic conformational search and return the output filename.
432
434
  '''
435
+
436
+ assert crest_is_installed(), 'CREST 2 does not seem to be installed. Install it with: conda install -c conda-forge crest==2.*'
437
+
433
438
  mol = next((mol for mol in embedder.objects if mol.filename == filename))
434
439
  # load molecule to be optimized from embedder
435
440
 
@@ -798,6 +803,14 @@ def distance_scan(embedder):
798
803
  # Log data to the embedder class
799
804
  mol.scan_data = (dists, energies)
800
805
 
806
+ def crest_is_installed() -> bool:
807
+ '''
808
+ Returns True if a CREST installation is found.
809
+ For now, only CREST 2 is supported.
810
+
811
+ '''
812
+ return (which('crest') is not None)
813
+
801
814
  def _get_lowest_calc(embedder=None):
802
815
  '''
803
816
  Returns the values for calculator,
@@ -74,22 +74,22 @@ class Constraint:
74
74
 
75
75
  if self.type == 'B':
76
76
  a, b = self.indices
77
- deltas = [round(abs(norm_of(coords[match[a]]-coords[match[b]])-self.value), 3) for match in match_indices_list]
77
+ deltas = [abs(norm_of(coords[match[a]]-coords[match[b]])-self.value) for match in match_indices_list]
78
78
  best_match_indices = match_indices_list[deltas.index(min(deltas))]
79
79
 
80
80
  if self.type == 'A':
81
81
  a, b, c = self.indices
82
- deltas = [round(abs(point_angle(coords[match[a]],
82
+ deltas = [abs(point_angle(coords[match[a]],
83
83
  coords[match[b]],
84
- coords[match[c]])-self.value), 3) for match in match_indices_list]
84
+ coords[match[c]])-self.value) for match in match_indices_list]
85
85
  best_match_indices = match_indices_list[deltas.index(min(deltas))]
86
86
 
87
87
  if self.type == 'D':
88
88
  a, b, c, d = self.indices
89
- deltas = [round(abs(dihedral((coords[match[a]],
89
+ deltas = [abs(dihedral((coords[match[a]],
90
90
  coords[match[b]],
91
91
  coords[match[c]],
92
- coords[match[d]]))-self.value), 3) for match in match_indices_list]
92
+ coords[match[d]]))-self.value) for match in match_indices_list]
93
93
  best_match_indices = match_indices_list[deltas.index(min(deltas))]
94
94
 
95
95
  old_indices = self.indices[:]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: firecode
3
- Version: 1.1.2
3
+ Version: 1.1.3
4
4
  Summary: Computational chemistry general purpose ensemble optimizer and transition state builder
5
5
  Home-page: https://www.github.com/ntampellini/firecode
6
6
  Author: Nicolò Tampellini
@@ -41,6 +41,10 @@ Ensemble optimizer. Systematic generation of multimolecular arrangements for mon
41
41
  <!-- - ... mep_relax> BETA
42
42
  - ... IMAGES kw, also implement it for neb>-->
43
43
 
44
+ ## FIRECODE 1.1.3 🔥 (June 3 2025)
45
+ - The CREST MTD operator checks that CREST 2 is installed before trying to run a search. For now, only CREST 2 is supported, as CREST 3 needs some updated interface
46
+ - Solved CRETSLEVEL bug.
47
+
44
48
  ## FIRECODE 1.1.2 🔥 (April 29 2025)
45
49
  - Added CRESTLEVEL keyword to specify CREST theory level (i.e. "CRESTLEVEL=GFN2").
46
50
  - Updated aimnet2 bindings to only useunderscore in the module name calls and not hyphens.
@@ -20,7 +20,7 @@ along with this program. If not, see
20
20
  https://www.gnu.org/licenses/lgpl-3.0.en.html#license-text.
21
21
 
22
22
  '''
23
- __version__ = '1.1.2'
23
+ __version__ = '1.1.3'
24
24
  from setuptools import setup, find_packages
25
25
 
26
26
  long_description = ('## FIRECODE: Filtering Refiner and Embedder for Conformationally Dense Ensembles.\nEnsemble optimizer. Systematic generation of multimolecular arrangements for ' +
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes