Reactor - Buffer Calculator
A CLI tool for calculating reaction buffer recipes that account for buffer components contributed by protein stocks.
Tool Location
scripts/reactor_cli.py
Usage
bash
# List available presets
python3 scripts/reactor_cli.py --list-presets
# List predefined stock concentrations
python3 scripts/reactor_cli.py --list-stocks
# Calculate using presets
python3 scripts/reactor_cli.py \
--protein-preset kinase_panel \
--buffer-preset kinase_assay \
--volume 100
# Calculate with direct specifications (concentration)
python3 scripts/reactor_cli.py \
--protein "CDK2:50nM:stock=10uM:buffer=HEPES/20mM,NaCl/150mM" \
--buffer "HEPES:1M->25mM" \
--buffer "NaCl:5M->100mM" \
--volume 100
# Calculate using pmol amounts (auto-converted to concentration)
python3 scripts/reactor_cli.py \
--protein "PolII:70pmol:stock=5.17uM:buffer=HEPES/20mM,NaCl/150mM" \
--buffer "HEPES:1M->20mM" \
--volume 100
# Calculate using molar ratios with reference
python3 scripts/reactor_cli.py \
--reference 70pmol \
--protein "PolII:1x:stock=5.17uM:buffer=HEPES/20mM" \
--protein "DSIF:1.5x:stock=50.8uM:buffer=HEPES/20mM" \
--buffer "HEPES:1M->20mM" \
--volume 100
# Use compensation buffer mode (creates concentrated buffer)
python3 scripts/reactor_cli.py \
--protein "MyProtein:100nM:stock=5uM:buffer=HEPES/20mM,NaCl/300mM" \
--buffer "HEPES:1M->25mM" \
--buffer "NaCl:5M->150mM" \
--volume 50 \
--mode compensation \
--fold 10
# Output as JSON
python3 scripts/reactor_cli.py \
--protein-preset kinase_panel \
--buffer-preset storage \
--volume 100 \
--json
Key Concepts
Calculation Modes
- •
Direct Mode (default): Calculates exact volumes of each buffer component to add, accounting for contributions from protein stocks.
- •
Compensation Mode: Creates a concentrated buffer (e.g., 10X) that compensates for buffer components in protein stocks. Useful for preparing batch buffers.
Protein Specification Format
code
"Name:Amount:stock=StockConc[:buffer=Component/Conc,Component/Conc,...]"
Amount can be specified as:
- •Concentration:
50nM,1uM,100mM - •Absolute amount:
70pmol,100fmol,1nmol(auto-converted to concentration based on volume) - •Molar ratio:
1.5x,2x(requires--referenceflag)
Examples:
- •
"CDK2:50nM:stock=10uM"- Simple protein without buffer info - •
"CDK2:50nM:stock=10uM:buffer=HEPES/20mM,NaCl/150mM"- Protein with storage buffer components - •
"PolII:70pmol:stock=5.17uM:buffer=HEPES/20mM"- Using absolute pmol amount - •
"DSIF:1.5x:stock=50.8uM:buffer=HEPES/20mM"- Using molar ratio (with--reference 70pmol)
Buffer Component Format
code
"Name:StockConc->FinalConc"
Examples:
- •
"HEPES:1M->25mM"- HEPES from 1M stock to 25mM final - •
"NaCl:5M->150mM"- NaCl from 5M stock to 150mM final - •
"Glycerol:100%->10%"- Glycerol from 100% to 10% final
Available Presets
Protein Presets (built-in):
- •
kinase_panel- CDK2 and MEK1 for kinase assays - •
purification_stocks- His-tagged protein and TEV protease - •
reconstitution- Nucleosome reconstitution - •
polii_elongation_complex- Pol II elongation complex (PolII, DSIF, IWS1, ELOF1, SPT6, PAF1c, P-TEFb, CSB, DNA-RNA, ntDNA)
Buffer Presets (built-in):
- •
lysis- Cell lysis buffer (50mM HEPES, 300mM NaCl, 1mM TCEP, 5% glycerol) - •
gel_filtration- SEC buffer (25mM Tris, 150mM NaCl, 1mM EDTA, 10% glycerol) - •
storage- Protein storage buffer (20mM HEPES, 150mM NaCl, 0.5mM TCEP, 10% glycerol) - •
kinase_assay- Kinase reaction buffer (25mM HEPES, 100mM NaCl, 10mM MgCl2, 1mM DTT, 1mM ATP) - •
cryo_em- Cryo-EM buffer (20mM HEPES, 150mM NaCl, 1mM TCEP) - •
elongation_buffer- Elongation assay buffer (20mM HEPES, 75mM NaCl, 10% glycerol, 1mM TCEP, 1mM ATP, 3mM MgCl2)
External Preset Files
Presets can be loaded from external YAML or JSON files using --presets-file. Default locations searched:
- •
~/.config/reactor/presets.yaml
Predefined Stocks
Common laboratory stock concentrations are predefined:
- •HEPES: 1M
- •NaCl: 5M
- •TCEP: 200mM
- •Glycerol: 100%
- •MgCl2: 1M
- •DTT: 1M
- •ATP/GTP: 100mM
- •And more (use
--list-stocksto see all)
Units Supported
- •Concentration: M, mM, uM, nM, %, mg/ml
- •Absolute amount: pmol, fmol, nmol (converted to concentration based on volume)
- •Ratio: x (e.g., 1.5x, 2x - requires
--reference) - •Volume: uL (microliters)