{ "cells": [ { "cell_type": "markdown", "id": "ae9ab3671af05fbe", "metadata": {}, "source": [ "# Post-run analysis\n", "\n", "In the last tutorial, we simulated a Lennard-Jones crystal and stored data in the file `'LJ_T0.70.h5'`.\n", "In this tutorial, we will analyse this data. Below, we will do some standard imports and load the data from the file on the disk." ] }, { "cell_type": "code", "execution_count": 1, "id": "3e92268e37823bf5", "metadata": { "ExecuteTime": { "end_time": "2025-06-03T08:51:56.785053Z", "start_time": "2025-06-03T08:51:56.120684Z" }, "execution": { "iopub.execute_input": "2025-06-12T09:58:44.543574Z", "iopub.status.busy": "2025-06-12T09:58:44.543353Z", "iopub.status.idle": "2025-06-12T09:58:44.941350Z", "shell.execute_reply": "2025-06-12T09:58:44.940964Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found .h5 file (./LJ_T0.70.h5), loading to gamdpy as output dictionary\n" ] } ], "source": [ "# Imports\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import h5py\n", "import gamdpy as gp\n", "\n", "# Select h5 file\n", "filename='./LJ_T0.70.h5'\n", "output = gp.tools.TrajectoryIO(filename).get_h5()" ] }, { "cell_type": "markdown", "id": "873b2c19-d819-479b-9913-a142c1a87e04", "metadata": {}, "source": [ "## Brief about the h5 data file" ] }, { "cell_type": "markdown", "id": "c2c66719-95ca-4a86-b7ba-2c0f36545533", "metadata": {}, "source": [ "### Large data sets" ] }, { "cell_type": "markdown", "id": "f6e5d1df-a632-4b09-95b4-d33de1356c64", "metadata": {}, "source": [ "Large data sets, such as the trajectory of particle positions, are stored as an HDF5 dataset (a data structure similar to a NumPy array, but data is stored on the disk)." ] }, { "cell_type": "code", "execution_count": 2, "id": "2877306999e9ffdf", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:44.942848Z", "iopub.status.busy": "2025-06-12T09:58:44.942693Z", "iopub.status.idle": "2025-06-12T09:58:44.945317Z", "shell.execute_reply": "2025-06-12T09:58:44.945082Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of timeblocks: nblocks = 32\n", "Configurations per timeblock: nconfs = 12\n", "Number of particles: N = 2048\n", "Number of spatial dimensions: D = 3\n" ] } ], "source": [ "nblocks, nconfs, N, D = output['trajectory_saver/positions'].shape\n", "print(f'Number of timeblocks: {nblocks = }')\n", "print(f'Configurations per timeblock: {nconfs = }')\n", "print(f'Number of particles: {N = }')\n", "print(f'Number of spatial dimensions: {D = }')" ] }, { "cell_type": "markdown", "id": "5dbb271c-74d7-4c6b-b548-87aadee834ad", "metadata": {}, "source": [ "### Information in attributes" ] }, { "cell_type": "markdown", "id": "21cca96b-5158-4a22-9d4a-d2b6827a00d0", "metadata": {}, "source": [ "Some information, such as details about the simulation box, is stored as attributes. Below, we fetch such data to get the density of the NVT simulation." ] }, { "cell_type": "code", "execution_count": 3, "id": "4f11c4bca2bb1ec0", "metadata": { "ExecuteTime": { "end_time": "2025-05-26T19:57:16.477921Z", "start_time": "2025-05-26T19:57:16.475197Z" }, "execution": { "iopub.execute_input": "2025-06-12T09:58:44.946627Z", "iopub.status.busy": "2025-06-12T09:58:44.946511Z", "iopub.status.idle": "2025-06-12T09:58:44.948564Z", "shell.execute_reply": "2025-06-12T09:58:44.948329Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Density: rho = 0.9730000458163045\n" ] } ], "source": [ "simbox = output['initial_configuration'].attrs['simbox_data']\n", "volume = np.prod(simbox)\n", "rho = N/volume\n", "print(f'Density: {rho = }')" ] }, { "cell_type": "markdown", "id": "95b90577-a614-42dd-8f41-83d48ecb0935", "metadata": {}, "source": [ "## Thermodynamics" ] }, { "cell_type": "markdown", "id": "99d93c369c3edc37", "metadata": {}, "source": [ "The gamdpy package contains helper functions to read data in .h5 files.\n", "Thermodynamic data, stored in the `'scalar_saver'` group, can be extracted using the `gp.extract_scalars()` function (we skip the first block with `first_block=1` since the system is not equilibrated)." ] }, { "cell_type": "code", "execution_count": 4, "id": "30dd986d-613d-409d-8480-cc2b60fc8b52", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:44.949775Z", "iopub.status.busy": "2025-06-12T09:58:44.949631Z", "iopub.status.idle": "2025-06-12T09:58:45.274394Z", "shell.execute_reply": "2025-06-12T09:58:45.274053Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Extract thermodynamic data\n", "U, W, K = gp.ScalarSaver.extract(output, ['U', 'W', 'K'], per_particle=False, first_block=1)\n", "\n", "# Get the associated times\n", "times = gp.ScalarSaver.get_times(output, first_block=1)\n", "\n", "# Plot potential energy per particle as a function of time\n", "plt.figure()\n", "plt.plot(times, U/N)\n", "plt.xlabel(r'Time, $t$')\n", "plt.ylabel('Potential energy per particle, $u=U/N$')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "a92ac37ec2c888f1", "metadata": {}, "source": [ "Some properties need to be computed from the data stored. Examples are the kinetic temperature and pressure (in LJ units)." ] }, { "cell_type": "code", "execution_count": 5, "id": "c168a51d98cd9da7", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:45.276010Z", "iopub.status.busy": "2025-06-12T09:58:45.275670Z", "iopub.status.idle": "2025-06-12T09:58:45.278143Z", "shell.execute_reply": "2025-06-12T09:58:45.277899Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mean kinetic temperature: np.mean(T_kin) = 0.6998382\n", "Mean pressure: np.mean(P) = 1.4038148\n" ] } ], "source": [ "# Compute instantaneous kinetic temperature\n", "dof = D * N - D # degrees of freedom\n", "T_kin = 2 * K / dof\n", "\n", "# Compute instantaneous pressure\n", "P = rho * T_kin + W / volume\n", "\n", "print(f'Mean kinetic temperature: {np.mean(T_kin) = }')\n", "print(f'Mean pressure: {np.mean(P) = }')" ] }, { "cell_type": "markdown", "id": "b46be63f-ce41-420a-9b61-47fa7590f2b0", "metadata": {}, "source": [ "## Structure\n", "\n", "To investigate the structure and dynamics of particles, we need to analyse data in the `'trajectory_saver'` group. Again, gamdpy has some built-in functionality to compute various measures. Let us calculate the radial distribution function. We will do this by inserting positions into a configuration object, and using the `gamdpy.CalculatorRadialDistribution()` class. The calculation is done on the GPU (for efficency)." ] }, { "cell_type": "code", "execution_count": 6, "id": "58c5f624-bbf3-489f-bfc9-73644a7777ce", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:45.279182Z", "iopub.status.busy": "2025-06-12T09:58:45.279048Z", "iopub.status.idle": "2025-06-12T09:58:45.917001Z", "shell.execute_reply": "2025-06-12T09:58:45.916448Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create configuration object\n", "configuration = gp.Configuration(D=D, N=N)\n", "configuration.simbox = gp.Orthorhombic(D, output['initial_configuration'].attrs['simbox_data'])\n", "configuration.ptype = output['initial_configuration/ptype']\n", "configuration.copy_to_device()\n", "\n", "# Call the radial distribution (RDF) calculator\n", "calc_rdf = gp.CalculatorRadialDistribution(configuration, bins=300)\n", "\n", "# Loop positions and compute the RDF\n", "positions = output['trajectory_saver/positions'][:,:,:,:]\n", "positions = positions.reshape(nblocks*nconfs,N,D)\n", "\n", "# Loop over the last configurations in each time block\n", "skipped_timeblocks = 1\n", "start = nconfs-1+skipped_timeblocks*nconfs\n", "step = nconfs\n", "for pos in positions[start::step]:\n", " configuration['r'] = pos\n", " configuration.copy_to_device()\n", " calc_rdf.update()\n", "rdf_data = calc_rdf.read()\n", "\n", "# Plot RDF\n", "plt.figure()\n", "plt.plot(rdf_data['distances'], rdf_data['rdf'][0])\n", "plt.xlabel(r'Pair distance, $r_{ij}$')\n", "plt.ylabel('Radial Distribution Function')\n", "plt.savefig(filename+'_rdf.pdf')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "3509171d-8f19-454f-80e4-efbba01b59b6", "metadata": {}, "source": [ "## Dynamics\n", "\n", "There are also built-in tools for analysing the trajectory. For example, the `gamdpy.tools.calc_dynamics` function computes several dynamical measures, including the mean squared displacement and the intermediate scattering function." ] }, { "cell_type": "code", "execution_count": 7, "id": "166dbf6e-69ac-4fd8-9d9d-f4848e95f17f", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:45.918469Z", "iopub.status.busy": "2025-06-12T09:58:45.918367Z", "iopub.status.idle": "2025-06-12T09:58:46.044590Z", "shell.execute_reply": "2025-06-12T09:58:46.044273Z" } }, "outputs": [ { "data": { "text/plain": [ "dict_keys(['times', 'msd', 'alpha2', 'qvalues', 'Fs', 'count'])" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "qvalues = 7.5\n", "dynamics = gp.tools.calc_dynamics(output, first_block=1, qvalues=qvalues) # Dictionary with dynamics\n", "dynamics.keys()" ] }, { "cell_type": "code", "execution_count": 8, "id": "eeb37bb4-c1e5-4913-9b40-39801a39806e", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:46.046147Z", "iopub.status.busy": "2025-06-12T09:58:46.046053Z", "iopub.status.idle": "2025-06-12T09:58:46.208585Z", "shell.execute_reply": "2025-06-12T09:58:46.208190Z" } }, "outputs": [ { "data": { "image/png": "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aNSoUR5PEgAAoL2ZXrh96NAh2Ww2p3abzaaSkhKPJAUAAOBtpoukgQMHat68eTp79qy9rb6+XvPmzdPAgQM9mhwAAIC3mC6SFi1apG3btik6OlrDhg3TsGHDdP311ys/P1+LFi0ynUBubq5sNpusVqsSEhK0Y8eOS8YXFBQoISFBVqtVMTExTmO+/fbbSk1NVffu3dW9e3cNGzZMe/bsueJxAQDA1cV0kTR06FCVlZXp5Zdf1uDBgzVo0CC98sorKisr09ChQ031tXr1amVlZWnmzJkqKipSamqqMjIyVF5e7jK+rKxMw4cPV2pqqoqKijRjxgxNmjTJYcH49u3b9dhjj+nzzz9XYWGhbrjhBqWlpen48eOtHhcAAFx9LIZhGN4aPCkpSfHx8crLy7O3DRw4UKNGjVJOTo5T/NSpU7VhwwaVlpba2zIzM3XgwAEVFha6HKOxsVHdu3fXggUL9Pjjj7dqXFfq6uoUGhqq2tpahYSEuHUMAADwLjO/363acfv999/XnXfeqd69e+v777+XJP3xj3/UX//6V7f7aGho0L59+5SWlubQnpaWpl27drk8prCw0Ck+PT1de/fu1blz51wec+bMGZ07d05hYWGtHle6sO6qrq7O4QUAADou00VSXl6esrOzlZGRof/7f/+vffPI7t27680333S7n+rqajU2NioiIsKhPSIiQpWVlS6PqaysdBl//vx5VVdXuzxm2rRp6tOnj4YNG9bqcSUpJydHoaGh9ld0dPRlvyMAAPBfpoukP/3pT3r77bc1c+ZMde78/7ZZSkxM1KFDh0wn8MsdvC+3q7ereFftkvT6669r5cqVWrdunaxW6xWNO336dNXW1tpfx44dazEWAAD4P7c2k7xYWVmZbrvtNqf24OBgnT592u1+evTooYCAAKfZm6qqKqdZnmaRkZEu4zt37qzw8HCH9jfeeEOvvPKKtm3b5vA8udaMK134fsHBwW59NwAA4P9MzyTZbDYVFxc7tX/yySeKjY11u5+goCAlJCQoPz/foT0/P18pKSkuj0lOTnaK37p1qxITExUYGGhv+93vfqeXXnpJmzdvVmJi4hWPCwAArkKGScuWLTP69OljrFq1yujatauxcuVKY968efb/NmPVqlVGYGCgsXTpUqOkpMTIysoyunbtanz33XeGYRjGtGnTjHHjxtnjjx49alxz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n9/ijFRycrJT/NatW5WYmGhq7F+qr69XaWmpoqKiWt0HAADoWDxWJLVGdna2lixZomXLlqm0tFSTJ09WeXm5MjMzJV24xPX444/b4zMzM/X9998rOztbpaWlWrZsmZYuXaopU6bYYxoaGlRcXKzi4mI1NDTo+PHjKi4u1j/+8Q97zJQpU1RQUKCysjJ9+eWXevjhh1VXV6fx48e335cHAAA+zfTlNk8aM2aMampqNHfuXFVUVCguLk6bNm1S3759JUkVFRUOeybZbDZt2rRJkydP1sKFC9W7d2/Nnz9fo0ePtsecOHFCt912m/39G2+8oTfeeEN33323tm/fLkn64Ycf9Nhjj6m6ulo9e/bU7bffrt27d9vHBQAA4LEkrcQ+SQAA+J823ScJAADgamD6cltjY6Peffddffrpp6qqqrJvLNnss88+81hyAAAA3mK6SHr22Wf17rvvasSIEYqLizO1PxEAAIC/MF0krVq1Sh988IH9cSQAAAAdkek1SUFBQfZdtgEAADoq00XSf/zHf+itt94SN8UBAICOzPTltp07d+rzzz/XJ598oltuucVpp+t169Z5LDkAAABvMV0kXXfddXrooYfaIhcAAACfYbpIeuedd9oiDwAAAJ/CZpIAAAAutOrZbWvWrNEHH3yg8vJyNTQ0OHy2f/9+jyQGAADgTaZnkubPn68JEyaoV69eKioq0tChQxUeHq6jR48qIyOjLXIEAABod6aLpNzcXC1evFgLFixQUFCQnnvuOeXn52vSpEmqra1tixwBAADanekiqby8XCkpKZKkLl266NSpU5KkcePGaeXKlZ7NDgAAwEtMF0mRkZGqqamRJPXt21e7d++WJJWVlbHBJAAA6DBMF0n33XefNm7cKEl68sknNXnyZN1///0aM2YM+ycBAIAOw2KYnP5pampSU1OTOne+cGPcBx98oJ07d2rAgAHKzMxUUFBQmyTqa+rq6hQaGqra2lqFhIR4Ox0AAOAGM7/fposkXECRBACA/zHz+92qzSR37NihsWPHKjk5WcePH5ckvf/++9q5c2drugMAAPA5pouktWvXKj09XV26dFFRUZHq6+slSadOndIrr7zi8QQBOGtsMlT4bY3+Wnxchd/WqLGJCWEA8DTTO27PmzdPixYt0uOPP65Vq1bZ21NSUjR37lyPJgfA2eavKzRnY4kqas/a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1Fr01VdfacSIEd5OA4CbuNwGwC9FRkbaX6GhobJYLE5tv7zcds899+i3v/2tsrKy1L17d0VERGjx4sU6ffq0JkyYoG7duql///765JNP7McYhqHXX39dMTEx6tKli2699VatWbPGVK7nzp1TUFCQdu3apZkzZ8pisSgpKclT/xQA2ghFEoCrynvvvacePXpoz549+u1vf6unn35av/rVr5SSkqL9+/crPT1d48aN05kzZyRJzz//vN555x3l5eXpm2++0eTJkzV27FgVFBS4PWZAQIB27twpSSouLlZFRYW2bNnSJt8PgOdQJAG4qtx66616/vnndeONN2r69Onq0qWLevTooYkTJ+rGG2/Uiy++qJqaGh08eFCnT5/WH/7wBy1btkzp6emKiYnRE088obFjx+rPf/6z22N26tRJJ06cUHh4uG699VZFRkbquuuua7svCcAjWJME4KoyePBg+38HBAQoPDxcgwYNsrdFRERIkqqqqlRSUqKzZ8/q/vvvd+ijoaFBt912m6lxi4qKdOutt15B5gDaG0USgKvKL+92s1gsDm3Nd801NTWpqalJkvTxxx+rT58+DscFBwebGre4uJgiCfAzFEkA0ILY2FgFBwervLxcd9999xX1dejQIT300EMeygxAe6BIAoAWdOvWTVOmTNHkyZPV1NSkO++8U3V1ddq1a5euvfZajR8/3u2+mpqadPDgQZ04cUJdu3b1ue0JADhj4TYAXMJLL72kF198UTk5ORo4cKDS09O1ceNG2Ww2e8y777572c0t582bp9WrV6tPnz6aO3duW6cNwAMshmEY3k4CAPzZ7NmztX37dm3fvt3bqQDwIC63AcAV2rJli9566y1vpwHAw5hJAgAAcIE1SQAAAC5QJAEAALhAkQQAAOACRRIAAIALFEkAAAAuUCQBAAC4QJEEAADgAkUSAACACxRJAAAALlAkAQAAuECRBAAA4ML/B8hyXs2/0DuJAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(dynamics['times'], dynamics['msd'], 'o')\n", "plt.xscale('log')\n", "plt.ylim(0, None)\n", "plt.xlabel(r'Time, $t$')\n", "plt.ylabel(r'Mean squared displacement')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 9, "id": "12c2aaba-aa41-47c4-8a28-99245f287700", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:46.210130Z", "iopub.status.busy": "2025-06-12T09:58:46.210024Z", "iopub.status.idle": "2025-06-12T09:58:46.318772Z", "shell.execute_reply": "2025-06-12T09:58:46.318442Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "plt.plot(dynamics['times'], dynamics['Fs'], 'o')\n", "plt.xscale('log')\n", "plt.ylim(0, 1.1)\n", "plt.xlabel(r'Time, $t$')\n", "plt.ylabel(r'Intermediate scattering function, $F(t, q = ' f'{qvalues}' r'$)')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "5c7a37b6-312a-437a-899b-ac0838bc2f3d", "metadata": {}, "source": [ "## Details about stored data\n", "\n", "### Structure of h5 file\n", "Below is a function to print the structure of a given h5 file." ] }, { "cell_type": "code", "execution_count": 10, "id": "31e30363397fed86", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:46.320373Z", "iopub.status.busy": "2025-06-12T09:58:46.320280Z", "iopub.status.idle": "2025-06-12T09:58:46.323334Z", "shell.execute_reply": "2025-06-12T09:58:46.323098Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "initial_configuration/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", "restarts/ (Group)\n", " restart0000/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0001/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0002/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0003/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0004/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0005/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0006/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0007/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0008/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0009/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0010/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0011/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0012/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0013/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0014/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0015/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0016/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0017/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0018/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0019/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0020/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0021/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0022/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0023/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0024/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0025/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0026/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0027/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0028/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0029/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0030/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", " restart0031/ (Group)\n", " ptype (Dataset, shape=(2048,), dtype=int32)\n", " r_im (Dataset, shape=(2048, 3), dtype=int32)\n", " scalars (Dataset, shape=(2048, 4), dtype=float32)\n", " topology/ (Group)\n", " angles (Dataset, shape=(0,), dtype=int32)\n", " bonds (Dataset, shape=(0,), dtype=int32)\n", " dihedrals (Dataset, shape=(0,), dtype=int32)\n", " molecules/ (Group)\n", " vectors (Dataset, shape=(3, 2048, 3), dtype=float32)\n", "scalar_saver/ (Group)\n", " scalars (Dataset, shape=(32, 64, 3), dtype=float32)\n", "trajectory_saver/ (Group)\n", " images (Dataset, shape=(32, 12, 2048, 3), dtype=int32)\n", " positions (Dataset, shape=(32, 12, 2048, 3), dtype=float32)\n" ] } ], "source": [ "gp.tools.print_h5_structure(output)" ] }, { "cell_type": "markdown", "id": "d99f3cbe-eb60-450e-ab57-c54b9db18603", "metadata": {}, "source": [ "### Attributes inside the H5 file\n", "Below is a function that will print the attributes in a given h5 file." ] }, { "cell_type": "code", "execution_count": 11, "id": "d48dc708-79d6-43ae-8232-b67127b0f1a6", "metadata": { "execution": { "iopub.execute_input": "2025-06-12T09:58:46.324548Z", "iopub.status.busy": "2025-06-12T09:58:46.324439Z", "iopub.status.idle": "2025-06-12T09:58:46.327859Z", "shell.execute_reply": "2025-06-12T09:58:46.327583Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Attributes at /:\n", " - dt: 0.005\n", " - script_content: ...\n", " - script_name: ...\n", "Attributes at /initial_configuration/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /initial_configuration/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /initial_configuration/topology/molecules/:\n", " - names: []\n", "Attributes at /initial_configuration/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/:\n", " - timeblocks_between_restarts: 1\n", "Attributes at /restarts/restart0000/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0000/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0000/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0000/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0001/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0001/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0001/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0001/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0002/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0002/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0002/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0002/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0003/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0003/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0003/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0003/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0004/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0004/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0004/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0004/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0005/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0005/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0005/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0005/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0006/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0006/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0006/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0006/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0007/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0007/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0007/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0007/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0008/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0008/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0008/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0008/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0009/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0009/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0009/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0009/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0010/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0010/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0010/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0010/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0011/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0011/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0011/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0011/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0012/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0012/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0012/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0012/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0013/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0013/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0013/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0013/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0014/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0014/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0014/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0014/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0015/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0015/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0015/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0015/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0016/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0016/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0016/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0016/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0017/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0017/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0017/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0017/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0018/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0018/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0018/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0018/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0019/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0019/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0019/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0019/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0020/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0020/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0020/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0020/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0021/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0021/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0021/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0021/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0022/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0022/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0022/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0022/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0023/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0023/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0023/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0023/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0024/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0024/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0024/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0024/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0025/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0025/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0025/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0025/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0026/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0026/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0026/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0026/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0027/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0027/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0027/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0027/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0028/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0028/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0028/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0028/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0029/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0029/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0029/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0029/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0030/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0030/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0030/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0030/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /restarts/restart0031/:\n", " - simbox_data: [12.815602 12.815602 12.815602]\n", " - simbox_name: Orthorhombic\n", "Attributes at /restarts/restart0031/scalars:\n", " - scalar_columns: ['U' 'W' 'K' 'm']\n", "Attributes at /restarts/restart0031/topology/molecules/:\n", " - names: []\n", "Attributes at /restarts/restart0031/vectors:\n", " - vector_columns: ['r' 'v' 'f']\n", "Attributes at /scalar_saver/:\n", " - compression_info: gzip with opts 4\n", " - scalar_names: ['U' 'W' 'K']\n", " - steps_between_output: 16\n", "Attributes at /trajectory_saver/:\n", " - compression_info: gzip with opts 4\n" ] } ], "source": [ "gp.tools.print_h5_attributes(output)" ] }, { "cell_type": "markdown", "id": "98a62831-a9b6-4fa7-a34a-82ad0e4965ed", "metadata": {}, "source": [ "## Concluding remarks\n", "\n", "You have now conducted your first simulation and done some post-analysis of the trajectory. You now understand the basics of how gamdpy works, and are ready for more advanced simulations and analysis - see examples." ] } ], "metadata": { "kernelspec": { "display_name": "gamdpy", "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.11.2" } }, "nbformat": 4, "nbformat_minor": 5 }