Skip to content

Commit 2006f0a

Browse files
Merge pull request #43 from JuBiotech/reservoir-dtype
Treat reservoir ID in fluidics as int
2 parents 40d0e0a + 103e429 commit 2006f0a

File tree

5 files changed

+28
-3
lines changed

5 files changed

+28
-3
lines changed

bletl/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
BLData,
1212
BLDParser,
1313
FilterTimeSeries,
14+
FluidicsSource,
1415
IncompatibleFileError,
1516
InvalidLotNumberError,
1617
LotInformationError,

bletl/parsing/blpro.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
BLData,
2020
BLDParser,
2121
FilterTimeSeries,
22+
FluidicsSource,
2223
InvalidLotNumberError,
2324
)
2425

@@ -346,7 +347,7 @@ def extract_fluidics(dfraw):
346347
("Cycle", "cycle", int),
347348
("Well", "well", int),
348349
("Time", "time", float),
349-
("Reservoir", "reservoir", float),
350+
("Reservoir", "reservoir", FluidicsSource),
350351
("MF_Volume", "mf_volume", float),
351352
("Temp_Ch4", "volume", float),
352353
]

bletl/types.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import enum
44
import os
55
import typing
6-
import warnings
76
from typing import Dict, Optional, Tuple, Union
87

98
import numpy
@@ -19,6 +18,20 @@ class BioLectorModel(enum.Enum):
1918
XT = "blXT"
2019

2120

21+
class FluidicsSource(enum.IntEnum):
22+
"""Number that identifies the source of volume changes."""
23+
24+
ReservoirA = 1
25+
26+
"""Additions from reservoir A."""
27+
ReservoirB = 2
28+
29+
"""Additions from reservoir B."""
30+
31+
Pipetting = -1
32+
"""Additions from pipetting."""
33+
34+
2235
class BLData(dict):
2336
"""Standardized data type for BioLector data."""
2437

bletl/utils.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
"""Contains helper functions that do not depend on other modules within this package."""
22
import datetime
3+
import enum
34
import pathlib
45
import re
56
import urllib
6-
from typing import Optional, Sequence, Tuple, Union
7+
from typing import Optional, Sequence, Tuple
78

89
import pandas
910

@@ -32,6 +33,9 @@ def __to_typed_cols__(
3233
for ocol, ncol, typ in ocol_ncol_type:
3334
if ocol is None or not ocol in dfin:
3435
dfout[ncol] = None
36+
elif issubclass(typ, enum.Enum):
37+
# Enum types are kept as object-series
38+
dfout[ncol] = dfin[ocol].apply(lambda x: typ(x), convert_dtype=False)
3539
else:
3640
dfout[ncol] = dfin[ocol].astype(typ)
3741
return dfout

tests/test_core.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,3 +635,9 @@ def test_issue_38(self):
635635
assert bldata.fluidics.loc["E06", "volume"][-1] == 913.16
636636
assert bldata.fluidics.loc["F01", "volume"][-1] == 1202.719
637637
pass
638+
639+
def test_fluidics_source(self):
640+
fp = dir_testfiles / "BLPro" / "18-FZJ-Test2--2018-02-07-10-01-11.csv"
641+
bldata = bletl.parse(fp)
642+
assert isinstance(bldata.fluidics["reservoir"][0], bletl.FluidicsSource)
643+
pass

0 commit comments

Comments
 (0)