{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Parallelizing analysis\n",
"\n",
"As we approach the exascale barrier, researchers are handling increasingly large volumes of molecular dynamics (MD) data. Whilst MDAnalysis is a flexible and relatively fast framework for complex analysis tasks in MD simulations, implementing a parallel computing framework would play a pivotal role in accelerating the time to solution for such large datasets.\t\n",
"\n",
"This document illustrates how you can run your own analysis scripts in parallel with MDAnalysis.\n",
"\n",
"**Last executed:** Mar 1st, 2022 with MDAnalysis 2.0.0\n",
"\n",
"**Last updated:** March 2022\n",
"\n",
"**Minimum version of MDAnalysis:** 2.0.0\n",
"\n",
"**Packages required:**\n",
" \n",
"* MDAnalysis (Michaud-Agrawal *et al.*, 2011, Gowers *et al.*, 2016)\n",
"* MDAnalysisData\n",
"* dask (https://dask.org/)\n",
"* dask.distributed (https://distributed.dask.org/en/latest/) \n",
"* joblib (https://joblib.readthedocs.io/en/latest/)"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import MDAnalysis as mda\n",
"from MDAnalysisData.adk_equilibrium import fetch_adk_equilibrium\n",
"\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"from multiprocessing import cpu_count\n",
"n_jobs = cpu_count()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Background\n",
"\n",
"In MDAnalysis, most implemented analysis methods are based on `AnalysisBase`, which provides a generic API for users to write their own trajectory analysis. However, this framework only takes single-core power of the PC by iterating through the trajectory and running a frame-wise analysis. Below we aim to first explore some possible simple implementations of parallelism, including using multiprocessing and dask. We will also discuss the acceleration approaches that should be considered, ranging from your own multiple-core laptops/desktops to distributed clusters. \""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Loading files"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The test files we will be working with here feature adenylate kinase (AdK), a phosopho-transferase enzyme. (Beckstein *et al.*, 2009). The trajectory has 4187 frames, which will take quite some time to run the analysis on with the conventional serial (single-core) approach.\n",
"\n",
"Note: downloading these datasets from MDAnalysisData may take some time."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"adk = fetch_adk_equilibrium()\n",
"u = mda.Universe(adk.topology, adk.trajectory)\n",
"protein = u.select_atoms('protein')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u.trajectory"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Radius of gyration\n",
"For a detail description of this analysis, read [Writing your own trajectory](https://mdanalysis.org/UserGuide/examples/analysis/custom_trajectory_analysis.html).\n",
"\n",
"Here is a common form of single-frame method that we can normally see inside `AnalysisBase`. It may contain both some dynamic parts that changes along time either implicitly or explicitly (e.g. `AtomGroup`) and some static parts (e.g. a reference frame)."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def radgyr(atomgroup, masses, total_mass=None):\n",
" # coordinates change for each frame\n",
" coordinates = atomgroup.positions\n",
" center_of_mass = atomgroup.center_of_mass()\n",
" \n",
" # get squared distance from center\n",
" ri_sq = (coordinates-center_of_mass)**2\n",
" # sum the unweighted positions\n",
" sq = np.sum(ri_sq, axis=1)\n",
" sq_x = np.sum(ri_sq[:,[1,2]], axis=1) # sum over y and z\n",
" sq_y = np.sum(ri_sq[:,[0,2]], axis=1) # sum over x and z\n",
" sq_z = np.sum(ri_sq[:,[0,1]], axis=1) # sum over x and y\n",
" \n",
" # make into array\n",
" sq_rs = np.array([sq, sq_x, sq_y, sq_z])\n",
" \n",
" # weight positions\n",
" rog_sq = np.sum(masses*sq_rs, axis=1)/total_mass\n",
" # square root and return\n",
" return np.sqrt(rog_sq)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Serial Analysis\n",
"\n",
"Below is the serial version of the analysis that we normally use."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"result = []\n",
"for frame in u.trajectory:\n",
" result.append(radgyr(atomgroup=protein,\n",
" masses=protein.masses,\n",
" total_mass=np.sum(protein.masses)))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"result = np.asarray(result).T\n",
"\n",
"labels = ['all', 'x-axis', 'y-axis', 'z-axis']\n",
"for col, label in zip(result, labels):\n",
" plt.plot(col, label=label)\n",
"plt.legend()\n",
"plt.ylabel('Radius of gyration (Å)')\n",
"plt.xlabel('Frame');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Parallelization in a simple per-frame fashion"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Frame-wise form of the function\n",
"\n",
"The coordinates of the ``atomgroup`` analysed change with each frame of the trajectory. We need to explicitly point the analysis function to the frame that needs to be analysed with a ``frame_index``: `atomgroup.universe.trajectory[frame_index]` in order to update the positions (and any other dynamic per-frame information) appropriately. Therefore, the first step to making the ``radgyr`` function parallelisable is to add a ``frame_index`` argument."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"def radgyr_per_frame(frame_index, atomgroup, masses, total_mass=None):\n",
" \n",
" # index the trajectory to set it to the frame_index frame\n",
" atomgroup.universe.trajectory[frame_index]\n",
" \n",
" # coordinates change for each frame\n",
" coordinates = atomgroup.positions\n",
" center_of_mass = atomgroup.center_of_mass()\n",
" \n",
" # get squared distance from center\n",
" ri_sq = (coordinates-center_of_mass)**2\n",
" # sum the unweighted positions\n",
" sq = np.sum(ri_sq, axis=1)\n",
" sq_x = np.sum(ri_sq[:,[1,2]], axis=1) # sum over y and z\n",
" sq_y = np.sum(ri_sq[:,[0,2]], axis=1) # sum over x and z\n",
" sq_z = np.sum(ri_sq[:,[0,1]], axis=1) # sum over x and y\n",
" \n",
" # make into array\n",
" sq_rs = np.array([sq, sq_x, sq_y, sq_z])\n",
" \n",
" # weight positions\n",
" rog_sq = np.sum(masses*sq_rs, axis=1)/total_mass\n",
" # square root and return\n",
" return np.sqrt(rog_sq)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parallelization with multiprocessing\n",
"\n",
"The native parallelisation module in Python is called [multiprocessing](https://docs.python.org/3/library/multiprocessing.html#module-multiprocessing). It contains useful tools to build a pool of working cores, map the function into different workers, and gather and order the results from all the workers.\n",
"\n",
"Below we use `Pool` from `multiprocessing` as a context manager. We can define how many cores (or workers) we want to use with `Pool(n_jobs)`. "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"import multiprocessing\n",
"from multiprocessing import Pool\n",
"from functools import partial"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We use `functools.partial` to create a new method by supplying every argument needed for `radgyr_per_frame` *except* `frame_index`. We can do this because the `atomgroup`, `masses` etc. will not change when we iterate the function over each frame, but the `frame_index` will. We create a list of jobs where we use the `worker_pool` to map each `frame_index` to each job."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"run_per_frame = partial(radgyr_per_frame, \n",
" atomgroup=protein,\n",
" masses=protein.masses,\n",
" total_mass=np.sum(protein.masses))\n",
"\n",
"frame_values = np.arange(u.trajectory.n_frames)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"with Pool(n_jobs) as worker_pool:\n",
" result = worker_pool.map(run_per_frame, frame_values)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `result` will be a list of arrays containing the result for each frame.\n",
"Finally the results can be plotted along time."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"result = np.asarray(result).T\n",
"\n",
"labels = ['all', 'x-axis', 'y-axis', 'z-axis']\n",
"for col, label in zip(result, labels):\n",
" plt.plot(col, label=label)\n",
"plt.legend()\n",
"plt.ylabel('Radius of gyration (Å)')\n",
"plt.xlabel('Frame');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parallelization with dask\n",
"\n",
"[Dask](https://docs.dask.org/en/latest/) is a flexible library for parallel computing in Python. It provides advanced parallelism for analytics and has been integrated or utilized in many scientific softwares. It can be scaled from one single computer to a cluster of computers inside a HPC center.\n",
"\n",
"Dask has a dynamic task scheduling system with synchronous (single-threaded), threaded, multiprocessing and distributed schedulers. The wrapping function in dask, `dask.delayed`, mimics for loops and wraps Python code into a Dask graph. This code can then be easily run in parallel, and visualized with `dask.visualize()` to examine if the task is well distributed. The code inside `dask.delayed` is not run immediately on execution, but pushed into a job queue waiting for submission. You can read more on [dask website](https://docs.dask.org/en/latest/delayed.html).\n",
"\n",
"\n",
"Comaring to `multiprocssing`, the downside of `multiprocessing` is that it is mostly focused on single-machine multicore parallelism (without extra manager). It is hard to operate on multimachine conditions. Below are two simple examples to use Dask to achieve the same task as `multiprocessing` does.\n",
"\n",
"The API of `dask` is similar to `multiprocessing`. It also creates a pool of workers for your single machine with the given resources.\n",
"\n",
"Note: The threaded scheduler in Dask (similar to `threading` in Python) should not be used as it will mess up with the state (timestep) of the trajectory."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import dask\n",
"import dask.multiprocessing\n",
"dask.config.set(scheduler='processes')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below is how you can utilize `dask.distributed` module to build a local cluster.\n",
"\n",
"Note: this is not really needed for your laptop/desktop. Using dask.distributed may even slow down the performance, but it provides a diagnostic dashboard that can provide valuable insight on performance and progress.\n",
"\n",
"See limitations here: https://distributed.dask.org/en/latest/limitations.html"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"