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.
- {pyerrors-2.11.0 → pyerrors-2.12.0}/PKG-INFO +4 -21
- {pyerrors-2.11.0 → pyerrors-2.12.0}/README.md +1 -1
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/sfcf.py +33 -11
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/obs.py +31 -6
- pyerrors-2.12.0/pyerrors/version.py +1 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors.egg-info/PKG-INFO +4 -21
- pyerrors-2.12.0/pyerrors.egg-info/requires.txt +18 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/setup.py +2 -3
- pyerrors-2.11.0/pyerrors/version.py +0 -1
- pyerrors-2.11.0/pyerrors.egg-info/requires.txt +0 -18
- {pyerrors-2.11.0 → pyerrors-2.12.0}/LICENSE +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/__init__.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/correlators.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/covobs.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/dirac.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/fits.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/__init__.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/bdio.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/dobs.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/hadrons.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/json.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/misc.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/openQCD.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/pandas.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/input/utils.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/integrate.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/linalg.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/misc.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/mpm.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/roots.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors/special.py +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors.egg-info/SOURCES.txt +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors.egg-info/dependency_links.txt +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyerrors.egg-info/top_level.txt +0 -0
- {pyerrors-2.11.0 → pyerrors-2.12.0}/pyproject.toml +0 -0
- {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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
[](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [](https://www.python.org/downloads/) [](https://opensource.org/licenses/MIT) [](https://arxiv.org/abs/2209.14371) [](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
|
-
[](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [](https://www.python.org/downloads/) [](https://opensource.org/licenses/MIT) [](https://arxiv.org/abs/2209.14371) [](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
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
380
|
-
|
|
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(
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
[](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [](https://github.com/fjosw/pyerrors/actions/workflows/pytest.yml) [](https://www.python.org/downloads/) [](https://opensource.org/licenses/MIT) [](https://arxiv.org/abs/2209.14371) [](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.
|
|
28
|
-
install_requires=['numpy>=
|
|
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
|
|
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
|