{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example for a Pandas Analysis\n", "## Analyzing the Velocity Vectors in a GROMACS output File\n", "\n", "At the end of a Molecular Dynamics (MD) simulation, GROMACS mdrun will write the system at the final simulation step into a file in the .gro format.\n", "\n", "Here we want to plot the velocity distribution of all paricles in the system at this simulation step to see if the system behaves according to a [Maxwell-Boltzmann distribution](https://en.wikipedia.org/wiki/Maxwell%E2%80%93Boltzmann_distribution).\n", "\n", "The format specifications can be found at: \n", ". \n", "The first line contains a comment, the second line the number of atoms in the system. The last line contains the definition of the simulation box (box vectors). None of these lines are relevant for this analysis.\n", "\n", "Instead we are interested in the column with the element symbols and the columns with the x, y and z components of the velocity vectors." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/home/ostueker/Carpentry/CMSC6950-2017/lectures/pandas_data\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "from matplotlib import pylab as plt\n", "%matplotlib inline\n", "%cd pandas_data/" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first and last lines of the first data file: \n", "(Yes, we can run Unix commands from within the Jupyter Notebook!)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Chloroethane\r\n", " 8000\r\n", " 1LIG C 1 1.767 1.718 4.553 -0.3691 0.0876 0.2868\r\n", " 1LIG H 2 1.874 1.726 4.572 0.2073 -0.9631 -2.1583\r\n", " 1LIG H 3 1.731 1.817 4.580 -0.7323 0.1380 -0.3705\r\n", " 1LIG H 4 1.728 1.643 4.623 -2.0876 0.3128 -0.4014\r\n", " 1LIG C 5 1.734 1.699 4.405 -0.0319 -0.8964 0.3304\r\n", " 1LIG H 6 1.777 1.606 4.367 -0.4904 -0.2839 -1.7862\r\n", " 1LIG H 7 1.775 1.783 4.349 -2.4901 0.9136 1.0744\r\n", " 1LIG CL 8 1.557 1.698 4.385 0.0449 -0.2186 -0.4189\r\n", " 2LIG C 9 2.280 0.416 3.435 -0.3748 -0.2371 0.2111\r\n", " 2LIG H 10 2.376 0.465 3.453 0.6476 -1.9921 -0.1844\r\n", " 2LIG H 11 2.221 0.430 3.525 0.0786 -0.6578 0.5836\r\n", " 2LIG H 12 2.309 0.311 3.437 -3.1216 -1.0492 2.4335\r\n", " 2LIG C 13 2.222 0.461 3.301 -0.8851 0.5726 0.6990\r\n" ] } ], "source": [ "!head -n15 nvt_berendsen.gro" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 1000LIG C 7997 0.152 2.024 2.110 0.3288 0.4162 -0.2861\r\n", " 1000LIG H 7998 0.081 1.954 2.155 0.7683 -1.1081 -1.8281\r\n", " 1000LIG H 7999 0.141 2.021 2.002 -0.6068 3.3358 -0.3694\r\n", " 1000LIG CL 8000 0.089 2.180 2.168 0.0204 0.2227 -0.0991\r\n", " 4.92200 4.92200 4.92200\r\n" ] } ], "source": [ "!tail -n5 nvt_berendsen.gro" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Define some column headers and read the file directly into a pandas data frame." ] }, { "cell_type": "code", "execution_count": 4, "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", " \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", "
res_idelematomnoxyzvxvyvz
79951000LIGH7996.00.3602.0762.1280.3706-0.2737-1.3683
79961000LIGC7997.00.1522.0242.1100.32880.4162-0.2861
79971000LIGH7998.00.0811.9542.1550.7683-1.1081-1.8281
79981000LIGH7999.00.1412.0212.002-0.60683.3358-0.3694
79991000LIGCL8000.00.0892.1802.1680.02040.2227-0.0991
\n", "
" ], "text/plain": [ " res_id elem atomno x y z vx vy vz\n", "7995 1000LIG H 7996.0 0.360 2.076 2.128 0.3706 -0.2737 -1.3683\n", "7996 1000LIG C 7997.0 0.152 2.024 2.110 0.3288 0.4162 -0.2861\n", "7997 1000LIG H 7998.0 0.081 1.954 2.155 0.7683 -1.1081 -1.8281\n", "7998 1000LIG H 7999.0 0.141 2.021 2.002 -0.6068 3.3358 -0.3694\n", "7999 1000LIG CL 8000.0 0.089 2.180 2.168 0.0204 0.2227 -0.0991" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gro_header=['res_id', 'elem', 'atomno', 'x', 'y', 'z', 'vx', 'vy', 'vz']\n", "\n", "df = pd.read_table('nvt_berendsen.gro', sep='\\s+', skiprows=2, names=gro_header)\n", "\n", "df.iloc[-1]=np.NaN # last line contains the definition of the simulation box.\n", "df.dropna(inplace=True)\n", "\n", "df.tail()" ] }, { "cell_type": "code", "execution_count": 5, "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", " \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", "
res_idelematomnoxyzvxvyvz
01LIGC1.01.7671.7184.553-0.36910.08760.2868
11LIGH2.01.8741.7264.5720.2073-0.9631-2.1583
21LIGH3.01.7311.8174.580-0.73230.1380-0.3705
31LIGH4.01.7281.6434.623-2.08760.3128-0.4014
41LIGC5.01.7341.6994.405-0.0319-0.89640.3304
\n", "
" ], "text/plain": [ " res_id elem atomno x y z vx vy vz\n", "0 1LIG C 1.0 1.767 1.718 4.553 -0.3691 0.0876 0.2868\n", "1 1LIG H 2.0 1.874 1.726 4.572 0.2073 -0.9631 -2.1583\n", "2 1LIG H 3.0 1.731 1.817 4.580 -0.7323 0.1380 -0.3705\n", "3 1LIG H 4.0 1.728 1.643 4.623 -2.0876 0.3128 -0.4014\n", "4 1LIG C 5.0 1.734 1.699 4.405 -0.0319 -0.8964 0.3304" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate the length of the velocity vector as:\n", "\n", "$ |\\overrightarrow{v}| = \\sqrt{ v_x^2 + v_y^2 + v_z^2 }$" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df['vel'] = (df.vx **2 + df.vy **2 + df.vz **2) **0.5" ] }, { "cell_type": "code", "execution_count": 7, "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", " \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", "
res_idelematomnoxyzvxvyvzvel
01LIGC1.01.7671.7184.553-0.36910.08760.28680.475566
11LIGH2.01.8741.7264.5720.2073-0.9631-2.15832.372508
21LIGH3.01.7311.8174.580-0.73230.1380-0.37050.832212
31LIGH4.01.7281.6434.623-2.08760.3128-0.40142.148730
41LIGC5.01.7341.6994.405-0.0319-0.89640.33040.955884
\n", "
" ], "text/plain": [ " res_id elem atomno x y z vx vy vz vel\n", "0 1LIG C 1.0 1.767 1.718 4.553 -0.3691 0.0876 0.2868 0.475566\n", "1 1LIG H 2.0 1.874 1.726 4.572 0.2073 -0.9631 -2.1583 2.372508\n", "2 1LIG H 3.0 1.731 1.817 4.580 -0.7323 0.1380 -0.3705 0.832212\n", "3 1LIG H 4.0 1.728 1.643 4.623 -2.0876 0.3128 -0.4014 2.148730\n", "4 1LIG C 5.0 1.734 1.699 4.405 -0.0319 -0.8964 0.3304 0.955884" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plot the velocity distribution (histogram):" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nKeD2kVYtSRpYqqp/p/kR+THgXwF/XFW/k+SNqlrbPB/g9apam+QR4Jmqerx57gDwVFUdvuQ1dwO7\nASYnJ2+bmZkZuvi5uTkmJiYWfP742TeHfs0rafJaOP9T2Lr++nGXsiT9fv6rnfWPX9vPYdz1b9u2\n7VhVTfXrN9BfmKqqd4Bbk6wFnkjy8UueryT9PzHef8x+YD/A1NRUTU9PD3M4ALOzsyx23P2X/EWn\n1eahrRf58vEPcvq+6XGXsiT9fv6rnfWPX9vPoS31D7XqpqreAL7N/Nz7+STrAJrHC023s8DGnsM2\nNG2SpDEYZNXNR5uRPEmuBT4N/BA4Auxquu0Cnmy2jwA7k1yTZDOwBXh21IVLkgYzyNTNOuBgM0//\nAeBQVX0jyd8Ah5I8ALwC3AtQVSeSHAJOAheBB5upH0nSGPQN+qr6n8AnL9P+Y+DOBY7ZB+xbdnWS\npGXzm7GS1HEGvSR13EDLK7WyNi2wDPT0w3df4UokdZFB30ILfTCAHw6Sfp5TN5LUcY7oV7HFRu6S\nNChH9JLUcY7oO8YLu5Iu5YhekjrOoJekjnPqRivKqSRp/Ax6jYQrhKTVy6kbSeo4g16SOs6pm6uE\nc+XS1csRvSR1nEEvSR3n1M1VbtjVMk71SO3jiF6SOs6gl6SO6xv0STYm+XaSk0lOJPli035jkqeT\nvNQ83tBzzN4kp5K8mOSulTwBSdLiBhnRXwQeqqqbgV8GHkxyM7AHOFpVW4CjzT7NczuBW4DtwKNJ\n1qxE8ZKk/voGfVWdq6rvN9v/CLwArAd2AAebbgeBe5rtHcBMVb1dVS8Dp4DbR124JGkwqarBOyeb\ngO8AHwf+T1WtbdoDvF5Va5M8AjxTVY83zx0Anqqqw5e81m5gN8Dk5ORtMzMzQxc/NzfHxMTEgs8f\nP/vm0K95JU1eC+d/Ou4qhrN1/fXvbff+/If9Wfe+zrj0+/1Z7dpeP7T/HMZd/7Zt245V1VS/fgMv\nr0wyAXwd+FJV/WQ+2+dVVSUZ/BNj/pj9wH6Aqampmp6eHuZwAGZnZ1nsuPtX+Y22Htp6kS8fb9cK\n19P3Tb+33fvzH/pnffyty7/+FVy+2e/3Z7Vre/3Q/nNoS/0DpUySDzEf8l+tqj9rms8nWVdV55Ks\nAy407WeBjT2Hb2ja1AG96+4f2npx1X+YShps1U2AA8ALVfUHPU8dAXY127uAJ3vadya5JslmYAvw\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df['vel'].hist(bins=50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Calculate some basic statistics on the data columns:" ] }, { "cell_type": "code", "execution_count": 9, "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", " \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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
atomnoxyzvxvyvzvel
count8000.000008000.0000008000.0000008000.0000008000.0000008000.0000008000.0000008000.000000
mean4000.500002.4632832.4386902.454125-0.012186-0.0045630.0291421.467645
std2309.545411.4240871.4132231.4247521.0544391.0592651.0645021.101733
min1.00000-0.204000-0.233000-0.224000-5.189200-4.971500-5.5887000.026528
25%2000.750001.2257501.2240001.235500-0.455975-0.460625-0.4548000.556672
50%4000.500002.4465002.4290002.434500-0.0144000.0032500.0130501.132518
75%6000.250003.7000003.6712503.6902500.4221250.4473500.4839002.192343
max8000.000005.1590005.1490005.1280005.6875004.9318005.1154006.360739
\n", "
" ], "text/plain": [ " atomno x y z vx \\\n", "count 8000.00000 8000.000000 8000.000000 8000.000000 8000.000000 \n", "mean 4000.50000 2.463283 2.438690 2.454125 -0.012186 \n", "std 2309.54541 1.424087 1.413223 1.424752 1.054439 \n", "min 1.00000 -0.204000 -0.233000 -0.224000 -5.189200 \n", "25% 2000.75000 1.225750 1.224000 1.235500 -0.455975 \n", "50% 4000.50000 2.446500 2.429000 2.434500 -0.014400 \n", "75% 6000.25000 3.700000 3.671250 3.690250 0.422125 \n", "max 8000.00000 5.159000 5.149000 5.128000 5.687500 \n", "\n", " vy vz vel \n", "count 8000.000000 8000.000000 8000.000000 \n", "mean -0.004563 0.029142 1.467645 \n", "std 1.059265 1.064502 1.101733 \n", "min -4.971500 -5.588700 0.026528 \n", "25% -0.460625 -0.454800 0.556672 \n", "50% 0.003250 0.013050 1.132518 \n", "75% 0.447350 0.483900 2.192343 \n", "max 4.931800 5.115400 6.360739 " ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Group by Chemical Element (groupby() function)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "gb = df[ ['elem', 'vel' ] ].groupby('elem')\n", "#.plot(kind='hist', bins=50, by='elem')" ] }, { "cell_type": "code", "execution_count": 11, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
atomnoxyzvxvyvzvel
elem
C3999.02.4633802.4385972.454332-0.006034-0.0079160.0021830.583025
CL4004.02.4593522.4387082.4521380.0067050.006123-0.0082240.406433
H4000.42.4640302.4387242.454439-0.018426-0.0053590.0473982.033736
\n", "
" ], "text/plain": [ " atomno x y z vx vy vz \\\n", "elem \n", "C 3999.0 2.463380 2.438597 2.454332 -0.006034 -0.007916 0.002183 \n", "CL 4004.0 2.459352 2.438708 2.452138 0.006705 0.006123 -0.008224 \n", "H 4000.4 2.464030 2.438724 2.454439 -0.018426 -0.005359 0.047398 \n", "\n", " vel \n", "elem \n", "C 0.583025 \n", "CL 0.406433 \n", "H 2.033736 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(['elem']).mean()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "elem \n", "C count 2000.000000\n", " mean 0.583025\n", " std 0.257527\n", " min 0.026859\n", " 25% 0.393001\n", " 50% 0.556925\n", " 75% 0.746270\n", " max 1.856181\n", "CL count 1000.000000\n", " mean 0.406433\n", " std 0.173878\n", " min 0.026528\n", " 25% 0.274518\n", " 50% 0.389485\n", " 75% 0.516921\n", " max 1.098677\n", "H count 5000.000000\n", " mean 2.033736\n", " std 1.025087\n", " min 0.122229\n", " 25% 1.242298\n", " 50% 1.903030\n", " 75% 2.678381\n", " max 6.360739\n", "Name: vel, dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(['elem'])['vel'].describe()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "elem\n", "C 2000\n", "CL 1000\n", "H 5000\n", "Name: vel, dtype: int64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(['elem'])['vel'].count()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "elem\n", "C 0.583025\n", "CL 0.406433\n", "H 2.033736\n", "Name: vel, dtype: float64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(['elem'])['vel'].mean()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "elem\n", "C 0.556925\n", "CL 0.389485\n", "H 1.903030\n", "Name: vel, dtype: float64" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(['elem'])['vel'].median()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "elem\n", "C 0.257527\n", "CL 0.173878\n", "H 1.025087\n", "Name: vel, dtype: float64" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.groupby(['elem'])['vel'].std()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "elem\n", "C Axes(0.125,0.125;0.775x0.755)\n", "CL Axes(0.125,0.125;0.775x0.755)\n", "H Axes(0.125,0.125;0.775x0.755)\n", "Name: vel, dtype: object" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQjOXoTx7AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.groupby(['elem'])['vel'].hist(bins=50, alpha=0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Panda's `.plot()` function offers more options than the `.hist()` function." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "elem\n", "C Axes(0.125,0.125;0.775x0.755)\n", "CL Axes(0.125,0.125;0.775x0.755)\n", "H Axes(0.125,0.125;0.775x0.755)\n", "Name: vel, dtype: object" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.groupby(['elem'])['vel'].plot(kind='hist', bins=50, alpha=0.7, legend=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Subplots with Matplotlib\n", "\n", "Pyplot Tutorial [Working with multiple figures and axes](http://matplotlib.org/users/pyplot_tutorial.html#working-with-multiple-figures-and-axes)\n", "\n", "We create one figure with Matplotlib, which we divide in three subplots.\n", "The `suptitle()` command sets a super-title for the whole figure.\n", "\n", "The `subplot()` command specifies `numrows`, `numcols`, `fignum` where `fignum` ranges from `1` to `numrows*numcols`. The commas in the subplot command are optional if `numrows*numcols<10`. So `subplot(211)` is identical to `subplot(2, 1, 1)`.\n", "\n", "The titles for the subplot panels could also be passed to `DataFrame.plot( ..., title='Subplot Title')` \n" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nls3+sf1+Y5IL5nJcmmv+bm9/3lfRXIf54jam22huWrKCpkfzOpq/k5k+JJjS19/nLF5FM8TxOpqb\np3ykZ9lDaIq8m9s4bwT+bh6OOZ/+iOYGO5e0cX6a5prA+fJqmsL3BzR/q5+k+RAHBnvfvBt4AE1e\n+CbNMNles73nJalTUuVIBUlaCEl+m6bX4VFl8pUkSQvMnj9JWgDt0LvXAP9g4SdJkkbB4k+Shqy9\n3usWmuFs7x5xOJIkaUI57FOSJEmSJoA9f5IkSZI0ASz+JEmSJGkCWPxJkiRJ0gSw+JMkSZKkCWDx\nJ0mSJEkTwOJPkiRJkiaAxZ9GLsmxST4+6jgkaS6SVJJfHnUckhaXrZ0fJVmX5HfnuO/fSnLZ3KPT\nuLL405zMlHCSvCzJ2aOKSZL6leQPk5yX5PYkG5L8a5JnjDouSZNnFPmoqv69qvYZ5jHUTRZ/6rQk\n2486BkmLS5LXAe8G/hrYFVgKvB944YD7MT9J2ibzlY8GPKa5a4JZ/GneJfnfST4zre29Sd7TPt4r\nydeS3JbkDGCXnvWWtUOojkzyQ+Df2vYXJrk4yS1JvprkcT3bPDnJt9v9/WOSTyV5W8/y5ye5sN32\n60l+rWfZuiR/nuS7Sf6r3fb+w/vpSBqlJA8F/hI4qqo+W1U/qqqfVdXnquoNSfZP8o02X2xI8r4k\n9+3ZvpIcleRy4PKeXT8vyQ+S3JDk75Lcp13/PknenOSqJBuTfLSNoTffHZHkh+22f7GQPw9Jo7O1\nfNSudt82b9zWngctn2Vf90vy7iTXtl/vTnK/dtkBSa5J8sYk1wEfmWrr2X6L50NbOpfSeLH40zB8\nHDgoycPg7k+YVgAfbZd/Ejifpuj7K+CIGfbxTOBxwHOSPBY4CXgtsAT4PPAvSe7bnpT9E3AisHO7\n3oumdpLkScAJwJ8AvwR8CDhtKiG2DgMOAvYCfg142Ta9ekld9hvA/Wnyxkw2A39Gk59+AzgQ+F/T\n1jkUeCqwb0/bi4DlwJOBQ4BXtO0va7+eBTwa2BF437T9PQPYpz3WW3o/3JK0qG0tH0HTA3gy8DDg\nNO6dP6b8BfA0YD/gicD+wJt7lj+C5jzpUcDKWfYx4/lQn+dSGhMWf9oW/9x+AnRLkluADwBU1Qbg\nLOD32/UOAm6oqvOTLAWeAvy/VXVHVZ0F/MsM+z62/QTsJ8AfAKdX1RlV9TPg7cADgN+kSXTbA+9t\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig1 = plt.figure(1, figsize=(15,5), )\n", "plt.suptitle('Velocity Distribution with Berendsen Thermostat') # Figure super title\n", "\n", "plt.subplot(1, 3, 1)\n", "plot_h = df[ df['elem'] == 'H' ]['vel'].plot(kind='hist', bins=50, xlim=(0.,5.))\n", "plot_h.set_title('Hydrogen')\n", "\n", "plt.subplot(1, 3, 2)\n", "plot_c = df[ df['elem'] == 'C' ]['vel'].plot(kind='hist', bins=20, xlim=(0.,5.))\n", "plot_c.set_title('Carbon')\n", "\n", "plt.subplot(1, 3, 3)\n", "plot_cl= df[ df['elem'] == 'CL' ]['vel'].plot(kind='hist', bins=20, xlim=(0.,5.))\n", "plot_cl.set_title('Chlorine')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Do the same for a different file (the simulation used a different thermostat algorithm)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "df_bussi = pd.read_table('nvt_bussi.gro', sep='\\s+', skiprows=2, names=gro_header)\n", "df_bussi['vel'] = (df_bussi.vx **2 + df_bussi.vy **2 + df_bussi.vz **2) **0.5" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig1 = plt.figure(1, figsize=(15,5), )\n", "plt.suptitle('Velocity Distribution with Bussi Thermostat')\n", "\n", "plt.subplot(131)\n", "plot_h = df_bussi[ df_bussi['elem']=='H' ]['vel'].plot(kind='hist', bins=50, xlim=(0.,5.))\n", "plot_h.set_title('Hydrogen')\n", "\n", "plt.subplot(132)\n", "plot_c = df_bussi[ df_bussi['elem']=='C' ]['vel'].plot(kind='hist', bins=20, xlim=(0.,5.))\n", "plot_c.set_title('Carbon')\n", "\n", "plt.subplot(133)\n", "plot_cl= df_bussi[ df_bussi['elem']=='CL']['vel'].plot(kind='hist', bins=20, xlim=(0.,5.))\n", "plot_cl.set_title('Chlorine')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Conclusion\n", "While one can recognize the expected shape, the distribution seems to have many outliers. The Analysis should be repeated with a larger system and/or a larger number of simulation frames." ] } ], "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.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }