Skip to content

quaidtUC/Sterics_Study

Repository files navigation

Steric Correction Pipeline for N-Substituted Zn-Cyclen Carbonic Anhydrase Mimics

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.

Motivation

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:

  1. GOAT conformational search (via ORCA/xTB) to sample accessible geometries
  2. Boltzmann-weighted %Vbur computation using a vectorized voxel-grid method
  3. 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.

Project Structure

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

Installation

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)

Quick Start

Reproduce the steric correction analysis (requires GOAT ensemble files):

python analysis/working_method.py
python analysis/working_method.py --help   # See all CLI options

Run 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 workflow

Compute %Vbur for existing ensembles:

python analysis/compute_vbur.py

Testing

pip install -e ".[test]"
python -m pytest tests/ -v

All 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).

Methodology

The pipeline implements a two-correction steric model:

  1. Conformational Gating (f_open): Fraction of unblocked approach directions around Zn, computed via ray-casting against van der Waals spheres on a Fibonacci lattice.

  2. 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.

  3. Steric Suppression Model: Linear fit S = 1 - alpha * delta_%Vbur relating 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.

Configuration

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

Key Results (Training Set)

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

License

MIT

About

Steric correction pipeline for N-substituted Zn-cyclen carbonic anhydrase mimics. Boltzmann-weighted %Vbur from GOAT conformational ensembles.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors