Skip to main content

A package for FRET Efficiency prediction of protein structures and trajectories, based on the Rotamer Library Approach (RLA). Can be installed with pip.

Project description

Documentation Status DOI:10.1101/2023.01.27.525885 DOI DOI


Overview

FRETpredict is a Python package based on the Rotamer Library Approach (RLA) for calculating FRET efficiency based on protein conformational ensembles and MD trajectories.

The FRETpredict class is initialized with (i) a protein structure or trajectory (provided as MDAnalysis Universe objects), (ii) the residue indices to which the fluorescent probes are attached, and (iii) the rotamer libraries for the fluorophores and linkers to be used in the calculation.

FRETpredict algorithm

For each protein structure to be analysed — either individually or as an ensemble — the FRETpredict algorithm places the FRET probes at the selected protein sites independently of each other. Relative orientations and distances between the dyes are then computed for all combinations of the donor and acceptor rotamers. Further, nonbonded interaction energies between each rotamer and the surrounding protein atoms are calculated within a radius of 1.0 nm. Using these energies, statistical weights are first estimated for donor and acceptor rotamers independently and subsequently combined to calculate average FRET efficiencies. It is also possible to reweight frames and conformations based on protein-dye interactions to compute reweighted FRET efficiencies. This is particularly useful for Intrinsically Disordered Proteins, for which the effective fraction of the frames that contribute to averages is usually small.

In FRETpredict, the average FRET efficiency can be calculated in three different regimes: Static, Dynamic, and Dynamic+. We suggest using the Dynamic regime when making predictions on protein trajectories and the Static regime for single protein structures. Simply averaging the results from the three regimes often leads to good agreement with experiments.

Rotamer libraries

In FRETpredict, rotamer libraries are created through the following steps: (i) generation of the conformational ensemble of the FRET probe using MD simulations (to perform indipendently), (ii) selection of the peaks of the dihedral distributions of the linker, (iii) two clustering steps, and (iv) filtering. These steps are implemented in FRETpredict/rotamer_libraries.py. We recommend using large rotamer libraries when the computational cost is not a limiting factor and medium libraries for larger conformational ensembles.

The lib/libraries.yml file lists all the available Rotamer Libraries, along with necessary fluorophore information, including atom indices for calculating transition dipole moments and distances between fluorophores.

If you use the rotamer libraries for Cy3b C2R and CF660R C2R, please cite Klose et al. (2021).

Currently available Rotamer Libraries

  • AlexaFluor 350 C1R + L1R (A35 C1R, A35 L1R)

  • AlexaFluor 488 C1R + L1R + B1R (A48 C1R, A48 L1R, A48 B1R)

  • AlexaFluor 532 C1R + L1R (A53 C1R, A53 L1R)

  • AlexaFluor 561 C1R + L1R (A56 C1R, A56 L1R)

  • AlexaFluor 594 C1R + L1R (A59 C1R, A59 L1R)

  • AlexaFluor 647 C2R + L1R (A64 C2R, A64 L1R)

  • ATTO 390 C2R + L1R (T39 C2R, T39 L1R)

  • ATTO 425 C2R + L1R (T42 C2R, T42 L1R)

  • ATTO 465 C2R + L1R (T46 C2R, T46 L1R)

  • ATTO 495 C2R + L1R (T49 C2R, T49 L1R)

  • ATTO 520 C2R + L1R (T52 C2R, T52 L1R)

  • ATTO 610 C2R + L1R (T61 C2R, T61 L1R)

  • ATTO 488 C3R (T48 C3R)

  • ATTO Thio12 C3R (Tth C3R)

  • Lumiprobe Cy3b C2R (Cy3b C2R from MMM)

  • Lumiprobe Cy5.5 C2R + L1R (C55 C2R, C55 L1R)

  • Lumiprobe Cy7.5 L1R (C75 L1R)

  • CF 660R C2R (CF660 C2R from MMM)

In the absence of the exact probes, accurate trends can be predicted by (i) choosing rotamer libraries with similar structural characteristics (linker length, linker dihedrals, fluorophore structure) and (ii) manually setting the $R_0$ for the experimental pair of dyes.

Installation

To install FRETpredict, use the PyPI package:

  pip install FRETpredict

or clone the repo and install locally:

  git clone https://github.com/KULL-Centre/FRETpredict.git
  cd FRETpredict

  pip install -e . 

The software requires Python 3.6-3.9.

In case of dependency issues, consider installing FRETpredict in a new environment

  conda create -n myenv python=3.9 pip
  conda activate myenv
  pip install -e .

Testing

  pip install pytest

  python -m pytest

The tests reproduce internal reference data for the following protein systems:

Code Example

import MDAnalysis
from FRETpredict import FRETpredict

# Create a MDAnalysis.Universe object for the protein structure.
u = MDAnalysis.Universe('tests/test_systems/pp11/pp11.pdb', 'tests/test_systems/pp11/pp11.xtc')

# Create instance of the FRETpredict class
FRET = FRETpredict(protein=u, residues=[0, 12], chains=['A', 'A'], temperature=298, 
                   donor='AlexaFluor 488', acceptor='AlexaFluor 594', electrostatic=True,
                   libname_1=f'AlexaFluor 488 C1R cutoff10',
                   libname_2=f'AlexaFluor 594 C1R cutoff10',  
                   output_prefix='E_pp11')

# Run FRET efficiency calculations.
FRET.run()

Compute reweighted FRET efficiency based on protein-dye interactions

FRET.reweight(reweight_prefix='E_pp11_reweighted')

and combine user-provided weights from previous calculations (e.g., Enhanced sampling simulations)

FRET.reweight(reweight_prefix='E_pp11_reweighted', user_weights=user_weights_pp11)

Further examples can be found at github.com/KULL-Centre/_2023_Montepietra_FRET.

Tutorials

Structure

FRETpredict/
├─ FRETpredict/
│  ├─ lib/
│  │  ├─ R0/
│  ├─ FRET.py
│  ├─ lennardjones.py
│  ├─ libraries.py
│  ├─ R0_calculation.py
│  ├─ rotamer_libraries.py
│  ├─ utils.py
│  ├─ __init__.py
├─ tests/
|  ├─ test_Hsp90.py
│  ├─ test_systems/
│  │  ├─ Hsp90/
│  │  ├─ pp11/
│  ├─ tutorials/
│  │  ├─ test/
│  │  |  ├─ genLIB/
│  │  ├─ Tutorial_FRETpredict_pp11.ipynb
│  │  ├─ Tutorial_generate_new_rotamer_libraries.ipynb
├─ LICENSE
├─ README.md
├─ setup.py

Contributors

Daniele Montepietra (@Monte95)

Giulio Tesei (@gitesei)

João M Martins (@joaommartins)

Micha BA Kunze (@mbakunze)

Robert Best (@bestlab)

Kresten Lindorff-Larsen (@lindorff-larsen)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

FRETpredict-0.2.5.tar.gz (27.9 MB view details)

Uploaded Source

Built Distribution

FRETpredict-0.2.5-py3-none-any.whl (27.9 MB view details)

Uploaded Python 3

File details

Details for the file FRETpredict-0.2.5.tar.gz.

File metadata

  • Download URL: FRETpredict-0.2.5.tar.gz
  • Upload date:
  • Size: 27.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/6.0.0 pkginfo/1.9.6 requests/2.29.0 requests-toolbelt/0.9.1 tqdm/4.65.0 CPython/3.8.16

File hashes

Hashes for FRETpredict-0.2.5.tar.gz
Algorithm Hash digest
SHA256 f345b29874cfa8747055d852fa25d85f5c975943c085bfaae70755b699af82d5
MD5 c40c0f48bc466ac7b3f485e14570b32e
BLAKE2b-256 656deee145ae06fba9e2ee912919b58a05dfb23e9a1a90e03fcd35330e1e5946

See more details on using hashes here.

File details

Details for the file FRETpredict-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: FRETpredict-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 27.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/6.0.0 pkginfo/1.9.6 requests/2.29.0 requests-toolbelt/0.9.1 tqdm/4.65.0 CPython/3.8.16

File hashes

Hashes for FRETpredict-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 135c94984085d3e5adfdcd96a36f2c6cc8670dae8c19bd6ebf54ef1b2deca662
MD5 0d60425c888a72768d010ee7842e5b77
BLAKE2b-256 4749afd0fe25d27684223f900a1b8b60bd62723becfa2bbacd21837d2d511d44

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page