diffpy.utils 3.6.1rc1__py3-none-any.whl → 3.7.0__py3-none-any.whl
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.
- diffpy/utils/_deprecator.py +178 -0
- diffpy/utils/diffraction_objects.py +39 -34
- diffpy/utils/parsers/__init__.py +9 -1
- diffpy/utils/parsers/loaddata.py +197 -172
- diffpy/utils/parsers/serialization.py +4 -3
- diffpy/utils/resampler.py +11 -11
- diffpy/utils/tools.py +63 -73
- diffpy/utils/transforms.py +22 -18
- diffpy/utils/utils_app.py +33 -0
- diffpy/utils/version.py +5 -4
- diffpy/utils/wx/gridutils.py +3 -3
- {diffpy_utils-3.6.1rc1.dist-info → diffpy_utils-3.7.0.dist-info}/METADATA +5 -5
- diffpy_utils-3.7.0.dist-info/RECORD +24 -0
- {diffpy_utils-3.6.1rc1.dist-info → diffpy_utils-3.7.0.dist-info}/WHEEL +1 -1
- diffpy_utils-3.7.0.dist-info/entry_points.txt +2 -0
- diffpy_utils-3.6.1rc1.dist-info/RECORD +0 -21
- {diffpy_utils-3.6.1rc1.dist-info → diffpy_utils-3.7.0.dist-info}/licenses/AUTHORS.rst +0 -0
- {diffpy_utils-3.6.1rc1.dist-info → diffpy_utils-3.7.0.dist-info}/licenses/LICENSE.rst +0 -0
- {diffpy_utils-3.6.1rc1.dist-info → diffpy_utils-3.7.0.dist-info}/licenses/LICENSE_DANSE.txt +0 -0
- {diffpy_utils-3.6.1rc1.dist-info → diffpy_utils-3.7.0.dist-info}/top_level.txt +0 -0
diffpy/utils/tools.py
CHANGED
|
@@ -8,7 +8,7 @@ from scipy.optimize import dual_annealing
|
|
|
8
8
|
from scipy.signal import convolve
|
|
9
9
|
from xraydb import material_mu
|
|
10
10
|
|
|
11
|
-
from diffpy.utils.parsers
|
|
11
|
+
from diffpy.utils.parsers import load_data
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def _stringify(string_value):
|
|
@@ -51,43 +51,46 @@ def _load_config(file_path):
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
def get_user_info(owner_name=None, owner_email=None, owner_orcid=None):
|
|
54
|
-
"""Get name, email, and
|
|
55
|
-
return it as a metadata dictionary.
|
|
56
|
-
|
|
57
|
-
The function looks for
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
54
|
+
"""Get name, email, and ORCID of the owner/user from various sources
|
|
55
|
+
and return it as a metadata dictionary.
|
|
56
|
+
|
|
57
|
+
The function looks for information in JSON configuration files named
|
|
58
|
+
``diffpyconfig.json``. These can be in the user's home directory and in
|
|
59
|
+
the current working directory. The information in the config files is
|
|
60
|
+
combined, with the local config overriding the home-directory one.
|
|
61
|
+
Values for ``owner_name``, ``owner_email``, and ``owner_orcid`` may be
|
|
62
|
+
passed in to the function, and these override the config files.
|
|
63
|
+
|
|
64
|
+
A template for the config file is below. Create a text file called
|
|
65
|
+
``diffpyconfig.json`` in your home directory and paste the template into
|
|
66
|
+
it, editing it with your real information::
|
|
67
|
+
|
|
68
|
+
{
|
|
69
|
+
"owner_name": "<your name as you would like it stored with your data>",
|
|
70
|
+
"owner_email": "<your_associated_email>@email.com",
|
|
71
|
+
"owner_orcid": "<your_associated_orcid if you would like this stored with your data>" # noqa: E501
|
|
72
|
+
}
|
|
73
|
+
|
|
73
74
|
You may also store any other global-level information that you would like
|
|
74
|
-
associated with your diffraction data in this file
|
|
75
|
+
associated with your diffraction data in this file.
|
|
75
76
|
|
|
76
77
|
Parameters
|
|
77
78
|
----------
|
|
78
|
-
owner_name : str, optional
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
owner_email : str, optional
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
79
|
+
owner_name : str, ``optional``
|
|
80
|
+
Default is the value stored in the global or local config file.
|
|
81
|
+
The name of the user stored in metadata.
|
|
82
|
+
owner_email : str, ``optional``
|
|
83
|
+
Default is the value stored in the global or local config file.
|
|
84
|
+
The email address of the user/owner.
|
|
85
|
+
owner_orcid : str, ``optional``
|
|
86
|
+
Default is the value stored in the global or local config file.
|
|
87
|
+
The ORCID ID of the user/owner.
|
|
85
88
|
|
|
86
89
|
Returns
|
|
87
90
|
-------
|
|
88
91
|
user_info : dict
|
|
89
|
-
|
|
90
|
-
|
|
92
|
+
Dictionary containing username, email, ORCID, and any other
|
|
93
|
+
information stored in global or local config files.
|
|
91
94
|
"""
|
|
92
95
|
runtime_info = {
|
|
93
96
|
"owner_name": owner_name,
|
|
@@ -106,8 +109,8 @@ def get_user_info(owner_name=None, owner_email=None, owner_orcid=None):
|
|
|
106
109
|
|
|
107
110
|
|
|
108
111
|
def check_and_build_global_config(skip_config_creation=False):
|
|
109
|
-
"""Check for a global diffpu config file in user's home directory
|
|
110
|
-
creates one if it is missing.
|
|
112
|
+
"""Check for a global diffpu config file in user's home directory
|
|
113
|
+
and creates one if it is missing.
|
|
111
114
|
|
|
112
115
|
The file it looks for is called diffpyconfig.json. This can contain
|
|
113
116
|
anything in json format, but minimally contains information about the
|
|
@@ -127,9 +130,9 @@ def check_and_build_global_config(skip_config_creation=False):
|
|
|
127
130
|
|
|
128
131
|
Parameters
|
|
129
132
|
----------
|
|
130
|
-
skip_config_creation : bool, optional
|
|
133
|
+
skip_config_creation : bool, ``optional``
|
|
131
134
|
The boolean that will override the creation workflow even if no
|
|
132
|
-
config file exists.
|
|
135
|
+
config file exists. Default is False.
|
|
133
136
|
|
|
134
137
|
Returns
|
|
135
138
|
-------
|
|
@@ -190,6 +193,7 @@ def get_package_info(package_names, metadata=None):
|
|
|
190
193
|
Package info stored in metadata as
|
|
191
194
|
{'package_info': {'package_name': 'version_number'}}.
|
|
192
195
|
|
|
196
|
+
Parameters
|
|
193
197
|
----------
|
|
194
198
|
package_name : str or list
|
|
195
199
|
The name of the package(s) to retrieve the version number for.
|
|
@@ -227,46 +231,30 @@ def get_density_from_cloud(sample_composition, mp_token=""):
|
|
|
227
231
|
)
|
|
228
232
|
|
|
229
233
|
|
|
230
|
-
def compute_mu_using_xraydb(
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
"""Compute the attenuation coefficient (mu) using the XrayDB database.
|
|
234
|
+
def compute_mu_using_xraydb(sample_composition, energy, sample_mass_density):
|
|
235
|
+
"""Compute the attenuation coefficient (mu) using the XrayDB
|
|
236
|
+
database.
|
|
234
237
|
|
|
235
|
-
Computes mu based on the sample composition
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
Computes mu based on the sample composition, X-ray energy, and
|
|
239
|
+
sample mass density.
|
|
240
|
+
|
|
241
|
+
Reference:
|
|
242
|
+
https://xraypy.github.io/XrayDB/python.html#xraydb.material_mu
|
|
240
243
|
|
|
241
244
|
Parameters
|
|
242
245
|
----------
|
|
243
246
|
sample_composition : str
|
|
244
247
|
The chemical formula of the material.
|
|
245
248
|
energy : float
|
|
246
|
-
The energy of the incident
|
|
247
|
-
sample_mass_density : float
|
|
248
|
-
The mass density of the
|
|
249
|
-
packing_fraction : float, optional, Default is None
|
|
250
|
-
The fraction of sample in the capillary (between 0 and 1).
|
|
251
|
-
Specify either sample_mass_density or packing_fraction but not both.
|
|
249
|
+
The energy of the incident X-rays in keV.
|
|
250
|
+
sample_mass_density : float
|
|
251
|
+
The mass density of the sample in g/cm^3.
|
|
252
252
|
|
|
253
253
|
Returns
|
|
254
254
|
-------
|
|
255
255
|
mu : float
|
|
256
|
-
The attenuation coefficient
|
|
256
|
+
The attenuation coefficient μ in mm⁻¹.
|
|
257
257
|
"""
|
|
258
|
-
if (sample_mass_density is None and packing_fraction is None) or (
|
|
259
|
-
sample_mass_density is not None and packing_fraction is not None
|
|
260
|
-
):
|
|
261
|
-
raise ValueError(
|
|
262
|
-
"You must specify either sample_mass_density or packing_fraction, "
|
|
263
|
-
"but not both. "
|
|
264
|
-
"Please rerun specifying only one."
|
|
265
|
-
)
|
|
266
|
-
if packing_fraction is not None:
|
|
267
|
-
sample_mass_density = (
|
|
268
|
-
get_density_from_cloud(sample_composition) * packing_fraction
|
|
269
|
-
)
|
|
270
258
|
energy_eV = energy * 1000
|
|
271
259
|
mu = (
|
|
272
260
|
material_mu(
|
|
@@ -281,8 +269,8 @@ def compute_mu_using_xraydb(
|
|
|
281
269
|
|
|
282
270
|
|
|
283
271
|
def _top_hat(z, half_slit_width):
|
|
284
|
-
"""Create a top-hat function, return 1.0 for values within the
|
|
285
|
-
slit width and 0 otherwise."""
|
|
272
|
+
"""Create a top-hat function, return 1.0 for values within the
|
|
273
|
+
specified slit width and 0 otherwise."""
|
|
286
274
|
return np.where((z >= -half_slit_width) & (z <= half_slit_width), 1.0, 0.0)
|
|
287
275
|
|
|
288
276
|
|
|
@@ -313,9 +301,10 @@ def _model_function(z, diameter, z0, I0, mud, slope):
|
|
|
313
301
|
|
|
314
302
|
|
|
315
303
|
def _extend_z_and_convolve(z, diameter, half_slit_width, z0, I0, mud, slope):
|
|
316
|
-
"""Extend z values and I values for padding (so that we don't have
|
|
317
|
-
convolution), then perform convolution (note that the
|
|
318
|
-
are the same as modeled I values if slit width is
|
|
304
|
+
"""Extend z values and I values for padding (so that we don't have
|
|
305
|
+
tails in convolution), then perform convolution (note that the
|
|
306
|
+
convolved I values are the same as modeled I values if slit width is
|
|
307
|
+
close to 0)"""
|
|
319
308
|
n_points = len(z)
|
|
320
309
|
z_left_pad = np.linspace(
|
|
321
310
|
z.min() - n_points * (z[1] - z[0]), z.min(), n_points
|
|
@@ -336,8 +325,8 @@ def _extend_z_and_convolve(z, diameter, half_slit_width, z0, I0, mud, slope):
|
|
|
336
325
|
|
|
337
326
|
def _objective_function(params, z, observed_data):
|
|
338
327
|
"""Compute the objective function for fitting a model to the
|
|
339
|
-
observed/experimental data by minimizing the sum of squared
|
|
340
|
-
between the observed data and the convolved model data."""
|
|
328
|
+
observed/experimental data by minimizing the sum of squared
|
|
329
|
+
residuals between the observed data and the convolved model data."""
|
|
341
330
|
diameter, half_slit_width, z0, I0, mud, slope = params
|
|
342
331
|
convolved_model_data = _extend_z_and_convolve(
|
|
343
332
|
z, diameter, half_slit_width, z0, I0, mud, slope
|
|
@@ -347,7 +336,8 @@ def _objective_function(params, z, observed_data):
|
|
|
347
336
|
|
|
348
337
|
|
|
349
338
|
def _compute_single_mud(z_data, I_data):
|
|
350
|
-
"""Perform dual annealing optimization and extract the
|
|
339
|
+
"""Perform dual annealing optimization and extract the
|
|
340
|
+
parameters."""
|
|
351
341
|
bounds = [
|
|
352
342
|
(
|
|
353
343
|
1e-5,
|
|
@@ -376,8 +366,8 @@ def _compute_single_mud(z_data, I_data):
|
|
|
376
366
|
|
|
377
367
|
|
|
378
368
|
def compute_mud(filepath):
|
|
379
|
-
"""Compute the best-fit mu*D value from a z-scan file, removing the
|
|
380
|
-
holder effect.
|
|
369
|
+
"""Compute the best-fit mu*D value from a z-scan file, removing the
|
|
370
|
+
sample holder effect.
|
|
381
371
|
|
|
382
372
|
This function loads z-scan data and fits it to a model
|
|
383
373
|
that convolves a top-hat function with I = I0 * e^{-mu * l}.
|
|
@@ -400,7 +390,7 @@ def compute_mud(filepath):
|
|
|
400
390
|
mu*D : float
|
|
401
391
|
The best-fit mu*D value.
|
|
402
392
|
"""
|
|
403
|
-
z_data, I_data =
|
|
393
|
+
z_data, I_data = load_data(filepath, unpack=True)
|
|
404
394
|
best_mud, _ = min(
|
|
405
395
|
(_compute_single_mud(z_data, I_data) for _ in range(20)),
|
|
406
396
|
key=lambda pair: pair[1],
|
diffpy/utils/transforms.py
CHANGED
|
@@ -52,7 +52,7 @@ def q_to_tth(q, wavelength):
|
|
|
52
52
|
|
|
53
53
|
Parameters
|
|
54
54
|
----------
|
|
55
|
-
q : ndarray
|
|
55
|
+
q : ``ndarray``
|
|
56
56
|
The 1D array of :math:`q` values numpy.array([qs]).
|
|
57
57
|
The units of q must be reciprocal of the units of wavelength.
|
|
58
58
|
|
|
@@ -61,7 +61,7 @@ def q_to_tth(q, wavelength):
|
|
|
61
61
|
|
|
62
62
|
Returns
|
|
63
63
|
-------
|
|
64
|
-
tth : ndarray
|
|
64
|
+
tth : ``ndarray``
|
|
65
65
|
The 1D array of :math:`2\theta` values in degrees numpy.array([tths]).
|
|
66
66
|
"""
|
|
67
67
|
_validate_inputs(q, wavelength)
|
|
@@ -76,7 +76,8 @@ def q_to_tth(q, wavelength):
|
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
def tth_to_q(tth, wavelength):
|
|
79
|
-
r"""Helper function to convert two-theta to q on independent variable
|
|
79
|
+
r"""Helper function to convert two-theta to q on independent variable
|
|
80
|
+
axis.
|
|
80
81
|
|
|
81
82
|
If wavelength is missing, returns independent variable axis as integer
|
|
82
83
|
indexes.
|
|
@@ -95,7 +96,7 @@ def tth_to_q(tth, wavelength):
|
|
|
95
96
|
|
|
96
97
|
Parameters
|
|
97
98
|
----------
|
|
98
|
-
tth : ndarray
|
|
99
|
+
tth : ``ndarray``
|
|
99
100
|
The 1D array of :math:`2\theta` values np.array([tths]).
|
|
100
101
|
The units of tth are expected in degrees.
|
|
101
102
|
|
|
@@ -104,7 +105,7 @@ def tth_to_q(tth, wavelength):
|
|
|
104
105
|
|
|
105
106
|
Returns
|
|
106
107
|
-------
|
|
107
|
-
q : ndarray
|
|
108
|
+
q : ``ndarray``
|
|
108
109
|
The 1D array of :math:`q` values np.array([qs]).
|
|
109
110
|
The units for the q-values are the inverse of the units of the
|
|
110
111
|
provided wavelength.
|
|
@@ -124,18 +125,18 @@ def tth_to_q(tth, wavelength):
|
|
|
124
125
|
|
|
125
126
|
|
|
126
127
|
def q_to_d(q):
|
|
127
|
-
r"""Helper function to convert q to d on independent variable axis,
|
|
128
|
-
:math:`d = \frac{2 \pi}{q}`.
|
|
128
|
+
r"""Helper function to convert q to d on independent variable axis,
|
|
129
|
+
using :math:`d = \frac{2 \pi}{q}`.
|
|
129
130
|
|
|
130
131
|
Parameters
|
|
131
132
|
----------
|
|
132
|
-
q : ndarray
|
|
133
|
+
q : ``ndarray``
|
|
133
134
|
The 1D array of :math:`q` values np.array([qs]).
|
|
134
135
|
The units of q must be reciprocal of the units of wavelength.
|
|
135
136
|
|
|
136
137
|
Returns
|
|
137
138
|
-------
|
|
138
|
-
d : ndarray
|
|
139
|
+
d : ``ndarray``
|
|
139
140
|
The 1D array of :math:`d` values np.array([ds]).
|
|
140
141
|
"""
|
|
141
142
|
if 0 in q:
|
|
@@ -144,7 +145,8 @@ def q_to_d(q):
|
|
|
144
145
|
|
|
145
146
|
|
|
146
147
|
def tth_to_d(tth, wavelength):
|
|
147
|
-
r"""Helper function to convert two-theta to d on independent variable
|
|
148
|
+
r"""Helper function to convert two-theta to d on independent variable
|
|
149
|
+
axis.
|
|
148
150
|
|
|
149
151
|
The formula is ..
|
|
150
152
|
math:: d = \frac{\lambda}{2 \sin\left(\frac{2\theta}{2}\right)}.
|
|
@@ -153,7 +155,7 @@ def tth_to_d(tth, wavelength):
|
|
|
153
155
|
|
|
154
156
|
Parameters
|
|
155
157
|
----------
|
|
156
|
-
tth : nsarray
|
|
158
|
+
tth : ``nsarray``
|
|
157
159
|
The 1D array of :math:`2\theta` values np.array([tths]).
|
|
158
160
|
The units of tth are expected in degrees.
|
|
159
161
|
|
|
@@ -162,7 +164,7 @@ def tth_to_d(tth, wavelength):
|
|
|
162
164
|
|
|
163
165
|
Returns
|
|
164
166
|
-------
|
|
165
|
-
d : nsarray
|
|
167
|
+
d : ``nsarray``
|
|
166
168
|
The 1D array of :math:`d` values np.array([ds]).
|
|
167
169
|
"""
|
|
168
170
|
q = tth_to_q(tth, wavelength)
|
|
@@ -178,16 +180,17 @@ def tth_to_d(tth, wavelength):
|
|
|
178
180
|
|
|
179
181
|
|
|
180
182
|
def d_to_q(d):
|
|
181
|
-
r"""Helper function to convert q to d using :math:`d = \frac{2
|
|
183
|
+
r"""Helper function to convert q to d using :math:`d = \frac{2
|
|
184
|
+
\pi}{q}`.
|
|
182
185
|
|
|
183
186
|
Parameters
|
|
184
187
|
----------
|
|
185
|
-
d : nsarray
|
|
188
|
+
d : ``nsarray``
|
|
186
189
|
The 1D array of :math:`d` values np.array([ds]).
|
|
187
190
|
|
|
188
191
|
Returns
|
|
189
192
|
-------
|
|
190
|
-
q : nsarray
|
|
193
|
+
q : ``nsarray``
|
|
191
194
|
The 1D array of :math:`q` values np.array([qs]).
|
|
192
195
|
The units of q must be reciprocal of the units of wavelength.
|
|
193
196
|
"""
|
|
@@ -197,7 +200,8 @@ def d_to_q(d):
|
|
|
197
200
|
|
|
198
201
|
|
|
199
202
|
def d_to_tth(d, wavelength):
|
|
200
|
-
r"""Helper function to convert d to two-theta on independent variable
|
|
203
|
+
r"""Helper function to convert d to two-theta on independent variable
|
|
204
|
+
axis.
|
|
201
205
|
|
|
202
206
|
The formula is ..
|
|
203
207
|
math:: 2\theta = 2 \arcsin\left(\frac{\lambda}{2d}\right).
|
|
@@ -206,7 +210,7 @@ def d_to_tth(d, wavelength):
|
|
|
206
210
|
|
|
207
211
|
Parameters
|
|
208
212
|
----------
|
|
209
|
-
d : nsarray
|
|
213
|
+
d : ``nsarray``
|
|
210
214
|
The 1D array of :math:`d` values np.array([ds]).
|
|
211
215
|
|
|
212
216
|
wavelength : float
|
|
@@ -214,7 +218,7 @@ def d_to_tth(d, wavelength):
|
|
|
214
218
|
|
|
215
219
|
Returns
|
|
216
220
|
-------
|
|
217
|
-
tth : nsarray
|
|
221
|
+
tth : ``nsarray``
|
|
218
222
|
The 1D array of :math:`2\theta` values np.array([tths]).
|
|
219
223
|
The units of tth are expected in degrees.
|
|
220
224
|
"""
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
|
|
3
|
+
from diffpy.utils.version import __version__ # noqa
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def main():
|
|
7
|
+
parser = argparse.ArgumentParser(
|
|
8
|
+
prog="diffpy.utils",
|
|
9
|
+
description=(
|
|
10
|
+
"Shared utilities for diffpy packages.\n\n"
|
|
11
|
+
"For more information, visit: "
|
|
12
|
+
"https://github.com/diffpy/diffpy.utils/"
|
|
13
|
+
),
|
|
14
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
parser.add_argument(
|
|
18
|
+
"--version",
|
|
19
|
+
action="store_true",
|
|
20
|
+
help="Show the program's version number and exit",
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
args = parser.parse_args()
|
|
24
|
+
|
|
25
|
+
if args.version:
|
|
26
|
+
print(f"diffpy.utils {__version__}")
|
|
27
|
+
else:
|
|
28
|
+
# Default behavior when no arguments are given
|
|
29
|
+
parser.print_help()
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
if __name__ == "__main__":
|
|
33
|
+
main()
|
diffpy/utils/version.py
CHANGED
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
# __all__ = ["__date__", "__git_commit__", "__timestamp__", "__version__"]
|
|
19
19
|
|
|
20
20
|
# obtain version information
|
|
21
|
-
from importlib.metadata import version
|
|
21
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
try:
|
|
24
|
+
__version__ = version("diffpy.utils")
|
|
25
|
+
except PackageNotFoundError:
|
|
26
|
+
__version__ = "unknown"
|
diffpy/utils/wx/gridutils.py
CHANGED
|
@@ -146,9 +146,9 @@ def quickResizeColumns(grid, indices):
|
|
|
146
146
|
|
|
147
147
|
|
|
148
148
|
def _indicesToBlocks(indices):
|
|
149
|
-
"""Convert a list of integer indices to a list of (start, stop)
|
|
150
|
-
(start, stop) tuple defines a continuous block, where
|
|
151
|
-
included in the block.
|
|
149
|
+
"""Convert a list of integer indices to a list of (start, stop)
|
|
150
|
+
tuples. The (start, stop) tuple defines a continuous block, where
|
|
151
|
+
the stop index is included in the block.
|
|
152
152
|
|
|
153
153
|
Parameters
|
|
154
154
|
----------
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diffpy.utils
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.7.0
|
|
4
4
|
Summary: General utilities for analyzing diffraction data
|
|
5
5
|
Author-email: Simon Billinge <sb2896@columbia.edu>
|
|
6
6
|
Maintainer-email: Simon Billinge <sb2896@columbia.edu>
|
|
@@ -16,12 +16,12 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
16
16
|
Classifier: Operating System :: Microsoft :: Windows
|
|
17
17
|
Classifier: Operating System :: POSIX
|
|
18
18
|
Classifier: Operating System :: Unix
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
20
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
22
22
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
23
23
|
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
24
|
-
Requires-Python: <3.
|
|
24
|
+
Requires-Python: <3.15,>=3.12
|
|
25
25
|
Description-Content-Type: text/x-rst
|
|
26
26
|
License-File: LICENSE.rst
|
|
27
27
|
License-File: LICENSE_DANSE.txt
|
|
@@ -58,6 +58,7 @@ Dynamic: license-file
|
|
|
58
58
|
:target: https://anaconda.org/conda-forge/diffpy.utils
|
|
59
59
|
|
|
60
60
|
.. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff
|
|
61
|
+
:target: https://github.com/diffpy/diffpy.utils/pulls
|
|
61
62
|
|
|
62
63
|
.. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.utils
|
|
63
64
|
:target: https://pypi.org/project/diffpy.utils/
|
|
@@ -68,8 +69,7 @@ Dynamic: license-file
|
|
|
68
69
|
.. |Tracking| image:: https://img.shields.io/badge/issue_tracking-github-blue
|
|
69
70
|
:target: https://github.com/diffpy/diffpy.utils/issues
|
|
70
71
|
|
|
71
|
-
diffpy.
|
|
72
|
-
========================================================================
|
|
72
|
+
Shared utilities for diffpy packages.
|
|
73
73
|
|
|
74
74
|
General utilities for analyzing diffraction data
|
|
75
75
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
diffpy/__init__.py,sha256=PLQx_UmkmhCTu5bPeYdp9nQBx-OJGP0s4Pz-lLQhKsU,926
|
|
2
|
+
diffpy/utils/__init__.py,sha256=CtxZ5VpVDjhWlvoGLIEjkBGtXn1Pnb4lrdhpIfzmYYc,704
|
|
3
|
+
diffpy/utils/_deprecator.py,sha256=12F5wxSBZ3WPJbFa_K5WzVqyUfJywG0k5ZyntOv2ajU,5716
|
|
4
|
+
diffpy/utils/diffraction_objects.py,sha256=wBxD-tFsV0KrKg6LIjBUOnjZdqLkOmr3Wfdlfivcqmc,23406
|
|
5
|
+
diffpy/utils/resampler.py,sha256=m6dCsaxieizjAbWftIJyxlfVLnr1AsoyefUvJixjJ58,5980
|
|
6
|
+
diffpy/utils/tools.py,sha256=gDAZJ9Da_5Fz1ps1OLAn8ykWF5-_8XC7n-W1GHKnRXs,14208
|
|
7
|
+
diffpy/utils/transforms.py,sha256=q4L17QZp0eQrvghx6AzbQlXmqbieYUrD22u7TN_kp-4,6209
|
|
8
|
+
diffpy/utils/utils_app.py,sha256=0ofHWceSaz4Sj8TtrfW0pXpVOZdecOCFZHIhnDr-mzA,779
|
|
9
|
+
diffpy/utils/validators.py,sha256=JOtQBXbmke4ShMrBKy3-Ia1rc_0qrDBJ6gf66-9ukgA,901
|
|
10
|
+
diffpy/utils/version.py,sha256=bSLZJHvxtxaB1QMgGMUl1F2DvE5wKO7spgo1od52lzA,898
|
|
11
|
+
diffpy/utils/parsers/__init__.py,sha256=gojPo8UTIHsXzTqvLxizRreJVJ4H_aJxfeKTeR_ylRs,934
|
|
12
|
+
diffpy/utils/parsers/custom_exceptions.py,sha256=aWFm1AJA_3dprNeBxb_SfQ7Mw2s3ENdzxxCy3QiZM5c,1737
|
|
13
|
+
diffpy/utils/parsers/loaddata.py,sha256=dRjd25LJYbYqEAltBsft2ApJuDuq18KlZvBHE_yyoRY,13972
|
|
14
|
+
diffpy/utils/parsers/serialization.py,sha256=GsCBNPzD3rDHaQtt4u2S5q7rzZVOKmw9PYuEutMVVZA,6856
|
|
15
|
+
diffpy/utils/wx/__init__.py,sha256=dyVlLVVqqn3pBhCTyWr3zvvIcmQjqzUCOjWAaZ2lkX4,586
|
|
16
|
+
diffpy/utils/wx/gridutils.py,sha256=mor8QT8xE3SZN74CwboLnSBfYM3PEHRzZ-AX3ZmlJfM,5158
|
|
17
|
+
diffpy_utils-3.7.0.dist-info/licenses/AUTHORS.rst,sha256=vSJE4eFlrvgzwe0UiB5nnuqWVi7HO1aTzavOgqH1ngE,181
|
|
18
|
+
diffpy_utils-3.7.0.dist-info/licenses/LICENSE.rst,sha256=Fic68qk6_MHLTR4fTua4ufK3iZH7ioQJ0x9STJAjkyk,6011
|
|
19
|
+
diffpy_utils-3.7.0.dist-info/licenses/LICENSE_DANSE.txt,sha256=mPt7YHs0xQgff18u_MPvAFqHRTTF0x9ecqubGy6Fxjs,2160
|
|
20
|
+
diffpy_utils-3.7.0.dist-info/METADATA,sha256=OXjglx56ZAmJhQrSc0hhKPi8Xx2Zq3h2p89liMt57EU,7566
|
|
21
|
+
diffpy_utils-3.7.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
22
|
+
diffpy_utils-3.7.0.dist-info/entry_points.txt,sha256=k8fC_YuQDSsgvst9b-qgOB-9lRE88howBp6Tb0i3T-M,55
|
|
23
|
+
diffpy_utils-3.7.0.dist-info/top_level.txt,sha256=34qLZyi9mxikpHepVDTMHrrNbe8VoOuz3ShYeiWA7KA,7
|
|
24
|
+
diffpy_utils-3.7.0.dist-info/RECORD,,
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
diffpy/__init__.py,sha256=PLQx_UmkmhCTu5bPeYdp9nQBx-OJGP0s4Pz-lLQhKsU,926
|
|
2
|
-
diffpy/utils/__init__.py,sha256=CtxZ5VpVDjhWlvoGLIEjkBGtXn1Pnb4lrdhpIfzmYYc,704
|
|
3
|
-
diffpy/utils/diffraction_objects.py,sha256=Qj3ka5DE-XswAo1jI3FhRYwyFrfCOWvkhBhrcBdrgj8,23294
|
|
4
|
-
diffpy/utils/resampler.py,sha256=7M5VfH9Wddpy4j3SzSiCp1txUQwLPfwC1GcdYLdjyzE,5948
|
|
5
|
-
diffpy/utils/tools.py,sha256=rAxjUrcnkQReT6uSu2X7GzqqLiEsaNArKkr-cfdkCTA,15161
|
|
6
|
-
diffpy/utils/transforms.py,sha256=FW8vJB8Ft8TM4_vwRPMwTLZBiTxgZnLn9sbW8Nz0Ef4,6145
|
|
7
|
-
diffpy/utils/validators.py,sha256=JOtQBXbmke4ShMrBKy3-Ia1rc_0qrDBJ6gf66-9ukgA,901
|
|
8
|
-
diffpy/utils/version.py,sha256=b4ZYUji9mSEb7KDhiqdJoM17rJ9mQ9IJA21joYoCvtE,825
|
|
9
|
-
diffpy/utils/parsers/__init__.py,sha256=nfOvZXjWN0nx4Yqt6BYspqdXjTeBLJcsm5X2-3SMhb4,612
|
|
10
|
-
diffpy/utils/parsers/custom_exceptions.py,sha256=aWFm1AJA_3dprNeBxb_SfQ7Mw2s3ENdzxxCy3QiZM5c,1737
|
|
11
|
-
diffpy/utils/parsers/loaddata.py,sha256=YQ7bAMHx0sGuE123BYNpg8npfruNEd4P8ZBma7Jmr48,13257
|
|
12
|
-
diffpy/utils/parsers/serialization.py,sha256=6huTN8R4zkF2V30DeQxs-knHn7ZwotKaVN5kaEM-h9c,6851
|
|
13
|
-
diffpy/utils/wx/__init__.py,sha256=dyVlLVVqqn3pBhCTyWr3zvvIcmQjqzUCOjWAaZ2lkX4,586
|
|
14
|
-
diffpy/utils/wx/gridutils.py,sha256=940h1kN5yClQwLrWLhQ6QlBvf7hVHBLqOfaDJ2QZZoc,5158
|
|
15
|
-
diffpy_utils-3.6.1rc1.dist-info/licenses/AUTHORS.rst,sha256=vSJE4eFlrvgzwe0UiB5nnuqWVi7HO1aTzavOgqH1ngE,181
|
|
16
|
-
diffpy_utils-3.6.1rc1.dist-info/licenses/LICENSE.rst,sha256=Fic68qk6_MHLTR4fTua4ufK3iZH7ioQJ0x9STJAjkyk,6011
|
|
17
|
-
diffpy_utils-3.6.1rc1.dist-info/licenses/LICENSE_DANSE.txt,sha256=mPt7YHs0xQgff18u_MPvAFqHRTTF0x9ecqubGy6Fxjs,2160
|
|
18
|
-
diffpy_utils-3.6.1rc1.dist-info/METADATA,sha256=f_OJxDgSo9k87Txtxq0zHHj4gL4iNg9K4-i89vJGaVw,7563
|
|
19
|
-
diffpy_utils-3.6.1rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
20
|
-
diffpy_utils-3.6.1rc1.dist-info/top_level.txt,sha256=34qLZyi9mxikpHepVDTMHrrNbe8VoOuz3ShYeiWA7KA,7
|
|
21
|
-
diffpy_utils-3.6.1rc1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|