{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gromos Trajectory Examples\n",
    "\n",
    "## Example file for the evaluation of GROMOS trajectory files in pygromos"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "854ec9af74954e70812a1da4b48e861a",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#specific imports from pygromos for trc and tre file support\n",
    "import pygromos.files.trajectory.trc as traj_trc\n",
    "import pygromos.files.trajectory.tre as traj_tre\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1) TRC"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.1) TRC import"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import the trajectory file into a Trc class\n",
    "trc = traj_trc.Trc(traj_path='../example_files/Traj_files/b_emin_vacuum_1.trc',\n",
    "          in_cnf='../example_files/Traj_files/b_emin_vacuum.cnf')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The TRC class bridges the GROMOS TRC file based strucutres and mdtraj.Trajectories.\n",
    "\n",
    "One can read in TRCs and use them just like mdtraj.Trajectories. One can than write them out both as .h5 as well as GROMOS .trc/trc.gz files.\n",
    "\n",
    "If you have a function that's generally useful, please contact the developers to possibly add it to the pygromos code to help other people :)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['TITLE',\n",
       " 'atom_slice',\n",
       " 'center_coordinates',\n",
       " 'distances',\n",
       " 'generate_TITLE_entry',\n",
       " 'generate_entry_for_frame',\n",
       " 'get_dummy_cnf',\n",
       " 'image_molecules',\n",
       " 'join',\n",
       " 'load',\n",
       " 'make_molecules_whole',\n",
       " 'n_atoms',\n",
       " 'n_chains',\n",
       " 'n_frames',\n",
       " 'n_residues',\n",
       " 'openmm_boxes',\n",
       " 'openmm_positions',\n",
       " 'parse_trc_efficiently',\n",
       " 'path',\n",
       " 'recreate_view',\n",
       " 'remove_solvent',\n",
       " 'restrict_atoms',\n",
       " 'rmsd',\n",
       " 'save',\n",
       " 'save_amberrst7',\n",
       " 'save_binpos',\n",
       " 'save_dcd',\n",
       " 'save_dtr',\n",
       " 'save_gro',\n",
       " 'save_gsd',\n",
       " 'save_hdf5',\n",
       " 'save_lammpstrj',\n",
       " 'save_lh5',\n",
       " 'save_mdcrd',\n",
       " 'save_netcdf',\n",
       " 'save_netcdfrst',\n",
       " 'save_pdb',\n",
       " 'save_tng',\n",
       " 'save_trr',\n",
       " 'save_xtc',\n",
       " 'save_xyz',\n",
       " 'slice',\n",
       " 'smooth',\n",
       " 'stack',\n",
       " 'step',\n",
       " 'superpose',\n",
       " 'time',\n",
       " 'timestep',\n",
       " 'to_cnf',\n",
       " 'top',\n",
       " 'topology',\n",
       " 'unitcell_angles',\n",
       " 'unitcell_lengths',\n",
       " 'unitcell_vectors',\n",
       " 'unitcell_volumes',\n",
       " 'view',\n",
       " 'write',\n",
       " 'write_trc',\n",
       " 'xyz']"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[x for x in dir(trc) if not x.startswith(\"_\")]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2) TRC file handling"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Save as .h5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'./traj.h5'"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trc.save('./traj.h5') "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Save as trc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc.save('./traj.trc.gz')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### export last frame as cnf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "TITLE\n",
       "THIS IS THE FRAME AT TIMESTEP: 4.0 OF THE TRAJECTORY WITH TITLE: MD++steepest descent energy minimization of the peptide in vacuum>>> Generated with PyGromosTools (riniker group) <<<position trajectoryEND\n",
       "POSITION\n",
       "# \t \n",
       "    1 VAL   H1         0    0.858298182    1.499708533    1.397253275\n",
       "    1 VAL   H2         1    0.953678370    1.440333724    1.515184283\n",
       "    1 VAL   N          2    0.913451612    1.421260476    1.425633550\n",
       "    1 VAL   H3         3    0.855719924    1.339777827    1.431015491\n",
       "    1 VAL   CA         4    1.022031069    1.399157882    1.329032302\n",
       "    1 VAL   CB         5    0.952420831    1.374197721    1.195075631\n",
       "    1 VAL   CG1        6    0.913190961    1.499370813    1.116295457\n",
       "    1 VAL   CG2        7    1.026286483    1.267775059    1.113663197\n",
       "    1 VAL   C          8    1.119535685    1.516167402    1.343593240\n",
       "    1 VAL   O          9    1.121832848    1.571724653    1.453307033\n",
       "    2 TYR   N         10    1.202524424    1.547034740    1.244336247\n",
       "    2 TYR   H         11    1.207148552    1.490973473    1.161649466\n",
       "    2 TYR   CA        12    1.303517222    1.653589725    1.236642957\n",
       "    2 TYR   CB        13    1.247369647    1.791285038    1.200619698\n",
       "    2 TYR   CG        14    1.197796106    1.877276540    1.317051053\n",
       "    2 TYR   CD1       15    1.071256876    1.857888699    1.371185541\n",
       "    2 TYR   HD1       16    0.993085802    1.811082721    1.311375499\n",
       "    2 TYR   CD2       17    1.288784027    1.961568475    1.379797101\n",
       "    2 TYR   HD2       18    1.383159995    1.985753894    1.330927134\n",
       "    2 TYR   CE1       19    1.040328622    1.914669991    1.494227052\n",
       "    2 TYR   HE1       20    0.939020157    1.905765176    1.533425450\n",
       "    2 TYR   CE2       21    1.257037044    2.019920826    1.501881838\n",
       "    2 TYR   HE2       22    1.325480461    2.093687534    1.543774128\n",
       "    2 TYR   CZ        23    1.134425282    1.992075920    1.561123490\n",
       "    2 TYR   OH        24    1.123193622    2.005527496    1.695985913\n",
       "    2 TYR   HH        25    1.175849319    2.085860014    1.723783255\n",
       "    2 TYR   C         26    1.418586850    1.648926616    1.337371469\n",
       "    2 TYR   O         27    1.523679972    1.595995188    1.301521301\n",
       "    3 ARG   N         28    1.396972656    1.675651789    1.465864182\n",
       "    3 ARG   H         29    1.309179425    1.712227583    1.496792197\n",
       "    3 ARG   CA        30    1.504508853    1.665650368    1.565602183\n",
       "    3 ARG   CB        31    1.486977339    1.767935872    1.678033829\n",
       "    3 ARG   CG        32    1.373603702    1.738026977    1.776329041\n",
       "    3 ARG   CD        33    1.415657640    1.794736385    1.912081718\n",
       "    3 ARG   NE        34    1.386569738    1.698562503    2.019374609\n",
       "    3 ARG   HE        35    1.292315245    1.701340795    2.052666664\n",
       "    3 ARG   CZ        36    1.472650051    1.610763788    2.072641850\n",
       "    3 ARG   NH1       37    1.596361995    1.592568755    2.024506330\n",
       "    3 ARG   HH11      38    1.661001921    1.530819535    2.069304466\n",
       "    3 ARG   HH12      39    1.621459961    1.630685449    1.935536146\n",
       "    3 ARG   NH2       40    1.436868072    1.541736007    2.181771994\n",
       "    3 ARG   HH21      41    1.500163198    1.475605249    2.222011805\n",
       "    3 ARG   HH22      42    1.348556042    1.557563543    2.225923061\n",
       "    3 ARG   C         43    1.542207122    1.526291847    1.616297126\n",
       "    3 ARG   O         44    1.574849486    1.506344676    1.733203053\n",
       "    4 LYSH  N         45    1.538578033    1.431676269    1.522896171\n",
       "    4 LYSH  H         46    1.539155364    1.463887453    1.428223729\n",
       "    4 LYSH  CA        47    1.564581990    1.287459135    1.534663439\n",
       "    4 LYSH  CB        48    1.482068777    1.220921040    1.644995928\n",
       "    4 LYSH  CG        49    1.553891420    1.094621658    1.692990303\n",
       "    4 LYSH  CD        50    1.455659389    0.988943756    1.743898392\n",
       "    4 LYSH  CE        51    1.532733679    0.865419090    1.790902019\n",
       "    4 LYSH  NZ        52    1.442433715    0.751384020    1.812048912\n",
       "    4 LYSH  HZ1       53    1.408901930    0.719389319    1.723440170\n",
       "    4 LYSH  HZ2       54    1.364803195    0.780083120    1.868170381\n",
       "    4 LYSH  HZ3       55    1.491788745    0.677637756    1.858152866\n",
       "    4 LYSH  C         56    1.540888786    1.215819478    1.401547551\n",
       "    4 LYSH  O         57    1.445617437    1.139712334    1.385369897\n",
       "    5 GLN   N         58    1.620790362    1.257511973    1.303739190\n",
       "    5 GLN   H         59    1.691180825    1.327280164    1.317106128\n",
       "    5 GLN   CA        60    1.639090419    1.212603927    1.164958239\n",
       "    5 GLN   CB        61    1.516473532    1.236391783    1.076570988\n",
       "    5 GLN   CG        62    1.487887502    1.382966638    1.043351531\n",
       "    5 GLN   CD        63    1.366745234    1.400402308    0.951538980\n",
       "    5 GLN   OE1       64    1.254561663    1.426969886    0.994376242\n",
       "    5 GLN   NE2       65    1.389542460    1.397161841    0.820551813\n",
       "    5 GLN   HE21      66    1.312573314    1.408466220    0.757729173\n",
       "    5 GLN   HE22      67    1.483796239    1.384176731    0.789786577\n",
       "    5 GLN   C         68    1.759001017    1.293522954    1.115122199\n",
       "    5 GLN   O1        69    1.792673707    1.280218840    0.995480478\n",
       "    5 GLN   O2        70    1.810874224    1.373489738    1.196003079\n",
       "END\n",
       "GENBOX\n",
       "    0\n",
       "    0.000000000    0.000000000    0.000000000\n",
       "    0.000000000    0.000000000    0.000000000\n",
       "    0.000000000    0.000000000    0.000000000\n",
       "    0.000000000    0.000000000    0.000000000\n",
       "END"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trc[-1].to_cnf(base_cnf='../example_files/Traj_files/b_emin_vacuum.cnf')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Get selection of trajectories"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "trc[::10].n_frames"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Save out selection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc[::10].save('9_frames.trc')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.3) TRC Calculate\n",
    "#### RMSD"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Calculate the rmsd to the initial frame (0th frame).\n",
    "# Alternatively a different trajectory can be provide as argument to the rmsd function.\n",
    "# The accepted arguments are integer or single trajectory frame.\n",
    "rmsd = trc.rmsd(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rmsd</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.00</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.05</th>\n",
       "      <td>0.013725</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.10</th>\n",
       "      <td>0.022836</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.15</th>\n",
       "      <td>0.030384</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.20</th>\n",
       "      <td>0.036549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.80</th>\n",
       "      <td>0.177028</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.85</th>\n",
       "      <td>0.177924</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.90</th>\n",
       "      <td>0.178814</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.95</th>\n",
       "      <td>0.179699</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.00</th>\n",
       "      <td>0.180578</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>81 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          rmsd\n",
       "time          \n",
       "0.00  0.000000\n",
       "0.05  0.013725\n",
       "0.10  0.022836\n",
       "0.15  0.030384\n",
       "0.20  0.036549\n",
       "...        ...\n",
       "3.80  0.177028\n",
       "3.85  0.177924\n",
       "3.90  0.178814\n",
       "3.95  0.179699\n",
       "4.00  0.180578\n",
       "\n",
       "[81 rows x 1 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Which returns the rmsd for every time frame to the initial frame.\n",
    "# It can be seen how the rmsd slowly gets larger as the simulations get farther away from the initial setup.\n",
    "rmsd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "rmsd    0.121639\n",
       "dtype: float32"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The mean over all frames can be easily taken with the pandas function mean()\n",
    "rmsd.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.4) TRC Visualization\n",
    "#### Create Visualization:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "13f73da546ca4e9780ad10293eef8b2d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "NGLWidget(max_frame=80)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "view = trc.view\n",
    "view"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Do some changes and see how the visualization changes\n",
    "To jump to a certain frame, use the slider in the widget or select frames with the following cell:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc.view.frame = 70"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### let's find hydrogenbonds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc.view.add_contact(hydrogenBond=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### add surface"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc.view.add_surface(color=\"lightgrey\",opacity=0.3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### remove surface"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc.view.remove_surface()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### add transperent cartoon"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc.view.add_representation(\"cartoon\",selection=\"protein\",color='lightblue',opacity=0.3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### show distance between atom pair"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc.view.add_distance(atom_pair=[[10,16]], label_color=\"black\",color=\"darkgrey\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### once you are happy with the result render and download image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "trc.view.download_image('first_protein.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Go crazy and make a movie to show off"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "### uncomment this for fast installation of NOT provided package\n",
    "# import sys\n",
    "# !{sys.executable} -m pip install moviepy\n",
    "\n",
    "import moviepy.editor as mpy\n",
    "from IPython import display\n",
    "from time import sleep\n",
    "import tqdm\n",
    "import os\n",
    "\n",
    "# Setup frames\n",
    "frames = len(trc.step)\n",
    "template = '0image{}.png'\n",
    "download_dir = os.getcwd()\n",
    "imagefiles = [download_dir + template.format(str(i)) for i in range(0, frames, 1)]\n",
    "\n",
    "# render frames\n",
    "for frame in tqdm.tqdm(range(0, frames)):\n",
    "    trc.view.frame = frame\n",
    "    sleep(0.2) # depending on the speed of the computer this might need to be increased\n",
    "    trc.view.download_image(filename=template.format(frame))\n",
    "    sleep(1) # depending on the speed of the computer this might need to be increased\n",
    "\n",
    "# set frames per second and generate object\n",
    "frame_per_second = 8\n",
    "im = mpy.ImageSequenceClip(imagefiles, fps=frame_per_second)\n",
    "im.write_gif('protein.gif', fps=frame_per_second)\n",
    "\n",
    "# show movie\n",
    "display.HTML(\"<img src='protein.gif'></img>\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2) TRE"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.1) Tre import and structure"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/bschroed/Documents/projects/PyGromosTools/pygromos/files/trajectory/_general_trajectory.py:296: PerformanceWarning: \n",
      "your performance may suffer as PyTables will pickle object types that it cannot\n",
      "map directly to c-types [inferred_type->mixed,key->block2_values] [items->Index(['totals', 'baths', 'bonded', 'nonbonded', 'special', 'eds', 'mass',\n",
      "       'temperature', 'volume', 'pressure'],\n",
      "      dtype='object')]\n",
      "\n",
      "  self.database.to_hdf(\n"
     ]
    }
   ],
   "source": [
    "# import the trajectory file into a Tre class\n",
    "from pygromos.files.trajectory.tre_field_libs.ene_fields import gromos_2015_tre_block_names_table\n",
    "\n",
    "tre = traj_tre.Tre(input_value=\"../example_files/Traj_files/test_CHE_H2O_bilayer.tre\", _ene_ana_names=gromos_2015_tre_block_names_table)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>step</th>\n",
       "      <th>time</th>\n",
       "      <th>totals</th>\n",
       "      <th>baths</th>\n",
       "      <th>bonded</th>\n",
       "      <th>nonbonded</th>\n",
       "      <th>special</th>\n",
       "      <th>eds</th>\n",
       "      <th>mass</th>\n",
       "      <th>temperature</th>\n",
       "      <th>volume</th>\n",
       "      <th>pressure</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>[-408806.2436, 393521.852, -802328.0956, 13840...</td>\n",
       "      <td>[[99739.83003, 29519.49412, 70220.33591], [293...</td>\n",
       "      <td>[[0.0, 49931.35526, 0.0, 88472.52195, 0.0]]</td>\n",
       "      <td>[[984602.6158, -1925334.589, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[296.2008302, 350.6569429, 278.0450574, 1.000...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[29.98293036, 94773.2037, 131128.599, 30.37611...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1000</td>\n",
       "      <td>2.0</td>\n",
       "      <td>[-411576.4224, 392980.7347, -804557.157, 13955...</td>\n",
       "      <td>[[99960.45845, 29481.77196, 70478.6865], [2930...</td>\n",
       "      <td>[[0.0, 50409.38587, 0.0, 89141.04865, 0.0]]</td>\n",
       "      <td>[[988489.6284, -1932597.22, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[296.8560381, 350.2088478, 279.0680247, 1.000...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[32.10481199, 92112.53213, 131040.7862, 26.183...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2000</td>\n",
       "      <td>4.0</td>\n",
       "      <td>[-409167.9172, 392370.1191, -801538.0363, 1389...</td>\n",
       "      <td>[[100096.9564, 29163.29693, 70933.65948], [292...</td>\n",
       "      <td>[[0.0, 50155.81989, 0.0, 88764.59053, 0.0]]</td>\n",
       "      <td>[[983688.8106, -1924147.257, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[297.2614008, 346.4257383, 280.8695397, 0.999...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[28.23515616, 96520.43393, 130756.5894, 30.172...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3000</td>\n",
       "      <td>6.0</td>\n",
       "      <td>[-408468.813, 392911.3266, -801380.1396, 13890...</td>\n",
       "      <td>[[100572.3051, 29097.77284, 71474.53225], [292...</td>\n",
       "      <td>[[0.0, 50205.91055, 0.0, 88694.38663, 0.0]]</td>\n",
       "      <td>[[984891.3076, -1925171.744, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[298.6730603, 345.647389, 283.0111843, 1.0000...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[28.79320593, 96009.21744, 130922.0286, 24.551...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4000</td>\n",
       "      <td>8.0</td>\n",
       "      <td>[-409322.7261, 391652.3813, -800975.1074, 1398...</td>\n",
       "      <td>[[100279.2719, 28656.33854, 71622.93335], [291...</td>\n",
       "      <td>[[0.0, 50608.00218, 0.0, 89216.65927, 0.0]]</td>\n",
       "      <td>[[980597.3587, -1921397.128, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[297.8028294, 340.4036676, 283.5987946, 0.999...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[24.7954137, 100472.9563, 130538.2987, 27.3050...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5000</td>\n",
       "      <td>10.0</td>\n",
       "      <td>[-409060.5321, 391503.6168, -800564.1489, 1401...</td>\n",
       "      <td>[[99621.54627, 28465.00254, 71156.54373], [291...</td>\n",
       "      <td>[[0.0, 50668.20147, 0.0, 89507.19113, 0.0]]</td>\n",
       "      <td>[[980518.6316, -1921258.173, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[295.8495588, 338.1308206, 281.7520741, 1.000...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[24.44895665, 100856.1354, 130501.386, 20.8121...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>6000</td>\n",
       "      <td>12.0</td>\n",
       "      <td>[-407724.5301, 393376.3395, -801100.8696, 1399...</td>\n",
       "      <td>[[100618.1056, 29001.93804, 71616.16754], [292...</td>\n",
       "      <td>[[0.0, 50612.96859, 0.0, 89338.70979, 0.0]]</td>\n",
       "      <td>[[980975.7104, -1922028.258, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[298.8090756, 344.5089841, 283.5720046, 0.999...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[24.88400774, 100946.7969, 131119.5628, 21.646...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>7000</td>\n",
       "      <td>14.0</td>\n",
       "      <td>[-406045.9433, 393472.141, -799518.0842, 14009...</td>\n",
       "      <td>[[101200.4734, 29288.55636, 71911.91706], [292...</td>\n",
       "      <td>[[0.0, 50652.38951, 0.0, 89438.21007, 0.0]]</td>\n",
       "      <td>[[979207.7071, -1918816.391, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[300.5385535, 347.9136733, 284.743057, 1.0000...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[22.9661595, 103318.3573, 131165.6623, 27.4988...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>8000</td>\n",
       "      <td>16.0</td>\n",
       "      <td>[-408499.0398, 391678.3093, -800177.3491, 1397...</td>\n",
       "      <td>[[100402.1573, 28648.71805, 71753.43928], [291...</td>\n",
       "      <td>[[0.0, 50465.54724, 0.0, 89294.44028, 0.0]]</td>\n",
       "      <td>[[977305.7837, -1917243.12, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[298.1677666, 340.3131452, 284.115547, 0.9999...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[19.87564957, 106444.6562, 130544.6054, 14.226...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>9000</td>\n",
       "      <td>18.0</td>\n",
       "      <td>[-406991.4101, 392482.0724, -799473.4824, 1399...</td>\n",
       "      <td>[[100192.0289, 28084.21204, 72107.81681], [292...</td>\n",
       "      <td>[[0.0, 50693.74147, 0.0, 89209.25341, 0.0]]</td>\n",
       "      <td>[[976722.0947, -1916098.572, 0.0, 0.0]]</td>\n",
       "      <td>[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...</td>\n",
       "      <td>[0.0]</td>\n",
       "      <td>[1277287.736]</td>\n",
       "      <td>[[297.5437407, 333.6074763, 285.5187434, 1.000...</td>\n",
       "      <td>[2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...</td>\n",
       "      <td>[18.24226614, 108700.5608, 130819.9731, 21.832...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   step  time                                             totals  \\\n",
       "0     0   0.0  [-408806.2436, 393521.852, -802328.0956, 13840...   \n",
       "1  1000   2.0  [-411576.4224, 392980.7347, -804557.157, 13955...   \n",
       "2  2000   4.0  [-409167.9172, 392370.1191, -801538.0363, 1389...   \n",
       "3  3000   6.0  [-408468.813, 392911.3266, -801380.1396, 13890...   \n",
       "4  4000   8.0  [-409322.7261, 391652.3813, -800975.1074, 1398...   \n",
       "5  5000  10.0  [-409060.5321, 391503.6168, -800564.1489, 1401...   \n",
       "6  6000  12.0  [-407724.5301, 393376.3395, -801100.8696, 1399...   \n",
       "7  7000  14.0  [-406045.9433, 393472.141, -799518.0842, 14009...   \n",
       "8  8000  16.0  [-408499.0398, 391678.3093, -800177.3491, 1397...   \n",
       "9  9000  18.0  [-406991.4101, 392482.0724, -799473.4824, 1399...   \n",
       "\n",
       "                                               baths  \\\n",
       "0  [[99739.83003, 29519.49412, 70220.33591], [293...   \n",
       "1  [[99960.45845, 29481.77196, 70478.6865], [2930...   \n",
       "2  [[100096.9564, 29163.29693, 70933.65948], [292...   \n",
       "3  [[100572.3051, 29097.77284, 71474.53225], [292...   \n",
       "4  [[100279.2719, 28656.33854, 71622.93335], [291...   \n",
       "5  [[99621.54627, 28465.00254, 71156.54373], [291...   \n",
       "6  [[100618.1056, 29001.93804, 71616.16754], [292...   \n",
       "7  [[101200.4734, 29288.55636, 71911.91706], [292...   \n",
       "8  [[100402.1573, 28648.71805, 71753.43928], [291...   \n",
       "9  [[100192.0289, 28084.21204, 72107.81681], [292...   \n",
       "\n",
       "                                        bonded  \\\n",
       "0  [[0.0, 49931.35526, 0.0, 88472.52195, 0.0]]   \n",
       "1  [[0.0, 50409.38587, 0.0, 89141.04865, 0.0]]   \n",
       "2  [[0.0, 50155.81989, 0.0, 88764.59053, 0.0]]   \n",
       "3  [[0.0, 50205.91055, 0.0, 88694.38663, 0.0]]   \n",
       "4  [[0.0, 50608.00218, 0.0, 89216.65927, 0.0]]   \n",
       "5  [[0.0, 50668.20147, 0.0, 89507.19113, 0.0]]   \n",
       "6  [[0.0, 50612.96859, 0.0, 89338.70979, 0.0]]   \n",
       "7  [[0.0, 50652.38951, 0.0, 89438.21007, 0.0]]   \n",
       "8  [[0.0, 50465.54724, 0.0, 89294.44028, 0.0]]   \n",
       "9  [[0.0, 50693.74147, 0.0, 89209.25341, 0.0]]   \n",
       "\n",
       "                                 nonbonded  \\\n",
       "0  [[984602.6158, -1925334.589, 0.0, 0.0]]   \n",
       "1   [[988489.6284, -1932597.22, 0.0, 0.0]]   \n",
       "2  [[983688.8106, -1924147.257, 0.0, 0.0]]   \n",
       "3  [[984891.3076, -1925171.744, 0.0, 0.0]]   \n",
       "4  [[980597.3587, -1921397.128, 0.0, 0.0]]   \n",
       "5  [[980518.6316, -1921258.173, 0.0, 0.0]]   \n",
       "6  [[980975.7104, -1922028.258, 0.0, 0.0]]   \n",
       "7  [[979207.7071, -1918816.391, 0.0, 0.0]]   \n",
       "8   [[977305.7837, -1917243.12, 0.0, 0.0]]   \n",
       "9  [[976722.0947, -1916098.572, 0.0, 0.0]]   \n",
       "\n",
       "                                             special    eds           mass  \\\n",
       "0  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "1  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "2  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "3  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "4  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "5  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "6  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "7  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "8  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "9  [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...  [0.0]  [1277287.736]   \n",
       "\n",
       "                                         temperature  \\\n",
       "0  [[296.2008302, 350.6569429, 278.0450574, 1.000...   \n",
       "1  [[296.8560381, 350.2088478, 279.0680247, 1.000...   \n",
       "2  [[297.2614008, 346.4257383, 280.8695397, 0.999...   \n",
       "3  [[298.6730603, 345.647389, 283.0111843, 1.0000...   \n",
       "4  [[297.8028294, 340.4036676, 283.5987946, 0.999...   \n",
       "5  [[295.8495588, 338.1308206, 281.7520741, 1.000...   \n",
       "6  [[298.8090756, 344.5089841, 283.5720046, 0.999...   \n",
       "7  [[300.5385535, 347.9136733, 284.743057, 1.0000...   \n",
       "8  [[298.1677666, 340.3131452, 284.115547, 0.9999...   \n",
       "9  [[297.5437407, 333.6074763, 285.5187434, 1.000...   \n",
       "\n",
       "                                              volume  \\\n",
       "0  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "1  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "2  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "3  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "4  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "5  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "6  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "7  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "8  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "9  [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...   \n",
       "\n",
       "                                            pressure  \n",
       "0  [29.98293036, 94773.2037, 131128.599, 30.37611...  \n",
       "1  [32.10481199, 92112.53213, 131040.7862, 26.183...  \n",
       "2  [28.23515616, 96520.43393, 130756.5894, 30.172...  \n",
       "3  [28.79320593, 96009.21744, 130922.0286, 24.551...  \n",
       "4  [24.7954137, 100472.9563, 130538.2987, 27.3050...  \n",
       "5  [24.44895665, 100856.1354, 130501.386, 20.8121...  \n",
       "6  [24.88400774, 100946.7969, 131119.5628, 21.646...  \n",
       "7  [22.9661595, 103318.3573, 131165.6623, 27.4988...  \n",
       "8  [19.87564957, 106444.6562, 130544.6054, 14.226...  \n",
       "9  [18.24226614, 108700.5608, 130819.9731, 21.832...  "
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tre.database"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['ENEVERSION',\n",
       " 'TITLE',\n",
       " 'add_traj',\n",
       " 'database',\n",
       " 'get_Hvap',\n",
       " 'get_baths',\n",
       " 'get_bondedContributions',\n",
       " 'get_density',\n",
       " 'get_eds',\n",
       " 'get_mass',\n",
       " 'get_nonbondedContributions',\n",
       " 'get_precalclam',\n",
       " 'get_specialContributions',\n",
       " 'get_temperature',\n",
       " 'get_temperature_Info',\n",
       " 'get_time_step',\n",
       " 'get_totals',\n",
       " 'get_totangle',\n",
       " 'get_totbonded',\n",
       " 'get_totcov',\n",
       " 'get_totcrf',\n",
       " 'get_totdihedral',\n",
       " 'get_totene',\n",
       " 'get_totkin',\n",
       " 'get_totlj',\n",
       " 'get_totnonbonded',\n",
       " 'get_totpot',\n",
       " 'path',\n",
       " 'step',\n",
       " 'time',\n",
       " 'tre_block_name_table',\n",
       " 'write']"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "[x for x in dir(tre) if not x.startswith(\"_\")]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Tre files contain all energy related data (like split up energy terms, temperature, pressure, .....). In PyGromos they generally share the same block structure as other files, but all the data inside the specific timesteps is stored efficiently inside a pandas DataFrame, here called tre.database . This database offers manipulation with all pandas functions. Alternatively many common functions are provided inside the Tre class. \n",
    "\n",
    "This class should in principle replace further usage of the gromos++ ene_ana function, since all these operation can be done efficiently on the pandas DataFrame. \n",
    "\n",
    "We are currently working on adding more common functions to the Tre class. If you find a useful function please contact the developers so the function can be added for general usage :)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2) Common Tre functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "874.6072007296449"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate the average density over all timesteps\n",
    "tre.get_density().mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "bath1    297.770285\n",
       "bath2    297.713431\n",
       "dtype: float64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# calculate the mean temperature over all frames for all baths in the system. In this example two baths with slightly different temperatures.\n",
    "tre.get_temperature().mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Tables and lists inside the database are stored in numpy arrays. For example the two temperatures from the previous example are stored in a numpy array of size 2 since it has two temperature baths"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Specific values inside a tre file can also be directly accessed with numpy and pandas syntax"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "step                                                        2000\n",
       "time                                                         4.0\n",
       "totals         [-409167.9172, 392370.1191, -801538.0363, 1389...\n",
       "baths          [[100096.9564, 29163.29693, 70933.65948], [292...\n",
       "bonded               [[0.0, 50155.81989, 0.0, 88764.59053, 0.0]]\n",
       "nonbonded                [[983688.8106, -1924147.257, 0.0, 0.0]]\n",
       "special        [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,...\n",
       "eds                                                        [0.0]\n",
       "mass                                               [1277287.736]\n",
       "temperature    [[297.2614008, 346.4257383, 280.8695397, 0.999...\n",
       "volume         [2425.07286, 8.463596169, 0.0, 0.0, 0.0, 8.463...\n",
       "pressure       [28.23515616, 96520.43393, 130756.5894, 30.172...\n",
       "Name: 2, dtype: object"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tre.database.iloc[2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    984602.6158\n",
       "1    988489.6284\n",
       "2    983688.8106\n",
       "3    984891.3076\n",
       "4    980597.3587\n",
       "5    980518.6316\n",
       "6    980975.7104\n",
       "7    979207.7071\n",
       "8    977305.7837\n",
       "9    976722.0947\n",
       "Name: nonbonded, dtype: float64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# select the first nonbonded energy value for the first force group over all time frames\n",
    "tre.database[\"nonbonded\"].apply(lambda x: x[0][0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>totene</th>\n",
       "      <th>totkin</th>\n",
       "      <th>totpot</th>\n",
       "      <th>totcov</th>\n",
       "      <th>totbond</th>\n",
       "      <th>totangle</th>\n",
       "      <th>totimproper</th>\n",
       "      <th>totdihedral</th>\n",
       "      <th>totcrossdihedral</th>\n",
       "      <th>totnonbonded</th>\n",
       "      <th>...</th>\n",
       "      <th>totjval</th>\n",
       "      <th>totxray</th>\n",
       "      <th>totle</th>\n",
       "      <th>totorder</th>\n",
       "      <th>totsymm</th>\n",
       "      <th>eds_vr,entropy</th>\n",
       "      <th>totqm</th>\n",
       "      <th>totbsleus</th>\n",
       "      <th>totrdc</th>\n",
       "      <th>wip1</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.0</th>\n",
       "      <td>-408806.2436</td>\n",
       "      <td>393521.8520</td>\n",
       "      <td>-802328.0956</td>\n",
       "      <td>138403.8772</td>\n",
       "      <td>0.0</td>\n",
       "      <td>49931.35526</td>\n",
       "      <td>0.0</td>\n",
       "      <td>88472.52195</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-940731.9728</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2.0</th>\n",
       "      <td>-411576.4224</td>\n",
       "      <td>392980.7347</td>\n",
       "      <td>-804557.1570</td>\n",
       "      <td>139550.4345</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50409.38587</td>\n",
       "      <td>0.0</td>\n",
       "      <td>89141.04865</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-944107.5915</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.0</th>\n",
       "      <td>-409167.9172</td>\n",
       "      <td>392370.1191</td>\n",
       "      <td>-801538.0363</td>\n",
       "      <td>138920.4104</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50155.81989</td>\n",
       "      <td>0.0</td>\n",
       "      <td>88764.59053</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-940458.4467</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6.0</th>\n",
       "      <td>-408468.8130</td>\n",
       "      <td>392911.3266</td>\n",
       "      <td>-801380.1396</td>\n",
       "      <td>138900.2972</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50205.91055</td>\n",
       "      <td>0.0</td>\n",
       "      <td>88694.38663</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-940280.4368</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8.0</th>\n",
       "      <td>-409322.7261</td>\n",
       "      <td>391652.3813</td>\n",
       "      <td>-800975.1074</td>\n",
       "      <td>139824.6615</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50608.00218</td>\n",
       "      <td>0.0</td>\n",
       "      <td>89216.65927</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-940799.7689</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10.0</th>\n",
       "      <td>-409060.5321</td>\n",
       "      <td>391503.6168</td>\n",
       "      <td>-800564.1489</td>\n",
       "      <td>140175.3926</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50668.20147</td>\n",
       "      <td>0.0</td>\n",
       "      <td>89507.19113</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-940739.5415</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12.0</th>\n",
       "      <td>-407724.5301</td>\n",
       "      <td>393376.3395</td>\n",
       "      <td>-801100.8696</td>\n",
       "      <td>139951.6784</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50612.96859</td>\n",
       "      <td>0.0</td>\n",
       "      <td>89338.70979</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-941052.5480</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14.0</th>\n",
       "      <td>-406045.9433</td>\n",
       "      <td>393472.1410</td>\n",
       "      <td>-799518.0842</td>\n",
       "      <td>140090.5996</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50652.38951</td>\n",
       "      <td>0.0</td>\n",
       "      <td>89438.21007</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-939608.6838</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16.0</th>\n",
       "      <td>-408499.0398</td>\n",
       "      <td>391678.3093</td>\n",
       "      <td>-800177.3491</td>\n",
       "      <td>139759.9875</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50465.54724</td>\n",
       "      <td>0.0</td>\n",
       "      <td>89294.44028</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-939937.3367</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18.0</th>\n",
       "      <td>-406991.4101</td>\n",
       "      <td>392482.0724</td>\n",
       "      <td>-799473.4824</td>\n",
       "      <td>139902.9949</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50693.74147</td>\n",
       "      <td>0.0</td>\n",
       "      <td>89209.25341</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-939376.4773</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 38 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           totene       totkin       totpot       totcov  totbond  \\\n",
       "time                                                                \n",
       "0.0  -408806.2436  393521.8520 -802328.0956  138403.8772      0.0   \n",
       "2.0  -411576.4224  392980.7347 -804557.1570  139550.4345      0.0   \n",
       "4.0  -409167.9172  392370.1191 -801538.0363  138920.4104      0.0   \n",
       "6.0  -408468.8130  392911.3266 -801380.1396  138900.2972      0.0   \n",
       "8.0  -409322.7261  391652.3813 -800975.1074  139824.6615      0.0   \n",
       "10.0 -409060.5321  391503.6168 -800564.1489  140175.3926      0.0   \n",
       "12.0 -407724.5301  393376.3395 -801100.8696  139951.6784      0.0   \n",
       "14.0 -406045.9433  393472.1410 -799518.0842  140090.5996      0.0   \n",
       "16.0 -408499.0398  391678.3093 -800177.3491  139759.9875      0.0   \n",
       "18.0 -406991.4101  392482.0724 -799473.4824  139902.9949      0.0   \n",
       "\n",
       "         totangle  totimproper  totdihedral  totcrossdihedral  totnonbonded  \\\n",
       "time                                                                          \n",
       "0.0   49931.35526          0.0  88472.52195               0.0  -940731.9728   \n",
       "2.0   50409.38587          0.0  89141.04865               0.0  -944107.5915   \n",
       "4.0   50155.81989          0.0  88764.59053               0.0  -940458.4467   \n",
       "6.0   50205.91055          0.0  88694.38663               0.0  -940280.4368   \n",
       "8.0   50608.00218          0.0  89216.65927               0.0  -940799.7689   \n",
       "10.0  50668.20147          0.0  89507.19113               0.0  -940739.5415   \n",
       "12.0  50612.96859          0.0  89338.70979               0.0  -941052.5480   \n",
       "14.0  50652.38951          0.0  89438.21007               0.0  -939608.6838   \n",
       "16.0  50465.54724          0.0  89294.44028               0.0  -939937.3367   \n",
       "18.0  50693.74147          0.0  89209.25341               0.0  -939376.4773   \n",
       "\n",
       "      ...  totjval  totxray  totle  totorder  totsymm  eds_vr,entropy  totqm  \\\n",
       "time  ...                                                                      \n",
       "0.0   ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "2.0   ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "4.0   ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "6.0   ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "8.0   ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "10.0  ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "12.0  ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "14.0  ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "16.0  ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "18.0  ...      0.0      0.0    0.0       0.0      0.0             0.0    0.0   \n",
       "\n",
       "      totbsleus  totrdc  wip1  \n",
       "time                           \n",
       "0.0         0.0     0.0   0.0  \n",
       "2.0         0.0     0.0   0.0  \n",
       "4.0         0.0     0.0   0.0  \n",
       "6.0         0.0     0.0   0.0  \n",
       "8.0         0.0     0.0   0.0  \n",
       "10.0        0.0     0.0   0.0  \n",
       "12.0        0.0     0.0   0.0  \n",
       "14.0        0.0     0.0   0.0  \n",
       "16.0        0.0     0.0   0.0  \n",
       "18.0        0.0     0.0   0.0  \n",
       "\n",
       "[10 rows x 38 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tre.get_totals()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### $\\lambda$-Sampling & TREs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/bschroed/Documents/projects/PyGromosTools/pygromos/files/trajectory/_general_trajectory.py:296: PerformanceWarning: \n",
      "your performance may suffer as PyTables will pickle object types that it cannot\n",
      "map directly to c-types [inferred_type->mixed,key->block2_values] [items->Index(['totals', 'baths', 'bonded', 'nonbonded', 'special', 'eds',\n",
      "       'precalclam', 'mass', 'temperature', 'volume', 'pressure'],\n",
      "      dtype='object')]\n",
      "\n",
      "  self.database.to_hdf(\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>nr_lambdas</th>\n",
       "      <th>A_e_lj_1</th>\n",
       "      <th>B_e_lj_1</th>\n",
       "      <th>A_e_crf_1</th>\n",
       "      <th>B_e_crf_1</th>\n",
       "      <th>AB_kinetic_1</th>\n",
       "      <th>AB_bond_1</th>\n",
       "      <th>AB_angle_1</th>\n",
       "      <th>AB_improper_1</th>\n",
       "      <th>AB_disres_1</th>\n",
       "      <th>...</th>\n",
       "      <th>B_e_crf_2</th>\n",
       "      <th>AB_kinetic_2</th>\n",
       "      <th>AB_bond_2</th>\n",
       "      <th>AB_angle_2</th>\n",
       "      <th>AB_improper_2</th>\n",
       "      <th>AB_disres_2</th>\n",
       "      <th>AB_dihres_2</th>\n",
       "      <th>AB_disfld_2</th>\n",
       "      <th>A_dihedral</th>\n",
       "      <th>B_dihedral</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-4.469426</td>\n",
       "      <td>-53.669555</td>\n",
       "      <td>-79.373179</td>\n",
       "      <td>-52.887373</td>\n",
       "      <td>36.091797</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-122.394320</td>\n",
       "      <td>36.091797</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-55.493090</td>\n",
       "      <td>-58.228689</td>\n",
       "      <td>-86.711496</td>\n",
       "      <td>-52.410062</td>\n",
       "      <td>44.886645</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-122.457590</td>\n",
       "      <td>44.886645</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-3.935587</td>\n",
       "      <td>-54.492379</td>\n",
       "      <td>-79.515189</td>\n",
       "      <td>-54.142546</td>\n",
       "      <td>46.199981</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-139.035309</td>\n",
       "      <td>46.199981</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-44.047130</td>\n",
       "      <td>-54.945185</td>\n",
       "      <td>-83.150923</td>\n",
       "      <td>-53.673066</td>\n",
       "      <td>41.268221</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-130.358158</td>\n",
       "      <td>41.268221</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-23.340313</td>\n",
       "      <td>-52.961388</td>\n",
       "      <td>-75.743516</td>\n",
       "      <td>-53.920133</td>\n",
       "      <td>36.680211</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-134.272063</td>\n",
       "      <td>36.680211</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>495.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>39.941549</td>\n",
       "      <td>-64.577818</td>\n",
       "      <td>-71.993096</td>\n",
       "      <td>-53.485889</td>\n",
       "      <td>35.829309</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-130.534976</td>\n",
       "      <td>35.829309</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>496.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-8.487283</td>\n",
       "      <td>-54.840254</td>\n",
       "      <td>-73.625420</td>\n",
       "      <td>-54.112768</td>\n",
       "      <td>33.260161</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-117.262832</td>\n",
       "      <td>33.260161</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>497.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>29.934914</td>\n",
       "      <td>-54.557127</td>\n",
       "      <td>-76.326046</td>\n",
       "      <td>-51.811587</td>\n",
       "      <td>41.735086</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-104.326673</td>\n",
       "      <td>41.735086</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>498.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-35.691879</td>\n",
       "      <td>-60.330236</td>\n",
       "      <td>-77.859153</td>\n",
       "      <td>-54.295433</td>\n",
       "      <td>44.944847</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-123.231158</td>\n",
       "      <td>44.944847</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>499.0</th>\n",
       "      <td>2.0</td>\n",
       "      <td>21.308545</td>\n",
       "      <td>-58.470225</td>\n",
       "      <td>-72.376205</td>\n",
       "      <td>-53.554977</td>\n",
       "      <td>41.740483</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>-125.539239</td>\n",
       "      <td>41.740483</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>500 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       nr_lambdas   A_e_lj_1   B_e_lj_1  A_e_crf_1  B_e_crf_1  AB_kinetic_1  \\\n",
       "time                                                                          \n",
       "0.0           2.0  -4.469426 -53.669555 -79.373179 -52.887373     36.091797   \n",
       "1.0           2.0 -55.493090 -58.228689 -86.711496 -52.410062     44.886645   \n",
       "2.0           2.0  -3.935587 -54.492379 -79.515189 -54.142546     46.199981   \n",
       "3.0           2.0 -44.047130 -54.945185 -83.150923 -53.673066     41.268221   \n",
       "4.0           2.0 -23.340313 -52.961388 -75.743516 -53.920133     36.680211   \n",
       "...           ...        ...        ...        ...        ...           ...   \n",
       "495.0         2.0  39.941549 -64.577818 -71.993096 -53.485889     35.829309   \n",
       "496.0         2.0  -8.487283 -54.840254 -73.625420 -54.112768     33.260161   \n",
       "497.0         2.0  29.934914 -54.557127 -76.326046 -51.811587     41.735086   \n",
       "498.0         2.0 -35.691879 -60.330236 -77.859153 -54.295433     44.944847   \n",
       "499.0         2.0  21.308545 -58.470225 -72.376205 -53.554977     41.740483   \n",
       "\n",
       "       AB_bond_1  AB_angle_1  AB_improper_1  AB_disres_1  ...   B_e_crf_2  \\\n",
       "time                                                      ...               \n",
       "0.0          0.0         0.0            0.0          0.0  ... -122.394320   \n",
       "1.0          0.0         0.0            0.0          0.0  ... -122.457590   \n",
       "2.0          0.0         0.0            0.0          0.0  ... -139.035309   \n",
       "3.0          0.0         0.0            0.0          0.0  ... -130.358158   \n",
       "4.0          0.0         0.0            0.0          0.0  ... -134.272063   \n",
       "...          ...         ...            ...          ...  ...         ...   \n",
       "495.0        0.0         0.0            0.0          0.0  ... -130.534976   \n",
       "496.0        0.0         0.0            0.0          0.0  ... -117.262832   \n",
       "497.0        0.0         0.0            0.0          0.0  ... -104.326673   \n",
       "498.0        0.0         0.0            0.0          0.0  ... -123.231158   \n",
       "499.0        0.0         0.0            0.0          0.0  ... -125.539239   \n",
       "\n",
       "       AB_kinetic_2  AB_bond_2  AB_angle_2  AB_improper_2  AB_disres_2  \\\n",
       "time                                                                     \n",
       "0.0       36.091797        0.0         0.0            0.0          0.0   \n",
       "1.0       44.886645        0.0         0.0            0.0          0.0   \n",
       "2.0       46.199981        0.0         0.0            0.0          0.0   \n",
       "3.0       41.268221        0.0         0.0            0.0          0.0   \n",
       "4.0       36.680211        0.0         0.0            0.0          0.0   \n",
       "...             ...        ...         ...            ...          ...   \n",
       "495.0     35.829309        0.0         0.0            0.0          0.0   \n",
       "496.0     33.260161        0.0         0.0            0.0          0.0   \n",
       "497.0     41.735086        0.0         0.0            0.0          0.0   \n",
       "498.0     44.944847        0.0         0.0            0.0          0.0   \n",
       "499.0     41.740483        0.0         0.0            0.0          0.0   \n",
       "\n",
       "       AB_dihres_2  AB_disfld_2  A_dihedral  B_dihedral  \n",
       "time                                                     \n",
       "0.0            0.0          0.0         0.0         0.0  \n",
       "1.0            0.0          0.0         0.0         0.0  \n",
       "2.0            0.0          0.0         0.0         0.0  \n",
       "3.0            0.0          0.0         0.0         0.0  \n",
       "4.0            0.0          0.0         0.0         0.0  \n",
       "...            ...          ...         ...         ...  \n",
       "495.0          0.0          0.0         0.0         0.0  \n",
       "496.0          0.0          0.0         0.0         0.0  \n",
       "497.0          0.0          0.0         0.0         0.0  \n",
       "498.0          0.0          0.0         0.0         0.0  \n",
       "499.0          0.0          0.0         0.0         0.0  \n",
       "\n",
       "[500 rows x 25 columns]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# import the trajectory file into a Tre class\n",
    "tre = traj_tre.Tre(input_value=\"../example_files/Traj_files/RAFE_TI_l0_5.tre\")\n",
    "tre.get_precalclam()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "### EDS in TREs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/bschroed/Documents/projects/PyGromosTools/pygromos/files/trajectory/_general_trajectory.py:296: PerformanceWarning: \n",
      "your performance may suffer as PyTables will pickle object types that it cannot\n",
      "map directly to c-types [inferred_type->mixed,key->block2_values] [items->Index(['totals', 'baths', 'bonded', 'nonbonded', 'special', 'eds',\n",
      "       'precalclam', 'mass', 'temperature', 'volume', 'pressure'],\n",
      "      dtype='object')]\n",
      "\n",
      "  self.database.to_hdf(\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>numstates</th>\n",
       "      <th>total_1</th>\n",
       "      <th>nonbonded_1</th>\n",
       "      <th>special_1</th>\n",
       "      <th>offset_1</th>\n",
       "      <th>total_2</th>\n",
       "      <th>nonbonded_2</th>\n",
       "      <th>special_2</th>\n",
       "      <th>offset_2</th>\n",
       "      <th>total_3</th>\n",
       "      <th>...</th>\n",
       "      <th>special_7</th>\n",
       "      <th>offset_7</th>\n",
       "      <th>total_8</th>\n",
       "      <th>nonbonded_8</th>\n",
       "      <th>special_8</th>\n",
       "      <th>offset_8</th>\n",
       "      <th>total_9</th>\n",
       "      <th>nonbonded_9</th>\n",
       "      <th>special_9</th>\n",
       "      <th>offset_9</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.00</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-304.241276</td>\n",
       "      <td>-304.241276</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-309.738568</td>\n",
       "      <td>-309.738568</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-286.397004</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-306.757290</td>\n",
       "      <td>-306.757290</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.661115e+05</td>\n",
       "      <td>1.661115e+05</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.04</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-327.432243</td>\n",
       "      <td>-327.432243</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-343.990987</td>\n",
       "      <td>-343.990987</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-330.156886</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-337.505471</td>\n",
       "      <td>-337.505471</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.114028e+05</td>\n",
       "      <td>2.114028e+05</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.08</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-342.969913</td>\n",
       "      <td>-342.969913</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-348.338017</td>\n",
       "      <td>-348.338017</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-342.678812</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-343.085575</td>\n",
       "      <td>-343.085575</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.335587e+05</td>\n",
       "      <td>2.335587e+05</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.12</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-307.787722</td>\n",
       "      <td>-307.787722</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-320.642022</td>\n",
       "      <td>-320.642022</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-275.892803</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-287.546356</td>\n",
       "      <td>-287.546356</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.263949e+05</td>\n",
       "      <td>1.263949e+05</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.16</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-325.101329</td>\n",
       "      <td>-325.101329</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-333.832261</td>\n",
       "      <td>-333.832261</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-309.882401</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-328.133697</td>\n",
       "      <td>-328.133697</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.637117e+05</td>\n",
       "      <td>3.637117e+05</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.20</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-341.014069</td>\n",
       "      <td>-341.014069</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-338.126642</td>\n",
       "      <td>-338.126642</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-319.108916</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-331.591241</td>\n",
       "      <td>-331.591241</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.426647e+06</td>\n",
       "      <td>3.426647e+06</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.24</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-332.591891</td>\n",
       "      <td>-332.591891</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-313.860613</td>\n",
       "      <td>-313.860613</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-270.145527</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-295.307547</td>\n",
       "      <td>-295.307547</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.720166e+05</td>\n",
       "      <td>6.720166e+05</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.28</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-384.741762</td>\n",
       "      <td>-384.741762</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-379.723111</td>\n",
       "      <td>-379.723111</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-340.573094</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-363.097220</td>\n",
       "      <td>-363.097220</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>6.147874e+04</td>\n",
       "      <td>6.147874e+04</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.32</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-341.408526</td>\n",
       "      <td>-341.408526</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-352.793311</td>\n",
       "      <td>-352.793311</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-268.495614</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-327.075935</td>\n",
       "      <td>-327.075935</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.863084e+04</td>\n",
       "      <td>2.863084e+04</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0.36</th>\n",
       "      <td>9.0</td>\n",
       "      <td>-336.573404</td>\n",
       "      <td>-336.573404</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-340.350887</td>\n",
       "      <td>-340.350887</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-238.003947</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-325.957742</td>\n",
       "      <td>-325.957742</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>3.048352e+04</td>\n",
       "      <td>3.048352e+04</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10 rows × 37 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      numstates     total_1  nonbonded_1  special_1  offset_1     total_2  \\\n",
       "time                                                                        \n",
       "0.00        9.0 -304.241276  -304.241276        0.0       0.0 -309.738568   \n",
       "0.04        9.0 -327.432243  -327.432243        0.0       0.0 -343.990987   \n",
       "0.08        9.0 -342.969913  -342.969913        0.0       0.0 -348.338017   \n",
       "0.12        9.0 -307.787722  -307.787722        0.0       0.0 -320.642022   \n",
       "0.16        9.0 -325.101329  -325.101329        0.0       0.0 -333.832261   \n",
       "0.20        9.0 -341.014069  -341.014069        0.0       0.0 -338.126642   \n",
       "0.24        9.0 -332.591891  -332.591891        0.0       0.0 -313.860613   \n",
       "0.28        9.0 -384.741762  -384.741762        0.0       0.0 -379.723111   \n",
       "0.32        9.0 -341.408526  -341.408526        0.0       0.0 -352.793311   \n",
       "0.36        9.0 -336.573404  -336.573404        0.0       0.0 -340.350887   \n",
       "\n",
       "      nonbonded_2  special_2  offset_2     total_3  ...  special_7  offset_7  \\\n",
       "time                                                ...                        \n",
       "0.00  -309.738568        0.0       0.0 -286.397004  ...        0.0       0.0   \n",
       "0.04  -343.990987        0.0       0.0 -330.156886  ...        0.0       0.0   \n",
       "0.08  -348.338017        0.0       0.0 -342.678812  ...        0.0       0.0   \n",
       "0.12  -320.642022        0.0       0.0 -275.892803  ...        0.0       0.0   \n",
       "0.16  -333.832261        0.0       0.0 -309.882401  ...        0.0       0.0   \n",
       "0.20  -338.126642        0.0       0.0 -319.108916  ...        0.0       0.0   \n",
       "0.24  -313.860613        0.0       0.0 -270.145527  ...        0.0       0.0   \n",
       "0.28  -379.723111        0.0       0.0 -340.573094  ...        0.0       0.0   \n",
       "0.32  -352.793311        0.0       0.0 -268.495614  ...        0.0       0.0   \n",
       "0.36  -340.350887        0.0       0.0 -238.003947  ...        0.0       0.0   \n",
       "\n",
       "         total_8  nonbonded_8  special_8  offset_8       total_9  \\\n",
       "time                                                               \n",
       "0.00 -306.757290  -306.757290        0.0       0.0  1.661115e+05   \n",
       "0.04 -337.505471  -337.505471        0.0       0.0  2.114028e+05   \n",
       "0.08 -343.085575  -343.085575        0.0       0.0  2.335587e+05   \n",
       "0.12 -287.546356  -287.546356        0.0       0.0  1.263949e+05   \n",
       "0.16 -328.133697  -328.133697        0.0       0.0  3.637117e+05   \n",
       "0.20 -331.591241  -331.591241        0.0       0.0  3.426647e+06   \n",
       "0.24 -295.307547  -295.307547        0.0       0.0  6.720166e+05   \n",
       "0.28 -363.097220  -363.097220        0.0       0.0  6.147874e+04   \n",
       "0.32 -327.075935  -327.075935        0.0       0.0  2.863084e+04   \n",
       "0.36 -325.957742  -325.957742        0.0       0.0  3.048352e+04   \n",
       "\n",
       "       nonbonded_9  special_9  offset_9  \n",
       "time                                     \n",
       "0.00  1.661115e+05        0.0       0.0  \n",
       "0.04  2.114028e+05        0.0       0.0  \n",
       "0.08  2.335587e+05        0.0       0.0  \n",
       "0.12  1.263949e+05        0.0       0.0  \n",
       "0.16  3.637117e+05        0.0       0.0  \n",
       "0.20  3.426647e+06        0.0       0.0  \n",
       "0.24  6.720166e+05        0.0       0.0  \n",
       "0.28  6.147874e+04        0.0       0.0  \n",
       "0.32  2.863084e+04        0.0       0.0  \n",
       "0.36  3.048352e+04        0.0       0.0  \n",
       "\n",
       "[10 rows x 37 columns]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# import the trajectory file into a Tre class\n",
    "tre = traj_tre.Tre(input_value=\"../example_files/Traj_files/RAFE_eds.tre\")\n",
    "tre.get_eds()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "## Concatenate  and Copy multiple Trajectories"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Trajectories offer a wide range of additional file manipulations. Trajectory classes can be copied (deep) and added to each other to concatenate multiple small simulation pieces into one large trajectory. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "tre_copy = traj_tre.Tre(input_value=tre)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10, 13)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tre_copy.database.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/bschroed/Documents/projects/PyGromosTools/pygromos/files/trajectory/_general_trajectory.py:180: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.\n",
      "  new_traj.database = self.database.append(new_data, ignore_index=True)\n"
     ]
    }
   ],
   "source": [
    "tre_combined = tre + tre_copy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 13)"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tre_combined.database.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In the new combined trajectory we have one long trajectory made from the two smaller ones. The length is one element shorter, since normally the last element of the first trajectory and the first element of the second trajectory is the same element. This can be controlled via the option \"skip_new_0=True\" in the add_traj() function which is the core of the \"+\" operator for trajectories. In the following line the default behavior can be seen as a smooth numbering in the TIMESTEPs."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0     0.00\n",
       "1     0.04\n",
       "2     0.08\n",
       "3     0.12\n",
       "4     0.16\n",
       "5     0.20\n",
       "6     0.24\n",
       "7     0.28\n",
       "8     0.32\n",
       "9     0.36\n",
       "10    0.00\n",
       "11    0.04\n",
       "12    0.08\n",
       "13    0.12\n",
       "14    0.16\n",
       "15    0.20\n",
       "16    0.24\n",
       "17    0.28\n",
       "18    0.32\n",
       "19    0.36\n",
       "Name: time, dtype: float64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tre_combined.database.time"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20 10\n"
     ]
    }
   ],
   "source": [
    "print(len(tre_combined.database), len(tre.database))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.9.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}