A high-precision, circular-statistics-derived backbone-dependent (BBD) and backbone-independent (BBI) rotamer library suite for RNA-binding proteins in bound and unbound states across interface and surface locations.
RBPs_rotamer_lib/
├── RBPs_BBD_rotamer_lib/ # Backbone-Dependent (30° x 30° Phi/Psi bins) Libraries
│ ├── RBPs_I_bbd_B_rotamer_lib.[csv|tsv|json] # Bound Interface (I)
│ ├── RBPs_I_bbd_U_rotamer_lib.[csv|tsv|json] # Unbound Interface (I)
│ ├── RBPs_N_bbd_B_rotamer_lib.[csv|tsv|json] # Bound Non-Interface Surface (N)
│ ├── RBPs_N_bbd_U_rotamer_lib.[csv|tsv|json] # Unbound Non-Interface Surface (N)
│ ├── RBPs_bbd_B_rotamer_lib.[csv|tsv|json] # Bound Overall Surface (B)
│ └── RBPs_bbd_U_rotamer_lib.[csv|tsv|json] # Unbound Overall Surface (U)
├── RBPs_BBI_rotamer_lib/ # Backbone-Independent (Global) Libraries
│ ├── RBPs_I_bbi_B_rotamer_lib.[csv|tsv|json] # Bound Interface (I)
│ ├── RBPs_I_bbi_U_rotamer_lib.[csv|tsv|json] # Unbound Interface (I)
│ ├── RBPs_N_bbi_B_rotamer_lib.[csv|tsv|json] # Bound Non-Interface Surface (N)
│ ├── RBPs_N_bbi_U_rotamer_lib.[csv|tsv|json] # Unbound Non-Interface Surface (N)
│ ├── RBPs_bbi_B_rotamer_lib.[csv|tsv|json] # Bound Overall Surface (B)
│ └── RBPs_bbi_U_rotamer_lib.[csv|tsv|json] # Unbound Overall Surface (U)
├── input_files/ # Cleaned input datasets (PRDBv3 187/288 complexes)
├── output_files/ # Torsion angle dataset exports (CSV, TSV, JSON)
├── script/ # Core python engines for derivation & analysis
└── utils/ # Structure parsing utilities (mmcif_clean_reader)
The rotamer library derivation pipeline incorporates modern circular statistics and kernel regression methods (Zhang et al., Bioinformatics 2024, doi:10.1093/bioinformatics/btae444):
- Built on
macromol_torsion(geometry.py,protein_backbone.py,protein_sidechain.py). - Enforces strict IUPAC right-handed sign convention (
$\pm 180^\circ$ ) matching BioPythoncalc_dihedralwith 100.00% precision. - Assigns 3-state secondary structure via DSSP (
get_secondary_structure).
Residues are categorized based on surface accessibility and interface burial using PRince (.int and .sur outputs):
-
Interface Residues (
'I'): Residues present in PRince.intoutput files that lose solvent accessible surface area (SASA) upon complexation (buried in the binding interface). -
Non-Interface Surface Residues (
'N'): Residues present in PRince.suroutput files (surface-exposed residues) that are not involved in the binding interface. -
Core Buried Residues (
'C'): Interior buried residues with zero surface accessibility (absent from both.intand.surfiles). -
Surface Population (
'S'): All surface-exposed residues combined ($\text{Surface } S = \text{Interface } I + \text{Non-Interface } N$ , derived by filteringSASA.isin(["I", "N", "S"])). -
Overall Population (
'ALL'): Complete dataset combining Interface, Non-Interface Surface, and Core Interior residues ($I + N + C$ ).
-
Multi-Chi Depth Validation: Residues with missing terminal atoms are validated up to their deepest non-null chi depth, ensuring partial sidechains contribute accurately without introducing
NaNbinning artifacts. -
Symmetric Planar Ring Folding: Symmetric terminal chi angles (
$\text{ASP }\chi_2$ ,$\text{GLU }\chi_3$ ,$\text{PHE }\chi_2$ ,$\text{TYR }\chi_2$ ) are folded into$[ -90^\circ, 90^\circ )$ prior to rotamer binning to avoid splitting chemically identical conformations into separate states.
-
Grid Binning: Backbone
$(\Phi, \Psi)$ angles are binned into$30^\circ \times 30^\circ$ grid cells centered at$[-180^\circ, -150^\circ, \dots, +150^\circ]$ . -
Rotamer States: Sidechain
$\chi$ angles are binned into standard staggered states ($p / g^+$ at$+60^\circ$ ,$t$ at$180^\circ$ ,$m / g^-$ at$-60^\circ$ ). -
Circular Statistics: Weighted circular mean ($\mu = \text{angle}(\sum w_i e^{j\theta_i})$) and circular standard deviation (
$\sigma$ ) are calculated usingscipy.stats.vonmisesfitting, eliminating artificial$-180^\circ / +180^\circ$ boundary discontinuities.
- All rotamer libraries are exported in unified CSV, TSV, and JSON files combining all 18 standard sidechain amino acids for each state and surface classification.
| File Name | Description |
|---|---|
RBPs_I_bbd_B_rotamer_lib.[csv|tsv|json] |
Bound interface rotamers ( |
RBPs_I_bbd_U_rotamer_lib.[csv|tsv|json] |
Unbound interface rotamers ( |
RBPs_N_bbd_B_rotamer_lib.[csv|tsv|json] |
Bound non-interface rotamers ( |
RBPs_N_bbd_U_rotamer_lib.[csv|tsv|json] |
Unbound non-interface rotamers ( |
RBPs_S_bbd_B_rotamer_lib.[csv|tsv|json] |
Bound overall surface rotamers ( |
RBPs_S_bbd_U_rotamer_lib.[csv|tsv|json] |
Unbound overall surface rotamers ( |
RBPs_bbd_B_rotamer_lib.[csv|tsv|json] |
Overall surface bound rotamers (Bound |
RBPs_bbd_U_rotamer_lib.[csv|tsv|json] |
Overall surface unbound rotamers (Unbound |
| Column | Description |
|---|---|
AA |
Amino acid 3-letter code (e.g. ARG, LYS) |
PHI |
Backbone |
PSI |
Backbone |
_Count |
Number of observations in specific |
Count |
Total observations in the |
Prob |
Conditional probability |
B_CHI[1-4] / U_CHI[1-4]
|
Weighted circular mean |
B_CHI[1-4]Sig / U_CHI[1-4]Sig
|
Weighted circular standard deviation of |
| File Name | Description |
|---|---|
RBPs_I_bbi_B_rotamer_lib.[csv|tsv|json] |
Bound interface rotamers ( |
RBPs_I_bbi_U_rotamer_lib.[csv|tsv|json] |
Unbound interface rotamers ( |
RBPs_N_bbi_B_rotamer_lib.[csv|tsv|json] |
Bound non-interface rotamers ( |
RBPs_N_bbi_U_rotamer_lib.[csv|tsv|json] |
Unbound non-interface rotamers ( |
RBPs_S_bbi_B_rotamer_lib.[csv|tsv|json] |
Bound overall surface rotamers ( |
RBPs_S_bbi_U_rotamer_lib.[csv|tsv|json] |
Unbound overall surface rotamers ( |
RBPs_bbi_B_rotamer_lib.[csv|tsv|json] |
Overall bound residues (Backbone Independent) |
RBPs_bbi_U_rotamer_lib.[csv|tsv|json] |
Overall unbound residues (Backbone Independent) |
| Column | Description |
|---|---|
AA |
Amino acid 3-letter code |
_Count |
Observations in specific rotamer state |
Count |
Total observations for amino acid |
Prob |
Global rotamer probability |
CHI[1-4] |
Global weighted circular mean |
CHI[1-4]Sig |
Global weighted circular standard deviation of |
import pandas as pd
# Load Backbone-Dependent Bound Interface Rotamer Library
df_bbd = pd.read_csv("RBPs_BBD_rotamer_lib/RBPs_I_bbd_B_rotamer_lib.csv")
# Filter rotamers for Arg at phi = -60, psi = -30
arg_rotamers = df_bbd[(df_bbd["AA"] == "ARG") & (df_bbd["PHI"] == -60) & (df_bbd["PSI"] == -30)]
print(arg_rotamers[["AA", "PHI", "PSI", "Prob", "B_CHI1", "B_CHI2", "B_CHI1Sig"]])- Kant, S., Nithin, C., Mukherjee, S., Maity, A., Bahadur, R.P., 2025. Protein–RNA Docking Benchmark v3.0 Integrated With Binding Affinity. Proteins, prot.26825. https://doi.org/10.1002/prot.26825
- Zhang, O., Naik, S.A., Liu, Z.H., Forman-Kay, J., Head-Gordon, T., 2024. A curated rotamer library for common post-translational modifications of proteins. Bioinformatics 40. https://doi.org/10.1093/bioinformatics/btae444
- Shapovalov, M.V., Dunbrack, R.L., 2011. A Smoothed Backbone-Dependent Rotamer Library for Proteins Derived from Adaptive Kernel Density Estimates and Regressions. Structure 19, 844–858. https://doi.org/10.1016/j.str.2011.03.019
- Dunbrack, R.L., Karplus, M., 1993. Backbone-dependent Rotamer Library for Proteins Application to Side-chain Prediction. Journal of Molecular Biology 230, 543–574. https://doi.org/10.1006/jmbi.1993.1170
- Mukherjee, S., Bahadur, R.P., 2018. An account of solvent accessibility in protein-RNA recognition. Sci Rep 8, 10546. https://doi.org/10.1038/s41598-018-28373-2
If you use these rotamer libraries or codebase in your work, please cite:
Sunandan Mukherjee, Shri Kant, and Ranjit P. Bahadur (2026). Conformational Transitions and Rotamer Preferences of RNA-Binding Proteins Upon Binding RNA.