Panmer designs a set of equal-length oligonucleotides that, taken together, contain every k-mer on both strands at least once. Such libraries are used to sample sequence-dependent DNA/RNA structure and dynamics with molecular dynamics (MD), following the Ascona B-DNA Consortium libraries miniABC (13 × 18-mers, all 136 tetranucleotides) and hexABC (190 × 20-mers, all 2080 hexanucleotides). Panmer can include modified bases from modXNA, so every library can be simulated directly with AMBER-modXNA.
Everything runs in your browser (Python compiled to WebAssembly). Nothing you enter is sent anywhere. There is no login and no registration, and the site sets no cookies; page views are counted anonymously with a cookieless analytics script.
Tutorial: reproduce miniABC in one click
- On the main page, click the example miniABC (k=4, 18-mers). This sets DNA, k = 4, core = 14 bp, clamp = GC.
- Panmer designs the library and shows the summary below (computed in well under a second).
- Try hexABC-like, minimal (k=6, segments) and miniABC′ replica (k=4) for the segment and replica strategies.
- Download it as FASTA or CSV, or click Copy reproducible link: opening that link re-runs exactly the same design.
Sample output (first rows of the CSV):
id,watson,crick,core,length,gc_core,max_homopolymer,max_selfcomp,n_mod_pairs panmer_01,GCAAAGACTTAATCTCGC,GCGAGATTAAGTCTTTGC,AAAGACTTAATCTC,18,28.6,3,4,0 panmer_02,GCCTCCACGGCGTTCTGC,GCAGAACGCCGTGGAGGC,CTCCACGGCGTTCT,18,64.3,2,2,0 panmer_03,GCTCTGAATACTCACTGC,GCAGTGAGTATTCAGAGC,TCTGAATACTCACT,18,35.7,2,2,0 …
and the summary: 13 oligos; lower bounds 13 / 13; 136 tetranucleotide classes covered by 143 windows (7 redundant); master length 142 k-mers (145 nt). This is the same structure as the published miniABC library: the minimum number of oligos, with the minimum possible redundancy.
Parameters
| parameter | meaning |
|---|---|
| Nucleic acid | DNA (A, C, G, T) or RNA (A, C, G, U). Sets the canonical alphabet, the partner of modified adenines (T or U) and the backbone/sugar used in the modXNA export. |
| Modified bases | Any subset of the modXNA base modifications. Select whole families (A*, C*, G*, T*, U*) or individual fragments; the list can be filtered by code or name. |
| Max modified base pairs per k-mer | Only k-mers with at most this many modified positions are required. Keeps libraries with many modifications at a simulable size (see size). |
| k | Length of the words to cover (4 = tetranucleotides, 6 = hexanucleotides). |
| Core length | Length of the variable part of each oligo. Each core contains σ = core − k + 1 k-mer windows. |
| Clamp | Fixed ends: each oligo is clamp + core + reverse complement of the clamp (GC…GC by default, as in the ABC libraries). Leave empty for no clamp. |
| Random seed | The design is deterministic for a given seed; different seeds give different but equally optimal libraries. |
Reading the results
Oligos and the two lower bounds
With Nk double-stranded k-mer classes and σ windows per core, no library can have fewer than ⌈Nk/σ⌉ oligos (the independent bound). Panmer builds one reverse-complement-complete master sequence (Orenstein & Shamir 2013) and cuts it into overlapping cores; that needs ⌈L*/σ⌉ oligos, where L* is the master length in k-mers (the tiled bound). For even k, L* > Nk because palindromic k-mers force extra steps, so the two bounds can differ:
| k | core | σ | Nk | L* (k-mers) | independent | tiled |
|---|---|---|---|---|---|---|
| 4 | 14 | 11 | 136 | 142 | 13 | 13 |
| 6 | 16 | 11 | 2080 | 2140 | 190 | 195 |
| 6 | 18 | 13 | 2080 | 2140 | 160 | 165 |
| 8 | 20 | 13 | 32896 | 33262 | 2531 | 2559 |
The Single master strategy pays the tiled bound; Segments reaches the independent one. When the two differ, the summary says how many extra oligos tiling costs.
Single master or segments
The Strategy panel chooses how the master is turned into oligos.
- Single master — the master is cut into overlapping cores. Simple and fast, but it pays the tiling price: it needs ⌈L*/σ⌉ oligos.
- Segments — the master is cut at its repeated windows into independent walks, each containing every class at most once; simulated annealing then recombines them (merging at shared (k−1)-mers, exchanging tails, reverse-complementing, splitting) so that their lengths fit the core size. This reaches the independent bound.
For k = 6 with 16-bp cores, segments give 190 oligos in about 31 segments with 10 redundant windows — the figures of the deposited hexABC library, which a single master cannot produce. Segments are selected automatically whenever constraints or replica mode are in use, because a single master cannot be re-cut to satisfy them.
Sequence constraints
Hard limits applied to every oligo: GC range of the core, longest homopolymer run and longest self-complementary stretch (clamps included). They are enforced during the search, not filtered afterwards, so the library still covers every class. The result reports whether all oligos pass.
Replica mode
Paste a reference library and Panmer designs an equivalent one in which no k-mer keeps a helical position it occupies in the reference. Inside a core with σ windows, a k-mer at offset j on Watson is its reverse complement at offset σ−1−j on Crick, so the strand-invariant descriptor is the distance to the centre; replica mode requires the two libraries to use disjoint sets of that descriptor for every k-mer. Simulating a replica alongside the original separates sequence effects from position-in-the-oligo effects.
Example: a replica of miniABC with no self-complementary stretch longer than 4 bp gives 13 oligos, 136/136 tetranucleotides, redundancy 7 and zero positional collisions. The reference library is not carried in the page address, so a replica link needs the reference pasted again; download the JSON to keep the full record.
Search effort
Scales the annealing budget (quick, normal, thorough, exhaustive). Restarts matter more than long single runs, so raise it when a result sits a few oligos above the bound.
Units
Lengths of the master are given in k-mers and in nucleotides: a sequence of t k-mers has t + k − 1 nucleotides.
Redundancy
Windows minus classes: how many k-mer windows repeat a class already present. miniABC has 7; hexABC has 10.
Per-oligo columns
| GC core % | GC content of the core (a modified base counts by its canonical pair). |
| max run | Longest homopolymer run in the oligo. |
| max self-compl. | Longest self-complementary (palindromic) stretch. Values ≥ 6 are highlighted: such stretches can favour hairpins or alternative pairings. |
| mod. pairs | Number of modified base pairs in the oligo (only with modifications). |
Modified bases
Pairing rule and notation
A modified base is always placed opposite its canonical partner: A*–T (A*–U in RNA), C*–G, G*–C, T*–A, U*–A. Sequences are written 5′→3′ on one strand:
A C G T U | canonical base pair |
[M6A] | M6A on this strand, its canonical partner on the other |
{M6A} | the canonical partner on this strand, M6A on the other |
The reverse complement swaps the brackets: GC[M6A]T{8OG}AGC ↔
GCT[8OG]A{M6A}GC. A k-mer containing [X] and one containing
{X} at the same position are different double-stranded contexts, and both are
covered.
Catalogue
Panmer ships a snapshot of the A, C, G, T and U base modifications of the modXNA catalogue. Two kinds of entries are hidden by default and can be shown with the checkboxes under the list:
- protected phosphoramidites (
-CEentries): synthesis building blocks that still carry protecting groups (benzoyl, acetyl, dmf…) absent from a deprotected oligo; - duplicates: entries whose structure is identical to another entry of the same family.
modXNA export
With modifications, modXNA build script downloads a shell script that builds one
AMBER residue library per modified base (modXNA input BACKBONE SUGAR BASE, e.g.
DPO DC2 M6A) and lists the residue sequence of both strands of every oligo:
echo "DPO DC2 M6A" > M6A.in $MODXNA -i M6A.in -m M6A … # panmer_001 W: DG5 DC DA DA DA DC DT DC DG DT M5C DG DG DT H5C DC DG DC3
With a GC clamp, modified bases never sit at the oligo ends.
How large can a library be?
With M selected modifications and at most m per k-mer, the number of k-mers is Σj≤m C(k,j)·4k−j·(2M)j. The Size estimate box updates as you change parameters: green ≤ 200 oligos, amber 200–2000, red > 2000. Largest M that keeps the library under 2000 oligos (in brackets: under 200):
| k | core 14 | core 16 | core 18 | core 20 | core 22 |
|---|---|---|---|---|---|
| ≤ 1 modification per k-mer | |||||
| 3 | all | all | all | all | all |
| 4 | 85 (8) | 101 (9) | 116 (11) | 132 (12) | 147 (14) |
| 5 | 15 (1) | 18 (1) | 21 (1) | 24 (2) | 27 (2) |
| 6 | 2 (–) | 3 (0) | 3 (0) | 4 (0) | 5 (0) |
| ≤ 2 modifications per k-mer | |||||
| 3 | 30 (8) | 33 (9) | 35 (10) | 37 (11) | 39 (11) |
| 4 | 10 (2) | 10 (2) | 11 (3) | 12 (3) | 13 (3) |
| 5 | 3 (0) | 3 (0) | 4 (0) | 4 (1) | 4 (1) |
0 = only canonical bases fit; – = not even the canonical library fits.
Analysing an existing library
On the Analyse a library tab, paste oligos (FASTA or one per line, Watson strand 5′→3′, same notation as above), set k and the clamp, and run. Panmer reports how many classes are covered and missing, the redundancy, the classes that appear more than once, the lower bound for that core length and the per-oligo metrics. Example Analyse miniABC (2019) gives 136/136 classes, 143 windows, 7 redundant (AATT, ATCG, ATGC, ATTA, CGGC, CGTA, GCTA) and 13 = minimum possible oligos.
Reproducibility
Every parameter is stored in the page address; Copy reproducible link adds
run=1 so that opening the link re-runs the design. Results also carry the Panmer
version. The same engine is available as a command-line tool and Python package:
panmer design -k 4 --core 14 --format fasta panmer estimate -k 4 --core 14 --mods M6A,M5C --max-mods 1 panmer analyze -k 4 --clamp GC my_library.fasta panmer design -k 6 --core 16 --segments panmer design -k 4 --core 14 --replica-of miniABC.fasta --max-selfcomp 4 --effort 2
Citation and licence
A manuscript describing Panmer is in preparation. Please cite Orenstein & Shamir 2013, Dans et al. 2019 and Battistini et al. 2026. Code: MIT. Generated libraries: CC BY 4.0.