Skip to main content

Exact reproduction of the NEB Tm Calculator for PCR primer analysis with all NEB polymerases

Project description

polymerase-tm

PyPI Tests License: MIT Python

Exact Python reproduction of the NEB Tm Calculator for PCR primer melting temperature (Tm) and annealing temperature (Ta) prediction.

Features

  • Exact NEB Tm Calculator reproduction -- algorithm reverse-engineered from the NEB Tm Calculator front-end source; verified against the official tool with 0 degC deviation across all tested sequences.
  • 22 NEB polymerase products with their specific buffer salt concentrations and Ta rules (Q5, Phusion, Taq, OneTaq, LongAmp, Vent, Deep Vent, and more).
  • Automatic additive recommendation -- suggests Q5 High GC Enhancer or DMSO based on primer GC, hairpins, and amplicon analysis.
  • Batch processing -- process hundreds of primer pairs from CSV files with full Tm/Ta/compatibility analysis.
  • PCR protocol generator -- generates complete cycling protocols with polymerase-specific temperatures and extension times.
  • Smart primer design -- find the optimal binding length for a target Tm.
  • Primer dimer detection -- checks 3'-end complementarity and self-dimer risk.
  • Gibson Assembly overlap design -- generates full primers with overhangs for Gibson/HiFi Assembly.
  • Restriction site scanning -- scans primers for 14 common restriction enzyme sites (customizable).
  • Primer quality scoring -- comprehensive 0-100 score evaluating GC clamp, runs, repeats, hairpins.
  • DMSO analysis -- analyses primer hairpins, amplicon GC content, GC-rich hotspots, and template secondary structures.
  • CLI tool (polymerase-tm) for quick calculations from the terminal.

Dependencies: Biopython (for GenBank template analysis in DMSO features).

Installation

pip install polymerase-tm

# From conda-forge (when available)
mamba install -c conda-forge polymerase-tm

Quick Start

Python API

from polymerase_tm import tm, ta

# Single primer Tm (Q5, 500 nM)
print(tm("ATGTCCCTGCTCTTCTCTCGATGCAA"))          # 72

# Primer pair Ta
result_ta, tm_fwd, tm_rev = ta(
    "ATGTCCCTGCTCTTCTCTCGATGCAA",
    "GTGCCTCCGAGCCAGCACC",
)
print(f"Ta = {result_ta}, Fwd Tm = {tm_fwd}, Rev Tm = {tm_rev}")
# Ta = 72, Fwd Tm = 72, Rev Tm = 75

# Different polymerase
print(tm("ATGTCCCTGCTCTTCTCTCGATGCAA", polymerase="taq"))

# Ta with 3% DMSO
ta_dmso, _, _ = ta("ATGTCCCTGCTCTTCTCTCGATGCAA", "GTGCCTCCGAGCCAGCACC", dmso_pct=3)
print(f"Ta with 3% DMSO = {ta_dmso}")  # 70

# List all available polymerases
from polymerase_tm import list_polymerases
for p in list_polymerases():
    print(f"{p['key']:25s} {p['description']}")

Automation & Batch Processing

from polymerase_tm import (
    batch_tm,                 # Bulk Tm for many sequences
    optimal_binding_length,   # Find shortest binding region for target Tm
    check_pair,               # Full primer pair compatibility report
    pcr_protocol,             # Generate complete PCR cycling protocol
    reverse_complement,       # DNA reverse complement
    from_csv, to_csv,         # CSV batch I/O
)

# Batch Tm for multiple primers
results = batch_tm(["ATCGATCGATCG", "GCGCGCGCGCGC", "AATTCCGGAATT"])
for r in results:
    print(f"{r['sequence']}: Tm={r['tm']} degC, GC={r['gc_pct']}%")

# Find optimal binding length for a target Tm
result = optimal_binding_length("ATGTCCCTGCTCTTCTCTCGATGCAA", target_tm=65)
print(f"{result['binding_seq']} ({result['length']} nt, Tm={result['tm']})")
# CCTGCTCTTCTCTCGATGCAA (21 nt, Tm=67)

# Primer pair compatibility check (includes auto additive recommendation)
pair = check_pair("ATGTCCCTGCTCTTCTCTCGATGCAA", "GTGCCTCCGAGCCAGCACC")
print(f"Ta={pair['ta']}, compatible={pair['compatible']}")
if pair["additive"]["recommended"]:
    print(f"Use {pair['additive']['additive']} ({pair['additive']['concentration']})")
    # -> "Use Q5 High GC Enhancer (1x)" for Q5 with high-GC primers
    # -> "Use DMSO (3%)" for Taq with high-GC primers

# Generate full PCR cycling protocol
protocol = pcr_protocol(
    "ATGTCCCTGCTCTTCTCTCGATGCAA",
    "GTGCCTCCGAGCCAGCACC",
    amplicon_length=2500,
)
for step in protocol["cycling"]:
    print(f"{step['step']:25s} {step['temp']} degC  {step['time']}")
# Initial Denaturation       98 degC  30 s
# Denaturation               98 degC  10 s
# Annealing                  72 degC  30 s
# Extension                  72 degC  1 min 15 s
# Final Extension            72 degC  2 min
# Hold                        4 degC  indefinite

# CSV pipeline: read primers, compute everything, write results
results = from_csv("primers.csv")  # expects columns: name, fwd, rev
to_csv(results, "results_with_tm.csv")

DMSO Analysis

from polymerase_tm import dmso_recommendation, print_dmso_report

report = dmso_recommendation(
    fwd_bind="ATGTCCCTGCTCTTCTCTCGATGCAA",
    rev_bind="GTGCCTCCGAGCCAGCACC",
    template_file="template.gbk",     # optional GenBank template
)
print_dmso_report(report)

Command Line

# Single primer Tm
polymerase-tm ATGTCCCTGCTCTTCTCTCGATGCAA

# Primer pair Ta (includes auto additive recommendation)
polymerase-tm ATGTCCCTGCTCTTCTCTCGATGCAA GTGCCTCCGAGCCAGCACC

# Different polymerase
polymerase-tm --polymerase taq ATGTCCCTGCTCTTCTCTCGATGCAA GTGCCTCCGAGCCAGCACC

# With DMSO correction
polymerase-tm --dmso 3 ATGTCCCTGCTCTTCTCTCGATGCAA GTGCCTCCGAGCCAGCACC

# List all polymerases
polymerase-tm --list

# DMSO analysis with template
polymerase-tm --dmso-check --template template.gbk FWD_SEQ REV_SEQ

# Version
polymerase-tm --version

API Reference

Function Description
tm(seq, polymerase) Melting temperature for one primer
ta(seq1, seq2, polymerase, dmso_pct) Annealing temperature for a primer pair
batch_tm(sequences, polymerase) Batch Tm for multiple sequences
check_pair(fwd, rev, polymerase) Pair compatibility + additive recommendation
pcr_protocol(fwd, rev, polymerase, amplicon_length) Full PCR cycling protocol
optimal_binding_length(seq, target_tm, polymerase) Find shortest binding region for target Tm
reverse_complement(seq) DNA reverse complement
from_csv(path, polymerase) Read primer pairs from CSV, compute Tm/Ta
to_csv(results, path) Write results to CSV
list_polymerases() List all 22 supported polymerases
primer_dimer(fwd, rev) Check 3' complementarity / dimer risk
gibson_overlaps(fwd_bind, rev_bind, left_seq, right_seq) Design Gibson/HiFi Assembly primers
restriction_scan(seq, enzymes) Scan for restriction sites (14 default enzymes)
primer_quality(seq) Quality score 0-100 with issues list
dmso_recommendation(fwd, rev, template) Full DMSO/additive analysis
gc_content(seq) GC content as fraction

Algorithm

Component Method Reference
Nearest-neighbor Tm SantaLucia (1998) PNAS 95:1460-5
Salt correction Owczarzy et al. (2004) Biochemistry 43:3537-54
Ta rules Polymerase-specific NEB Tm Calculator v1.16
DMSO correction -0.6 degC per 1% NEB Tm Calculator v1.16

Buffer Salt Concentrations

Buffer [Monovalent] (mM) Used by
Q5 150 Q5, Q5 Hot Start, Q5 Blood Direct
Q5U 170 Q5U Hot Start
Q5 Master Mix 150 Q5 2X Master Mix
Phusion HF / GC 222 Phusion, Phusion Hot Start Flex
Standard Taq 55 Taq, Hot Start Taq, EpiMark
ThermoPol 40 Vent, Deep Vent
OneTaq Std 54 OneTaq (Standard Buffer)
OneTaq GC 80 OneTaq (GC Buffer)
LongAmp 100 LongAmp, LongAmp Hot Start
Crimson Taq 55 Crimson Taq
Hemo KlenTaq 70 Hemo KlenTaq
Multiplex 90 Multiplex PCR Master Mix

Ta Calculation Rules

Polymerase family Rule Cap
Q5 min(Tm1, Tm2) + 1 72 degC
Q5U min(Tm1, Tm2) + 2 72 degC
Phusion 0.93 * min(Tm1, Tm2) + 7.5 72 degC
Taq / OneTaq min(Tm1, Tm2) - 5 68 degC
LongAmp min(Tm1, Tm2) - 5 65 degC
Vent / Deep Vent min(Tm1, Tm2) - 2 72 degC

Disclaimer

This package is not affiliated with New England Biolabs (NEB). The algorithm was reverse-engineered from the publicly available JavaScript source of the NEB Tm Calculator for research and educational purposes. Always verify critical calculations against the official tool.

License

MIT

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

polymerase_tm-0.5.0.tar.gz (25.4 kB view details)

Uploaded Source

Built Distribution

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

polymerase_tm-0.5.0-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file polymerase_tm-0.5.0.tar.gz.

File metadata

  • Download URL: polymerase_tm-0.5.0.tar.gz
  • Upload date:
  • Size: 25.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for polymerase_tm-0.5.0.tar.gz
Algorithm Hash digest
SHA256 7352c7e1c55221a3b1e2bc4bfc48cc4d3f2b1c9b481e32cc9c57074df10a4943
MD5 e953a84890334b3c6345f54ac737e5b0
BLAKE2b-256 62725e77f480388b1a71084ec4e39e59a9249799dac23d95fe5323ec81d6a2bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for polymerase_tm-0.5.0.tar.gz:

Publisher: publish.yml on Dioskurides/polymerase-tm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file polymerase_tm-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: polymerase_tm-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for polymerase_tm-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e61072b9a9f571f6196f7cbf43ed77a15c7ab9ace4a9c0959d8fa982c31c1ea7
MD5 bb9db377e8ef3d177b164ea60a7d88bc
BLAKE2b-256 3a7493749d3c2490f45e8c7cb9215a158f5ed7f627f88637d9a551e6cea2422e

See more details on using hashes here.

Provenance

The following attestation bundles were made for polymerase_tm-0.5.0-py3-none-any.whl:

Publisher: publish.yml on Dioskurides/polymerase-tm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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