{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Writing your own trajectory analysis\n",
"\n",
"We create our own analysis methods for calculating the radius of gyration of a selection of atoms.\n",
"\n",
"This can be done three ways, from least to most flexible:\n",
"\n",
" 1. [Running the analysis directly from a function](#Creating-an-analysis-from-a-function)\n",
" \n",
" 2. [Turning a function into a class](#Transforming-a-function-into-a-class)\n",
" \n",
" 3. [Writing your own class](#Creating-your-own-class)\n",
"\n",
"The building blocks and methods shown here are only suitable for analyses that involve iterating over the trajectory once.\n",
"\n",
"If you implement your own analysis method, please consider [contributing it to the MDAnalysis codebase!](https://www.mdanalysis.org/UserGuide/contributing.html)\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",
"* MDAnalysisTests\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:44.674135Z",
"iopub.status.busy": "2021-05-19T05:45:44.673007Z",
"iopub.status.idle": "2021-05-19T05:45:46.290616Z",
"shell.execute_reply": "2021-05-19T05:45:46.291341Z"
}
},
"outputs": [],
"source": [
"import MDAnalysis as mda\n",
"from MDAnalysis.tests.datafiles import PSF, DCD, DCD2\n",
"from MDAnalysis.analysis.base import (AnalysisBase,\n",
" AnalysisFromFunction,\n",
" analysis_class)\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Radius of gyration\n",
"\n",
"Let's start off by defining a standalone analysis function.\n",
"\n",
"The radius of gyration of a structure measures how compact it is. In [GROMACS](http://manual.gromacs.org/documentation/2019-rc1/reference-manual/analysis/radius-of-gyration.html), it is calculated as follows: \n",
"\n",
"$$ R_g = \\sqrt{\\frac{\\sum_i m_i \\mathbf{r}_i^2}{\\sum_i m_i}}$$\n",
"\n",
"where $m_i$ is the mass of atom $i$ and $\\mathbf{r}_i$ is the position of atom $i$, relative to the center-of-mass of the selection.\n",
"\n",
"The radius of gyration around each axis can also be determined separately. For example, the radius of gyration around the x-axis:\n",
"\n",
"$$ R_{i, x} = \\sqrt{\\frac{\\sum_i m_i [r_{i, y}^2 + r_{i, z}^2]}{\\sum_i m_i}}$$\n",
"\n",
"Below, we define a function that takes an AtomGroup and calculates the radii of gyration. We could write this function to only need the AtomGroup. However, we also add in a `masses` argument and a `total_mass` keyword to avoid recomputing the mass and total mass for each frame."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:46.297926Z",
"iopub.status.busy": "2021-05-19T05:45:46.297404Z",
"iopub.status.idle": "2021-05-19T05:45:46.299247Z",
"shell.execute_reply": "2021-05-19T05:45:46.299751Z"
}
},
"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": [
"## Loading files\n",
"\n",
"The test files we will be working with here feature adenylate kinase (AdK), a phosophotransferase enzyme. (Beckstein *et al.*, 2009)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:46.304382Z",
"iopub.status.busy": "2021-05-19T05:45:46.303729Z",
"iopub.status.idle": "2021-05-19T05:45:46.735057Z",
"shell.execute_reply": "2021-05-19T05:45:46.736379Z"
}
},
"outputs": [],
"source": [
"u = mda.Universe(PSF, DCD)\n",
"protein = u.select_atoms('protein')\n",
"\n",
"u2 = mda.Universe(PSF, DCD2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Creating an analysis from a function\n",
"\n",
"`MDAnalysis.analysis.base.AnalysisFromFunction` can create an analysis from a function that works on AtomGroups. It requires the function itself, the trajectory to operate on, and then the arguments / keyword arguments necessary for the function."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:46.744071Z",
"iopub.status.busy": "2021-05-19T05:45:46.743156Z",
"iopub.status.idle": "2021-05-19T05:45:46.820924Z",
"shell.execute_reply": "2021-05-19T05:45:46.821283Z"
}
},
"outputs": [],
"source": [
"rog = AnalysisFromFunction(radgyr, u.trajectory, \n",
" protein, protein.masses, \n",
" total_mass=np.sum(protein.masses))\n",
"rog.run();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Running the analysis iterates over the trajectory. The output is saved in `rog.results.timeseries`, which has the same number of rows, as frames in the trajectory. You can access the results both at `rog.results.timeseries` and `rog.results['timeseries']`:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:46.827199Z",
"iopub.status.busy": "2021-05-19T05:45:46.826150Z",
"iopub.status.idle": "2021-05-19T05:45:46.829723Z",
"shell.execute_reply": "2021-05-19T05:45:46.830409Z"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(98, 4)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rog.results['timeseries'].shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"gives the same outputs as:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(98, 4)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rog.results.timeseries.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:46.853297Z",
"iopub.status.busy": "2021-05-19T05:45:46.851794Z",
"iopub.status.idle": "2021-05-19T05:45:46.991491Z",
"shell.execute_reply": "2021-05-19T05:45:46.991906Z"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEGCAYAAABlxeIAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3iUVfrw8e+ZlklPJo2EBBJ6r6FJkSAIKlJ0dUXUFQuv3V1XV9d1rT/dhh1dbIgdKzYEROkCQijSIZBCes9kJpPp5/1jIgvSEkgyKedzXVxMnjJzPyHkfp5T7iOklCiKoiiKxt8BKIqiKC2DSgiKoigKoBKCoiiKUkclBEVRFAVQCUFRFEWpo/N3AA0RHR0tk5OT/R2GoihKq7Jt27YyKWXM2Y5rVQkhOTmZ9PR0f4ehKIrSqgghcupznGoyUhRFUQCVEBRFUZQ6KiEoiqIoQCvrQzgVl8tFXl4edrvd36H4hdFoJDExEb1e7+9QFEVp5Vp9QsjLyyM0NJTk5GSEEP4Op1lJKSkvLycvL4+UlBR/h6MoSivX6puM7HY7UVFR7S4ZAAghiIqKardPR4qiNK5WnxCAdpkMftWer11RlMbV6puMFEVRWiopJQeLLWw8XE5sWACjukQRFRJQ73PzKmvZlWdmV34Vd6Z1I8zYtH2FKiE0kV8n0UVHRxMSEoLVavV3SIqinIXN6cbqcCMQCAGRQQa0mpOfwt0eL6sOlPD+z0fZfKScsEAdpmADkUEGQgJ0BAXo0AjYklVBofnEJt3e8WF0MgWi1Qg0QhBs0BEdaiA6JAApIbPMyuESK4eKrVTUOAEwaDVc0i+eQUkRTXr9KiEoitLuHSiq5u0N2Xy5Mx+H23tse4cwI9eO6MQ1w5IwBRvYllPJqgMlfP1LAYVm+7H9DreXihoHlTUuiqrt2JweHC4PAxMj+OPEGMZ0j6Gk2s7GI+VsPFJGdpkNj5R4vJIah5vyGicer2+xsjCjjm6xIUzqHUf/xHAGJkbQo0MIATptk38fVEJoBDNmzCA3Nxe73c69997L3Llz/R2Soii/4fJ4WXeolCU78ll3qBSjXnvsCWBfYTVGvYYrhnSkT0I4SInbK1l9sJTnVh7ipR8zCDJoqba70WsFF3SN5rHL+zKxdyw6bf26YjtGBDK4UyR3pnU7aZ/XKzHXuvBISVSwwW99g20qITzxzV72FVQ36nv2SQjjscv7nvGYhQsXYjKZqK2tZdiwYVx55ZWNGoOiKCdyur2UWOyUWByUVDvIr6olt8JGboWNshontU43tS4PLrdEqxHotIIqmwtzrYvIID2T+3ZAIwRVtU6sDjcPXdKLa4YlERFkOOFz5oxOIausho+2HKXK5iStZyxjukcT2sht+RqNIDLYcPYDm1ibSgj+8tJLL7FkyRIAcnNzycjI8HNEitK2VNtdrDlYyvacSnbkVrG/oBqnx3vCMcEGLUmmIGLDjMSHGQkyaNFpBR4vuL1ejDotF/eNY2z3GAy6+g+wTIkO5uFLezf2JbVIbSohnO1OvimsWbOGH374gU2bNhEUFMT48ePVvABFOU8uj5esshp25ZlZvqeQdYfKcHq8BBm09O8YzpzRyaREBxMbFkBsqJH4cCMmPza1tBVtKiH4g9lsJjIykqCgIA4cOMDmzZv9HZKitDrVdhebjpSzIaOMLVkVZJZZcXl8nazx4UauH9WZS/t3YGBiRL3b7JWGUwnhPE2ZMoUFCxYwYMAAevbsyciRI/0dkqK0Cg63hx/2lfBJei4bDpfh8UqCDFqGJZuY0DuWnnGh9OwQSs+4UDSnGPqpND6VEM5TQEAAy5YtO2l7dnb2sddqDoLSHuwrqOaT9Fy+3VWITiNIMgWSFBlE19gQenUIpVd8GLVOD+nZFWzNrmTVgWIqbS7iw43MHdeF8T1iGNwpskHt+0rjUglBUZRzJqXk+33FzF91mN35ZgxaDZP6xBFo0JJbYWNzZjlf7Mg/6TxTsIEx3WO4amgio7tFn3Lyl9L8VEJQFOWcbDxcxr9XHGRnbhUp0cE8fnkfZgzueNLQTYvdxaFiC/sLLRi0GlKTI0mJDlYdwC2QSgiKojRIrdPD41/v5eP0XBLCjfzryv5cOSTxtJ29oUY9QzubGNrZ1MyRKg2lEoKiKPV2uMTKnR9s51CJhTvTunL3hO4Y9U1fUkFpHiohKIpyRg63h58zK1h1wDciyKjX8s6c4YzrEePv0JRG1uQJQQixEJgKlEgp+9VtGwgsAEKAbGC2lLJxa04oinJesspqWLDmCN/sKsDm9BCg0zChVyyPXd6XDuFGf4enNIHmeEJYBMwH3j1u25vA/VLKtUKIm4AHgL83QyytwoIFCwgKCuKGG27wdyhKO5RRbOGlVYdZuqsAvVbDzMEdubhvHKO6RBNoUM1DbVmTJwQp5TohRPJvNvcE1tW9XgmsQCWEY2677TZ/h6C0Q9V2Fy+szOCdTdkYdRrmjuvKzWNSiAmt34IuSuvnrxkge4Bpda+vApJOd6AQYq4QIl0IkV5aWtoswTXE1q1bGTBgAHa7nZqaGvr27cuePXtOOOabb75hxIgRDB48mIkTJ1JcXAzAPffcw5NPPgnAihUrGDduHF6vl8cff5x58+YBvsJ5ffr0YcCAAVxzzTXNe3FKm2W2uVi5r5iPtx7l7Z+yeH7lISbMW8PbG7P4/bAk1j84gYcu6aWSQTvjr07lm4CXhBCPAl8DztMdKKV8HXgdIDU1VZ7xXZc9BEW7GzFMoEN/uOSfp909bNgwpk2bxiOPPEJtbS3XXXcd/fr1O+GYMWPGsHnzZoQQvPnmm/z73//m2Wef5Z///CfDhg1j7Nix3HPPPXz33XdoNCfm6H/+859kZWUREBBAVVVV416b0m6UWhxsP1rJ9pxKNh4pZ0+BGfmb/01DO0eyaM5w+nUM90+Qit/5JSFIKQ8AFwMIIXoAl/kjjsby6KOPMmzYMIxGIy+99NJJ+/Py8vj9739PYWEhTqeTlJQUAIKCgnjjjTcYN24czz//PF27dj3p3AEDBjB79mxmzJjBjBkzmvxalLbjQFE1S7bns2xPEUcrbADotYJBSRHce1F3LugaTWJkIIF6LYEGrRo+qvgnIQghYqWUJUIIDfAIvhFH5+8Md/JNqaKiAqvVisvlwm6388wzz7B06VIAdu7cyd133819993HtGnTWLNmDY8//vixc3fv3k1UVBQFBQWnfO+lS5eybt06vv76a5566in27t2LTqdGCyu+EtEHiyxkltWQWWqluNpOrdOD3eUlu7yGA0UWdBrB2O7RXD+yM0M6R9A3IVz94ldOqzmGnX4EjAeihRB5wGNAiBDizrpDvgDebuo4mtLcuXN56qmnyMrK4sEHH2T+/Pk8/fTTx/abzWY6duwIwDvvvHNse05ODs8++yw7duzg0ksvZcaMGYwYMeLYfq/XS25uLmlpaYwZM4YPP/wQq9VKRETTLrSttHxHSq3c9t42Mkp8hROFgOiQAAL1Wox6DZFBBh6/vA+XD0wgKkT1Ayj10xyjjGadZteLTf3ZzeHdd99Fp9Nx7bXX4vF4uOCCC1i1ahUTJkw4dszjjz/OVVddRceOHRk5ciRZWVlIKbn55puZN28eCQkJvPXWW9x4441s3br12Hkej4frrrsOs9mMlJI//elPKhkorNhbxJ8/+QWDTsO8qwbSv2M4naOC1J2/ct6E/G3PUguWmpoq09PTT9i2f/9+evduH8vbnY76HrQPtU4PL/xwiNfWZTIwMZxXrxtKx4hAf4eltAJCiG1SytSzHacaoxWlFVi5r5jHv95LflUts4Z34rHL+6gnAqXRqYSgKC2Uzenmh/0lfJqey/qMMnrEhfDx3JGM6BLl79CUNkolBEVpAfYWmHnq2324PZKgAB0C2JJVQa3LQ1xYAA9f2os5o1PQq/WElSakEoKi+NmOo5X8YeEWAvRausWEYK514XB5uHJoRy4fkMCwZJNaU1hpFiohKIofbc4s5+ZFW4kODeCDW0aQGBnk75CUdkwlBEVpRlJKcsptbM2uID27kq9+yScxMogPbhlBXJgqKa34l0oILdCjjz7KuHHjmDhxor9DURrR7jwzTy3dx5asCgDCA/Vc1CuOJ6b3JVpNHlNaAJUQWqBfK6AqbUN+VS3PfX+IL3bkYQoy8MhlvbmwRwxdY0JU34DSoqghC+fp73//Oy+++L9J13/7299OKnD3xhtvMGzYMAYOHMiVV16JzeYrNDZ9+nTefde3btBrr73G7NmzAbjxxhv57LPPAHjooYeOlb++//77m+OSlEYgpWRzZjm3v7+Ncf9ezTe/FDB3XBdWPzCeW8Z2oXtcqEoGSovTpp4Q/rXlXxyoONCo79nL1IsHhz942v0333wzV1xxBffeey9er5fFixezZcuWE4654ooruPXWWwF45JFHeOutt7j77rt5/fXXGT16NCkpKTz77LNs3rz5hPMqKipYsmQJBw4cQAihyl+3YKUWB1uyKthTYOZgkYX9hdUUmu1EBOm5ZWwKN4xKVrOKlRavTSUEf0hOTiYqKoodO3ZQXFzM4MGDiYo6ceLQnj17eOSRR6iqqsJqtTJ58mQA4uLiePLJJ0lLS2PJkiWYTKYTzgsLC8NoNHLLLbdw2WWXMXXq1Ga7LuXsKmqcvLr6MGsPlR4rMqfXCrrGhDA8xcTortFcPjBBLTuptBptKiGc6U6+Kd1yyy0sWrSIoqIibrrpJubMmcOOHTtISEjgu+++48Ybb+TLL79k4MCBLFq0iDVr1hw790zlr3U6HVu2bOHHH39k8eLFzJ8/n1WrVjXjlSmn4vVKPk7P5V/LD2C1uxndLZorhiQyqmsUfeLDMOhUS6zSOrWphOAvM2fO5NFHH8XlcvHhhx9y6aWXnrDfYrEQHx+Py+Xigw8+OFYKe8uWLSxbtowdO3Zw4YUXcvHFFx9bPAfAarVis9m49NJLGTlyJN26dWvW61JOlF9Vy+oDJXy2LY+duVUMTzHx9Ix+dI8L9XdoitIoVEJoBAaDgbS0NCIiItBqT24eeOqppxgxYgSdO3emf//+WCwWHA4Ht956K2+//TYJCQk8++yz3HTTTSc8AVgsFqZPn47dbkdKyfPPP9+cl6Xgqyf0ydZcPtqSy8FiCwBJpkDmXTWQK4d0RAjVMay0Har8dSPwer0MGTKETz/9lO7duzf757eE70FbY7a5eOunLN7dlE2VzcXgThFc2i+etF6+4aIqESitiSp/3Uz27dvH1KlTmTlzpl+SgdK43B4vH23N5bnvD1JpczGxdxy3XdiF1GTT2U9WlFZOJYTz1KdPHzIzM/0dhnKOXB4vOeU2cits5JTXsHhrLgeKLIzsYuLRqX3pkxDm7xAVpdk0x5rKC4GpQImUsl/dtkHAAsAIuIE7pJRbTv8uitK4jpRaWbzlKJ9vz6eixnlse5IpkP/OHsKUfh1Us5DS7jTHE8IiYD7w7nHb/g08IaVcJoS4tO7r8c0Qi9KOOdwelu8p4sOfj/JzVgU6jWBSnzgm9Ymjc1QwnUxBRIcYVCJQ2q0mTwhSynVCiOTfbgZ+fRYPB04ehK8ojaTa7uLV1Uf4eOtRKm0uOpmC+MuUnlw1NImYUFVUTlF+5a8+hD8CK4QQ8/DVU7rgdAcKIeYCcwE6derUPNEpbYKUku92F/HEN3sptTqY0rcD147oxOiu0aqOkKKcgr8Swu3An6SUnwshrgbeAk5Z61lK+TrwOviGnTZfiP6Rnp7Ou+++e1KBPKV+Kmuc7CusZn9hNWsOlrLhcBl9E8J444ZUBiZF+Ds8RWnRGpQQhBCRQAJQC2RLKb3n+Ll/AO6te/0p8OY5vk+bk5qaSmrqWYcLK8eRUrLhcBkLN2Sx+mDpse1xYQH8fWof/jCqMzq1FrGinNVZ/5cIIcKFEA8LIXYDm4HXgE+AHCHEp0KItHP43ALgwrrXE4CMc3iPFmHBggUMGjSIQYMGkZKSQlraid+O7Oxsxo4dy5AhQxgyZAgbN24EYMmSJUycOBEpJYWFhfTo0YOioiLWrFlzrIjd2rVrj7334MGDsVgszX59LZnd5eHjrUeZ8sJ6rn9rC7vzq7lnQjfev3kE2x6ZyM8PT+TmMSkqGShKPdXnCeEzfCOExkopT6i/LIRIBa4TQnSRUr51qpOFEB/hG0EULYTIAx4DbgVeFELoADt1fQTnq+iZZ3Dsb9zy1wG9e9Hh4YdPu/+2227jtttuw+VyMWHCBO67774T9sfGxrJy5UqMRiMZGRnMmjWL9PR0Zs6cyeeff84rr7zC8uXLeeKJJ+jQoQMHDvwv/nnz5vHKK68wevRorFYrRqNaYtHp9nKk1MryPUW8vzmH8honvTqE8p/fDWDaoAQCdKqyqKKcq7MmBCnlpDPsSwfST7e/7phZp9k19Gyf3Zrce++9TJgwgcsvv/yE7S6Xi7vuuoudO3ei1Wo5dOjQsX0vv/wy/fr1Y+TIkcyadfK3afTo0dx3333Mnj2bK664gsTExCa/jpaoyubkv2uPsPpACZmlNbi9vq6ki3rFcvOYFEZ1jVJDRRWlEZxTp7IQoiNwLTBbSjmocUM6d2e6k29KixYtIicnh/nz57NkyRKeeOIJAN58802+/fZb4uLi+OWXX/B6vSfc5efn56PRaCguLsbr9aLRnNi08dBDD3HZZZfx3XffMXLkSH744Qd69erVrNfmTw63h3c35jB/9WGq7S4u7BHDpD5x9IgLZUinSJJMQf4OUVHalHonBCFEOPA74DpgJPAv4MamCav12LZtG/PmzWP9+vVoNBpmzpzJzJkzj+3/4IMPSExMRKPR8M477+DxeABwu93MmTOHDz/8kHfffZfnnnvupCUyjxw5Qv/+/enfvz+bNm3iwIED7SIh5FXa+GRrLh+n51Jc7WBcjxj+ekkveserMhJK++SpqkITFobQNG1/2GkTghDir/g6fI/imzw2GPgKeAhYLKV8vEkjayXmz59PRUXFsc7k1NRU3nzzf4Om7rjjDq688ko+/fRT0tLSCA4OBuCZZ55h7NixjB07lkGDBjFs2DAuu+yyE977hRdeYPXq1Wi1Wvr06cMll1zSfBfmB9tyKnhl9RFWHywB4MIeMcy7KoWx3WP8HJminJr0enEVFCL0OjQBAYjAQITBN9tdSonjwAGsGzZg27qVgJQUwqdPJ6B37zM2cUopcRw6RM1PG7Hv2U3t7j24cnPpsvRbArp2bdLrOW35ayHEL8AlQB6wDrhdSrm/bl+mlLJLk0Z2Ci21/LW/tebvgZSSn7MqeHlVBj8dLicq2MDsEZ24elgSiZGqSUhpPtLlombjRrw2G5qwMLRh4QR0SUFTdxN3PI/FgnnJEio/+BBnTs6JO4XwJQYh8NbUAGDo0gVXbi7S5SKge3cCevRAulxIlwthMKCLjkYXE42nshLLj6tw5eUBoE9IwNivH8b+/QifNh19XOw5XVtjlL9+GHgBmAOEAG8JIQzA4rOcpyhnlVNew5Id+Xy5I5/schvRIQE8cllvrh3RiSCD+vFSGs5dWYl9z168NhsBXVIwdO6MMBhOPKa0FMsPP2BL34Y+KRFjnz4YOnXC8sOPVH3yCe6SkhOO14SEEHHlFUTOno0uJoaan37CsnIl1St/QNpsBA4aRNwN1yN0eqTDjrfW7vvbVot0uTD260fw6AvQx8biqaqievlyzN98i33PHoRBD3o90u6gZvNmvGYzQq8n+IILiJp7KyHjx6OPPbcEcK4atECOEKIrMBtfh3IpsERK+VwTxXYS9YRwaq3pe7An38xLP2bw/b5ihIBRXaKYMbgjlw9Qi9ErJ5Ner6/5ZNNmbOnpeCoq8NbU4LXZQKtBExiEJjAQd0kJrvz8E0/WatHHx6MNC0MTFoasraV21y6QEl1MDO6KCqjr00MIgseMIXLWNegTE/FWV+OurMSyfAXVK1aAx4MICEDa7WjDwwmZNJHIa2YR2K9vo12r1+EAKdE0wfDyJlkgR0p5BHgSeFIIMQJfYvA7KWW7HXbY0le8q6xxklFi5VCxhdUHSvjxQAlhRh33XNSdWcOTiA8P9HeISgvjLiuj5qefsG74iZqffsJTUQGAoXNndAnx6KNMaAKDwOvFW1uLt9aGsX9/Iq+dhbFvPzShITgzM3EcOYIrLx+vxYLHYgGNhui77iTs4osxdOuGdDpxHDqE4/ARgoYOwXCKWmlhkyYR+5e/UPXJJ3iqqwmdkEZQaipCr2/069YE+L/Q4lmfEIQQyVLK7DPsF0BHKWVeI8d2klM9IWRlZREaGkpUVPsbiy6lpLy8HIvFQkpKir/DOcHO3Cr+vfwAG4+UH9tmCjYw54Jk/jA6mTBj4/+HUlonj7UG69o12LZuxZaejvPwEQC0JhPBo0cTPGoUwaNGoo+P93OkrVdjPiH8RwihwTfCaBu+piIj0A3fDOSJ+GYfN3lCOJXExETy8vIoLS09+8FtkNFobDET1qSU7M438+rqIyzfW0RUsIE/T+rBgKQIuseGEB9ubHdJuz2SXq+vY/Us/9busjIq3nufyo8+wltdjSY4mMAhQwifNp3g0Rdg7N27yYdZKieqz0zlq4QQffD1HdwExAM2YD/wHfCMlNLepFGegV6vb3F3x+3NgaJqluzIZ9nuIo5W2AgJ0HHfpB7cNCaFkADVQdweeKqrsa5di+X7lVg3bACPB63JhNYUiS4iEm1EBNqICKT04qmoxFNRQe2uXUink9BJkzD94QYCBw5E6NTPiz/V67svpdwH/K2JY1FamZ25VcxflcEP+0vQaQSju0VzV1o3JvftQHiQahJqD7y1tZS9/joVby1EOp3oYmMJnz4NTVAwnooK3JUVeKqqcObn4akyIwBtVBRaUyThV8zEdP0NBHRRN3QthUrHSoN4vJJVB0p4Z2M2Gw6XERGk575JPbh+ZGcigw1nfwOlTZBSYlnxPcX//hfugkLCLrsM0/XXYRwwQDXztGIqIShnZXO62ZNfzc+Z5Szemkt+VS0dwow8OKUX14/qrJqF2hnpdFL4xBOYP/+CgF696PjvfxOk1vBoE9T/ZOWUiqvtfL49j29+KeRgUTV1BUYZ1SWKRy7rzcQ+cejVOgPtjruigrx77qE2fRtRt99GzJ13qnb/NqShK6Z1BDoff56Ucl1jB6X4R26FjQ2Hy1ixt4h1h0rxShiWHMldE7ozKCmcAYkRRIf4f6y00vzclZXUrF9P6Ysv4S4ro+NzzxJ26aX+DktpZA2pdvov4PfAPqBueh8SX50jpRVxur2sPVTKL7lVlFkdlFmdHCm1klXmq7vSMSKQO8Z343dDE0mOPrmOi9I+eG02qpYsofqbb6n95ReQEn1CAp3ff4/A/v39HZ7SBBryhDAD6CmldDRVMErTqXV62JFbybLdRXy7q4BKmwutRmAKNhAVbKBrTDDXj+zMuB7RdI0JUfMF2jF3aSkV739A5eLFeM1mAnr3JvqOOwgZfyHGvn1Vp3Eb1pCEkAnoAZUQWjivV5JTYWN3vpndeVWk51SyJ9+MyyMJ0Gm4uG8HrhjckTHdo1U/gHKMu7KS8jffpPKDD5EOB6ETL8I05yaChgz2d2hKM2lIQrABO4UQP3JcUpBS3tPoUSnnpKCqlvc35/Dx1lzKa5wAGLQa+ieGc/OYLgxPiWRYsolQVTZCAVzFxTgOHsR5NBdn5hHMX32N12YjbOpUYu68A0Nysr9DVJpZQxLC13V/GkQIsRCYCpRIKfvVbfsY6Fl3SARQ1ZKW4mxt9hVUM391Biv2FiOl5KLecVzUK5b+ieH0iAtVTwHKCRwZGZT9dwHVy5eD1wuACAwkZMwYou++C2OPHn6OUPGXeicEKeU7desh/PrTclBK6arHqYuA+cC7x73X7399LYR4FjDXNw7lfzJLrTy38hDf7iok1KjjlrEpXDeis1prWDmJlJLa7dupWPQOlpUr0QQFEXXTHEImTMCQlIQ2Olr1GykNGmU0HngHyAYEkCSE+MPZhp1KKdcJIZJP854CuBrfUp3KadhdHg4VW9idb+ZAoYXs8hqyymrIr6olUK/lrrRu3Dq2iyoXoZzEW1tL9dKlVHzwIY79+9GEhRF9x+1EXn89ushIf4entDANaTJ6FrhYSnkQQAjRA/gIGHoenz8WKJZSZpzuACHEXGAuQKdT1Ctvi7xeX9XQtYdKjw0PddfNDAsN0JESE8yQTpFcMyyJa4Z3UnMDlBNIjwdHRgZVn3yK+Ztv8FosBHTvTocnnyD88svRBKo1KJRTa0hC0P+aDACklIeEEOd7SzoLX1I5LSnl68Dr4FsP4Tw/r8XyeiU7civ55pdClu4upNTiQAgY0DGcW8Z2YUBiOP07hpMYGage7RWk14v5y6+o2bgRT2Wl709VFR6LBa/VClIiDAZCJ08m8uqrCExNVT83ylk1JCGkCyHeAt6r+3o2vvURzokQQgdcwfk9YbRqUkp25Zn5dlcBS3cVUmC2E6DTMKFXLFP6dWBs9xhMqmCc8huOzEyKHn0MW3o6uvh4dLExaGOiCejeDU1YONrQUHRxcYRePEk1CykN0pCEcDtwJ3APvj6EdcCr5/HZE4EDzbHSmr94vZLMMiuHiq3UOj24PF5qXR5yym0cKbWSUWylqNqOXisY1z2GB6b0ZFKfDqpYnHJK3poayt9aSPkbbyCCgoh/+v8Iv+IKdeevNJqGjDJyAM/V/ak3IcRH+FZWixZC5AGPSSnfAq7hLM1FrVFBVS3f7ipg1YES9uRXY3W4TzomyKClS0www1NMjOkezeQ+av0A5fSkx4N5yRJfHaHSUsKmTiXurw+hi4ryd2hKG3PWhCCE+ERKebUQYje+2kUnkFIOONP5UspZp9l+Y32DbEmqbE4KzXZcHi8uj8Rc66Sgyk5BVS3pOZVsyfItCN4nPoyZgzsyIDGc3vFhhBp16LUaAnQaTMEGdVennJV0u6letpyy1xbgPHyEwMGD6fjSiwQNVjOHlaZRnyeEe+v+ntqUgbQUUkryKms5XGqlkymILtHBCCEoMttZsPYIH205isPtPek8nUbQJSaY+yb1YNrABFUUTmkQr92O+cuvkE4HQq/HW2uncvFiXETos+8AACAASURBVEePYujWlY4vvEDo5IvVjYTSpOqzpnJh3cs7pJQPHr+vrgLqgyef1fJlldXw4g+HWLmvmFCjHlOwgUCDloxiC9X2/zXzRAbp6dUhjG05lXik5IrBHUnrFYtBq0GnFYQa9XSMCCQmNACtRv1nVRrOW1ND7h13Yvv55xO2G/v2Jfbllwi96CJVUE5pFg3pvZzEyb/8LznFthbncImF4moHtU4PtS4PGzLK+Gx7HnqtYNrABKSEihonVoebqQMT6JsQRreYELLLa9iWU8nu/GquHNqR2y/sRqcoNQtYaTye6mpy5/4/anfvJuFf/yTkwguRLhfS60UXG6ueCJRmVZ8+hNuBO4AuQohdx+0KBX5qqsAa039WHGTF3uJjXxu0Gq4f2Zk70roSG2o87XkjukTx+2HtYzKc0ryklNj37KXoscewZ2TQ8YXnCZs0yd9hKe1cfZ4QPgSWAf8AHjpuu0VKWdEkUTWyP07swU2jUwg0aDHqtcSGBhARpMb3K83PkZVF1WefYVm+Ald+PiIwkKRX5hMybpy/Q1OUevUhmPEVn5sFIISIBYxAiBAiREp5tGlDPH+948P8HYLSzjkyMihb8BrVy5aBRkPwBaOIvuMOQi+agDYiwt/hKefI5XFRWFNIfHA8em3rHzrekOJ2l+Obg5AAlOBbW3k/0LdpQlOU1s1bW4vlx1WYv/6KmnXrEXUVRk033oguOtrf4Sm/kWvJZUX2CmrdtYTqQwk1hNLT1JO+UX1P6Mspry1nXd461uevZ2PBRmpcNWiFlsTQRFLCU+gZ2ZPept4khydzsOIgPxf9zPbi7QCYjCaiAqPoHtGdUQmj6BfdD53m9L+Gi2uK2VS4iU0Fm3hk5COEGkKb9HvQkE7l/wNGAj9IKQcLIdKoe2pQFMVHulzUbNpE9XfLsKxcibemBl18vKow2sLYXDYKawopqikiuzqb77O/Z3uJ75e2QCCPm3KVGJLIJSmXEGoIZXXuanaW7EQiiQ2MZUryFPpH96egpoAscxZHqo6wLm8dXvm/oemhhlCGxg0lQBtAeW05GZUZ/JDzA6/+8ioh+hB6RPYgIiCC8IBwDFoDFqcFq8tKniWPTHMmAFHGKI5ajtI3qmnvvxuSEFxSynIhhEYIoZFSrq4bdqoo7Zp0uajZsgXL8hVYVq7EU1WFJjSU0CmTCZ82naBhqWrYaCOTUlJiKyGrOotsczZWlxWt0KIRGgK0AYQYQgjRhxBpjCQ5LJnwgHA8Xg8b8jfw6aFPWZ+//oRf2inhKdw75F6mdplKbFAsNpcNs9PMlsItLM9ezsI9C/FID71Nvbl94O2MTxpPL1OvU44Cs7vtZFRmkFWdRdfwrvQy9UKr0Z5wTJW9ii1FW9hUuIlscza51lz2lO3B5XUdiz0xNJGZ3WYyKmEUPSJ7NMuIMyFl/QqICiF+AGbg61yOxtdsNExKeUHThXei1NRUmZ6e3lwfpyhn5K6spPSll7AsW+5LAkFBhKSlEXbZZQSPGY3GoAYuNCYpJb+U/sLSzKV8n/M9Ffb6j2mJCIhAK7SU28uJDozm8q6X0zOyJx2COxAfHE98cPwZf+FW2itxepzEBcc1xqU0OyHENill6tmOa8gTwnSgFvgTvkqn4cCT5xaeorRuNRs3UvDQX3FXVhI2eTJhUyYTPGYMGuPphzErDefyuNhavJW1uWtZnbuawppCArQBXJh4IcM6DCMlPOXYE4BXevFIDw6PA6vTitVlpay2jJzqHHKqc7A6rVycfDEXJl2IXtOwDuBIY/to6qtXQhBCaIGvpJQTAS++ldMUpV2RUuLMyqbyo4+ofO89DF26kPzfVwnsq8ZVNAar08rO0p3sLt1NVnUWOdU5ZJmzqHXXYtQaGRk/krsH382EThMI1p++NEwooUQHqk77c1GvhCCl9AghbEKI8LphqIrSLnjMZmxbt1KzcRPW9etx5eYCEHnttcQ+cL9afew8mB1mthVvI704nW3F2zhQcQCv9CIQJIQkkByWzODugxkZP5IR8SMI1KnvdVNrSJORHdgthFgJ1Py6UUp5T6NHpSh+JJ1Oqr74gqpPP8O+b59v9bHAQIJHjiTqpjkEjx2HIbGjv8NscWwuG+vz17Mmdw02lw2D1oBBa6BDcAd6Rvakp6knZoeZ9fnrWZ+3nn3l+5BIDBoDA2IGcGv/WxkaN5SBMQMJ0qsSMf7QkISwtO6PorQ5Ukq8NTYs339P2Suv4MrPx9i3L9F33knwyBEEDhiAUJ3EJ5FS8nPRz3x+6HPW5q2l1l17bKy9y+PC4XFQYivBIz3HztEIDQOiB3D7oNsZFjeM/jH9CdCqdcFbgoYkhHLgOynlybWfFaWVkVJi27KVinfewb5nD56qKqTTCfiqjHZ4/DGCx4xRxeVOw+Fx8EXGFyw+sJhMcyYRARFM6zqNycmTGRI75IRhlg6Pg8NVhzlYcRCj1sgFCRcQYVSzs1uihiSEa4AXhRCfA29LKfc3UUyK0mS8TieWFSuoeHsR9n370JpMhFx4IbooE9rISAK6dyd47FiVCM5gV+ku/v7T38k0Z9Ivqh9Pj3maycmTT3uXH6ANoG9U3yafVKWcv4YsoXmdECIM3+zkt4UQEngb+EhKaWmqABWlMbjy86n8+BOqPvsMT0UFhpQUOjz5BOHTpqmhovXg8rjIs+ax5PAS3tn7DjGBMbx60auMTRzr79CURtSg1dyllNV1TwiBwB+BmcADQoiXpJQvN0WAinI+pNtN+VsLKZ0/HzweQiakEXnNLIIvGKVmD59Fhb2CN3a9cWz8/68ze6/sfiV/Tv1zk9fVUZpfQ4vb3QR0Bd4DhkspS4QQQfiK3J0yIQghFuJbfrNEStnvuO13A3cBbmCplPIv53wVinIKjsOHKfjrw9h37yb0kinEPfAA+oQEf4fV4tlcNt7f/z4L9yyk1l1LWlIal3e9nKTQpGOjhZS2qSFPCFcBz0sp1x2/UUppE0LcdIbzFgHzgXd/3VBXGG86MEBK6agrqa0o582Zm4t19Wosq1Zj27oVbWgoHZ9/jrBLLvF3aC2elJJlWct4dtuzlNhKSEtK449D/kiXiC7+Dk1pJg3pQ7jhDPt+PMO+dUKI5N9svh34p5TSUXdMSX3jUJTfcublUb1sGdXLluHY5xvrENC9G1E334zphutVqenfkFKSZ8ljT/kenB4nRp0RjdDw/r732V6ynd6m3vxn3H8YEjfE36EqzawhTUYW4LeV8MxAOvBnKWVmAz63BzBWCPE0vglv90spt57mc+cCcwE6dVLLWSo+UkpsP/9M+ZtvUbNhAwDGAQOI/ctfCJ14EQb1s4LH6+GbzG9YkrEEAL1Wj0BwqPLQKQvDRQZE8tiox5jZbeZJ1TmV9qEhTUbPAQX4ltQU+IahdgAOAguB8Q383Eh86ysMAz4RQnSRpyi9KqV8HXgdfNVOG/AZShvkrqzE+uOPVC7+GPuePWijo4m59x7CLr8cQ2Kiv8NrVlanlWJbMTFBMYTqQxFC4JVeLE4LW4q2MH/HfDLNmXQN70pUYBQOtwOP9DCm4xgGxgxkQMwAgvXBONwOHB4HncM6E2II8fdlKX7UkIQwRUo54rivXxdCbJZSPimEeLiBn5sHfFGXALYIIbz4SmqXNvB9lHbCsno1le+9R83PW8DjwZCcTIcnniB8xnQ0Ae1rlqvb6+bTQ5/yys5XMDt8pcUCdYEE6YKoclQdmxWcEp7Cc+OfY2KniWpehVIvDUkIXiHE1cBndV//7rh9Db1z/xKYAKwRQvQADEBZA99DaQek10vpyy9T/t8F6JOSiLrlFsImX0xA797t8pfc5sLN/GvLvzhcdZgR8SOY3nU6FfYKimqKjpWNMBlNdAzpyNjEsWdcnlFRfqshPy2zgReBV/ElgM3AdUKIQHzDR09JCPERvuakaCFEHvAYviamhUKIPYAT+MOpmouU9s1jtVLwwF+wrl5N+JVX0OGxx9rtojNFNUXMS5/HiuwVJIYk8mLai6QlpbXLpKg0nYaMMsoELj/N7g1nOO906y5fV9/PVtoX6XRS9eWXlC94DVdxMXGPPELk7Gvb/C8/KSWltaXkWnLJt+ZjdVpxepyU28v5+ODHeKWXOwfdyZx+c1QxOKVJqOdJpcWQUlL1yaeULViAu7AQY//+JPzrnwQNG+bv0Jrct5nf8szPz2BxnroKzPjE8fxl+F9ICk1q5siU9kQlBKVF8FhrKHz4YSzff0/g4MHEP/kkwWNGt/mnArfXzXPbnuO9fe8xJHYIU1Km0Cm0E4mhiYQaQjFqjRi0BtUXoDSLs/6UCSHulVK+KIQYLaX8qTmCUtoXR2YWeXffjTMri9gHHsB005w2mwjyLHlsKdqCy+PCLd38ePRHthZtZXbv2fw59c8NXutXURpTfW475uDrTH4ZUFMXlUbjyMyi8oMPqFqyBE1AAJ0WvkXwyJH+DqtJZJuzeWP3GyzNXHrCYjGBukCeHvM007pO82N0iuJTn4SwXwiRDcQIIXYdt10AUko5oEkiU9os+8FDlPznP74Zxno9YZdMIfaPf2xTheeklGRUZbCpYBMbCzayuXAzBo2BWb1mcXXPqwk1hKLX6AnUBWLQts+RU0rLc9aEIKWcJYToAKwA1G2Mcs6k00nZG29QtuA1tCEhRN9zN5FXX90qaw15vB7W5K7hi8NfYHVaARBCYHPZqLBXUGmvxOn1rcDWJbwLN/W7idm9ZxMd2PquVWk/6tVTJaUsAgYKIQz46hABHJRSuposMqXNcJeWYl2/gYp33sFx8CBhl11G3N8eRmcy+Tu0BnF5XWRUZrClcAuLDy4m35pPfHA8nUI7IZF4pZfYoFh6RPbAZDSREp7CqIRRdAju4O/QFaVeGlLc7kJ8Jayz8TUXJQkh/vDbctiKAiA9Hqq++ILKjz46VoFUn5BA4ivzCb3oIj9HV382l42vjnzF0syl7C/ff+yuf0jsEO5PvZ/xSePVCCClzWhocbuLpZQHAepKTnwEDG2KwJTWy7ZjB8X/9zT2vXsx9u1LzJ/+RMi4sQT06tVqRg9V2Ct4c/ebLMlYgtVlpbepN7N6zaJvdF/6RfdT8wGUNqkhCUH/azIAkFIeEkKoMXIK4OsfsKxdi/nLr7D++CO62FgS5s0j7LJLW00S+FW2OZvbfriN4ppiJnWexOw+sxkYM9DfYSlKk2tIQkgXQryFb/lM8NU22tb4ISmtidfhoOyVV6n6+GM8ZjPa6Giibr+N6FtuQRMc7O/wGmxnyU7uXnU3GqHh3UvepX9Mf3+HpCjNpiEJ4XbgTuAefH0I6/AVulPaKfuBAxQ88BccGRmETp5MxJVXEHzBBQhd62lTtzqtHKg4wFHLUTKrMll8cDFxQXEsmLiApDDVLKS0Lw0pbufA14/wXNOFo7QG0uWifNEiyl56GU1EOElvvE7I2LH+DqveXF4XP+X/xDdHvmFN7ppjHcU6jY7hHYbzj7H/wGRsXSOgFKUxtJ5bOaVFqPl5C8X/9xSOjMOETppIhyefRBcZ6e+wzsrlcbG5cDMrc1ayKncVZoeZyIBIftfjd4xNHEvnsM7EB8erEUNKu6Z++pWzklJSu2MHle+/T/V3y9B37Ejiq68QktY66vGvyV3D4xsfp9xeTog+hPFJ45mSPIULOl6gagcpynHOKSEIITRAiJSyupHjUVoQj9VK5YcfYf7iC5zZ2YigIKLvuJ2ouXPRGI3+Du+sbC4b89Ln8emhT+kZ2ZMnLniCUQmjVKkIRTmNhkxM+xC4DfDgG10ULoR4Tkr5n6YKTvEP6XZT9emnlL48H09FBUGpqUTdeithUya36JFDLo+LtXlryTRnklOdw7bibRRYC5jTdw53Db5LJQJFOYuGPCH0kVJWCyFmA98BD+JLDCohtBGeqiqql6+g4r33cB45QlBqKrGvvUZg/37+Du2sdpbs5IlNT3C46jAAsUGxpISn8OQFTzI8frifo1OU1qFBE9PqJqLNAOZLKV1CCLUOcivlKijAvm8f7ooKPBWV2PfuwbpmLdLlIqB7dxLnv0zIRRe1+D4Cm8vGi9tf5KMDHxEXHMeLaS8yMn4kQfogf4emKK1OQxLCa/jqGP0CrBNCdAbO2ocghFgITAVKpJT96rY9DtwKlNYd9rCU8rsGxKKcA2dePpaVK6levgz7L7tO2KeLiSHy2lmETZuGsU+fFp8IAHaX7ubB9Q+SZ8nj2t7XcvfguwnWt9wmLUVp6RoyD+El4KXjNuUIIdLqceoiYD6+wnjHe15KOa++n680nNfhoHb7dqzr1mNdtw7nkSMAGPv0Iea++wgeNQpddBRakwlNQOtZtN3tdbNo7yJe2fEK0UHRLJy8kNQOqf4OS1FavYZ0Kj96ml1Pnuk8KeU6IURyA2JSzoO7spLqr7/Gum49tvR0pMOB0OsJGjaMiKt+R2haGobOnf0dZoOU2kpZuGch20u2U2orpdxejld6mZw8mb+P/DvhAeH+DlFR2oSGNBnVHPfaiK8ZaP95fPZdQogbgHTgz1LKylMdJISYC8wF6NSp03l8XNtWu3MnFR9+iGX5CqTTiaFrVyKuvprgC0YRPHx4ix4ddDpltWW8vedtPj74MW6vm+EdhtMzsicxQTH0jepLWlLrmAehKK2FkPLc+oWFEAHA11LKyfU4Nhn49rg+hDigDJDAU0C8lPKms71PamqqTE9PP6d42yr7oUOUzJtHzbr1aIKDCZ8+nchZ1xDQvbu/Qztne8v38uH+D1mWtQyP9DC1y1RuG3Cbqi2kKOdICLFNSnnWdtXzmakcBHQ5lxOllMW/vhZCvAF8ex5xtCsesxnn0VxceblYN2zAvORLNMHBxD5wP5HXXNMqnwQAKu2VrMhewTdHvmFX2S4CdYFc0f0Krut9Hcnhyf4OT1HahYb0IezGd0cPoAViOEv/wRneK15KWVj35Uxgz7m8T3sgPR5qd+7EumYN1jVrcGQc/t9OvR7T9dcRddttraKe0KkcqTrCS9tfYl3eOtzSTbeIbjw47EGmd5tOqCHU3+EpSrvSkCeEqce9dgPFUkr32U4SQnwEjAeihRB5wGPAeCHEIHwJJhv4fw2Io13wmM1UffYZFR98gLugEHQ6goalEjNtGgEpKeiTkjAkJaEJap3j7W0uGwt2LeC9ve8RqA/k+j7Xc1mXy+hp6unv0BSl3TprQhBChNXVLLL8ZleYEAIpZcWZzpdSzjrF5rcaEGO74rFYKJv/CpWffIKsrSVo2DDi7r+f4HHj0IaE+Du88+KVXvaW7WVV7iq+PvI1JbYSZnSbwZ+G/kmVm1aUFqA+Twgf4ns62Ibvjv74YR2Sc+xHUE4kpcT81VeUzHsWT3k54dOmYbrxDxh79/Z3aOdsZ8lOVh1dRUltCWW2Mo6Yj1BWW4ZWaEntkMq8C+cxOHawv8NUFKXOWROClHJq3d8pTR9O+yPdbiw//Ej5woXYd+3COHAASf/9b6uoH3Q6uZZcnt/2PCtzVmLQGIgJiiE6MJphHYYxtuNYxiWOU3MHFKUFqk+T0ZAz7ZdSbm+8cNo+r9OJKzcXZ04OjoMHqfr0M1wFBeiTkoh/+v8InzkTodH4O8xzUmAt4J297/DpoU/RaXTcMfAO/tD3D6qukKK0EvVpMnq27m8jkIqvlpEABgA/A2OaJrS2QTqdOLKzqVm/Aev69di2bQOX69j+wNShxD38V99iM1qtHyM9d4cqD7FozyKWZS0DYFq3adw56E5ig2L9HJmiKA1RnyajNAAhxGJgrpRyd93X/YD7mza81sdrs1H5ySdYli3HVVCAu6wM6ib/BXTvjun66zH26omhc2cMnTujjYjwc8Tnxulx8n3O93xy8BN2lOwgUBfINb2u4YY+NxAfEu/v8BRFOQcNGXba69dkACCl3FM3dLRdkVLiLiigdvduanftxmurwZCUhD4pCWd2DhWLFuGpqMA4YADB48aij09A37EjwSOGo09I8Hf450xKSbm9nE0Fm1iXt46fCn7C4rTQKbQT96fez/Su04kwts7kpiiKT0MSwn4hxJvA+/hGF13H+dUyalWkx0P10qWU/XcBzqwsAITBgAgMxGs2HzsueMwYou+4naAhZ+x6afHMDjPLs5azKncVBdYCim3F1LprAYgyRjGx00SmpExhZPxINKJ19nkoinKihiSEOcDtwL11X68D/tvoEfmZlBLb1q1Ylq8ArRZtRDgao5Gqzz7HmZVFQK9exP39EQIHDsLYozvCYMBTXY3zaC7CoMfYo4e/L+GcuTwuNuRv4JvMb1iTuwaX10WX8C70NPVkXOI44oLiGBo3lN5RvVUSUJQ2qCHrIdiB5+v+tBnS7cZVUIDzaC72vXt9C8rn5CACAxFaLV6rFfC1/3d86UVCJ048aRSQNiyMwH59/RH+eSu1lbK7bDcbCzayPHs5ZocZk9HE73v+nmldp9HL1EtVFFWUdqIhtYy6A/8A+uAbcQSAlLLVTUyTXi81GzdRufgjrGvXnTjqZ+hQ4m+/jbDJk9EEBiKdTjxWK9qIiFY7HPRXUkpyqnPYUrSFrUVb2VGyg2Kbr86gUWskrVMaU7tMZVTCKPQavZ+jVRSluTWkyehtfHWIngfS8DUhtZpbR+n1Yt+7D+vq1ZiXfosr5yjayEhM184ioEcPX22g5GT0sScOlRQGAzpT6y2r4PA42FK4hbV5a1mXt47CGl9NwdjAWIbGDaV/TH/6R/enl6kXRp3xLO+mKEpb1pCEECil/FEIIaSUOcDjQoj1+JJEi1b68nyqPvkEd2kpCEHQ0KHE3HU3oZMvRmMw+Du8RlfrrmV93npW5qxkbd5aat21BOoCGRk/kpv73cyI+BF0DuusmoIURTlBQxKCXQihATKEEHcB+UCrmHkkPW4ChwwhJG08IRde2GpLRZ+N2WHmvX3v8f7+96lx1WAympjaZSppSWkMjx9OgLb1rJusKErza0hC+CO+RXHuwbfK2QTghqYIqrHF/vGP/g6hSbm8Lt7a/Rbv7n0Xi8vCpM6TuKbnNQyJG4JOcz5rICmK0p40ZJTR1rqXVmCOEEIH/B5f+QrFT2wuG/etvY+f8n9iQtIE7hh0h1pTQFGUc1Kv9RCAO4GOwNfAyrqv78dX1+iDpgxQOb1KeyV3/ngne8v38viox7myx5X+DklRlFasPk8I7wGVwCbgFuABwADMkFLubMLYlNPwSi8/F/7MP7b8g3xLPs+Nf46LOl3k77AURWnl6pMQukgp+wPUla4oAzpJKX+7gprSROxuO6W2UkpqS9hZspPPMz4n15KLyWjitUmvkdoh1d8hKorSBtQnIRybtSWl9AghslQyaFpur5tfSn/xzR3IXccR85ET9g+NG8qdg+5kYueJauSQoiiNpj4JYaAQorrutQAC674WgJRShp3pZCHEQnxLcJZIKfv9Zt/9wH+AGCllWYOjb2MOVR7iq8NfsTRzKeX2cnRCx9AOQ5mSMoUOwR2IDYqlU2gnEkMT/R2qoihtUH3WQzjfVVsWAfOBd4/fKIRIAiYBR8/z/Vu8SnslJbYSSmwllNWWUWGvoMpRRaW9kkpHJVX2KspqyyioKUAndIxLHMelXS5ldMJoQgwh/g5fUZR2oskHqUsp1wkhkk+x63ngL8BXTR1Dc6t2VrOvfB8b8jawPn89mebMk44xaAxEGiMxGU1EGiNJDE3khpgbuDTlUiKNbXPinKIoLZtfZi0JIaYB+VLKX85WPkEIMReYC9CpU6dmiK7himqK+OrwV2wq3ES2OZtyezkAeo2e1LhUZnSbQWJoIjGBvsXmTUYTgbpAVTpCUZQWpdkTghAiCPgbcHF9jpdSvg68DpCamiqbMLR6Ka8t53DVYcpryym3l/NTwU9sKtiEV3oZED2AcYnjSA5PpltEN1LjUtUC84qitBr+eELoCqQAvz4dJALbhRDDpZRFfoinXrzSy+IDi3lh+wvHVg4DiAuK45b+tzCj2wySQpP8GKGiKMr5afaEULcu87GieEKIbCC1pY4ycnldHK0+ytM/P83Woq2MThjNnH5ziAmMwWQ0ER4Qrpp+FEVpE5o8IQghPgLGA/+/vTsPruq6Dzj+/WnfhZAEaGMzILNYBiyDcTDgEK/xeGlcjz3j2m0z48m0maQkbmuPZ5JxOkn/yXSZyWZPvMaN08ZNW9d27bjeSBOMQRgDMWAWARJCi5FAu/T09OsfvyvzREBie3pP7/0+M2/eu/fdyzsHSed37znn/U6JiDQC31bVp6L9ueMZ1mHqWurY+elOZhXMorqomtKcUuqa63i38V02NW2ira+NnlAPAHnpeTx+7ePcNe8uDwDOuYQ0EbOM7hvn/dnRLkNoOMTxvuO09bbR1tfGjrYdvFr/Ks09o3uoBEFRslKzWFG2gtUVqynMLKQos4i1VWuZkTsj2kV1zrmYSYrcyBve2cB7je99tp0qqVxbfi0blm9gVfkqGroa2Nuxl6buJpaWLmVl2UpfPcw5l3SSIiDcveBu1latpTS7lNLsUirzKynMLPzs/aKsImpKa2JYQueci72kCAjrqtbFugjOORf3UmJdAOecc/HBA4JzzjnAA4JzzrmABwTnnHOABwTnnHOBpJhl5JxzEy4cgo7DcHwfHD8AOVNh2kIoqYauY3DwXajfCD1tkJFrj/QcSE2H1ExISYORrAgicM1fQEF5VIvsAcE5506nCr3tkJ4NGWfJWNx3Aurfg2M7QIdtX3gQ2g/Cp/ugox6Gh8b+nPxymDoXulthsAdCvRZIwoN2riqg9lxzrwcE55y7pIYGoacVsqZAZrAiYXerXa3Xb4TW3fDpJ9B/AiQVpi+GqhWQX2b7+k7Y+41bQcMgKXYc2FV90WworYaFt0HJAiieb41+73Fo2w1teyG7COZeD8WXnboLiAMeEJxziUnVrtaPboOjW6F5J3Qcgs4mIFhaJSPP6/YPywAADfJJREFUAkNno21nFkJZDSy+C0rmQ18HNHwAH/0rDHZBWjZkT4GCCli9Aeath8qrrZtnPLnFULogWrW9JDwgOOcSS/9Ja8C3Pm1X5GB98zOugDlrYMosyJ9hx3W3QM+n1rc/dy2ULYWUMywjPxy2rpz0xM5x5gHBOTc5DQ1Ae70N2rYftAHcjno48r71xZcvg1u/DzOvgdKFkHoRzV1K6pkDRYLxgOCci2/hEDRthyO/g+P7reE/cRhOHDk1mAvW9VM0G2rugeUPQsXymBV5svKA4Jy7dLpa4NBvIG86VFx19hk6I0J90LwLmnfYQG3bHjjZaH31mXk2WHtsOwx22/E5JVA0C8qXwxV/bAO2JcGgbfaU6NcvwXlAcM5duIEuaNgMh34L+//XGvYRKWlQdqUNupYvs8dwGBq32OPoNgsAGrbj03Ntds6MK6w7aKDLnq+8D2avhlmfg7zS2NQzSXhAcM6du6FBaHgf9r9lX6xqDubgSypUrYT137LplD1tcGQTHNkM256HzT8Z/e9kF9kdxOW32kBuWQ0UVsXVFMxkNBFrKj8N3Aa0quqSYN/fAXcAw0Ar8Keq2hTtsjjnLkB3G+x7A/b+Dxx4B0I9dvVftRKuexhmrbK7gMz80ectuMmew0PWHdT0oQ3MVl5tXTze+McdUdXofoDIGqAbeD4iIBSoamfw+mvAIlX9ynj/Vm1trW7dujWq5XVuUurrgNY9kFMMuSV2BX6mBnd4GFLGSGHW2w6fvA5H62wGT0e9PaP2rdrqm2HeDTDnuj8MAC5uiUidqtaOd1zU7xBUdaOIzD5tX2fEZi6ffUvEOXdeOptg0w+h7tlTA68AKelQUAYFlZZDp7sVTjbYvPvcaVA8D4rn2syc1HTr8mncYgPCw0OQWQBT58CMGuvDX3CTvfar+oQWszEEEfku8ABwErg+VuVwblIaGoS3HofNT1gf/pIv2WOgy9IydLdA5zELGMf326yfy9ZD3jR77/h+2POaBZFwyAZ2p86FVV+FRbfbLB5v/JNOzAKCqj4GPCYijwJfBb59puNE5CHgIYCZM2dOXAGdi1cdh+CXfwZN22DZn8Cah23+/cUYryvJJYV4+A34OfCls72pqk+qaq2q1paW+pQzl8R6223GzhNrLJ3yPT+DO35w8cEAPBg4IEZ3CCIyX1X3BZu3A3tiUQ7n4kY4ZCkXSqutW2fE8QOw+79toLdhs3UPlS+Du5+xPn7nLqGJmHb6IrAOKBGRRqxr6FYRqcamnR4Gxp1h5FxCUoU9r8Kb34L2A7Zv2mKoutpm+jTvtH0zauC6b8L8mywlQxLk1XETbyJmGd13ht1PRftznYtb4SFo/dhm9ex8yXL0lFTDXU9C51FbdGXHv8H0JXDjd22Qd4qPn7no828qOzcRVOHQ/0HdM7D3dftyF1he/dv+EZY9cCob53XfiF05XVLzgOBcNPWfhO0/hy1PWZrmrELLxjnrc9YtNGWWT+90cSM5AsKRzdbnWnHVqT++wR77I93/JhTNgWmLYPoiqKgdP0Ojc6cb7LXlF/tPQlqmPQ68bcFgsBsqV8CdP4HFd9o6vc7FoeQICO9+zxJxFc2GJXdbWt3f/QB6P7VA0LwLtj1nx6ZmWI6Wyz4Pyx+wNADOnUlvO+x9zQaFD7wNQ/2j30/NsN+3lQ/ZzCDn4lzUcxldShecy6j/JOx+BXb+0gbsdNgyMq57xFZTUrWv9jfvsMBx8F1o2WW399c/BrVfvrjVllxiGA5buuYjm+z3qX6jfcO3oBIu/6Jl7iysssAQ6re8/X5B4eLAueYySo6AEKmrxRKBTbt87ONa98Drf2vBYdpimLvOuptELA/MvBugsOIPzxvstWDStsc+q7vFlvNbcBMsuAXSMk4dGx6yVMJ7XrNskiP548uW2qIfuSWWdyYtC/pPWLlVYcYS73aYKOGQzQT68AXL1jkyGDz1Mpv9s/B2u/r3cQAXxzwgXAqq9qWgt74DXcdsW8OnugamL7EvEg0N2MpPXc2jF/wASx4mKdDXDtlTrREJ9dsAY9snMNhlXQtz1to4x7GP7LPGkpJmi4hUrbTzZq+GrILR5R6rgRoO2+IknY2QX3bqERmsoiEcgtbdtgJWe711181cGbs8+Kq2wHpnY5D356j9bLOL7Gd14rB1LXY22rTQuetsHKriKii+zIOAmzQ8IESLKrTttSv6fW9aI5KWbYOIOcV2hV++DKYvhoJy2z8ctjzy21+wnPI5xXYHUDzfGvN560enEu5qscaou9UWGgkPWmDJLrLXR+uCVae2wlCfZaosq7E7ju4WGxvJLQ2WF5xnyw6mZ9mdRutu+OQNO+Z0OcUWGPKmWXky8iEj1wKaBKkN+jrs3J42C2zDIWvo07Isq2b2VEAtqHU1Q9+J4M4qxQLncCj4MOGzJLf5ZXZeWoYFR4n40lV6ti2NmF1kZUrLtn05xXanVLpw/ECmaknfjn1kd2QNWyy528lGCA+Mfe7MVbD6GzD/Bg8AbtLygBCvxrt6Px9DA9DwARx8x54z8qwxH0l3fHy/Pfo6Ti1GnlVo3V3Vt0DJAjuuq8mukLubrRHvboGBbpsdM9gd3BkpoBaYckvskZ5jqZNT0uwOqa/jVLdWQRnkz7DjR+qdlmF3VeXL7ItWrR/bDLCjdfY5QwPWQEf+ToZ6gyDUbscMD43+P0hJt667UL81+qFeCxjpOfY82AMDnaPPK6m2GWWFlVA40wJ3QZnl+0/Ptu653nYL5tMXX5qflXMxFDfrIbjTXMqrzLRMW6hkznVjH6dqV/FDfbZubbwMkJddaY/zER6yenQ1W1qH5p1w4ojdyWTmW4Me6rPAEOq3KcSZBRYIpy2CyloLmGPJnnJpEsY5N8nEScvgokrErs6jPUYwEVLTIDXfGv+S+bDkj2JdIucShue8dc45B3hAcM45F/CA4JxzDvCA4JxzLuABwTnnHOABwTnnXMADgnPOOcADgnPOucCkSl0hIm3A4Qs8vQQ4QwKfpOB1Tz7JWm/wup+p7rNUtXS8kydVQLgYIrL1XHJ5JCKve/LVPVnrDV73i6m7dxk555wDPCA455wLJFNAeDLWBYghr3vySdZ6g9f9giXNGIJzzrmxJdMdgnPOuTF4QHDOOQckSUAQkZtFZK+I7BeRR2JdnmgRkSoReUdEdovI70Xk68H+qSLypojsC56LYl3WaBGRVBH5UEReCbaTou4iMkVEXhKRPcHPf1Uy1F1ENgS/67tE5EURyUrUeovI0yLSKiK7Ivadta4i8mjQ5u0VkZvO5TMSPiCISCrwQ+AWYBFwn4gsim2pomYI+KaqLgSuAf4yqOsjwFuqOh94K9hOVF8HdkdsJ0vd/xl4XVUvB67E/g8Suu4iUgF8DahV1SVAKnAviVvvZ4GbT9t3xroGf/f3AouDc34UtIVjSviAAKwA9qvqQVUdBH4B3BHjMkWFqh5T1W3B6y6sUajA6vtccNhzwJ2xKWF0iUgl8EXgpxG7E77uIlIArAGeAlDVQVU9QRLUHVsGOFtE0oAcoIkErbeqbgTaT9t9trreAfxCVQdUtR7Yj7WFY0qGgFABNERsNwb7EpqIzAaWAZuB6ap6DCxoANNiV7Ko+ifgb4DhiH3JUPe5QBvwTNBd9lMRySXB666qR4HvA0eAY8BJVf01CV7v05ytrhfU7iVDQJAz7EvoubYikgf8O/BXqtoZ6/JMBBG5DWhV1bpYlyUG0oDlwI9VdRnQQ+J0k5xV0F9+BzAHKAdyReT+2JYqblxQu5cMAaERqIrYrsRuKxOSiKRjweBfVPVXwe4WESkL3i8DWmNVvij6HHC7iBzCugU/LyIvkBx1bwQaVXVzsP0SFiASve5fAOpVtU1VQ8CvgGtJ/HpHOltdL6jdS4aAsAWYLyJzRCQDG2h5OcZligoREawfebeq/kPEWy8DDwavHwT+a6LLFm2q+qiqVqrqbOxn/Laq3k9y1L0ZaBCR6mDXeuBjEr/uR4BrRCQn+N1fj42bJXq9I52tri8D94pIpojMAeYDH4z7r6lqwj+AW4FPgAPAY7EuTxTruRq7LdwBbA8etwLF2AyEfcHz1FiXNcr/D+uAV4LXSVF3YCmwNfjZ/ydQlAx1Bx4H9gC7gJ8BmYlab+BFbKwkhN0BfHmsugKPBW3eXuCWc/kMT13hnHMOSI4uI+ecc+fAA4JzzjnAA4JzzrmABwTnnHOABwTnnHOBtFgXwLl4IiJhYGfErjtV9VCMiuPchPJpp85FEJFuVc07y3uC/c0Mn+l95yY77zJybgwiMjtYX+BHwDagSkR+LCJbgzz8j0cce0hEvicim4L3l4vIGyJyQES+EnHcX4vIFhHZEXm+c7HmAcG50bJFZHvw+I9gXzXwvKouU9XD2Lfda4EaYK2I1ESc36Cqq4DfYPnr78bWpvgOgIjciKURWIF9u/gqEVkzERVzbjw+huDcaH2qunRkI0gjflhV34845h4ReQj7+ynDFl7aEbw3kidrJ5Cnti5Fl4j0i8gU4Mbg8WFwXB4WIDZGpzrOnTsPCM6Nr2fkRZAo7GHgalXtEJFngayIYweC5+GI1yPbaVha4r9X1SeiWmLnLoB3GTl3fgqwAHFSRKZjS7OejzeAPw/WrEBEKkQkkRdwcZOI3yE4dx5U9SMR+RD4PXAQ+O15nv9rEVkIbLJJS3QD95PYOfvdJOHTTp1zzgHeZeSccy7gAcE55xzgAcE551zAA4JzzjnAA4JzzrmABwTnnHOABwTnnHOB/wfuUNlDLPYCKAAAAABJRU5ErkJggg==\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"labels = ['all', 'x-axis', 'y-axis', 'z-axis']\n",
"for col, label in zip(rog.results['timeseries'].T, 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": [
"You can also re-run the analysis with different frame selections. \n",
"\n",
"Below, we start from the 10th frame and take every 8th frame until the 80th. Note that the slice includes the `start` frame, but does not include the `stop` frame index (much like the actual `range()` function)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:46.997610Z",
"iopub.status.busy": "2021-05-19T05:45:46.996736Z",
"iopub.status.idle": "2021-05-19T05:45:47.008365Z",
"shell.execute_reply": "2021-05-19T05:45:47.008817Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"(10, 4)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rog_10 = AnalysisFromFunction(radgyr, u.trajectory, \n",
" protein, protein.masses, \n",
" total_mass=np.sum(protein.masses))\n",
"\n",
"rog_10.run(start=10, stop=80, step=7)\n",
"rog_10.results['timeseries'].shape"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:47.026036Z",
"iopub.status.busy": "2021-05-19T05:45:47.021412Z",
"iopub.status.idle": "2021-05-19T05:45:47.153405Z",
"shell.execute_reply": "2021-05-19T05:45:47.153774Z"
},
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for col, label in zip(rog_10.results['timeseries'].T, 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": [
"## Transforming a function into a class\n",
"\n",
"While the `AnalysisFromFunction` is convenient for quick analyses, you may want to turn your function into a class that can be applied to many different trajectories, much like other MDAnalysis analyses.\n",
"\n",
"You can apply `analysis_class` to any function that you can run with `AnalysisFromFunction` to get a class."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:47.158522Z",
"iopub.status.busy": "2021-05-19T05:45:47.157956Z",
"iopub.status.idle": "2021-05-19T05:45:47.159704Z",
"shell.execute_reply": "2021-05-19T05:45:47.160090Z"
}
},
"outputs": [],
"source": [
"RadiusOfGyration = analysis_class(radgyr)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To run the analysis, pass exactly the same arguments as you would for `AnalysisFromFunction`."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:47.164528Z",
"iopub.status.busy": "2021-05-19T05:45:47.163876Z",
"iopub.status.idle": "2021-05-19T05:45:47.223088Z",
"shell.execute_reply": "2021-05-19T05:45:47.223864Z"
}
},
"outputs": [],
"source": [
"rog_u1 = RadiusOfGyration(u.trajectory, protein, \n",
" protein.masses,\n",
" total_mass=np.sum(protein.masses))\n",
"rog_u1.run();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As with `AnalysisFromFunction`, the results are in `results`."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:47.235361Z",
"iopub.status.busy": "2021-05-19T05:45:47.234354Z",
"iopub.status.idle": "2021-05-19T05:45:47.386475Z",
"shell.execute_reply": "2021-05-19T05:45:47.386946Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for col, label in zip(rog_u2.results['timeseries'].T, 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": [
"## Creating your own class\n",
"\n",
"Although `AnalysisFromFunction` and `analysis_class` are convenient, they can be too limited for complex algorithms. You may need to write your own class.\n",
"\n",
"MDAnalysis provides the `MDAnalysis.analysis.base.AnalysisBase` class as a template for creating multiframe analyses. This class automatically sets up your trajectory reader for iterating, and includes an optional progress meter. \n",
"\n",
"The analysis is always run by calling `run()`. `AnalysisFromFunction` actually subclasses `AnalysisBase`, and `analysis_class` returns a subclass of `AnalysisFromFunction`, so the behaviour of `run()` remains identical.\n",
"\n",
"### 1. Define `__init__`\n",
"You can define a new analysis by subclassing AnalysisBase. Initialise the analysis with the `__init__` method, where you *must* pass the trajectory that you are working with to `AnalysisBase.__init__()`. You can also pass in the `verbose` keyword. If `verbose=True`, the class will set up a progress meter for you.\n",
"\n",
"### 2. Define your analysis in `_single_frame()` and other methods\n",
"Implement your functionality as a function over each frame of the trajectory by defining `_single_frame()`. This function gets called for each frame of your trajectory. \n",
"\n",
"You can also define `_prepare()` and `_conclude()` to set your analysis up before looping over the trajectory, and to finalise the results that you have prepared. In order, `run()` calls:\n",
"\n",
" - `_prepare()`\n",
" - `_single_frame()` (for each frame of the trajectory that you are iterating over)\n",
" - `_conclude()`\n",
"\n",
"Class subclassed from AnalysisBase can make use of several properties when defining the methods above:\n",
"\n",
" - `self.start`: frame index to start analysing from. Defined in `run()`\n",
" - `self.stop`: frame index to stop analysis. Defined in `run()`\n",
" - `self.step`: number of frames to skip in between. Defined in `run()`\n",
" - `self.n_frames`: number of frames to analyse over. This can be helpful in initialising result arrays.\n",
" - `self._verbose`: whether to be verbose.\n",
" - `self._trajectory`: the actual trajectory\n",
" - `self._ts`: the current timestep object\n",
" - `self._frame_index`: the index of the currently analysed frame. This is *not* the absolute index of the frame in the trajectory overall, but rather the relative index of the frame within the list of frames to be analysed. You can think of it as the number of times that `self._single_frame()` has already been called.\n",
" \n",
"Below, we create the class `RadiusOfGyration2` to run the analysis function that we have defined above, and add extra information such as the time of the corresponding frame."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:47.588068Z",
"iopub.status.busy": "2021-05-19T05:45:47.586645Z",
"iopub.status.idle": "2021-05-19T05:45:47.589492Z",
"shell.execute_reply": "2021-05-19T05:45:47.589917Z"
}
},
"outputs": [],
"source": [
"class RadiusOfGyration2(AnalysisBase): # subclass AnalysisBase\n",
" \n",
" def __init__(self, atomgroup, verbose=True):\n",
" \"\"\"\n",
" Set up the initial analysis parameters.\n",
" \"\"\"\n",
" # must first run AnalysisBase.__init__ and pass the trajectory\n",
" trajectory = atomgroup.universe.trajectory\n",
" super(RadiusOfGyration2, self).__init__(trajectory,\n",
" verbose=verbose)\n",
" # set atomgroup as a property for access in other methods\n",
" self.atomgroup = atomgroup\n",
" # we can calculate masses now because they do not depend\n",
" # on the trajectory frame.\n",
" self.masses = self.atomgroup.masses\n",
" self.total_mass = np.sum(self.masses)\n",
" \n",
" def _prepare(self):\n",
" \"\"\"\n",
" Create array of zeroes as a placeholder for results.\n",
" This is run before we begin looping over the trajectory.\n",
" \"\"\"\n",
" # This must go here, instead of __init__, because\n",
" # it depends on the number of frames specified in run().\n",
" self.results = np.zeros((self.n_frames, 6))\n",
" # We put in 6 columns: 1 for the frame index, \n",
" # 1 for the time, 4 for the radii of gyration\n",
" \n",
" def _single_frame(self):\n",
" \"\"\"\n",
" This function is called for every frame that we choose\n",
" in run().\n",
" \"\"\"\n",
" # call our earlier function\n",
" rogs = radgyr(self.atomgroup, self.masses,\n",
" total_mass=self.total_mass)\n",
" # save it into self.results\n",
" self.results[self._frame_index, 2:] = rogs\n",
" # the current timestep of the trajectory is self._ts\n",
" self.results[self._frame_index, 0] = self._ts.frame\n",
" # the actual trajectory is at self._trajectory\n",
" self.results[self._frame_index, 1] = self._trajectory.time\n",
" \n",
" def _conclude(self):\n",
" \"\"\"\n",
" Finish up by calculating an average and transforming our\n",
" results into a DataFrame.\n",
" \"\"\"\n",
" # by now self.result is fully populated\n",
" self.average = np.mean(self.results[:, 2:], axis=0)\n",
" columns = ['Frame', 'Time (ps)', 'Radius of Gyration',\n",
" 'Radius of Gyration (x-axis)',\n",
" 'Radius of Gyration (y-axis)',\n",
" 'Radius of Gyration (z-axis)',]\n",
" self.df = pd.DataFrame(self.results, columns=columns)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Because `RadiusOfGyration2` calculates the masses of the selected AtomGroup itself, we do not need to pass it in ourselves."
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:47.598314Z",
"iopub.status.busy": "2021-05-19T05:45:47.597633Z",
"iopub.status.idle": "2021-05-19T05:45:47.684015Z",
"shell.execute_reply": "2021-05-19T05:45:47.683397Z"
},
"scrolled": true
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "8ef117cab66f4916b99a96755f0fee71",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
" 0%| | 0/98 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"rog_base = RadiusOfGyration2(protein, verbose=True).run()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As calculated in `_conclude()`, the average radii of gyrations are at `rog.average`."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:47.691297Z",
"iopub.status.busy": "2021-05-19T05:45:47.690130Z",
"iopub.status.idle": "2021-05-19T05:45:47.693665Z",
"shell.execute_reply": "2021-05-19T05:45:47.694259Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array([18.26549552, 12.85342131, 15.37359575, 16.29185734])"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rog_base.average"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The results are available at `rog.results` as an array or `rog.df` as a DataFrame."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:47.700493Z",
"iopub.status.busy": "2021-05-19T05:45:47.699598Z",
"iopub.status.idle": "2021-05-19T05:45:47.714227Z",
"shell.execute_reply": "2021-05-19T05:45:47.714684Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
" Frame Time (ps) Radius of Gyration Radius of Gyration (x-axis) \\\n",
"0 10.0 10.999999 16.852127 12.584163 \n",
"1 17.0 17.999998 17.019587 12.544784 \n",
"2 24.0 24.999998 17.257429 12.514341 \n",
"3 31.0 31.999997 17.542565 12.522147 \n",
"4 38.0 38.999997 17.871241 12.482385 \n",
"5 45.0 45.999996 18.182243 12.533023 \n",
"6 52.0 52.999995 18.496493 12.771949 \n",
"7 59.0 59.999995 18.839346 13.037335 \n",
"8 66.0 66.999994 19.064333 13.061491 \n",
"9 73.0 73.999993 19.276639 13.161863 \n",
"\n",
" Radius of Gyration (y-axis) Radius of Gyration (z-axis) \n",
"0 14.001589 14.614469 \n",
"1 14.163276 14.878262 \n",
"2 14.487021 15.137873 \n",
"3 14.747461 15.530339 \n",
"4 15.088865 15.977444 \n",
"5 15.451285 16.290153 \n",
"6 15.667003 16.603098 \n",
"7 15.900327 16.942533 \n",
"8 16.114195 17.222884 \n",
"9 16.298539 17.444213 "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"rog_base_10.df"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"execution": {
"iopub.execute_input": "2021-05-19T05:45:48.013053Z",
"iopub.status.busy": "2021-05-19T05:45:48.009500Z",
"iopub.status.idle": "2021-05-19T05:45:48.151311Z",
"shell.execute_reply": "2021-05-19T05:45:48.151749Z"
},
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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HsTN7dyPUErZ768hJSWF3bt3M2/ePNLS0sjPz+fee++1dUOtXr2axYsXo9frufHGG23X0+v1tn791tZWvv/975OXl0dkZCQ/+clPLjiHva9YdTqd7fvk6uqKyWTq99elKBdDSsnpulYOltV3SvL1nKhupuNX1sdDa8VfPzmcpHG+JI3zJWGMDwZ357bi+8ORLf51wEvAW522vQY8JKXcJIS4A3gY+LEDYxgUfn5+vPjii1x77bXcfffd1NXV2frM161bZzsuJyeHv/3tb8ybN48DBw6wb9++bucaM2YM5eXlVFVV4e3tzccff8yVV16JxWLh1KlTzJs3j8suu4y3336bxsbGLgOwHeefP38+hYWFnDx5koSEBE6fPt1r7D/60Y946KGH+PDDD4mIiADoMvYQFhZGWFgYP/vZz3pteXck+eDgYBobG3nvvfe44YYbAPDx8aGhofushOnTp3P//fdTWVlJQEAA69evt31aUZTBYLFITlQ3c7CsjgOl9Rwsq+NgWT3VTe2A1oqPDvS0JvkIEsdqXTURAYYh2YrvD4clfillrhAi5rzNCUCu9fnnwGeMgMQPMGnSJDIyMnjnnXd45JFHuO222/jNb37D/PnzbcfcfffdrF69mvT0dDIzM5k2bVq38+h0OtugaWxsLImJiYA2jnDrrbdSV1eHlJIHHnig26yb73//+6xdu5a0tDTc3NxYt24dHh4efcZ99dVXU1FRwVVXXYXZbMbf35/U1FQWLVpkO2bFihVUVFSQnJzc4zn8/f256667SEtLIyYmhqlTp9r23X777axduxaDwcD27dtt28eNG8ezzz7LvHnzkFJy9dVXc+211/YZq6JcLJPZwtGKxnMJvrSeQ6frbV01OldB/BgfrkgaQ0q4LylhviSO9cXLY2T2houL6R6w++Ra4v+4U1fPNuBXUsoPhRD/H/BTKaVPL+9dA6wBiIqKmnL+VMTDhw+TlJTksNiVc+69914mTZpkG7xW7KN+R52j1WjmyJkGDlhb8AdL6yg400CbSetCNehcSQ7TkntqmB/JYdqAq7vbyJvkKITYJaXMOn/7YP85uwN4UQjxJPAR0N7bgVLKV4FXAbKyshz310np05QpU/Dy8uKFF15wdiiK0k1Dq5HDpxs4UFrHgbI6DpXVU1TeiNmipQxfvRup4X6smhlNargfKWG+xAZ74+oy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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax_10 = rog_base_10.df.plot(x='Time (ps)', \n",
" y=rog_base_10.df.columns[2:])\n",
"ax_10.set_ylabel('Radius of gyration (A)');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Contributing to MDAnalysis\n",
"\n",
"If you think that you will want to reuse your new analysis, or that others might find it helpful, please consider [contributing it to the MDAnalysis codebase.](https://www.mdanalysis.org/UserGuide/contributing.html) Making your code open-source can have many benefits; others may notice an unexpected bug or suggest ways to optimise your code. If you write your analysis for a specific publication, please let us know; we will ask those who use your code to cite your reference in published work."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References\n",
"\n",
"[1] Oliver Beckstein, Elizabeth J. Denning, Juan R. Perilla, and Thomas B. Woolf.\n",
"Zipping and Unzipping of AdenylateKinase: AtomisticInsights into the Ensemble of Open↔ClosedTransitions.\n",
"Journal of Molecular Biology, 394(1):160–176, November 2009.\n",
"00107.\n",
"URL: https://linkinghub.elsevier.com/retrieve/pii/S0022283609011164, doi:10.1016/j.jmb.2009.09.009.\n",
"\n",
"[2] Richard J. Gowers, Max Linke, Jonathan Barnoud, Tyler J. E. Reddy, Manuel N. Melo, Sean L. Seyler, Jan Domański, David L. Dotson, Sébastien Buchoux, Ian M. Kenney, and Oliver Beckstein.\n",
"MDAnalysis: APythonPackage for the RapidAnalysis of MolecularDynamicsSimulations.\n",
"Proceedings of the 15th Python in Science Conference, pages 98–105, 2016.\n",
"00152.\n",
"URL: https://conference.scipy.org/proceedings/scipy2016/oliver_beckstein.html, doi:10.25080/Majora-629e541a-00e.\n",
"\n",
"[3] Naveen Michaud-Agrawal, Elizabeth J. Denning, Thomas B. Woolf, and Oliver Beckstein.\n",
"MDAnalysis: A toolkit for the analysis of molecular dynamics simulations.\n",
"Journal of Computational Chemistry, 32(10):2319–2327, July 2011.\n",
"00778.\n",
"URL: http://doi.wiley.com/10.1002/jcc.21787, doi:10.1002/jcc.21787."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.2"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": false,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": true
}
},
"nbformat": 4,
"nbformat_minor": 2
}