Coarse-grained molecular dynamics code and analysis scripts for studying how poly(ADP-ribose) (PAR) modulates the liquid–liquid phase separation (LLPS) and self-association of the RNA-binding protein FUS (Fused in Sarcoma).
This repository contains everything needed to (1) build the coarse-grained models, (2) run the phase-separation and binding-affinity simulations, and (3) reproduce the analyses and figures.
FUS is an intrinsically disordered, phase-separating protein central to stress granule biology and ALS. We use a residue-level coarse-grained model to address two quantitative questions:
- Phase behavior — How does PAR change the propensity of FUS to phase separate? We measure this via the critical temperature (Tc) of a simulated protein/PAR slab, comparing systems with and without PAR.
- Molecular interactions — Which domain–domain contacts drive self-association, and how strong are they? We compute potentials of mean force (PMFs) and binding affinities for pairs of FUS regions (e.g. PrLD–PrLD, PrLD–CTRR) using umbrella sampling.
- Chain topology & disordered regions: each residue is a single bead connected by harmonic bonds.
- Nonbonded interactions: the HPS (hydrophobicity scale) model — a modified Lennard-Jones potential scaled by per-residue hydrophobicity (λ), plus Debye–Hückel electrostatics.
- Folded domains: the RRM (residues 284–367) and zinc finger / ZnF (residues 421–451) are held near their AlphaFold structures with structure-based Gō potentials (bonds, angles, native contacts).
- PAR is modeled as a linear charged polymer (a dedicated
PARbead type with its own mass, charge, σ, λ), 16 beads per chain in the LLPS runs.
Simulations use OpenMM with a Langevin integrator and are run on GPUs via SLURM job arrays.
PAR-FUS/
├── data/ # Model inputs and force-field parameters
│ ├── seq.toml # Sequences: FUS + domains (PrLD, RGG3PY, ZnF, CTRR)
│ ├── residues.csv # Per-residue properties and multiple λ scales
│ ├── params_hps_M1.csv # HPS force-field parameters used in this work (incl. PAR)
│ ├── FUS_AlphaFold.pdb # Reference full-length structure
│ ├── RRM/ # RRM domain: AlphaFold structure + Gō-model params/scripts
│ └── ZnF/ # ZnF domain: AlphaFold structure + Gō-model params/scripts
│
├── LLPS/ # Phase-separation (slab) simulations
│ ├── WT/script/
│ │ ├── functions.py # Builds the OpenMM System (HPS + elec + Gō + PAR)
│ │ └── llps_equilibration.py # NPT equilibration of the protein/PAR slab
│ └── script/
│ ├── llps_production.py # Production runs over a T ladder (380–470 K)
│ ├── utils.py, center.py, contacts.py, density.py, ... # helpers
│ └── plot_*.py # Figure generation
│
├── Kd/ # Binding free-energy / dissociation-constant calculations
│ ├── PrLD-PrLD/script/
│ └── PrLD-CTRR/script/
│ ├── umbrella_sampling.py # Umbrella windows along COM distance (0–20 nm, 61 windows)
│ ├── analysis_sampling.py # MBAR reweighting → PMF (uses FastMBAR)
│ └── plot_pmf.py # PMF comparison figures
│
└── analysis-scripts/ # Post-processing and figure generation
├── compute-Tc-density-chunks.py / plot-Tc-errorbar.py # Critical temperature
├── compute-FUS-contacts.py / plot-FUS-contacts.py # FUS–FUS contact maps
├── compute-FUS-PAR-contacts.py / plot-FUS-PAR-contacts.py
├── compute-FUS-Rg.py / plot-FUS-Rg.py # Radius of gyration
├── compute-FUS-CTRR-dist.py / plot-FUS-CTRR-dist.py
├── center-snapshot-traj.py, make-snapshot-pdb.py # Snapshots / visualization
└── arial/ # Fonts bundled for consistent figure typography