bindtools 0.3.2__tar.gz → 0.3.4__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 (27) hide show
  1. {bindtools-0.3.2 → bindtools-0.3.4}/PKG-INFO +11 -7
  2. {bindtools-0.3.2 → bindtools-0.3.4}/README.md +3 -0
  3. {bindtools-0.3.2 → bindtools-0.3.4}/pyproject.toml +8 -7
  4. {bindtools-0.3.2 → bindtools-0.3.4}/pyproject.toml.orig +8 -8
  5. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/models/binding_model.py +21 -3
  6. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/__init__.py +0 -0
  7. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/binding.py +0 -0
  8. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/exceptions.py +0 -0
  9. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/io/__init__.py +0 -0
  10. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/io/export.py +0 -0
  11. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/mcmc/__init__.py +0 -0
  12. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/mcmc/helpers.py +0 -0
  13. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/mcmc/likelihood.py +0 -0
  14. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/mcmc/sampler.py +0 -0
  15. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/models/__init__.py +0 -0
  16. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/models/objective.py +0 -0
  17. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/models/simulation.py +0 -0
  18. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/observables/__init__.py +0 -0
  19. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/observables/transforms.py +0 -0
  20. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/observables/types.py +0 -0
  21. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/plotting/__init__.py +0 -0
  22. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/plotting/fit_plots.py +0 -0
  23. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/plotting/mcmc_plots.py +0 -0
  24. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/speciation/__init__.py +0 -0
  25. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/speciation/analytical.py +0 -0
  26. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/speciation/numerical.py +0 -0
  27. {bindtools-0.3.2 → bindtools-0.3.4}/src/bindtools/speciation/scipy_solver.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bindtools
3
- Version: 0.3.2
3
+ Version: 0.3.4
4
4
  Keywords: chemistry,analytical chemistry,binding constants,supramolecular
5
5
  Author: Martin Peeks
6
6
  Author-email: Martin Peeks <martinp23@googlemail.com>, m.peeks@unsw.edu.au
@@ -9,22 +9,23 @@ Classifier: Intended Audience :: Science/Research
9
9
  Classifier: Programming Language :: Python :: 3.12
10
10
  Classifier: Programming Language :: Python :: 3.13
11
11
  Classifier: Programming Language :: Python :: 3.14
12
+ Classifier: Programming Language :: Python :: 3.15
12
13
  Classifier: Topic :: Scientific/Engineering :: Chemistry
13
14
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
14
- Requires-Dist: corner==2.2.3
15
+ Requires-Dist: corner==2.3.0
15
16
  Requires-Dist: emcee==3.1.6
16
17
  Requires-Dist: h5py>=3.14.0
17
18
  Requires-Dist: latex2mathml>=3.81.0
18
19
  Requires-Dist: lmfit==1.3.4
19
- Requires-Dist: matplotlib==3.11.0
20
- Requires-Dist: numba>=0.66
20
+ Requires-Dist: matplotlib==3.11.2
21
+ Requires-Dist: numba>=0.68
21
22
  Requires-Dist: numpy>=2.3.4
22
23
  Requires-Dist: openpyxl>=3.1.5
23
24
  Requires-Dist: pandas>=2.3.3
24
- Requires-Dist: scipy==1.18.0
25
- Requires-Dist: tqdm==4.68.3
25
+ Requires-Dist: scipy==1.18.1
26
+ Requires-Dist: tqdm==4.70.1
26
27
  Requires-Dist: uncertainties==3.2.3
27
- Requires-Python: >=3.12
28
+ Requires-Python: >=3.12, <3.16
28
29
  Project-URL: Homepage, https://github.com/martinp23/bindtools
29
30
  Project-URL: Documentation, https://readthedocs.org
30
31
  Project-URL: Repository, https://github.com/martinp23/bindtools.git
@@ -36,6 +37,9 @@ Description-Content-Type: text/markdown
36
37
  [![PyPI version](https://badge.fury.io/py/bindtools.svg)](https://badge.fury.io/py/bindtools)
37
38
  [![Python Version](https://img.shields.io/pypi/pyversions/bindtools.svg)](https://pypi.org/project/bindtools/)
38
39
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
40
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.23651650.svg)](https://doi.org/10.5281/zenodo.23651650)
41
+
42
+
39
43
 
40
44
  `bindtools` is a Python library for supramolecular chemistry designed for modeling, fitting, and analyzing binding equilibria. It provides numerical and analytical solvers for complex chemical systems, robust parameter optimization, and Bayesian parameter estimation.
41
45
 
@@ -3,6 +3,9 @@
3
3
  [![PyPI version](https://badge.fury.io/py/bindtools.svg)](https://badge.fury.io/py/bindtools)
4
4
  [![Python Version](https://img.shields.io/pypi/pyversions/bindtools.svg)](https://pypi.org/project/bindtools/)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.23651650.svg)](https://doi.org/10.5281/zenodo.23651650)
7
+
8
+
6
9
 
7
10
  `bindtools` is a Python library for supramolecular chemistry designed for modeling, fitting, and analyzing binding equilibria. It provides numerical and analytical solvers for complex chemical systems, robust parameter optimization, and Bayesian parameter estimation.
8
11
 
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "bindtools"
7
- version = "0.3.2"
7
+ version = "0.3.4"
8
8
  readme = "README.md"
9
9
  classifiers = [
10
10
  "Development Status :: 3 - Alpha",
@@ -12,10 +12,11 @@ classifiers = [
12
12
  "Programming Language :: Python :: 3.12",
13
13
  "Programming Language :: Python :: 3.13",
14
14
  "Programming Language :: Python :: 3.14",
15
+ "Programming Language :: Python :: 3.15",
15
16
  "Topic :: Scientific/Engineering :: Chemistry",
16
17
  "Topic :: Scientific/Engineering :: Bio-Informatics",
17
18
  ]
18
- requires-python = ">=3.12"
19
+ requires-python = ">=3.12,<3.16"
19
20
  keywords = [
20
21
  "chemistry",
21
22
  "analytical chemistry",
@@ -23,18 +24,18 @@ keywords = [
23
24
  "supramolecular",
24
25
  ]
25
26
  dependencies = [
26
- "corner==2.2.3",
27
+ "corner==2.3.0",
27
28
  "emcee==3.1.6",
28
29
  "h5py>=3.14.0",
29
30
  "latex2mathml>=3.81.0",
30
31
  "lmfit==1.3.4",
31
- "matplotlib==3.11.0",
32
- "numba>=0.66",
32
+ "matplotlib==3.11.2",
33
+ "numba>=0.68",
33
34
  "numpy>=2.3.4",
34
35
  "openpyxl>=3.1.5",
35
36
  "pandas>=2.3.3",
36
- "scipy==1.18.0",
37
- "tqdm==4.68.3",
37
+ "scipy==1.18.1",
38
+ "tqdm==4.70.1",
38
39
  "uncertainties==3.2.3",
39
40
  ]
40
41
 
@@ -4,7 +4,7 @@ build-backend = "uv_build"
4
4
 
5
5
  [project]
6
6
  name = "bindtools"
7
- version = "0.3.2"
7
+ version = "0.3.4"
8
8
  readme = "README.md"
9
9
  classifiers = [
10
10
  # How mature is this project? Common values are
@@ -20,25 +20,25 @@ classifiers = [
20
20
  "Programming Language :: Python :: 3.12",
21
21
  "Programming Language :: Python :: 3.13",
22
22
  "Programming Language :: Python :: 3.14",
23
-
23
+ "Programming Language :: Python :: 3.15",
24
24
  "Topic :: Scientific/Engineering :: Chemistry",
25
25
  "Topic :: Scientific/Engineering :: Bio-Informatics",
26
26
  ]
27
- requires-python = ">=3.12"
27
+ requires-python = ">=3.12,<3.16"
28
28
  keywords = ["chemistry", "analytical chemistry", "binding constants", "supramolecular"]
29
29
  dependencies = [
30
- "corner==2.2.3",
30
+ "corner==2.3.0",
31
31
  "emcee==3.1.6",
32
32
  "h5py>=3.14.0",
33
33
  "latex2mathml>=3.81.0",
34
34
  "lmfit==1.3.4",
35
- "matplotlib==3.11.0",
36
- "numba>=0.66",
35
+ "matplotlib==3.11.2",
36
+ "numba>=0.68",
37
37
  "numpy>=2.3.4",
38
38
  "openpyxl>=3.1.5",
39
39
  "pandas>=2.3.3",
40
- "scipy==1.18.0",
41
- "tqdm==4.68.3",
40
+ "scipy==1.18.1",
41
+ "tqdm==4.70.1",
42
42
  "uncertainties==3.2.3",
43
43
  ]
44
44
  authors = [
@@ -48,7 +48,7 @@ class bindingModel:
48
48
  self.nConcs = np.shape(compConcs)[0]
49
49
 
50
50
  self.concUnits = None # mM #TODO
51
- self.specToDd = specToDd
51
+ self.specToDd = specToDd # (n_species, n_obs) object array for NMR chemical shifts
52
52
  self.specToLinear: Optional[List] = specToLinear # (n_species, n_obs) object array for UV-vis / fluorescence
53
53
  self.analytical_fast_exchange: bool = False
54
54
  self.analytical_topology: Optional[str] = None
@@ -169,14 +169,32 @@ class bindingModel:
169
169
  elif isinstance(x, lmfit.Parameter):
170
170
  self._addExistingParam(x)
171
171
 
172
- # add chemical shift fitting params
173
172
  if self.specToDd is not None:
173
+ if not isinstance(self.specToDd, np.ndarray) or self.specToDd.dtype != object:
174
+ raw_list = list(self.specToDd)
175
+ if len(raw_list) > 0 and isinstance(raw_list[0], (list, tuple, np.ndarray)):
176
+ # Already 2D-like
177
+ rows, cols = len(raw_list), len(raw_list[0])
178
+ arr = np.empty((rows, cols), dtype=object)
179
+ for r in range(rows):
180
+ for c in range(cols):
181
+ arr[r, c] = raw_list[r][c]
182
+ else:
183
+ # 1D-like -> reshape to (n_species, 1)
184
+ arr = np.empty((len(raw_list), 1), dtype=object)
185
+ for r, val in enumerate(raw_list):
186
+ arr[r, 0] = val
187
+ self.specToDd = arr
188
+ elif self.specToDd.ndim == 1:
189
+ self.specToDd = self.specToDd[:, None]
190
+
191
+
174
192
  for ii, x in np.ndenumerate(self.specToDd):
175
193
  if isinstance(x, tuple):
176
194
  self._addParam("shift_{}_{}".format(ii[0], ii[1]), x[1], min=x[0], max=x[2])
177
195
  elif isinstance(x, lmfit.Parameter):
178
196
  self._addExistingParam(x)
179
-
197
+
180
198
  def runModel(self, sigma=1, skip_col=1, method="least_squares", ret=False, kwargs={}) -> Optional["bindingModel"]:
181
199
  exptData = np.copy(self.rawData)
182
200
  spec_to_integ = None