check_manufacturability
Measure a sequence against what a NAMED synthesis vendor publishes it can make: length, average and windowed GC, homopolymer runs, tandem repeats, long repeats and hairpin-forming inverted repeats. Every threshold is the vendor's own, read from the vendor's own page with the date it was read, and every finding carries the span it is about so it can be drawn. It reports the limits that are MET as well as the ones exceeded, because a list of failures cannot tell a clean sequence from an unchecked one. It never predicts a synthesis outcome and never rules a sequence out: a vendor publishes what it supports, so being outside a published window is a conversation with the supplier, not a rejection.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| _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. | |
| vendor | No | which vendor product to measure against. Each carries its own limits, and two vendors can honestly disagree about one sequence. Values: idt-gblocks (IDT gBlocks Gene Fragments), idt-eblocks (IDT eBlocks Gene Fragments), twist-clonal (Twist Bioscience Clonal Genes), twist-fragments (Twist Bioscience Gene Fragments). | idt-gblocks |
| feature | No | measure a named feature of the open record instead of the whole thing — the insert you are about to order rather than the vector it sits in. Advanced. | |
| _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. | |
| sequence | No | the sequence to measure. Leave unset to use the open record, or the current selection when there is one. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| spans | Yes | just the spans of the exceeded limits, 0-based half-open, ready to draw on the map — the half of a finding a user cannot act on without | |
| checked | Yes | how many limits were graded. Read it beside `outside`: 0 of 4 and 0 of 7 are different answers, because vendors publish different numbers of limits | |
| outside | Yes | how many published limits this sequence exceeds — the number to branch a workflow on | |
| profile | Yes | the vendor profile every verdict here was made against, including the page it was read from and the date — a threshold whose source is not stated is not checkable | |
| reading | Yes | the report in words, generated from the findings: which limits are exceeded by how much, what could not be graded, and the standing qualification that published support is not a refusal policy | |
| verdict | Yes | `within` when every published limit is met, `outside` when any is exceeded. Not a prediction and not a refusal: it is whether the sequence sits inside the envelope the vendor publishes | |
| findings | Yes | every limit, met or not, with what this sequence measures, what the vendor publishes, and the span it is about where it has one | |
| notGraded | Yes | limits the vendor publishes that this sequence could not be graded on, each with the reason. A 40 bp insert has no 50 bp GC window, and silence would make a shorter sequence look like a cleaner one | |
| repeatScreens | Yes | the Synthesis Success Calculator's six published repeat-density screens (Halper, Hossain & Salis 2020), independent of vendor: each with its rule, whether it fires (null where it does not apply, as the 500 bp window under 1,000 bp), what was measured and the first span that tripped it. Rules from the literature, not a vendor's acceptance limits |