DAQ/GUI - Fluorescence spectrum in a single call
This commit is contained in:
+23
-1
@@ -3,6 +3,7 @@ import json
|
||||
import math
|
||||
import statistics
|
||||
import time
|
||||
from asyncio import sleep
|
||||
from datetime import datetime
|
||||
from math import ceil
|
||||
from typing import List, Tuple, Optional, Callable, Dict
|
||||
@@ -34,7 +35,8 @@ from aaredaqlib.models import (
|
||||
PuckLoadedInfo,
|
||||
SampleShortInfoList,
|
||||
DAQStatusModel, BeamlineStatus, SessionStatus, SampleCameraSettings, AutofocusSettings, BoundingBoxModel,
|
||||
ZoomModeEnum, CrystalSize, SimpleScanParameters, MLBoxModel)
|
||||
ZoomModeEnum, CrystalSize, SimpleScanParameters, MLBoxModel, FluorescenceSpectrumParameterModel,
|
||||
FluorescenceSpectrumOutputModel)
|
||||
from aaredaqlib.raster_grid import RasterGridRequest, CompletedRasterGrid, CompletedRasterGridElem
|
||||
from aaredaqlib.rotation_scan import RotationScanRequest, CompletedRotationScan
|
||||
from aaredaqlib.sample_geometry import SampleGeometryModel
|
||||
@@ -1525,11 +1527,31 @@ class AareDAQ:
|
||||
finally:
|
||||
self.__cfg.state_busy = False
|
||||
|
||||
def fluorimeter_take_spectrum(self, fm: FluorescenceSpectrumParameterModel) -> FluorescenceSpectrumOutputModel:
|
||||
self.__cfg.set_busy(BeamlineStateEnum.SampleAlignment)
|
||||
try:
|
||||
self.__devs.fluorimeter.start_acquisition(erase=True)
|
||||
self.__devs.aerotech.set_shutter(1)
|
||||
sleep(fm.acq_time_s)
|
||||
self.__devs.aerotech.set_shutter(0)
|
||||
self.__devs.fluorimeter.stop_acquisition()
|
||||
spectrum = self.__devs.fluorimeter.get_current_data()
|
||||
energy = [1.0 * i + 0.0 for i in range(len(spectrum))]
|
||||
self.__cfg.state_busy = False
|
||||
return FluorescenceSpectrumOutputModel(spectrum=spectrum,
|
||||
bkg=self.__devs.fluorimeter.get_current_background(),
|
||||
energy_eV=energy)
|
||||
except Exception as e:
|
||||
self.__cfg.state_busy = False
|
||||
raise e
|
||||
|
||||
def fluorimeter_start(self, erase: bool = False):
|
||||
self.__devs.aerotech.set_shutter(1)
|
||||
self.__devs.fluorimeter.start_acquisition(erase=erase)
|
||||
|
||||
def fluorimeter_stop(self):
|
||||
self.__devs.fluorimeter.stop_acquisition()
|
||||
self.__devs.aerotech.set_shutter(0)
|
||||
|
||||
def fluorimeter_status(self) -> int | None:
|
||||
return self.__devs.fluorimeter.check_status()
|
||||
|
||||
@@ -10,7 +10,8 @@ from aaredaqlib.coordinate import SmargonCoordinate, Coordinate
|
||||
from aaredaqlib.logger_config import setup_logger
|
||||
from aaredaqlib.models import SampleShortInfo, DAQStatusModel, BeamlineStateEnum, BeamlineSettingsModel, \
|
||||
SampleShortInfoList, SessionStatus, SampleCameraSettings, AutofocusSettings, TokenData, \
|
||||
CryojetSettingsModel, SimpleScanParameters, CrystalSize
|
||||
CryojetSettingsModel, SimpleScanParameters, CrystalSize, FluorescenceSpectrumParameterModel, \
|
||||
FluorescenceSpectrumOutputModel
|
||||
from aaredaqlib.raster_grid import RasterGridRequest, CompletedRasterGrid
|
||||
from aaredaqlib.rotation_scan import RotationScanRequest, CompletedRotationScan
|
||||
from aaredaqlib.sample_geometry import SampleGeometryModel
|
||||
@@ -546,10 +547,15 @@ async def get_all_pgroups(token: str = Depends(oauth2_scheme)):
|
||||
logger.error(f"Failed to list pgroups: {e}")
|
||||
return []
|
||||
|
||||
@app.post("/fluorimeter/spectrum")
|
||||
async def fluorimeter_spectrum(input: FluorescenceSpectrumParameterModel, token: str = Depends(oauth2_scheme)) -> FluorescenceSpectrumOutputModel:
|
||||
auth.check_jwt_rw(cfg, auth.parse_token(token))
|
||||
return daq.fluorimeter_take_spectrum(input)
|
||||
|
||||
@app.post("/fluorimeter/start")
|
||||
async def fluorimeter_start(erase: bool = False, token: str = Depends(oauth2_scheme)) -> str:
|
||||
auth.check_jwt_rw(cfg, auth.parse_token(token))
|
||||
daq.fluorimeter_start(erase=erase)
|
||||
daq.fluorimeter_start(erase)
|
||||
return "OK"
|
||||
|
||||
@app.post("/fluorimeter/stop")
|
||||
|
||||
Reference in New Issue
Block a user