plexus is a Python-based bioinformatics tool designed to automate the creation of multiplex PCR panels. It specifically targets workflows like cfDNA and simsen, integrating genomic data processing, primer design (via primer3), and specificity checking (via BLAST) to generate optimized primer sets for multiple targets simultaneously.
- Automated Primer Design: Uses
primer3-pyto generate primer candidates for provided genomic junctions. - Multiplex Optimization: Tailored for multiplex PCR panels.
- Specificity Checking: Integrates BLAST to check for off-target amplification and primer specificity.
- Configuration Presets: Includes default and lenient configuration presets for different design stringencies.
- CLI Interface: Easy-to-use command line interface for running the design pipeline.
- Python 3.10+
- NCBI BLAST+ (if running specificity checks locally)
This project uses uv for package management.
git clone https://github.com/simsendx/plexus
cd plexus
uv pip install -e .You can also set up the environment using Conda:
git clone https://github.com/simsendx/plexus
cd plexus
conda env create -f config/environment.yml
conda activate plexus-run
pip install -e .The primary interface is the plexus CLI.
To run the complete design pipeline:
plexus run \
--input data/junctions.csv \
--fasta data/genome.fa \
--output results/ \
--name my_panelThe input file should be a CSV containing the target junctions with the following columns:
Name,Chrom,Five_Prime_Coordinate,Three_Prime_Coordinate
EGFR_T790M,chr7,55181378,55181378
KRAS_G12D,chr12,25245350,25245350
...See data/junctions.csv for a complete example.
-i, --input: Path to the input CSV file (Required).-f, --fasta: Path to the reference genome FASTA file (Required).-o, --output: Output directory (Default:./output).-p, --preset: Configuration preset (defaultorlenient).--skip-blast: Skip the BLAST specificity check (faster, but less validation).
Run plexus --help for a full list of commands and options.
The design parameters (melting temperature, primer length, penalties, etc.) are controlled via configuration files in the config/ directory. You can supply a custom JSON config file using the --config option.
- primer3-py: Python interface to Primer3.
- Biopython: For BLAST integration and sequence handling.
- Typer: CLI framework.
Inspired by and utilizes concepts from: