Skip to content

Commit 733c9b0

Browse files
Convert data directories to a list by removing the role (#412)
1 parent 67854bb commit 733c9b0

File tree

16 files changed

+47
-166
lines changed

16 files changed

+47
-166
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/__init__.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,12 +215,6 @@ def run():
215215
default=False,
216216
help="Remove source files immediately after their transfer",
217217
)
218-
parser.add_argument(
219-
"--relax",
220-
action="store_true",
221-
default=False,
222-
help="Relax the condition that the source directory needs to be recognised from the configuration",
223-
)
224218
parser.add_argument(
225219
"--name",
226220
type=str,
@@ -344,7 +338,6 @@ def run():
344338
gain_ref=gain_ref,
345339
redirected_logger=rich_handler,
346340
force_mdoc_metadata=not args.ignore_mdoc_metadata,
347-
strict=not args.relax,
348341
processing_enabled=machine_data.get("processing_enabled", True),
349342
skip_existing_processing=args.skip_existing_processing,
350343
)

src/murfey/client/analyser.py

Lines changed: 9 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ def __init__(
5757
self._limited = limited
5858
self._experiment_type = ""
5959
self._acquisition_software = ""
60-
self._role = ""
6160
self._extension: str = ""
6261
self._unseen_xml: list = []
6362
self._context: Context | None = None
@@ -126,14 +125,12 @@ def _find_context(self, file_path: Path) -> bool:
126125
in the Context classes themselves.
127126
"""
128127
if "atlas" in file_path.parts:
129-
self._role = "detector"
130128
self._context = SPAMetadataContext("epu", self._basepath)
131129
return True
132130

133131
# CLEM workflow checks
134132
# Look for LIF and XLIF files
135133
if file_path.suffix in (".lif", ".xlif"):
136-
self._role = "detector"
137134
self._context = CLEMContext("leica", self._basepath)
138135
return True
139136
# Look for TIFF files associated with CLEM workflow
@@ -152,7 +149,6 @@ def _find_context(self, file_path: Path) -> bool:
152149
).get("analyse_created_directories", [])
153150
)
154151
if created_directories.intersection(set(file_path.parts)):
155-
self._role = "detector"
156152
self._context = CLEMContext("leica", self._basepath)
157153
return True
158154

@@ -181,9 +177,6 @@ def _find_context(self, file_path: Path) -> bool:
181177
else SPAContext("epu", self._basepath)
182178
)
183179
self.parameters_model = ProcessingParametersSPA
184-
# Assign it the detector attribute if not already present
185-
if not self._role:
186-
self._role = "detector"
187180
return True
188181

189182
# Files starting with "Position" belong to the standard tomography workflow
@@ -198,23 +191,6 @@ def _find_context(self, file_path: Path) -> bool:
198191
logger.info("Acquisition software: tomo")
199192
self._context = TomographyContext("tomo", self._basepath)
200193
self.parameters_model = PreprocessingParametersTomo
201-
# Assign role if not already present
202-
if not self._role:
203-
# Fractions files attributed to the detector
204-
if (
205-
"Fractions" in split_file_name[-1]
206-
or "fractions" in split_file_name[-1]
207-
):
208-
self._role = "detector"
209-
# MDOC files attributed to the microscope
210-
elif (
211-
file_path.suffix == ".mdoc"
212-
or file_path.with_suffix(".mdoc").is_file()
213-
):
214-
self._role = "microscope"
215-
# Attribute all other files to the detector
216-
else:
217-
self._role = "detector"
218194
return True
219195

220196
# Files with these suffixes belong to the serial EM tomography workflow
@@ -239,19 +215,14 @@ def _find_context(self, file_path: Path) -> bool:
239215
return False
240216
self._context = TomographyContext("serialem", self._basepath)
241217
self.parameters_model = PreprocessingParametersTomo
242-
if not self._role:
243-
if "Frames" in file_path.parts:
244-
self._role = "detector"
245-
else:
246-
self._role = "microscope"
247218
return True
248219
return False
249220

250221
def post_transfer(self, transferred_file: Path):
251222
try:
252223
if self._context:
253224
self._context.post_transfer(
254-
transferred_file, role=self._role, environment=self._environment
225+
transferred_file, environment=self._environment
255226
)
256227
except Exception as e:
257228
logger.error(f"An exception was encountered post transfer: {e}")
@@ -309,19 +280,17 @@ def _analyse(self):
309280
self.queue.task_done()
310281
continue
311282
elif self._extension:
312-
logger.info(f"Context found successfully: {self._role}")
283+
logger.info(
284+
f"Context found successfully for {transferred_file}"
285+
)
313286
try:
314287
self._context.post_first_transfer(
315288
transferred_file,
316-
role=self._role,
317289
environment=self._environment,
318290
)
319291
except Exception as e:
320292
logger.error(f"Exception encountered: {e}")
321-
if (
322-
self._role == "detector"
323-
and "atlas" not in transferred_file.parts
324-
):
293+
if "atlas" not in transferred_file.parts:
325294
if not dc_metadata:
326295
try:
327296
dc_metadata = self._context.gather_metadata(
@@ -377,20 +346,16 @@ def _analyse(self):
377346
self._find_extension(transferred_file)
378347
if self._extension:
379348
logger.info(
380-
f"Context found successfully: {self._role}, {transferred_file}"
349+
f"Extension found successfully for {transferred_file}"
381350
)
382351
try:
383352
self._context.post_first_transfer(
384353
transferred_file,
385-
role=self._role,
386354
environment=self._environment,
387355
)
388356
except Exception as e:
389357
logger.error(f"Exception encountered: {e}")
390-
if (
391-
self._role == "detector"
392-
and "atlas" not in transferred_file.parts
393-
):
358+
if "atlas" not in transferred_file.parts:
394359
if not dc_metadata:
395360
try:
396361
dc_metadata = self._context.gather_metadata(
@@ -443,8 +408,8 @@ def _xml_file(self, data_file: Path) -> Path:
443408
if not self._environment:
444409
return data_file.with_suffix(".xml")
445410
file_name = f"{'_'.join(p for p in data_file.stem.split('_')[:-1])}.xml"
446-
data_directories = self._murfey_config.get("data_directories", {})
447-
for dd in data_directories.keys():
411+
data_directories = self._murfey_config.get("data_directories", [])
412+
for dd in data_directories:
448413
if str(data_file).startswith(dd):
449414
base_dir = Path(dd)
450415
mid_dir = data_file.relative_to(dd).parent

src/murfey/client/context.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,24 @@ def __init__(self, name: str, acquisition_software: str):
4040
self._acquisition_software = acquisition_software
4141
self.name = name
4242

43-
def post_transfer(self, transferred_file: Path, role: str = "", **kwargs):
43+
def post_transfer(
44+
self,
45+
transferred_file: Path,
46+
environment: MurfeyInstanceEnvironment | None = None,
47+
**kwargs,
48+
):
4449
# Search external packages for additional hooks to include in Murfey
4550
for h in entry_points(group="murfey.post_transfer_hooks"):
4651
if h.name == self.name:
47-
h.load()(transferred_file, role=role, **kwargs)
52+
h.load()(transferred_file, environment=environment, **kwargs)
4853

49-
def post_first_transfer(self, transferred_file: Path, role: str = "", **kwargs):
50-
self.post_transfer(transferred_file, role=role, **kwargs)
54+
def post_first_transfer(
55+
self,
56+
transferred_file: Path,
57+
environment: MurfeyInstanceEnvironment | None = None,
58+
**kwargs,
59+
):
60+
self.post_transfer(transferred_file, environment=environment, **kwargs)
5161

5262
def gather_metadata(
5363
self, metadata_file: Path, environment: MurfeyInstanceEnvironment | None = None

src/murfey/client/contexts/clem.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,14 +101,11 @@ def __init__(self, acquisition_software: str, basepath: Path):
101101
def post_transfer(
102102
self,
103103
transferred_file: Path,
104-
role: str = "",
105104
environment: Optional[MurfeyInstanceEnvironment] = None,
106105
**kwargs,
107106
) -> bool:
108107

109-
super().post_transfer(
110-
transferred_file, role=role, environment=environment, **kwargs
111-
)
108+
super().post_transfer(transferred_file, environment=environment, **kwargs)
112109

113110
# Process files generated by "auto-save" acquisition mode
114111
# These include TIF/TIFF and XLIF files

src/murfey/client/contexts/fib.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,10 @@ def __init__(self, acquisition_software: str, basepath: Path):
4444
def post_transfer(
4545
self,
4646
transferred_file: Path,
47-
role: str = "",
4847
environment: MurfeyInstanceEnvironment | None = None,
4948
**kwargs,
5049
):
51-
super().post_transfer(
52-
transferred_file, role=role, environment=environment, **kwargs
53-
)
50+
super().post_transfer(transferred_file, environment=environment, **kwargs)
5451
if self._acquisition_software == "autotem":
5552
parts = transferred_file.parts
5653
if "DCImages" in parts and transferred_file.suffix == ".png":

src/murfey/client/contexts/spa.py

Lines changed: 4 additions & 7 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
)
@@ -669,18 +669,16 @@ def _position_analysis(
669669
def post_transfer(
670670
self,
671671
transferred_file: Path,
672-
role: str = "",
673672
environment: MurfeyInstanceEnvironment | None = None,
674673
**kwargs,
675674
) -> bool:
676675
super().post_transfer(
677676
transferred_file=transferred_file,
678-
role=role,
679677
environment=environment,
680678
**kwargs,
681679
)
682680
data_suffixes = (".mrc", ".tiff", ".tif", ".eer")
683-
if role == "detector" and "gain" not in transferred_file.name:
681+
if "gain" not in transferred_file.name:
684682
if transferred_file.suffix in data_suffixes:
685683
if self._acquisition_software == "epu":
686684
if environment:
@@ -856,7 +854,6 @@ def _register_data_collection(
856854
def post_transfer(
857855
self,
858856
transferred_file: Path,
859-
role: str = "",
860857
environment: MurfeyInstanceEnvironment | None = None,
861858
**kwargs,
862859
) -> bool:

src/murfey/client/contexts/spa_metadata.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,11 @@ def __init__(self, acquisition_software: str, basepath: Path):
4343
def post_transfer(
4444
self,
4545
transferred_file: Path,
46-
role: str = "",
4746
environment: Optional[MurfeyInstanceEnvironment] = None,
4847
**kwargs,
4948
):
5049
super().post_transfer(
5150
transferred_file=transferred_file,
52-
role=role,
5351
environment=environment,
5452
**kwargs,
5553
)

src/murfey/client/contexts/tomo.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -549,20 +549,19 @@ def _extract_tilt_series(p: Path) -> str:
549549
def post_transfer(
550550
self,
551551
transferred_file: Path,
552-
role: str = "",
553552
environment: MurfeyInstanceEnvironment | None = None,
554553
**kwargs,
555554
) -> List[str]:
556555
super().post_transfer(
557556
transferred_file=transferred_file,
558-
role=role,
559557
environment=environment,
560558
**kwargs,
561559
)
562560

563561
data_suffixes = (".mrc", ".tiff", ".tif", ".eer")
564562
completed_tilts = []
565-
if role == "detector" and "gain" not in transferred_file.name:
563+
564+
if "gain" not in transferred_file.name:
566565
if transferred_file.suffix in data_suffixes:
567566
if self._acquisition_software == "tomo":
568567
if environment:
@@ -632,13 +631,10 @@ def post_transfer(
632631
def post_first_transfer(
633632
self,
634633
transferred_file: Path,
635-
role: str = "",
636634
environment: MurfeyInstanceEnvironment | None = None,
637635
**kwargs,
638636
):
639-
self.post_transfer(
640-
transferred_file, role=role, environment=environment, **kwargs
641-
)
637+
self.post_transfer(transferred_file, environment=environment, **kwargs)
642638

643639
def gather_metadata(
644640
self, metadata_file: Path, environment: MurfeyInstanceEnvironment | None = None

src/murfey/client/multigrid_control.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -257,13 +257,6 @@ def rsync_result(update: RSyncerUpdate):
257257
force_mdoc_metadata=self.force_mdoc_metadata,
258258
limited=limited,
259259
)
260-
for data_dir in self._machine_config["data_directories"].keys():
261-
if source.resolve().is_relative_to(Path(data_dir)):
262-
self.analysers[source]._role = self._machine_config[
263-
"data_directories"
264-
][data_dir]
265-
log.info(f"role found for {source}")
266-
break
267260
if force_metadata:
268261
self.analysers[source].subscribe(
269262
partial(self._start_dc, from_form=True)

0 commit comments

Comments
 (0)