Skip to content

Commit 77e2493

Browse files
Restructure fitting components into dedicated analysis/fitting module (#89)
* Create a new fitting module directory * Reorganizes fitting tracker module structure * Refactors minimizer structure and imports * Refactors reliability factors into metrics module * Reorganizes import statements for clarity * Enforces absolute imports for consistency * Updates pixi.lock * Pins dependencies in pixi.toml * Reorganizes import statements in minimization module
1 parent c280be5 commit 77e2493

23 files changed

+189
-188
lines changed

pixi.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pixi.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ channels = ["conda-forge"]
2020
# Default feature configuration
2121

2222
[dependencies] # == [feature.default.dependencies]
23-
pip = "*" # Required to install from PyPI
24-
jupyterlab = "*" # JupyterLab for notebooks
23+
pip = ">=25.2,<26" # Required to install from PyPI
24+
jupyterlab = ">=4.4.7,<5" # JupyterLab for notebooks
2525

2626
[target.win-64.dependencies]
2727
libcblas = "*" # CBLAS library for linear algebra. Required for pdffit2.
2828

2929
[pypi-dependencies] # == [feature.default.pypi-dependencies]
30-
pixi-kernel = "*" # Pixi Jupyter kernel integration
30+
pixi-kernel = ">=0.6.6, <0.7" # Pixi Jupyter kernel integration
3131

3232
# Extra features for different Python versions
3333

pyproject.toml

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -142,18 +142,22 @@ line-length = 127
142142

143143
[tool.ruff.lint]
144144
select = [
145-
'E', # General PEP 8 style errors
146-
'E9', # Runtime errors (e.g., syntax errors, undefined names)
147-
'F', # Pyflakes-specific checks (e.g., unused variables, imports)
148-
'F63', # Issues related to invalid escape sequences in strings
149-
'F7', # Type-related errors (e.g., mismatched argument types, unsupported operations)
150-
'F82', # Import-related errors (e.g., unresolved imports, reimported modules)
151-
'I', # Import sorting issues (e.g., unsorted imports)
152-
'S', # Security-related issues (e.g., use of insecure functions or libraries)
153-
'W', # General PEP 8 warnings (e.g., lines too long, trailing whitespace)
154-
'TCH', # Type checking issues (e.g., incompatible types, missing type annotations)
145+
'E', # General PEP 8 style errors
146+
'E9', # Runtime errors (e.g., syntax errors, undefined names)
147+
'F', # Pyflakes-specific checks (e.g., unused variables, imports)
148+
'F63', # Issues related to invalid escape sequences in strings
149+
'F7', # Type-related errors (e.g., mismatched argument types, unsupported operations)
150+
'F82', # Import-related errors (e.g., unresolved imports, reimported modules)
151+
'I', # Import sorting issues (e.g., unsorted imports)
152+
'S', # Security-related issues (e.g., use of insecure functions or libraries)
153+
'W', # General PEP 8 warnings (e.g., lines too long, trailing whitespace)
154+
'TCH', # Type checking issues (e.g., incompatible types, missing type annotations)
155+
'TID252', # Enforces absolute imports over relative imports
155156
]
156157

158+
[tool.ruff.lint.flake8-tidy-imports]
159+
ban-relative-imports = 'all'
160+
157161
[tool.ruff.lint.isort]
158162
force-single-line = true
159163

src/easydiffraction/analysis/analysis.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@
77

88
import pandas as pd
99

10+
from easydiffraction.analysis.calculators.calculator_factory import CalculatorFactory
11+
from easydiffraction.analysis.collections.aliases import Aliases
12+
from easydiffraction.analysis.collections.constraints import Constraints
13+
from easydiffraction.analysis.collections.joint_fit_experiments import JointFitExperiments
14+
from easydiffraction.analysis.minimization import DiffractionMinimizer
15+
from easydiffraction.analysis.minimizers.minimizer_factory import MinimizerFactory
1016
from easydiffraction.core.objects import Descriptor
1117
from easydiffraction.core.objects import Parameter
1218
from easydiffraction.core.singletons import ConstraintsHandler
@@ -16,13 +22,6 @@
1622
from easydiffraction.utils.utils import render_cif
1723
from easydiffraction.utils.utils import render_table
1824

19-
from .calculators.calculator_factory import CalculatorFactory
20-
from .collections.aliases import Aliases
21-
from .collections.constraints import Constraints
22-
from .collections.joint_fit_experiments import JointFitExperiments
23-
from .minimization import DiffractionMinimizer
24-
from .minimizers.minimizer_factory import MinimizerFactory
25-
2625

2726
class Analysis:
2827
_calculator = CalculatorFactory.create_calculator('cryspy')

src/easydiffraction/analysis/calculation.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,11 @@
55
from typing import List
66
from typing import Optional
77

8+
from easydiffraction.analysis.calculators.calculator_factory import CalculatorFactory
89
from easydiffraction.experiments.experiment import Experiment
910
from easydiffraction.experiments.experiments import Experiments
1011
from easydiffraction.sample_models.sample_models import SampleModels
1112

12-
from .calculators.calculator_factory import CalculatorFactory
13-
1413

1514
class DiffractionCalculator:
1615
"""

src/easydiffraction/analysis/calculators/calculator_crysfml.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@
88

99
import numpy as np
1010

11+
from easydiffraction.analysis.calculators.calculator_base import CalculatorBase
1112
from easydiffraction.experiments.experiment import Experiment
1213
from easydiffraction.experiments.experiments import Experiments
1314
from easydiffraction.sample_models.sample_models import SampleModel
1415
from easydiffraction.sample_models.sample_models import SampleModels
1516

16-
from .calculator_base import CalculatorBase
17-
1817
try:
1918
from pycrysfml import cfml_py_utilities
2019

src/easydiffraction/analysis/calculators/calculator_cryspy.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,11 @@
1111

1212
import numpy as np
1313

14+
from easydiffraction.analysis.calculators.calculator_base import CalculatorBase
1415
from easydiffraction.experiments.components.experiment_type import BeamModeEnum
1516
from easydiffraction.experiments.experiment import Experiment
1617
from easydiffraction.sample_models.sample_model import SampleModel
1718

18-
from .calculator_base import CalculatorBase
19-
2019
try:
2120
import cryspy
2221
from cryspy.H_functions_global.function_1_cryspy_objects import str_to_globaln

src/easydiffraction/analysis/calculators/calculator_factory.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,14 @@
77
from typing import Type
88
from typing import Union
99

10+
from easydiffraction.analysis.calculators.calculator_base import CalculatorBase
11+
from easydiffraction.analysis.calculators.calculator_crysfml import CrysfmlCalculator
12+
from easydiffraction.analysis.calculators.calculator_cryspy import CryspyCalculator
13+
from easydiffraction.analysis.calculators.calculator_pdffit import PdffitCalculator
1014
from easydiffraction.utils.formatting import error
1115
from easydiffraction.utils.formatting import paragraph
1216
from easydiffraction.utils.utils import render_table
1317

14-
from .calculator_base import CalculatorBase
15-
from .calculator_crysfml import CrysfmlCalculator
16-
from .calculator_cryspy import CryspyCalculator
17-
from .calculator_pdffit import PdffitCalculator
18-
1918

2019
class CalculatorFactory:
2120
_potential_calculators: Dict[str, Dict[str, Union[str, Type[CalculatorBase]]]] = {

src/easydiffraction/analysis/calculators/calculator_pdffit.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66

77
import numpy as np
88

9+
from easydiffraction.analysis.calculators.calculator_base import CalculatorBase
910
from easydiffraction.experiments.experiment import Experiment
1011
from easydiffraction.sample_models.sample_model import SampleModel
1112

12-
from .calculator_base import CalculatorBase
13-
1413
try:
1514
from diffpy.pdffit2 import PdfFit as pdffit
1615
from diffpy.pdffit2 import redirect_stdout
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# SPDX-FileCopyrightText: 2021-2025 EasyDiffraction Python Library contributors <https://github.com/easyscience/diffraction-lib>
2+
# SPDX-License-Identifier: BSD-3-Clause
3+

0 commit comments

Comments
 (0)