multiplex-wormhole is a wrapper function that performs the following submodules using defaults:
TEMPLATES (& KEEPLIST) –> mw-primer-design –> MFEprimer dimer –> mw-tabulate-dimers –> mw-mult-optimizations
Note that mw-mult-optimizations also runs mw-assess-panel at the end.
multiplex-wormhole [-h] -t TEMPLATES -n NLOCI -o OUTDIR [-p PREFIX]
[-k KEEPLIST] [-r RUNS] [-i ITER] [-c CYCLES]
[-s SIMPLE] [--threads CPUs] [-d] [-v]
# arguments passed to primer design & dimer prediction steps:
[--tm-limit 45] [--dg-hairpins -2.0] [--dg-end-limit -4.0] [--dg-mid-limit -8.0]
[--primer3-settings '"{FWD_OVERHANG: "tcgtcggcagcgtcagatgtgtataagagacag"}'"] [--enable-broad]
# arguments passed to optimization and plotting steps:
[--burnin 200] [--decay-rate 0.95] [--t-init None] [--t-final 0.01] [--prob_adj 2.0]
# arguments used in panel assessment:
[--dg-bad-limit -10]
# load module
import multiplex_wormhole as mw
# panel design example (showing defaults for optional parameters)
mw.multiplexWormhole(TEMPLATES="Input_Templates.csv",
N_LOCI=50,
OUTDIR="Test_MW",
PREFIX="Test_MW_default",
KEEPLIST_FA="Keeplist.fa",
# optional arguments passed to optimization:
N_RUNS=10, ITERATIONS=1000, CYCLES=10, SIMPLE=5000, deltaG=False, VERBOSE=False,
# primer design options
Tm_LIMIT=45, dG_HAIRPINS=-2, dG_END_LIMIT=-4, dG_MID_LIMIT=-8,
ENABLE_BROAD=False, PRIMER3_SETTINGS=None,
# multi-threading
THREADS=None,
# optimization / plotting options
BURNIN=200, DECAY_RATE=0.95, T_INIT=None, T_FINAL=0.01, PROB_ADJ=2,
# assessment limits
dG_BAD_LIMIT=-10)
TEMPLATES (-t –templates) : Path to templates CSV. NLOCI (-n –nloci) : Final panel size (i.e., # primer pairs & # templates amplified). OUTDIR (-o –outdir) : Filepath where output directory will be created and all outputs saved within a generated folder structure. PREFIX (-p –prefix) : Prefix for all outputs. [Defaults to a timestamp if None provided] KEEPLIST_FA (-k –keeplist) : Path to keeplist FASTA. [Default: None] N_RUNS (-r –runs) : Number of optimization runs. [Default: 10] ITERATIONS (-i –iter) : Number of simulated annealing iterations per cycle. [Default: 1000] CYCLES (-c –cycles) ** : Number of simulated annealing cycles per run. [Default: 10] **SIMPLE (-s –simple) : Number of simple iterative improvement iterations per run. [Default: 5000] THREADS (–threads) : CPUs for multiprocessing- defaults to CPUs available on current machine. deltaG (-d –deltaG) : Optimize for mean overall deltaG of dimers [True] or total dimer tally [False]? [Default: False] VERBOSE (-v –verbose) : Print all steps and swaps at the optimization step. [Default: False]
Tm_LIMIT (–tm-limit) : Minimum melting temperature of predicted secondary structures, in Celsius, used in primer design. [Default: 45] dG_HAIRPINS (–dg-hairpins) : DeltaG threshold for discarding primers with hairpins, used in primer design. [Default: -2] dG_END_LIMIT (–dg-end-limit) : DeltaG threshold for 3’ end dimers used in primer design and dimer prediction. [Default: -4] dG_MID_LIMIT (–dg-mid-limit) : DeltaG threshold for non-end dimers used in primer design and dimer prediction. [Default: -8] ENABLE_BROAD (–enable broad) : Enable broader settings for primer design (if narrow settings fail for a given template)? [Default: False] PRIMER3_SETTINGS (–primer3-settings) : Dictionary format of primer3 design settings. See mw-primer-design for details. BURNIN (–burnin) : Iterations used to sample cost space to set ASA temperatures for each cycle. [Default=200] DECAY_RATE (–decay-rate) : Decay rate used to define ASA temperature schedule during optimization. [Default: 0.95] T_INIT (–t-init) : Initial temperature used in adaptive simulated annealing algorithm. [Default: None (calculated adaptively)] T_FINAL (–t_final) : Final temperature used in adaptive simulated annealing algorithm.[Default: 0.01] PROB_ADJ (–prob-adj) : Multiplier used to adjust acceptance probabilities during adaptive simulated annealing. [Default: 2] dG_BAD_LIMIT (–dg-bad-limit) : DeltaG threshold used to identify and count ‘bad’ dimers during panel assessment. [Default: -10]
multiplex-wormhole sets up a directory structure in the designated OUTDIR, which contains the following outputs:
OUTDIR
├── 0_Inputs : Copies of input files for this run
│ ├── TEMPLATES
│ ├── KEEPLIST_FA
├── 1_PrimerDesign : Outputs from mw-primer-design + mw-add-keeplist (if KEEPLIST provided)
│ ├── FilteredPrimers.csv : Designed primers with full details
│ ├── FilteredPrimers.fa : Sequences for filtered primers
│ ├── FilteredPrimers.log
│ ├── FilteredPrimers_plusKeeplist.fa
├── 2_PredictedDimers : Outputs from MFEprimer dimer and mw-tabulate-dimers
│ ├── MFEprimerDimers.txt : MFE primer dimer output
│ ├── MFEprimerDimers_ends.txt : MFE primer dimer output for 3' end dimers
│ ├── PrimerPairInteractions_wide.csv : pairwise dimer loads
│ ├── PrimerPairInteractions_mean.csv : mean deltaG primer pair across all others (if deltaG=True)
│ ├── PrimerPairInteractions_sum.csv : total dimer count per primer pair across all others (if deltaG=False)
│ ├── PrimerPairInteractions_binary_sum.csv : count of # interacting primer pairs per primer pair
│ ├── PrimerPairInteractions_binary_wide.csv : pairwise interactions between primer pairs (1=dimer, 0=no dimers)
│ ├── PrimerPairInteractions.log
├── 3_OptimizedMultiplexes : Outputs from mult-optimizations
├── PREFIX_RunSummary.csv : Dimer load summary for all optimization runs
├── PREFIX_Runx_primers.fasta : Primer sequences for "best" optimization runs
├── Plots_Dimer_Load : Dimer load trace plots across all optimization runs
│ ├── PREFIX_Runx_DimerLoad.png
├── Final_Primers : CSVs of primer sequences for all optimization runs
│ ├── PREFIX_Runx_primers.csv
├── Final_Dimers : Pairwise dimer tables for output panels from all optimization runs
│ ├── PREFIX_Runx_dimers.csv
├── Trace_Dimer_Load : Dimer trace values for each iteration where a change was accepted during optimization runs
│ ├── PREFIX_Runx_costsTrace.csv
├── Logfiles : Log files for all optimization runs
└── PREFIX_Runx.log