reciprocalspaceship 1.0.1__py3-none-any.whl → 1.0.2__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.

Potentially problematic release.


This version of reciprocalspaceship might be problematic. Click here for more details.

@@ -52,4 +52,9 @@ from reciprocalspaceship.utils.symmetry import (
52
52
  phase_shift,
53
53
  polar_axes,
54
54
  )
55
- from reciprocalspaceship.utils.units import angstroms2ev, ev2angstroms
55
+ from reciprocalspaceship.utils.units import (
56
+ Angstroms2eV,
57
+ angstroms2ev,
58
+ ev2angstroms,
59
+ eV2Angstroms,
60
+ )
@@ -24,6 +24,11 @@ def compute_dHKL(H, cell):
24
24
  # Compress the hkls so we don't do redudant computation
25
25
  H = np.array(H, dtype=np.float32)
26
26
  hkls, inverse = np.unique(H, axis=0, return_inverse=True)
27
+
28
+ # The behavior of np.unique changed with v2.0. This block maintains v1 compatibility
29
+ if inverse.shape[-1] == 1:
30
+ inverse = inverse.squeeze(-1)
31
+
27
32
  F = np.array(cell.fractionalization_matrix.tolist()).astype(np.float64)
28
33
  dhkls = np.reciprocal(np.linalg.norm((hkls @ F), 2, 1)).astype(np.float32)
29
34
  return dhkls[inverse]
@@ -41,8 +41,6 @@ def compute_redundancy(
41
41
  if dmin is None:
42
42
  dmin = dhkl.min()
43
43
  hobs = hobs[dhkl >= dmin]
44
- decimals = 5.0 # Round after this many decimals
45
- dmin = np.floor(dmin * 10**decimals) * 10**-decimals
46
44
  hobs, isym = rs.utils.hkl_to_asu(hobs, spacegroup)
47
45
  if anomalous:
48
46
  fminus = isym % 2 == 0
@@ -107,15 +105,15 @@ def weighted_pearsonr(x, y, w):
107
105
  """
108
106
  z = np.reciprocal(w.sum(-1))
109
107
 
110
- mx = z * (w * x).sum(-1)
111
- my = z * (w * y).sum(-1)
108
+ mx = z * np.einsum("...a,...a->...", w, x)
109
+ my = z * np.einsum("...a,...a->...", w, y)
112
110
 
113
111
  dx = x - np.expand_dims(mx, axis=-1)
114
112
  dy = y - np.expand_dims(my, axis=-1)
115
113
 
116
- cxy = z * (w * dx * dy).sum(-1)
117
- cx = z * (w * dx * dx).sum(-1)
118
- cy = z * (w * dy * dy).sum(-1)
114
+ cxy = z * np.einsum("...a,...a,...a->...", w, dx, dy)
115
+ cx = z * np.einsum("...a,...a,...a->...", w, dx, dx)
116
+ cy = z * np.einsum("...a,...a,...a->...", w, dy, dy)
119
117
 
120
118
  r = cxy / np.sqrt(cx * cy)
121
119
  return r
@@ -104,6 +104,11 @@ def is_centric(H, spacegroup):
104
104
  """
105
105
  group_ops = spacegroup.operations()
106
106
  hkl, inverse = np.unique(H, axis=0, return_inverse=True)
107
+
108
+ # The behavior of np.unique changed with v2.0. This block maintains v1 compatibility
109
+ if inverse.shape[-1] == 1:
110
+ inverse = inverse.squeeze(-1)
111
+
107
112
  centric = group_ops.centric_flag_array(hkl)
108
113
  return centric[inverse]
109
114
 
@@ -1,9 +1,19 @@
1
+ import numpy as np
1
2
  from scipy.constants import Planck, c, electron_volt
2
3
 
4
+ _conversion_factor = Planck * c / 1e-10 / electron_volt
3
5
 
4
- def ev2angstroms(ev):
5
- return Planck * c / ev / 1e-10 / electron_volt
6
6
 
7
+ def eV2Angstroms(ev):
8
+ out = np.empty_like(ev)
9
+ np.divide(_conversion_factor, ev, out=out)
10
+ return out
7
11
 
8
- def angstroms2ev(angstroms):
9
- return Planck * c / angstroms / 1e-10 / electron_volt
12
+
13
+ def Angstroms2eV(angstroms):
14
+ return eV2Angstroms(angstroms)
15
+
16
+
17
+ # Add legacy aliases
18
+ ev2angstroms = eV2Angstroms
19
+ angstroms2ev = Angstroms2eV
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: reciprocalspaceship
3
- Version: 1.0.1
3
+ Version: 1.0.2
4
4
  Summary: Tools for exploring reciprocal space
5
5
  Home-page: https://rs-station.github.io/reciprocalspaceship/
6
6
  Author: Kevin M. Dalton, Jack B. Greisman
@@ -9,7 +9,6 @@ License: MIT
9
9
  Project-URL: Bug Tracker, https://github.com/rs-station/reciprocalspaceship/issues
10
10
  Project-URL: Documentation, https://rs-station.github.io/reciprocalspaceship/
11
11
  Project-URL: Source Code, https://github.com/rs-station/reciprocalspaceship
12
- Platform: UNKNOWN
13
12
  Classifier: Development Status :: 3 - Alpha
14
13
  Classifier: Intended Audience :: Developers
15
14
  Classifier: Intended Audience :: Science/Research
@@ -18,36 +17,37 @@ Classifier: Topic :: Scientific/Engineering :: Chemistry
18
17
  Classifier: Topic :: Scientific/Engineering :: Physics
19
18
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
20
19
  Classifier: Programming Language :: Python
21
- Requires-Python: >3.7
20
+ Requires-Python: >=3.9
22
21
  License-File: LICENSE
23
- Requires-Dist: gemmi <=0.6.2,>=0.5.5
24
- Requires-Dist: pandas <=2.0.3,>=1.4.0
22
+ Requires-Dist: gemmi<=0.6.6,>=0.5.5
23
+ Requires-Dist: pandas<=2.2.2,>=2.2.2
25
24
  Requires-Dist: numpy
26
25
  Requires-Dist: scipy
27
26
  Requires-Dist: ipython
28
27
  Provides-Extra: dev
29
- Requires-Dist: pytest ; extra == 'dev'
30
- Requires-Dist: pytest-cov ; extra == 'dev'
31
- Requires-Dist: pytest-xdist ; extra == 'dev'
32
- Requires-Dist: sphinx ; extra == 'dev'
33
- Requires-Dist: sphinx-rtd-theme ; extra == 'dev'
34
- Requires-Dist: nbsphinx ; extra == 'dev'
35
- Requires-Dist: sphinx-design ; extra == 'dev'
36
- Requires-Dist: sphinxcontrib-autoprogram ; extra == 'dev'
37
- Requires-Dist: autodocsumm ; extra == 'dev'
38
- Requires-Dist: jupyter ; extra == 'dev'
39
- Requires-Dist: tqdm ; extra == 'dev'
40
- Requires-Dist: matplotlib ; extra == 'dev'
41
- Requires-Dist: seaborn ; extra == 'dev'
42
- Requires-Dist: celluloid ; extra == 'dev'
43
- Requires-Dist: scikit-image ; extra == 'dev'
28
+ Requires-Dist: pytest; extra == "dev"
29
+ Requires-Dist: pytest-cov; extra == "dev"
30
+ Requires-Dist: pytest-xdist; extra == "dev"
31
+ Requires-Dist: ray; extra == "dev"
32
+ Requires-Dist: sphinx; extra == "dev"
33
+ Requires-Dist: sphinx-rtd-theme; extra == "dev"
34
+ Requires-Dist: nbsphinx; extra == "dev"
35
+ Requires-Dist: sphinx-design; extra == "dev"
36
+ Requires-Dist: sphinxcontrib-autoprogram; extra == "dev"
37
+ Requires-Dist: autodocsumm; extra == "dev"
38
+ Requires-Dist: jupyter; extra == "dev"
39
+ Requires-Dist: tqdm; extra == "dev"
40
+ Requires-Dist: matplotlib; extra == "dev"
41
+ Requires-Dist: seaborn; extra == "dev"
42
+ Requires-Dist: celluloid; extra == "dev"
43
+ Requires-Dist: scikit-image; extra == "dev"
44
44
  Provides-Extra: examples
45
- Requires-Dist: jupyter ; extra == 'examples'
46
- Requires-Dist: tqdm ; extra == 'examples'
47
- Requires-Dist: matplotlib ; extra == 'examples'
48
- Requires-Dist: seaborn ; extra == 'examples'
49
- Requires-Dist: celluloid ; extra == 'examples'
50
- Requires-Dist: scikit-image ; extra == 'examples'
45
+ Requires-Dist: jupyter; extra == "examples"
46
+ Requires-Dist: tqdm; extra == "examples"
47
+ Requires-Dist: matplotlib; extra == "examples"
48
+ Requires-Dist: seaborn; extra == "examples"
49
+ Requires-Dist: celluloid; extra == "examples"
50
+ Requires-Dist: scikit-image; extra == "examples"
51
51
 
52
52
 
53
53
  ``reciprocalspaceship`` provides a ``pandas``-style interface for
@@ -68,5 +68,3 @@ Features of this library include:
68
68
  use space groups, unit cell parameters, and crystallographic symmetry
69
69
  operations.
70
70
  - Support for reading and writing MTZ reflection files.
71
-
72
-
@@ -1,46 +1,46 @@
1
- reciprocalspaceship/VERSION,sha256=ROFh5ElcrCz3hYBD6eZBjpV58N3ProJvmjcmIpaM4GY,6
1
+ reciprocalspaceship/VERSION,sha256=n9KGQtOsoZHlx_wjg8_W-rsqrIdD8Cnau4mJrFhOMbw,6
2
2
  reciprocalspaceship/__init__.py,sha256=69LJFzMjF05nmlwROByI53LTwM37sgrgYAp5k1n6wCs,1842
3
3
  reciprocalspaceship/concat.py,sha256=v2eg8-RBiNLYHkkPDeaozh3HvGCaFbmlC15FaeNJMgY,1695
4
4
  reciprocalspaceship/dataseries.py,sha256=ibU1bHMd8zORFxRtDswtvLh_n-miAyBqO0ghLmY29Js,6188
5
- reciprocalspaceship/dataset.py,sha256=g7sQ9eMD3XM2jQ6LkQcuUtzhp1qVPXpwcYph_uovWOA,56836
6
- reciprocalspaceship/decorators.py,sha256=pMdbyH6_VAPGz5K4rUVXQ2zsjvN_TbPaPaO930ANmi0,5592
5
+ reciprocalspaceship/dataset.py,sha256=YUcpvaTifmlQeR4qewHkzo-RSz6DOq_xLalFRXa_O94,57008
6
+ reciprocalspaceship/decorators.py,sha256=U2gfm29infWHVGzQnfnpRsjxOihDD6Iah7oHd4uD8jk,5612
7
7
  reciprocalspaceship/algorithms/__init__.py,sha256=r5IYCGswTHXpSs9Q7c6PfEz8_P8d1fEei2SyTkp5aYY,258
8
8
  reciprocalspaceship/algorithms/intensity.py,sha256=iDHaqqrMAe0v-aTVT5jf54JwkNQLSQ7HhezPw6qZndg,2657
9
9
  reciprocalspaceship/algorithms/merge.py,sha256=iwPrDfjtliBwLqEzHbcIfoTkvS_0s2_CszS5IfrEUXI,2154
10
- reciprocalspaceship/algorithms/scale_merged_intensities.py,sha256=hliqToBoz9CHluC6FtgMARDOQc1RG87H8IIUuHEgBno,11130
10
+ reciprocalspaceship/algorithms/scale_merged_intensities.py,sha256=hNKKISCCDvchail1PZ_0r6sq1Rbgoraqaz1aDCayTYQ,11269
11
11
  reciprocalspaceship/commandline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  reciprocalspaceship/commandline/mtzdump.py,sha256=JBg_W-CWQ6rbOOVmtK7TsErFXhCBR5pmC5RRSCapEZg,2939
13
13
  reciprocalspaceship/dtypes/__init__.py,sha256=cO0M2F6pO_0jtqx-MlkbzqxLSmK1Ibmon5p_ksWmcbk,1038
14
14
  reciprocalspaceship/dtypes/base.py,sha256=1X56U4jKt_wjVkW930C9gP2Di0RpCMDZsDKNTxYle5I,1052
15
- reciprocalspaceship/dtypes/floating.py,sha256=EhJsAY3K5WdjfUS5zjoeiM1DRui_cMMhQaxJ2FY9rMQ,19922
15
+ reciprocalspaceship/dtypes/floating.py,sha256=jOQ25GZEE4QromaJA3_oeu0Tkjq1iT4dHCke_7W6TYo,19675
16
16
  reciprocalspaceship/dtypes/inference.py,sha256=jLgF8VfKtITGRzQbfeyZzEoJ1fQlbHXB_gXIJ9-AQxk,3029
17
- reciprocalspaceship/dtypes/integer.py,sha256=qArB8csctxdN5euAP9V7VgvR-LaXYzFNgZ1efCHxEWA,16085
18
- reciprocalspaceship/dtypes/internals.py,sha256=Zh21mUpao1-0kIhAGYXzpVY36y68Vt3rYjpI3vOl_sw,40507
17
+ reciprocalspaceship/dtypes/integer.py,sha256=fPaLTWfMsJ-wuEPkm9oEJez3NDqzB4XKVHFRFEb585A,15816
18
+ reciprocalspaceship/dtypes/internals.py,sha256=BkkqUDEvTTlebLXjcu7EiQV295-qR7GdMJXqrOKbbU0,47596
19
19
  reciprocalspaceship/dtypes/summarize.py,sha256=1w6-N3odFcI3ZEQP5qgrog6ucbGjO71vSgabmjklkbc,1114
20
20
  reciprocalspaceship/io/__init__.py,sha256=ZMQ_rGfLmfzijbErnjEFphJuZokPvZyyVRk65DC0gLA,400
21
21
  reciprocalspaceship/io/ccp4map.py,sha256=yztiHPTdyR9FiCKRg-eVmL-_MyZTKThPI9uuHuuPF_0,1029
22
- reciprocalspaceship/io/crystfel.py,sha256=sFuMqlcgkWEa9LBNFZSajbZb66dvSsRdmhyvSqCMEIA,8695
22
+ reciprocalspaceship/io/crystfel.py,sha256=lKpGzM2OLNXBjy6njwahtk1IsI3MH0edaGSmaQ6NbGk,21662
23
23
  reciprocalspaceship/io/csv.py,sha256=A2ZnqAnFwFUQskF7_3EsQAPCcrJ5KEgjhZls6MDViv8,1194
24
24
  reciprocalspaceship/io/mtz.py,sha256=8XqFVoSJz47vjK-kEzwSu7NxwQnEyyHd0pgt1CaBavM,8074
25
25
  reciprocalspaceship/io/pickle.py,sha256=clnSTK8T2O_d7midS_E54WHmXEHrL10d386gWx7ztsM,818
26
26
  reciprocalspaceship/io/precognition.py,sha256=DWRE2erXPVpm9-y5DjIWUHfmv9jZcsqoa47ienp1Sao,3641
27
27
  reciprocalspaceship/stats/__init__.py,sha256=jdAWbpD_CKAn0W0sO_MKSnTu3bZSoLAXgb1_Y6jDMzk,197
28
28
  reciprocalspaceship/stats/completeness.py,sha256=1QM-Ac_V58nTLJoewbOK5CL69qsb0C0sc8L0c59WorQ,6702
29
- reciprocalspaceship/utils/__init__.py,sha256=IS3C9L1IAFnyzK4wSXGl49AWsOM5Yq1WLx83iZ9K0HU,1665
29
+ reciprocalspaceship/utils/__init__.py,sha256=bKJwbkxXa-TX2etIQgIESKkv9kdag1rHL77JLhI-2B8,1714
30
30
  reciprocalspaceship/utils/asu.py,sha256=WwxvIq-_QEF2UvyELuNudVo53daty9wiN-vaOYAUbKI,8680
31
31
  reciprocalspaceship/utils/binning.py,sha256=CHf5z8EsHSg34ZgC-yM_8Gd3D2BB8cqTtHAf7vwfgLo,2786
32
- reciprocalspaceship/utils/cell.py,sha256=GtPjtonimLHGcM9wnREOpdLTu_9JuwNltA2j5DPMiS0,1893
32
+ reciprocalspaceship/utils/cell.py,sha256=aNIaugA3F8CRs9n8Ck0Rjc8YI7qHZcW3lJPE7yvj0dk,2053
33
33
  reciprocalspaceship/utils/grid.py,sha256=xB7sw1xrhgzFojrVHbC_uVBT3NMTBsvKsCqaRrVfvTQ,1893
34
34
  reciprocalspaceship/utils/math.py,sha256=m6Iq9u0fjiieftzjQPAEHTN2htBIOwLhBCJdrcIN5Ao,1019
35
35
  reciprocalspaceship/utils/phases.py,sha256=zyiE99bq-TV_4aI6ZhBi4MLAvKwE3Sx1dFqppJL5rkE,2438
36
36
  reciprocalspaceship/utils/rfree.py,sha256=qFgepLOfgdU-cvZIMu8WfzlFExTc4jILff2ro7iu8FQ,3411
37
- reciprocalspaceship/utils/stats.py,sha256=1ShlFe3PogRq4rfmlL_ks6J2qkB2TCxVHdMgil3d0a0,3689
38
- reciprocalspaceship/utils/structurefactors.py,sha256=xybipMkn61jr6rNANZW7ZXau04zNRtBOaqdr81ZiD9U,3526
37
+ reciprocalspaceship/utils/stats.py,sha256=p_1R3bTVVAVlDWh-hzcurlT8GOHkJA8ovFuQjD0w5AY,3681
38
+ reciprocalspaceship/utils/structurefactors.py,sha256=ZW6CVPn_04dxay0DDnA0-byUrZnGraQ0kItqN1m5F3k,3686
39
39
  reciprocalspaceship/utils/symmetry.py,sha256=xsYmEUo0PTH57-kctJdUq_-k14ci5LUGeG5LwzmjjPU,2963
40
- reciprocalspaceship/utils/units.py,sha256=e6bLfED1LcDdMyOI7G09ZDBD8HlBYlZbjup5e0GM8ss,217
40
+ reciprocalspaceship/utils/units.py,sha256=ng-2hzZBERYo9bnQDPr-HLr7xPah-JzOthfrpHH816Y,388
41
41
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  tests/conftest.py,sha256=bQZClqzu3lonsI01OdP5X38asMd7F76fAGzlWWYPXAI,3930
43
- tests/test_dataseries.py,sha256=2mzzW_SdTsGnyr5cOhjuLLccnUlE_XaFWuvTS_xcWII,3304
43
+ tests/test_dataseries.py,sha256=go-q5tT8lLq3tlRVnmrwUytK7PlaoKs3CBPjWryGfGg,3309
44
44
  tests/test_dataset.py,sha256=dMFW6-pCs1rjIYEqbfstVqFRiYwKfz5rHlncVL9grQg,22231
45
45
  tests/test_dataset_anomalous.py,sha256=LQb1inSS_oDbVYEIyyx_GBFAkXGlEQYZ-ZhpwMeyMmQ,6963
46
46
  tests/test_dataset_binning.py,sha256=NgD_vy-TUh3vQrUVgysVBSZu75xN66LR6hRu2_qAUTs,3564
@@ -50,9 +50,9 @@ tests/test_dataset_preserve_attributes.py,sha256=gwQQJGsiBZld2KKmLrcMkuc9zesR3FD
50
50
  tests/test_dataset_symops.py,sha256=PV86tLu1qDACuk-YqjYQszk8Ctb0-h_NsQRnuCDFnOU,10864
51
51
  tests/test_decorators.py,sha256=ExR7mCU0iIqhHo4ho6ywPrZIEaGcsElaI4jtH9o5afE,5331
52
52
  tests/test_summarize_mtz_dtypes.py,sha256=JE0ctXMWii1AV-cmKogF6hjb8NCHrgvxNZ0ZRCHh-Ho,696
53
- reciprocalspaceship-1.0.1.dist-info/LICENSE,sha256=E22aZlYy5qJsJCJ94EkO_Vt3COio5UcLg59dZLPam7I,1093
54
- reciprocalspaceship-1.0.1.dist-info/METADATA,sha256=xFjMfolINcdDUM-kvmo0YXHTwZcNEy1wjMgmGuBTyZk,3063
55
- reciprocalspaceship-1.0.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
56
- reciprocalspaceship-1.0.1.dist-info/entry_points.txt,sha256=E2msBLAQZuAfS8Bk_fdzZTLFgQR-l5AlwhPiL_ip1Z0,77
57
- reciprocalspaceship-1.0.1.dist-info/top_level.txt,sha256=tOo679MsLFS7iwiYZDwnKTuTpJLYVFBk6g9xnnB_s-w,26
58
- reciprocalspaceship-1.0.1.dist-info/RECORD,,
53
+ reciprocalspaceship-1.0.2.dist-info/LICENSE,sha256=E22aZlYy5qJsJCJ94EkO_Vt3COio5UcLg59dZLPam7I,1093
54
+ reciprocalspaceship-1.0.2.dist-info/METADATA,sha256=36KZFStMfUhplc6K1h7vpF-FVJ-TrExqWI3XXdW5oTE,3056
55
+ reciprocalspaceship-1.0.2.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
56
+ reciprocalspaceship-1.0.2.dist-info/entry_points.txt,sha256=Bqjl2J8UrG4UAHHhPbdH5r-xYaOdLCEdyRH6zJ9joDw,76
57
+ reciprocalspaceship-1.0.2.dist-info/top_level.txt,sha256=tOo679MsLFS7iwiYZDwnKTuTpJLYVFBk6g9xnnB_s-w,26
58
+ reciprocalspaceship-1.0.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.2)
2
+ Generator: bdist_wheel (0.44.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,3 +1,2 @@
1
1
  [console_scripts]
2
2
  rs.mtzdump = reciprocalspaceship.commandline.mtzdump:main
3
-
tests/test_dataseries.py CHANGED
@@ -39,7 +39,7 @@ def test_constructor_expanddim(data, series_name, frame_name, dtype):
39
39
 
40
40
  assert isinstance(d, rs.DataSet)
41
41
  assert len(d.columns) == 1
42
- assert isinstance(d.dtypes[0], type(ds.dtype))
42
+ assert isinstance(d.dtypes.iloc[0], type(ds.dtype))
43
43
 
44
44
  # Test hierarchy for column naming
45
45
  if frame_name: