style: format to length 100
This commit is contained in:
@@ -10,14 +10,7 @@ from aarecommon.math.diffraction_geometry import DiffractionGeometry
|
||||
from aarecommon.math.sample_geometry import SampleGeometryModel
|
||||
from aarecommon.models.tell import TellStateModel
|
||||
from jfjoch_client.models.scan_result import ScanResult
|
||||
from pydantic import (
|
||||
AfterValidator,
|
||||
AliasChoices,
|
||||
BaseModel,
|
||||
ConfigDict,
|
||||
Field,
|
||||
field_validator,
|
||||
)
|
||||
from pydantic import AfterValidator, AliasChoices, BaseModel, ConfigDict, Field, field_validator
|
||||
|
||||
|
||||
class StagePositionEnum(Enum):
|
||||
@@ -68,31 +61,22 @@ class DataCollectionParameters(BaseModel):
|
||||
totalangle: Optional[int] = Field( # was totalrange
|
||||
default=None, validation_alias=AliasChoices("totalangle", "totalrange")
|
||||
) # Only accept positive integers between 0 and 360
|
||||
transmission: Optional[int] = (
|
||||
None # Only accept positive integers between 0 and 100
|
||||
)
|
||||
transmission: Optional[int] = None # Only accept positive integers between 0 and 100
|
||||
targetresolution: Optional[float] = None # Only accept positive float
|
||||
beamsize: Optional[str] = None
|
||||
aperture: Optional[int] = None # Optional string field
|
||||
datacollectiontype: Optional[str] = (
|
||||
None # Only accept "standard", other types might be added later
|
||||
)
|
||||
processingpipeline: Optional[str] = (
|
||||
"" # Only accept "gopy", "autoproc", "xia2dials"
|
||||
)
|
||||
spacegroupnumber: Optional[int] = (
|
||||
None # Only accept positive integers between 1 and 230
|
||||
)
|
||||
processingpipeline: Optional[str] = "" # Only accept "gopy", "autoproc", "xia2dials"
|
||||
spacegroupnumber: Optional[int] = None # Only accept positive integers between 1 and 230
|
||||
unitcell: Optional[str] = Field( # was cellparameters
|
||||
default=None, validation_alias=AliasChoices("unitcell", "cellparameters")
|
||||
) # Must be a set of six positive floats or integers
|
||||
rescutkey: Optional[str] = None # Only accept "is" or "cchalf"
|
||||
rescutvalue: Optional[float] = (
|
||||
None # Must be a positive float if rescutkey is provided
|
||||
)
|
||||
rescutvalue: Optional[float] = None # Must be a positive float if rescutkey is provided
|
||||
processingresolution: Optional[float] = Field( # was userresolution
|
||||
default=None,
|
||||
validation_alias=AliasChoices("processingresolution", "userresolution"),
|
||||
default=None, validation_alias=AliasChoices("processingresolution", "userresolution")
|
||||
)
|
||||
pdbid: Optional[str] = (
|
||||
"" # Accepts either the format of the protein data bank code or {provided}
|
||||
@@ -142,9 +126,7 @@ class DataCollectionParameters(BaseModel):
|
||||
"{protein}",
|
||||
"{method}",
|
||||
]
|
||||
valid_macro_pattern = re.compile(
|
||||
"|".join(re.escape(macro) for macro in valid_macros)
|
||||
)
|
||||
valid_macro_pattern = re.compile("|".join(re.escape(macro) for macro in valid_macros))
|
||||
|
||||
# Check if the value contains valid macros
|
||||
allowed_chars_pattern = "[a-z0-9_.+-/]"
|
||||
@@ -154,9 +136,7 @@ class DataCollectionParameters(BaseModel):
|
||||
f"^(({allowed_chars_pattern}+|macro)*/*)*$", re.IGNORECASE
|
||||
)
|
||||
if not allowed_path_pattern.match(v_without_macros):
|
||||
raise ValueError(
|
||||
f"'{v}' is not valid. Value must be a valid path or macro."
|
||||
)
|
||||
raise ValueError(f"'{v}' is not valid. Value must be a valid path or macro.")
|
||||
return v
|
||||
|
||||
@field_validator("unitcell", mode="before")
|
||||
@@ -347,9 +327,7 @@ class MLOutputModel(BaseModel):
|
||||
return None
|
||||
return (m.box.top_x, m.box.top_y, m.box.bottom_x, m.box.bottom_y)
|
||||
|
||||
def get_box_tuple_with_conf(
|
||||
self, key: str
|
||||
) -> tuple[float, float, float, float, float] | None:
|
||||
def get_box_tuple_with_conf(self, key: str) -> tuple[float, float, float, float, float] | None:
|
||||
m = self.get_box_model(key)
|
||||
if not m or not m.box:
|
||||
return None
|
||||
@@ -368,9 +346,7 @@ class MLOutputModel(BaseModel):
|
||||
keys = self.get_keys_for_class(cls)
|
||||
return [self.boxes[k] for k in keys]
|
||||
|
||||
def get_tuples_for_class(
|
||||
self, cls: MLBoxType
|
||||
) -> list[tuple[float, float, float, float]]:
|
||||
def get_tuples_for_class(self, cls: MLBoxType) -> list[tuple[float, float, float, float]]:
|
||||
out: list[tuple[float, float, float, float]] = []
|
||||
for m in self.get_models_for_class(cls):
|
||||
if m.box:
|
||||
@@ -384,13 +360,7 @@ class MLOutputModel(BaseModel):
|
||||
for m in self.get_models_for_class(cls):
|
||||
if m.box:
|
||||
out.append(
|
||||
(
|
||||
m.box.top_x,
|
||||
m.box.top_y,
|
||||
m.box.bottom_x,
|
||||
m.box.bottom_y,
|
||||
float(m.conf),
|
||||
)
|
||||
(m.box.top_x, m.box.top_y, m.box.bottom_x, m.box.bottom_y, float(m.conf))
|
||||
)
|
||||
return out
|
||||
|
||||
@@ -465,9 +435,7 @@ class ZoomModeEnum(Enum):
|
||||
class ZoomModel(BaseModel):
|
||||
z: dict[float, SampleCameraSettings]
|
||||
|
||||
def get_camera_settings(
|
||||
self, zoom_value: float
|
||||
) -> SampleCameraSettings:
|
||||
def get_camera_settings(self, zoom_value: float) -> SampleCameraSettings:
|
||||
if not self.z:
|
||||
raise ValueError("No zoom data available")
|
||||
|
||||
@@ -495,16 +463,12 @@ class ZoomModel(BaseModel):
|
||||
|
||||
t = (zoom_value - lower_zoom) / (upper_zoom - lower_zoom)
|
||||
|
||||
interpolated_gain = lower_elem.gain + t * (
|
||||
upper_elem.gain - lower_elem.gain
|
||||
)
|
||||
interpolated_gain = lower_elem.gain + t * (upper_elem.gain - lower_elem.gain)
|
||||
interpolated_exp = lower_elem.exposure + t * (
|
||||
upper_elem.exposure - lower_elem.exposure
|
||||
)
|
||||
|
||||
return SampleCameraSettings(
|
||||
gain=interpolated_gain, exposure=interpolated_exp
|
||||
)
|
||||
return SampleCameraSettings(gain=interpolated_gain, exposure=interpolated_exp)
|
||||
|
||||
closest = min(self.z.keys(), key=lambda x: abs(x - zoom_value))
|
||||
elem = self.z[closest]
|
||||
|
||||
@@ -59,9 +59,7 @@ class CenterOfMassModel(BaseModel):
|
||||
x=(self.n_x + 0.5) * r.grid_size_mm.x, y=(self.n_y + 0.5) * r.grid_size_mm.y
|
||||
)
|
||||
|
||||
def get_com_pxl(
|
||||
self, r: RasterGridRequest, geom: SampleGeometryModel
|
||||
) -> Coordinate:
|
||||
def get_com_pxl(self, r: RasterGridRequest, geom: SampleGeometryModel) -> Coordinate:
|
||||
# defines COM in pixels at beam position, relative to the top left corner of grid
|
||||
com_mm = self.get_com_mm(r)
|
||||
return Coordinate(x=com_mm.x / geom.pixel_in_mm, y=com_mm.y / geom.pixel_in_mm)
|
||||
|
||||
Reference in New Issue
Block a user