{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Trajectory tests\n", "\n", "Compare speed of processing LAMMPS trajectories using different modules" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "import pyscal.core as pc\n", "from pyscal.core import Trajectory\n", "import pyscal.traj_process as ptp\n", "import dask.bag as db\n", "from ase.io import read\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "\n", "### Approach 1 - `pyscal.traj_process`\n", "\n", "Use pyscal `traj_process` to split the file. Reading is done in a second step." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3.37 ms ± 397 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" ] } ], "source": [ "%%timeit\n", "files = ptp.split_trajectory(\"traj.light\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Advantages\n", "- Quite fast\n", "- Does not read the complete file into memory\n", "\n", "### Disadvantages\n", "- Creates a number of small files into which the larger file is written\n", "- Affects the hard disk space" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Approach 2 - `dask.bag`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reading the file in dask is a two step approach. First a lazy iterator is created, then the data is computed." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "bag = db.read_text(\"traj.light\")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "474 ms ± 44 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit\n", "x = bag.compute()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Advantages\n", "- None\n", "\n", "### Disadvantages\n", "- Super slow\n", "- Reads the whole file at the same time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Approach 3 - `ase.io.read`" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "39 ms ± 953 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "%%timeit\n", "d = read(\"traj.light\", index=\":\", format=\"lammps-dump-text\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Advantages\n", "- No temporary files created\n", "- Reasonably fast\n", "\n", "### Disadvantages\n", "- Reads the whole file at the same time\n", "- Cannot write dump files" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Approach 4 - `Trajectory` class from pyscal\n", "\n", "The `Trajectory` class creates a object which gets basic information about the file without reading in the file at all. The reading is only done as when required." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "traj = Trajectory(\"traj.light\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Trajectory module supports indexing" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "sl = traj[:]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.62 ms ± 45.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n" ] } ], "source": [ "%%timeit\n", "sl.to_file(\"dump\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Advantages\n", "- Fastest approach\n", "- At most only one snapshot is kept in memory\n", "- No temporary files\n", "\n", "### Disadvantages\n", "- Only supports lammps files" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Time (ms)')" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "times = [3.37, 474, 39, 2.62]\n", "names = [\"traj_process\", \"dask\", \"ase\", \"Trajectory\"]\n", "plt.bar(range(len(times)), times, log=True, tick_label=names)\n", "plt.ylabel(\"Time (ms)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Test for a larger file. We will exclude `dask` as it is pretty slow." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "345 ms ± 9.98 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit\n", "files = ptp.split_trajectory(\"traj.3.dat\")" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "5.3 s ± 59.9 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit\n", "d = read(\"traj.3.dat\", index=\":\", format=\"lammps-dump-text\")" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "traj = Trajectory(\"traj.3.dat\")\n", "sl = traj[:]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "374 ms ± 2.67 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n" ] } ], "source": [ "%%timeit\n", "sl.to_file(\"dump\")" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Time (ms)')" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "times = [345, 5300, 374]\n", "names = [\"traj_process\", \"ase\", \"Trajectory\"]\n", "plt.bar(range(len(times)), times, log=True, tick_label=names)\n", "plt.ylabel(\"Time (ms)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Trajectory performs quite well even for the larger file. Main advantage - it does not write until absolutely necessary! " ] } ], "metadata": { "kernelspec": { "display_name": "lammps", "language": "python", "name": "lammps" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }