Skip to content

Commit 1643137

Browse files
committed
Merged recent changes from 'main' branch
2 parents ab9b1a9 + 41e0dfa commit 1643137

File tree

27 files changed

+528
-127
lines changed

27 files changed

+528
-127
lines changed

.bumpclient.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tool.bumpversion]
2-
current_version = "0.19.4"
2+
current_version = "0.19.5"
33
commit = true
44
tag = false
55

.bumpversion.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tool.bumpversion]
2-
current_version = "0.19.4"
2+
current_version = "0.19.5"
33
commit = true
44
tag = true
55

Helm/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: v1
22
name: murfey-services
33
description: Umbrella Helm chart for deploying the servers and daemons needed to enable Murfey to transfer and process data
4-
version: 0.19.4
4+
version: 0.19.5
55
dependencies:
66
- name: murfey-instrument-server-clem
77
- name: murfey-instrument-server-tem
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
apiVersion: v1
22
name: murfey-instrument-server-clem
33
description: Helm chart for deploying a Murfey instrument server, which executes orders to detect, modify, and transfer files on the instrument PC, and notifies the backend server about transferred files
4-
version: 0.19.4
4+
version: 0.19.5
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
apiVersion: v1
22
name: murfey-instrument-server-tem
33
description: Helm chart for deploying a Murfey instrument server, which executes orders to detect, modify, and transfer files on the instrument PC, and notifies the backend server about transferred files
4-
version: 0.19.4
4+
version: 0.19.5
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
apiVersion: v1
22
name: murfey-rsync
33
description: Helm chart for deploying an rsync daemon, which is responsible for executing the transfer of files from the client storage directory to the server storage system
4-
version: 0.19.4
4+
version: 0.19.5
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
apiVersion: v1
22
name: murfey-server
33
description: Helm chart for deploying a Murfey backend server, which is responsible for orchestrating the data transfer and processing workflow between the client PC and the storage system
4-
version: 0.19.4
4+
version: 0.19.5

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ requires = [
77

88
[project]
99
name = "murfey"
10-
version = "0.19.4"
10+
version = "0.19.5"
1111
description = "Client-Server architecture hauling Cryo-EM data"
1212
readme = "README.md"
1313
keywords = [

src/murfey/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
from __future__ import annotations
22

3-
__version__ = "0.19.4"
4-
__supported_client_version__ = "0.19.4"
3+
__version__ = "0.19.5"
4+
__supported_client_version__ = "0.19.5"

src/murfey/client/analyser.py

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from typing import Type
1616

1717
from murfey.client.context import Context
18+
from murfey.client.contexts.atlas import AtlasContext
1819
from murfey.client.contexts.clem import CLEMContext
1920
from murfey.client.contexts.spa import SPAModularContext
2021
from murfey.client.contexts.spa_metadata import SPAMetadataContext
@@ -135,7 +136,7 @@ def _find_context(self, file_path: Path) -> bool:
135136

136137
# Tomography and SPA workflow checks
137138
if "atlas" in file_path.parts:
138-
self._context = SPAMetadataContext("epu", self._basepath)
139+
self._context = AtlasContext("epu", self._basepath)
139140
return True
140141

141142
if "Metadata" in file_path.parts or file_path.name == "EpuSession.dm":
@@ -266,7 +267,7 @@ def _analyse(self):
266267
)
267268
except Exception as e:
268269
logger.error(f"Exception encountered: {e}")
269-
if "atlas" not in transferred_file.parts:
270+
if not isinstance(self._context, AtlasContext):
270271
if not dc_metadata:
271272
try:
272273
dc_metadata = self._context.gather_metadata(
@@ -308,6 +309,10 @@ def _analyse(self):
308309
)
309310
self.post_transfer(transferred_file)
310311

312+
elif isinstance(self._context, AtlasContext):
313+
logger.debug(f"File {transferred_file.name!r} is part of the atlas")
314+
self.post_transfer(transferred_file)
315+
311316
# Handle files with tomography and SPA context differently
312317
elif not self._extension or self._unseen_xml:
313318
valid_extension = self._find_extension(transferred_file)
@@ -325,36 +330,35 @@ def _analyse(self):
325330
)
326331
except Exception as e:
327332
logger.error(f"Exception encountered: {e}")
328-
if "atlas" not in transferred_file.parts:
329-
if not dc_metadata:
330-
try:
331-
dc_metadata = self._context.gather_metadata(
332-
mdoc_for_reading
333-
or self._xml_file(transferred_file),
334-
environment=self._environment,
335-
)
336-
except KeyError as e:
337-
logger.error(
338-
f"Metadata gathering failed with a key error for key: {e.args[0]}"
339-
)
340-
raise e
341-
if not dc_metadata or not self._force_mdoc_metadata:
342-
mdoc_for_reading = None
343-
self._unseen_xml.append(transferred_file)
344-
if dc_metadata:
345-
self._unseen_xml = []
346-
if dc_metadata.get("file_extension"):
347-
self._extension = dc_metadata["file_extension"]
348-
else:
349-
dc_metadata["file_extension"] = self._extension
350-
dc_metadata["acquisition_software"] = (
351-
self._context._acquisition_software
333+
if not dc_metadata:
334+
try:
335+
dc_metadata = self._context.gather_metadata(
336+
mdoc_for_reading
337+
or self._xml_file(transferred_file),
338+
environment=self._environment,
352339
)
353-
self.notify(
354-
{
355-
"form": dc_metadata,
356-
}
340+
except KeyError as e:
341+
logger.error(
342+
f"Metadata gathering failed with a key error for key: {e.args[0]}"
357343
)
344+
raise e
345+
if not dc_metadata or not self._force_mdoc_metadata:
346+
mdoc_for_reading = None
347+
self._unseen_xml.append(transferred_file)
348+
if dc_metadata:
349+
self._unseen_xml = []
350+
if dc_metadata.get("file_extension"):
351+
self._extension = dc_metadata["file_extension"]
352+
else:
353+
dc_metadata["file_extension"] = self._extension
354+
dc_metadata["acquisition_software"] = (
355+
self._context._acquisition_software
356+
)
357+
self.notify(
358+
{
359+
"form": dc_metadata,
360+
}
361+
)
358362
elif isinstance(
359363
self._context,
360364
(
@@ -370,6 +374,7 @@ def _analyse(self):
370374
)
371375
self.post_transfer(transferred_file)
372376
self.queue.task_done()
377+
logger.debug("Analyer thread has stopped analysing incoming files")
373378
self.notify(final=True)
374379

375380
def _xml_file(self, data_file: Path) -> Path:
@@ -403,6 +408,12 @@ def request_stop(self):
403408
self._stopping = True
404409
self._halt_thread = True
405410

411+
def is_safe_to_stop(self):
412+
"""
413+
Checks that the analyser thread is safe to stop
414+
"""
415+
return self._stopping and self._halt_thread and not self.queue.qsize()
416+
406417
def stop(self):
407418
logger.debug("Analyser thread stop requested")
408419
self._stopping = True
@@ -412,5 +423,8 @@ def stop(self):
412423
self.queue.put(None)
413424
self.thread.join()
414425
except Exception as e:
415-
logger.error(f"Exception encountered while stopping analyser: {e}")
426+
logger.error(
427+
f"Exception encountered while stopping Analyser: {e}",
428+
exc_info=True,
429+
)
416430
logger.debug("Analyser thread stop completed")

0 commit comments

Comments
 (0)