Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 22 additions & 9 deletions src/murfey/client/analyser.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ class Analyser(Observer):
def __init__(
self,
basepath_local: Path,
token: str,
environment: MurfeyInstanceEnvironment | None = None,
force_mdoc_metadata: bool = False,
limited: bool = False,
Expand All @@ -49,6 +50,7 @@ def __init__(
self._batch_store: dict = {}
self._environment = environment
self._force_mdoc_metadata = force_mdoc_metadata
self._token = token
self.parameters_model: (
Type[ProcessingParametersSPA] | Type[ProcessingParametersTomo] | None
) = None
Expand All @@ -60,6 +62,7 @@ def __init__(
self._murfey_config = (
get_machine_config_client(
str(environment.url.geturl()),
self._token,
instrument_name=environment.instrument_name,
demo=environment.demo,
)
Expand Down Expand Up @@ -123,32 +126,34 @@ def _find_context(self, file_path: Path) -> bool:
# CLEM workflow checks
# Look for LIF and XLIF files
if file_path.suffix in (".lif", ".xlif"):
self._context = CLEMContext("leica", self._basepath)
self._context = CLEMContext("leica", self._basepath, self._token)
return True
# Look for TIFF files associated with CLEM workflow
# Leica's autosave mode seems to name the TIFFs in the format
# PostionXX--ZXX--CXX.tif
if all(
pattern in file_path.name for pattern in ("--Z", "--C")
) and file_path.suffix in (".tiff", ".tif"):
self._context = CLEMContext("leica", self._basepath)
self._context = CLEMContext("leica", self._basepath, self._token)
return True

# Tomography and SPA workflow checks
if "atlas" in file_path.parts:
self._context = AtlasContext("epu", self._basepath)
self._context = AtlasContext("epu", self._basepath, self._token)
return True

if "Metadata" in file_path.parts or file_path.name == "EpuSession.dm":
self._context = SPAMetadataContext("epu", self._basepath)
self._context = SPAMetadataContext("epu", self._basepath, self._token)
return True
elif (
"Batch" in file_path.parts
or "SearchMaps" in file_path.parts
or "Thumbnails" in file_path.parts
or file_path.name == "Session.dm"
):
self._context = TomographyMetadataContext("tomo", self._basepath)
self._context = TomographyMetadataContext(
"tomo", self._basepath, self._token
)
return True

split_file_stem = file_path.stem.split("_")
Expand All @@ -164,7 +169,9 @@ def _find_context(self, file_path: Path) -> bool:
]:
if not self._context:
logger.info("Acquisition software: EPU")
self._context = SPAModularContext("epu", self._basepath)
self._context = SPAModularContext(
"epu", self._basepath, self._token
)
self.parameters_model = ProcessingParametersSPA
return True

Expand All @@ -178,7 +185,9 @@ def _find_context(self, file_path: Path) -> bool:
):
if not self._context:
logger.info("Acquisition software: tomo")
self._context = TomographyContext("tomo", self._basepath)
self._context = TomographyContext(
"tomo", self._basepath, self._token
)
self.parameters_model = ProcessingParametersTomo
return True
return False
Expand Down Expand Up @@ -213,14 +222,18 @@ def _analyse(self):
or transferred_file.name == "EpuSession.dm"
and not self._context
):
self._context = SPAMetadataContext("epu", self._basepath)
self._context = SPAMetadataContext(
"epu", self._basepath, self._token
)
elif (
"Batch" in transferred_file.parts
or "SearchMaps" in transferred_file.parts
or transferred_file.name == "Session.dm"
and not self._context
):
self._context = TomographyMetadataContext("tomo", self._basepath)
self._context = TomographyMetadataContext(
"tomo", self._basepath, self._token
)
self.post_transfer(transferred_file)
else:
dc_metadata = {}
Expand Down
3 changes: 2 additions & 1 deletion src/murfey/client/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,9 @@ class Context:
user_params: List[ProcessingParameter] = []
metadata_params: List[ProcessingParameter] = []

def __init__(self, name: str, acquisition_software: str):
def __init__(self, name: str, acquisition_software: str, token: str):
self._acquisition_software = acquisition_software
self._token = token
self.name = name
self.data_collection_parameters: dict = {}

Expand Down
7 changes: 4 additions & 3 deletions src/murfey/client/contexts/atlas.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@


class AtlasContext(Context):
def __init__(self, acquisition_software: str, basepath: Path):
super().__init__("Atlas", acquisition_software)
def __init__(self, acquisition_software: str, basepath: Path, token: str):
super().__init__("Atlas", acquisition_software, token)
self._basepath = basepath

def post_transfer(
Expand All @@ -36,12 +36,13 @@ def post_transfer(
source = _get_source(transferred_file, environment)
if source:
transferred_atlas_name = _atlas_destination(
environment, source, transferred_file
environment, source, transferred_file, self._token
) / transferred_file.relative_to(source.parent)
capture_post(
base_url=str(environment.url.geturl()),
router_name="session_control.spa_router",
function_name="make_atlas_jpg",
token=self._token,
session_id=environment.murfey_session,
data={"path": str(transferred_atlas_name)},
)
Expand Down
13 changes: 10 additions & 3 deletions src/murfey/client/contexts/clem.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@


def _file_transferred_to(
environment: MurfeyInstanceEnvironment, source: Path, file_path: Path
environment: MurfeyInstanceEnvironment, source: Path, file_path: Path, token: str
) -> Optional[Path]:
"""
Returns the Path of the transferred file on the DLS file system.
"""
machine_config = get_machine_config_client(
str(environment.url.geturl()),
token,
instrument_name=environment.instrument_name,
demo=environment.demo,
)
Expand Down Expand Up @@ -89,8 +90,8 @@ def _find_elements_recursively(


class CLEMContext(Context):
def __init__(self, acquisition_software: str, basepath: Path):
super().__init__("CLEM", acquisition_software)
def __init__(self, acquisition_software: str, basepath: Path, token: str):
super().__init__("CLEM", acquisition_software, token)
self._basepath = basepath
# CLEM contexts for "auto-save" acquisition mode
self._tiff_series: Dict[str, List[str]] = {} # {Series name : TIFF path list}
Expand Down Expand Up @@ -128,6 +129,7 @@ def post_transfer(
environment=environment,
source=source,
file_path=transferred_file,
token=self._token,
)
if not destination_file:
logger.warning(
Expand Down Expand Up @@ -320,6 +322,7 @@ def post_transfer(
environment=environment,
source=source,
file_path=transferred_file,
token=self._token,
)
if not destination_file:
logger.warning(
Expand Down Expand Up @@ -356,6 +359,7 @@ def register_lif_file(
base_url=str(environment.url.geturl()),
router_name="clem.router",
function_name="register_lif_file",
token=self._token,
session_id=environment.murfey_session,
data={"lif_file": quote(str(lif_file), safe="")},
)
Expand All @@ -381,6 +385,7 @@ def process_lif_file(
base_url=str(environment.url.geturl()),
router_name="clem.router",
function_name="process_raw_lifs",
token=self._token,
session_id=environment.murfey_session,
data={"lif_file": quote(str(lif_file), safe="")},
)
Expand All @@ -404,6 +409,7 @@ def register_tiff_file(
base_url=str(environment.url.geturl()),
router_name="clem.router",
function_name="register_tiff_file",
token=self._token,
session_id=environment.murfey_session,
data={"tiff_file": quote(str(tiff_file), safe="")},
)
Expand All @@ -429,6 +435,7 @@ def process_tiff_series(
base_url=str(environment.url.geturl()),
router_name="clem.router",
function_name="process_raw_tiffs",
token=self._token,
session_id=environment.murfey_session,
data=tiff_dataset,
)
Expand Down
5 changes: 3 additions & 2 deletions src/murfey/client/contexts/fib.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ def _number_from_name(name: str) -> int:


class FIBContext(Context):
def __init__(self, acquisition_software: str, basepath: Path):
super().__init__("FIB", acquisition_software)
def __init__(self, acquisition_software: str, basepath: Path, token: str):
super().__init__("FIB", acquisition_software, token)
self._basepath = basepath
self._milling: Dict[int, List[MillingProgress]] = {}
self._lamellae: Dict[int, Lamella] = {}
Expand Down Expand Up @@ -95,6 +95,7 @@ def post_transfer(
base_url=str(environment.url.geturl()),
router_name="workflow.correlative_router",
function_name="make_gif",
token=self._token,
year=datetime.now().year,
visit_name=environment.visit,
session_id=environment.murfey_session,
Expand Down
26 changes: 20 additions & 6 deletions src/murfey/client/contexts/spa.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,11 @@


def _file_transferred_to(
environment: MurfeyInstanceEnvironment, source: Path, file_path: Path
environment: MurfeyInstanceEnvironment, source: Path, file_path: Path, token: str
):
machine_config = get_machine_config_client(
str(environment.url.geturl()),
token,
instrument_name=environment.instrument_name,
demo=environment.demo,
)
Expand Down Expand Up @@ -111,8 +112,8 @@ class SPAModularContext(Context):
ProcessingParameter("motion_corr_binning", "Motion Correction Binning"),
]

def __init__(self, acquisition_software: str, basepath: Path):
super().__init__("SPA", acquisition_software)
def __init__(self, acquisition_software: str, basepath: Path, token: str):
super().__init__("SPA", acquisition_software, token)
self._basepath = basepath
self._processing_job_stash: dict = {}
self._foil_holes: Dict[int, List[int]] = {}
Expand Down Expand Up @@ -229,6 +230,7 @@ def gather_metadata(
base_url=str(environment.url.geturl()),
router_name="session_control.router",
function_name="machine_info_by_instrument",
token=self._token,
instrument_name=environment.instrument_name,
)
if server_config_response is None:
Expand Down Expand Up @@ -302,6 +304,7 @@ def _position_analysis(
base_url=str(environment.url.geturl()),
router_name="session_info.router",
function_name="get_dc_groups",
token=self._token,
session_id=environment.murfey_session,
)
.json()
Expand Down Expand Up @@ -339,14 +342,17 @@ def _position_analysis(
else metadata_source_as_str
)
image_path = (
_file_transferred_to(environment, metadata_source, Path(gs.image))
_file_transferred_to(
environment, metadata_source, Path(gs.image), self._token
)
if gs.image
else ""
)
capture_post(
base_url=str(environment.url.geturl()),
router_name="session_control.spa_router",
function_name="register_grid_square",
token=self._token,
session_id=environment.murfey_session,
gsid=grid_square,
data={
Expand Down Expand Up @@ -385,14 +391,17 @@ def _position_analysis(
else metadata_source_as_str
)
image_path = (
_file_transferred_to(environment, metadata_source, Path(fh.image))
_file_transferred_to(
environment, metadata_source, Path(fh.image), self._token
)
if fh.image
else ""
)
capture_post(
base_url=str(environment.url.geturl()),
router_name="session_control.spa_router",
function_name="register_foil_hole",
token=self._token,
session_id=environment.murfey_session,
gs_name=grid_square,
data={
Expand All @@ -416,6 +425,7 @@ def _position_analysis(
base_url=str(environment.url.geturl()),
router_name="session_control.spa_router",
function_name="register_foil_hole",
token=self._token,
session_id=environment.murfey_session,
gs_name=grid_square,
data={
Expand Down Expand Up @@ -444,6 +454,7 @@ def post_transfer(
if environment:
machine_config = get_machine_config_client(
str(environment.url.geturl()),
self._token,
instrument_name=environment.instrument_name,
demo=environment.demo,
)
Expand All @@ -470,13 +481,14 @@ def post_transfer(

if environment:
file_transferred_to = _file_transferred_to(
environment, source, transferred_file
environment, source, transferred_file, self._token
)
if not environment.movie_counters.get(str(source)):
movie_counts_get = capture_get(
base_url=str(environment.url.geturl()),
router_name="session_control.router",
function_name="count_number_of_movies",
token=self._token,
)
if movie_counts_get is not None:
environment.movie_counters[str(source)] = count(
Expand All @@ -493,6 +505,7 @@ def post_transfer(
base_url=str(environment.url.geturl()),
router_name="file_io_instrument.router",
function_name="write_eer_fractionation_file",
token=self._token,
visit_name=environment.visit,
session_id=environment.murfey_session,
data={
Expand Down Expand Up @@ -552,6 +565,7 @@ def post_transfer(
base_url=str(environment.url.geturl()),
router_name="workflow.spa_router",
function_name="request_spa_preprocessing",
token=self._token,
visit_name=environment.visit,
session_id=environment.murfey_session,
data={
Expand Down
Loading