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
3 changes: 0 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,6 @@ TomographyContext = "murfey.client.contexts.tomo:TomographyContext"
TomographyMetadataContext = "murfey.client.contexts.tomo_metadata:TomographyMetadataContext"
[project.entry-points."murfey.workflows"]
"atlas_update" = "murfey.workflows.register_atlas_update:run"
"clem.align_and_merge" = "murfey.workflows.clem.align_and_merge:run"
"clem.process_raw_lifs" = "murfey.workflows.clem.process_raw_lifs:run"
"clem.process_raw_tiffs" = "murfey.workflows.clem.process_raw_tiffs:run"
"clem.register_align_and_merge_result" = "murfey.workflows.clem.register_align_and_merge_results:run"
"clem.register_preprocessing_result" = "murfey.workflows.clem.register_preprocessing_results:run"
"data_collection" = "murfey.workflows.register_data_collection:run"
Expand Down
90 changes: 8 additions & 82 deletions src/murfey/server/api/workflow_clem.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
from __future__ import annotations

from ast import literal_eval
from importlib.metadata import (
EntryPoint, # type hinting only
entry_points,
)
import json
from logging import getLogger
from pathlib import Path
from typing import Literal, Optional

from fastapi import APIRouter
from pydantic import BaseModel, field_validator
from pydantic import BaseModel
from sqlmodel import Session, select

import murfey.server
Expand Down Expand Up @@ -92,10 +87,9 @@ def process_raw_lifs(
"feedback_queue": murfey.server._transport_object.feedback_queue,
},
}
logger.debug(
f"Submitting LIF processing request to {murfey.server._transport_object.feedback_queue!r} "
"with the following recipe: \n"
f"{recipe}"
logger.info(
f"Submitting LIF processing request to 'processing_recipe': \n"
f"{json.dumps(recipe, indent=2, default=str)}"
)
murfey.server._transport_object.send(
queue="processing_recipe",
Expand Down Expand Up @@ -177,81 +171,13 @@ def process_raw_tiffs(
"feedback_queue": murfey.server._transport_object.feedback_queue,
},
}
logger.debug(
f"Submitting TIFF processing request to {murfey.server._transport_object.feedback_queue!r} "
"with the following recipe: \n"
f"{recipe}"
logger.info(
f"Submitting TIFF processing request to 'processing_recipe': \n"
f"{json.dumps(recipe, indent=2, default=str)}"
)
murfey.server._transport_object.send(
queue="processing_recipe",
message=recipe,
new_connection=True,
)
return True


class AlignAndMergeParams(BaseModel):
# Processing parameters
series_name: str
images: list[Path]
metadata: Path
# Optional processing parameters
crop_to_n_frames: Optional[int] = None
align_self: Literal["enabled", ""] = ""
flatten: Literal["mean", "min", "max", ""] = ""
align_across: Literal["enabled", ""] = ""

@field_validator("images", mode="before")
@classmethod
def parse_stringified_list(cls, value):
if isinstance(value, str):
try:
eval_result = literal_eval(value)
if isinstance(eval_result, list):
parent_tiffs = [Path(p) for p in eval_result]
return parent_tiffs
except (SyntaxError, ValueError):
raise ValueError("Unable to parse input")
# Return value as-is; if it fails, it fails
return value


@router.post("/sessions/{session_id}/align_and_merge_stacks")
def align_and_merge_stacks(
session_id: int,
align_and_merge_params: AlignAndMergeParams,
db: Session = murfey_db,
):
try:
# Try and load relevant Murfey workflow
workflow: EntryPoint = list(
entry_points(group="murfey.workflows", name="clem.align_and_merge")
)[0]
except IndexError:
raise RuntimeError("The relevant Murfey workflow was not found")

# Get instrument name from the database to load the correct config file
session_row: MurfeyDB.Session = db.exec(
select(MurfeyDB.Session).where(MurfeyDB.Session.id == session_id)
).one()
instrument_name = session_row.instrument_name

# Pass arguments to correct workflow
workflow.load()(
# Match the arguments found in murfey.workflows.clem.align_and_merge
# Session parameters
session_id=session_id,
instrument_name=instrument_name,
# Processing parameters
series_name=align_and_merge_params.series_name,
images=align_and_merge_params.images,
metadata=align_and_merge_params.metadata,
# Optional processing parameters
crop_to_n_frames=align_and_merge_params.crop_to_n_frames,
align_self=align_and_merge_params.align_self,
flatten=align_and_merge_params.flatten,
align_across=align_and_merge_params.align_across,
# Optional session parameters
messenger=murfey.server._transport_object,
)
return True
7 changes: 0 additions & 7 deletions src/murfey/util/route_manifest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1416,13 +1416,6 @@ murfey.server.api.workflow_clem.router:
type: int
methods:
- POST
- path: /workflow/clem/sessions/{session_id}/align_and_merge_stacks
function: align_and_merge_stacks
path_params:
- name: session_id
type: int
methods:
- POST
murfey.server.api.workflow_fib.router:
- path: /workflow/fib/sessions/{session_id}/register_atlas
function: register_fib_atlas
Expand Down
72 changes: 0 additions & 72 deletions src/murfey/workflows/clem/align_and_merge.py

This file was deleted.

74 changes: 0 additions & 74 deletions src/murfey/workflows/clem/process_raw_lifs.py

This file was deleted.

83 changes: 0 additions & 83 deletions src/murfey/workflows/clem/process_raw_tiffs.py

This file was deleted.

Loading