pyerrors 2.11.0__tar.gz → 2.12.0__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 (36) hide show
  1. {pyerrors-2.11.0 → pyerrors-2.12.0}/PKG-INFO +4 -21
  2. {pyerrors-2.11.0 → pyerrors-2.12.0}/README.md +1 -1
  3. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/sfcf.py +33 -11
  4. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/obs.py +31 -6
  5. pyerrors-2.12.0/pyerrors/version.py +1 -0
  6. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors.egg-info/PKG-INFO +4 -21
  7. pyerrors-2.12.0/pyerrors.egg-info/requires.txt +18 -0
  8. {pyerrors-2.11.0 → pyerrors-2.12.0}/setup.py +2 -3
  9. pyerrors-2.11.0/pyerrors/version.py +0 -1
  10. pyerrors-2.11.0/pyerrors.egg-info/requires.txt +0 -18
  11. {pyerrors-2.11.0 → pyerrors-2.12.0}/LICENSE +0 -0
  12. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/__init__.py +0 -0
  13. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/correlators.py +0 -0
  14. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/covobs.py +0 -0
  15. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/dirac.py +0 -0
  16. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/fits.py +0 -0
  17. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/__init__.py +0 -0
  18. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/bdio.py +0 -0
  19. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/dobs.py +0 -0
  20. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/hadrons.py +0 -0
  21. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/json.py +0 -0
  22. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/misc.py +0 -0
  23. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/openQCD.py +0 -0
  24. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/pandas.py +0 -0
  25. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/utils.py +0 -0
  26. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/integrate.py +0 -0
  27. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/linalg.py +0 -0
  28. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/misc.py +0 -0
  29. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/mpm.py +0 -0
  30. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/roots.py +0 -0
  31. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/special.py +0 -0
  32. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors.egg-info/SOURCES.txt +0 -0
  33. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors.egg-info/dependency_links.txt +0 -0
  34. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors.egg-info/top_level.txt +0 -0
  35. {pyerrors-2.11.0 → pyerrors-2.12.0}/pyproject.toml +0 -0
  36. {pyerrors-2.11.0 → pyerrors-2.12.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyerrors
3
- Version: 2.11.0
3
+ Version: 2.12.0
4
4
  Summary: Error propagation and statistical analysis for Monte Carlo simulations
5
5
  Home-page: https://github.com/fjosw/pyerrors
6
6
  Author: Fabian Joswig
@@ -13,34 +13,17 @@ Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Intended Audience :: Science/Research
14
14
  Classifier: License :: OSI Approved :: MIT License
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.8
17
16
  Classifier: Programming Language :: Python :: 3.9
18
17
  Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
20
19
  Classifier: Programming Language :: Python :: 3.12
21
20
  Classifier: Topic :: Scientific/Engineering :: Physics
22
- Requires-Python: >=3.8.0
21
+ Requires-Python: >=3.9.0
23
22
  Description-Content-Type: text/markdown
24
- License-File: LICENSE
25
- Requires-Dist: numpy<2,>=1.24
26
- Requires-Dist: autograd>=1.6.2
27
- Requires-Dist: numdifftools>=0.9.41
28
- Requires-Dist: matplotlib>=3.7
29
- Requires-Dist: scipy>=1.10
30
- Requires-Dist: iminuit>=2.21
31
- Requires-Dist: h5py>=3.8
32
- Requires-Dist: lxml>=4.9
33
- Requires-Dist: python-rapidjson>=1.10
34
- Requires-Dist: pandas>=2.0
35
23
  Provides-Extra: test
36
- Requires-Dist: pytest; extra == "test"
37
- Requires-Dist: pytest-cov; extra == "test"
38
- Requires-Dist: pytest-benchmark; extra == "test"
39
- Requires-Dist: hypothesis; extra == "test"
40
- Requires-Dist: nbmake; extra == "test"
41
- Requires-Dist: flake8; extra == "test"
24
+ License-File: LICENSE
42
25
 
43
- [![pytest](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [![](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![arXiv](https://img.shields.io/badge/arXiv-2209.14371-b31b1b.svg)](https://arxiv.org/abs/2209.14371) [![DOI](https://img.shields.io/badge/DOI-10.1016%2Fj.cpc.2023.108750-blue)](https://doi.org/10.1016/j.cpc.2023.108750)
26
+ [![pytest](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [![](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![arXiv](https://img.shields.io/badge/arXiv-2209.14371-b31b1b.svg)](https://arxiv.org/abs/2209.14371) [![DOI](https://img.shields.io/badge/DOI-10.1016%2Fj.cpc.2023.108750-blue)](https://doi.org/10.1016/j.cpc.2023.108750)
44
27
  # pyerrors
45
28
  `pyerrors` is a python framework for error computation and propagation of Markov chain Monte Carlo data from lattice field theory and statistical mechanics simulations.
46
29
 
@@ -1,4 +1,4 @@
1
- [![pytest](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [![](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![arXiv](https://img.shields.io/badge/arXiv-2209.14371-b31b1b.svg)](https://arxiv.org/abs/2209.14371) [![DOI](https://img.shields.io/badge/DOI-10.1016%2Fj.cpc.2023.108750-blue)](https://doi.org/10.1016/j.cpc.2023.108750)
1
+ [![pytest](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [![](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![arXiv](https://img.shields.io/badge/arXiv-2209.14371-b31b1b.svg)](https://arxiv.org/abs/2209.14371) [![DOI](https://img.shields.io/badge/DOI-10.1016%2Fj.cpc.2023.108750-blue)](https://doi.org/10.1016/j.cpc.2023.108750)
2
2
  # pyerrors
3
3
  `pyerrors` is a python framework for error computation and propagation of Markov chain Monte Carlo data from lattice field theory and statistical mechanics simulations.
4
4
 
@@ -224,12 +224,23 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
224
224
  intern[name]["spec"][quarks][off] = {}
225
225
  for w in wf_list:
226
226
  intern[name]["spec"][quarks][off][w] = {}
227
- for w2 in wf2_list:
228
- intern[name]["spec"][quarks][off][w][w2] = {}
229
- intern[name]["spec"][quarks][off][w][w2]["pattern"] = _make_pattern(version, name, off, w, w2, intern[name]['b2b'], quarks)
227
+ if b2b:
228
+ for w2 in wf2_list:
229
+ intern[name]["spec"][quarks][off][w][w2] = {}
230
+ intern[name]["spec"][quarks][off][w][w2]["pattern"] = _make_pattern(version, name, off, w, w2, intern[name]['b2b'], quarks)
231
+ else:
232
+ intern[name]["spec"][quarks][off][w]["0"] = {}
233
+ intern[name]["spec"][quarks][off][w]["0"]["pattern"] = _make_pattern(version, name, off, w, 0, intern[name]['b2b'], quarks)
230
234
 
231
235
  internal_ret_dict = {}
232
- needed_keys = _lists2key(name_list, quarks_list, noffset_list, wf_list, wf2_list)
236
+ needed_keys = []
237
+ for name, corr_type in zip(name_list, corr_type_list):
238
+ b2b, single = _extract_corr_type(corr_type)
239
+ if b2b:
240
+ needed_keys.extend(_lists2key([name], quarks_list, noffset_list, wf_list, wf2_list))
241
+ else:
242
+ needed_keys.extend(_lists2key([name], quarks_list, noffset_list, wf_list, ["0"]))
243
+
233
244
  for key in needed_keys:
234
245
  internal_ret_dict[key] = []
235
246
 
@@ -270,10 +281,14 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
270
281
  if i == 0:
271
282
  if version != "0.0" and compact:
272
283
  file = path + '/' + item + '/' + sub_ls[0]
273
- for name in name_list:
284
+ for name_index, name in enumerate(name_list):
274
285
  if version == "0.0" or not compact:
275
286
  file = path + '/' + item + '/' + sub_ls[0] + '/' + name
276
- for key in _lists2key(quarks_list, noffset_list, wf_list, wf2_list):
287
+ if corr_type_list[name_index] == 'bi':
288
+ name_keys = _lists2key(quarks_list, noffset_list, wf_list, ["0"])
289
+ else:
290
+ name_keys = _lists2key(quarks_list, noffset_list, wf_list, wf2_list)
291
+ for key in name_keys:
277
292
  specs = _key2specs(key)
278
293
  quarks = specs[0]
279
294
  off = specs[1]
@@ -307,7 +322,6 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
307
322
  cfg_path = path + '/' + item + '/' + subitem
308
323
  file_data = _read_o_file(cfg_path, name, needed_keys, intern, version, im)
309
324
  rep_data.append(file_data)
310
- print(rep_data)
311
325
  for t in range(intern[name]["T"]):
312
326
  internal_ret_dict[key][t].append([])
313
327
  for cfg in range(no_cfg):
@@ -363,12 +377,13 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
363
377
  result_dict = {}
364
378
  if keyed_out:
365
379
  for key in needed_keys:
380
+ name = _key2specs(key)[0]
366
381
  result = []
367
382
  for t in range(intern[name]["T"]):
368
383
  result.append(Obs(internal_ret_dict[key][t], new_names, idl=idl))
369
384
  result_dict[key] = result
370
385
  else:
371
- for name in name_list:
386
+ for name, corr_type in zip(name_list, corr_type_list):
372
387
  result_dict[name] = {}
373
388
  for quarks in quarks_list:
374
389
  result_dict[name][quarks] = {}
@@ -376,12 +391,19 @@ def read_sfcf_multi(path, prefix, name_list, quarks_list=['.*'], corr_type_list=
376
391
  result_dict[name][quarks][off] = {}
377
392
  for w in wf_list:
378
393
  result_dict[name][quarks][off][w] = {}
379
- for w2 in wf2_list:
380
- key = _specs2key(name, quarks, off, w, w2)
394
+ if corr_type != 'bi':
395
+ for w2 in wf2_list:
396
+ key = _specs2key(name, quarks, off, w, w2)
397
+ result = []
398
+ for t in range(intern[name]["T"]):
399
+ result.append(Obs(internal_ret_dict[key][t], new_names, idl=idl))
400
+ result_dict[name][quarks][str(off)][str(w)][str(w2)] = result
401
+ else:
402
+ key = _specs2key(name, quarks, off, w, "0")
381
403
  result = []
382
404
  for t in range(intern[name]["T"]):
383
405
  result.append(Obs(internal_ret_dict[key][t], new_names, idl=idl))
384
- result_dict[name][quarks][str(off)][str(w)][str(w2)] = result
406
+ result_dict[name][quarks][str(off)][str(w)][str(0)] = result
385
407
  return result_dict
386
408
 
387
409
 
@@ -1138,7 +1138,7 @@ def _intersection_idx(idl):
1138
1138
  return idinter
1139
1139
 
1140
1140
 
1141
- def _expand_deltas_for_merge(deltas, idx, shape, new_idx):
1141
+ def _expand_deltas_for_merge(deltas, idx, shape, new_idx, scalefactor):
1142
1142
  """Expand deltas defined on idx to the list of configs that is defined by new_idx.
1143
1143
  New, empty entries are filled by 0. If idx and new_idx are of type range, the smallest
1144
1144
  common divisor of the step sizes is used as new step size.
@@ -1154,15 +1154,20 @@ def _expand_deltas_for_merge(deltas, idx, shape, new_idx):
1154
1154
  Number of configs in idx.
1155
1155
  new_idx : list
1156
1156
  List of configs that defines the new range, has to be sorted in ascending order.
1157
+ scalefactor : float
1158
+ An additional scaling factor that can be applied to scale the fluctuations,
1159
+ e.g., when Obs with differing numbers of replica are merged.
1157
1160
  """
1158
-
1159
1161
  if type(idx) is range and type(new_idx) is range:
1160
1162
  if idx == new_idx:
1161
- return deltas
1163
+ if scalefactor == 1:
1164
+ return deltas
1165
+ else:
1166
+ return deltas * scalefactor
1162
1167
  ret = np.zeros(new_idx[-1] - new_idx[0] + 1)
1163
1168
  for i in range(shape):
1164
1169
  ret[idx[i] - new_idx[0]] = deltas[i]
1165
- return np.array([ret[new_idx[i] - new_idx[0]] for i in range(len(new_idx))]) * len(new_idx) / len(idx)
1170
+ return np.array([ret[new_idx[i] - new_idx[0]] for i in range(len(new_idx))]) * len(new_idx) / len(idx) * scalefactor
1166
1171
 
1167
1172
 
1168
1173
  def derived_observable(func, data, array_mode=False, **kwargs):
@@ -1243,6 +1248,25 @@ def derived_observable(func, data, array_mode=False, **kwargs):
1243
1248
  new_r_values[name] = func(tmp_values, **kwargs)
1244
1249
  new_idl_d[name] = _merge_idx(idl)
1245
1250
 
1251
+ def _compute_scalefactor_missing_rep(obs):
1252
+ """
1253
+ Computes the scale factor that is to be multiplied with the deltas
1254
+ in the case where Obs with different subsets of replica are merged.
1255
+ Returns a dictionary with the scale factor for each Monte Carlo name.
1256
+
1257
+ Parameters
1258
+ ----------
1259
+ obs : Obs
1260
+ The observable corresponding to the deltas that are to be scaled
1261
+ """
1262
+ scalef_d = {}
1263
+ for mc_name in obs.mc_names:
1264
+ mc_idl_d = [name for name in obs.idl if name.startswith(mc_name + '|')]
1265
+ new_mc_idl_d = [name for name in new_idl_d if name.startswith(mc_name + '|')]
1266
+ if len(mc_idl_d) > 0 and len(mc_idl_d) < len(new_mc_idl_d):
1267
+ scalef_d[mc_name] = sum([len(new_idl_d[name]) for name in new_mc_idl_d]) / sum([len(new_idl_d[name]) for name in mc_idl_d])
1268
+ return scalef_d
1269
+
1246
1270
  if 'man_grad' in kwargs:
1247
1271
  deriv = np.asarray(kwargs.get('man_grad'))
1248
1272
  if new_values.shape + data.shape != deriv.shape:
@@ -1280,7 +1304,7 @@ def derived_observable(func, data, array_mode=False, **kwargs):
1280
1304
  d_extracted[name] = []
1281
1305
  ens_length = len(new_idl_d[name])
1282
1306
  for i_dat, dat in enumerate(data):
1283
- d_extracted[name].append(np.array([_expand_deltas_for_merge(o.deltas.get(name, np.zeros(ens_length)), o.idl.get(name, new_idl_d[name]), o.shape.get(name, ens_length), new_idl_d[name]) for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (ens_length, )))
1307
+ d_extracted[name].append(np.array([_expand_deltas_for_merge(o.deltas.get(name, np.zeros(ens_length)), o.idl.get(name, new_idl_d[name]), o.shape.get(name, ens_length), new_idl_d[name], _compute_scalefactor_missing_rep(o).get(name.split('|')[0], 1)) for o in dat.reshape(np.prod(dat.shape))]).reshape(dat.shape + (ens_length, )))
1284
1308
  for name in new_cov_names:
1285
1309
  g_extracted[name] = []
1286
1310
  zero_grad = _Zero_grad(new_covobs_lengths[name])
@@ -1302,11 +1326,12 @@ def derived_observable(func, data, array_mode=False, **kwargs):
1302
1326
  new_grad[name] += np.tensordot(deriv[i_val + (i_dat, )], dat)
1303
1327
  else:
1304
1328
  for j_obs, obs in np.ndenumerate(data):
1329
+ scalef_d = _compute_scalefactor_missing_rep(obs)
1305
1330
  for name in obs.names:
1306
1331
  if name in obs.cov_names:
1307
1332
  new_grad[name] = new_grad.get(name, 0) + deriv[i_val + j_obs] * obs.covobs[name].grad
1308
1333
  else:
1309
- new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name])
1334
+ new_deltas[name] = new_deltas.get(name, 0) + deriv[i_val + j_obs] * _expand_deltas_for_merge(obs.deltas[name], obs.idl[name], obs.shape[name], new_idl_d[name], scalef_d.get(name.split('|')[0], 1))
1310
1335
 
1311
1336
  new_covobs = {name: Covobs(0, allcov[name], name, grad=new_grad[name]) for name in new_grad}
1312
1337
 
@@ -0,0 +1 @@
1
+ __version__ = "2.12.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyerrors
3
- Version: 2.11.0
3
+ Version: 2.12.0
4
4
  Summary: Error propagation and statistical analysis for Monte Carlo simulations
5
5
  Home-page: https://github.com/fjosw/pyerrors
6
6
  Author: Fabian Joswig
@@ -13,34 +13,17 @@ Classifier: Development Status :: 5 - Production/Stable
13
13
  Classifier: Intended Audience :: Science/Research
14
14
  Classifier: License :: OSI Approved :: MIT License
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.8
17
16
  Classifier: Programming Language :: Python :: 3.9
18
17
  Classifier: Programming Language :: Python :: 3.10
19
18
  Classifier: Programming Language :: Python :: 3.11
20
19
  Classifier: Programming Language :: Python :: 3.12
21
20
  Classifier: Topic :: Scientific/Engineering :: Physics
22
- Requires-Python: >=3.8.0
21
+ Requires-Python: >=3.9.0
23
22
  Description-Content-Type: text/markdown
24
- License-File: LICENSE
25
- Requires-Dist: numpy<2,>=1.24
26
- Requires-Dist: autograd>=1.6.2
27
- Requires-Dist: numdifftools>=0.9.41
28
- Requires-Dist: matplotlib>=3.7
29
- Requires-Dist: scipy>=1.10
30
- Requires-Dist: iminuit>=2.21
31
- Requires-Dist: h5py>=3.8
32
- Requires-Dist: lxml>=4.9
33
- Requires-Dist: python-rapidjson>=1.10
34
- Requires-Dist: pandas>=2.0
35
23
  Provides-Extra: test
36
- Requires-Dist: pytest; extra == "test"
37
- Requires-Dist: pytest-cov; extra == "test"
38
- Requires-Dist: pytest-benchmark; extra == "test"
39
- Requires-Dist: hypothesis; extra == "test"
40
- Requires-Dist: nbmake; extra == "test"
41
- Requires-Dist: flake8; extra == "test"
24
+ License-File: LICENSE
42
25
 
43
- [![pytest](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [![](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![arXiv](https://img.shields.io/badge/arXiv-2209.14371-b31b1b.svg)](https://arxiv.org/abs/2209.14371) [![DOI](https://img.shields.io/badge/DOI-10.1016%2Fj.cpc.2023.108750-blue)](https://doi.org/10.1016/j.cpc.2023.108750)
26
+ [![pytest](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml/badge.svg)](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [![](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![arXiv](https://img.shields.io/badge/arXiv-2209.14371-b31b1b.svg)](https://arxiv.org/abs/2209.14371) [![DOI](https://img.shields.io/badge/DOI-10.1016%2Fj.cpc.2023.108750-blue)](https://doi.org/10.1016/j.cpc.2023.108750)
44
27
  # pyerrors
45
28
  `pyerrors` is a python framework for error computation and propagation of Markov chain Monte Carlo data from lattice field theory and statistical mechanics simulations.
46
29
 
@@ -0,0 +1,18 @@
1
+ numpy>=2.0
2
+ autograd>=1.7.0
3
+ numdifftools>=0.9.41
4
+ matplotlib>=3.9
5
+ scipy>=1.13
6
+ iminuit>=2.28
7
+ h5py>=3.11
8
+ lxml>=5.0
9
+ python-rapidjson>=1.20
10
+ pandas>=2.2
11
+
12
+ [test]
13
+ pytest
14
+ pytest-cov
15
+ pytest-benchmark
16
+ hypothesis
17
+ nbmake
18
+ flake8
@@ -24,15 +24,14 @@ setup(name='pyerrors',
24
24
  author_email='fabian.joswig@ed.ac.uk',
25
25
  license="MIT",
26
26
  packages=find_packages(),
27
- python_requires='>=3.8.0',
28
- install_requires=['numpy>=1.24,<2', 'autograd>=1.6.2', 'numdifftools>=0.9.41', 'matplotlib>=3.7', 'scipy>=1.10', 'iminuit>=2.21', 'h5py>=3.8', 'lxml>=4.9', 'python-rapidjson>=1.10', 'pandas>=2.0'],
27
+ python_requires='>=3.9.0',
28
+ install_requires=['numpy>=2.0', 'autograd>=1.7.0', 'numdifftools>=0.9.41', 'matplotlib>=3.9', 'scipy>=1.13', 'iminuit>=2.28', 'h5py>=3.11', 'lxml>=5.0', 'python-rapidjson>=1.20', 'pandas>=2.2'],
29
29
  extras_require={'test': ['pytest', 'pytest-cov', 'pytest-benchmark', 'hypothesis', 'nbmake', 'flake8']},
30
30
  classifiers=[
31
31
  'Development Status :: 5 - Production/Stable',
32
32
  'Intended Audience :: Science/Research',
33
33
  'License :: OSI Approved :: MIT License',
34
34
  'Programming Language :: Python :: 3',
35
- 'Programming Language :: Python :: 3.8',
36
35
  'Programming Language :: Python :: 3.9',
37
36
  'Programming Language :: Python :: 3.10',
38
37
  'Programming Language :: Python :: 3.11',
@@ -1 +0,0 @@
1
- __version__ = "2.11.0"
@@ -1,18 +0,0 @@
1
- numpy<2,>=1.24
2
- autograd>=1.6.2
3
- numdifftools>=0.9.41
4
- matplotlib>=3.7
5
- scipy>=1.10
6
- iminuit>=2.21
7
- h5py>=3.8
8
- lxml>=4.9
9
- python-rapidjson>=1.10
10
- pandas>=2.0
11
-
12
- [test]
13
- pytest
14
- pytest-cov
15
- pytest-benchmark
16
- hypothesis
17
- nbmake
18
- flake8
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