Package: unrolr
UnrolrConformational analysis of MD trajectories based on (pivot-based) Stochastic Proximity Embedding using dihedral distance as a metric (https://github.com/jeeberhardt/unrolr).PrerequisitesYou need, at a minimum (requirements.txt):PythonNumPyH5pyPandasMatplotlibPyOpenCLMDAnalysisInstallation on UNIX (Debian/Ubuntu)1 . First, you have to install OpenCL:MacOS: Good news, you don't have to install OpenCL, it works out-of-the-box. (Update: bad news, OpenCL is now depreciated in macOS 10.14. Thanks Apple.)AMD:  You have to install theAMDGPU graphics stack.Nvidia: You have to install theCUDA toolkit.Intel: And of course it's working also on CPU just by installing thisruntime software package. Alternatively, the CPU-based OpenCL driver can be also installed through the packagepocl(http://portablecl.org/) using Anaconda.For any other informations, the official installation guide of PyOpenCL is availablehere.2 . I highly recommand you to install the Anaconda distribution (https://www.continuum.io/downloads) if you want a clean python environnment with nearly all the prerequisites already installed. To install everything properly, you just have to do this:$condacreate-nunrolrpython=3$condaactivateunrolr
$condainstall-cconda-forgemklnumpyscipypandasmatplotlibh5pyMDAnalysispyopenclocl-icd-system3 . Install unrolr$pipinstallunrolr... or from the source directly$gitclonehttps://github.com/jeeberhardt/unrolr
$cdunrolr
$pythonsetup.pybuildinstallOpenCL contextBefore running Unrolr, you need to define the OpenCL context. And it is a good way to see if everything is working correctly.$python-c'import pyopencl as cl; cl.create_some_context()'Here in my example, I have the choice between 3 differents computing device (2 graphic cards and one CPU).Chooseplatform:[0]<pyopencl.Platform'AMD Accelerated Parallel Processing'at0x7f97e96a8430>
Choice[0]:0
Choosedevice(s):[0]<pyopencl.Device'Tahiti'on'AMD Accelerated Parallel Processing'at0x1e18a30>[1]<pyopencl.Device'Tahiti'on'AMD Accelerated Parallel Processing'at0x254a110>[2]<pyopencl.Device'Intel(R) Core(TM) i7-3820 CPU @ 3.60GHz'on'AMD Accelerated Parallel Processing'at0x21d0300>
Choice,comma-separated[0]:1
SettheenvironmentvariablePYOPENCL_CTX='0:1'toavoidbeingaskedagain.Now you can set the environment variable.$exportPYOPENCL_CTX='0:1'ExamplefromunrolrimportUnrolrfromunrolr.feature_extractionimportDihedralfromunrolr.utilsimportsave_datasettop_file='examples/inputs/villin.psf'trj_file='examples/inputs/villin.dcd'# Extract all calpha dihedral angles from trajectory and store them into a HDF5 filed=Dihedral(top_file,trj_file,selection='all',dihedral_type='calpha').run()X=d.resultsave_dataset('dihedral_angles.h5',"dihedral_angles",X)# Fit X using Unrolr (pSPE + dihedral distance) and save the embedding into a csv file# The initial embedding is obtained using PCA (init = 'pca') with the OpenCL implementation# to run SPE, a CPU implementation can be used as an alternative (platform='CPU')U=Unrolr(r_neighbor=0.27,n_iter=50000,init='pca',platform='OpenCL',verbose=1)U.fit_transform(X)U.save(fname='embedding.csv')print('%4.2f%4.2f'%(U.stress,U.correlation))Todo listCompare SPE performance with UMAPCompatibility with python 3Compatibility with the latest version of MDAnalysis (==0.17)Unit testsAccessible directly from pipImprove OpenCL performance (global/local memory)CitationEberhardt, J., Stote, R. H., & Dejaegere, A. (2018). Unrolr: Structural analysis of protein conformations using stochastic proximity embedding. Journal of Computational Chemistry, 39(30), 2551-2557.https://doi.org/10.1002/jcc.25599LicenseMIT