-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathworkflow_sxt.py
More file actions
84 lines (69 loc) · 2.15 KB
/
Copy pathworkflow_sxt.py
File metadata and controls
84 lines (69 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from logging import getLogger
from pathlib import Path
from fastapi import APIRouter, Depends
from pydantic import BaseModel
from murfey.server import _transport_object
from murfey.server.api.auth import (
MurfeySessionIDInstrument as MurfeySessionID,
validate_instrument_token,
)
from murfey.server.murfey_db import murfey_db
from murfey.workflows.sxt.process_sxt_tilt_series import SXTTiltSeriesInfo
logger = getLogger("murfey.server.api.workflow_sxt")
router = APIRouter(
prefix="/workflow/sxt",
dependencies=[Depends(validate_instrument_token)],
tags=["Workflows: Soft x-ray tomography"],
)
@router.post("/visits/{visit_name}/sessions/{session_id}/sxt_tilt_series")
def process_sxt_tilt_series(
visit_name: str,
session_id: MurfeySessionID,
tilt_series_info: SXTTiltSeriesInfo,
db=murfey_db,
):
if _transport_object:
_transport_object.send(
_transport_object.feedback_queue,
{
"register": "sxt.process_tilt_series",
"session_id": session_id,
"visit_name": visit_name,
"tilt_series_info": tilt_series_info.model_dump(mode="json"),
},
)
class XrmFile(BaseModel):
xrm_path: Path
tiff_path: Path
@router.post("/convert_xrm_to_tiff")
def convert_xrm_to_tiff(xrm_file: XrmFile, db=murfey_db):
if _transport_object:
logger.info("Sending xrm conversion to images service")
_transport_object.send(
"images",
{
"image_command": "xrm_to_jpeg",
"xrm_file": str(xrm_file.xrm_path),
"tiff_destination": str(xrm_file.tiff_path),
"annotate": True,
},
new_connection=True,
)
class SxtRoiInfo(BaseModel):
tag: str
name: str
x_stage_position: float
y_stage_position: float
pixel_size: float
height: int
width: int
image: Path
@router.post("/visits/{visit_name}/sessions/{session_id}/register_sxt_roi")
def register_sxt_roi(
visit_name: str,
session_id: MurfeySessionID,
tilt_series_info: SXTTiltSeriesInfo,
db=murfey_db,
):
# TODO
return