MCP server by ComputBiophys
MCP-ANM and PRS Simulation
This repository contains MATLAB and Python scripts to perform MCP-ANM (Membrane-Contact Probability Anisotropic Network Model) and MCP-mANM (Membrane-Contact Probability multiscale Anisotropic Network Model) simulations, along with Protein Response Scanning (PRS) for applying membrane tension or push/pull force to proteins. The workflow generates a series of stretched conformations from a PDB file and associated MCP (Membrane Contact Probability) data.
Overview
The pipeline consists of the following steps:
-
PDB File Preparation
- Download and orient a protein structure (e.g., from the OPM database), ensuring alignment with the membrane (Z-axis normal).
-
MCP File Generation
- Use the MCP Predictor to generate a
.csvfile containing membrane-contact probabilities for each residue.
- Use the MCP Predictor to generate a
-
MCP-ANM and MCP-mANM Simulation
- MATLAB: Run
mcpANM.mormcpmANM.mto compute the Hessian matrix and perform eigendecomposition for normal modes using PDB and MCP files. - Python: Use
mcpANM.pyormcpmANM.pyfor the same purpose.
- MATLAB: Run
-
Force Direction Calculation
- A Python script (
force_direction.py) computes tension vectors for each residue, saved as*_normals.txt, for use in membrane tension simulations.
- A Python script (
-
Membrane Tension via PRS
- MATLAB: Scripts
mcpmANM_PRS_tension_model.mapply in-plane forces to membrane-contacting residues, generating conformations at varying tension levels. - Python: Scripts
mcpmANM_PRS_tension_model.pyperform the same task.
- MATLAB: Scripts
-
Push/Pull Force Simulation
- MATLAB: Scripts
mcpmANM_PRS_tether_model.mapply a fixed force (e.g., F = (0, 0, 1)) to specific residues for push/pull studies. - Python: Scripts
mcpmANM_PRS_tether_model.pyoffer equivalent functionality.
- MATLAB: Scripts
File Descriptions
| File | Description |
|------|-------------|
| 6pwn.pdb | Example PDB file for the mechanosensitive channel MscS (PDB ID: 6pwn). |
| 6pwn.mcp | Example MCP file generated by MCP Predictor for the 6pwn structure. ; this file is derived by extracting MCP data from 6pwn.csv, and can be omitted in practice with direct use of 6pwn.csv.|
| 6pwn.csv | Example MCP file generated by MCP Predictor for the 6pwn structure. |
| 6pwn_normals.txt | Example file with tension vectors for each residue, generated by force_direction.py. |
MATLAB Files
| File | Description |
|------|-------------|
| pdbread.m | Reads PDB files, extracting Cα coordinates, residue names, B-factors, and chain counts. |
| MCP_read.m | Reads MCP (Membrane-Contact Probability) files (supports .mcp and .csv formats), filters and returns indices of residues with MCP values exceeding the specified threshold. |
| calculateHessian.m | Computes the Hessian matrix for ANM calculations. |
| calculateHessian_kernal.m | Computes the Hessian matrix for mANM calculations. |
| filewrite.m | Writes output PDB files with proper chain assignments. |
| mcpANM.m | Main script for MCP-ANM simulation. |
| mcpmANM.m | Main script for MCP-mANM simulation. |
| mcpmANM_PRS_tension_model.m | Applies membrane tension using PRS with MCP-mANM. |
| mcpmANM_PRS_tether_model.m | Simulates push/pull forces with MCP-mANM using a fixed force. |
Python Files
| File | Description |
|------|-------------|
| mcpANM.py | Main script for MCP-ANM simulation. |
| mcpmANM.py | Main script for MCP-mANM simulation. |
| mcpmANM_PRS_tension_model.py | Applies membrane tension using PRS with MCP-mANM. |
| mcpmANM_PRS_tether_model.py | Simulates push/pull forces with MCP-mANM using a fixed force. |
| force_direction.py | Computes force direction vectors (tension vectors). |
MCP Predictor
Available at: [MCP Predictor GitHub](https://github.com/ComputBiophys/MCP_Predictor, updated model: https://github.com/ComputBiophys/ProtRAP-LM )
Usage Instructions
Set Up the Environment
- MATLAB: Requires MATLAB R2018b or later.
- Python: Requires Python 3.x with NumPy, SciPy, and Matplotlib installed.
Generate MCP File
Use MCP Predictor to create a .csv file for your protein.
Run the Simulation
- Open
mcpANM.mormcpmANM.m,mcpANM.pyormcpmANM.py, set PDB and MCP file names, and run MCP-ANM/MCP-mANM. - Run
force_direction.py(in Python) to generate*_normals.txt. - Run
mcpmANM_PRS_tension_model.mormcpmANM_PRS_tension_model.pyfor membrane tension simulations. - Push/Pull Simulations: Run
mcpmANM_PRS_tether_model.mormcpmANM_PRS_tether_model.pyto apply a fixed force (e.g., F = (0, 0, 1)) to specific regions.
License and Citation
This code is for academic research. Please cite the relevant publication when using it.
Zhongjie Han, Wang Lei, Chen Song. Improved Anisotropic Network Models for Membrane Protein Dynamics and Mechanosensitive Ion Channels. DOI: 10.1101/2025.05.22.654704
Contact
For assistance, contact Zhongjie Han at zjayhan@pku.edu.cn.