Skip to content

Instantly share code, notes, and snippets.

@mimakaev
Last active July 11, 2019 15:43
Show Gist options
  • Select an option

  • Save mimakaev/838ad1a2a43ca84aca8856999214c0ed to your computer and use it in GitHub Desktop.

Select an option

Save mimakaev/838ad1a2a43ca84aca8856999214c0ed to your computer and use it in GitHub Desktop.
polychrom-reporter
Display the source blob
Display the rendered blob
Raw
{
"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