Skip to content

Commit f1649b2

Browse files
link corrections
1 parent d847699 commit f1649b2

File tree

5 files changed

+102
-45
lines changed

5 files changed

+102
-45
lines changed

user-guide/01-getting-started/01-assembly_guides/00_pioreactor_40ml_v1.5/02-40ml-v15-rpi-hat-assembly.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ The 40 GPIO pins (standing for general-purpose input/output) form a distinct row
7474
By screwing down the standoffs, they'll help compress the HAT onto the RPi, too.
7575
:::
7676

77-
4. Put this aside and proceed to the [next page](40ml-wetware-assembly).
77+
4. Put this aside and proceed to the [next page](40ml-v15-wetware-assembly).
7878

7979
</AssemblyInstructionBlock>
8080

@@ -112,6 +112,6 @@ The 40 GPIO pins (standing for general-purpose input/output) form a distinct row
112112
By screwing down the standoffs, you can use these standoffs to help compress the HAT onto the RPi, too.
113113
:::
114114

115-
4. Put this aside and proceed to the [next page](40ml-wetware-assembly).
115+
4. Put this aside and proceed to the [next page](40ml-v15-wetware-assembly).
116116

117117
</AssemblyInstructionBlock>

user-guide/01-getting-started/01-assembly_guides/00_pioreactor_40ml_v1.5/05-40ml-v15-optics-assembly.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Each eye-spy is unique. The one used for REF has a white mark in the upper-left
3535
-------
3636

3737

38-
<AssemblyInstructionBlock title="Step 2: Install the eye-spies" images={["user-guide/hardware-assembly/40ml-v15/eye-spy-cover.jpg", "user-guide/hardware-assembly/40ml-v15/eye-spy-into-ref.jpg", "user-guide/hardware-assembly/40ml-v15/secure-ref.jpg", "user-guide/hardware-assembly/40ml-v15/secure-all-eye-spy.jpg"]}>
38+
<AssemblyInstructionBlock title="Step 2: Install the eye-spys" images={["user-guide/hardware-assembly/40ml-v15/eye-spy-cover.jpg", "user-guide/hardware-assembly/40ml-v15/eye-spy-into-ref.jpg", "user-guide/hardware-assembly/40ml-v15/secure-ref.jpg", "user-guide/hardware-assembly/40ml-v15/secure-all-eye-spy.jpg"]}>
3939

4040
1. Place an eye-spy cover over the REF eye-spy.
4141
2. With the tan connectors towards the top, place the eye-spy into the REF socket on the vial holder. Secure it with <Highlight color={colors.red}>4x 8mm screws</Highlight>.
@@ -53,16 +53,12 @@ The measuring eye-spy can be placed in either the 90 or 135 degree pocket. For m
5353

5454
-----
5555

56-
<AssemblyInstructionBlock title="Step 3: Connect eye-spies to HAT" images={["user-guide/hardware-assembly/40ml-v15/connect-stemma-to-hat.jpg", "user-guide/hardware-assembly/40ml-v15/connect-stemma-on-eye-spy.jpg"]}>
56+
<AssemblyInstructionBlock title="Step 3: Connect eye-spys to HAT" images={["user-guide/hardware-assembly/40ml-v15/connect-stemma-to-hat.jpg", "user-guide/hardware-assembly/40ml-v15/connect-stemma-on-eye-spy.jpg"]}>
5757

5858
1. Locate the <Highlight color={colors.teal}>STEMMA-QT connector</Highlight> on the HAT and connect the 100mm STEMMA-QT wire, with the yellow wire furthest from the heater flat flex cable.
5959
2. Connect the other end to the leftmost eye-spy. Use the colors of the wire to orient the connector correctly.
6060
3. Use the <Highlight color={colors.magenta}>50mm STEMMA-QT wire</Highlight> to connect each eye-spy.
6161

62-
:::tip
63-
Extra eye-spies can be daisy chained using consecutive STEMMA-QT cables!
64-
:::
65-
6662
:::tip
6763
It does not matter which wires are connected to either eye-spy sockets. However, organize the wires neatly and avoid crossing over when possible.
6864
:::

user-guide/01-getting-started/01-assembly_guides/01_pioreactor_20ml_v1.5/02-20ml-v15-rpi-hat-assembly.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ The 40 GPIO pins (standing for general-purpose input/output) form a distinct row
7474
By screwing down the standoffs, they'll help compress the HAT onto the RPi, too.
7575
:::
7676

77-
4. Put this aside and proceed to the [next page](20ml-v11-wetware-assembly).
77+
4. Put this aside and proceed to the [next page](20ml-v15-wetware-assembly).
7878

7979
</AssemblyInstructionBlock>
8080

@@ -112,6 +112,6 @@ The 40 GPIO pins (standing for general-purpose input/output) form a distinct row
112112
By screwing down the standoffs, you can use these standoffs to help compress the HAT onto the RPi, too.
113113
:::
114114

115-
4. Put this aside and proceed to the [next page](20ml-v11-wetware-assembly).
115+
4. Put this aside and proceed to the [next page](20ml-v15-wetware-assembly).
116116

117117
</AssemblyInstructionBlock>

user-guide/01-getting-started/01-assembly_guides/01_pioreactor_20ml_v1.5/05-20ml-v15-optics-assembly.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ Each eye-spy is unique. The one used for REF has a white mark in the upper-left
3434
-------
3535

3636

37-
<AssemblyInstructionBlock title="Step 2: Install the eye-spies" images={["user-guide/hardware-assembly/40ml-v15/eye-spy-cover.jpg", "user-guide/hardware-assembly/20ml-v15/eye-spy-into-ref.jpg", "user-guide/hardware-assembly/20ml-v15/secure-ref.jpg", "user-guide/hardware-assembly/20ml-v15/secure-all-eye-spy.jpg"]}>
37+
<AssemblyInstructionBlock title="Step 2: Install the eye-spys" images={["user-guide/hardware-assembly/40ml-v15/eye-spy-cover.jpg", "user-guide/hardware-assembly/20ml-v15/eye-spy-into-ref.jpg", "user-guide/hardware-assembly/20ml-v15/secure-ref.jpg", "user-guide/hardware-assembly/20ml-v15/secure-all-eye-spy.jpg"]}>
3838

3939
1. Place an eye-spy cover over the REF eye-spy.
4040
2. With the tan connectors towards the top, place the eye-spy into the REF socket on the vial holder. Secure it with <Highlight color={colors.red}>4x 8mm screws</Highlight>.
@@ -52,15 +52,12 @@ The measuring eye-spy can be placed in either the 90 or 135 degree pocket. For m
5252

5353
-----
5454

55-
<AssemblyInstructionBlock title="Step 3: Connect eye-spies to HAT" images={["user-guide/hardware-assembly/40ml-v15/connect-stemma-to-hat.jpg", "user-guide/hardware-assembly/20ml-v15/connect-stemma-on-eye-spy.jpg"]}>
55+
<AssemblyInstructionBlock title="Step 3: Connect eye-spys to HAT" images={["user-guide/hardware-assembly/40ml-v15/connect-stemma-to-hat.jpg", "user-guide/hardware-assembly/20ml-v15/connect-stemma-on-eye-spy.jpg"]}>
5656

5757
1. Locate the <Highlight color={colors.teal}>Stemma-QT connector</Highlight> on the HAT and connect the 100mm Stemma-QT wire, with the yellow wire furthest from the heater flat flex cable.
5858
2. Connect the other end to the leftmost eye-spy. Use the colors of the wire to orient the connector correctly.
5959
3. Use the <Highlight color={colors.magenta}>50mm Stemma-QT wire</Highlight> to connect each eye-spy.
6060

61-
:::tip
62-
Extra eye-spies can be daisy chained using consecutive Stemma-QT cables!
63-
:::
6461

6562
:::tip
6663
It does not matter which wires are connected to either eye-spy sockets. However, organize the wires neatly and avoid crossing over when possible.

user-guide/03-Extending your Pioreactor/04-Experiment Profiles/10-experiment-profiles-schema.md

Lines changed: 94 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -372,54 +372,118 @@ The UI validates profiles against this schema and performs an additional run-tim
372372
experiment_profile_name: <string> # Name of the experiment profile
373373
374374
375-
# Metadata section (optional)
375+
# Metadata (optional)
376376
metadata:
377-
author: <string> # Author of the experiment profile
378-
description: <string> # Description of the experiment profile
377+
author: <string>
378+
description: <string>
379379
380-
# Plugins section (optional)
380+
# Plugins (optional)
381381
plugins:
382-
- name: <string> # Name of the plugin
383-
min_version: <string> # Minimum required version of the plugin
382+
- name: <string>
383+
version: <string> # version or constraint, e.g. "1.2.3" or ">=1.2.3"
384384
385-
# inputs for variables that can be used in expressions (optional)
385+
# Inputs available to expressions (optional)
386386
inputs:
387-
var1: value1
388-
var2: value2
387+
<input_name>: <value>
389388
390389
391-
# Common jobs section (optional)
392-
# Jobs that are common for all Pioreactors
390+
# Jobs common to all Pioreactors (optional)
393391
common:
394392
jobs:
395393
<job_name>:
394+
description: <string>
396395
actions:
397-
- type: <string> # Type of action: "start", "pause", "resume", "stop", "update", "repeat", "when", or "log"
398-
hours_elapsed: <float> # Time when the action is scheduled (in hours after experiment start)
399-
# Options for the action (optional)
400-
# If type is 'log', a 'message' parameter is required here
401-
options:
402-
<option_name>: <value>
403-
# Arguments for the action (optional)
404-
arguments: <list>
396+
- # see Action definitions below
405397
406-
# Pioreactors section (optional)
407-
# Jobs that are specific to some Pioreactors
398+
# Jobs per Pioreactor (optional)
408399
pioreactors:
409400
<pioreactor_unit_name>:
410-
# Optional label for the Pioreactor
411401
label: <string>
412402
jobs:
413403
<job_name>:
404+
description: <string>
414405
actions:
415-
- type: <string> # Type of action: "start", "pause", "resume", "stop", "update", "repeat", "when", or "log"
416-
hours_elapsed: <float> # Time when the action is scheduled (in hours after experiment start)
417-
# Optional 'if' directive for conditional execution of actions
418-
if: <string> # Can be an expression
419-
# Options for the action (optional)
420-
# Values can be expressions, denoted with ${{ }}
421-
options:
422-
<option_name>: <value>
406+
- # see Action definitions below
407+
408+
409+
# Action definitions
410+
- type: log
411+
hours_elapsed: <float>
412+
if: <bool_or_expression>
413+
options:
414+
message: <string>
415+
level: DEBUG|debug|WARNING|warning|INFO|info|NOTICE|notice|ERROR|error (default: notice)
416+
417+
- type: start
418+
hours_elapsed: <float>
419+
if: <bool_or_expression>
420+
options: {<option_name>: <value>} # expressions allowed via ${{ }}
421+
args: [<string>, ...]
422+
config_overrides: {<config_name>: <value>}
423+
424+
- type: update
425+
hours_elapsed: <float>
426+
if: <bool_or_expression>
427+
options: {<option_name>: <value>} # expressions allowed via ${{ }}
428+
429+
- type: pause
430+
hours_elapsed: <float>
431+
if: <bool_or_expression>
432+
433+
- type: resume
434+
hours_elapsed: <float>
435+
if: <bool_or_expression>
436+
437+
- type: stop
438+
hours_elapsed: <float>
439+
if: <bool_or_expression>
440+
441+
- type: repeat
442+
hours_elapsed: <float>
443+
if: <bool_or_expression>
444+
repeat_every_hours: <float> # default: 1.0
445+
while: <bool_or_expression> # optional stop condition
446+
max_hours: <float> # optional cap on total hours
447+
actions:
448+
- # basic action only (log, start, pause, resume, stop, update)
449+
450+
- type: when
451+
hours_elapsed: <float>
452+
if: <bool_or_expression>
453+
condition: <bool_or_expression>
454+
actions:
455+
- # any action (including repeat/when)
456+
457+
458+
# Profile expression syntax (used in ${{ ... }} in options/conditions)
459+
#
460+
# Literals
461+
# - Numbers: integer or float (e.g., 1, -2.5)
462+
# - Booleans: true, false (case-insensitive)
463+
# - Names resolve to values provided in the expression environment (inputs, etc.); otherwise they remain strings.
464+
#
465+
# Operators
466+
# - Arithmetic: +, -, *, / (raises on division by zero), ** (exponent)
467+
# - Comparisons: <, <=, ==, >=, >
468+
# - Logical: and, or, not
469+
# - Parentheses for precedence
470+
#
471+
# Functions
472+
# - random(): float in [0,1)
473+
# - unit(): current unit name
474+
# - hours_elapsed(): current action time
475+
# - experiment(): current experiment name
476+
# - job_name(): current job name
477+
#
478+
# MQTT lookups
479+
# - <unit>:<job>:<setting>[.<nested_key>]*
480+
# - ::<job>:<setting>[.<nested_key>]* (uses current unit)
481+
# Examples: unit():od_reading:od600, ::stirring:setting.target_rpm
482+
# Fails if worker is inactive or topic missing.
483+
#
484+
# Conversion rules
485+
# - Numeric strings become floats; "true"/"false" become booleans; otherwise strings stay strings.
486+
423487
```
424488

425489
### Examples

0 commit comments

Comments
 (0)