You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -55,7 +55,15 @@ class PHCalibration(CalibrationBase, kw_only=True, tag="ph"):
55
55
returnself.x_to_y(ph)
56
56
```
57
57
58
-
The `predict` and `ipredict` functions are used to convert between the two variables. The `i` in `ipredict` stands for "inverse".
58
+
The `tag` should be unique for this calibration type. For example, if we instead had another pH calibration type that used optics instead of buggers, we could define another pH calibration type as follows:
It's optional, but we also defined some helper functions `voltage_to_ph` and `ph_to_voltage` to easily map between the variables. Internally, They call `x_to_y` and `y_to_x` functions which are always available on a calibration object. They do the hard math behind mapping variables to each other.
59
67
60
68
61
69
@@ -69,23 +77,25 @@ Define a `CalibrationProtocol` subclass that will hold metadata for your protoco
69
77
```python
70
78
from pioreactor.calibrations import CalibrationProtocol
71
79
from pioreactor.utils.timing import current_utc_datetime
80
+
from pioreactor import whoami
81
+
72
82
73
83
classBufferBasedPHProtocol(CalibrationProtocol):
74
84
target_device ="ph"
75
85
protocol_name ="buffer_based"
76
86
description ="Calibrate the pH sensor using buffer solutions"
@@ -158,6 +170,6 @@ pio calibrations run --device ph
158
170
159
171
- use the Python library `click` to create an interactive CLI for your calibration protocol.
160
172
- the pair `(device, calibration_name)` must be unique. The final directory structure looks like `~/.pioreactor/storage/calibrations/<device>/<calibration_name>.yaml`
161
-
- The `x` variable should be the independent variable - the variable that can (in theory) be set by you, and the response variable `y` follows. For example, in the default OD calibration, the independent variable is the OD, and the dependent variable is the Pioreactor's sensor's voltage. This is because we can vary the OD as we wish (add more culture...), and the Pioreactor's sensor will detect different values.
162
-
- Another way to look at this is: "where does error exist"? Typically, there will be error "measurement" variable (voltage for OD calibration, RPM measurement for stirring calibration, etc.)
173
+
- The `x` variable should be the independent variable - the variable that can (in theory) be set by you, and the measurement variable `y` follows. For example, in the default OD calibration, the independent variable is the OD, and the dependent variable is the Pioreactor's sensor's voltage. This is because we can vary the OD as we wish (add more culture...), and the Pioreactor's sensor will detect different values.
174
+
- Another way to look at this is: "where does error exist"? Typically, there will be error in the "measurement" variable (voltage for OD calibration, RPM measurement for stirring calibration, etc.). In practice, we only have the measurement variable, and wish to go "back" to the original variable.
Copy file name to clipboardExpand all lines: user-guide/29-Automations/02-dosing-automations.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -92,6 +92,13 @@ When liquid is added, say 1ml, the volume rises an additional 1ml. Then 1ml of l
92
92
93
93
To further avoid overflow, we limit how much liquid is added in a single pump cycle. If the amount of liquid to be added is greater than the `max_dose_volume`, then the liquid is divided into smaller doses (halved until those new doses are less than `max_subdose` parameter), with the waste-pump run in between to avoid overflow. These small doses are called _subdoses_. You can change the maximum subdose value with the parameter `max_subdose`, see below.
94
94
95
+
### Volume parameters
96
+
97
+
98
+
-**Initial vial volume**: this is how much liquid is initially in the vial
99
+
-**Max vial volume**: the efflux tube's position determines the maximum volume your liquid volume will reach.
100
+
101
+
95
102
### Configuration parameters
96
103
97
104
You can edit these parameters in your config.ini files.
@@ -101,7 +108,6 @@ You can edit these parameters in your config.ini files.
101
108
102
109
-`pause_between_subdoses_seconds`: time to wait between doses - this is useful if you want to be sure the newly added liquid is sufficiently mixed before running the waste pump.
103
110
-`waste_removal_multiplier`: the amount of additional time to run the waste pump after the influx pump has run. This is to ensure that the volume of liquid in the vial never exceeds the end of the efflux tube. Ex: if media ran for `0.75` seconds, then the waste will run for `waste_removal_multiplier * 0.75 seconds`
104
-
-`max_volume_to_stop`: if the internally tracked volume (the `liquid_volume` setting) exceeds this value, the automation will stop. This is a safety feature to prevent overflow.
105
111
-`max_subdose`: the maximum volume to add in a single dose. If the volume to add is greater than this value, the volume will be divided into smaller doses.
0 commit comments