jane* docs
Amplify

Primer Library

Marked experimental: the surface can change.

The oligos you already own, kept with the constructs they belong to.

Reached byTools → Primer Library + Check
FormatsCSV in and out Vendor bulk upload (tubes) Plate order sheet (TSV)
Sample projectPrimer library + check

What it does

Keeps the oligos a lab actually owns — the ones in the freezer box — and answers the three questions you have about them. Where does this primer bind on what I have open?, which of my existing primers would give me a product on this construct, so I do not have to order anything?, what will this set of oligos do to itself and to each other in one tube?, and — once you have decided — what file does the supplier need in order to make them?

An oligo in the library carries its sequence, a melting temperature, and a lifecycle state: designed, ordered, validated. That last field is the one that makes a library worth keeping — a sequence in a spreadsheet tells you nothing about whether it has ever worked.

When you'd use this

Used in: Design primers, simulate the PCR, and predict the band

  • Before ordering. You need to amplify a region; check whether something in the box already brackets it. The Screen tab answers that directly.
  • When a PCR failed. Run the primer against the template you actually used and look at where else it binds. A primer with a strong second site is a primer that will give you a second band.
  • Setting up a colony screen. The diagnostic search finds the pair whose product size differs between two constructs by enough to read off a gel, which is what a knock-in screen needs.
  • Before ordering a set. A pool going into one tube can fail on structure rather than on sequence: an oligo that folds back on itself is not available to prime, and two that pair at their 3′ ends extend each other into a primer-dimer band instead of your product. The Structure tab folds every oligo and checks every pairing before you spend on synthesis.
  • Ordering more than a handful. Past about a dozen oligos, suppliers want a plate, not a tube list, and a plate order is addressed by well rather than by row. The Order tab lays the set out on a 96- or 384-well plate and writes the sheet.
  • Handing a project on. The library exports as CSV, as a synthesis-vendor bulk-upload sheet for tubes, and as a plate order sheet.

Either side of this: Primer Designer when nothing you own will do and you need new oligos, and PCR to simulate the reaction once you have a pair.

What this computes

Check — one primer, or a pair, against the open sequence

  • 3′-anchored binding sites, each with its strand, footprint start, footprint length, percent identity over the full primer, and mismatch count. A site is found by an exact match over the primer's 3′-terminal 12 bases, on both strands; identity is then scored over the whole oligo, so nothing is filtered on identity and a 5′ tail lowers the score rather than hiding the site
  • a confidence badge per site from that identity, at a bar you can move: ✓ at 99.999 % a perfect match and ✓ from 90 % expected to bind, ⚠ from 75 %, ~ from 60 %, ✗ below — so a weak site is visibly weak rather than just present. The perfect-match boundary is 99.999 rather than 100 because identity is a ratio and a match of every base must not be lost to rounding
  • a written reading of the run, generated from the run itself: which molecule the best site is on, at which position and on which strand, what its identity means at the bar in force, and what would undermine it — a second site that also binds, a mismatch near the 3′ end, or sequences in the set that carry no site at all. A no-hit answer names the seed rather than reporting zeros, because no exact 12-base seed occurs here and no partial match exists are different findings
  • amplicon length when a forward and reverse primer are given together, one product per molecule: the best forward site is paired with the best reverse site downstream of it, and the length spans both footprints inclusively, wrapping the origin on a circular template
  • a written reading of the pair as well, on the same terms as the single-primer one. A pair is graded on its weaker primer, because a product needs both to bind, and the reading says which number that was. Two products across the project means two molecules amplify: on a gel that is two bands unless the templates are separated first, and in a cloning reaction it is the wrong insert half the time. It states what the prediction does not cover — annealing temperature, extension time and polymerase processivity — so a possible product is not read as a promised one
  • melting temperature for every oligo in the list, computed under the same buffer the rest of the editor uses — monovalent and divalent cations, dNTPs and oligo concentration — so one oligo has one Tm wherever it is shown. A degenerate oligo is scored by a different model and says so
  • basic melting temperature, by the Wallace rule, stated as out of range above 20 nt rather than printed bare — the formula runs away on long oligos, and a 64-mer reported at 184 °C is the defect this guard exists for

Plate order — the set laid out as a supplier's order sheet

  • a well for every oligo, in the order the chosen loading direction fills the plate: by row (A1, A2, A3 …) walks across a row before dropping to the next, by column (A1, B1, C1 …) walks down a column before moving right, and an explicitly entered plate places each oligo at a well the file names. The sequence of labels is the supplier's own, read from its published plate order form rather than derived, for all eight layouts the form declares
  • the file's columns, decided by that direction and not by preference: a plate filled by row or by column carries no well column at all, because the supplier reads each position off the row order, and adding a third column there is an upload error rather than extra information. Only an explicitly entered plate carries Well Position
  • a mix plate, one well per primer pair, with the forward and the reverse of a pair sharing that well. It is written as every well once carrying the forwards and then every well again carrying the reverses, which is what the supplier's doubled 96- and 384-well mix layouts encode — a pair is not two adjacent rows. Which two oligos are a pair is something you state, or something the designer recorded when it saved a pair it designed; it is never guessed from a name, because a _F/_R convention is a habit rather than a fact, and a wrong guess puts a stranger's oligo in your well
  • how many plates the set needs, at 96 or 384 wells, each written as its own worksheet and named in sequence. Optionally every unused well is written as the supplier's own blank-name, blank-sequence row, which is how a plate says leave this well empty rather than simply ending short
  • every oligo the order leaves out, and why — no sequence, a base that is not IUPAC, or no name, since a plate well is ordered by name. A pair is refused whole, naming which half failed: half a pair is an oligo you pay for and cannot use, and it arrives looking like a complete plate
  • a written reading of the order, generated from the laid-out plates: how many oligos or pairs over how many plates of what size, which direction fills them, and what that direction means for the file. The cautions are earned rather than standing — an order with nothing wrong with it carries none
  • well labels written unpadded (A1 … H12, not A01). That is a collision in the supplier's own materials rather than a choice: the worksheet an upload is checked against lists them unpadded while one guided-entry label shows them padded, and the panel says which one it wrote and why

Screen — the whole library against the whole project

  • Products: every pair of library primers that gives a product on the sequences you chose
  • Flanking pairs: the pairs that bracket the current editor selection, re-read from the live selection on every run rather than from a copy
  • Diagnostic sets: the pair, or trio, whose product size differs between two or more constructs by a readable margin

Structure — the pool, folded and cross-checked

  • per oligo, its hairpin, its self-dimer anywhere along its length, and its self-dimer with the 3′ end paired — each as a melting temperature, a free energy (ΔG, in kcal/mol at the temperature you set), an enthalpy and an entropy
  • per pair, the cross-dimer anywhere between the two oligos and the cross-dimer with a 3′ end paired, measured in both directions and reported as the worse of the two, naming which oligo's 3′ end the reading belongs to
  • the pairing itself, drawn — the actual base pairs the alignment found, not a picture inferred from the numbers
  • a verdict per reading against a published limit, with the limit shown beside it: hairpin 24 °C, self-dimer 45 °C and 35 °C at a 3′ end, cross-dimer 45 °C and 35 °C at a 3′ end
  • the oligos that broke no limit and appear in no flagged pair — an oligo is dropped from that list for a partner's sake, which is the point of screening a set rather than an oligo
  • the reaction it was all computed in: monovalent and divalent cations, dNTPs, oligo strand concentration, the temperature ΔG was evaluated at, and the largest internal loop the alignment would span

What the limits mean, and what a clean result does not mean. Those five cutoffs are a design filter: they are the thresholds a primer-design program uses to reject a candidate, not a measurement of whether a band will appear. Graded against 48 primer pairs that were each run on a gel, they flag none of the 23 that produced a visible primer-dimer artefact. So a set that passes has cleared the design filter, and the panel says exactly that rather than implying the tube is safe — read the worst-pair temperatures beside the verdict. The energies are checked against the thal engine the melting-temperature readouts elsewhere use, and the panel states which generation of it: the published tool most people compare against is a slightly older one, and the two disagree on about 3 % of primer-length oligos.

Order — the set, laid out on a plate

  • the well each oligo lands in, for the plate size and the loading direction you chose: filling across each row (A1, A2, A3 …), down each column (A1, B1, C1 …), or placing wells yourself. Well labels are written unpadded (A1, not A01), which is the form the machine-readable list a supplier validates an upload against uses
  • the columns the file will carry, and they are not a preference. A row- or column-filled order is positioned by where a row sits in the file, so it carries Name, Sequence and a well column in it is an upload error; free placement carries Well Position, Name, Sequence. Change the direction and the column line changes with it
  • how many plates the set needs, and how full each one is, against the plate's capacity — a supplier takes one plate per worksheet, so a set that spills onto a second plate is two uploads
  • every oligo that cannot go on a plate, with the reason — no sequence, a character that is not an IUPAC base, or no name, because a plate well is ordered by name. Nothing is dropped quietly: an order file that is silently shorter than the set you chose is the failure that costs money
  • a written reading of the order, generated from the laid-out plates: how many oligos over how many plates, how the supplier derives each well, which wells stay empty, and anything refused

Before you order — what the provider does with it

Beside the export, and stated rather than computed: a synthesis provider screens the sequence of every order at or above a published length, and screens you as a customer, before the order is made. The panel names the length in force on the day you are reading it, names the instrument and its date, and says when the length changes — it is mid-transition from 200 to 50 bases, ending 24 October 2026, so a fixed number printed here would be wrong within weeks. It also states that the provider keeps the sequence, the vector, the recipient and the screening result for at least 8 years after shipping.

Nothing here screens anything. No sequence you enter is classified, scored or checked against any list, and this application holds no list of agents or controlled sequences. Screening is done by the provider, against control lists and best-match similarity over the international sequence databanks, by people with the expertise to judge an order. What this panel gives you is the process and its citations, so the step is not a surprise.

Library: per oligo, its lifecycle state and which transitions are legal from it, a basic Tm, and membership of an order cart.

Where it lives

Tools → Primer Library + Check, in the right rail, as five tabs — Library, Order, Check, the whole-project Screen, and Structure. Products that land on the open document are drawn on the amplicons track; products on other project files are reported with a note saying they cannot be drawn here, because the canvas shows one molecule.

The same picker appears inside every tool that takes a primer — PCR, Multiplex, Fusion — so a tool never asks you to re-type an oligo you already own.

Inputs and outputs

Accepts oligos added from the current selection, pasted, or imported from CSV. The Check tab takes one primer or a forward-and-reverse pair; the target is the open sequence.

Two sources of primer are shown separately and are not merged, because they are different objects. The library is yours and persists across projects. The open molecule's own primer annotations are what the record was annotated with, or what another tool drew on the map; they are scoped to that document and vanish when you open another, so they are never silently written into your library.

Produces binding-site tables, amplicons drawn on the map, CSV and vendor tube-format exports, and a plate order sheet as tab-delimited text — a shape a supplier's own paste box accepts verbatim, which is what makes a plate order reachable without writing a spreadsheet.

Demo

There is no screencast here. The Primer library + check sample project opens with a real library and a construct to check it against, which is the demo.

Worked example

Open the Primer library + check sample project. On the Check tab, run one of the library primers against the open construct: you get its binding sites sorted best first, each with identity and a badge. Add the matching reverse primer and the amplicon length appears.

Now select a region on the map and run Flanking on the Screen tab. It reports the pairs already in your library that bracket that selection — the answer to "can I amplify this without ordering anything", computed rather than eyeballed.

For the structure question, open the Colony-PCR verification sample project instead and import its primer file (Library tab → From project file… → yeast-verification-primers.fasta): eleven real lab primers land in the library. Set the oligo concentration on the Structure tab to the one you actually pipette — the default is a design-tool convention, not your bench — and screen them. Three of the eleven fold into a hairpin that melts above the 24 °C limit, no pairing breaks a cross-dimer limit, and eight come through clean. Raising the concentration from 50 to 200 nM moves every dimer temperature up and leaves every hairpin exactly where it was, which is the physics rather than a quirk: a hairpin is one molecule folding on itself, so how much of it is in the tube cannot change when it melts.

Then order them. On the Order tab, with those same eleven in the library, pick Whole library: they fill row A of a 96-well plate, A1 to A11, and the panel reads 11 of 96 wells used. Switch the loading direction from Rows to Explicitly entered and watch the column line change from Name, Sequence to Well Position, Name, Sequence — that is the file the supplier will accept for a freely placed order, and the two-column form is the one they accept when the position comes from the row order instead. Name the plate, download the sheet, and open the note beneath it: none of these eleven reaches the length at which the sequence is screened today, and the note says when that changes and by how much.

Controls

ControlWhat it changes
Lifecycle statedesigned → ordered → validated. Only legal transitions are offered, so an oligo cannot be marked validated without having been ordered
Order cartwhich oligos go into the next export; the vendor sheet is written from the cart, not from the whole library
Structure → Screenwhich oligos are folded: the whole library, the collection you are filtered to, or just the order cart
One well per pairwhether the plate is a mix plate. On, a forward and its reverse share a well and only linked pairs are ordered; off, every oligo gets its own well
Plate size96 wells (8 rows × 12 columns) or 384 (16 × 24). A set larger than one plate is written as several worksheets
Loadingby row, by column, or explicitly entered. It sets the order the plate fills and whether the file carries a well column
Plate namebecomes the worksheet's name, which is how the supplier learns it. Several plates are numbered from it
Write the empty wellspads each plate to its full well count with blank-name, blank-sequence rows rather than ending the sheet short
Pair primerswhich two oligos share a well. Pairs the designer saved are already linked; a set imported from a file is paired here, by you
Structure → Monovalent / Divalent / dNTPsthe salt the folding is computed in. dNTPs are subtracted from the divalent term because they chelate magnesium, so raising them lowers the effective salt
Structure → Oligostrand concentration. It moves every dimer temperature and leaves hairpins alone
Structure → ΔG atthe temperature the free energies are reported at. It does not move any melting temperature — that is the structure's own — so set it to your annealing temperature to read the energies there
Structure → Max loopthe largest internal loop the alignment will span
Oligos (Order tab)which set goes on the plate: the whole library, the collection you are filtered to, or the order cart
Order → Plate96 wells (8 rows × 12 columns) or 384 (16 × 24). The grid redraws at the real geometry
Order → Loading directionacross each row, down each column, or each row naming its own well. It sets the well order and the file's columns, because a supplier derives the position from the row order unless you state it
Order → Plate namebecomes the worksheet's name, which is how the supplier learns the plate's name. A set needing more than one plate gets (2), (3) …
Order → Write the empty wellswrites every unused well as a blank-name, blank-sequence row — the supplier's own way of saying leave this well empty — instead of ending the sheet after the last oligo
Search and filternarrows the library by name or sequence
Sequencethe oligo's bases, editable in the library row itself
Importreads a primer list in from a file
Scale / Purificationthe IDT synthesis scale and purification for one primer. Blank uses the library default
IDT default scale / IDT default purificationwhat is sent for primers carrying none of their own: 25nm and STD
Worksheetwhich plate's worksheet the order tab is showing
Revthe second primer of a pair being checked
Product sizethe window a screened pair's product must fall in, 100 to 5,000 bp. Flanking derives its own window from the selected region and the template length
3′ footprinthow much of each primer's 3′ end must match the template exactly, 16 nt by default. Primers shorter than this cannot be screened and are listed as skipped
Check: primer / pairone oligo gives binding sites; two give binding sites plus the amplicon
Check → Grading barthe four identity boundaries a site is judged against: perfect, expected to bind, weak, marginal. Moving one moves the badge, the written reading and the legend together, so what you see graded is the bar you set. The defaults are the ones the original tool ships with; tighten them when a single clean band matters more than finding every site
Screen: which sequenceswhich project files to screen against; the open document is not assumed
Screen: Products / Flanking / Diagnosticthe three questions, which are genuinely different searches rather than filters of one result

Algorithms you can choose

The binding scan is one method and it is deliberately 3′-anchored: a site must match exactly over the primer's last few bases at the 3′ end before it is reported at all. That is the polymerase's own requirement — a mismatch at the 3′ terminus prevents extension however well the rest of the oligo pairs — so a scan that scored the whole oligo evenly would report sites that cannot prime.

Identity is then computed over the full primer, which is why a 5′ cloning tail lowers the identity rather than disappearing from the number. A tailed primer showing 80 % identity at its intended site is behaving correctly.

The science

A primer anneals and extends only if its 3′ end is paired. Everything about this tool follows from that asymmetry: the seed at the 3′ end is a hard requirement, identity over the whole oligo is a soft score, and the two are reported separately rather than blended into one number.

The melting temperature shown in the library is the Wallace rule — 2 °C per A or T, 4 °C per G or C — which is a rule of thumb for short oligos under standard salt, and nothing more. It is correct enough to sort a list and wrong enough that you should not set an annealing temperature from it. For that, use the melting-temperature tool, which runs a nearest-neighbour model with your actual buffer.

Shared with other tools: Melting temperature compares how every tool that does this chooses its method.

Limitations

  • The Wallace Tm is out of range above 20 nt and says so. It is a fallback, not a prediction.
  • A binding site is not a product. Two sites on opposite strands within a reasonable distance usually give an amplicon, but the scan does not model polymerase processivity, secondary structure in the template, or competition between sites.
  • Only a bounded number of sites is reported per primer. A primer that binds a repeat hundreds of times is reported up to that bound rather than exhaustively; that is a signal in itself.
  • No primer-dimer or hairpin prediction here. Those live in the Primer Designer and the multiplex tools.
  • The library is local to your workspace. It is not shared between people, and there is no reservation or stock-level tracking — this is a record of sequences and their status, not an inventory system.
  • The plate order is a file, not an order. Nothing is uploaded, no account is used and no network request is made: you carry the sheet to the supplier yourself. Pricing, scale and purification for a plate are the supplier's, not ours.
  • The screening note is an advisory and never a screener. It states published process and cites it; it makes no judgement about any sequence, and a clean-looking panel is not a clearance.

Compared with other tools

Most plasmid editors treat primers as annotations on a record: they belong to the file, and they disappear with it. The difference here is that the library is separate from any one construct and persists across them, which is how a real freezer box works, while the record's own primer annotations are still shown alongside and kept distinct from it. The cost of that separation is that you have to decide, once, that an oligo is worth keeping.

Export

The library exports as CSV, as a synthesis-vendor bulk-upload sheet for tubes written from the order cart, and as a plate order sheet per worksheet. The first two round-trip: a CSV written here re-imports without loss. The plate sheet is a different artifact rather than a fourth column on the tube list — a plate order is addressed by well, and the well an oligo lands in is the whole content of the file. Products found by the screen are drawn on the map and can be exported with the record.

Once a set outgrows a handful of tubes it is ordered as a plate, and a plate is a different artifact: it is addressed by well, one worksheet per plate, and the worksheet's name is how the supplier learns the plate's name. That sheet is written here too, tab-delimited, in the well order the supplier's own order form fills. Nothing is transmitted: the file is yours to upload, so there is no account, no key and no request leaving the machine.

API

import {
  primerBindingSites, primerCheckConfidence, primerTmBasic, basicTmInRange,
  screenLibrary, flankingPairs, diagnosticSets,
  primersToCsv, primersToIdtCsv, csvToPrimers, canTransition,
  oligoPlateOrder, plateOrderColumns, plateOrderTsv, plateWells,
} from '@ports/primer';

import { synthesisScreeningAdvisory, SCREENING_INSTRUMENTS } from '@ports/synthesis';

// Base COUNTS and a date. There is no parameter a sequence can enter by, deliberately.
synthesisScreeningAdvisory([20, 18, 25], '2026-09-16');
// { screenedAtOrAbove, inForce, pending, atOrAboveThreshold, offered,
//   reachedByPendingChange, lines, instruments, on }

oligoPlateOrder(
  [{ name: '701_sc_fas2-A1', sequence: 'ACGT…' }],
  { format: 96, fill: 'explicit', plateName: 'FAS2 verification' },
);
// { sheets: [{ name, format, fill, wells: [{ well, name, sequence }], filled, capacity }],
//   refused: [{ name, sequence, reason }], format, fill }
// plateOrderColumns(fill) is the header row that direction requires; plateOrderTsv(sheet) the file.

primerBindingSites(primer, topStrand, total, { circular: true });
// [{ strand: 1 | -1, foot_start, length, ident_pct, mismatches }]  best first

primerCheckConfidence(97.2);       // { glyph: '✓', … }
basicTmInRange(seq);               // false above 20 nt — check before printing primerTmBasic
import { screenOligoPool, THAL_CONDITION_PARAMS, THAL_DEFAULT_CONDITIONS } from '@ports/oligo-structure';

// One pool in; every oligo's own structures, every pairing, and the reaction it ran in.
screenOligoPool(
  [{ name: '701_sc_fas2-A1', seq: 'ACGT…' }, { name: '700_sc_fas2-B1', seq: 'ACGT…' }],
  { ...THAL_DEFAULT_CONDITIONS, dnaConc: 200 },
);
// { perOligo, pairs, flagged, clean, worstEndTmC, worstAnyTmC, worstHairpinTmC,
//   incompatiblePairs, limits, conditions }

// The six reaction knobs, declared once beside the engine — each row carries the field it sets,
// its label, its bounds and what the number means. Energies are cal/mol and Tm is °C.
THAL_CONDITION_PARAMS;

screenLibrary, flankingPairs and diagnosticSets are the three Screen searches. All are pure and synchronous, with no DOM.

Automation

Laying a set out on a plate is a workflow node: it takes oligo sequences and their names and returns the sheets, the column shape the direction requires, the tab-delimited file and anything it refused, so an order can be the last step of a design pipeline rather than a manual copy afterwards.

The library itself is a workspace store rather than a workflow node, and the picker is how tools reach it. The primer-consuming nodes — PCR amplification, multiplex design, fusion PCR — take primer sequences directly, so a pipeline reads oligos from the library through the picker at design time rather than at run time.

Provenance

The plate layout is checked against the supplier's own published order form: the worksheet listing, for each legal layout, the wells in the order they are filled — 2,880 well labels over eight layouts, every one of them compared, not a sample.

The screening advisory quotes three published instruments and names each one where you read it: the U.S. HHS/ASPR Screening Framework Guidance of 13 October 2023, the International Gene Synthesis Consortium's Harmonized Screening Protocol v3.1 of 1 June 2026 — which is where the 24 October 2026 date comes from — and Executive Order 14292 of 5 May 2025, which is why the 2024 U.S. framework is described as under revision rather than quoted as settled.

The binding scan and the library screen follow pydna's primer-screening logic. The Wallace rule is Wallace et al., Nucleic Acids Research 6

(1979), and the 20 nt validity bound is stated because that is where the formula stops being defensible.

Screenshots

No frame is committed for the binding check yet. What one would show: a project primer library with its saved oligos and where each one binds.

The absence is stated rather than left as a blank heading: a picture that does not exist yet is worth knowing about, and a placeholder would be worse than either.

Primer Designer when nothing in the box will do. PCR to simulate the reaction. Melting temperature for a real annealing temperature. Multiplex when several pairs must work in one tube.

On this page