Skip to main content

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.

PyPI License


Installation

Requirements

– Python ≥ 3.9.
– Linux, macOS or Windows

Runtime 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

prism_bio-1.0.3.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prism_bio-1.0.3-py3-none-any.whl (26.8 kB view details)

Uploaded Python 3

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

Hashes for prism_bio-1.0.3.tar.gz
Algorithm Hash digest
SHA256 9222da2a5a4ba0b24aa8fc1fde7585daaa7f42687b5ec8fc148a65889a7cdfe1
MD5 a450b5f8f1025d21db69cfd3ddd6e826
BLAKE2b-256 b0498a66fec81c123d4f14a7556f8c2de5b3d372c8098cfc215f151636f717f8

See more details on using hashes here.

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

Hashes for prism_bio-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 25a7bf12a48a213a64856a7d46637099f4a5cef767259b64753b8803b364669d
MD5 54688b7cae467c9c14e152c4edda3c3f
BLAKE2b-256 24f50cf1b5d31940ed5b5873eaa9f22cc71ce93c06939f99f5292f945459fb97

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page