Code to calculate the surface tension and micropolarity from multiscale simulations of ELP condensates
By Andrew P. Latham and Bin Zhang If you use this code, please cite: Songtao Ye, Andrew P. Latham, Chia-Heng Hsiung, Yuqi Tang, Junlin Chen, Feng Luo, Yu Liu, Bin Zhang, Xin Zhang, Micropolarity governs the structural organization of biomolecular condensates, Nature Chemical Biology, accepted manuscript (https://www.biorxiv.org/content/10.1101/2023.03.30.534881v1).
Here, we walk through an example of the simulations and analysis used in our manuscript. All steps for performing simulations and analysis are demonstrated using the V10 system. For steps involving GROMACS simulations, we demonstrate how to prepare tpr files, which can then be input to mdrun.
Finally, for those interested in performing AA simulations of condensates, we recommend exploring our updated procedure for MOFF configurations to all-atom (AA) structures (see OpenABC, https://github.com/ZhangGroup-MITChemistry/OpenABC).
MOFF Simulations ----------------------------------------------------------------------------------------------
gmx_mpi grompp -f min.mdp -c start.gro -p polyV.top -o min.tpr gmx_mpi grompp -f eq.mdp -c min.gro -p polyV.top -o eq.tpr -maxwarn 1
gmx_mpi grompp -f min.mdp -c eq.gro -p ELP.top -o min_eq.tpr gmx_mpi grompp -f eq3.mdp -c min_eq.gro -p ELP.top -o eq3.tpr -maxwarn 1
echo 0 0 | gmx_mpi trjconv -f eq3.gro -s eq3.tpr -pbc mol -o eq3.pdb -center
Convert to all atom. This configuration is used as input to MARTINI. Note to ensure the box dimensions specified in the leap file align with those from the pdb file
tleap -f build.leap
MARTINI Simulations -------------------------------------------------------------------------------------------
martinize2 -f V10_AA1.pdb -nt -o PROA.top -ff martini3001 -x V10_MARTINI1.pdb -maxwarn 25
martinize2 -f V10_AA3.pdb -nt -o PROA.top -ff martini3001 -x V10_MARTINI3.pdb
gmx_mpi editconf -f V10_MARTINI1.pdb -c -o V10_MARTINI.pdb -box XXX XXX 40.000
gmx_mpi solvate -cp V10_MARTINI.pdb -cs water.gro -o solvated.gro -p PROA.top -radius 0.21
gmx_mpi grompp -f ions.mdp -c solvated.gro -p PROA.top -o ions.tpr gmx_mpi genion -s ions.tpr -o start.gro -p PROA.top -pname NA -nname CL -conc 1
gmx_mpi grompp -f step4.1_minimization.mdp -c start.gro -p PROA.top -o min.tpr
gmx_mpi grompp -f step4.2_equilibration.mdp -c min.gro -p PROA.top -o nvt.tpr
gmx_mpi grompp -f step4.3_equilibration.mdp -c nvt.gro -t nvt.cpt -p PROA.top -o npt.tpr
gmx_mpi grompp -f step5.0_production.mdp -c npt.gro -t npt.cpt -p PROA.top -o prod.tpr
gmx_mpi grompp -f step5.0_production.mdp -c prod.gro -t prod.cpt -p PROA.top -o prod2.tpr
gmx_mpi trjcat -f prod.xtc prod2.xtc -settime -o trj_tot.xtc
echo 1 1 0 | gmx_mpi trjconv -f trj_tot.xtc -b 25000000.000 -center -pbc cluster -o prod_cluster.xtc -s prod.tpr echo 0 | gmx_mpi trjconv -f prod_cluster.xtc -s prod.tpr -pbc mol -o prod_fixed2.xtc
echo 0 | gmx_mpi trjconv -f prod_fixed2.xtc -s prod.tpr -o prod_100.gro -b 100000000 -e 100000000
./initram-v5.sh -f V10_100.gro -o V10_100_CHARMM.gro -to charmm36 -p topol.top -em 1000 -nb 5000 -np 16
gmx_mpi grompp -f step5.0_production.mdp -c npt.gro -p PROA.top -o prod_old.tpr
AA Simulations ------------------------------------------------------------------------------------------------
gmx_mpi grompp -f step4.0_minimization.mdp -c V10_CHARMM.gro -r V10_CHARMM.gro -p topol.top -o min.tpr
gmx_mpi grompp -f step4.1_equilibration.mdp -c min.gro -r min.gro -p topol.top -o nvt.tpr
gmx_mpi grompp -f step4.2_equilibration.mdp -c nvt.gro -t nvt.cpt -p topol.top -o npt1.tpr
gmx_mpi grompp -f step4.3_equilibration.mdp -c npt1.gro -t npt1.cpt -p topol.top -o npt2.tpr
gmx_mpi grompp -f step5_production.mdp -c npt2.gro -t npt2.cpt -p topol.top -o prod.tpr
gmx_mpi trjconv -f prod.xtc -s prod.tpr -pbc mol -center -o prod_fixed.xtc -b 50000.000
Analyze surface tension (MARTINI) -----------------------------------------------------------------------------
Surface tension * nsurf can be extracted directly from the edr file (not included due to file size constraints). This is done in 2 parts:
Note: The trajectory example stored in this folder has been greatly shortened due to storage considerations. However, the results shown are for the full trajectory
gmx_mpi energy -f prod.edr -o surf_tens.xvg gmx_mpi energy -f prod2.edr -o surf_tens2.xvg
The number of surfaces is defined as the number of clusters with 10 or more proteins (which represents 25% of the total system size).
python cluster_Zdist.py
At each time point, the surface tension of the system is the surface_tension*nsurf from GROMACS divided by the number of clusters in the system
Analyze Dielectric (AA) ---------------------------------------------------------------------------------------
Note: The trajectory example stored in this folder has been greatly shortened due to storage considerations. However, the results shown are for the full trajectory
python cluster_index.py
echo 1 0 | gmx_mpi trjconv -f prod.xtc -s prod.tpr -pbc mol -center -o prod_fixed_cluster.xtc -b 50000.000 -n index_cluster.ndx
python calc_dielectric.py