A computational pipeline for quantifying how steric effects suppress catalytic rates in zinc-cyclen complexes that mimic carbonic anhydrase. The pipeline computes Boltzmann-weighted percent buried volume (%Vbur) from conformational ensembles and fits a linear steric correction model to reconcile predicted and observed rate constants.
Linear free energy relationships (LFERs) based on computed binding free energies predict rate constants well for unsubstituted Zn-cyclen CA mimics. However, N-functionalized variants (hexyl, butyl, benzyl) systematically underperform their electronic predictions. This pipeline quantifies the steric origin of that deviation through:
- GOAT conformational search (via ORCA/xTB) to sample accessible geometries
- Boltzmann-weighted %Vbur computation using a vectorized voxel-grid method
- Linear steric suppression model:
k_corr = k_pred * (1 - alpha * delta_%Vbur)
The fitted model achieves R^2 = 0.971 on the training set with RMSE = 10.6 M-1 s-1.
Sterics_Study/
├── README.md
├── BREAKDOWN.md # Non-technical project walkthrough
├── LICENSE
├── pyproject.toml # Python package definition
├── requirements.txt
├── config.yaml # Pipeline configuration
├── .gitignore
│
├── steric_pipeline/ # Core numbered pipeline (00-09)
│ ├── __init__.py
│ ├── utils.py # Shared utilities (XYZ I/O, config, chemistry)
│ ├── 00_validate_inputs.py # Validate and stage input files
│ ├── 01_run_crest.sh # CREST conformational search
│ ├── 02_split_crest_ensemble.py
│ ├── 03_make_orca_inputs.py # Generate ORCA inputs from Jinja2 templates
│ ├── 04_run_orca_local.sh # Submit ORCA jobs
│ ├── 05_parse_orca_energies.py
│ ├── 06_detect_bicarbonate.py # HCO3- substrate detection
│ ├── 07_parse_scan_barrier.py
│ ├── 08_compute_fopen.py # Conformational gating factor
│ └── 09_analyze_and_plot.py # Final analysis and figures
│
├── analysis/ # Higher-level analysis scripts
│ ├── __init__.py
│ ├── working_method.py # End-to-end reproduction script (CLI)
│ ├── compute_vbur.py # Fast vectorized %Vbur computation
│ ├── sensitivity_analysis.py # Parameter sweep (sphere radii, sampling)
│ └── generate_figures.py # Publication figure generation
│
├── tests/ # Automated test suite (pytest)
│ ├── __init__.py
│ └── test_utils.py # 26 tests for core functions
│
├── templates/ # ORCA Jinja2 input templates
│ ├── orca_opt_svp.inp.j2
│ ├── orca_freq_svp.inp.j2
│ ├── orca_sp_tzvpp.inp.j2
│ ├── orca_scan_release_svp.inp.j2
│ └── orca_dlpno_sp.inp.j2
│
├── inputs/
│ ├── structures/ # XYZ molecular coordinates (15 complexes)
│ └── kinetics/ # Experimental kinetics data
│ └── cyclens_k_sterics.xlsx
│
├── docs/
│ ├── methods.md # Full computational methods
│ └── pipeline_architecture.md # Two-layer design explanation
│
└── examples/
└── README.md # Quick-start usage guide
git clone https://github.com/quaidtUC/Sterics_Study.git
cd Sterics_Study
pip install -e .For the full pipeline, you also need:
- ORCA (v6.0+) with XTB2/GOAT support
- xTB (v6.6+, optional for standalone CREST)
- CREST (v3.0+, optional)
Reproduce the steric correction analysis (requires GOAT ensemble files):
python analysis/working_method.py
python analysis/working_method.py --help # See all CLI optionsRun the full pipeline from scratch:
# 1. Edit config.yaml with your ORCA/CREST/xTB paths
# 2. Validate inputs
python steric_pipeline/00_validate_inputs.py --config config.yaml --autocopy
# 3. Conformational search
bash steric_pipeline/01_run_crest.sh config.yaml
# 4-9. See examples/README.md for the complete workflowCompute %Vbur for existing ensembles:
python analysis/compute_vbur.pypip install -e ".[test]"
python -m pytest tests/ -vAll 26 tests cover core functionality: XYZ file I/O, bicarbonate detection, %Vbur computation, ensemble parsing, Boltzmann weighting, model fitting, and chemistry validation (e.g., confirming substituted cyclens have higher buried volume than the parent).
The pipeline implements a two-correction steric model:
-
Conformational Gating (f_open): Fraction of unblocked approach directions around Zn, computed via ray-casting against van der Waals spheres on a Fibonacci lattice.
-
Percent Buried Volume (%Vbur): SambVca-type voxel grid method centered on Zn (R=4.0 A, mesh=0.15 A). Bicarbonate substrate atoms are automatically excluded. Boltzmann-weighted over GOAT conformational ensembles at 298.15 K.
-
Steric Suppression Model: Linear fit
S = 1 - alpha * delta_%Vburrelating the observed/predicted rate ratio to the change in buried volume relative to unsubstituted cyclen.
See docs/methods.md for complete computational details and parameters.
All paths, resources, and physical parameters are controlled by config.yaml:
commands:
orca: /path/to/orca
crest: /path/to/crest
xtb: /path/to/xtb
resources:
crest_threads: 8
orca_nprocs: 1
memory_mb: 4000
temperature_K: 298.15| Ligand | k_pred | k_obs | %Vbur | delta_%Vbur | k_corrected |
|---|---|---|---|---|---|
| Cyclen | 313 | 321 | 55.40 | 0.00 | 313 |
| Hexyl | 448 | 279 | 59.89 | +4.49 | 274 |
| Butyl | 433 | 186 | 61.56 | +6.16 | 202 |
| Benzyl | 376 | 173 | 61.95 | +6.55 | 163 |
alpha = 0.0866, R^2 = 0.971, RMSE = 10.6 M-1 s-1