PCR primer design & optimization pipeline
Project description
PRISM - Primer Design through Submodular Function Estimation
User Guide
PRISM (PRImer Selection through Submodular Maximization) is an open-source software tool for automated design of multiplex PCR primers, developed to support viral genome sequencing, pathogen surveillance, and other high-throughput molecular biology applications. Released under the GNU General Public License (GPL), PRISM is freely available and encourages community use, extension, and collaboration.
PRISM introduces a principled optimization framework that formulates the primer design task as a constrained submodular maximization problem, balancing two competing objectives: maximizing genome coverage and minimizing undesired primer-primer interactions, quantified using the Badness value. This formulation allows PRISM to leverage a fast local search algorithm with a provable constant-factor approximation guarantee, making it the first primer design method to combine rigorous theoretical guarantees with practical scalability.
In extensive evaluations on viral genome datasets such as foot-and-mouth disease virus (FMDV) and Zika virus, PRISM consistently outperforms leading tools—including PrimalScheme, Olivar, and primerJinn—achieving significantly lower Badness values, tighter distributions of primer quality, and robust genome coverage with low memory usage and runtime.
Installation
Requirements
– Python ≥ 3.9.
– Linux, macOS or WindowsRuntime dependencies (
primer3‑py,numpy,pandas,tqdm,numba,joblib) are installed automatically.
Installation from PyPI using pip
Recommend create and activate a virtual environment:
python3 -m venv /path/to/prism
source /path/to/prism/bin/activate
Or using conda:
conda create -n prism python=3.9 -y
conda activate prism
Please use the following command to install:
pip install prism-bio
Once the installation is complete, use the following commands to check PRISM's version:
prism --version
General usage
Input files
PRISM requires a reference genome in FASTA format as input. This file should contain one or more nucleotide sequences in standard FASTA format. For optimal results in multiplex primer design, the input should represent a high-quality reference or consensus sequence derived from your target population or viral strain.
Command-line interface
PRISM accepts three main sub-commands, input (required), windows (optional, with a default size of 250 bp), and output (optional, specifies file name and output path):
CLI options
| Flag | Default | Description |
|---|---|---|
-i, --input |
required | Input FASTA/FA file |
-w, --window-size |
250 | Window size for region slicing |
-o, --output-csv |
optimized_primers.csv |
Output file (CSV) |
Full help:
prism --help
or
prism -h
Example usage
# Run PRISM on a Zika reference, 300 bp windows, export CSV
prism \
-i data/NC_012532.1.fna \
-w 250 \
-o output/optimized_primers.csv
You can find this example file NC_012532.1.fna in example input. This is the Zika virus sequence from the NCBI dataset.
Generate files
The process ends with a .csv file in the form of the following table:
| Primer ID | Left Primer | Right Primer |
|---|---|---|
| Primer 1 | GTGTGA… | CGTAGC… |
| Primer 2 | GCGTAC… | TAGCCA… |
| Primer… | ……………… | ……………… |
This file will provide the designed primer serial numbers as well as the sequence
Developer Setup
git clone https://github.com/William-A-Wang/PRISM.git
python -m venv .venv && . .venv/Scripts/activate
pip install -e .[dev]
Using this approach, you can deploy code locally while performing development-related activities
External resources
We used Olivar's badness calculation function in our code, but modified some of the parameters.
License
PRISM is released under the GNU GPL v3.0.
See the LICENSE file for details.
Citing PRISM
If you use PRISM in an academic setting, please cite:
@misc{WangPRISM25,
author = { Ao Wang and
Yixin Chen and
Aaron Hong and
Adam Rivers and
Alan Kuhnle and
Christina Boucher},
title = {Primer Design through Submodular Function Estimation},
note = {In submission}
year = {2025},
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file prism_bio-1.0.3.tar.gz.
File metadata
- Download URL: prism_bio-1.0.3.tar.gz
- Upload date:
- Size: 25.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9222da2a5a4ba0b24aa8fc1fde7585daaa7f42687b5ec8fc148a65889a7cdfe1
|
|
| MD5 |
a450b5f8f1025d21db69cfd3ddd6e826
|
|
| BLAKE2b-256 |
b0498a66fec81c123d4f14a7556f8c2de5b3d372c8098cfc215f151636f717f8
|
File details
Details for the file prism_bio-1.0.3-py3-none-any.whl.
File metadata
- Download URL: prism_bio-1.0.3-py3-none-any.whl
- Upload date:
- Size: 26.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25a7bf12a48a213a64856a7d46637099f4a5cef767259b64753b8803b364669d
|
|
| MD5 |
54688b7cae467c9c14e152c4edda3c3f
|
|
| BLAKE2b-256 |
24f50cf1b5d31940ed5b5873eaa9f22cc71ce93c06939f99f5292f945459fb97
|