Skip to content

Commit f0d626e

Browse files
added functionality to load input files using try except, added user_filesystem for testing output and input directories but probably contains errors
1 parent 5455390 commit f0d626e

File tree

3 files changed

+68
-57
lines changed

3 files changed

+68
-57
lines changed

src/diffpy/labpdfproc/labpdfprocapp.py

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import glob
12
import sys
23
from argparse import ArgumentParser
34
from pathlib import Path
@@ -67,42 +68,49 @@ def main():
6768
args = set_input_directory(args)
6869
args.output_directory = set_output_directory(args)
6970
args.wavelength = set_wavelength(args)
71+
input_files = glob.glob(str(args.input_directory) + "/*", recursive=True)
7072

71-
filepath = Path(args.input_file)
72-
outfilestem = filepath.stem + "_corrected"
73-
corrfilestem = filepath.stem + "_cve"
74-
outfile = args.output_directory / (outfilestem + ".chi")
75-
corrfile = args.output_directory / (corrfilestem + ".chi")
73+
for input_file in input_files:
74+
filepath = Path(input_file)
75+
outfilestem = filepath.stem + "_corrected"
76+
corrfilestem = filepath.stem + "_cve"
77+
outfile = args.output_directory / (outfilestem + ".chi")
78+
corrfile = args.output_directory / (corrfilestem + ".chi")
7679

77-
if outfile.exists() and not args.force_overwrite:
78-
sys.exit(
79-
f"Output file {str(outfile)} already exists. Please rerun "
80-
f"specifying -f if you want to overwrite it."
81-
)
82-
if corrfile.exists() and args.output_correction and not args.force_overwrite:
83-
sys.exit(
84-
f"Corrections file {str(corrfile)} was requested and already "
85-
f"exists. Please rerun specifying -f if you want to overwrite it."
86-
)
80+
if outfile.exists() and not args.force_overwrite:
81+
sys.exit(
82+
f"Output file {str(outfile)} already exists. Please rerun "
83+
f"specifying -f if you want to overwrite it."
84+
)
85+
if corrfile.exists() and args.output_correction and not args.force_overwrite:
86+
sys.exit(
87+
f"Corrections file {str(corrfile)} was requested and already "
88+
f"exists. Please rerun specifying -f if you want to overwrite it."
89+
)
8790

88-
input_pattern = Diffraction_object(wavelength=args.wavelength)
89-
xarray, yarray = loadData(args.input_file, unpack=True)
90-
input_pattern.insert_scattering_quantity(
91-
xarray,
92-
yarray,
93-
"tth",
94-
scat_quantity="x-ray",
95-
name=str(args.input_file),
96-
metadata={"muD": args.mud, "anode_type": args.anode_type},
97-
)
91+
input_pattern = Diffraction_object(wavelength=args.wavelength)
92+
93+
try:
94+
xarray, yarray = loadData(args.input_file, unpack=True)
95+
except Exception as e:
96+
raise ValueError(f"Failed to load data from {filepath}: {e}.")
97+
98+
input_pattern.insert_scattering_quantity(
99+
xarray,
100+
yarray,
101+
"tth",
102+
scat_quantity="x-ray",
103+
name=str(args.input_file),
104+
metadata={"muD": args.mud, "anode_type": args.anode_type},
105+
)
98106

99-
absorption_correction = compute_cve(input_pattern, args.mud, args.wavelength)
100-
corrected_data = apply_corr(input_pattern, absorption_correction)
101-
corrected_data.name = f"Absorption corrected input_data: {input_pattern.name}"
102-
corrected_data.dump(f"{outfile}", xtype="tth")
107+
absorption_correction = compute_cve(input_pattern, args.mud, args.wavelength)
108+
corrected_data = apply_corr(input_pattern, absorption_correction)
109+
corrected_data.name = f"Absorption corrected input_data: {input_pattern.name}"
110+
corrected_data.dump(f"{outfile}", xtype="tth")
103111

104-
if args.output_correction:
105-
absorption_correction.dump(f"{corrfile}", xtype="tth")
112+
if args.output_correction:
113+
absorption_correction.dump(f"{corrfile}", xtype="tth")
106114

107115

108116
if __name__ == "__main__":
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import os
2+
from pathlib import Path
3+
4+
import pytest
5+
6+
7+
@pytest.fixture
8+
def user_filesystem(tmp_path):
9+
directory = Path(tmp_path)
10+
os.chdir(directory)
11+
12+
existing_dir = Path(tmp_path).resolve() / "existing_dir"
13+
existing_dir.mkdir(parents=True, exist_ok=True)
14+
15+
existing_file = Path(tmp_path).resolve() / "existing_file.py"
16+
existing_file.touch()
17+
18+
yield tmp_path

src/diffpy/labpdfproc/tests/test_tools.py

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import argparse
2-
import os
32
import re
43
from pathlib import Path
54

@@ -16,31 +15,21 @@
1615

1716

1817
@pytest.mark.parametrize("inputs, expected", params1)
19-
def test_set_output_directory(inputs, expected, tmp_path):
20-
directory = Path(tmp_path)
21-
os.chdir(directory)
22-
23-
existing_dir = Path(tmp_path).resolve() / "existing_dir"
24-
existing_dir.mkdir(parents=True, exist_ok=True)
18+
def test_set_output_directory(inputs, expected, user_filesystem):
19+
tmp_dir = user_filesystem
20+
expected_output_directory = tmp_dir / expected[0]
2521

2622
actual_parser = argparse.ArgumentParser()
2723
actual_parser.add_argument("--output_directory")
2824
actual_args = actual_parser.parse_args(["--output_directory", inputs[0]])
2925
actual_args.output_directory = set_output_directory(actual_args)
30-
31-
expected_output_directory = Path(tmp_path).resolve() / expected[0]
3226
assert actual_args.output_directory == expected_output_directory
3327
assert Path(actual_args.output_directory).exists()
3428
assert Path(actual_args.output_directory).is_dir()
3529

3630

37-
def test_set_output_directory_bad(tmp_path):
38-
directory = Path(tmp_path)
39-
os.chdir(directory)
40-
41-
existing_file = Path(tmp_path).resolve() / "existing_file.py"
42-
existing_file.touch()
43-
31+
def test_set_output_directory_bad(user_filesystem):
32+
# tmp_dir = user_filesystem
4433
actual_parser = argparse.ArgumentParser()
4534
actual_parser.add_argument("--output_directory")
4635
actual_args = actual_parser.parse_args(["--output_directory", "existing_file.py"])
@@ -53,25 +42,21 @@ def test_set_output_directory_bad(tmp_path):
5342

5443
params2 = [
5544
([None], ["."]),
56-
(["data.xy"], ["."]),
57-
(["existing_dir/data.xy"], ["existing_dir"]),
45+
(["existing_input_file.xy"], ["."]),
46+
(["existing_dir/existing_input_file.xy"], ["existing_dir"]),
47+
# ([Path.cwd()], [Path.cwd()]),
5848
]
5949

6050

6151
@pytest.mark.parametrize("inputs, expected", params2)
62-
def test_set_input_directory(inputs, expected, tmp_path):
63-
directory = Path(tmp_path)
64-
os.chdir(directory)
65-
66-
existing_dir = Path(tmp_path).resolve() / "existing_dir"
67-
existing_dir.mkdir(parents=True, exist_ok=True)
52+
def test_set_input_directory(inputs, expected, user_filesystem):
53+
tmp_dir = user_filesystem
54+
expected_input_directory = tmp_dir / expected[0]
6855

6956
actual_parser = argparse.ArgumentParser()
7057
actual_parser.add_argument("--input_file")
7158
actual_args = actual_parser.parse_args(["--input_file", inputs[0]])
7259
actual_args = set_input_directory(actual_args)
73-
74-
expected_input_directory = Path(tmp_path).resolve() / expected[0]
7560
assert actual_args.input_directory == expected_input_directory
7661

7762

0 commit comments

Comments
 (0)