design_oligo_plate_order
Lay a set of oligos out as a supplier's PLATE order sheet: one worksheet per plate, in the well order the supplier's own order form fills, with the column shape its loading direction requires. A plate order is addressed BY WELL, which a flat tube list cannot express — so this is the shape an oligo set actually gets ordered in once it outgrows a handful of tubes. With mixed, a forward and a reverse share one well, which is what the supplier's doubled mix-plate layouts encode. It WRITES A FILE and sends nothing: no account, no key, no network call.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fill | No | how the plate is loaded. It decides the FILE'S COLUMNS, not just the order: a plate filled by row or by column carries no well column at all, because the supplier derives each position from the row order. Values: rows (Rows (A1, A2, A3 …)), columns (Columns (A1, B1, C1 …)), explicit (Explicitly entered). | rows |
| mixed | No | one well per PRIMER PAIR: `oligos` is read as forward, reverse, forward, reverse, and each plate is written as every well once carrying the forwards and again carrying the reverses. | |
| names | Yes | a name per oligo, in the same order. A plate well is ORDERED BY NAME, so an unnamed oligo is refused rather than numbered: the label is what the supplier ships the tube under. | |
| _files | No | The project: record references shaped like _subject. Their records become library documents a tool names in sequences/parts/document; a trace or alignment is found by file name. | |
| format | No | wells per plate. Values: 96 (96 well), 384 (384 well). | |
| oligos | Yes | the oligos to lay out, 5'→3'. Wire them from a design run, or list them. With `mixed`, these are read in FORWARD, REVERSE order — two entries per well. | |
| _subject | No | The record to act on: exactly one of sequence, accession (+source), sample (an id from list_samples) or file ({name, text} or {name, base64}); record_index picks one record of several. | |
| plate_name | No | the plate's name, which becomes the worksheet's name. Several plates get ' (2)', ' (3)' appended. | Plate 1 |
| pad_to_capacity | No | write every unused well as the supplier's blank-name, blank-sequence row rather than ending the sheet short. Advanced. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| tsv | Yes | the FIRST plate as tab-delimited text, in the column shape the loading direction requires — the shape the supplier's own paste box accepts verbatim. Several plates means several sheets: read `sheets` for the rest | |
| sheets | Yes | one entry per PLATE: its name, its grid, how many wells it fills against the plate's capacity, and every laid-out well | |
| columns | Yes | the header row this order was written with, which is the two-vs-three column rule the loading direction decided | |
| reading | Yes | what the order is, generated from the laid-out plates rather than from the request | |
| refused | Yes | every oligo left OUT, with the reason. Never empty-because-nothing-was-checked: an order that is quietly short is one the user pays a supplier for | |
| wellNote | Yes | why the well labels are written unpadded, which is a collision in the supplier's own form rather than our choice | |
| plateCount | Yes | how many plates the set needed. Branch a workflow on this rather than re-deriving it |