Skip to content

Commit

Permalink
Add Alphalisa endpoint to Gen5 (#468)
Browse files Browse the repository at this point in the history
This PR adds support for alphalisa fluorescence assays for the Gen5
adapter.

NOTE: This is only expected one "read" in the file
  • Loading branch information
dchou-benchling authored Jun 20, 2024
1 parent 4243a48 commit aaae7a0
Show file tree
Hide file tree
Showing 8 changed files with 31,660 additions and 6 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Add Electrophoresis BENCHLING/2024/06 schema.
- Added github enforcement that CHANGELOG.md is updated
- Added test files Agilent TapeStation Analysis
- Add Alphalisa assay support to Gen5 adapter

### Fixed

Expand Down
15 changes: 10 additions & 5 deletions src/allotropy/parsers/agilent_gen5/agilent_gen5_structure.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,15 @@ def _get_identifier_from_filename_or_none(cls, file_name: str) -> str | None:

@dataclass(frozen=True)
class FilterSet:
emission: str
gain: str
emission: str | None = None
excitation: str | None = None
mirror: str | None = None
optics: str | None = None

@property
def detector_wavelength_setting(self) -> float | None:
if self.emission == "Full light":
if self.emission == "Full light" or not self.emission:
return None
return try_float(self.emission.split("/")[0], "Detector wavelength")

Expand Down Expand Up @@ -218,7 +218,10 @@ def create(cls, reader: LinesReader) -> ReadData:
def get_read_mode(procedure_details: str) -> ReadMode:
if ReadMode.ABSORBANCE.value in procedure_details:
return ReadMode.ABSORBANCE
elif ReadMode.FLUORESCENCE.value in procedure_details:
elif (
ReadMode.FLUORESCENCE.value in procedure_details
or ReadMode.ALPHALISA.value in procedure_details
):
return ReadMode.FLUORESCENCE
elif ReadMode.LUMINESCENCE.value in procedure_details:
return ReadMode.LUMINESCENCE
Expand Down Expand Up @@ -259,6 +262,8 @@ def _get_measurement_labels(cls, device_control_data: dict, read_mode: str) -> l
f"{label_prefix}{excitation},{emission}"
for excitation, emission in zip(excitations, emissions)
]
if not measurement_labels:
measurement_labels = ["Alpha"]

if read_mode == ReadMode.LUMINESCENCE:
emissions = device_control_data.get(EMISSION_KEY)
Expand Down Expand Up @@ -362,9 +367,8 @@ def _get_filter_sets(
mirror = None
if mirrors and read_mode == ReadMode.FLUORESCENCE:
mirror = mirrors[idx]

filter_data[label] = FilterSet(
emission=emissions[idx],
emission=emissions[idx] if emissions else None,
gain=gains[idx],
excitation=excitations[idx] if excitations else None,
mirror=mirror,
Expand Down Expand Up @@ -484,6 +488,7 @@ def parse_results(
if well_pos not in self.wells:
self.wells.append(well_pos)
well_value = try_float_or_nan(values[col_num])

if label in read_data.measurement_labels:
self.measurements[well_pos].append(
Measurement(random_uuid_str(), well_value, label)
Expand Down
1 change: 1 addition & 0 deletions src/allotropy/parsers/agilent_gen5/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class ReadMode(str, Enum):
ABSORBANCE = "Absorbance"
FLUORESCENCE = "Fluorescence"
LUMINESCENCE = "Luminescence"
ALPHALISA = "Alpha"


class ReadType(str, Enum):
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@

Software Version 3.13.15



Experiment File Path: C:\Users\Public\Documents\Experiments\AlphaLISA Export.xpt
Protocol File Path: C:\Users\Public\Documents\Protocols\AlphaLISA_v2 Export.prt



Plate Number Plate 1
Date 8/9/2022
Time 10:24:54 AM
Reader Type: Synergy Neo2
Reader Serial Number: 6235412951
Reading Type Reader

Procedure Details

Plate Type PE 1/2 area plate 96
Eject plate on completion
Set Temperature Incubator off
Read Alpha Endpoint
Full Plate
Gain: 100
Delay after plate movement: 0 msec
Excitation time: 150 msec
Delay afer excitation: 130 msec
Integration Time: 100 msec
Read Height: 3 mm

Layout
1 2 3 4 5 6 7 8 9 10 11 12
A STD1 STD2 STD3 STD4 STD5 STD6 STD7 STD8 STD9 STD10 STD11 BLK Well ID
1E+07 3E+06 1E+06 3E+05 1E+05 30000 10000 3000 1000 300 100 Conc/Dil
B STD1 STD2 STD3 STD4 STD5 STD6 STD7 STD8 STD9 STD10 STD11 BLK Well ID
1E+07 3E+06 1E+06 3E+05 1E+05 30000 10000 3000 1000 300 100 Conc/Dil
C SPL1 SPL2 SPL3 SPL4 SPL5 SPL6 SPL7 SPL8 SPL9 SPL10 SPL11 SPL12 Well ID
Conc/Dil
D SPL1 SPL2 SPL3 SPL4 SPL5 SPL6 SPL7 SPL8 SPL9 SPL10 SPL11 SPL12 Well ID
Conc/Dil
E SPL13 SPL14 SPL15 SPL16 SPL17 SPL18 SPL19 SPL20 SPL21 SPL22 SPL23 SPL24 Well ID
Conc/Dil
F SPL13 SPL14 SPL15 SPL16 SPL17 SPL18 SPL19 SPL20 SPL21 SPL22 SPL23 SPL24 Well ID
Conc/Dil
G SPL25 SPL26 SPL27 SPL28 SPL29 SPL30 SPL31 SPL32 SPL33 SPL34 SPL35 SPL36 Well ID
Conc/Dil
H SPL25 SPL26 SPL27 SPL28 SPL29 SPL30 SPL31 SPL32 SPL33 SPL34 SPL35 SPL36 Well ID
Conc/Dil



Actual Temperature: 24.9

Results
1 2 3 4 5 6 7 8 9 10 11 12
A 0 2 1 0 0 1 1 1 1 2 1 1 Alpha
-1 1 0 -1 -1 0 0 0 0 1 0 0 Blank Alpha
????? 0.000 ????? ????? ????? ????? ????? ????? ????? 0.000 ????? ????? Log Alpha
????? 5111.111 ????? ????? ????? ????? ????? ????? ????? 8035.859 ????? ????? [Concentration]
B 0 0 1 1 0 3 2 1 1 2 1 1 Alpha
-1 -1 0 0 -1 2 1 0 0 1 0 0 Blank Alpha
????? ????? ????? ????? ????? 0.305 0.000 ????? ????? 0.000 ????? ????? Log Alpha
????? ????? ????? ????? ????? >3141492.000 5035.311 ????? ????? 5035.035 ????? ????? [Concentration]
C 0 0 0 0 0 1 1 1 0 2 0 2 Alpha
-1 -1 -1 -1 -1 0 0 0 -1 1 -1 1 Blank Alpha
????? ????? ????? ????? ????? ????? ????? ????? ????? 0.000 ????? 0.000 Log Alpha
????? ????? ????? ????? ????? ????? ????? ????? ????? 5035.035 ????? 5035.821 [Concentration]
D 0 1 0 2 0 2 1 1 1 2 1 3 Alpha
-1 0 -1 1 -1 1 0 0 0 1 0 2 Blank Alpha
????? ????? ????? 0.000 ????? 0.000 ????? ????? ????? 0.000 ????? 0.301 Log Alpha
????? ????? ????? 5035.821 ????? 6121.821 ????? ????? ????? 50121.623 ????? >3141492.000 [Concentration]
E 0 1 1 1 0 1 0 1 1 1 2 1 Alpha
-1 0 0 0 -1 0 -1 0 0 0 1 0 Blank Alpha
????? ????? ????? ????? ????? ????? ????? ????? ????? ????? 0.000 ????? Log Alpha
????? ????? ????? ????? ????? ????? ????? ????? ????? ????? 1035.821 ????? [Concentration]
F 1 1 0 0 1 0 1 1 1 1 1 1 Alpha
0 0 -1 -1 0 -1 0 0 0 0 0 0 Blank Alpha
????? ????? ????? ????? ????? ????? ????? ????? ????? ????? ????? ????? Log Alpha
????? ????? ????? ????? ????? ????? ????? ????? ????? ????? ????? ????? [Concentration]
G 0 0 0 0 0 1 1 1 0 2 1 3 Alpha
-1 -1 -1 -1 -1 0 0 0 -1 1 0 2 Blank Alpha
????? ????? ????? ????? ????? ????? ????? ????? ????? 0.000 ????? 0.301 Log Alpha
????? ????? ????? ????? ????? ????? ????? ????? ????? 5035.821 ????? >3141492.000 [Concentration]
H 0 1 1 0 1 2 2 0 1 2 2 1 Alpha
-1 0 0 -1 0 1 1 -1 0 1 1 0 Blank Alpha
????? ????? ????? ????? ????? 0.000 0.000 ????? ????? 0.000 0.000 ????? Log Alpha
????? ????? ????? ????? ????? 1024.821 1225.821 ????? ????? 5035.311 5035.311 ????? [Concentration]

StdCurve Fitting Results

Curve Name Curve Formula A B C D R2 Fit F Prob
StdCurve Y = (A-D)/(1+(X/C)^B) + D -0.032 1.13 9.19E+03 0.158 0.298 ?????

Loading

0 comments on commit aaae7a0

Please sign in to comment.