From 94f75a8f6528466a0cc32627faac3f3bf8369c49 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Mon, 9 Sep 2019 17:52:24 +1000 Subject: [PATCH 1/4] added theme and updated quickstart --- doc/source/_static/.DS_Store | Bin 0 -> 6148 bytes doc/source/_static/custom.css | 66 +- doc/source/_static/logos/user_guide.png | Bin 0 -> 32104 bytes doc/source/_static/logos/user_guide.psd | Bin 0 -> 336334 bytes doc/source/conf.py | 77 +- doc/source/data_structures.rst | 24 +- doc/source/faq.rst | 30 + doc/source/index.rst | 8 +- doc/source/quickstart.ipynb | 1525 ++++++++++++++++++++++- environment.yml | 5 +- 10 files changed, 1690 insertions(+), 45 deletions(-) create mode 100644 doc/source/_static/.DS_Store create mode 100644 doc/source/_static/logos/user_guide.png create mode 100644 doc/source/_static/logos/user_guide.psd create mode 100644 doc/source/faq.rst diff --git a/doc/source/_static/.DS_Store b/doc/source/_static/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a1d2192ce2ef8621e506c702ebbdab751399090d GIT binary patch literal 6148 zcmeHK%}N6?5Kj7|X+`Wou*bc4tI%SxCt+FZ!JDw62bFf0E$za(k?z)_wX(0FZ{!pB zI?g0%X{mxI5jz8uZ!(!l$hS)-VT^HS6f_vCFvbKZVy*kj1DO}%uKINtCY zd*@y{@Qr;TWi+=v|1#{2JC)rN8K+(t_l7Dt40;f9a}~yc96NFp2Z@@;)dND5M5$A$ zP9_J zi2-6@nSs3SRG*Ckf{3-*V$#+pe literal 0 HcmV?d00001 diff --git a/doc/source/_static/custom.css b/doc/source/_static/custom.css index cd04a426b..ee690fcdd 100644 --- a/doc/source/_static/custom.css +++ b/doc/source/_static/custom.css @@ -5,8 +5,9 @@ /* MDAnalysis gray: #808080 */ /* MDAnalysis white: #FFFFFF */ /* MDAnalysis black: #000000 */ +/* Darker orange: e76900 */ -@import url('readable.css'); +/* @import url('readable.css'); */ /* -- page layout --------------------------------------------------------- */ @@ -19,27 +20,57 @@ div.body { color: #000000; } +div.sphinxsidebar a { + color: #808080; +} + div.sphinxsidebar a:hover { color: #FF9200; } +div.sphinxsidebar a:visited { + color: #808080; +} + div.sphinxsidebar p { color: #808080; } +div.wy-menu-vertical span.caption-text { + color: #FF9200; +} + +/* li.current ul { + background: #fbd29b; +} */ + + +/* div.sphinxsidebar a { + color: #808080; +} + +div.sphinxsidebar a:hover { + color: #FF9200; +} + +div.wy-menu-vertical a:visited { + color: #808080; +} + */ + /* -- body styles --------------------------------------------------------- */ -a { +div.rst-content a { color: #FF9200; text-decoration: none; } -a:visited { - color: #FF9200; +div.rst-content a:visited { + color: #e76900; } -a:hover { +div.rst-content a:hover { color: #FF9200; text-decoration: underline; } @@ -49,6 +80,10 @@ pre, tt, code { font-family: Menlo, Monaco, 'Courier New', monospace } +/* For the backtick tags */ +/* code > span.pre { + color: #e76900; +} */ div.body h1 { font-weight: bolder; @@ -75,4 +110,25 @@ div.admonition { div.admonition p.admonition-title { font-size: 100%; font-weight: bolder; +} + +div.admonition.warning { + background: #ffdeb3; +} + +div.admonition.warning > p.admonition-title { + background: #FF9200; +} + +div.admonition.note { + background: #e6e6e6; /* RTD menu light grey */ +} + +div.admonition.note > p.admonition-title { + background: #808080; +} + +/* -- notebook styles --------------------------------------------------------- */ +.rst-content div[class^="highlight"] pre { + white-space: pre-wrap; } \ No newline at end of file diff --git a/doc/source/_static/logos/user_guide.png b/doc/source/_static/logos/user_guide.png new file mode 100644 index 0000000000000000000000000000000000000000..5d82c3cfd564092f15130863152186380a2b9dc0 GIT binary patch literal 32104 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 @+n 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\n", + "* [use the analysis algorithms in MDAnalysis](#Analysis)\n", + "* [correct and automated citation of MDAnalysis and algorithms](#References)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "0.19.2\n" + ] + } + ], + "source": [ + "import MDAnalysis as mda\n", + "from MDAnalysis.tests.datafiles import PSF, DCD, GRO, XTC\n", + "\n", + "print(mda.Universe(PSF, DCD))\n", + "print(mda.__version__)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tutorial assumes that you already have MDAnalysis installed. Running the cell above should give:\n", + "\n", + "```console\n", + "\n", + "0.19.2\n", + "```\n", + "If you get an error message, you need to install MDAnalysis. If your version is under `0.18.0`, you need to upgrade MDAnalysis. [Instructions for both are here.](installation.rst) After installing, restart this notebook." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Overview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "MDAnalysis is a Python package that provides tools to access and analyse data in molecular dynamics trajectories. Several key data structures form the backbone of MDAnalysis.\n", + "\n", + "* A molecular system consists of particles. A particle is represented as an `Atom` object, even if it is a coarse-grained bead. \n", + "* `Atom`s are grouped into [AtomGroup](data_structures.rst#atomgroups)s. The `AtomGroup` is probably the most important class in MDAnalysis, as almost everything can be accessed through it. See [Working with atoms](#Working-with-atoms,-residues,-segments-and-molecules) below. \n", + "* A `Universe` contains all the particles in a molecular system in an `AtomGroup` accessible at the `.atoms` attribute, and combines it with a trajectory at `.trajectory`. \n", + "\n", + "A fundamental concept in MDAnalysis is that at any one time, \n", + "only one time frame of the trajectory is being accessed. The \n", + "`trajectory` attribute of a `Universe` is usually a file reader. \n", + "Think of the trajectory as a function $X(t)$ of the frame index $t$ \n", + "that only makes the data from this specific frame available. This structure is important \n", + "because it allows MDAnalysis to work with trajectory files too large to fit \n", + "into the computer's memory. \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading a structure or trajectory" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Working with MDAnalysis typically starts with loading data into a `Universe`, the central data structure in MDAnalysis. \n", + "\n", + "
    \n", + "\n", + "**See also**\n", + "\n", + "The [user guide](data_structures.rst#universes) has a complete explanation of ways to create and manipulate a `Universe`.\n", + "
    \n", + "\n", + "\n", + "The first arguments for creating a `Universe` are topology and trajectory files.\n", + "\n", + "* A **topology file** is always required for loading data into a Universe. A topology file lists atoms, residues, and their connectivity. MDAnalysis accepts the PSF, PDB, CRD, and GRO formats.\n", + "\n", + "* A topology file can then be followed by **any number of trajectory files**. A trajectory file contains a list of coordinates in the order defined in the topology. If no trajectory files are given, then only a structure is loaded. If multiple trajectory files are given, the trajectories are concatenated in the given order. MDAnalysis accepts single frames (e.g. PDB, CRD, GRO) and timeseries data (e.g. DCD, XTC, TRR, XYZ). " + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "False\n" + ] + } + ], + "source": [ + "psf = mda.Universe(PSF)\n", + "print(psf)\n", + "print(hasattr(psf, 'trajectory'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As PSF files don't contain any coordinate information and no trajectory file has been loaded, the `structure_only` universe does not contain a trajectory. If the topology file does contain coordinate information, a trajectory of 1 frame is created." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "1\n" + ] + } + ], + "source": [ + "gro = mda.Universe(GRO)\n", + "print(gro)\n", + "print(len(gro.trajectory))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the remainder of this guide we will work with the universe `u`, created below. This is a simulation where the enzyme adenylate kinase samples a transition from a closed to an open conformation [(Beckstein *et al.*, 2009)](https://doi.org/10.1016/j.jmb.2009.09.009)." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "98\n" + ] + } + ], + "source": [ + "u = mda.Universe(PSF, DCD)\n", + "print(u)\n", + "print(len(u.trajectory))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "**Note**\n", + "\n", + "The MDAnalysis test suite is packaged with a bunch of test files and trajectories, which are named after their file format. We are using these files throughout this guide for convenience. To analyse your own files, simply replace the `PSF` and `DCD` above with paths to your own files. For example:\n", + "\n", + "```python\n", + "structure_only = mda.Universe(\"my_pdb_file.pdb\")\n", + "```\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Working with atoms, residues, segments and molecules" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Most analysis requires creating and working with an `AtomGroup`, a collection of `Atom`s. For convenience, you can also work with chemically meaningful groups of `Atoms` such as a `Residue` or a `Segment`. These come with analogous containers to `AtomGroup`: `ResidueGroup` and `SegmentGroup`. For instance, the `.residues` attribute of a `Universe` returns a `ResidueGroup`." + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ", , , ..., , , ]>\n" + ] + } + ], + "source": [ + "print(u.residues)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Selecting atoms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The easiest way to access the particles of your `Universe` is with the `atoms` attribute:" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u.atoms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This returns an `AtomGroup`, which can be thought of as a list of `Atom` objects. Most analysis involves working with groups of atoms in `AtomGroup`s. `AtomGroup`s can easily be created by slicing another `AtomGroup`. For example, the below slice returns the last five atoms." + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ", , , , ]>\n" + ] + } + ], + "source": [ + "last_five = u.atoms[-5:]\n", + "print(last_five)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "MDAnalysis supports fancy indexing: passing an array or list of indices to get a new AtomGroup with the atoms at those indices in the old AtomGroup." + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ", , , , , ]>\n" + ] + } + ], + "source": [ + "print(last_five[[0, 3, -1, 1, 3, 0]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "MDAnalysis has also implemented a [powerful atom selection language](selections.rst) that is similar to existing languages in VMD, PyMol, and other packages. This is available with the `.select_atoms()` function of an `AtomGroup` or `Universe` instance:" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ", , , ..., , , ]>\n" + ] + } + ], + "source": [ + "print(u.select_atoms('resname ASP or resname GLU'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Numerical ranges can be written as `first-last` or `first:last` where the range is **inclusive**. Note that in slicing, the `last` index is not included." + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "51\n", + "50\n" + ] + } + ], + "source": [ + "print(u.select_atoms('resid 50-100').n_residues)\n", + "print(u.residues[50:100].n_residues)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Selections can also be combined with boolean operators, and allow wildcards. \n", + "\n", + "For example, the command below selects the $C_{\\alpha}$ atoms of glutamic acid and histidine in the first 100 residues of the protein. Glutamic acid is typically named \"GLU\", but histidine can be named \"HIS\", \"HSD\", or \"HSE\" depending on its protonation state and the force field used." + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u.select_atoms(\"(resname GLU or resname HS*) and name CA and (resid 1:100)\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "**Note**\n", + "\n", + "An `AtomGroup` created from a selection is sorted and duplicate elements are removed. This is not true for an `AtomGroup` produced by slicing. Thus, slicing can be used when the order of atoms is crucial.\n", + "
    \n", + "\n", + "
    \n", + "\n", + "**See also**\n", + "\n", + "The [user guide](selections.rst) has a complete rundown of creating AtomGroups through indexing, selection language, and set methods.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Getting atom information from AtomGroups" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An `AtomGroup` can tell you information about the atoms inside it with a number of convenient attributes." + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['N' 'HT1' 'HT2' 'HT3' 'CA' 'HA' 'CB' 'HB1' 'HB2' 'CG' 'HG1' 'HG2' 'SD'\n", + " 'CE' 'HE1' 'HE2' 'HE3' 'C' 'O' 'N']\n" + ] + } + ], + "source": [ + "print(u.atoms[:20].names)" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 1.008 1.008 1.008 12.011 1.008 1.008 12.011 1.008 1.008 1.008\n", + " 12.011 15.999 14.007 1.008 12.011 1.008 12.011 1.008 12.011 1.008]\n" + ] + } + ], + "source": [ + "print(u.atoms[50:70].masses)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It also knows which residues and segments the atoms belong to. The `.residues` and `.segments` return a `ResidueGroup` and `SegmentGroup`, respectively." + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + ", ]>\n", + "]>\n" + ] + } + ], + "source": [ + "print(u.atoms[:20].residues)\n", + "print(u.atoms[-20:].segments)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that there are no duplicates in the `ResidueGroup` and `SegmentGroup` above. To get residue attributes atom-wise, you can access them directly through `AtomGroup`." + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['MET' 'MET' 'MET' 'MET' 'MET' 'MET' 'MET' 'MET' 'MET' 'MET' 'MET' 'MET'\n", + " 'MET' 'MET' 'MET' 'MET' 'MET' 'MET' 'MET' 'ARG']\n" + ] + } + ], + "source": [ + "print(u.atoms[:20].resnames)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can group atoms together by topology attributes.\n", + "\n", + "For example, to group atoms with the same residue name and mass together:" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{('THR', 'N'): ,\n", + " ('GLN', 'C'): ,\n", + " ('GLU', 'N'): ,\n", + " ('ASP', 'C'): ,\n", + " ('ASP', 'N'): ,\n", + " ('ALA', 'C'): ,\n", + " ('ALA', 'HN'): ,\n", + " ('ILE', 'C'): ,\n", + " ('LEU', 'N'): ,\n", + " ('ASN', 'O'): ,\n", + " ('LYS', 'N'): ,\n", + " ('ARG', 'N'): }" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "near_met = u.select_atoms('not resname MET and (around 2 resname MET)')\n", + "near_met.groupby(['resnames', 'names'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "**See also**\n", + "\n", + "A complete list of topology attributes can be found [in the user guide.](placeholder)\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### AtomGroup positions and methods" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `.positions` attribute is probably the most important information you can get from an `AtomGroup`: a `numpy.ndarray` of coordinates, with the shape (n_atoms, 3)." + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[11.664622 8.393473 -8.983231 ]\n", + " [11.414839 5.4344215 -6.5134845 ]\n", + " [ 8.959755 5.612923 -3.6132305 ]\n", + " [ 8.290068 3.075991 -0.79665166]\n", + " [ 5.011126 3.7638984 1.130355 ]]\n", + "(5, 3)\n" + ] + } + ], + "source": [ + "ca = u.select_atoms('resid 1-5 and name CA')\n", + "print(ca.positions)\n", + "print(ca.positions.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A number of other quantities have been defined for an AtomGroup, including:\n", + "\n", + "* `.center_of_mass()`\n", + "* `.center_of_geometry()`\n", + "* `.total_mass()`\n", + "* `.total_charge()`\n", + "* `.radius_of_gyration()`\n", + "* `.bsphere()` (the bounding sphere of the selection)\n", + "\n", + "See the [user guide](data_structures.rst#atomgroups) for a complete list and description of AtomGroup methods." + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 9.06808195 5.25614133 -3.75524844]\n" + ] + } + ], + "source": [ + "print(ca.center_of_mass())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "**Note**\n", + "\n", + "The `.center_of_mass()` function, like many of the analysis modules in MDAnalysis, relies on having accurate mass properties available. **Particle masses may not always be available or accurate!**\n", + "\n", + "Currently, MDAnalysis assigns masses to particles based on their element or 'atom type', which is guessed from the particle name. If MDAnalysis guesses incorrectly (e.g. a calcium atom called CA is treated as a $C_{\\alpha}$), the mass of that atom will be inaccurate. If MDAnalysis has no idea what the particle is (e.g. coarse-grained beads), it will raise a warning, and give that particle a mass of 0. \n", + "\n", + "To be certain that MDAnalysis is using the correct masses, you can set them manually.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "MDAnalysis can also create topology geometries such as bonds, angles, dihedral angles, and improper angles from an `AtomGroup`. This `AtomGroup` has a special requirement: only the atoms involved in the geometry can be in the group. For example, an `AtomGroup` used to create a bond can only have 2 atoms in it; an `AtomGroup` used to create a dihedral or improper angle must have 4 atoms." + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['N' 'HT1' 'HT2']\n" + ] + } + ], + "source": [ + "nhh = u.atoms[:3]\n", + "print(nhh.names)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After a topology object such as an angle is created, the value of the angle (in degrees) can be calculated based on the positions of the atoms." + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "37.99234750892497\n" + ] + } + ], + "source": [ + "angle_nhh = nhh.angle\n", + "print(angle_nhh.value())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the order of the atoms matters for angles, dihedrals, and impropers. The value returned for an angle is the angle between first and third atom, with the apex at the second. Fancy indexing is one way to get an ordered AtomGroup.\n", + "```\n", + " 3\n", + " /\n", + " /\n", + "2------1\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['HT1' 'N' 'HT2']\n" + ] + } + ], + "source": [ + "hnh = u.atoms[[1, 0, 2]]\n", + "print(hnh.names)" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "106.20364651944931\n" + ] + } + ], + "source": [ + "angle_hnh = hnh.angle\n", + "print(angle_hnh.value())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Working with trajectories" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The trajectory of a Universe contains the changing coordinate information. The number of frames in a trajectory is its length:" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "98\n" + ] + } + ], + "source": [ + "print(len(u.trajectory))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The standard way to assess the information of each frame in a trajectory is to iterate over it. When the timestep changes, the universe only contains information associated with that timestep." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 146, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Frame: 0, Time: 1 ps, Rgyr: 16.669 A\n", + "Frame: 1, Time: 2 ps, Rgyr: 16.6732 A\n", + "Frame: 2, Time: 3 ps, Rgyr: 16.7315 A\n", + "Frame: 3, Time: 4 ps, Rgyr: 16.7223 A\n", + "Frame: 4, Time: 5 ps, Rgyr: 16.744 A\n", + "Frame: 5, Time: 6 ps, Rgyr: 16.7185 A\n", + "Frame: 6, Time: 7 ps, Rgyr: 16.7741 A\n", + "Frame: 7, Time: 8 ps, Rgyr: 16.7764 A\n", + "Frame: 8, Time: 9 ps, Rgyr: 16.7894 A\n", + "Frame: 9, Time: 10 ps, Rgyr: 16.8289 A\n", + "Frame: 10, Time: 11 ps, Rgyr: 16.8521 A\n", + "Frame: 11, Time: 12 ps, Rgyr: 16.8549 A\n", + "Frame: 12, Time: 13 ps, Rgyr: 16.8723 A\n", + "Frame: 13, Time: 14 ps, Rgyr: 16.9108 A\n", + "Frame: 14, Time: 15 ps, Rgyr: 16.9494 A\n", + "Frame: 15, Time: 16 ps, Rgyr: 16.981 A\n", + "Frame: 16, Time: 17 ps, Rgyr: 17.0033 A\n", + "Frame: 17, Time: 18 ps, Rgyr: 17.0196 A\n", + "Frame: 18, Time: 19 ps, Rgyr: 17.0784 A\n", + "Frame: 19, Time: 20 ps, Rgyr: 17.1265 A\n" + ] + } + ], + "source": [ + "for ts in u.trajectory[:20]:\n", + " time = u.trajectory.time\n", + " rgyr = u.atoms.radius_of_gyration()\n", + " print(\"Frame: {:3d}, Time: {:4.0f} ps, Rgyr: {:g} A\".format(ts.frame, time, rgyr))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After iteration, the trajectory 'resets' back to the first frame." + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n" + ] + } + ], + "source": [ + "print(u.trajectory.frame)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can set the timestep of the trajectory with the frame index:" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\n" + ] + } + ], + "source": [ + "print(u.trajectory[10].frame)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This persists until the timestep is next changed." + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Frame: 10, Time: 11 ps, Rgyr: 16.8521 A\n" + ] + } + ], + "source": [ + "frame = u.trajectory.frame\n", + "time = u.trajectory.time\n", + "rgyr = u.atoms.radius_of_gyration()\n", + "print(\"Frame: {:3d}, Time: {:4.0f} ps, Rgyr: {:g} A\".format(frame, time, rgyr))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generally, trajectory analysis first collects frame-wise data in a list." + ] + }, + { + "cell_type": "code", + "execution_count": 163, "metadata": {}, "outputs": [], "source": [ - "import MDAnalysis as mda" + "rgyr = []\n", + "time = []\n", + "protein = u.select_atoms(\"protein\")\n", + "for ts in u.trajectory:\n", + " time.append(u.trajectory.time)\n", + " rgyr.append(protein.radius_of_gyration())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This can then be converted into other data structures, such as a numpy array or a pandas DataFrame. It can be plotted (as below), or used for further analysis." ] }, { @@ -21,10 +950,594 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "import pandas as pd\n", + "rgyr_df = pd.DataFrame(rgyr, columns=['Radius of gyration (A)'], index=time)\n", + "rgyr_df.index.name = 'Time (ps)'\n", + "\n", + "rgyr_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 202, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 202, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "\n", + "rgyr_df.plot(title='Radius of gyration')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dynamic selection" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As seen above, coordinates change while iterating over the trajectory. Therefore, properties calculated from the coordinates, such as the radius of gyration, also change. \n", + "\n", + "Selections are often defined on static properties that do not change when moving through a trajectory. Above, the static selection is all the atoms that are in a protein. You can define the selection once and then recalculate the property of interest for each frame of the trajectory.\n", + "\n", + "However, some selections contain distance-dependent queries (such as `around` or `point`, [see selection keywords for more details](selections.rst)). In this case, the selection should be updated for each time step using a dynamic selection by setting the keyword `updating=True`. This command gives an `UpdatingAtomGroup` rather than a static `AtomGroup`.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 171, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dynamic = u.select_atoms('around 2 resname ALA', updating=True)\n", + "print(type(dynamic))\n", + "dynamic" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 172, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "static = u.select_atoms('around 2 resname ALA')\n", + "print(type(static))\n", + "static" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When you call the next frame of the universe, the atoms in the dynamic selection are updated, whereas the atoms in the static selection remain the same." + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u.trajectory.next()\n", + "dynamic" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 174, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "static" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Writing out coordinates" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "MDAnalysis supports writing data out into a range of file formats, including both single frame formats (e.g. PDB, GRO) and trajectory writers (e.g. XTC, DCD, and multi-frame PDB files)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Single frame" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The most straightforward way to write to a file that can only hold a single frame is to use the `write()` method of any `AtomGroup`. MDAnalysis uses the file extension to determine the output file format. For instance, to only write out the $C_{\\alpha}$ atoms to a file in GRO format:\n", + "\n", + "```python\n", + "ca = u.select_atoms('name CA')\n", + "ca.write('calphas.gro')\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Trajectories" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The standard way to write out trajectories is to:\n", + "\n", + "1. Open a trajectory `Writer` and specify how many atoms a frame will contain\n", + "2. Iterate through the trajectory and write coordinates frame-by-frame with `Writer.write()`\n", + "3. If you do not use the context manager and the `with` statement below, you then need to close the trajectory with `.close()`.\n", + "\n", + "For instance, to write out the $C_{\\alpha}$ atoms to a trajectory in the XTC format:\n", + "\n", + "```python\n", + "ca = u.select_atoms('name CA')\n", + "with mda.Writer('calphas.xtc', ca.n_atoms) as w:\n", + " for ts in u.trajectory:\n", + " w.write(ca)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "MDAnalysis comes with a diverse set of analysis modules, and the building blocks to implement your own.\n", + "\n", + "The majority of these follow a common interface:\n", + "\n", + "1. Initialise the analysis with a `Universe` and other required parameters.\n", + "2. Run the analysis with `.run()`. Optional arguments are the `start` frame index, `stop` frame index, `step` size, and toggling `verbose`. The default is to run analysis on the whole trajectory.\n", + "3. Results are stored within the class.\n", + "4. Often, a function is available to operate on single frames.\n", + "\n", + "**However, not all analysis uses this model. It is important to check the documentation for each analysis.** You can also see examples in the [Example gallery](placeholder).\n", + "\n", + "Below, simple RMSD analysis is shown. The `rms` module follows the interface above." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### RMSD" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Not all sub-modules of MDAnalysis are imported with `import MDAnalysis`. Most analysis modules have to be imported explicitly. " + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [], + "source": [ + "from MDAnalysis.analysis import rms" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "MDAnalysis provides a `rmsd()` function for calculating the RMSD between two numpy arrays of coordinates." + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6.852774844656239" + ] + }, + "execution_count": 179, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bb = u.select_atoms('backbone')\n", + "\n", + "u.trajectory[0] # first frame\n", + "first = bb.positions\n", + "\n", + "u.trajectory[-1] #last frame\n", + "last = bb.positions\n", + "\n", + "rms.rmsd(first, last)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An `RMSD` class is also provided to operate on trajectories. \n", + "\n", + "Below, the `RMSD` class is created. \n", + "* The first argument is the `AtomGroup` or `Universe` for which the RMSD is calculated. \n", + "* As a reference `AtomGroup` or `Universe` is not given as the second argument, the default is to align to the current frame of the first argument. Here it is set to the first frame. \n", + "* We choose to align the trajectory over the backbone atoms, and then compute the RMSD for the backbone atoms (`select`). \n", + "* Then, without re-aligning the trajectory, the RMSD is also computed (`groupselections`) for the $C_{\\alpha}$ atoms (`name CA`) and every protein atom (`protein`).\n", + "\n", + "The RMSD is computed when we call `.run()`." + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 187, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "u.trajectory[0] # set to first frame\n", + "rmsd_analysis = rms.RMSD(u, select='backbone', groupselections=['name CA', 'protein'])\n", + "rmsd_analysis.run(verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The results are stored in the `.rmsd` attribute. This is an array with the shape (n_frames, 2 + n_selections)." + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(98, 5)\n" + ] + } + ], + "source": [ + "print(rmsd_analysis.rmsd.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can interpret this as an array with 98 rows and 5 columns. Each row is the RMSD associated with a frame in the trajectory. The columns are as follows:\n", + "\n", + "1. Frame number\n", + "2. Time (ps)\n", + "3. RMSD (backbone)\n", + "4. RMSD (C-alpha)\n", + "5. RMSD (protein)\n", + "\n", + "We can turn this into a `pandas` DataFrame and plot the results." + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    BackboneC-alphasProtein
    Time (ps)
    1.06.391203e-074.263638e-085.443850e-08
    2.04.636592e-014.235205e-016.934167e-01
    3.06.419340e-015.939111e-018.748416e-01
    4.07.743983e-017.371346e-011.052780e+00
    5.08.588600e-018.279498e-011.154986e+00
    \n", + "
    " + ], + "text/plain": [ + " Backbone C-alphas Protein\n", + "Time (ps) \n", + "1.0 6.391203e-07 4.263638e-08 5.443850e-08\n", + "2.0 4.636592e-01 4.235205e-01 6.934167e-01\n", + "3.0 6.419340e-01 5.939111e-01 8.748416e-01\n", + "4.0 7.743983e-01 7.371346e-01 1.052780e+00\n", + "5.0 8.588600e-01 8.279498e-01 1.154986e+00" + ] + }, + "execution_count": 199, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "rmsd_df = pd.DataFrame(rmsd_analysis.rmsd[:, 2:],\n", + " columns=['Backbone', 'C-alphas', 'Protein'],\n", + " index=rmsd_analysis.rmsd[:, 1])\n", + "rmsd_df.index.name = 'Time (ps)'\n", + "rmsd_df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 201, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 201, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "rmsd_df.plot(title='RMSD')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "
    \n", + "\n", + "**See also**\n", + "\n", + "See the [analysis documentation](analysis.rst) for more information.\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "When using MDAnalysis in published work, please cite both these papers:\n", + "\n", + "* N. Michaud-Agrawal, E. J. Denning, T. B. Woolf, and O. Beckstein. MDAnalysis: A Toolkit for the Analysis of Molecular Dynamics Simulations. *J. Comput. Chem.* **32** (2011), 2319–2327. doi:[10.1002/jcc.21787](http://dx.doi.org/10.1002/jcc.21787)\n", + "\n", + "* R. J. Gowers, M. Linke, J. Barnoud, T. J. E. Reddy, M. N.\n", + " Melo, S. L. Seyler, D. L. Dotson, J. Domanski, S. Buchoux, I. M. Kenney,\n", + " and O. Beckstein. [MDAnalysis: A Python package for the rapid analysis of\n", + " molecular dynamics simulations](http://conference.scipy.org/proceedings/scipy2016/oliver_beckstein.html). In S. Benthall and S. Rostrup, editors,\n", + " *Proceedings of the 15th Python in Science Conference*, pages 98-105,\n", + " Austin, TX, 2016. SciPy. doi:[10.25080/Majora-629e541a-00e](https://doi.org/10.25080/Majora-629e541a-00e)\n", + " \n", + "MDAnalysis includes many algorithms and modules that should also be individually cited. For example, if you use the `MDAnalysis.analysis.rms` or `MDAnalysis.analysis.align` modules, please cite:\n", + "\n", + "* Douglas L. Theobald. Rapid calculation of RMSD using a\n", + " quaternion-based characteristic polynomial. *Acta Crystallographica A*\n", + " **61** (2005), 478-480.\n", + "* Pu Liu, Dmitris K. Agrafiotis, and Douglas L. Theobald. Fast\n", + " determination of the optimal rotational matrix for macromolecular\n", + " superpositions. *J. Comput. Chem.* **31** (2010), 1561–1563.\n", + " \n", + "The primary sources of each module will be in their documentation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Automatic citations with duecredit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Citations can be also be automatically generated using `duecredit`. [Complete installation and usage instructions can be found in the user guide](placeholder), but it is simple to generate a list of citations for your python script `my_script.py`.\n", + "\n", + "```console\n", + "$ python -m duecredit my_script.py\n", + "```\n", + "\n", + "This extracts citations into a hidden file, which can then be exported to different formats. For example, to display them as BibTeX, use the command:\n", + "\n", + "```console\n", + "$ duecredit summary --format=bibtex\n", + "```" + ] } ], "metadata": { + "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "Python (mdanalysis)", "language": "python", @@ -42,6 +1555,10 @@ "pygments_lexer": "ipython3", "version": "3.7.3" }, + "nbsphinx-toctree": { + "maxdepth": 2, + "numbered": true + }, "toc": { "base_numbering": 1, "nav_menu": {}, diff --git a/environment.yml b/environment.yml index f324ce5c2..d9ffe0f1b 100644 --- a/environment.yml +++ b/environment.yml @@ -6,4 +6,7 @@ dependencies: - jupyter_contrib_nbextensions - nglview - pip: - - mdanalysis \ No newline at end of file + - mdanalysis + - mdanalysistests + - sphinx_rtd_theme + - nbsphinx \ No newline at end of file From e964230d98761f2a076cf04bb4869940651388d9 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Mon, 9 Sep 2019 23:55:27 +1000 Subject: [PATCH 2/4] updated section heading --- doc/source/quickstart.ipynb | 208 ++++++++++++++++++++++++------------ 1 file changed, 142 insertions(+), 66 deletions(-) diff --git a/doc/source/quickstart.ipynb b/doc/source/quickstart.ipynb index 1c7a59938..169f92189 100644 --- a/doc/source/quickstart.ipynb +++ b/doc/source/quickstart.ipynb @@ -14,7 +14,7 @@ "This guide is designed as a basic introduction to MDAnalysis to get you up and running. You can see more complex tasks in our [Example gallery](placeholder). This page outlines how to:\n", "\n", "* [load a molecular dynamics structure or trajectory](#Loading-a-structure-or-trajectory)\n", - "* [work with atoms, residues, segments and molecules](#Working-with-atoms,-residues,-segments-and-molecules)\n", + "* [work with AtomGroups, a central data structure in MDAnalysis](#Working-with-groups-of-atoms)\n", "* [work with a trajectory](#Working-with-trajectories)\n", "* [write out coordinates](#Writing-out-coordinates)\n", "\n", @@ -24,7 +24,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -71,7 +71,7 @@ "MDAnalysis is a Python package that provides tools to access and analyse data in molecular dynamics trajectories. Several key data structures form the backbone of MDAnalysis.\n", "\n", "* A molecular system consists of particles. A particle is represented as an `Atom` object, even if it is a coarse-grained bead. \n", - "* `Atom`s are grouped into [AtomGroup](data_structures.rst#atomgroups)s. The `AtomGroup` is probably the most important class in MDAnalysis, as almost everything can be accessed through it. See [Working with atoms](#Working-with-atoms,-residues,-segments-and-molecules) below. \n", + "* `Atom`s are grouped into [AtomGroup](data_structures.rst#atomgroups)s. The `AtomGroup` is probably the most important class in MDAnalysis, as almost everything can be accessed through it. See [Working with atoms](#Working-with-groups-of-atoms) below. \n", "* A `Universe` contains all the particles in a molecular system in an `AtomGroup` accessible at the `.atoms` attribute, and combines it with a trajectory at `.trajectory`. \n", "\n", "A fundamental concept in MDAnalysis is that at any one time, \n", @@ -113,7 +113,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 2, "metadata": { "scrolled": true }, @@ -142,7 +142,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -169,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -207,7 +207,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Working with atoms, residues, segments and molecules" + "## Working with groups of atoms" ] }, { @@ -219,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -250,7 +250,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -259,7 +259,7 @@ "" ] }, - "execution_count": 39, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -277,7 +277,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -304,7 +304,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -328,7 +328,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 9, "metadata": { "scrolled": true }, @@ -354,7 +354,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -382,7 +382,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -391,7 +391,7 @@ "" ] }, - "execution_count": 62, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } @@ -435,7 +435,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -453,7 +453,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -478,7 +478,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -504,7 +504,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 15, "metadata": { "scrolled": true }, @@ -533,27 +533,35 @@ }, { "cell_type": "code", - "execution_count": 122, + "execution_count": 16, "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lily/anaconda3/envs/mdanalysis/lib/python3.7/site-packages/MDAnalysis/lib/util.py:1747: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working\n", + " if isinstance(v, collections.MutableMapping):\n" + ] + }, { "data": { "text/plain": [ - "{('THR', 'N'): ,\n", - " ('GLN', 'C'): ,\n", - " ('GLU', 'N'): ,\n", + "{('ARG', 'N'): ,\n", " ('ASP', 'C'): ,\n", " ('ASP', 'N'): ,\n", + " ('LYS', 'N'): ,\n", " ('ALA', 'C'): ,\n", " ('ALA', 'HN'): ,\n", - " ('ILE', 'C'): ,\n", - " ('LEU', 'N'): ,\n", " ('ASN', 'O'): ,\n", - " ('LYS', 'N'): ,\n", - " ('ARG', 'N'): }" + " ('GLN', 'C'): ,\n", + " ('THR', 'N'): ,\n", + " ('ILE', 'C'): ,\n", + " ('GLU', 'N'): ,\n", + " ('LEU', 'N'): }" ] }, - "execution_count": 122, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } @@ -591,7 +599,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 17, "metadata": {}, "outputs": [ { @@ -631,7 +639,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -671,7 +679,7 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -696,7 +704,7 @@ }, { "cell_type": "code", - "execution_count": 131, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -727,7 +735,7 @@ }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 21, "metadata": { "scrolled": true }, @@ -747,7 +755,7 @@ }, { "cell_type": "code", - "execution_count": 134, + "execution_count": 22, "metadata": {}, "outputs": [ { @@ -779,7 +787,7 @@ }, { "cell_type": "code", - "execution_count": 135, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -803,7 +811,7 @@ }, { "cell_type": "code", - "execution_count": 146, + "execution_count": 24, "metadata": { "scrolled": true }, @@ -851,7 +859,7 @@ }, { "cell_type": "code", - "execution_count": 150, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -875,7 +883,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -899,7 +907,7 @@ }, { "cell_type": "code", - "execution_count": 154, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -926,7 +934,7 @@ }, { "cell_type": "code", - "execution_count": 163, + "execution_count": 28, "metadata": {}, "outputs": [], "source": [ @@ -947,9 +955,77 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    Radius of gyration (A)
    Time (ps)
    1.016.669018
    2.016.673217
    3.016.731454
    4.016.722283
    5.016.743961
    \n", + "
    " + ], + "text/plain": [ + " Radius of gyration (A)\n", + "Time (ps) \n", + "1.0 16.669018\n", + "2.0 16.673217\n", + "3.0 16.731454\n", + "4.0 16.722283\n", + "5.0 16.743961" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import pandas as pd\n", "rgyr_df = pd.DataFrame(rgyr, columns=['Radius of gyration (A)'], index=time)\n", @@ -960,16 +1036,16 @@ }, { "cell_type": "code", - "execution_count": 202, + "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 202, + "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, @@ -1013,7 +1089,7 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -1029,7 +1105,7 @@ "" ] }, - "execution_count": 171, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -1042,7 +1118,7 @@ }, { "cell_type": "code", - "execution_count": 172, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -1058,7 +1134,7 @@ "" ] }, - "execution_count": 172, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1078,7 +1154,7 @@ }, { "cell_type": "code", - "execution_count": 173, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -1087,7 +1163,7 @@ "" ] }, - "execution_count": 173, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -1099,7 +1175,7 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -1108,7 +1184,7 @@ "" ] }, - "execution_count": 174, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -1218,7 +1294,7 @@ }, { "cell_type": "code", - "execution_count": 177, + "execution_count": 35, "metadata": {}, "outputs": [], "source": [ @@ -1234,7 +1310,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 36, "metadata": {}, "outputs": [ { @@ -1243,7 +1319,7 @@ "6.852774844656239" ] }, - "execution_count": 179, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -1277,16 +1353,16 @@ }, { "cell_type": "code", - "execution_count": 187, + "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 187, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } @@ -1306,7 +1382,7 @@ }, { "cell_type": "code", - "execution_count": 190, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -1338,7 +1414,7 @@ }, { "cell_type": "code", - "execution_count": 199, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -1418,7 +1494,7 @@ "5.0 8.588600e-01 8.279498e-01 1.154986e+00" ] }, - "execution_count": 199, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -1435,16 +1511,16 @@ }, { "cell_type": "code", - "execution_count": 201, + "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 201, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, From 570e68a87b413a4c1e73bb60fa69d16ce48e2f15 Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Sun, 22 Sep 2019 11:50:33 +1000 Subject: [PATCH 3/4] added examples gallery --- .gitignore | 6 +- doc/examples/README.rst | 6 + doc/examples/analysis/pca.ipynb | 344 +++++++++++++++++++++++++++++ doc/source/_static/custom.css | 11 + doc/source/auto_examples/index.rst | 24 ++ doc/source/conf.py | 51 ++--- doc/source/index.rst | 1 + environment.yml | 3 +- 8 files changed, 412 insertions(+), 34 deletions(-) create mode 100644 doc/examples/README.rst create mode 100644 doc/examples/analysis/pca.ipynb create mode 100644 doc/source/auto_examples/index.rst diff --git a/.gitignore b/.gitignore index 39421ce87..9e4be271b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ *~ .vagrant -notebooks/.ipynb_checkpoints notebooks/*.png notebooks/*.svg notebooks/*.pdf @@ -8,4 +7,7 @@ notebooks/*.pdb notebooks/*.ndx tmp doc/build -doc/source/.ipynb_checkpoints +**/.ipynb_checkpoints +**/.vscode +.vscode +**/.DS_Store \ No newline at end of file diff --git a/doc/examples/README.rst b/doc/examples/README.rst new file mode 100644 index 000000000..2fc2c67eb --- /dev/null +++ b/doc/examples/README.rst @@ -0,0 +1,6 @@ + +======== +Examples +======== + +Here are some examples. \ No newline at end of file diff --git a/doc/examples/analysis/pca.ipynb b/doc/examples/analysis/pca.ipynb new file mode 100644 index 000000000..8ef60060d --- /dev/null +++ b/doc/examples/analysis/pca.ipynb @@ -0,0 +1,344 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Principal Component Analysis in MDAnalysis\n", + "\n", + "2019\n", + "\n", + "Author: [Lily Wang](http://minium.com.au) [(@lilyminium)](https://github.com/lilyminium)\n", + "\n", + "Inspired by the MDAnalysis PCA tutorial by [Kathleen Clark](https://becksteinlab.physics.asu.edu/people/75/kathleen-clark) [(@kaceyreidy)](https://github.com/kaceyreidy)\n", + "\n", + "In this tutorial we:\n", + "\n", + "* use PCA to analyse and visualise large macromolecular conformational changes in the enzyme adenylate kinase (AdK)\n", + "* use PCA to compare the conformational differences between ???" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Background" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Principal component analysis (PCA) is a statistical technique that decomposes a system of observations into linearly uncorrelated variables called **principal components**. These components are ordered so that the first principal component accounts for the largest variance in the data, and each following component accounts for less and less variance. PCA is often applied to molecular dynamics trajectories to extract the large-scale conformational motions or \"essential dynamics\" of a protein. The frame-by-frame conformational fluctuation can be considered a linear combination of the essential dynamics yielded by the PCA.\n", + "\n", + "In MDAnalysis, the method is as follows:\n", + "\n", + "1. Optionally align each frame in your trajectory to the first frame.\n", + "2. Construct a 3N x 3N covariance for the N atoms in your trajectory. Optionally, you can provide a mean; otherwise the covariance is to the averaged structure over the trajectory.\n", + "3. Diagonalise the covariance matrix. The eigenvectors are the principal components, and their eigenvalues are the associated variance.\n", + "4. Sort the eigenvalues so that the principal components are ordered by variance.\n", + "\n", + "
    \n", + " \n", + "**Note**\n", + " \n", + "It should be noted that principal component analysis algorithms are deterministic, but the solutions are not unique. For example, you could easily change the sign of an eigenvector without altering the PCA. Different algorithms are likely to produce different answers, due to variations in implementation. `MDAnalysis` is likely to return different solutions to, say, `cpptraj`. \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Large conformational changes in adenylate kinase" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In MDAnalysis, analysis modules usually need to be imported explicitly. The `pca` module contains the `PCA` class that we will use for analysis. We also import the AdK files from the MDAnalysis test suite." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3996de84aab74b3aa903e977a8ac80b7", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "_ColormakerRegistry()" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import MDAnalysis as mda\n", + "import MDAnalysis.analysis.pca as pca\n", + "from MDAnalysisTests.datafiles import PSF, DCD\n", + "\n", + "import nglview as nv" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As usual, we start off by creating a universe." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "u = mda.Universe(PSF, DCD)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unlike other analyses, `pc.PCA` can only be applied to `Universe`s. The default `PCA` arguments are:\n", + "\n", + "```python\n", + "my_pca = pca.PCA(u, select='all', align=False, mean=None, n_components=None)\n", + "```\n", + "\n", + "By default (`align=False`), your trajectory will not be aligned to any structure. If you set `align=True`, every frame will be aligned to the first frame of your trajectory, based on the atoms in your `select` string. \n", + "\n", + "As PCA is usually used to extract large-scale conformational motions, we select only the backbone atoms here." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "pc = pca.PCA(u, select=\"backbone\", align=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once you set up the class, you can run the analysis with `.run(start=None, stop=None, step=None, verbose=None)`. These allow you to specify the frames to compute the analysis over. The default arguments compute over every frame." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pc.run(verbose=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The principal components are accessible in `.p_components`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2565, 2565)\n" + ] + }, + { + "data": { + "text/plain": [ + "array([ 0.02725098, 0.00156086, 0.00816821, ..., -0.01783826,\n", + " 0.04746114, 0.04257271])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(pc.p_components.shape)\n", + "pc.p_components[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The variance of each principal component is in `.variance`. For example, to get the variance explained by the first principal component:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "281443.5086197605" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pc.variance[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This variance is somewhat meaningless by itself. It is much more intuitive to consider the variance of a principal component as a percentage of the total variance in the data. MDAnalysis also tracks the percentage cumulative variance in `.cumulated_variance`. As shown below, the first principal component contains 98.7% the total trajectory variance. The first three components combined account for 99.9% of the total variance." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9873464381554058\n", + "0.999419901112709\n" + ] + } + ], + "source": [ + "print(pc.cumulated_variance[0])\n", + "print(pc.cumulated_variance[3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The average structure is also saved as an `AtomGroup` in `.mean_atoms`." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[16.297781 6.8397956 -7.622989 ]\n", + " [14.900139 7.062459 -7.235277 ]\n", + " [14.185768 5.8268375 -6.879689 ]\n", + " ...\n", + " [13.035071 15.354209 -3.8042812]\n", + " [13.695147 15.725297 -4.988666 ]\n", + " [12.63667 15.566869 -6.1185045]]\n" + ] + } + ], + "source": [ + "print(pc.mean_atoms.positions)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a33209712ed34b32b969c1f8258aed91", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "NGLWidget()" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mean_structure = mda.Merge(pc.mean_atoms)\n", + "nv.show_mdanalysis(mean_structure)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python (mdanalysis)", + "language": "python", + "name": "mdanalysis" + }, + "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.7.3" + }, + "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": false + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/doc/source/_static/custom.css b/doc/source/_static/custom.css index ee690fcdd..94c125296 100644 --- a/doc/source/_static/custom.css +++ b/doc/source/_static/custom.css @@ -131,4 +131,15 @@ div.admonition.note > p.admonition-title { /* -- notebook styles --------------------------------------------------------- */ .rst-content div[class^="highlight"] pre { white-space: pre-wrap; +} + +/* -- gallery styles ---------------------------------------------------------- */ +div.sphx-glr-download a { + border: 1px solid #fff; + background: #808080; +} + +div.sphx-glr-download a:hover { + border: 1px solid #fff; + background: #000; } \ No newline at end of file diff --git a/doc/source/auto_examples/index.rst b/doc/source/auto_examples/index.rst new file mode 100644 index 000000000..74cd10b92 --- /dev/null +++ b/doc/source/auto_examples/index.rst @@ -0,0 +1,24 @@ +:orphan: + + + +.. _sphx_glr_auto_examples: + + +======== +Examples +======== + +Here are some examples. + +.. raw:: html + +
    + + + +.. only:: html + + .. rst-class:: sphx-glr-signature + + `Gallery generated by Sphinx-Gallery `_ diff --git a/doc/source/conf.py b/doc/source/conf.py index 54596f062..54d3689d5 100644 --- a/doc/source/conf.py +++ b/doc/source/conf.py @@ -14,6 +14,7 @@ # import sys # sys.path.insert(0, os.path.abspath('.')) import sphinx_rtd_theme +import sphinx_gallery # -- Project information ----------------------------------------------------- @@ -36,7 +37,8 @@ 'sphinx.ext.githubpages', 'sphinx_sitemap', 'nbsphinx', - 'sphinx_rtd_theme' + 'sphinx_rtd_theme', + 'sphinx_gallery.gen_gallery' ] mathjax_path = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML' @@ -49,6 +51,23 @@ # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '.ipynb_checkpoints'] +sphinx_gallery_conf = { + 'example_dirs': ['../examples'], # source files + 'gallery_dirs': ['auto_examples'], # where files are built + 'filename_pattern': '/plot_', # filenames to execute, accepts regex + 'ignore_pattern': r'__init__\.py', # filenames to not execute/parse/add, accepts regex + 'download_all_examples': False, + + # 'binder': { + # 'org': 'MDAnalysis', + # 'repo': 'UserGuide', + # 'branch': 'master' + # 'binderhub_url': 'full URL of binderhub deployment', + # 'dependencies': './binder/requirements.txt', + # 'use_jupyter_lab': False + # } + +} # -- Options for HTML output ------------------------------------------------- @@ -85,7 +104,6 @@ 'display_version': True, 'prev_next_buttons_location': 'bottom', 'style_external_links': False, - 'vcs_pageview_mode': '', 'style_nav_header_background': 'white', #'#e76900', # dark orange # Toc options 'collapse_navigation': True, @@ -93,37 +111,8 @@ 'navigation_depth': 5, 'includehidden': True, 'titles_only': False, - - 'github_url': 'https://github.com/MDAnalysis/mdanalysis' } -# alabaster options -# html_theme_options = { -# 'logo' : "logos/mdanalysistutorial-logo-200x150.png", -# 'github_user': 'MDAnalysis', -# 'github_repo': 'mdanalysis', -# 'github_button': False, -# # 'github_type': 'star', -# 'github_banner': True, -# 'show_related': True, -# 'fixed_sidebar': False, -# 'sidebar_includehidden': True, -# 'sidebar_collapse': True, -# # style -# 'link': color['orange'], -# 'link_hover': color['orange'], -# 'gray_1': color['gray'], -# 'narrow_sidebar_bg': color['gray'], -# 'narrow_sidebar_fg': color['white'], -# # typography -# 'font_family': "'PT Sans', Helvetica, Arial, 'sans-serif'", -# 'head_font_family': "", -# 'code_font_family': "Menlo, Monaco, 'Courier New', monospace", -# 'caption_font_size': "smaller", -# # external links -# 'extra_nav_links': extra_nav_links, -# } - # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. diff --git a/doc/source/index.rst b/doc/source/index.rst index 468716af7..2bd271c35 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -17,6 +17,7 @@ Link to gallery. installation quickstart faq + auto_examples/index .. toctree:: :maxdepth: 1 diff --git a/environment.yml b/environment.yml index d9ffe0f1b..e00c49080 100644 --- a/environment.yml +++ b/environment.yml @@ -9,4 +9,5 @@ dependencies: - mdanalysis - mdanalysistests - sphinx_rtd_theme - - nbsphinx \ No newline at end of file + - nbsphinx + - sphinx-gallery \ No newline at end of file From 66b245847460c34d7ff5210277c1aab9c4d45f5d Mon Sep 17 00:00:00 2001 From: Lily Wang Date: Sun, 22 Sep 2019 12:06:44 +1000 Subject: [PATCH 4/4] removed commented line --- doc/source/_static/custom.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/source/_static/custom.css b/doc/source/_static/custom.css index 94c125296..5fbb18515 100644 --- a/doc/source/_static/custom.css +++ b/doc/source/_static/custom.css @@ -7,8 +7,6 @@ /* MDAnalysis black: #000000 */ /* Darker orange: e76900 */ -/* @import url('readable.css'); */ - /* -- page layout --------------------------------------------------------- */ body {