diffpy.structure 3.3.0__py3-none-any.whl → 3.3.1__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.
Files changed (43) hide show
  1. diffpy/__init__.py +1 -10
  2. diffpy/structure/__init__.py +3 -5
  3. diffpy/structure/_legacy_importer.py +3 -3
  4. diffpy/structure/apps/__init__.py +1 -3
  5. diffpy/structure/apps/anyeye.py +4 -5
  6. diffpy/structure/apps/transtru.py +2 -2
  7. diffpy/structure/atom.py +10 -8
  8. diffpy/structure/expansion/__init__.py +0 -1
  9. diffpy/structure/expansion/makeellipsoid.py +1 -3
  10. diffpy/structure/expansion/shapeutils.py +1 -2
  11. diffpy/structure/expansion/supercell_mod.py +3 -5
  12. diffpy/structure/lattice.py +4 -3
  13. diffpy/structure/mmlibspacegroups.py +1 -2
  14. diffpy/structure/parsers/__init__.py +0 -1
  15. diffpy/structure/parsers/p_auto.py +8 -6
  16. diffpy/structure/parsers/p_cif.py +14 -9
  17. diffpy/structure/parsers/p_discus.py +4 -6
  18. diffpy/structure/parsers/p_pdb.py +2 -4
  19. diffpy/structure/parsers/p_pdffit.py +1 -3
  20. diffpy/structure/parsers/p_rawxyz.py +2 -3
  21. diffpy/structure/parsers/p_xcfg.py +4 -3
  22. diffpy/structure/parsers/p_xyz.py +4 -5
  23. diffpy/structure/parsers/parser_index_mod.py +0 -1
  24. diffpy/structure/parsers/structureparser.py +1 -3
  25. diffpy/structure/pdffitstructure.py +1 -3
  26. diffpy/structure/sgtbxspacegroups.py +3 -3
  27. diffpy/structure/spacegroupmod.py +6 -5
  28. diffpy/structure/spacegroups.py +5 -3
  29. diffpy/structure/structure.py +25 -20
  30. diffpy/structure/structureerrors.py +1 -3
  31. diffpy/structure/symmetryutilities.py +31 -21
  32. diffpy/structure/utils.py +3 -4
  33. diffpy/structure/version.py +3 -4
  34. {diffpy.structure-3.3.0.dist-info → diffpy_structure-3.3.1.dist-info}/METADATA +13 -10
  35. diffpy_structure-3.3.1.dist-info/RECORD +42 -0
  36. {diffpy.structure-3.3.0.dist-info → diffpy_structure-3.3.1.dist-info}/WHEEL +1 -1
  37. {diffpy.structure-3.3.0.dist-info → diffpy_structure-3.3.1.dist-info/licenses}/LICENSE.rst +1 -1
  38. diffpy.structure-3.3.0.dist-info/RECORD +0 -42
  39. {diffpy.structure-3.3.0.dist-info → diffpy_structure-3.3.1.dist-info}/entry_points.txt +0 -0
  40. {diffpy.structure-3.3.0.dist-info → diffpy_structure-3.3.1.dist-info/licenses}/AUTHORS.rst +0 -0
  41. /diffpy.structure-3.3.0.dist-info/LICENSE_DANSE.rst → /diffpy_structure-3.3.1.dist-info/licenses/LICENSE-DANSE.rst +0 -0
  42. /diffpy.structure-3.3.0.dist-info/LICENSE_pymmlib.rst → /diffpy_structure-3.3.1.dist-info/licenses/LICENSE-pymmlib.rst +0 -0
  43. {diffpy.structure-3.3.0.dist-info → diffpy_structure-3.3.1.dist-info}/top_level.txt +0 -0
diffpy/__init__.py CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  ##############################################################################
3
3
  #
4
- # (c) 2024 The Trustees of Columbia University in the City of New York.
4
+ # (c) 2024-2025 The Trustees of Columbia University in the City of New York.
5
5
  # All rights reserved.
6
6
  #
7
7
  # File coded by: Billinge Group members and community contributors.
@@ -12,12 +12,3 @@
12
12
  # See LICENSE.rst for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Blank namespace package for module diffpy."""
17
-
18
-
19
- from pkgutil import extend_path
20
-
21
- __path__ = extend_path(__path__, __name__)
22
-
23
- # End of file
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env python
2
2
  ##############################################################################
3
3
  #
4
- # (c) 2024 The Trustees of Columbia University in the City of New York.
4
+ # (c) 2024-2025 The Trustees of Columbia University in the City of New York.
5
5
  # All rights reserved.
6
6
  #
7
- # File coded by: Billinge Group members and community contributors.
7
+ # File coded by: Chris Farrow, Pavol Juhas, Simon Billinge, Billinge Group members.
8
8
  #
9
9
  # See GitHub contributions for a more detailed list of contributors.
10
10
  # https://github.com/diffpy/diffpy.structure/graphs/contributors
@@ -12,9 +12,7 @@
12
12
  # See LICENSE.rst for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """
17
- Crystal structure container and parsers for structure formats.
15
+ """Crystal structure container and parsers for structure formats.
18
16
 
19
17
  Classes related to the structure of materials:
20
18
  * Atom
@@ -12,9 +12,8 @@
12
12
  # See LICENSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """
17
- Support import of old camel-case module names with DeprecationWarning.
15
+ """Support import of old camel-case module names with
16
+ DeprecationWarning.
18
17
 
19
18
  The imported camel-case modules are aliases for the current module
20
19
  instances. Their `__name__` attributes are thus all in lower-case.
@@ -61,6 +60,7 @@ class FindRenamedStructureModule(importlib.abc.MetaPathFinder):
61
60
 
62
61
  class MapRenamedStructureModule(importlib.abc.Loader):
63
62
  """Loader for old camel-case module names.
63
+
64
64
  Import the current module and alias it under the old name.
65
65
  """
66
66
 
@@ -12,6 +12,4 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Script applications that use the `diffpy.structure` package.
17
- """
15
+ """Script applications that use the `diffpy.structure` package."""
@@ -12,9 +12,7 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """
17
- Anyeye view structure file in atomeye.
15
+ """Anyeye view structure file in atomeye.
18
16
 
19
17
  Usage: ``anyeye [options] strufile``
20
18
 
@@ -65,7 +63,8 @@ pd = {
65
63
 
66
64
 
67
65
  def usage(style=None):
68
- """Show usage info, for ``style=="brief"`` show only first 2 lines."""
66
+ """Show usage info, for ``style=="brief"`` show only first 2
67
+ lines."""
69
68
  import os.path
70
69
 
71
70
  myname = os.path.basename(sys.argv[0])
@@ -175,7 +174,7 @@ def cleanUp(pd):
175
174
 
176
175
 
177
176
  def parseFormula(formula):
178
- """Parse chemical formula and return a list of elements"""
177
+ """Parse chemical formula and return a list of elements."""
179
178
  # remove all blanks
180
179
  formula = re.sub(r"\s", "", formula)
181
180
  if not re.match("^[A-Z]", formula):
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Translate structure file to different format.
17
16
 
18
17
  Usage: ``transtru INFMT..OUTFMT strufile``
@@ -44,7 +43,8 @@ from diffpy.structure.structureerrors import StructureFormatError
44
43
 
45
44
 
46
45
  def usage(style=None):
47
- """Show usage info, for ``style=="brief"`` show only first 2 lines."""
46
+ """Show usage info, for ``style=="brief"`` show only first 2
47
+ lines."""
48
48
  import os.path
49
49
 
50
50
  myname = os.path.basename(sys.argv[0])
diffpy/structure/atom.py CHANGED
@@ -12,10 +12,8 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """
17
- Provide class Atom for managing properties of an atom in structure model.
18
- """
15
+ """Provide class Atom for managing properties of an atom in structure
16
+ model."""
19
17
 
20
18
  import numpy
21
19
 
@@ -176,7 +174,8 @@ class Atom(object):
176
174
  return msd
177
175
 
178
176
  def msdCart(self, vc):
179
- """Calculate mean square displacement along the Cartesian vector.
177
+ """Calculate mean square displacement along the Cartesian
178
+ vector.
180
179
 
181
180
  Parameters
182
181
  ----------
@@ -252,7 +251,8 @@ class Atom(object):
252
251
 
253
252
  @property
254
253
  def xyz_cartn(self):
255
- """numpy.ndarray: Atom position in absolute Cartesian coordinates.
254
+ """numpy.ndarray: Atom position in absolute Cartesian
255
+ coordinates.
256
256
 
257
257
  This is computed from fractional coordinates `xyz` and the
258
258
  current `lattice` setup. Assignment to *xyz_cartn* or
@@ -301,7 +301,8 @@ class Atom(object):
301
301
 
302
302
  @property
303
303
  def U(self):
304
- """numpy.ndarray : The 3x3 matrix of anisotropic atomic displacements.
304
+ """numpy.ndarray : The 3x3 matrix of anisotropic atomic
305
+ displacements.
305
306
 
306
307
  For isotropic displacements (when `anisotropy` is ``False``)
307
308
  assignment to *U* uses only the first ``Unew[0, 0]`` element
@@ -537,7 +538,8 @@ class _AtomCartesianCoordinates(numpy.ndarray):
537
538
  return
538
539
 
539
540
  def __array_wrap__(self, out_arr, context=None, return_scalar=None):
540
- """Ensure math operations on this type yield standard numpy array."""
541
+ """Ensure math operations on this type yield standard numpy
542
+ array."""
541
543
  return out_arr.view(numpy.ndarray)
542
544
 
543
545
 
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Methods and classes for manipulating `Structure` instances.
17
16
 
18
17
  Package content:
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Make a spheroid nanoparticle from a template structure."""
17
16
 
18
17
  from math import ceil
@@ -42,8 +41,7 @@ def makeSphere(S, radius):
42
41
 
43
42
 
44
43
  def makeEllipsoid(S, a, b=None, c=None):
45
- """
46
- Cut a `Structure` out of another one.
44
+ """Cut a `Structure` out of another one.
47
45
 
48
46
  Parameters
49
47
  ----------
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Utilities for making shapes."""
17
16
 
18
17
 
@@ -33,7 +32,7 @@ def findCenter(S):
33
32
  """
34
33
  best = -1
35
34
  bestd = len(S)
36
- center = [0.5, 0.5, 0.5] # the cannonical center
35
+ center = [0.5, 0.5, 0.5] # the canonical center
37
36
 
38
37
  for i in range(len(S)):
39
38
  d = S.lattice.dist(S[i].xyz, center)
@@ -12,9 +12,8 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """This module contains functions for simple `Structure` manipulation.
17
- """
15
+ """This module contains functions for simple `Structure`
16
+ manipulation."""
18
17
 
19
18
  import numpy
20
19
 
@@ -22,8 +21,7 @@ from diffpy.structure import Atom, Structure
22
21
 
23
22
 
24
23
  def supercell(S, mno):
25
- """
26
- Perform supercell expansion for a `Structure`.
24
+ """Perform supercell expansion for a `Structure`.
27
25
 
28
26
  New `lattice` parameters are multiplied and fractional coordinates
29
27
  divided by corresponding multiplier. New `Atoms` are grouped with
@@ -12,9 +12,8 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Class Lattice stores properties and provides simple operations in lattice
17
- coordinate system.
15
+ """Class Lattice stores properties and provides simple operations in
16
+ lattice coordinate system.
18
17
 
19
18
  Attributes
20
19
  ----------
@@ -442,6 +441,7 @@ class Lattice(object):
442
441
 
443
442
  def abcABG(self):
444
443
  """Return the cell parameters in the standard setting.
444
+
445
445
  Returns
446
446
  -------
447
447
  tuple :
@@ -452,6 +452,7 @@ class Lattice(object):
452
452
 
453
453
  def reciprocal(self):
454
454
  """Return the reciprocal lattice of the current lattice.
455
+
455
456
  Returns
456
457
  -------
457
458
  Lattice
@@ -3,8 +3,7 @@
3
3
  # This code is part of the PyMMLib distribution and governed by
4
4
  # its license.Please see the LICENSE_pymmlib file that should have been
5
5
  # included as part of this package.
6
- """Space groups defined as a part of the pymmlib.
7
- """
6
+ """Space groups defined as a part of the pymmlib."""
8
7
 
9
8
  from diffpy.structure.spacegroupmod import (
10
9
  Rot_mX_mXY_mZ,
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Conversion plugins for various structure formats.
17
16
 
18
17
  The recognized structure formats are defined by subclassing `StructureParser`,
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Parser for automatic file format detection.
17
16
 
18
17
  This Parser does not provide the the `toLines()` method.
@@ -54,6 +53,7 @@ class P_auto(StructureParser):
54
53
  # parseLines helpers
55
54
  def _getOrderedFormats(self):
56
55
  """Build a list of relevance ordered structure formats.
56
+
57
57
  This only works when `self.filename` has a known extension.
58
58
  """
59
59
  from diffpy.structure.parsers import inputFormats
@@ -77,7 +77,8 @@ class P_auto(StructureParser):
77
77
  return ofmts
78
78
 
79
79
  def parseLines(self, lines):
80
- """Detect format and create `Structure` instance from a list of lines.
80
+ """Detect format and create `Structure` instance from a list of
81
+ lines.
81
82
 
82
83
  Set format attribute to the detected file format.
83
84
 
@@ -119,7 +120,8 @@ class P_auto(StructureParser):
119
120
  return self._wrapParseMethod("parse", s)
120
121
 
121
122
  def parseFile(self, filename):
122
- """Detect format and create Structure instance from an existing file.
123
+ """Detect format and create Structure instance from an existing
124
+ file.
123
125
 
124
126
  Set format attribute to the detected file format.
125
127
 
@@ -144,9 +146,9 @@ class P_auto(StructureParser):
144
146
  return self._wrapParseMethod("parseFile", filename)
145
147
 
146
148
  def _wrapParseMethod(self, method, *args, **kwargs):
147
- """A helper evaluator method that try the specified parse method with
148
- each registered structure parser and return the first successful
149
- resul.
149
+ """A helper evaluator method that try the specified parse method
150
+ with each registered structure parser and return the first
151
+ successful result.
150
152
 
151
153
  Structure parsers that match structure file extension are
152
154
  tried first.
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Parser for basic CIF file format.
17
16
 
18
17
  Attributes
@@ -33,6 +32,7 @@ import sys
33
32
  from contextlib import contextmanager
34
33
 
35
34
  import numpy
35
+ from CifFile.yapps3_compiled_rt import YappsSyntaxError
36
36
 
37
37
  from diffpy.structure import Atom, Lattice, Structure
38
38
  from diffpy.structure.parsers import StructureParser
@@ -267,7 +267,8 @@ class P_cif(StructureParser):
267
267
  _tr_atom_site_aniso_B_23 = staticmethod(_tr_atom_site_aniso_B_23)
268
268
 
269
269
  def _get_atom_setters(cifloop):
270
- """Static method for finding translators of CifLoop items to data in `Atom` instance.
270
+ """Static method for finding translators of CifLoop items to
271
+ data in `Atom` instance.
271
272
 
272
273
  Parameters
273
274
  ----------
@@ -408,7 +409,7 @@ class P_cif(StructureParser):
408
409
  # stop after reading the first structure
409
410
  if self.stru is not None:
410
411
  break
411
- except (StarError, ValueError, IndexError) as err:
412
+ except (YappsSyntaxError, StarError, ValueError, IndexError) as err:
412
413
  exc_type, exc_value, exc_traceback = sys.exc_info()
413
414
  emsg = str(err).strip()
414
415
  e = StructureFormatError(emsg)
@@ -416,8 +417,8 @@ class P_cif(StructureParser):
416
417
  return self.stru
417
418
 
418
419
  def _parseCifBlock(self, blockname):
419
- """Translate CIF file block, skip blocks without `_atom_site_label`.
420
- Updates data members `stru`, `eau`.
420
+ """Translate CIF file block, skip blocks without
421
+ `_atom_site_label`. Updates data members `stru`, `eau`.
421
422
 
422
423
  Parameters
423
424
  ----------
@@ -505,7 +506,8 @@ class P_cif(StructureParser):
505
506
  return
506
507
 
507
508
  def _parse_atom_site_aniso_label(self, block):
508
- """Obtain value of anisotropic thermal displacements from a `CifBlock`.
509
+ """Obtain value of anisotropic thermal displacements from a
510
+ `CifBlock`.
509
511
 
510
512
  This method updates `U` members of `Atom` instances in `self.stru`.
511
513
  The `labelindex` dictionary has to be defined beforehand.
@@ -599,7 +601,8 @@ class P_cif(StructureParser):
599
601
  return
600
602
 
601
603
  def _expandAsymmetricUnit(self, block):
602
- """Perform symmetry expansion of `self.stru` using `self.spacegroup`.
604
+ """Perform symmetry expansion of `self.stru` using
605
+ `self.spacegroup`.
603
606
 
604
607
  This method updates data in `stru` and `eau`.
605
608
 
@@ -763,7 +766,8 @@ rx_float = re.compile(r"[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?")
763
766
 
764
767
 
765
768
  def leading_float(s, d=0.0):
766
- """Extract the first float from a string and ignore trailing characters.
769
+ """Extract the first float from a string and ignore trailing
770
+ characters.
767
771
 
768
772
  Useful for extracting values from "value(std)" syntax.
769
773
 
@@ -863,7 +867,8 @@ def getParser(eps=None):
863
867
 
864
868
  @contextmanager
865
869
  def _suppressCifParserOutput():
866
- """Context manager which suppresses diagnostic messages from CIF parser."""
870
+ """Context manager which suppresses diagnostic messages from CIF
871
+ parser."""
867
872
  from CifFile import yapps3_compiled_rt
868
873
 
869
874
  print_error = yapps3_compiled_rt.print_error
@@ -12,9 +12,7 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Parser for DISCUS structure format
17
- """
15
+ """Parser for DISCUS structure format."""
18
16
 
19
17
  import sys
20
18
  from functools import reduce
@@ -25,8 +23,8 @@ from diffpy.structure.structureerrors import StructureFormatError
25
23
 
26
24
 
27
25
  class P_discus(StructureParser):
28
- """Parser for DISCUS structure format. The parser chokes
29
- on molecule and generator records.
26
+ """Parser for DISCUS structure format. The parser chokes on molecule
27
+ and generator records.
30
28
 
31
29
  Attributes
32
30
  ----------
@@ -274,7 +272,7 @@ class P_discus(StructureParser):
274
272
  Raises
275
273
  ------
276
274
  StructureFormatError
277
- Unkown record.
275
+ Unknown record.
278
276
  """
279
277
  self.ignored_lines.append(self.line)
280
278
  return
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Basic parser for PDB structure format.
17
16
 
18
17
  Note
@@ -281,9 +280,8 @@ class P_pdb(StructureParser):
281
280
  return lines
282
281
 
283
282
  def atomLines(self, stru, idx):
284
- """Build `ATOM` records and possibly `SIGATM`, `ANISOU` or `SIGUIJ` records
285
- for `structure` stru `atom` number aidx.
286
- """
283
+ """Build `ATOM` records and possibly `SIGATM`, `ANISOU` or
284
+ `SIGUIJ` records for `structure` stru `atom` number aidx."""
287
285
  lines = []
288
286
  a = stru[idx]
289
287
  ad = a.__dict__
@@ -12,9 +12,7 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Parser for PDFfit structure format
17
- """
15
+ """Parser for PDFfit structure format."""
18
16
 
19
17
  import sys
20
18
  from functools import reduce
@@ -12,11 +12,10 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Parser for raw XYZ file format.
17
16
 
18
- Raw XYZ is a 3 or 4 column text file with cartesian coordinates
19
- of atoms and an optional first column for atom types.
17
+ Raw XYZ is a 3 or 4 column text file with cartesian coordinates of atoms
18
+ and an optional first column for atom types.
20
19
  """
21
20
 
22
21
  import sys
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Parser for extended CFG format used by atomeye.
17
16
 
18
17
  Attributes
@@ -287,7 +286,8 @@ class P_xcfg(StructureParser):
287
286
  return stru
288
287
 
289
288
  def toLines(self, stru):
290
- """Convert Structure stru to a list of lines in XCFG atomeye format.
289
+ """Convert Structure stru to a list of lines in XCFG atomeye
290
+ format.
291
291
 
292
292
  Parameters
293
293
  ----------
@@ -424,7 +424,8 @@ def getParser():
424
424
 
425
425
 
426
426
  def _assign_auxiliaries(a, fields, auxiliaries, no_velocity):
427
- """Assing auxiliary properties for `Atom` object when reading CFG format.
427
+ """Assign auxiliary properties for `Atom` object when reading CFG
428
+ format.
428
429
 
429
430
  Parameters
430
431
  ----------
@@ -12,12 +12,11 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
+ """Parser for XYZ file format, where.
15
16
 
16
- """Parser for XYZ file format, where
17
-
18
- * First line gives number of atoms.
19
- * Second line has optional title.
20
- * Remaining lines contain element, `x, y, z`.
17
+ * First line gives number of atoms.
18
+ * Second line has optional title.
19
+ * Remaining lines contain element, `x, y, z`.
21
20
  """
22
21
 
23
22
  import sys
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Index of recognized structure formats, their IO capabilities and
17
16
  associated modules where they are defined.
18
17
 
@@ -12,9 +12,7 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Definition of StructureParser, a base class for specific parsers.
17
- """
15
+ """Definition of StructureParser, a base class for specific parsers."""
18
16
 
19
17
 
20
18
  class StructureParser(object):
@@ -12,9 +12,7 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Definition of PDFFitStructure class derived from Structure
17
- """
15
+ """Definition of PDFFitStructure class derived from Structure."""
18
16
 
19
17
 
20
18
  from diffpy.structure.structure import Structure
@@ -12,9 +12,9 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Extra space group representations generated using `sgtbx` module from `cctbx`.
17
- Import of this module extends the `SpaceGroupList` in the `SpaceGroups` module.
15
+ """Extra space group representations generated using `sgtbx` module from
16
+ `cctbx`. Import of this module extends the `SpaceGroupList` in the
17
+ `SpaceGroups` module.
18
18
 
19
19
  Attributes
20
20
  ----------
@@ -3,12 +3,11 @@
3
3
  # This code is part of the PyMMLib distribution and governed by
4
4
  # its license. Please see the LICENSE_pymmlib file that should have been
5
5
  # included as part of this package.
6
- """Symmetry operations as functions on vectors or arrays.
7
- """
6
+ """Symmetry operations as functions on vectors or arrays."""
8
7
 
9
8
  import numpy
10
9
 
11
- # 64 unique rotation matricies
10
+ # 64 unique rotation matrices
12
11
  Rot_Z_mY_X = numpy.array([[0.0, 0.0, 1.0], [0.0, -1.0, 0.0], [1.0, 0.0, 0.0]], float)
13
12
  Rot_Y_mX_mZ = numpy.array([[0.0, 1.0, 0.0], [-1.0, 0.0, 0.0], [0.0, 0.0, -1.0]], float)
14
13
  Rot_XmY_X_mZ = numpy.array([[1.0, -1.0, 0.0], [1.0, 0.0, 0.0], [0.0, 0.0, -1.0]], float)
@@ -144,7 +143,8 @@ class SymOp(object):
144
143
  return x
145
144
 
146
145
  def __call__(self, vec):
147
- """Return symmetry-related position for the specified coordinates.
146
+ """Return symmetry-related position for the specified
147
+ coordinates.
148
148
 
149
149
  Parameters
150
150
  ----------
@@ -302,7 +302,8 @@ class SpaceGroup(object):
302
302
  return False
303
303
 
304
304
  def iter_equivalent_positions(self, vec):
305
- """Generate symmetry equivalent positions for the specified position.
305
+ """Generate symmetry equivalent positions for the specified
306
+ position.
306
307
 
307
308
  The initial position must be in fractional coordinates and so
308
309
  are the symmetry equivalent positions yielded by iteration.
@@ -12,7 +12,6 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Space group classes and definitions from mmLib and sgtbx.
17
16
 
18
17
  Attributes
@@ -693,7 +692,8 @@ def GetSpaceGroup(sgid):
693
692
 
694
693
 
695
694
  def IsSpaceGroupIdentifier(sgid):
696
- """Check if identifier can be used as an argument to `GetSpaceGroup`.
695
+ """Check if identifier can be used as an argument to
696
+ `GetSpaceGroup`.
697
697
 
698
698
  Returns
699
699
  -------
@@ -768,6 +768,7 @@ def _hashSymOpList(symops):
768
768
 
769
769
  def _buildSGLookupTable():
770
770
  """Rebuild space group lookup table from the `SpaceGroupList` data.
771
+
771
772
  This routine updates the global `_sg_lookup_table` dictionary.
772
773
  """
773
774
  _sg_lookup_table.clear()
@@ -809,7 +810,8 @@ _sg_lookup_table = {}
809
810
 
810
811
 
811
812
  def _getSGHashLookupTable():
812
- """Return lookup table of symop hashes to standard `SpaceGroup` objects."""
813
+ """Return lookup table of symop hashes to standard `SpaceGroup`
814
+ objects."""
813
815
  if _sg_hash_lookup_table:
814
816
  return _sg_hash_lookup_table
815
817
  for sg in SpaceGroupList:
@@ -12,9 +12,7 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """This module defines class `Structure`.
17
- """
15
+ """This module defines class `Structure`."""
18
16
 
19
17
  import codecs
20
18
  import copy as copymod
@@ -29,7 +27,8 @@ from diffpy.structure.utils import _linkAtomAttribute, atomBareSymbol, isiterabl
29
27
 
30
28
 
31
29
  class Structure(list):
32
- """Define group of atoms in a specified lattice. Structure --> group of atoms.
30
+ """Define group of atoms in a specified lattice. Structure --> group
31
+ of atoms.
33
32
 
34
33
  `Structure` class is inherited from Python `list`. It contains
35
34
  a list of `Atom` instances. `Structure` overloads `setitem` and `setslice`
@@ -184,7 +183,8 @@ class Structure(list):
184
183
  return
185
184
 
186
185
  def distance(self, aid0, aid1):
187
- """Calculate distance between 2 `Atoms`, no periodic boundary conditions.
186
+ """Calculate distance between 2 `Atoms`, no periodic boundary
187
+ conditions.
188
188
 
189
189
  Parameters
190
190
  ----------
@@ -208,8 +208,7 @@ class Structure(list):
208
208
  return self.lattice.dist(a0.xyz, a1.xyz)
209
209
 
210
210
  def angle(self, aid0, aid1, aid2):
211
- """
212
- The bond angle at the second of three `Atoms` in degrees.
211
+ """The bond angle at the second of three `Atoms` in degrees.
213
212
 
214
213
  Parameters
215
214
  ----------
@@ -236,7 +235,7 @@ class Structure(list):
236
235
  return self.lattice.angle(u10, u12)
237
236
 
238
237
  def placeInLattice(self, new_lattice):
239
- """place structure into `new_lattice` coordinate system.
238
+ """Place structure into `new_lattice` coordinate system.
240
239
 
241
240
  Sets `lattice` to `new_lattice` and recalculate fractional coordinates
242
241
  of all `Atoms` so their absolute positions remain the same.
@@ -353,7 +352,8 @@ class Structure(list):
353
352
  return
354
353
 
355
354
  def writeStr(self, format):
356
- """return string representation of the structure in specified format.
355
+ """Return string representation of the structure in specified
356
+ format.
357
357
 
358
358
  Note
359
359
  ----
@@ -368,14 +368,16 @@ class Structure(list):
368
368
  return s
369
369
 
370
370
  def tolist(self):
371
- """Return `Atoms` in this `Structure` as a standard Python list."""
371
+ """Return `Atoms` in this `Structure` as a standard Python
372
+ list."""
372
373
  rv = [a for a in self]
373
374
  return rv
374
375
 
375
376
  # Overloaded list Methods and Operators ----------------------------------
376
377
 
377
378
  def append(self, a, copy=True):
378
- """Append `Atom` to a structure and update its `lattice` attribute.
379
+ """Append `Atom` to a structure and update its `lattice`
380
+ attribute.
379
381
 
380
382
  Parameters
381
383
  ----------
@@ -451,7 +453,7 @@ class Structure(list):
451
453
 
452
454
  Parameters
453
455
  ----------
454
- idx : int ot str ot Iterable
456
+ idx : int or str or Iterable
455
457
  `Atom` identifier. When integer use standard list lookup.
456
458
  For iterables use numpy lookup, this supports integer or
457
459
  boolean flag arrays. For string or string-containing iterables
@@ -564,7 +566,7 @@ class Structure(list):
564
566
  keep = set(super(Structure, self).__getitem__(idx))
565
567
  v1 = (a if a in keep else Atom(a) for a in value)
566
568
  vfinal = filter(_fixlat, v1)
567
- # handle scalar assingment
569
+ # handle scalar assignment
568
570
  else:
569
571
  vfinal = Atom(value) if copy else value
570
572
  vfinal.lattice = self.lattice
@@ -572,7 +574,8 @@ class Structure(list):
572
574
  return
573
575
 
574
576
  def __add__(self, other):
575
- """Return new `Structure` object with appended `Atoms` from other.
577
+ """Return new `Structure` object with appended `Atoms` from
578
+ other.
576
579
 
577
580
  Parameters
578
581
  ----------
@@ -605,7 +608,8 @@ class Structure(list):
605
608
  return self
606
609
 
607
610
  def __sub__(self, other):
608
- """Return new `Structure` that has `Atoms` from the other removed.
611
+ """Return new `Structure` that has `Atoms` from the other
612
+ removed.
609
613
 
610
614
  Parameters
611
615
  ----------
@@ -640,8 +644,8 @@ class Structure(list):
640
644
  return self
641
645
 
642
646
  def __mul__(self, n):
643
- """Return new `Structure` with n-times concatenated `Atoms` from self.
644
- `Atoms` and `lattice` in the new structure are all copies.
647
+ """Return new `Structure` with n-times concatenated `Atoms` from
648
+ self. `Atoms` and `lattice` in the new structure are all copies.
645
649
 
646
650
  Parameters
647
651
  ----------
@@ -661,8 +665,8 @@ class Structure(list):
661
665
  __rmul__ = __mul__
662
666
 
663
667
  def __imul__(self, n):
664
- """Concatenate this `Structure` to n-times more `Atoms`.
665
- For positive multiple the current `Atom` objects remain at the
668
+ """Concatenate this `Structure` to n-times more `Atoms`. For
669
+ positive multiple the current `Atom` objects remain at the
666
670
  beginning of this `Structure`.
667
671
 
668
672
  Parameters
@@ -859,7 +863,8 @@ class Structure(list):
859
863
  # Private Methods --------------------------------------------------------
860
864
 
861
865
  def __emptySharedStructure(self):
862
- """Return empty `Structure` with standard attributes same as in self."""
866
+ """Return empty `Structure` with standard attributes same as in
867
+ self."""
863
868
  rv = Structure()
864
869
  rv.__dict__.update([(k, getattr(self, k)) for k in rv.__dict__])
865
870
  return rv
@@ -12,9 +12,7 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Exceptions used in Structure package.
17
- """
15
+ """Exceptions used in Structure package."""
18
16
 
19
17
 
20
18
  class StructureFormatError(Exception):
@@ -12,9 +12,8 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Symmetry utility functions such as expansion of asymmetric unit,
17
- and generation of positional constraints.
15
+ """Symmetry utility functions such as expansion of asymmetric unit, and
16
+ generation of positional constraints.
18
17
 
19
18
  Attributes
20
19
  ----------
@@ -132,8 +131,8 @@ def isconstantFormula(s):
132
131
 
133
132
 
134
133
  class _Position2Tuple(object):
135
- """Create callable object that converts fractional coordinates to
136
- a tuple of integers with given precision. For presision close to zero
134
+ """Create callable object that converts fractional coordinates to a
135
+ tuple of integers with given precision. For presision close to zero
137
136
  it will return a tuples of double.
138
137
 
139
138
  Note
@@ -148,7 +147,7 @@ class _Position2Tuple(object):
148
147
  Attributes
149
148
  ----------
150
149
  eps : float
151
- Cutoff for equivalent coordinates. When two coordiantes map to the
150
+ Cutoff for equivalent coordinates. When two coordinates map to the
152
151
  same tuple, they are closer than `eps`.
153
152
  """
154
153
 
@@ -417,7 +416,8 @@ class GeneratorSite(object):
417
416
  ],
418
417
  dtype=float,
419
418
  )
420
- """numpy.ndarray: 6x3x3 array of independent components of U matrices."""
419
+ """numpy.ndarray: 6x3x3 array of independent components of U
420
+ matrices."""
421
421
 
422
422
  idx2Usymbol = {0: "U11", 1: "U12", 2: "U13", 3: "U12", 4: "U22", 5: "U23", 6: "U13", 7: "U23", 8: "U33"}
423
423
  """dict: Mapping of index to standard U symbol."""
@@ -467,7 +467,8 @@ class GeneratorSite(object):
467
467
  return
468
468
 
469
469
  def signedRatStr(self, x):
470
- """Convert floating point number to signed rational representation.
470
+ """Convert floating point number to signed rational
471
+ representation.
471
472
 
472
473
  Possible fractional are multiples of 1/3, 1/6, 1/7, 1/9, if these
473
474
  are not close, return `%+g` format.
@@ -495,6 +496,7 @@ class GeneratorSite(object):
495
496
 
496
497
  def _findNullSpace(self):
497
498
  """Calculate `self.null_space` from `self.invariants`.
499
+
498
500
  Try to represent `self.null_space` using small integers.
499
501
  """
500
502
  R0 = self.invariants[0].R
@@ -525,7 +527,8 @@ class GeneratorSite(object):
525
527
  return
526
528
 
527
529
  def _findPosParameters(self):
528
- """Find pparameters and their values for expressing `self.xyz`."""
530
+ """Find pparameters and their values for expressing
531
+ `self.xyz`."""
529
532
  usedsymbol = {}
530
533
  # parameter values depend on offset of self.xyz
531
534
  txyz = self.xyz
@@ -542,8 +545,7 @@ class GeneratorSite(object):
542
545
 
543
546
  def _findUSpace(self):
544
547
  """Find independent U components with respect to invariant
545
- rotations.
546
- """
548
+ rotations."""
547
549
  n = len(self.invariants)
548
550
  R6zall = numpy.tile(-numpy.identity(6, dtype=float), (n, 1))
549
551
  R6zall_iter = numpy.split(R6zall, n, axis=0)
@@ -568,7 +570,8 @@ class GeneratorSite(object):
568
570
  return
569
571
 
570
572
  def _findUParameters(self):
571
- """Find Uparameters and their values for expressing `self.Uij`."""
573
+ """Find Uparameters and their values for expressing
574
+ `self.Uij`."""
572
575
  # permute indices as 00 11 22 01 02 12 10 20 21
573
576
  diagorder = numpy.array((0, 4, 8, 1, 2, 5, 3, 6, 7))
574
577
  Uijflat = self.Uij.flatten()
@@ -583,7 +586,8 @@ class GeneratorSite(object):
583
586
  return
584
587
 
585
588
  def _findeqUij(self):
586
- """Adjust `self.Uij` and `self.eqUij` to be consistent with spacegroup."""
589
+ """Adjust `self.Uij` and `self.eqUij` to be consistent with
590
+ spacegroup."""
587
591
  self.Uij = numpy.zeros((3, 3), dtype=float)
588
592
  for i in range(len(self.Uparameters)):
589
593
  Usp = self.Uspace[i]
@@ -598,7 +602,8 @@ class GeneratorSite(object):
598
602
  return
599
603
 
600
604
  def positionFormula(self, pos, xyzsymbols=("x", "y", "z")):
601
- """Formula of equivalent position with respect to generator site.
605
+ """Formula of equivalent position with respect to generator
606
+ site.
602
607
 
603
608
  Parameters
604
609
  ----------
@@ -646,7 +651,8 @@ class GeneratorSite(object):
646
651
  return dict(zip(("x", "y", "z"), xyzformula))
647
652
 
648
653
  def UFormula(self, pos, Usymbols=stdUsymbols):
649
- """List of atom displacement formulas with custom parameter symbols.
654
+ """List of atom displacement formulas with custom parameter
655
+ symbols.
650
656
 
651
657
  Parameters
652
658
  ----------
@@ -902,7 +908,8 @@ class SymmetryConstraints(object):
902
908
  return
903
909
 
904
910
  def _findConstraints(self):
905
- """Find constraints for positions and anisotropic displacements `Uij`."""
911
+ """Find constraints for positions and anisotropic displacements
912
+ `Uij`."""
906
913
  numpos = len(self.positions)
907
914
  # canonical xyzsymbols and Usymbols
908
915
  xyzsymbols = [smbl + str(i) for i in range(numpos) for smbl in "xyz"]
@@ -994,7 +1001,8 @@ class SymmetryConstraints(object):
994
1001
  return rv
995
1002
 
996
1003
  def positionFormulasPruned(self, xyzsymbols=None):
997
- """List of position formula dictionaries with constant items removed.
1004
+ """List of position formula dictionaries with constant items
1005
+ removed.
998
1006
 
999
1007
  See also
1000
1008
  --------
@@ -1014,7 +1022,8 @@ class SymmetryConstraints(object):
1014
1022
  return rv
1015
1023
 
1016
1024
  def UparSymbols(self):
1017
- """Return list of standard atom displacement parameter symbols."""
1025
+ """Return list of standard atom displacement parameter
1026
+ symbols."""
1018
1027
  return [n for n, v in self.Upars]
1019
1028
 
1020
1029
  def UparValues(self):
@@ -1022,7 +1031,8 @@ class SymmetryConstraints(object):
1022
1031
  return [v for n, v in self.Upars]
1023
1032
 
1024
1033
  def UFormulas(self, Usymbols=None):
1025
- """List of atom displacement formulas with custom parameter symbols.
1034
+ """List of atom displacement formulas with custom parameter
1035
+ symbols.
1026
1036
 
1027
1037
  Parameters
1028
1038
  ----------
@@ -1059,8 +1069,8 @@ class SymmetryConstraints(object):
1059
1069
  return rv
1060
1070
 
1061
1071
  def UFormulasPruned(self, Usymbols=None):
1062
- """List of atom displacement formula dictionaries with constant items
1063
- removed.
1072
+ """List of atom displacement formula dictionaries with constant
1073
+ items removed.
1064
1074
 
1065
1075
  See Also
1066
1076
  --------
diffpy/structure/utils.py CHANGED
@@ -12,9 +12,7 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
- """Small shared functions.
17
- """
15
+ """Small shared functions."""
18
16
 
19
17
  from collections.abc import Iterable as _Iterable
20
18
 
@@ -38,7 +36,8 @@ def isfloat(s):
38
36
 
39
37
 
40
38
  def atomBareSymbol(smbl):
41
- """Remove atom type string stripped of isotope and ion charge symbols.
39
+ """Remove atom type string stripped of isotope and ion charge
40
+ symbols.
42
41
 
43
42
  This function removes any blank, isotope numbers (0-9), leading hyphens (-), and ion charge
44
43
  symbols (1-9)(+-) from the given atom type string, returning only the bare element symbol.
@@ -1,18 +1,17 @@
1
1
  #!/usr/bin/env python
2
2
  ##############################################################################
3
3
  #
4
- # (c) 2024 The Trustees of Columbia University in the City of New York.
4
+ # (c) 2024-2025 The Trustees of Columbia University in the City of New York.
5
5
  # All rights reserved.
6
6
  #
7
- # File coded by: Billinge Group members and community contributors.
7
+ # File coded by: Chris Farrow, Pavol Juhas, Simon Billinge, Billinge Group members.
8
8
  #
9
9
  # See GitHub contributions for a more detailed list of contributors.
10
- # https://github.com/diffpy/diffpy.structure/graphs/contributors
10
+ # https://github.com/diffpy/diffpy.structure/graphs/contributors # noqa: E501
11
11
  #
12
12
  # See LICENSE.rst for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """Definition of __version__."""
17
16
 
18
17
  # We do not use the other three variables, but can be added back if needed.
@@ -1,12 +1,12 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: diffpy.structure
3
- Version: 3.3.0
3
+ Version: 3.3.1
4
4
  Summary: Crystal structure container and parsers for structure formats.
5
- Author-email: "Simon J.L. Billinge group" <simon.billinge@gmail.com>
6
- Maintainer-email: "Simon J.L. Billinge group" <simon.billinge@gmail.com>
5
+ Author-email: Simon Billinge <sb2896@columbia.edu>
6
+ Maintainer-email: Simon Billinge <sb2896@columbia.edu>
7
7
  Project-URL: Homepage, https://github.com/diffpy/diffpy.structure/
8
8
  Project-URL: Issues, https://github.com/diffpy/diffpy.structure/issues/
9
- Keywords: diffpy,crystal structure data storage CIF PDB
9
+ Keywords: diffpy,crystal structure data storage,CIF,PDB
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Console
12
12
  Classifier: Intended Audience :: Developers
@@ -23,12 +23,13 @@ Classifier: Topic :: Scientific/Engineering :: Physics
23
23
  Classifier: Topic :: Scientific/Engineering :: Chemistry
24
24
  Requires-Python: <3.14,>=3.11
25
25
  Description-Content-Type: text/x-rst
26
+ License-File: LICENSE-DANSE.rst
27
+ License-File: LICENSE-pymmlib.rst
26
28
  License-File: LICENSE.rst
27
- License-File: LICENSE_DANSE.rst
28
- License-File: LICENSE_pymmlib.rst
29
29
  License-File: AUTHORS.rst
30
30
  Requires-Dist: numpy
31
31
  Requires-Dist: pycifrw
32
+ Dynamic: license-file
32
33
 
33
34
  |Icon| |title|_
34
35
  ===============
@@ -40,7 +41,7 @@ Requires-Dist: pycifrw
40
41
  :target: https://diffpy.github.io/diffpy.structure
41
42
  :height: 100px
42
43
 
43
- |PyPi| |Forge| |PythonVersion| |PR|
44
+ |PyPI| |Forge| |PythonVersion| |PR|
44
45
 
45
46
  |CI| |Codecov| |Black| |Tracking|
46
47
 
@@ -58,7 +59,7 @@ Requires-Dist: pycifrw
58
59
 
59
60
  .. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff
60
61
 
61
- .. |PyPi| image:: https://img.shields.io/pypi/v/diffpy.structure
62
+ .. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.structure
62
63
  :target: https://pypi.org/project/diffpy.structure/
63
64
 
64
65
  .. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.structure
@@ -164,7 +165,7 @@ trying to commit again.
164
165
 
165
166
  Improvements and fixes are always appreciated.
166
167
 
167
- Before contribuing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.structure/blob/main/CODE_OF_CONDUCT.rst>`_.
168
+ Before contributing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.structure/blob/main/CODE-OF-CONDUCT.rst>`_.
168
169
 
169
170
  Acknowledgement
170
171
  ---------------
@@ -175,6 +176,8 @@ originate from the `pymmlib project <http://pymmlib.sourceforge.net>`_.
175
176
  Less common settings of space groups were generating using the
176
177
  `Computational Crystallography Toolbox <http://cctbx.sourceforge.net>`_.
177
178
 
179
+ ``diffpy.structure`` is built and maintained with `scikit-package <https://scikit-package.github.io/scikit-package/>`_.
180
+
178
181
  Contact
179
182
  -------
180
183
 
@@ -0,0 +1,42 @@
1
+ diffpy/__init__.py,sha256=04avZQsjSOiKWW3QfASU_McNdoVNMmOMBjnRhZm3tds,535
2
+ diffpy/structure/__init__.py,sha256=SlBT8kUHjov-Pg7Dc7vOtbQaZEwfb7bhkj-mETLGu7c,2620
3
+ diffpy/structure/_legacy_importer.py,sha256=tVMkHI88Mq0Y3wTDyeQljKlMEZNF4mjixr3N_FP5p84,2573
4
+ diffpy/structure/atom.py,sha256=OweEfz-i0_PAWefcssuX2LJGiw6uxEqIISAKeXzQwHM,17751
5
+ diffpy/structure/lattice.py,sha256=-CCh6ADoMt_PCX7JAgHhJHSRH4o_C_r_0LmuDn4X4BY,22500
6
+ diffpy/structure/mmlibspacegroups.py,sha256=F2KeR0rCdeZMPeu7NNaZLoo0_kQTzfjt9mTpFnpHXbs,245607
7
+ diffpy/structure/pdffitstructure.py,sha256=wOvLreKFJzIwYX6MkZ3YL7EoVey2RcrJaeyBl1BZkEw,3201
8
+ diffpy/structure/sgtbxspacegroups.py,sha256=UO4-jGUiFcC9t6Kcsr7aI6UX-nos1R8K39qGTB6RQqo,135077
9
+ diffpy/structure/spacegroupmod.py,sha256=jT9ZsYizKxlOgbjb3mnHmySd8LULwEiU_mk72H3c2oM,15190
10
+ diffpy/structure/spacegroups.py,sha256=FBHOo2mDUNjRN-4i3WEZ_EKTXYv5JZordskP-6YV_PA,23367
11
+ diffpy/structure/structure.py,sha256=WbTNzcz0J8MXF7OtZgDXKXqUjk5_4G7l1r6P3XmvJq0,27590
12
+ diffpy/structure/structureerrors.py,sha256=yEK8E2yGIdspATBUsiuwrPC8y1NkMJy_lEWyorVThyE,878
13
+ diffpy/structure/symmetryutilities.py,sha256=SjR_-NgKG4R9ryqNMS7-S0QsFAPwrrxpubCWj2xCevs,37452
14
+ diffpy/structure/utils.py,sha256=8mBCCMqoE9XlneflsZOXMrWP4srFp9pS4TyC16nMeAg,3322
15
+ diffpy/structure/version.py,sha256=IXOxxkCF2DG0x0654n0hCDPEC0zRlKPLfLmiYE27o7k,880
16
+ diffpy/structure/apps/__init__.py,sha256=RIALfKIBO0irampSnEVpelA8hG14iTLBUObfDK-bLyw,593
17
+ diffpy/structure/apps/anyeye.py,sha256=ofuoi540zWOm23aZAklECp-Bey3JQH18Y3RNhX6ozrs,8035
18
+ diffpy/structure/apps/transtru.py,sha256=CxexgucmUYXNoIqoAHcI9ZosqeR_PsXkP_Ikv2wr7-0,3658
19
+ diffpy/structure/expansion/__init__.py,sha256=lRNreWFdplIHOAPxN9bkM1mdzdPVuImfTcloeWoFgb0,869
20
+ diffpy/structure/expansion/makeellipsoid.py,sha256=oKpkATyI5ieKKoNj5EY4LkDPdZAGHhnbk24nR4YBDHE,3450
21
+ diffpy/structure/expansion/shapeutils.py,sha256=Q5UIpKPwyFZHW48oVUUPg3l_btS4puOVz5_MYLrmI5k,1128
22
+ diffpy/structure/expansion/supercell_mod.py,sha256=J5JaV1ttkcr4icSSY9yN9p56zeu3I_ioOsCAlKndJmo,2705
23
+ diffpy/structure/parsers/__init__.py,sha256=ZBRIMG0Y7Az_nNoBxe5Ew3l_ojxym9au7mjlMJpI-ew,2729
24
+ diffpy/structure/parsers/p_auto.py,sha256=XlfIARU5YP2E3IU8eouzQoLA_CDYDK9ykSRXgRRIg30,6047
25
+ diffpy/structure/parsers/p_cif.py,sha256=xrXAG4POlhZ0VKKZI9vHsT5Kj6gOwyqF4cUFz009WJs,29323
26
+ diffpy/structure/parsers/p_discus.py,sha256=cHBGfGMIuDSLtWHFRTv8MkkVyxbDRO_KjCYsMdbB6gU,10505
27
+ diffpy/structure/parsers/p_pdb.py,sha256=G0kgOC9TzHNnpM5L6zWfEXHbK79zCOSi4ax6owH2MxQ,13928
28
+ diffpy/structure/parsers/p_pdffit.py,sha256=plE5j7m14ktWz8PsUA6o9gTNGlXGaOgnUx-fW89uslg,11020
29
+ diffpy/structure/parsers/p_rawxyz.py,sha256=aVdRIyJisGZ7vxHKTXjaCO7UDKbcqwT-e23A2cd7s68,4549
30
+ diffpy/structure/parsers/p_xcfg.py,sha256=cJ5VBOOmtn1hXz_Ji0zniwrfZAs0dS2M5_LqM7Q8Z4g,17958
31
+ diffpy/structure/parsers/p_xyz.py,sha256=nMMx5OQM3cQQ4dXkrql3mL9hd6vsjiivHtve8VHm82Q,5005
32
+ diffpy/structure/parsers/parser_index_mod.py,sha256=A3xwsCOy_Sjn4ZMFl8zZA77gXY0bOrCjTAoQ_lo-Xl8,3044
33
+ diffpy/structure/parsers/structureparser.py,sha256=uMw-K4TkXyAAiqTR8QjTbXuP5Bd83YL5u9vZExWEqVg,2252
34
+ diffpy_structure-3.3.1.dist-info/licenses/AUTHORS.rst,sha256=PH7xKOE6eZ60_LSn4IugF1w-9O2TWHJBBBC6WuiBXIg,255
35
+ diffpy_structure-3.3.1.dist-info/licenses/LICENSE-DANSE.rst,sha256=O0_g4iEt4vJzr3XfLnqISKgR6bBXXE1EWDGXZUMkgGM,2277
36
+ diffpy_structure-3.3.1.dist-info/licenses/LICENSE-pymmlib.rst,sha256=9RJGn2ZWB4NaWRh8AE8nefdlKDEENs0EBFBk3D2YAas,9591
37
+ diffpy_structure-3.3.1.dist-info/licenses/LICENSE.rst,sha256=80VidrcIGGKZSC-cL7Ru0BZ4ZEPHcYHyv_cXkkTJXFE,6011
38
+ diffpy_structure-3.3.1.dist-info/METADATA,sha256=NOWLLyT38LMbNyT09_s0Y3Jb9PIUgHY1DpVnWw_oa-o,8059
39
+ diffpy_structure-3.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
40
+ diffpy_structure-3.3.1.dist-info/entry_points.txt,sha256=nZfNAHRiWWZojxJz1NSIxiKERWBL437Xscb-WLL6JkM,65
41
+ diffpy_structure-3.3.1.dist-info/top_level.txt,sha256=34qLZyi9mxikpHepVDTMHrrNbe8VoOuz3ShYeiWA7KA,7
42
+ diffpy_structure-3.3.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.2.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -15,7 +15,7 @@ Copyright (c) 2014, Australian Synchrotron Research Program Inc., ("ASRP")
15
15
 
16
16
  Copyright (c) 2014-2019, Brookhaven Science Associates, Brookhaven National Laboratory
17
17
 
18
- Copyright (c) 2024, The Trustees of Columbia University in the City of New York.
18
+ Copyright (c) 2024-2025, The Trustees of Columbia University in the City of New York.
19
19
  All rights reserved.
20
20
 
21
21
  The "DiffPy-CMI" is distributed subject to the following license conditions:
@@ -1,42 +0,0 @@
1
- diffpy/__init__.py,sha256=WntnKrzS4hxw7YDYxwU-2hCJYNSFBf3gvjbPOrci0dk,673
2
- diffpy/structure/__init__.py,sha256=EPy-CMdt1GkwzPmFs6vBPFjxygb-xMCsrxZMEEnrODo,2600
3
- diffpy/structure/_legacy_importer.py,sha256=IXoPovMWIEY7tQTp1prTjICudfiVsR_Blmae-zDcHKA,2574
4
- diffpy/structure/atom.py,sha256=hB7ZbJgSe2RvHeu7HcnPGeJpopSs17xXLHdv-G93kE4,17722
5
- diffpy/structure/lattice.py,sha256=NhSYxFMyfPRJYwiLCyObEPC7vlZBAsP0x9PYSzJ1O7U,22499
6
- diffpy/structure/mmlibspacegroups.py,sha256=J4F8nbcZ2OmjhzxtOnFVKLQpzXgyQ-S8wh3EnNxqz-w,245608
7
- diffpy/structure/pdffitstructure.py,sha256=lzARAIDN-FiuMnQJIeFbfRMdRXCGgv2J2qPmOctkN_I,3202
8
- diffpy/structure/sgtbxspacegroups.py,sha256=9Mz_vVfC3CYpKBYFeYc2Un0VdsqNIx8e9KdZ-Szhw3Y,135078
9
- diffpy/structure/spacegroupmod.py,sha256=xMeWjiODk21koPQo7aQnwdWf4wzZ82PnVl3MmlTj5yU,15176
10
- diffpy/structure/spacegroups.py,sha256=BPKW75UNGqDlfi6lkntrjAJiqyxcKmIAeaUScrKA7LA,23359
11
- diffpy/structure/structure.py,sha256=r8_Z3MyevqlU5EEsQ5G4Xzji_8AwLAUOp6_M3hwq-K8,27541
12
- diffpy/structure/structureerrors.py,sha256=9T4Fwy-_dafyiMRGeK0qAmZ6TXBpRqlhSnOxIfV5mxM,880
13
- diffpy/structure/symmetryutilities.py,sha256=jxR8Sxp7Fw8seSX_8y8GgrbfpVadj4_leXFukTkDPKQ,37377
14
- diffpy/structure/utils.py,sha256=IMgzeIPg0WOIVeACpg2YZX4wL0NZhu_tZRuGctSmLuM,3320
15
- diffpy/structure/version.py,sha256=SZtloZcpk7K1AnEKzefhXcEjxiJI6uXue0_3kQz_fp8,845
16
- diffpy/structure/apps/__init__.py,sha256=8_LEH7mLoHMV1JWCV8g6ROTQVUap2QbYIvF11s5_Fts,595
17
- diffpy/structure/apps/anyeye.py,sha256=eWghHY-4tZPo0d82OnntMk9b6L7bQrPOoTwC7PILJp4,8032
18
- diffpy/structure/apps/transtru.py,sha256=VUfjEwefSsF-ca16Rq6rjtCw24-P-hybyLMS_6y2qZ4,3655
19
- diffpy/structure/expansion/__init__.py,sha256=lgVDh9UxVR63lDl0trCBt042Rw3nNzPGnuWna45nTms,870
20
- diffpy/structure/expansion/makeellipsoid.py,sha256=R8dhKtRW6KxdeectCI39PyRTLpNFUFvj6M5UWVvify8,3456
21
- diffpy/structure/expansion/shapeutils.py,sha256=gAQnsVa2puE-sn7sIjEHhZU9U8EEk1gHIbEHErp-iMc,1130
22
- diffpy/structure/expansion/supercell_mod.py,sha256=t8kfDCNp92_PWURjCdm-KRryTk6AvAN6SI271mAyFh4,2712
23
- diffpy/structure/parsers/__init__.py,sha256=qq0grT2qDKBG5LE2DlSdpnUc-JA1UtaUSN-KF3iGNOQ,2730
24
- diffpy/structure/parsers/p_auto.py,sha256=yNcSmLsIiyERtlnLWZkh5TqHwU8b2q2fVtbrTtgeAWk,6030
25
- diffpy/structure/parsers/p_cif.py,sha256=KlrLoxTnypOMZyJtKbccdgt3U0rR1UxP2Cm_SOjy1Ao,29218
26
- diffpy/structure/parsers/p_discus.py,sha256=3cIN9oXv9uKIJ-5G7B5HtJYnlO91UCUkHnMXu0Fd-QY,10505
27
- diffpy/structure/parsers/p_pdb.py,sha256=AkFHFWbNj6ihjj_LtdOqQzA56Rb5u2P_gecUpoJMzeg,13938
28
- diffpy/structure/parsers/p_pdffit.py,sha256=1VnEvKfaKjLnBfgNWW7um4xG7sQ3gbSGlc9cFSw5as4,11021
29
- diffpy/structure/parsers/p_rawxyz.py,sha256=gdEWdzCxMl1_JV1KNgurgPdEAp4RO3tEYLnasi672cw,4550
30
- diffpy/structure/parsers/p_xcfg.py,sha256=QIaaq30FoRnZwYIlAsLUMVRWGPoQaivRwMPWqXE5VMI,17947
31
- diffpy/structure/parsers/p_xyz.py,sha256=PDmkc_MyHRP5wqJsHxxa7W4bce60YHhkurUrmrhU8Ks,5017
32
- diffpy/structure/parsers/parser_index_mod.py,sha256=QWwV0tPpbIlk2i-gwR6MlKkUF0H05lGzO0yBq5nPOxk,3045
33
- diffpy/structure/parsers/structureparser.py,sha256=p6eXkziF0sBOR6p9tyfvs8O6D9oRqETrr_v54h3C5mg,2254
34
- diffpy.structure-3.3.0.dist-info/AUTHORS.rst,sha256=PH7xKOE6eZ60_LSn4IugF1w-9O2TWHJBBBC6WuiBXIg,255
35
- diffpy.structure-3.3.0.dist-info/LICENSE.rst,sha256=cewTuMX5-lzPdcCj6s5_YeJvPbc3ZyUHZJg5FB7nlIs,6006
36
- diffpy.structure-3.3.0.dist-info/LICENSE_DANSE.rst,sha256=O0_g4iEt4vJzr3XfLnqISKgR6bBXXE1EWDGXZUMkgGM,2277
37
- diffpy.structure-3.3.0.dist-info/LICENSE_pymmlib.rst,sha256=9RJGn2ZWB4NaWRh8AE8nefdlKDEENs0EBFBk3D2YAas,9591
38
- diffpy.structure-3.3.0.dist-info/METADATA,sha256=fDMoDDGbNY9CiG8utB7Al7_z-h3vw4tLtLHtahWFJis,7951
39
- diffpy.structure-3.3.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
40
- diffpy.structure-3.3.0.dist-info/entry_points.txt,sha256=nZfNAHRiWWZojxJz1NSIxiKERWBL437Xscb-WLL6JkM,65
41
- diffpy.structure-3.3.0.dist-info/top_level.txt,sha256=34qLZyi9mxikpHepVDTMHrrNbe8VoOuz3ShYeiWA7KA,7
42
- diffpy.structure-3.3.0.dist-info/RECORD,,