AAREDB: WIP changes to ingest RASTER grid scan into DB
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import datetime
|
||||
import io
|
||||
import json
|
||||
import os
|
||||
from typing import List, Optional
|
||||
|
||||
@@ -33,6 +34,7 @@ from aaredaqlib.raster_grid import RasterGridRequest, CompletedRasterGrid
|
||||
from aaredaqlib.rotation_scan import RotationScanRequest
|
||||
from aaredaqlib.sample_geometry import SampleGeometryModel
|
||||
|
||||
from jfjoch_client.models import ScanResult
|
||||
|
||||
class AareWrapper:
|
||||
def __init__(
|
||||
@@ -49,6 +51,7 @@ class AareWrapper:
|
||||
self.__tell_api = aareDBclient.TellsRunnerApi(self.client)
|
||||
self.__sample_api = aareDBclient.SamplesRunnerApi(self.client)
|
||||
self.__proc_api = aareDBclient.ProcessingsRunnerApi(self.client)
|
||||
self.__raster_api = aareDBclient.GridscanRunnerApi(self.client)
|
||||
self.__bl = bl
|
||||
|
||||
def set_pucks_beamline(self, input_list: List[PuckLoadedInfo]):
|
||||
@@ -314,4 +317,65 @@ class AareWrapper:
|
||||
)
|
||||
print("Experiment parameters created:", response)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
print(e)
|
||||
|
||||
def _create_default_geometry(self):
|
||||
"""Create default geometry configuration for raster grid ingestion."""
|
||||
return {
|
||||
'beam_location_pxl': {'x': 512, 'y': 384, 'z': 0},
|
||||
'pixel_in_mm': 0.01,
|
||||
'aerotech': {'x': 0, 'y': 0, 'z': 0},
|
||||
'aerotech_meas': {'x': 0, 'y': 0, 'z': 0},
|
||||
'smargon': {
|
||||
'sh_mm': {'x': 0, 'y': 0, 'z': 0},
|
||||
'phi_deg': 0,
|
||||
'chi_deg': 0
|
||||
},
|
||||
'omega_deg': 0,
|
||||
'beam_size_mm': {'x': 0.02, 'y': 0.02, 'z': 0},
|
||||
}
|
||||
|
||||
def ingest_gridscan(self, s: Optional[SampleShortInfo], raster_result: ScanResult, r: RasterGridRequest):
|
||||
|
||||
if s is None:
|
||||
return
|
||||
|
||||
payload = self.format_gridscan_payload(s, raster_result, r)
|
||||
|
||||
if payload is None:
|
||||
return
|
||||
|
||||
url = f"{self.__host}/protected_router/gridscan_runner/ingest"
|
||||
headers = {
|
||||
"accept": "application/json",
|
||||
"X-Shared-Password": os.getenv("AAREDB_SHARED_PASSWORD")
|
||||
}
|
||||
response = requests.post(url,
|
||||
auth=(os.getenv("AAREDB_USERNAME"), os.getenv("AAREDB_PASSWORD")),
|
||||
headers=headers, data=json.dumps(payload), timeout=30, verify=False)
|
||||
response.raise_for_status()
|
||||
|
||||
print(f"Response status code: {response.status_code}")
|
||||
|
||||
|
||||
def format_gridscan_payload(self, s: Optional[SampleShortInfo], raster_result:ScanResult, r:RasterGridRequest):
|
||||
|
||||
try:
|
||||
|
||||
geometry = self._create_default_geometry()
|
||||
|
||||
payload = {
|
||||
"request": r.model_dump(), # RasterGridRequest as dict
|
||||
"result": raster_result.model_dump(), # ScanResult as dict
|
||||
"geometry": geometry, # SampleGeometryModel as dict
|
||||
"sample_id": s.db_id,
|
||||
"attach_image": True,
|
||||
}
|
||||
|
||||
return payload
|
||||
|
||||
except Exception as e:
|
||||
print(e)
|
||||
raise e
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user