Last active
July 11, 2019 15:43
-
-
Save mimakaev/838ad1a2a43ca84aca8856999214c0ed to your computer and use it in GitHub Desktop.
polychrom-reporter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "import polychrom\nimport numpy as np \nimport h5py \nfrom polychrom.simulation import Simulation\nimport polychrom.starting_conformations\nimport polychrom.forces, polychrom.forcekits\nimport simtk.openmm \nimport os \nimport shutil", | |
| "execution_count": 1, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "\n\ndef convert_to_hdf5_array(data):\n if type(data) == str:\n data = np.array(data, dtype=\"S\")\n\n\n data = np.array(data)\n return data\n \n\n\nclass dummyReporter(object):\n def __init__(self, folder, max_data_length=20):\n if not os.path.exists(folder):\n os.mkdir(folder)\n if len(os.listdir(folder)) != 0:\n raise RuntimeError(f\"folder {folder} is not empty\")\n self.counter = {}\n self.datas = {}\n self.max_data_length = max_data_length\n self.folder = folder\n\n def report(self, name, values):\n count = self.counter.get(name, 0)\n \n if name not in [\"data\"]:\n filename = f\"{name}_{count}.hdf5\"\n with h5py.File(os.path.join(self.folder,filename)) as file: \n for dsetname, data in values.items():\n file.create_dataset(dsetname, data=convert_to_hdf5_array(data))\n \n \n else:\n self.datas[count] = values \n if len(self.datas) == self.max_data_length:\n self.dump_data()\n self.counter[name] = count + 1\n \n \n def dump_data(self):\n if len(self.datas) > 0:\n cmin = min(self.datas.keys())\n cmax = max(self.datas.keys())\n filename = f\"data_{cmin}-{cmax}.hdf5\"\n print(filename)\n with h5py.File(os.path.join(self.folder,filename)) as file: \n for count, values in self.datas.items(): \n gr = file.create_group(str(count))\n for dsetname, data in values.items():\n gr.create_dataset(dsetname, data=convert_to_hdf5_array(data))\n self.datas = {}\n\n \n \n", | |
| "execution_count": 2, | |
| "outputs": [] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "%rm test/*\ndata = polychrom.starting_conformations.grow_cubic(1000,30)\nreporter = dummyReporter(folder=\"test\", max_data_length=5)\n\nsim = Simulation(N=1000, error_tol=0.001, collision_rate=0.01, integrator =\"variableLangevin\", platform=\"CPU\", \n reporters=[reporter])\nsim.setData(data)\nsim.addForce(polychrom.forcekits.polymerChains(sim))\nsim._applyForces()\nsim.addForce(polychrom.forces.sphericalConfinement(sim, density=0.1))\nfor i in range(20):\n sim.doBlock(10)\nreporter.dump_data()\n", | |
| "execution_count": 3, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": "INFO:root:adding force HarmonicBonds 0\nINFO:root:adding force Angle 1\nINFO:root:adding force PolynomialRepulsive 2\nINFO:root:Particles loaded. Potential energy is 0.051877\nINFO:root:block 1 pos[1]=[13.9 13.7 13.9] dr=0.21 t=0.9ps kin=8.80 pot=4.40 Rg=5.488 dt=23.1fs dx=15.29pm \nINFO:root:block 2 pos[1]=[13.9 13.7 13.8] dr=0.18 t=1.1ps kin=4.33 pot=9.45 Rg=5.488 dt=20.2fs dx=9.41pm \nINFO:root:block 3 pos[1]=[13.9 13.6 13.8] dr=0.08 t=1.3ps kin=7.99 pot=5.78 Rg=5.492 dt=19.6fs dx=12.34pm \nINFO:root:block 4 pos[1]=[13.8 13.5 13.8] dr=0.15 t=1.6ps kin=6.96 pot=6.93 Rg=5.500 dt=21.7fs dx=12.81pm \nINFO:root:block 5 pos[1]=[13.8 13.5 13.8] dr=0.11 t=1.8ps kin=7.41 pot=6.47 Rg=5.508 dt=21.0fs dx=12.78pm \nINFO:root:block 6 pos[1]=[13.8 13.5 13.8] dr=0.13 t=2.0ps kin=7.83 pot=6.03 Rg=5.515 dt=21.0fs dx=13.14pm \nINFO:root:block 7 pos[1]=[13.8 13.4 13.8] dr=0.12 t=2.2ps kin=7.52 pot=6.30 Rg=5.522 dt=21.0fs dx=12.88pm \n", | |
| "name": "stderr" | |
| }, | |
| { | |
| "output_type": "stream", | |
| "text": "Exclude neighbouring chain particles from PolynomialRepulsive\nNumber of exceptions: 999\ndata_0-4.hdf5\n", | |
| "name": "stdout" | |
| }, | |
| { | |
| "output_type": "stream", | |
| "text": "INFO:root:block 8 pos[1]=[13.7 13.4 13.9] dr=0.12 t=2.4ps kin=7.85 pot=5.95 Rg=5.532 dt=21.0fs dx=13.16pm \nINFO:root:block 9 pos[1]=[13.7 13.4 13.9] dr=0.13 t=2.6ps kin=8.02 pot=5.75 Rg=5.542 dt=21.0fs dx=13.30pm \nINFO:root:block 10 pos[1]=[13.6 13.3 13.9] dr=0.13 t=2.8ps kin=7.73 pot=6.03 Rg=5.552 dt=21.0fs dx=13.05pm \nINFO:root:block 11 pos[1]=[13.6 13.3 13.9] dr=0.12 t=3.0ps kin=7.58 pot=6.16 Rg=5.564 dt=21.0fs dx=12.93pm \nINFO:root:block 12 pos[1]=[13.6 13.2 13.9] dr=0.13 t=3.3ps kin=8.30 pot=5.42 Rg=5.577 dt=21.0fs dx=13.53pm \nINFO:root:block 13 pos[1]=[13.6 13.2 13.8] dr=0.13 t=3.5ps kin=7.68 pot=6.02 Rg=5.590 dt=21.0fs dx=13.02pm \nINFO:root:block 14 pos[1]=[13.7 13.2 13.8] dr=0.13 t=3.7ps kin=8.12 pot=5.55 Rg=5.604 dt=21.0fs dx=13.38pm \nINFO:root:block 15 pos[1]=[13.8 13.1 13.7] dr=0.13 t=3.9ps kin=8.11 pot=5.52 Rg=5.618 dt=21.0fs dx=13.37pm \nINFO:root:block 16 pos[1]=[13.8 13.1 13.7] dr=0.13 t=4.1ps kin=7.89 pot=5.72 Rg=5.634 dt=21.0fs dx=13.19pm \nINFO:root:block 17 pos[1]=[13.7 12.9 13.7] dr=0.13 t=4.3ps kin=7.61 pot=6.00 Rg=5.650 dt=21.0fs dx=12.95pm \nINFO:root:block 18 pos[1]=[13.7 12.9 13.6] dr=0.13 t=4.5ps kin=8.20 pot=5.37 Rg=5.667 dt=21.0fs dx=13.44pm \nINFO:root:block 19 pos[1]=[13.9 12.8 13.6] dr=0.13 t=4.7ps kin=7.74 pot=5.80 Rg=5.685 dt=21.0fs dx=13.06pm \nINFO:root:block 20 pos[1]=[14.0 12.8 13.6] dr=0.12 t=4.9ps kin=7.83 pot=5.70 Rg=5.703 dt=21.0fs dx=13.14pm \n", | |
| "name": "stderr" | |
| }, | |
| { | |
| "output_type": "stream", | |
| "text": "data_5-9.hdf5\ndata_10-14.hdf5\ndata_15-19.hdf5\n", | |
| "name": "stdout" | |
| } | |
| ] | |
| }, | |
| { | |
| "metadata": { | |
| "trusted": true | |
| }, | |
| "cell_type": "code", | |
| "source": "ls test", | |
| "execution_count": 4, | |
| "outputs": [ | |
| { | |
| "output_type": "stream", | |
| "text": "\u001b[0m\u001b[38;5;202mapplied_forces_0.hdf5\u001b[0m* \u001b[38;5;202mdata_10-14.hdf5\u001b[0m* \u001b[38;5;202mdata_5-9.hdf5\u001b[0m*\r\n\u001b[38;5;202mdata_0-4.hdf5\u001b[0m* \u001b[38;5;202mdata_15-19.hdf5\u001b[0m* \u001b[38;5;202mload_data_0.hdf5\u001b[0m*\r\n", | |
| "name": "stdout" | |
| } | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "name": "python3", | |
| "display_name": "Python 3", | |
| "language": "python" | |
| }, | |
| "language_info": { | |
| "name": "python", | |
| "version": "3.7.3", | |
| "mimetype": "text/x-python", | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 3 | |
| }, | |
| "pygments_lexer": "ipython3", | |
| "nbconvert_exporter": "python", | |
| "file_extension": ".py" | |
| }, | |
| "gist": { | |
| "id": "838ad1a2a43ca84aca8856999214c0ed", | |
| "data": { | |
| "description": "polychrom-reporter", | |
| "public": true | |
| } | |
| }, | |
| "_draft": { | |
| "nbviewer_url": "https://gist.github.com/838ad1a2a43ca84aca8856999214c0ed" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment