diffpy.srfit 1.3__tar.gz → 3.1.0rc0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. diffpy_srfit-3.1.0rc0/AUTHORS.rst +10 -0
  2. diffpy.srfit-1.3/LICENSE.txt → diffpy_srfit-3.1.0rc0/LICENSE.rst +3 -2
  3. diffpy_srfit-3.1.0rc0/MANIFEST.in +14 -0
  4. diffpy_srfit-3.1.0rc0/PKG-INFO +216 -0
  5. diffpy_srfit-3.1.0rc0/README.rst +183 -0
  6. diffpy_srfit-3.1.0rc0/pyproject.toml +80 -0
  7. diffpy_srfit-3.1.0rc0/requirements/build.txt +0 -0
  8. diffpy_srfit-3.1.0rc0/requirements/conda.txt +3 -0
  9. diffpy_srfit-3.1.0rc0/requirements/docs.txt +5 -0
  10. diffpy_srfit-3.1.0rc0/requirements/pip.txt +3 -0
  11. diffpy_srfit-3.1.0rc0/requirements/test.txt +7 -0
  12. diffpy_srfit-3.1.0rc0/src/diffpy/__init__.py +15 -0
  13. diffpy_srfit-3.1.0rc0/src/diffpy/srfit/__init__.py +41 -0
  14. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/__init__.py +6 -7
  15. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/builder.py +139 -96
  16. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/equationmod.py +34 -48
  17. diffpy_srfit-3.1.0rc0/src/diffpy/srfit/equation/literals/__init__.py +71 -0
  18. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/literals/abcs.py +27 -9
  19. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/literals/argument.py +9 -8
  20. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/literals/literal.py +7 -7
  21. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/literals/operators.py +45 -38
  22. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/visitors/__init__.py +12 -11
  23. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/visitors/argfinder.py +4 -6
  24. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/visitors/printer.py +10 -13
  25. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/visitors/swapper.py +7 -11
  26. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/visitors/validator.py +16 -14
  27. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/equation/visitors/visitor.py +8 -8
  28. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/exceptions.py +3 -3
  29. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/__init__.py +22 -13
  30. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/calculator.py +16 -21
  31. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/configurable.py +5 -7
  32. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/constraint.py +14 -17
  33. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/fitcontribution.py +32 -45
  34. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/fithook.py +39 -34
  35. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/fitrecipe.py +130 -106
  36. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/fitresults.py +110 -110
  37. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/parameter.py +51 -53
  38. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/parameterset.py +2 -7
  39. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/profile.py +93 -66
  40. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/profilegenerator.py +28 -41
  41. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/profileparser.py +10 -13
  42. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/recipeorganizer.py +145 -121
  43. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/restraint.py +12 -15
  44. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/simplerecipe.py +24 -31
  45. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/fitbase/validatable.py +8 -10
  46. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/interface/__init__.py +9 -10
  47. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/interface/interface.py +35 -19
  48. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/pdf/__init__.py +2 -5
  49. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/pdf/basepdfgenerator.py +40 -43
  50. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/pdf/characteristicfunctions.py +148 -80
  51. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/pdf/debyepdfgenerator.py +13 -18
  52. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/pdf/pdfcontribution.py +33 -34
  53. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/pdf/pdfgenerator.py +11 -12
  54. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/pdf/pdfparser.py +33 -30
  55. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/sas/__init__.py +9 -7
  56. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/sas/prcalculator.py +17 -10
  57. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/sas/sasgenerator.py +2 -3
  58. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/sas/sasimport.py +14 -14
  59. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/sas/sasparameter.py +4 -6
  60. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/sas/sasparser.py +12 -12
  61. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/sas/sasprofile.py +5 -9
  62. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/structure/__init__.py +8 -6
  63. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/structure/basestructureparset.py +12 -15
  64. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/structure/bvsrestraint.py +12 -12
  65. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/structure/cctbxparset.py +63 -52
  66. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/structure/diffpyparset.py +89 -77
  67. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/structure/objcrystparset.py +279 -227
  68. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/structure/sgconstraints.py +174 -106
  69. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/structure/srrealparset.py +9 -13
  70. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/util/__init__.py +8 -11
  71. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/util/argbinders.py +4 -10
  72. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/util/inpututils.py +10 -9
  73. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/util/nameutils.py +7 -6
  74. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/util/observable.py +30 -38
  75. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/util/tagmanager.py +10 -32
  76. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy/srfit/util/weakrefcallable.py +20 -26
  77. diffpy_srfit-3.1.0rc0/src/diffpy/srfit/version.py +26 -0
  78. diffpy_srfit-3.1.0rc0/src/diffpy.srfit.egg-info/PKG-INFO +216 -0
  79. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy.srfit.egg-info/SOURCES.txt +47 -42
  80. diffpy_srfit-3.1.0rc0/src/diffpy.srfit.egg-info/requires.txt +3 -0
  81. diffpy_srfit-3.1.0rc0/tests/__init__.py +0 -0
  82. diffpy_srfit-3.1.0rc0/tests/conftest.py +142 -0
  83. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/debug.py +5 -6
  84. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/run.py +13 -3
  85. diffpy_srfit-3.1.0rc0/tests/test_builder.py +285 -0
  86. diffpy_srfit-3.1.0rc0/tests/test_characteristicfunctions.py +158 -0
  87. diffpy.srfit-1.3/src/diffpy/srfit/tests/testconstraint.py → diffpy_srfit-3.1.0rc0/tests/test_constraint.py +2 -3
  88. diffpy.srfit-1.3/src/diffpy/srfit/tests/testcontribution.py → diffpy_srfit-3.1.0rc0/tests/test_contribution.py +134 -135
  89. diffpy_srfit-3.1.0rc0/tests/test_diffpyparset.py +140 -0
  90. diffpy_srfit-3.1.0rc0/tests/test_equation.py +205 -0
  91. diffpy.srfit-1.3/src/diffpy/srfit/tests/testfitrecipe.py → diffpy_srfit-3.1.0rc0/tests/test_fitrecipe.py +69 -23
  92. diffpy_srfit-3.1.0rc0/tests/test_fitresults.py +93 -0
  93. diffpy.srfit-1.3/src/diffpy/srfit/tests/testliterals.py → diffpy_srfit-3.1.0rc0/tests/test_literals.py +35 -32
  94. diffpy.srfit-1.3/src/diffpy/srfit/tests/testobjcrystparset.py → diffpy_srfit-3.1.0rc0/tests/test_objcrystparset.py +226 -190
  95. diffpy.srfit-1.3/src/diffpy/srfit/tests/testparameter.py → diffpy_srfit-3.1.0rc0/tests/test_parameter.py +44 -37
  96. diffpy_srfit-3.1.0rc0/tests/test_pdf.py +317 -0
  97. diffpy.srfit-1.3/src/diffpy/srfit/tests/testprofile.py → diffpy_srfit-3.1.0rc0/tests/test_profile.py +73 -53
  98. diffpy.srfit-1.3/src/diffpy/srfit/tests/testprofilegenerator.py → diffpy_srfit-3.1.0rc0/tests/test_profilegenerator.py +4 -8
  99. diffpy.srfit-1.3/src/diffpy/srfit/tests/testrecipeorganizer.py → diffpy_srfit-3.1.0rc0/tests/test_recipeorganizer.py +106 -91
  100. diffpy_srfit-3.1.0rc0/tests/test_sas.py +164 -0
  101. diffpy_srfit-3.1.0rc0/tests/test_sgconstraints.py +250 -0
  102. diffpy.srfit-1.3/src/diffpy/srfit/tests/speedtest.py → diffpy_srfit-3.1.0rc0/tests/test_speed.py +116 -88
  103. diffpy.srfit-1.3/src/diffpy/srfit/tests/testtagmanager.py → diffpy_srfit-3.1.0rc0/tests/test_tagmanager.py +12 -16
  104. diffpy_srfit-3.1.0rc0/tests/test_version.py +10 -0
  105. diffpy.srfit-1.3/src/diffpy/srfit/tests/testvisitors.py → diffpy_srfit-3.1.0rc0/tests/test_visitors.py +54 -40
  106. diffpy.srfit-1.3/src/diffpy/srfit/tests/testweakrefcallable.py → diffpy_srfit-3.1.0rc0/tests/test_weakrefcallable.py +23 -36
  107. diffpy.srfit-1.3/src/diffpy/srfit/tests/testsgconstraints.py → diffpy_srfit-3.1.0rc0/tests/testdata/LaMnO3.stru +0 -229
  108. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/testdata/ni-q27r100-neutron.gr +10052 -10052
  109. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/testdata/results.res +4 -4
  110. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/testdata/sas_ascii_test_1.txt +24 -24
  111. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/testdata/sas_ellipsoid_testdata.txt +136 -136
  112. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/testdata/si-q27r60-xray.gr +6003 -6003
  113. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/testdata/testdata.txt +5999 -5999
  114. diffpy.srfit-1.3/AUTHORS.txt +0 -9
  115. diffpy.srfit-1.3/MANIFEST.in +0 -4
  116. diffpy.srfit-1.3/PKG-INFO +0 -23
  117. diffpy.srfit-1.3/README.rst +0 -145
  118. diffpy.srfit-1.3/setup.py +0 -111
  119. diffpy.srfit-1.3/src/diffpy/__init__.py +0 -27
  120. diffpy.srfit-1.3/src/diffpy/srfit/__init__.py +0 -60
  121. diffpy.srfit-1.3/src/diffpy/srfit/equation/literals/__init__.py +0 -56
  122. diffpy.srfit-1.3/src/diffpy/srfit/gitarchive.cfg +0 -5
  123. diffpy.srfit-1.3/src/diffpy/srfit/tests/__init__.py +0 -86
  124. diffpy.srfit-1.3/src/diffpy/srfit/tests/testbuilder.py +0 -291
  125. diffpy.srfit-1.3/src/diffpy/srfit/tests/testcharacteristicfunctions.py +0 -149
  126. diffpy.srfit-1.3/src/diffpy/srfit/tests/testdiffpyparset.py +0 -142
  127. diffpy.srfit-1.3/src/diffpy/srfit/tests/testequation.py +0 -194
  128. diffpy.srfit-1.3/src/diffpy/srfit/tests/testfitresults.py +0 -81
  129. diffpy.srfit-1.3/src/diffpy/srfit/tests/testpdf.py +0 -182
  130. diffpy.srfit-1.3/src/diffpy/srfit/tests/testsas.py +0 -122
  131. diffpy.srfit-1.3/src/diffpy/srfit/tests/utils.py +0 -93
  132. diffpy.srfit-1.3/src/diffpy/srfit/version.cfg +0 -6
  133. diffpy.srfit-1.3/src/diffpy/srfit/version.py +0 -36
  134. diffpy.srfit-1.3/src/diffpy.srfit.egg-info/PKG-INFO +0 -23
  135. diffpy.srfit-1.3/src/diffpy.srfit.egg-info/not-zip-safe +0 -1
  136. diffpy.srfit-1.3/LICENSE_DANSE.txt → diffpy_srfit-3.1.0rc0/LICENSE_DANSE.rst +0 -0
  137. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/setup.cfg +0 -0
  138. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy.srfit.egg-info/dependency_links.txt +0 -0
  139. {diffpy.srfit-1.3 → diffpy_srfit-3.1.0rc0}/src/diffpy.srfit.egg-info/top_level.txt +0 -0
  140. diffpy.srfit-1.3/src/diffpy/srfit/tests/testparameterset.py → diffpy_srfit-3.1.0rc0/tests/test_parameterset.py +1 -1
  141. diffpy.srfit-1.3/src/diffpy/srfit/tests/testrestraint.py → diffpy_srfit-3.1.0rc0/tests/test_restraint.py +4 -4
  142. {diffpy.srfit-1.3/src/diffpy/srfit → diffpy_srfit-3.1.0rc0}/tests/testdata/ni.cif +0 -0
@@ -0,0 +1,10 @@
1
+ Authors
2
+ =======
3
+
4
+ Christopher Farrow, Pavol Juhas, Simon J. L. Billinge, and members of the Billinge Group
5
+
6
+ Contributors
7
+ ------------
8
+
9
+ For a list of contributors, visit
10
+ https://github.com/diffpy/diffpy.srfit/graphs/contributors
@@ -9,9 +9,10 @@ Copyright (c) 2014, Australian Synchrotron Research Program Inc., ("ASRP")
9
9
  Copyright (c) 2006-2007, Board of Trustees of Michigan State University
10
10
  Copyright (c) 2008-2012, The Trustees of Columbia University in the City
11
11
  of New York
12
-
13
- Copyright (c) 2014-2017, Brookhaven Science Associates, Brookhaven National
12
+ Copyright (c) 2014-2019, Brookhaven Science Associates, Brookhaven National
14
13
  Laboratory
14
+ Copyright (c) 2020-2025, The Trustees of Columbia University in the City
15
+ of New York
15
16
 
16
17
 
17
18
  The "DiffPy-CMI" is distributed subject to the following license conditions:
@@ -0,0 +1,14 @@
1
+ graft src
2
+ graft tests
3
+ graft requirements
4
+
5
+ include AUTHORS.rst LICENSE*.rst README.rst
6
+
7
+ # Exclude all bytecode files and __pycache__ directories
8
+ global-exclude *.py[cod] # Exclude all .pyc, .pyo, and .pyd files.
9
+ global-exclude .DS_Store # Exclude Mac filesystem artifacts.
10
+ global-exclude __pycache__ # Exclude Python cache directories.
11
+ global-exclude .git* # Exclude git files and directories.
12
+ global-exclude .idea # Exclude PyCharm project settings.
13
+ exclude .codecov.yml
14
+ exclude .coveragerc
@@ -0,0 +1,216 @@
1
+ Metadata-Version: 2.4
2
+ Name: diffpy.srfit
3
+ Version: 3.1.0rc0
4
+ Summary: Configurable code for solving atomic structures.
5
+ Author-email: Simon Billinge <sb2896@columbia.edu>
6
+ Maintainer-email: Simon Billinge <sb2896@columbia.edu>
7
+ Project-URL: Homepage, https://github.com/diffpy/diffpy.srfit/
8
+ Project-URL: Issues, https://github.com/diffpy/diffpy.srfit/issues/
9
+ Keywords: regression,modelling,fitting,diffraction,PDF
10
+ Classifier: Development Status :: 5 - Production/Stable
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: BSD License
15
+ Classifier: Operating System :: MacOS :: MacOS X
16
+ Classifier: Operating System :: Microsoft :: Windows
17
+ Classifier: Operating System :: POSIX
18
+ Classifier: Operating System :: Unix
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Scientific/Engineering :: Physics
23
+ Classifier: Topic :: Scientific/Engineering :: Chemistry
24
+ Requires-Python: <3.14,>=3.11
25
+ Description-Content-Type: text/x-rst
26
+ License-File: LICENSE.rst
27
+ License-File: LICENSE_DANSE.rst
28
+ License-File: AUTHORS.rst
29
+ Requires-Dist: matplotlib
30
+ Requires-Dist: numpy
31
+ Requires-Dist: scipy
32
+ Dynamic: license-file
33
+
34
+ |Icon| |title|_
35
+ ===============
36
+
37
+ .. |title| replace:: diffpy.srfit
38
+ .. _title: https://diffpy.github.io/diffpy.srfit
39
+
40
+ .. |Icon| image:: https://avatars.githubusercontent.com/diffpy
41
+ :target: https://diffpy.github.io/diffpy.srfit
42
+ :height: 100px
43
+
44
+ |PyPI| |Forge| |PythonVersion| |PR|
45
+
46
+ |CI| |Codecov| |Black| |Tracking|
47
+
48
+ .. |Black| image:: https://img.shields.io/badge/code_style-black-black
49
+ :target: https://github.com/psf/black
50
+
51
+ .. |CI| image:: https://github.com/diffpy/diffpy.srfit/actions/workflows/matrix-and-codecov-on-merge-to-main.yml/badge.svg
52
+ :target: https://github.com/diffpy/diffpy.srfit/actions/workflows/matrix-and-codecov-on-merge-to-main.yml
53
+
54
+ .. |Codecov| image:: https://codecov.io/gh/diffpy/diffpy.srfit/branch/main/graph/badge.svg
55
+ :target: https://codecov.io/gh/diffpy/diffpy.srfit
56
+
57
+ .. |Forge| image:: https://img.shields.io/conda/vn/conda-forge/diffpy.srfit
58
+ :target: https://anaconda.org/conda-forge/diffpy.srfit
59
+
60
+ .. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff
61
+
62
+ .. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.srfit
63
+ :target: https://pypi.org/project/diffpy.srfit/
64
+
65
+ .. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.srfit
66
+ :target: https://pypi.org/project/diffpy.srfit/
67
+
68
+ .. |Tracking| image:: https://img.shields.io/badge/issue_tracking-github-blue
69
+ :target: https://github.com/diffpy/diffpy.srfit/issues
70
+
71
+ diffpy.srfit
72
+ ============
73
+
74
+ Configurable code for solving atomic structures.
75
+
76
+ The diffpy.srfit package provides the framework for building a global optimizer
77
+ on the fly from components such as function calculators (that calculate
78
+ different data spectra), regression algorithms and structure models. The
79
+ software is capable of co-refinement using multiple information sources or
80
+ models. It provides a uniform interface for various regression algorithms. The
81
+ target function being optimized can be specified by the user according to the
82
+ data available.
83
+
84
+ Within the diffpy.srfit framework, any parameter used in describing the
85
+ structure of a material can be passed as a refinable variable to the global
86
+ optimizer. Once parameters are declared as variables they can easily be turned
87
+ "on" or "off", i.e. fixed or allowed to vary. Additionally, variables may be
88
+ constrained to obey mathematical relationships with other parameters or
89
+ variables used in the structural model. Restraints can be applied to
90
+ variables, which adds a penalty to the refinement process commensurate with the
91
+ deviation from the known value or range. The cost function can also be
92
+ customized by the user. If the refinement contains multiple models, each model
93
+ can have its own cost function which will be properly weighted and combined to
94
+ obtain the total cost function. Additionally, diffpy.srfit is designed to be
95
+ extensible, allowing the user to integrate external calculators to perform
96
+ co-refinements with other techniques.
97
+
98
+ For more information about the diffpy.srfit library, please consult our `online documentation <https://diffpy.github.io/diffpy.srfit>`_.
99
+
100
+ Citation
101
+ --------
102
+
103
+ If you use diffpy.srfit in a scientific publication, we would like you to cite this package as
104
+
105
+
106
+ P. Juhás, C. L. Farrow, X. Yang, K. R. Knox and S. J. L. Billinge,
107
+ `Complex modeling: a strategy and software program for combining
108
+ multiple information sources to solve ill posed structure and
109
+ nanostructure inverse problems
110
+ <http://dx.doi.org/10.1107/S2053273315014473>`__,
111
+ *Acta Crystallogr. A* **71**, 562-568 (2015).
112
+
113
+ Installation
114
+ ------------
115
+
116
+ The preferred method is to use `Miniconda Python
117
+ <https://docs.conda.io/projects/miniconda/en/latest/miniconda-install.html>`_
118
+ and install from the "conda-forge" channel of Conda packages.
119
+
120
+ To add "conda-forge" to the conda channels, run the following in a terminal. ::
121
+
122
+ conda config --add channels conda-forge
123
+
124
+ We want to install our packages in a suitable conda environment.
125
+ The following creates and activates a new environment named ``diffpy.srfit_env`` ::
126
+
127
+ conda create -n diffpy.srfit_env diffpy.srfit
128
+ conda activate diffpy.srfit_env
129
+
130
+ To confirm that the installation was successful, type ::
131
+
132
+ python -c "import diffpy.srfit; print(diffpy.srfit.__version__)"
133
+
134
+ The output should print the latest version displayed on the badges above.
135
+
136
+ This will install the minimal `diffpy.srfit` installation. It will often be used
137
+ as along with other packages for manipulating and computing crystal structures
138
+ and so on. We also therefore recommend installing the following:
139
+
140
+ * ``diffpy.structure`` - crystal structure container and parsers,
141
+ https://github.com/diffpy/diffpy.structure
142
+ * ``pyobjcryst`` - Crystal and Molecule storage, rigid units, bond
143
+ length and bond angle restraints, https://github.com/diffpy/pyobjcryst
144
+
145
+ Optimizations involving pair distribution functions PDF or bond valence
146
+ sums require
147
+
148
+ * ``diffpy.srreal`` - python library for PDF calculation,
149
+ https://github.com/diffpy/diffpy.srreal
150
+
151
+ Optimizations involving small angle scattering or shape characteristic
152
+ functions from the diffpy.srfit.sas module require
153
+
154
+ * ``sas`` - module for calculation of P(R) in small-angle scattering
155
+ from the SasView project, http://www.sasview.org
156
+
157
+ Fallback Installation
158
+ ---------------------
159
+
160
+ If the above does not work, you can use ``pip`` to download and install the latest release from
161
+ `Python Package Index <https://pypi.python.org>`_.
162
+ To install using ``pip`` into your ``diffpy.srfit_env`` environment, type ::
163
+
164
+ pip install diffpy.srfit
165
+
166
+ If you prefer to install from sources, after installing the dependencies, obtain the source archive from
167
+ `GitHub <https://github.com/diffpy/diffpy.srfit/>`_. Once installed, ``cd`` into your ``diffpy.srfit`` directory
168
+ and run the following ::
169
+
170
+ pip install .
171
+
172
+ Getting Started
173
+ ---------------
174
+
175
+ You may consult our `online documentation <https://diffpy.github.io/diffpy.srfit>`_ for tutorials and API references.
176
+
177
+ Support and Contribute
178
+ ----------------------
179
+
180
+ If you see a bug or want to request a feature, please `report it as an issue <https://github.com/diffpy/diffpy.srfit/issues>`_ and/or `submit a fix as a PR <https://github.com/diffpy/diffpy.srfit/pulls>`_.
181
+
182
+ Feel free to fork the project and contribute. To install diffpy.srfit
183
+ in a development mode, with its sources being directly used by Python
184
+ rather than copied to a package directory, use the following in the root
185
+ directory ::
186
+
187
+ pip install -e .
188
+
189
+ To ensure code quality and to prevent accidental commits into the default branch, please set up the use of our pre-commit
190
+ hooks.
191
+
192
+ 1. Install pre-commit in your working environment by running ``conda install pre-commit``.
193
+
194
+ 2. Initialize pre-commit (one time only) ``pre-commit install``.
195
+
196
+ Thereafter your code will be linted by black and isort and checked against flake8 before you can commit.
197
+ If it fails by black or isort, just rerun and it should pass (black and isort will modify the files so should
198
+ pass after they are modified). If the flake8 test fails please see the error messages and fix them manually before
199
+ trying to commit again.
200
+
201
+ Improvements and fixes are always appreciated.
202
+
203
+ Before contributing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.srfit/blob/main/CODE_OF_CONDUCT.rst>`_.
204
+
205
+ Contact
206
+ -------
207
+
208
+ For more information on diffpy.srfit please visit the project `web-page <https://diffpy.github.io/>`_ or email Simon Billinge at sb2896@columbia.edu.
209
+
210
+ Acknowledgements
211
+ ----------------
212
+
213
+ ``diffpy.srfit`` is built and maintained with `scikit-package <https://scikit-package.github.io/scikit-package/>`_.
214
+
215
+ The source code in *observable.py* was derived from the 1.0 version
216
+ of the Caltech "Pyre" project.
@@ -0,0 +1,183 @@
1
+ |Icon| |title|_
2
+ ===============
3
+
4
+ .. |title| replace:: diffpy.srfit
5
+ .. _title: https://diffpy.github.io/diffpy.srfit
6
+
7
+ .. |Icon| image:: https://avatars.githubusercontent.com/diffpy
8
+ :target: https://diffpy.github.io/diffpy.srfit
9
+ :height: 100px
10
+
11
+ |PyPI| |Forge| |PythonVersion| |PR|
12
+
13
+ |CI| |Codecov| |Black| |Tracking|
14
+
15
+ .. |Black| image:: https://img.shields.io/badge/code_style-black-black
16
+ :target: https://github.com/psf/black
17
+
18
+ .. |CI| image:: https://github.com/diffpy/diffpy.srfit/actions/workflows/matrix-and-codecov-on-merge-to-main.yml/badge.svg
19
+ :target: https://github.com/diffpy/diffpy.srfit/actions/workflows/matrix-and-codecov-on-merge-to-main.yml
20
+
21
+ .. |Codecov| image:: https://codecov.io/gh/diffpy/diffpy.srfit/branch/main/graph/badge.svg
22
+ :target: https://codecov.io/gh/diffpy/diffpy.srfit
23
+
24
+ .. |Forge| image:: https://img.shields.io/conda/vn/conda-forge/diffpy.srfit
25
+ :target: https://anaconda.org/conda-forge/diffpy.srfit
26
+
27
+ .. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff
28
+
29
+ .. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.srfit
30
+ :target: https://pypi.org/project/diffpy.srfit/
31
+
32
+ .. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.srfit
33
+ :target: https://pypi.org/project/diffpy.srfit/
34
+
35
+ .. |Tracking| image:: https://img.shields.io/badge/issue_tracking-github-blue
36
+ :target: https://github.com/diffpy/diffpy.srfit/issues
37
+
38
+ diffpy.srfit
39
+ ============
40
+
41
+ Configurable code for solving atomic structures.
42
+
43
+ The diffpy.srfit package provides the framework for building a global optimizer
44
+ on the fly from components such as function calculators (that calculate
45
+ different data spectra), regression algorithms and structure models. The
46
+ software is capable of co-refinement using multiple information sources or
47
+ models. It provides a uniform interface for various regression algorithms. The
48
+ target function being optimized can be specified by the user according to the
49
+ data available.
50
+
51
+ Within the diffpy.srfit framework, any parameter used in describing the
52
+ structure of a material can be passed as a refinable variable to the global
53
+ optimizer. Once parameters are declared as variables they can easily be turned
54
+ "on" or "off", i.e. fixed or allowed to vary. Additionally, variables may be
55
+ constrained to obey mathematical relationships with other parameters or
56
+ variables used in the structural model. Restraints can be applied to
57
+ variables, which adds a penalty to the refinement process commensurate with the
58
+ deviation from the known value or range. The cost function can also be
59
+ customized by the user. If the refinement contains multiple models, each model
60
+ can have its own cost function which will be properly weighted and combined to
61
+ obtain the total cost function. Additionally, diffpy.srfit is designed to be
62
+ extensible, allowing the user to integrate external calculators to perform
63
+ co-refinements with other techniques.
64
+
65
+ For more information about the diffpy.srfit library, please consult our `online documentation <https://diffpy.github.io/diffpy.srfit>`_.
66
+
67
+ Citation
68
+ --------
69
+
70
+ If you use diffpy.srfit in a scientific publication, we would like you to cite this package as
71
+
72
+
73
+ P. Juhás, C. L. Farrow, X. Yang, K. R. Knox and S. J. L. Billinge,
74
+ `Complex modeling: a strategy and software program for combining
75
+ multiple information sources to solve ill posed structure and
76
+ nanostructure inverse problems
77
+ <http://dx.doi.org/10.1107/S2053273315014473>`__,
78
+ *Acta Crystallogr. A* **71**, 562-568 (2015).
79
+
80
+ Installation
81
+ ------------
82
+
83
+ The preferred method is to use `Miniconda Python
84
+ <https://docs.conda.io/projects/miniconda/en/latest/miniconda-install.html>`_
85
+ and install from the "conda-forge" channel of Conda packages.
86
+
87
+ To add "conda-forge" to the conda channels, run the following in a terminal. ::
88
+
89
+ conda config --add channels conda-forge
90
+
91
+ We want to install our packages in a suitable conda environment.
92
+ The following creates and activates a new environment named ``diffpy.srfit_env`` ::
93
+
94
+ conda create -n diffpy.srfit_env diffpy.srfit
95
+ conda activate diffpy.srfit_env
96
+
97
+ To confirm that the installation was successful, type ::
98
+
99
+ python -c "import diffpy.srfit; print(diffpy.srfit.__version__)"
100
+
101
+ The output should print the latest version displayed on the badges above.
102
+
103
+ This will install the minimal `diffpy.srfit` installation. It will often be used
104
+ as along with other packages for manipulating and computing crystal structures
105
+ and so on. We also therefore recommend installing the following:
106
+
107
+ * ``diffpy.structure`` - crystal structure container and parsers,
108
+ https://github.com/diffpy/diffpy.structure
109
+ * ``pyobjcryst`` - Crystal and Molecule storage, rigid units, bond
110
+ length and bond angle restraints, https://github.com/diffpy/pyobjcryst
111
+
112
+ Optimizations involving pair distribution functions PDF or bond valence
113
+ sums require
114
+
115
+ * ``diffpy.srreal`` - python library for PDF calculation,
116
+ https://github.com/diffpy/diffpy.srreal
117
+
118
+ Optimizations involving small angle scattering or shape characteristic
119
+ functions from the diffpy.srfit.sas module require
120
+
121
+ * ``sas`` - module for calculation of P(R) in small-angle scattering
122
+ from the SasView project, http://www.sasview.org
123
+
124
+ Fallback Installation
125
+ ---------------------
126
+
127
+ If the above does not work, you can use ``pip`` to download and install the latest release from
128
+ `Python Package Index <https://pypi.python.org>`_.
129
+ To install using ``pip`` into your ``diffpy.srfit_env`` environment, type ::
130
+
131
+ pip install diffpy.srfit
132
+
133
+ If you prefer to install from sources, after installing the dependencies, obtain the source archive from
134
+ `GitHub <https://github.com/diffpy/diffpy.srfit/>`_. Once installed, ``cd`` into your ``diffpy.srfit`` directory
135
+ and run the following ::
136
+
137
+ pip install .
138
+
139
+ Getting Started
140
+ ---------------
141
+
142
+ You may consult our `online documentation <https://diffpy.github.io/diffpy.srfit>`_ for tutorials and API references.
143
+
144
+ Support and Contribute
145
+ ----------------------
146
+
147
+ If you see a bug or want to request a feature, please `report it as an issue <https://github.com/diffpy/diffpy.srfit/issues>`_ and/or `submit a fix as a PR <https://github.com/diffpy/diffpy.srfit/pulls>`_.
148
+
149
+ Feel free to fork the project and contribute. To install diffpy.srfit
150
+ in a development mode, with its sources being directly used by Python
151
+ rather than copied to a package directory, use the following in the root
152
+ directory ::
153
+
154
+ pip install -e .
155
+
156
+ To ensure code quality and to prevent accidental commits into the default branch, please set up the use of our pre-commit
157
+ hooks.
158
+
159
+ 1. Install pre-commit in your working environment by running ``conda install pre-commit``.
160
+
161
+ 2. Initialize pre-commit (one time only) ``pre-commit install``.
162
+
163
+ Thereafter your code will be linted by black and isort and checked against flake8 before you can commit.
164
+ If it fails by black or isort, just rerun and it should pass (black and isort will modify the files so should
165
+ pass after they are modified). If the flake8 test fails please see the error messages and fix them manually before
166
+ trying to commit again.
167
+
168
+ Improvements and fixes are always appreciated.
169
+
170
+ Before contributing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.srfit/blob/main/CODE_OF_CONDUCT.rst>`_.
171
+
172
+ Contact
173
+ -------
174
+
175
+ For more information on diffpy.srfit please visit the project `web-page <https://diffpy.github.io/>`_ or email Simon Billinge at sb2896@columbia.edu.
176
+
177
+ Acknowledgements
178
+ ----------------
179
+
180
+ ``diffpy.srfit`` is built and maintained with `scikit-package <https://scikit-package.github.io/scikit-package/>`_.
181
+
182
+ The source code in *observable.py* was derived from the 1.0 version
183
+ of the Caltech "Pyre" project.
@@ -0,0 +1,80 @@
1
+ [build-system]
2
+ requires = ["setuptools>=62.0", "setuptools-git-versioning>=2.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "diffpy.srfit"
7
+ dynamic=['version', 'dependencies']
8
+ authors = [
9
+ { name="Simon Billinge", email="sb2896@columbia.edu" },
10
+ ]
11
+ maintainers = [
12
+ { name="Simon Billinge", email="sb2896@columbia.edu" },
13
+ ]
14
+ description = "Configurable code for solving atomic structures."
15
+ keywords = ['regression', 'modelling', 'fitting', 'diffraction', 'PDF']
16
+ readme = "README.rst"
17
+ requires-python = ">=3.11, <3.14"
18
+ classifiers = [
19
+ 'Development Status :: 5 - Production/Stable',
20
+ 'Environment :: Console',
21
+ 'Intended Audience :: Developers',
22
+ 'Intended Audience :: Science/Research',
23
+ 'License :: OSI Approved :: BSD License',
24
+ 'Operating System :: MacOS :: MacOS X',
25
+ 'Operating System :: Microsoft :: Windows',
26
+ 'Operating System :: POSIX',
27
+ 'Operating System :: Unix',
28
+ 'Programming Language :: Python :: 3.11',
29
+ 'Programming Language :: Python :: 3.12',
30
+ 'Programming Language :: Python :: 3.13',
31
+ 'Topic :: Scientific/Engineering :: Physics',
32
+ 'Topic :: Scientific/Engineering :: Chemistry',
33
+ ]
34
+
35
+ [project.urls]
36
+ Homepage = "https://github.com/diffpy/diffpy.srfit/"
37
+ Issues = "https://github.com/diffpy/diffpy.srfit/issues/"
38
+
39
+ [tool.setuptools-git-versioning]
40
+ enabled = true
41
+ template = "{tag}"
42
+ dev_template = "{tag}"
43
+ dirty_template = "{tag}"
44
+
45
+ [tool.setuptools.packages.find]
46
+ where = ["src"] # list of folders that contain the packages (["."] by default)
47
+ include = ["*"] # package names should match these glob patterns (["*"] by default)
48
+ exclude = [] # exclude packages matching these glob patterns (empty by default)
49
+ namespaces = false # to disable scanning PEP 420 namespaces (true by default)
50
+
51
+ [tool.setuptools.dynamic]
52
+ dependencies = {file = ["requirements/pip.txt"]}
53
+
54
+ [tool.codespell]
55
+ exclude-file = ".codespell/ignore_lines.txt"
56
+ ignore-words = ".codespell/ignore_words.txt"
57
+ skip = "*.cif,*.dat"
58
+
59
+ [tool.black]
60
+ line-length = 79
61
+ include = '\.pyi?$'
62
+ exclude = '''
63
+ /(
64
+ \.git
65
+ | \.hg
66
+ | \.mypy_cache
67
+ | \.tox
68
+ | \.venv
69
+ | \.rst
70
+ | \.txt
71
+ | _build
72
+ | buck-out
73
+ | build
74
+ | dist
75
+
76
+ # The following are specific to Black, you probably don't want those.
77
+ | blib2to3
78
+ | tests/data
79
+ )/
80
+ '''
File without changes
@@ -0,0 +1,3 @@
1
+ matplotlib-base
2
+ numpy
3
+ scipy
@@ -0,0 +1,5 @@
1
+ sphinx
2
+ sphinx_rtd_theme
3
+ sphinx-copybutton
4
+ doctr
5
+ m2r
@@ -0,0 +1,3 @@
1
+ matplotlib
2
+ numpy
3
+ scipy
@@ -0,0 +1,7 @@
1
+ flake8
2
+ pytest
3
+ codecov
4
+ coverage
5
+ pytest-cov
6
+ pytest-env
7
+ sympy
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env python
2
+ ##############################################################################
3
+ #
4
+ # (c) 2008-2025 The Trustees of Columbia University in the City of New York.
5
+ # All rights reserved.
6
+ #
7
+ # File coded by: Chris Farrow and Billinge Group members and community
8
+ # contributors.
9
+ #
10
+ # See GitHub contributions for a more detailed list of contributors.
11
+ # https://github.com/diffpy/diffpy.srfit/graphs/contributors
12
+ #
13
+ # See LICENSE.rst for license information.
14
+ #
15
+ ##############################################################################
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env python
2
+ ##############################################################################
3
+ #
4
+ # (c) 2008-2025 The Trustees of Columbia University in the City of New York.
5
+ # All rights reserved.
6
+ #
7
+ # File coded by: Christopher Farrow, Pavol Juhas, and members of the
8
+ # Billinge Group.
9
+ #
10
+ # See GitHub contributions for a more detailed list of contributors.
11
+ # https://github.com/diffpy/diffpy.srfit/graphs/contributors
12
+ #
13
+ # See LICENSE.rst for license information.
14
+ #
15
+ ##############################################################################
16
+ """Complex modeling framework for structure refinement and solution.
17
+
18
+ SrFit is a tool for coherently combining known information about a
19
+ material to derive other properties, in particular material structure.
20
+ SrFit allows the customization and creation of structure
21
+ representations, profile calculators, constraints, restraints and file
22
+ input parsers. The customized pieces can be glued together within SrFit
23
+ to optimize a structure, or other physically relevant information from
24
+ one or more experimental profiles. Other known information about the
25
+ system of interest can be included with arbitrarily complex constraints
26
+ and restraints. In this way, the end user creates a customized fitting
27
+ application that suits the problem to the available information.
28
+
29
+ The subpackages herein define various pieces of the SrFit framework.
30
+ Developers are encouraged to work through the examples described in the
31
+ documentation to learn how to use and customize the various parts of
32
+ SrFit.
33
+ """
34
+
35
+ # package version
36
+ from diffpy.srfit.version import __version__
37
+
38
+ # silence the pyflakes syntax checker
39
+ assert __version__ or True
40
+
41
+ # End of file
@@ -12,21 +12,20 @@
12
12
  # See LICENSE_DANSE.txt for license information.
13
13
  #
14
14
  ##############################################################################
15
-
16
15
  """The core equation evaluator for diffpy.srfit.
17
16
 
18
- This package contains modules and subpackages that are used to create Equation
19
- objects. The Equation class is an encapsulation of a lazy evaluation network
20
- that is used throughout SrFit. The EquationsFactory class is used to create
21
- Equation objects from strings and can incorporate user-defined functions as
22
- well as default operations.
17
+ This package contains modules and subpackages that are used to create
18
+ Equation objects. The Equation class is an encapsulation of a lazy
19
+ evaluation network that is used throughout SrFit. The EquationsFactory
20
+ class is used to create Equation objects from strings and can
21
+ incorporate user-defined functions as well as default operations.
23
22
 
24
23
  The subpackages define various pieces of the evaluation network.
25
24
  """
26
25
 
27
26
  __all__ = ["Equation"]
28
27
 
29
- from diffpy.srfit.equation.equationmod import Equation
30
28
 
29
+ from diffpy.srfit.equation.equationmod import Equation
31
30
 
32
31
  # End of file