Skip to content

Commit a195bbb

Browse files
committed
Convert data_directories to a list
1 parent 0c84540 commit a195bbb

File tree

7 files changed

+20
-41
lines changed

7 files changed

+20
-41
lines changed

src/murfey/cli/transfer.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,8 @@ def run():
3636
murfey_url = urlparse(args.server, allow_fragments=False)
3737

3838
machine_data = requests.get(f"{murfey_url.geturl()}/machine").json()
39-
if Path(args.source or ".").resolve() in machine_data.data_directories.keys():
40-
console.print(
41-
f"[red]Source directory is the base directory for the {machine_data.data_directories[Path(args.source or '.').resolve()]}, exiting"
42-
)
39+
if Path(args.source or ".").resolve() in machine_data.data_directories:
40+
console.print("[red]Source directory is the base directory, exiting")
4341
return
4442

4543
cmd = [

src/murfey/client/analyser.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -408,8 +408,8 @@ def _xml_file(self, data_file: Path) -> Path:
408408
if not self._environment:
409409
return data_file.with_suffix(".xml")
410410
file_name = f"{'_'.join(p for p in data_file.stem.split('_')[:-1])}.xml"
411-
data_directories = self._murfey_config.get("data_directories", {})
412-
for dd in data_directories.keys():
411+
data_directories = self._murfey_config.get("data_directories", [])
412+
for dd in data_directories:
413413
if str(data_file).startswith(dd):
414414
base_dir = Path(dd)
415415
mid_dir = data_file.relative_to(dd).parent

src/murfey/client/contexts/spa.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,9 @@ def _foil_hole_from_file(f: Path) -> int:
136136

137137

138138
def _grid_square_metadata_file(
139-
f: Path, data_directories: Dict[Path, str], visit: str, grid_square: int
139+
f: Path, data_directories: List[Path], visit: str, grid_square: int
140140
) -> Path:
141-
for dd in data_directories.keys():
141+
for dd in data_directories:
142142
if str(f).startswith(str(dd)):
143143
base_dir = dd
144144
mid_dir = f.relative_to(dd).parent
@@ -542,7 +542,7 @@ def _position_analysis(
542542
grid_square = _grid_square_from_file(transferred_file)
543543
grid_square_metadata_file = _grid_square_metadata_file(
544544
transferred_file,
545-
{Path(d): l for d, l in machine_config["data_directories"].items()},
545+
machine_config["data_directories"],
546546
environment.visit,
547547
grid_square,
548548
)

src/murfey/client/tui/screens.py

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -89,17 +89,14 @@ def determine_default_destination(
8989
log.info(f"Processing only mode with sources {environment.sources}")
9090
_default = str(environment.sources[0].resolve()) or str(Path.cwd())
9191
elif machine_data.get("data_directories"):
92-
for data_dir in machine_data["data_directories"].keys():
92+
for data_dir in machine_data["data_directories"]:
9393
if source.resolve() == Path(data_dir):
9494
_default = destination + f"/{visit}"
9595
break
9696
else:
9797
try:
9898
mid_path = source.resolve().relative_to(data_dir)
99-
if (
100-
machine_data["data_directories"][data_dir] == "detector"
101-
and use_suggested_path
102-
):
99+
if use_suggested_path:
103100
with global_env_lock:
104101
source_name = (
105102
source.name
@@ -203,10 +200,10 @@ def validate_form(form: dict, model: BaseModel) -> bool:
203200
class _DirectoryTree(DirectoryTree):
204201
valid_selection = reactive(False)
205202

206-
def __init__(self, *args, data_directories: dict | None = None, **kwargs):
203+
def __init__(self, *args, data_directories: List[Path] | None = None, **kwargs):
207204
super().__init__(*args, **kwargs)
208205
self._selected_path = self.path
209-
self._data_directories = data_directories or {}
206+
self._data_directories = data_directories or []
210207

211208
def on_tree_node_selected(self, event: Tree.NodeSelected) -> None:
212209
event.stop()
@@ -276,7 +273,7 @@ def compose(self):
276273
self._dir_tree = _DirectoryTree(
277274
str(self._selected_dir),
278275
data_directories=(
279-
machine_data.get("data_directories", {}) if self.app._strict else {}
276+
machine_data.get("data_directories", []) if self.app._strict else []
280277
),
281278
id="dir-select",
282279
)
@@ -289,7 +286,7 @@ def compose(self):
289286

290287
text_log.write("Selected directories:\n")
291288
btn_disabled = True
292-
for d in machine_data.get("data_directories", {}).keys():
289+
for d in machine_data.get("data_directories", []):
293290
if (
294291
Path(self._dir_tree._selected_path).resolve().is_relative_to(d)
295292
or self.app._environment.processing_only_mode
@@ -718,11 +715,7 @@ def on_button_pressed(self, event: Button.Pressed):
718715
if self._switch_status:
719716
self.app.install_screen(
720717
DirectorySelection(
721-
[
722-
p[0]
723-
for p in machine_data.get("data_directories", {}).items()
724-
if p[1] == "detector" and Path(p[0]).exists()
725-
]
718+
[p for p in machine_data.get("data_directories", []) if p.exists()]
726719
),
727720
"directory-select",
728721
)
@@ -784,11 +777,7 @@ def on_button_pressed(self, event: Button.Pressed):
784777

785778
self.app.install_screen(
786779
DirectorySelection(
787-
[
788-
p[0]
789-
for p in machine_data.get("data_directories", {}).items()
790-
if p[1] == "detector" and Path(p[0]).exists()
791-
]
780+
[p for p in machine_data.get("data_directories", []) if p.exists()]
792781
),
793782
"directory-select",
794783
)

src/murfey/server/api/instrument.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,7 @@ async def start_multigrid_watcher(
9292
_config = {
9393
"acquisition_software": machine_config.acquisition_software,
9494
"calibrations": machine_config.calibrations,
95-
"data_directories": {
96-
str(k): v for k, v in machine_config.data_directories.items()
97-
},
95+
"data_directories": [str(k) for k in machine_config.data_directories],
9896
"rsync_basepath": str(machine_config.rsync_basepath),
9997
"visit": visit,
10098
"default_model": str(machine_config.default_model),

src/murfey/util/config.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
class MachineConfig(BaseModel, extra=Extra.allow): # type: ignore
1515
acquisition_software: List[str]
1616
calibrations: Dict[str, Dict[str, Union[dict, float]]]
17-
data_directories: Dict[Path, str]
17+
data_directories: List[Path]
1818
rsync_basepath: Path
1919
default_model: Path
2020
display_name: str = ""
@@ -148,7 +148,7 @@ def get_machine_config(instrument_name: str = "") -> Dict[str, MachineConfig]:
148148
"": MachineConfig(
149149
acquisition_software=[],
150150
calibrations={},
151-
data_directories={},
151+
data_directories=[],
152152
rsync_basepath=Path("dls/tmp"),
153153
murfey_db_credentials="",
154154
default_model="/tmp/weights.h5",

src/murfey/util/dummy_setup.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,15 @@
1717
def initialise(dummy_location: Path) -> Path:
1818
base = dummy_location / "murfey_dummy"
1919
base.mkdir()
20-
microscope_dir = base / "M"
2120
detector_dir = base / "Data"
22-
microscope_dir.mkdir()
23-
(microscope_dir / "Supervisor").mkdir()
2421
detector_dir.mkdir()
2522
(detector_dir / "Supervisor").mkdir()
2623
with open(base / "config.yaml", "w") as yaml_out:
2724
yaml.dump(
2825
{
2926
"m12": {
3027
"acquisition_software": ["epu", "tomo", "serialem"],
31-
"data_directories": {
32-
str(detector_dir): "detector",
33-
str(microscope_dir): "microscope",
34-
},
28+
"data_directories": [str(detector_dir)],
3529
"rsync_basepath": str(dummy_location),
3630
"calibrations": {"dummy": 0},
3731
}
@@ -99,7 +93,7 @@ def generate_data(base_path: Path, timeout: int | None = None, pause: int = 10):
9993
base_path,
10094
"Supervisor",
10195
f"Position_{tilt}.mrc",
102-
data_dir="M",
96+
data_dir="Data",
10397
size=(128, 128),
10498
)
10599
except ValueError:

0 commit comments

Comments
 (0)