Skip to content

Commit 5fb2d48

Browse files
reformat get_diameter function and restore main module (remove subcommand)
1 parent fd8ca3b commit 5fb2d48

File tree

4 files changed

+8
-55
lines changed

4 files changed

+8
-55
lines changed

news/getmud.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
**Added:**
22

3-
* New ``getmuD`` module with the ``compute_diameter`` function to calculate capillary diameter.
4-
* CLI now supports ``compute_diameter`` function for target muD via a subcommand.
3+
* New ``getmuD`` module with ``get_diameter`` function to calculate capillary diameter.
54

65
**Changed:**
76

src/diffpy/labpdfproc/getmud.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from diffpy.utils.tools import compute_mu_using_xraydb
22

33

4-
def compute_diameter(
4+
def get_diameter(
55
mud,
66
sample_composition,
77
xray_energy,
@@ -30,10 +30,9 @@ def compute_diameter(
3030
diameter : float
3131
Computed capillary diameter in mm.
3232
"""
33-
mu = compute_mu_using_xraydb(
33+
return mud / compute_mu_using_xraydb(
3434
sample_composition,
3535
xray_energy,
3636
sample_mass_density,
3737
packing_fraction,
3838
)
39-
return mud / mu

src/diffpy/labpdfproc/labpdfprocapp.py

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from gooey import Gooey, GooeyParser
55

66
from diffpy.labpdfproc.functions import CVE_METHODS, apply_corr, compute_cve
7-
from diffpy.labpdfproc.getmud import compute_diameter
87
from diffpy.labpdfproc.tools import (
98
known_sources,
109
load_metadata,
@@ -208,43 +207,7 @@ def _add_mud_selection_group(p, is_gui=False):
208207
return p
209208

210209

211-
def _add_subparsers(p):
212-
"""Add subcommands for getmud module."""
213-
subparsers = p.add_subparsers(dest="subcommand")
214-
get_d_parser = subparsers.add_parser(
215-
"get-diameter", help="Compute capillary diameter."
216-
)
217-
get_d_parser.add_argument(
218-
"mud", type=float, help="The target muD of the sample."
219-
)
220-
get_d_parser.add_argument(
221-
"composition",
222-
help="The chemical formula of the material (e.g., ZrO2).",
223-
)
224-
get_d_parser.add_argument(
225-
"energy", type=float, help="The X-ray energy in keV."
226-
)
227-
get_d_parser.add_argument(
228-
"mass_density",
229-
type=float,
230-
help="The sample mass density in g/cm^3.",
231-
default=None,
232-
)
233-
get_d_parser.set_defaults(func=compute_diameter)
234-
return p
235-
236-
237210
def get_args(override_cli_inputs=None):
238-
"""Parse CLI arguments for main processing or subcommand mode."""
239-
# User enters one of the subcommands
240-
cli_args = override_cli_inputs or sys.argv[1:]
241-
p = ArgumentParser()
242-
p = _add_subparsers(p)
243-
subcommands = ["get-diameter"]
244-
if cli_args and cli_args[0] in subcommands:
245-
return p.parse_args(override_cli_inputs)
246-
247-
# User does not enter subcommands
248211
p = ArgumentParser()
249212
p = _add_mud_selection_group(p, is_gui=False)
250213
for arg in _define_arguments():
@@ -275,16 +238,6 @@ def main():
275238
if len(sys.argv) == 1 or "--gui" in sys.argv
276239
else get_args()
277240
)
278-
if getattr(args, "subcommand", None) == "get-diameter":
279-
diameter = args.func(
280-
mud=args.mud,
281-
sample_composition=args.composition,
282-
xray_energy=args.energy,
283-
sample_mass_density=args.mass_density,
284-
)
285-
print(f"Capillary Diameter: {diameter:.2f} mm")
286-
return
287-
288241
args = preprocessing_args(args)
289242

290243
for filepath in args.input_paths:

tests/test_getmud.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import pytest
22

3-
from diffpy.labpdfproc.getmud import compute_diameter
3+
from diffpy.labpdfproc.getmud import get_diameter
44

55

66
@pytest.mark.parametrize(
77
"inputs, expected_diameter",
88
[
9-
(
9+
( # C1: User specifies target mud,
10+
# sample composition, energy, and mass density
11+
# expect to return diameter
1012
{
1113
"mud": 2.0,
1214
"sample_composition": "ZrO2",
@@ -18,7 +20,7 @@
1820
],
1921
)
2022
def test_compute_diameter(inputs, expected_diameter):
21-
actual_diameter = compute_diameter(**inputs)
23+
actual_diameter = get_diameter(**inputs)
2224
assert actual_diameter == pytest.approx(
2325
expected_diameter, rel=0.01, abs=0.1
2426
)

0 commit comments

Comments
 (0)