Skip to main content
Promoter Strength
License: Salis Lab Promoter Calculator has a GPL-3.0 license. Please refer to the license for full terms.

This constraint is open source. Any third-party models, product names, or trademarks referenced are the property of their respective owners, and Proto is not affiliated with them.


Go to Tool Page
proto-bio/proto-language/proto_language/constraint/sequence_annotation/promoter_strength_constraint.py
View source
@article{lafleur2022promoter,
  title={Automated Model-Predictive Design of Synthetic Promoters to Control Transcriptional Profiles in Bacteria},
  author={LaFleur, Travis L. and Hossain, Ayaan and Salis, Howard M.},
  journal={Nature Communications},
  volume={13},
  number={1},
  pages={5159},
  year={2022},
  doi={10.1038/s41467-022-32829-5}
}
Copy citation
Evaluate bacterial promoter strength using Salis Lab Promoter Calculator. This constraint function uses the Salis Lab Promoter Calculator to predict E. coli sigma-70 promoter strength. The calculator scans sequences for canonical promoter elements (-10 and -35 boxes) and computes either binding free energy (dG) or predicted transcription initiation rate (tx_rate). The constraint returns penalty scores where lower values indicate stronger promoters. The penalty mapping differs based on scoring type:
  • dG scoring: Promoters with dG < -3.0 kcal/mol are strong (penalty 0.0-0.5)
  • tx_rate scoring: Promoters with tx_rate > 10000 are strong (penalty 0.0-0.5)
The calculator can identify multiple promoters in a single sequence; only the strongest forward-strand candidate contributes to the penalty.

API Reference

ConfigPromoterStrengthConfig Source
Configuration for promoter strength constraint using Salis Lab Promoter Calculator.This class defines configuration parameters for evaluating bacterial promoter strength using the Salis Lab Promoter Calculator, a biophysical model that predicts RNA polymerase binding affinity and transcription initiation rates for sigma-70 promoters in E. coli. The calculator identifies promoter elements (-10 and -35 boxes, spacer regions) and computes binding free energy (dG) and predicted transcription rates.
The Salis Lab Promoter Calculator specifically models E. coli sigma-70 promoters.Penalty scores are mapped from raw predictions:
  • For dG scoring: Strong promoters (dG < -3.0) get low penalties (0.0-0.5), moderate promoters (-3.0 to -1.5) get medium penalties (0.5-1.0), weak or unlikely promoters (> -1.5) get maximum penalty (1.0).
  • For tx_rate scoring: Strong promoters (>10000) get low penalties (0.0-0.5), moderate promoters (3000-10000) get medium penalties (0.5-1.0), weak promoters (<3000) get maximum penalty (1.0).
add_context
boolean
default:"False"
If True, adds flanking nucleotides to short sequences to meet calculator length minimums
context_length
integer
default:"10"
Number of ‘A’ nucleotides to add on each end when add_context=True
threads
integer
default:"8"
Number of threads for parallel processing of promoter calculations
circular
boolean
default:"False"
If True, treat sequences as circular for promoter detection across ends
scoring_type
enum
default:"dG"
Score type to use: ‘dG’ (binding free energy) or ‘tx_rate’ (transcription rate). Defaults to ‘dG’.Options: dG, tx_rate
ReturnsConstraintOutput
One result per sequence. Score ranges from 0.0 (strong promoter) to 1.0 (weak/no promoter). metadata carries a single promoter_strength dict:When promoter is found:
  • penalty: Float penalty score (0.0-1.0)
  • tx_rate OR dG_rate: Float best promoter strength value (depending on scoring_type)
  • raw_output: List of dictionaries with detailed promoter predictions including -10/-35 box positions, sequences, spacer length, and individual energy terms
When no promoter is found:
  • penalty: Float 1.0 (maximum penalty)
  • reason: String “no_promoter_found”
  • raw_output: Empty list []

Usage

Evaluating promoter strength using dG scoring:
python
>>> from proto_language.core import Sequence
>>> # lacUV5 promoter padded with 20 nt of A on each side (calculator
>>> # needs ~20 nt of flanking sequence to score the promoter elements)
>>> seq = Sequence("A" * 20 + "AAAATTGTGAGCGGATAACAATTTCACACAGGAAACAGCTATGACC" + "A" * 20, "dna")
>>> config = PromoterStrengthConfig(scoring_type="dG")
>>> results = promoter_strength_constraint([(seq,)], config)
>>> print(results[0].score)

Metadata

PropertyValue
Keypromoter-strength
Functionpromoter_strength_constraint
Categorysequence_annotation
Modediscrete
Uses GPUFalse
Supported Typesdna