This is the code for the paper "MP-NeRF: A Massively Parallel Method for Accelerating Protein Structure Reconstruction from Internal Coordinates"
The code can be installed via pip
with
$ pip install mp-nerf
The conversion of polymers between internal and cartesian coordinates is a limiting step in many pipelines, such as molecular dynamics simulations and training of machine learning models. This conversion is typically carried out by sequential or parallel applications of the Natural extension of Reference Frame (NeRF)algorithm.
This work proposes a massively parallel NeRF implementation, which, depending on the polymer length, achieves speedups between 400-1200x over the most recent parallel NeRF implementation by dviding the conversion into three main phases: a parallel composition of the minimal repeated structure, the assembly of backbone subunits and the parallel elongation of sidechains.
Special emphasis is placed on reusability and ease of use within diverse pipelines. We open source the code (available at https://github.com/EleutherAI/mp_nerf) and provide a corresponding python package.
length | sota | us (cpu) | Nx | us (gpu) | us (hybrid) |
---|---|---|---|---|---|
~114 | 2.4s | 5.3ms | ~446 | 21.1ms | 18.9ms |
~300 | 3.5s | 8.5ms | ~400 | 26.2ms | 22.3ms |
~500 | 7.5s | 9.1ms | ~651 | 29.2ms | 26.3ms |
~1000 | 18.66s | 15.3ms | ~1200 | 43.3ms | 30.1ms |
for loop
, so ideally 2x from here would be possible by optimizing it or running the sequential loop in cython / numba / whateverJust clone the repo
You'll need:
Plus, if you want to run the experiments / work with data:
joblib
sidechainnet: https://github.com/jonathanking/sidechainnet#installation
manually install ProDY
, py3Dmol
, snakeviz
:
pip install proDy
pip install py3Dmol
pip install snakeviz
pip install package_name
matplotlib (to do diagnostic plots)
@article{Parsons2005PracticalCF,
title={Practical conversion from torsion space to Cartesian space for in silico protein synthesis},
author={Jerod Parsons and J. B. Holmes and J. M. Rojas and J. Tsai and C. Strauss},
journal={Journal of Computational Chemistry},
year={2005},
volume={26}
}
@article{AlQuraishi2018pNeRFPC,
title={pNeRF: Parallelized Conversion from Internal to Cartesian Coordinates},
author={Mohammed AlQuraishi},
journal={bioRxiv},
year={2018}
}
@article{Bayati2020HighperformanceTO,
title={High‐performance transformation of protein structure representation from internal to Cartesian coordinates},
author={M. Bayati and M. Leeser and J. Bardhan},
journal={Journal of Computational Chemistry},
year={2020},
volume={41},
pages={2104 - 2114}
}