From 1af933aea3a6c2037b3514e5f0c92006dd78d7a2 Mon Sep 17 00:00:00 2001 From: Jake Anderson Date: Mon, 9 Oct 2023 14:36:30 -0700 Subject: [PATCH 1/4] Added a tutorial notebook that does APR on sug-roc without using Tleap --- .../08-tutorial-sug-roc-notleap.ipynb | 981 ++++++++++++++++++ paprika/data/sug-roc/rocuronium.sdf | 196 ++++ paprika/data/sug-roc/sug_roc.pdb | 651 ++++++++++++ paprika/data/sug-roc/sugammadex.sdf | 479 +++++++++ 4 files changed, 2307 insertions(+) create mode 100644 docs/tutorials/08-tutorial-sug-roc-notleap.ipynb create mode 100644 paprika/data/sug-roc/rocuronium.sdf create mode 100644 paprika/data/sug-roc/sug_roc.pdb create mode 100644 paprika/data/sug-roc/sugammadex.sdf diff --git a/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb b/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb new file mode 100644 index 0000000..64e55b6 --- /dev/null +++ b/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb @@ -0,0 +1,981 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "50480e01-d166-431f-a00a-933c68e67413", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-10-09 02:10:14 PM Enabling RDKit 2023.03.3 jupyter extensions\n" + ] + } + ], + "source": [ + "import logging\n", + "import os\n", + "import pickle\n", + "from importlib import reload\n", + "\n", + "reload(logging)\n", + "logger = logging.getLogger()\n", + "logging.basicConfig(\n", + " format=\"%(asctime)s %(message)s\", datefmt=\"%Y-%m-%d %I:%M:%S %p\", level=logging.INFO\n", + ")\n", + "\n", + "import numpy as np\n", + "import parmed as pmd\n", + "from openff.toolkit import ForceField as openffForceField\n", + "from openff.toolkit import Molecule as openffMolecule\n", + "from openff.toolkit import Topology as openffTopology\n", + "from openmm import *\n", + "from openmm.app import *\n", + "from openmm.unit import *\n", + "from openmmforcefields.generators import (\n", + " GAFFTemplateGenerator,\n", + " SMIRNOFFTemplateGenerator,\n", + ")\n", + "\n", + "compdir = \"complex\"\n", + "datadir = \"../../paprika/data/sug-roc\"\n", + "workdir = \"working_data\"\n", + "for dir in [compdir, datadir, workdir]:\n", + " if not os.path.isdir(dir):\n", + " os.makedirs(dir)" + ] + }, + { + "cell_type": "markdown", + "id": "35f12242-f8a1-4492-b23b-b5cc60a94745", + "metadata": {}, + "source": [ + "#### Create molecules for the host & guest and assign them types according to GAFF or OpenFF. We'll use Tip3P explicit waters." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0119bb61-339f-413d-a243-4195fd770e0b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-10-09 02:10:14 PM Attempting to up-convert vdW section from 0.3 to 0.4\n", + "2023-10-09 02:10:14 PM Successfully up-converted vdW section from 0.3 to 0.4. `method=\"cutoff\"` is now split into `periodic_method=\"cutoff\"` and `nonperiodic_method=\"no-cutoff\"`.\n", + "2023-10-09 02:10:14 PM Attempting to up-convert Electrostatics section from 0.3 to 0.4\n", + "2023-10-09 02:10:14 PM Successfully up-converted Electrostatics section from 0.3 to 0.4. `method=\"PME\"` is now split into `periodic_potential=\"Ewald3D-ConductingBoundary\"`, `nonperiodic_potential=\"Coulomb\"`, and `exception_potential=\"Coulomb\"`.\n" + ] + } + ], + "source": [ + "ff = ForceField(\"amber/tip3p_standard.xml\", \"amber/tip3p_HFE_multivalent.xml\")\n", + "guest = openffMolecule.from_file(f\"{datadir}/rocuronium.sdf\")\n", + "guest.generate_unique_atom_names()\n", + "if os.path.exists(f\"{datadir}/guest_charges.pickle\"):\n", + " with open(f\"{datadir}/guest_charges.pickle\", \"rb\") as f:\n", + " guest_charges = pickle.load(f)\n", + " guest.partial_charges = guest_charges\n", + "else:\n", + " guest.assign_partial_charges(partial_charge_method=\"am1bcc\")\n", + " with open(f\"{datadir}/guest_charges.pickle\", \"wb\") as f:\n", + " guest_charges = guest.partial_charges\n", + " pickle.dump(guest_charges, f)\n", + "\n", + "host = openffMolecule.from_file(f\"{datadir}/sugammadex.sdf\")\n", + "host.generate_unique_atom_names()\n", + "if os.path.exists(f\"{datadir}/host_charges.pickle\"):\n", + " with open(f\"{datadir}/host_charges.pickle\", \"rb\") as f:\n", + " host_charges = pickle.load(f)\n", + " host.partial_charges = host_charges\n", + "else:\n", + " host.assign_partial_charges(partial_charge_method=\"gasteiger\")\n", + " with open(f\"{datadir}/host_charges.pickle\", \"wb\") as f:\n", + " host_charges = host.partial_charges\n", + " pickle.dump(host_charges, f)\n", + "\n", + "for a in guest.atoms:\n", + " a.metadata[\"residue_name\"] = \"ROC\"\n", + "for a in host.atoms:\n", + " a.metadata[\"residue_name\"] = \"SUG\"\n", + "\n", + "gaff = GAFFTemplateGenerator(molecules=[host, guest])\n", + "smirnoff = SMIRNOFFTemplateGenerator(molecules=[host, guest], forcefield=\"openff-2.0.0\")\n", + "ff.registerTemplateGenerator(\n", + " smirnoff.generator\n", + ") # GAFF or OpenFF generator, user's choice\n", + "topology = openffTopology.from_molecules([host, guest])" + ] + }, + { + "cell_type": "markdown", + "id": "551c2981-30d9-47a8-a549-64ab782b2cde", + "metadata": {}, + "source": [ + "#### Create an OpenMM system with box dimensions 5x5x10 nanometers using PME and hydrogen mass repartitioning" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "67fd1924-6017-40ff-b05c-e503f06c1ae1", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-10-09 02:10:15 PM Requested to generate parameters for residue \n", + "2023-10-09 02:10:15 PM Generating a residue template for [H][O][C@]1([H])[C@@]([H])([O][H])[C@@]2([H])[O][C@@]3([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]4([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]5([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]6([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]7([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]8([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]9([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@]1([H])[C@@]([H])([C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O]2)[O][C@]9([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]8([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]7([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]6([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]5([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]4([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]3([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-] using openff-2.0.0\n", + "2023-10-09 02:10:16 PM Requested to generate parameters for residue \n", + "2023-10-09 02:10:16 PM Generating a residue template for [H][O][C@@]1([H])[C]([H])([H])[C@]2([H])[C]([H])([H])[C]([H])([H])[C@]3([H])[C@]([H])([C]([H])([H])[C]([H])([H])[C@]4([C]([H])([H])[H])[C@@]([H])([O][C](=[O])[C]([H])([H])[H])[C@@]([H])([N+]5([C]([H])([H])[C]([H])=[C]([H])[H])[C]([H])([H])[C]([H])([H])[C]([H])([H])[C]5([H])[H])[C]([H])([H])[C@@]34[H])[C@@]2([C]([H])([H])[H])[C]([H])([H])[C@]1([H])[N+]1([H])[C]([H])([H])[C]([H])([H])[O][C]([H])([H])[C]1([H])[H] using openff-2.0.0\n" + ] + } + ], + "source": [ + "pdb = PDBFile(f\"{datadir}/sug_roc.pdb\")\n", + "model = Modeller(topology.to_openmm(ensure_unique_atom_names=True), pdb.positions)\n", + "unit_cell_dimensions = Vec3(5.0, 5.0, 10.0) * nanometers\n", + "model.topology.setUnitCellDimensions(unit_cell_dimensions)\n", + "\n", + "system = ff.createSystem(\n", + " model.topology,\n", + " nonbondedMethod=PME,\n", + " nonbondedCutoff=0.9 * nanometers,\n", + " rigidWater=True,\n", + " constraints=HBonds,\n", + " hydrogenMass=3.02352 * amu,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "2f7739c7-11ca-4a0f-911e-50a41d2ffd9a", + "metadata": {}, + "source": [ + "#### Use pAPRika to align the complex such that the guest is along the z axis. The host ring will lie in the xy plane." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "21fc58f4-c6fe-4555-9022-f8d3739cb8dd", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-10-09 02:10:16 PM Note: detected 128 virtual cores but NumExpr set to maximum of 64, check \"NUMEXPR_MAX_THREADS\" environment variable.\n", + "2023-10-09 02:10:16 PM Note: NumExpr detected 128 cores but \"NUMEXPR_MAX_THREADS\" not set, so enforcing safe limit of 8.\n", + "2023-10-09 02:10:16 PM NumExpr defaulting to 8 threads.\n", + "2023-10-09 02:10:16 PM Warning on use of the timeseries module: If the inherent timescales of the system are long compared to those being analyzed, this statistical inefficiency may be an underestimate. The estimate presumes the use of many statistically independent samples. Tests should be performed to assess whether this condition is satisfied. Be cautious in the interpretation of the data.\n", + "2023-10-09 02:10:16 PM JAX detected. Using JAX acceleration.\n", + "2023-10-09 02:10:17 PM Moving :ROC@C14x (1 atoms) to the origin...\n", + "2023-10-09 02:10:17 PM Aligning :ROC@C8x (1 atoms) with the z axis...\n" + ] + } + ], + "source": [ + "from paprika.build import align\n", + "\n", + "structure = pmd.openmm.load_topology(\n", + " model.topology,\n", + " system,\n", + " xyz=model.positions,\n", + " condense_atom_types=False,\n", + ")\n", + "\n", + "# Specifically, put the line between atoms C14x and C8x on guest residue \"ROC\" in line with the z axis. Can be changed to other guest residues.\n", + "G1 = \":ROC@C14x\"\n", + "G2 = \":ROC@C8x\"\n", + "\n", + "aligned_structure = align.translate_to_origin(structure)\n", + "aligned_structure = align.zalign(aligned_structure, G1, G2)" + ] + }, + { + "cell_type": "markdown", + "id": "65c3b296-18a7-43dd-8977-61eda6f0ad8a", + "metadata": {}, + "source": [ + "#### Add solvent and dummy atoms" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "675d0486-5edc-48b2-ae9a-e4672b06e134", + "metadata": {}, + "outputs": [], + "source": [ + "model = Modeller(\n", + " topology.to_openmm(ensure_unique_atom_names=True), aligned_structure.positions\n", + ")\n", + "model.topology.setUnitCellDimensions(unit_cell_dimensions)\n", + "model.addSolvent(\n", + " ff, boxSize=unit_cell_dimensions, model=\"tip3p\", ionicStrength=5 * millimolar\n", + ") # Here salt can be added or removed\n", + "system = ff.createSystem(\n", + " model.topology,\n", + " nonbondedMethod=PME,\n", + " nonbondedCutoff=0.9 * nanometers,\n", + " rigidWater=True,\n", + " constraints=HBonds,\n", + ") # We recreate the OpenMM system because it now has waters\n", + "\n", + "# Set the nonbonded forces for the dummy atoms to have force constants of 0 and masses of 0.\n", + "# Masses of 0 means OpenMM won't calculate forces for them.\n", + "for force in system.getForces():\n", + " if isinstance(force, openmm.NonbondedForce):\n", + " system.addParticle(mass=0)\n", + " system.addParticle(mass=0)\n", + " system.addParticle(mass=0)\n", + " force.addParticle(0, 0, 0)\n", + " force.addParticle(0, 0, 0)\n", + " force.addParticle(0, 0, 0)\n", + "\n", + "with open(f\"{compdir}/solvated_dummy_system.xml\", \"w\") as f:\n", + " f.write(XmlSerializer.serialize(system))\n", + "\n", + "all_positions = model.positions\n", + "all_positions.append(Vec3(0.0, 0.0, -12.0) * angstrom)\n", + "all_positions.append(Vec3(0.0, 0.0, -15.0) * angstrom)\n", + "all_positions.append(Vec3(0.0, 4.33, -17.5) * angstrom)\n", + "\n", + "chain = model.topology.addChain(\"5\")\n", + "dummy_res1 = model.topology.addResidue(name=\"DM1\", chain=chain)\n", + "dummy_res2 = model.topology.addResidue(name=\"DM2\", chain=chain)\n", + "dummy_res3 = model.topology.addResidue(name=\"DM3\", chain=chain)\n", + "\n", + "model.topology.addAtom(\"DUM\", Element.getBySymbol(\"Pb\"), dummy_res1)\n", + "model.topology.addAtom(\"DUM\", Element.getBySymbol(\"Pb\"), dummy_res2)\n", + "model.topology.addAtom(\"DUM\", Element.getBySymbol(\"Pb\"), dummy_res3)\n", + "\n", + "# Move every atom to the center of the unit cell.\n", + "# If we don't do this the complex & solvent will lie on the corner of the unit cell.\n", + "all_positions = [\n", + " Vec3(\n", + " p[0].value_in_unit(angstrom)\n", + " + (unit_cell_dimensions[0] / 2).value_in_unit(angstrom),\n", + " p[1].value_in_unit(angstrom)\n", + " + (unit_cell_dimensions[1] / 2).value_in_unit(angstrom),\n", + " p[2].value_in_unit(angstrom)\n", + " + (unit_cell_dimensions[2] / 2).value_in_unit(angstrom),\n", + " )\n", + " for p in all_positions\n", + "]\n", + "\n", + "# Move every solute atom 16Å from the center of the solvent box,\n", + "# to make room for pulling along z.\n", + "for atom in model.topology.atoms():\n", + " if atom.residue.name in [\"SUG\", \"ROC\", \"DM1\", \"DM2\", \"DM3\"]:\n", + " all_positions[atom.index] = Vec3(\n", + " all_positions[atom.index][0],\n", + " all_positions[atom.index][1],\n", + " all_positions[atom.index][2] - 16.0,\n", + " )\n", + "\n", + "with open(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", \"w+\") as f:\n", + " PDBFile.writeFile(model.topology, all_positions, file=f, keepIds=True)\n", + "\n", + "aligned_solvated_dummy_structure = pmd.openmm.load_topology(\n", + " model.topology, system, xyz=all_positions, condense_atom_types=False\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "7126b627-20ff-4c51-9335-2b76d2a277fa", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "There are [21, 60, 0] windows in this APR calculation.\n" + ] + } + ], + "source": [ + "attach_fractions = [f / 100 for f in np.arange(0, 105.0, 5.0)]\n", + "initial_distance = 12.0\n", + "distance_step = 0.5\n", + "pull_distances = np.arange(\n", + " 0.0 + initial_distance, 30.0 + initial_distance, distance_step\n", + ")\n", + "release_fractions = []\n", + "windows = [len(attach_fractions), len(pull_distances), len(release_fractions)]\n", + "print(f\"There are {windows} windows in this APR calculation.\")" + ] + }, + { + "cell_type": "markdown", + "id": "77f8805b-766a-4adf-94f7-679d610a5a1d", + "metadata": {}, + "source": [ + "#### Create static restraints" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "f4cd75b9-4299-4324-94ca-6a6ef9b31e72", + "metadata": {}, + "outputs": [], + "source": [ + "from paprika import restraints\n", + "\n", + "G1 = \":ROC@C14x\"\n", + "G2 = \":ROC@C8x\"\n", + "\n", + "H1 = \":SUG@C16x\"\n", + "H2 = \":SUG@C28x\"\n", + "H3 = \":SUG@C45x\"\n", + "\n", + "D1 = \":DM1@DUM\"\n", + "D2 = \":DM2@DUM\"\n", + "D3 = \":DM3@DUM\"\n", + "\n", + "static_restraints = []\n", + "r = restraints.static_DAT_restraint(\n", + " restraint_mask_list=[D1, H1],\n", + " num_window_list=windows,\n", + " ref_structure=f\"{compdir}/aligned_solvated_dummy_structure.pdb\",\n", + " force_constant=5.0,\n", + " amber_index=False, # Because we're using OpenMM\n", + ")\n", + "static_restraints.append(r)\n", + "r = restraints.static_DAT_restraint(\n", + " restraint_mask_list=[H1, H2, H3],\n", + " num_window_list=windows,\n", + " ref_structure=f\"{compdir}/aligned_solvated_dummy_structure.pdb\",\n", + " force_constant=100.0,\n", + " amber_index=False,\n", + ")\n", + "static_restraints.append(r)\n", + "r = restraints.static_DAT_restraint(\n", + " restraint_mask_list=[D2, D1, H1],\n", + " num_window_list=windows,\n", + " ref_structure=f\"{compdir}/aligned_solvated_dummy_structure.pdb\",\n", + " force_constant=100.0,\n", + " amber_index=False,\n", + ")\n", + "static_restraints.append(r)\n", + "r = restraints.static_DAT_restraint(\n", + " restraint_mask_list=[D3, D2, D1, H1],\n", + " num_window_list=windows,\n", + " ref_structure=f\"{compdir}/aligned_solvated_dummy_structure.pdb\",\n", + " force_constant=100.0,\n", + " amber_index=False,\n", + ")\n", + "static_restraints.append(r)\n", + "r = restraints.static_DAT_restraint(\n", + " restraint_mask_list=[D1, H1, H2],\n", + " num_window_list=windows,\n", + " ref_structure=f\"{compdir}/aligned_solvated_dummy_structure.pdb\",\n", + " force_constant=100.0,\n", + " amber_index=False,\n", + ")\n", + "static_restraints.append(r)\n", + "r = restraints.static_DAT_restraint(\n", + " restraint_mask_list=[D2, D1, H1, H2],\n", + " num_window_list=windows,\n", + " ref_structure=f\"{compdir}/aligned_solvated_dummy_structure.pdb\",\n", + " force_constant=100.0,\n", + " amber_index=False,\n", + ")\n", + "static_restraints.append(r)\n", + "r = restraints.static_DAT_restraint(\n", + " restraint_mask_list=[D1, H1, H2, H3],\n", + " num_window_list=windows,\n", + " ref_structure=f\"{compdir}/aligned_solvated_dummy_structure.pdb\",\n", + " force_constant=100.0,\n", + " amber_index=False,\n", + ")\n", + "static_restraints.append(r)" + ] + }, + { + "cell_type": "markdown", + "id": "1908b575-1abf-4ebc-bb94-f5f1af8411a7", + "metadata": {}, + "source": [ + "#### Create dynamic restraints" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d425cbff-243d-4e5b-8150-aceb6c2a520a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-10-09 02:10:45 PM Loaded complex/aligned_solvated_dummy_structure.pdb...\n", + "2023-10-09 02:10:47 PM Loaded complex/aligned_solvated_dummy_structure.pdb...\n", + "2023-10-09 02:10:50 PM Loaded complex/aligned_solvated_dummy_structure.pdb...\n", + "2023-10-09 02:10:53 PM Loaded complex/aligned_solvated_dummy_structure.pdb...\n" + ] + } + ], + "source": [ + "G1 = \":ROC@C14x\"\n", + "G2 = \":ROC@C8x\"\n", + "\n", + "guest_restraints = []\n", + "\n", + "r = restraints.DAT_restraint()\n", + "r.mask1 = D1\n", + "r.mask2 = G1\n", + "r.topology = f\"{compdir}/aligned_solvated_dummy_structure.pdb\"\n", + "r.auto_apr = True\n", + "r.continuous_apr = True\n", + "r.amber_index = False\n", + "\n", + "r.attach[\"target\"] = pull_distances[0] # Angstroms\n", + "r.attach[\"fraction_list\"] = attach_fractions\n", + "r.attach[\"fc_final\"] = 2.5 # kcal/mol/Angstroms**2\n", + "\n", + "r.pull[\"target_final\"] = pull_distances[-1] # Angstroms\n", + "r.pull[\"num_windows\"] = windows[1]\n", + "\n", + "r.initialize()\n", + "guest_restraints.append(r)\n", + "\n", + "r = restraints.DAT_restraint()\n", + "r.mask1 = D2\n", + "r.mask2 = D1\n", + "r.mask3 = G1\n", + "r.topology = f\"{compdir}/aligned_solvated_dummy_structure.pdb\"\n", + "r.auto_apr = True\n", + "r.continuous_apr = True\n", + "r.amber_index = False\n", + "\n", + "r.attach[\"target\"] = 180.0 # Degrees\n", + "r.attach[\"fraction_list\"] = attach_fractions\n", + "r.attach[\"fc_final\"] = 80.0 # kcal/mol/radian**2\n", + "\n", + "r.pull[\"target_final\"] = 180.0 # Degrees\n", + "r.pull[\"num_windows\"] = windows[1]\n", + "\n", + "r.initialize()\n", + "guest_restraints.append(r)\n", + "\n", + "r = restraints.DAT_restraint()\n", + "r.mask1 = D1\n", + "r.mask2 = G1\n", + "r.mask3 = G2\n", + "r.topology = f\"{compdir}/aligned_solvated_dummy_structure.pdb\"\n", + "r.auto_apr = True\n", + "r.continuous_apr = True\n", + "r.amber_index = False\n", + "\n", + "r.attach[\"target\"] = 180.0 # Degrees\n", + "r.attach[\"fraction_list\"] = attach_fractions\n", + "r.attach[\"fc_final\"] = 80.0 # kcal/mol/radian**2\n", + "\n", + "r.pull[\"target_final\"] = 180.0 # Degrees\n", + "r.pull[\"num_windows\"] = windows[1]\n", + "\n", + "r.initialize()\n", + "guest_restraints.append(r)" + ] + }, + { + "cell_type": "markdown", + "id": "f9fd2b3d-bd2b-47f9-9b61-35c9e9309a04", + "metadata": {}, + "source": [ + "#### We save the restraints in case we need to access them for analysis" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "1443100a-bf44-4ff8-9a32-b41a11fd73b7", + "metadata": {}, + "outputs": [], + "source": [ + "with open(f\"{compdir}/static_restraints.pickle\", \"wb\") as f:\n", + " pickle.dump(static_restraints, f)\n", + "\n", + "with open(f\"{compdir}/guest_restraints.pickle\", \"wb\") as f:\n", + " pickle.dump(guest_restraints, f)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "0f0636d5-ff8d-478c-93aa-2ccfd6596f2a", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-10-09 02:10:56 PM Restraints appear to be consistent\n" + ] + } + ], + "source": [ + "from paprika.restraints.utils import create_window_list\n", + "\n", + "window_list = create_window_list(guest_restraints)" + ] + }, + { + "cell_type": "markdown", + "id": "1e01de75-4288-458b-bc93-0a9d55ab1b3a", + "metadata": {}, + "source": [ + "#### Since we are using explicit solvent, it's not safe to teleport the guest to different z values to act as the starting point for each pulling window. So to be safe we drag it out with restraints manually." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a7545a70-e6b0-43ba-a8f7-a2d02d48eec6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 119/119 [10:41<00:00, 5.39s/it]\n" + ] + } + ], + "source": [ + "import shutil\n", + "\n", + "from paprika.restraints.openmm import apply_dat_restraint, apply_positional_restraints\n", + "from paprika.utils import index_from_mask\n", + "from tqdm import tqdm\n", + "\n", + "for window in window_list:\n", + " dir = f\"{workdir}/{window}\"\n", + " if not os.path.isdir(dir):\n", + " os.makedirs(dir)\n", + "\n", + " if window[0] == \"a\":\n", + " shutil.copy(\n", + " f\"{compdir}/aligned_solvated_dummy_structure.pdb\",\n", + " f\"{dir}/aligned_solvated_dummy_structure.pdb\",\n", + " )\n", + "\n", + "pdb = PDBFile(f\"{compdir}/aligned_solvated_dummy_structure.pdb\")\n", + "old_positions = pdb.positions\n", + "step_size = 0.25\n", + "assert (\n", + " step_size <= distance_step\n", + "), \"The step size of the manual pulling must be <= the step size of the automatic pulling step size!\"\n", + "for offset in tqdm(\n", + " np.arange(min(pull_distances), max(pull_distances) + step_size, step_size)[:]\n", + "):\n", + " offset = round(offset, 2)\n", + " # assert offset < initial_distance + 0.001\n", + "\n", + " with open(f\"{compdir}/solvated_dummy_system.xml\", \"r\") as f:\n", + " system = XmlSerializer.deserialize(f.read())\n", + "\n", + " # Apply dummy static restraints\n", + " apply_positional_restraints(\n", + " f\"{compdir}/aligned_solvated_dummy_structure.pdb\", system, force_group=15\n", + " )\n", + "\n", + " # Apply host static restraints\n", + " for restraint in static_restraints:\n", + " apply_dat_restraint(system, restraint, \"pull\", 1, force_group=10)\n", + "\n", + " bond_energy_expression = \"k_bond * (r - r_0)^2;\"\n", + " bond_restraint = CustomBondForce(bond_energy_expression)\n", + " bond_restraint.addPerBondParameter(\"k_bond\")\n", + " bond_restraint.addPerBondParameter(\"r_0\")\n", + " bond_restraint.addBond(\n", + " index_from_mask(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", D1, False)[\n", + " 0\n", + " ],\n", + " index_from_mask(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", G1, False)[\n", + " 0\n", + " ],\n", + " [\n", + " 500 * kilocalorie / angstrom**2 / mole,\n", + " (offset) * angstrom,\n", + " ],\n", + " )\n", + " system.addForce(bond_restraint)\n", + "\n", + " angle_energy_expression = \"k_angle * (theta - theta_0)^2;\"\n", + " angle_restraint = CustomAngleForce(angle_energy_expression)\n", + " angle_restraint.addPerAngleParameter(\"k_angle\")\n", + " angle_restraint.addPerAngleParameter(\"theta_0\")\n", + " angle_restraint.addAngle(\n", + " index_from_mask(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", D1, False)[\n", + " 0\n", + " ],\n", + " index_from_mask(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", G1, False)[\n", + " 0\n", + " ],\n", + " index_from_mask(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", G2, False)[\n", + " 0\n", + " ],\n", + " [10000 * kilocalorie / mole / radian**2, 180 * degree],\n", + " )\n", + " system.addForce(angle_restraint)\n", + "\n", + " angle_energy_expression = \"k_angle * (theta - theta_0)^2;\"\n", + " angle_restraint = CustomAngleForce(angle_energy_expression)\n", + " angle_restraint.addPerAngleParameter(\"k_angle\")\n", + " angle_restraint.addPerAngleParameter(\"theta_0\")\n", + " angle_restraint.addAngle(\n", + " index_from_mask(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", D2, False)[\n", + " 0\n", + " ],\n", + " index_from_mask(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", D1, False)[\n", + " 0\n", + " ],\n", + " index_from_mask(f\"{compdir}/aligned_solvated_dummy_structure.pdb\", G1, False)[\n", + " 0\n", + " ],\n", + " [10000 * kilocalorie / mole / radian**2, 180 * degree],\n", + " )\n", + " system.addForce(angle_restraint)\n", + "\n", + " integrator = LangevinMiddleIntegrator(\n", + " 298.15 * kelvin, 1 / (1000 * femtoseconds), 1 * femtoseconds\n", + " )\n", + " platform = Platform.getPlatformByName(\"CUDA\")\n", + " properties = {\"DeviceIndex\": \"0\", \"Precision\": \"mixed\"}\n", + " simulation = Simulation(model.topology, system, integrator, platform, properties)\n", + " new_positions = old_positions\n", + " for atom in model.topology.atoms():\n", + " if atom.residue.name == \"ROC\":\n", + " new_positions[atom.index] = (\n", + " Vec3(\n", + " old_positions[atom.index][0].value_in_unit(nanometer),\n", + " old_positions[atom.index][1].value_in_unit(nanometer),\n", + " (\n", + " (\n", + " old_positions[atom.index][2].value_in_unit(angstrom)\n", + " + step_size\n", + " )\n", + " * angstrom\n", + " ).value_in_unit(nanometer),\n", + " )\n", + " * nanometer\n", + " )\n", + " simulation.context.setPositions(new_positions)\n", + " simulation.minimizeEnergy(\n", + " 0.1 * kilocalorie / (mole * nanometer), maxIterations=1000\n", + " )\n", + "\n", + " new_positions = simulation.context.getState(getPositions=True).getPositions()\n", + " old_positions = new_positions\n", + "\n", + " if offset in pull_distances:\n", + " PDBFile.writeFile(\n", + " model.topology,\n", + " new_positions,\n", + " open(\n", + " f\"{workdir}/p{[float(d) for d in pull_distances].index(float(offset)):03}/aligned_solvated_dummy_structure.pdb\",\n", + " \"w\",\n", + " ),\n", + " )\n", + "\n", + " PDBFile.writeFile(\n", + " model.topology,\n", + " new_positions,\n", + " open(\n", + " f\"{compdir}/all_starting_positions.pdb\",\n", + " \"a\",\n", + " ),\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "c15a5126-2bab-4bbb-aeac-da5b8c44c708", + "metadata": {}, + "source": [ + "#### Now we can run APR like usual" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1fd68d0d-0264-4aad-86a2-139483a23412", + "metadata": {}, + "outputs": [], + "source": [ + "from paprika.restraints.utils import parse_window\n", + "\n", + "logging.info(f\"Creating xml files...\")\n", + "for window in tqdm(window_list):\n", + " window_number, phase = parse_window(window)\n", + " # logging.info(f\"Creating XML for in window {window}\")\n", + "\n", + " with open(f\"{compdir}/solvated_dummy_system.xml\", \"r\") as f:\n", + " system = xmlser.deserialize(f.read())\n", + "\n", + " # Apply dummy static restraints\n", + " apply_positional_restraints(\n", + " f\"{workdir}/{window}/aligned_solvated_dummy_structure.pdb\",\n", + " system,\n", + " force_group=15,\n", + " )\n", + "\n", + " # Apply host static restraints\n", + " for restraint in static_restraints:\n", + " apply_dat_restraint(system, restraint, phase, window_number, force_group=10)\n", + "\n", + " # Apply guest restraints\n", + " for restraint in guest_restraints:\n", + " apply_dat_restraint(system, restraint, phase, window_number, force_group=11)\n", + "\n", + " # Save OpenMM system to XML file\n", + " with open(f\"{workdir}/{window}/system.xml\", \"w\") as file:\n", + " file.write(xmlser.serialize(system))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "118885f1-da9d-42fe-94a7-c45cb9b398ae", + "metadata": {}, + "outputs": [], + "source": [ + "# Run minimization\n", + "\n", + "logging.info(f\"Running minimization...\")\n", + "for window in tqdm(window_list):\n", + " # logging.info(f\"Running minimization in window {window}...\")\n", + "\n", + " # Load XML and input coordinates\n", + " with open(f\"{workdir}/{window}/system.xml\", \"r\") as f:\n", + " system = xmlser.deserialize(f.read())\n", + " pdb = PDBFile(f\"{workdir}/{window}/aligned_solvated_dummy_structure.pdb\")\n", + "\n", + " integrator = LangevinMiddleIntegrator(\n", + " 298.15 * kelvin, 1 / (200 * femtoseconds), 1.0 * femtoseconds\n", + " )\n", + " platform = Platform.getPlatformByName(\"CUDA\")\n", + " properties = {\"DeviceIndex\": \"0\", \"Precision\": \"mixed\"}\n", + " simulation = Simulation(model.topology, system, integrator, platform, properties)\n", + " simulation.context.setPositions(pdb.positions)\n", + " simulation.minimizeEnergy(\n", + " tolerance=0.0001 * kilojoules_per_mole / nanometer, maxIterations=1000\n", + " )\n", + "\n", + " positions = simulation.context.getState(getPositions=True).getPositions()\n", + "\n", + " with open(f\"{workdir}/{window}/minimized.pdb\", \"w\") as f:\n", + " app.PDBFile.writeFile(model.topology, positions, f, keepIds=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b3864319-ab48-499a-bcd2-d2216100a9f9", + "metadata": {}, + "outputs": [], + "source": [ + "# Run heating. This is just to be safe.\n", + "\n", + "logging.info(f\"Running heating...\")\n", + "for window in tqdm(window_list):\n", + " # logging.info(f\"Running heating in window {window}...\")\n", + "\n", + " # Load XML and input coordinates\n", + " with open(f\"{workdir}/{window}/system.xml\", \"r\") as f:\n", + " system = xmlser.deserialize(f.read())\n", + " pdb = PDBFile(f\"{workdir}/{window}/minimized.pdb\")\n", + "\n", + " integrator = LangevinMiddleIntegrator(\n", + " 298.15 * kelvin, 1 / (1000 * femtoseconds), 1.0 * femtoseconds\n", + " )\n", + " platform = Platform.getPlatformByName(\"CUDA\")\n", + " properties = {\"DeviceIndex\": \"0\", \"Precision\": \"mixed\"}\n", + " simulation = Simulation(model.topology, system, integrator, platform, properties)\n", + " simulation.context.setPositions(pdb.positions)\n", + "\n", + " dcd_reporter = DCDReporter(f\"{workdir}/{window}/heating.dcd\", 500)\n", + " state_reporter = StateDataReporter(\n", + " f\"{workdir}/{window}/heating.log\",\n", + " 500,\n", + " step=True,\n", + " kineticEnergy=True,\n", + " potentialEnergy=True,\n", + " totalEnergy=True,\n", + " temperature=True,\n", + " volume=True,\n", + " speed=True,\n", + " )\n", + "\n", + " simulation.reporters.append(dcd_reporter)\n", + " simulation.reporters.append(state_reporter)\n", + "\n", + " for temp in np.arange(200.0, 298.15, 10.0):\n", + " integrator.setTemperature(temp * kelvin)\n", + " simulation.step(2000)\n", + "\n", + " positions = simulation.context.getState(getPositions=True).getPositions()\n", + "\n", + " with open(f\"{workdir}/{window}/heated.pdb\", \"w\") as f:\n", + " app.PDBFile.writeFile(model.topology, positions, f, keepIds=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b18c7563-e0b6-4a3a-b95a-5100a6624fe2", + "metadata": {}, + "outputs": [], + "source": [ + "# Run production\n", + "\n", + "logging.info(f\"Running production...\")\n", + "for window in tqdm(window_list):\n", + " # logging.info(f\"Running production in window {window}...\")\n", + "\n", + " # Load XML and input coordinates\n", + " with open(f\"{workdir}/{window}/system.xml\", \"r\") as f:\n", + " system = xmlser.deserialize(f.read())\n", + " pdb = PDBFile(f\"{workdir}/{window}/minimized.pdb\")\n", + "\n", + " integrator = LangevinMiddleIntegrator(\n", + " 298.15 * kelvin, 1 / (1000 * femtoseconds), 1 * femtoseconds\n", + " )\n", + " platform = Platform.getPlatformByName(\"CUDA\")\n", + " properties = {\n", + " \"DeviceIndex\": \"0\",\n", + " \"Precision\": \"mixed\",\n", + " } # If you have multiple GPUs, change \"DeviceIndex\": \"0,1,2,3\" etc.\n", + " simulation = Simulation(model.topology, system, integrator, platform, properties)\n", + " simulation.context.setPositions(pdb.positions)\n", + "\n", + " dcd_reporter = DCDReporter(f\"{workdir}/{window}/production.dcd\", 500)\n", + " state_reporter = StateDataReporter(\n", + " f\"{workdir}/{window}/production.log\",\n", + " 500,\n", + " step=True,\n", + " kineticEnergy=True,\n", + " potentialEnergy=True,\n", + " totalEnergy=True,\n", + " temperature=True,\n", + " volume=True,\n", + " speed=True,\n", + " )\n", + "\n", + " simulation.reporters.append(dcd_reporter)\n", + " simulation.reporters.append(state_reporter)\n", + "\n", + " simulation.step(\n", + " 100000\n", + " ) # 100 ps -- this seems to be enough to get energy convergence in each window\n", + "\n", + " positions = simulation.context.getState(getPositions=True).getPositions()\n", + "\n", + " with open(f\"{workdir}/{window}/production.pdb\", \"w\") as f:\n", + " app.PDBFile.writeFile(model.topology, positions, f, keepIds=True)" + ] + }, + { + "cell_type": "markdown", + "id": "14323f00-dd6e-435e-97c1-cfe62d737e50", + "metadata": {}, + "source": [ + "#### Perform analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87f93ffb-b79f-49b6-9fd2-ed62aface6b7", + "metadata": {}, + "outputs": [], + "source": [ + "import paprika.analysis as analysis\n", + "\n", + "free_energy = analysis.fe_calc()\n", + "free_energy.topology = \"minimized.pdb\"\n", + "free_energy.trajectory = \"production.dcd\"\n", + "free_energy.path = workdir\n", + "free_energy.restraint_list = guest_restraints\n", + "free_energy.collect_data()\n", + "free_energy.methods = [\"ti-block\"]\n", + "free_energy.ti_matrix = \"full\"\n", + "free_energy.boot_cycles = 1000\n", + "free_energy.compute_free_energy()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6477c769-efb6-4f4c-8db1-788d652ea848", + "metadata": {}, + "outputs": [], + "source": [ + "free_energy.compute_ref_state_work(\n", + " [guest_restraints[0], guest_restraints[1], None, None, guest_restraints[2], None]\n", + ")\n", + "\n", + "binding_affinity = -1 * (\n", + " free_energy.results[\"attach\"][\"ti-block\"][\"fe\"]\n", + " + free_energy.results[\"pull\"][\"ti-block\"][\"fe\"]\n", + " + free_energy.results[\"ref_state_work\"]\n", + ")\n", + "\n", + "sem = np.sqrt(\n", + " free_energy.results[\"attach\"][\"ti-block\"][\"sem\"] ** 2\n", + " + free_energy.results[\"pull\"][\"ti-block\"][\"sem\"] ** 2\n", + ")\n", + "\n", + "result_string = f\"Binding affinity: {binding_affinity:0.4f} ± {sem:0.4f}\"\n", + "print(result_string)\n", + "with open(\"result.txt\", \"r\") as f:\n", + " f.write(result_string)" + ] + }, + { + "cell_type": "markdown", + "id": "9ee91f39-6968-448d-8173-38f0c14928b5", + "metadata": {}, + "source": [ + "The experimental binding free energy is -8.27 kcal/mol1. To get a more accurate calculation we can decrease the step size of the attach fractions, increase the pull distance somewhat, decrease the step size between pull distances, to name a few options.\n", + "\n", + "(1) https://doi.org/10.1016/j.molliq.2018.06.033" + ] + } + ], + "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.10.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/paprika/data/sug-roc/rocuronium.sdf b/paprika/data/sug-roc/rocuronium.sdf new file mode 100644 index 0000000..823f6ca --- /dev/null +++ b/paprika/data/sug-roc/rocuronium.sdf @@ -0,0 +1,196 @@ +data/rocuronium.pdb + OpenBabel09052323323D + + 92 97 0 0 1 0 0 0 0 0999 V2000 + 23.0120 -0.4500 9.2720 O 0 0 0 0 0 0 0 0 0 0 0 0 + 21.9380 -7.1350 18.2840 O 0 0 0 0 0 0 0 0 0 0 0 0 + 25.8370 -3.7360 19.9990 O 0 0 0 0 0 0 0 0 0 0 0 0 + 24.4780 0.6440 8.0430 O 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1130 -0.5520 8.9720 N 0 3 0 0 0 0 0 0 0 0 0 0 + 23.8300 -5.0620 18.3670 N 0 3 0 0 0 0 0 0 0 0 0 0 + 21.5550 -2.8260 11.6820 C 0 0 2 0 0 0 0 0 0 0 0 0 + 22.8460 -2.2470 11.0540 C 0 0 1 0 0 0 0 0 0 0 0 0 + 21.6880 -4.2260 12.3330 C 0 0 1 0 0 0 0 0 0 0 0 0 + 22.6890 -4.0550 13.5150 C 0 0 1 0 0 0 0 0 0 0 0 0 + 22.7820 -5.2500 14.5130 C 0 0 2 0 0 0 0 0 0 0 0 0 + 20.7860 -1.0540 10.2630 C 0 0 2 0 0 0 0 0 0 0 0 0 + 22.3200 -0.8890 10.4880 C 0 0 2 0 0 0 0 0 0 0 0 0 + 20.4860 -2.5100 10.6520 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.8630 -2.2240 12.2130 C 0 0 0 0 0 0 0 0 0 0 0 0 + 21.3320 -5.6230 14.9380 C 0 0 1 0 0 0 0 0 0 0 0 0 + 24.0460 -3.5680 12.9450 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.3170 -4.7820 12.7630 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.4060 -5.9480 13.7530 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.5790 -4.8060 15.7850 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.4850 -3.0380 9.8960 C 0 0 0 0 0 0 0 0 0 0 0 0 + 21.2780 -6.7680 15.9770 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.9770 -5.2740 17.1340 C 0 0 1 0 0 0 0 0 0 0 0 0 + 23.5030 -6.4640 13.8760 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6090 -0.6690 9.1210 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.4450 -1.4250 7.7790 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.4070 -6.6960 17.0220 C 0 0 1 0 0 0 0 0 0 0 0 0 + 20.4550 0.8820 8.6450 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.0880 -1.7710 8.2010 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.1510 -1.9020 7.1170 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.3140 1.8920 9.7580 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.0630 0.3800 9.1680 C 0 0 0 0 0 0 0 0 0 0 0 0 + 25.3050 -5.3430 18.2220 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.5980 -3.7360 19.0240 C 0 0 0 0 0 0 0 0 0 0 0 0 + 26.1200 -5.0390 19.4910 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.4550 -3.5250 20.2800 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.7140 1.0260 10.3860 C 0 0 0 0 0 0 0 0 0 0 0 0 + 21.2570 2.8070 10.0150 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.4850 -5.7420 19.0320 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.3010 -2.1580 12.5030 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.0990 -4.9210 11.6100 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.3040 -3.2330 14.1190 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.3650 -0.4780 11.0760 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.4410 -0.1110 11.2400 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4890 -2.5920 11.0850 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.5780 -3.1910 9.8080 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.4850 -1.5550 12.9630 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.8220 -1.8590 11.8630 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.9020 -4.7430 15.4230 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.4630 -4.3090 12.2640 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.7600 -3.4150 13.7530 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.7740 -5.1150 11.8780 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.7270 -3.9960 13.2240 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4030 -6.1410 14.1350 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.7450 -6.8430 13.2320 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6250 -3.7180 15.8420 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6040 -5.1630 15.6920 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.4330 -2.5830 9.6090 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.8420 -3.0260 9.0190 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6880 -4.0560 10.1960 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.3410 -7.7310 15.4700 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.3120 -6.7100 16.4780 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.0910 -4.6640 17.2590 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.9410 -6.8320 13.0250 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.6050 -7.2860 14.5810 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.5040 -6.1930 13.5440 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.1150 0.2560 8.8500 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2890 -0.8500 10.1390 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.0190 -2.2940 8.0670 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.0720 -0.9310 7.0490 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.2230 -7.3520 16.7180 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.8550 1.2290 7.8150 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.4630 0.9580 8.2610 H 0 0 0 0 0 0 0 0 0 0 0 0 + 17.1100 -1.5230 7.7880 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.0320 -2.7020 8.7680 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.2360 -2.9260 6.7550 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.9130 -1.2290 6.2930 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4140 1.8580 10.3180 H 0 0 0 0 0 0 0 0 0 0 0 0 + 25.7310 -4.7490 17.4250 H 0 0 0 0 0 0 0 0 0 0 0 0 + 25.4930 -6.3660 17.9240 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.5580 -3.6000 19.2860 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.8130 -2.9280 18.3380 H 0 0 0 0 0 0 0 0 0 0 0 0 + 25.8890 -5.7770 20.2610 H 0 0 0 0 0 0 0 0 0 0 0 0 + 27.1850 -5.1070 19.2680 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.3130 -2.5140 20.6590 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.1400 -4.2190 21.0600 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.9910 0.2620 11.1060 H 0 0 0 0 0 0 0 0 0 0 0 0 + 25.6100 1.5680 10.0850 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.0130 1.7190 10.8460 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.1450 3.5270 10.7850 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.1570 2.8660 9.4590 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.7290 -8.0710 18.2200 H 0 0 0 0 0 0 0 0 0 0 0 0 + 1 13 1 0 0 0 0 + 1 32 1 0 0 0 0 + 2 27 1 0 0 0 0 + 2 92 1 0 0 0 0 + 3 35 1 0 0 0 0 + 3 36 1 0 0 0 0 + 4 32 2 0 0 0 0 + 5 12 1 0 0 0 0 + 5 25 1 0 0 0 0 + 5 26 1 0 0 0 0 + 5 28 1 0 0 0 0 + 6 23 1 0 0 0 0 + 6 33 1 0 0 0 0 + 6 34 1 0 0 0 0 + 6 39 1 0 0 0 0 + 7 40 1 1 0 0 0 + 7 8 1 0 0 0 0 + 7 9 1 0 0 0 0 + 7 14 1 0 0 0 0 + 8 13 1 0 0 0 0 + 8 15 1 0 0 0 0 + 8 21 1 6 0 0 0 + 9 41 1 6 0 0 0 + 9 10 1 0 0 0 0 + 9 18 1 0 0 0 0 + 10 42 1 1 0 0 0 + 10 11 1 0 0 0 0 + 10 17 1 0 0 0 0 + 11 16 1 0 0 0 0 + 11 20 1 0 0 0 0 + 11 24 1 6 0 0 0 + 12 43 1 1 0 0 0 + 12 13 1 0 0 0 0 + 12 14 1 0 0 0 0 + 13 44 1 1 0 0 0 + 14 45 1 0 0 0 0 + 14 46 1 0 0 0 0 + 15 47 1 0 0 0 0 + 15 48 1 0 0 0 0 + 15 17 1 0 0 0 0 + 16 49 1 1 0 0 0 + 16 19 1 0 0 0 0 + 16 22 1 0 0 0 0 + 17 50 1 0 0 0 0 + 17 51 1 0 0 0 0 + 18 52 1 0 0 0 0 + 18 53 1 0 0 0 0 + 18 19 1 0 0 0 0 + 19 54 1 0 0 0 0 + 19 55 1 0 0 0 0 + 20 56 1 0 0 0 0 + 20 57 1 0 0 0 0 + 20 23 1 0 0 0 0 + 21 58 1 0 0 0 0 + 21 59 1 0 0 0 0 + 21 60 1 0 0 0 0 + 22 61 1 0 0 0 0 + 22 62 1 0 0 0 0 + 22 27 1 0 0 0 0 + 23 63 1 1 0 0 0 + 23 27 1 0 0 0 0 + 24 64 1 0 0 0 0 + 24 65 1 0 0 0 0 + 24 66 1 0 0 0 0 + 25 67 1 0 0 0 0 + 25 68 1 0 0 0 0 + 25 29 1 0 0 0 0 + 26 69 1 0 0 0 0 + 26 70 1 0 0 0 0 + 26 30 1 0 0 0 0 + 27 71 1 6 0 0 0 + 28 72 1 0 0 0 0 + 28 73 1 0 0 0 0 + 28 31 1 0 0 0 0 + 29 74 1 0 0 0 0 + 29 75 1 0 0 0 0 + 29 30 1 0 0 0 0 + 30 76 1 0 0 0 0 + 30 77 1 0 0 0 0 + 31 78 1 0 0 0 0 + 31 38 2 0 0 0 0 + 32 37 1 0 0 0 0 + 33 79 1 0 0 0 0 + 33 80 1 0 0 0 0 + 33 35 1 0 0 0 0 + 34 81 1 0 0 0 0 + 34 82 1 0 0 0 0 + 34 36 1 0 0 0 0 + 35 83 1 0 0 0 0 + 35 84 1 0 0 0 0 + 36 85 1 0 0 0 0 + 36 86 1 0 0 0 0 + 37 87 1 0 0 0 0 + 37 88 1 0 0 0 0 + 37 89 1 0 0 0 0 + 38 90 1 0 0 0 0 + 38 91 1 0 0 0 0 +M CHG 2 5 1 6 1 +M END +$$$$ diff --git a/paprika/data/sug-roc/sug_roc.pdb b/paprika/data/sug-roc/sug_roc.pdb new file mode 100644 index 0000000..cb689b5 --- /dev/null +++ b/paprika/data/sug-roc/sug_roc.pdb @@ -0,0 +1,651 @@ +REMARK 99 +REMARK 99 MOE v2022.02 (Chemical Computing Group ULC) Tue Sep 05 23:28:46 2023 +HETATM 1 C SUG 0 13.710 -4.175 17.026 1.00 0.00 C +HETATM 2 C7 SUG 0 14.674 -3.184 16.360 1.00 0.00 C +HETATM 3 S SUG 0 16.005 -3.927 15.326 1.00 0.00 S +HETATM 4 C8 SUG 0 14.114 -4.557 18.440 1.00 0.00 C +HETATM 5 O SUG 0 14.238 -5.776 18.683 1.00 0.00 O +HETATM 6 O1 SUG 0 14.277 -3.638 19.269 1.00 0.00 O1- +HETATM 7 C1 SUG 0 19.766 -11.102 14.407 1.00 0.00 C +HETATM 8 C2 SUG 0 20.711 -12.284 14.693 1.00 0.00 C +HETATM 9 C3 SUG 0 22.172 -11.853 14.508 1.00 0.00 C +HETATM 10 C4 SUG 0 22.383 -11.211 13.133 1.00 0.00 C +HETATM 11 C5 SUG 0 21.375 -10.072 12.941 1.00 0.00 C +HETATM 12 C6 SUG 0 21.468 -9.510 11.504 1.00 0.00 C +HETATM 13 O2 SUG 0 20.521 -12.749 16.020 1.00 0.00 O +HETATM 14 O3 SUG 0 23.030 -12.978 14.648 1.00 0.00 O +HETATM 15 O4 SUG 0 23.721 -10.693 13.055 1.00 0.00 O +HETATM 16 O5 SUG 0 20.032 -10.578 13.105 1.00 0.00 O +HETATM 17 C31 SUG 0 24.448 -11.051 11.913 1.00 0.00 C +HETATM 18 C38 SUG 0 25.852 -11.504 12.325 1.00 0.00 C +HETATM 19 C45 SUG 0 26.672 -10.312 12.836 1.00 0.00 C +HETATM 20 C52 SUG 0 26.670 -9.174 11.806 1.00 0.00 C +HETATM 21 C59 SUG 0 25.224 -8.817 11.466 1.00 0.00 C +HETATM 22 C66 SUG 0 25.170 -7.720 10.388 1.00 0.00 C +HETATM 23 O20 SUG 0 25.751 -12.487 13.349 1.00 0.00 O +HETATM 24 O27 SUG 0 28.002 -10.723 13.103 1.00 0.00 O +HETATM 25 O34 SUG 0 27.338 -8.022 12.357 1.00 0.00 O +HETATM 26 O41 SUG 0 24.534 -9.981 10.973 1.00 0.00 O +HETATM 27 C32 SUG 0 28.642 -7.809 11.897 1.00 0.00 C +HETATM 28 C39 SUG 0 29.614 -7.786 13.077 1.00 0.00 C +HETATM 29 C46 SUG 0 29.416 -6.515 13.908 1.00 0.00 C +HETATM 30 C53 SUG 0 29.474 -5.254 13.031 1.00 0.00 C +HETATM 31 C60 SUG 0 28.497 -5.394 11.862 1.00 0.00 C +HETATM 32 C67 SUG 0 28.563 -4.235 10.861 1.00 0.00 C +HETATM 33 O21 SUG 0 29.400 -8.928 13.895 1.00 0.00 O +HETATM 34 O28 SUG 0 30.422 -6.443 14.903 1.00 0.00 O +HETATM 35 O35 SUG 0 29.098 -4.112 13.823 1.00 0.00 O +HETATM 36 O42 SUG 0 28.765 -6.611 11.134 1.00 0.00 O +HETATM 37 C33 SUG 0 29.845 -2.936 13.655 1.00 0.00 C +HETATM 38 C40 SUG 0 30.384 -2.494 15.018 1.00 0.00 C +HETATM 39 C47 SUG 0 29.215 -2.175 15.943 1.00 0.00 C +HETATM 40 C54 SUG 0 28.270 -1.151 15.310 1.00 0.00 C +HETATM 41 C61 SUG 0 27.874 -1.570 13.891 1.00 0.00 C +HETATM 42 C68 SUG 0 27.111 -0.435 13.178 1.00 0.00 C +HETATM 43 O22 SUG 0 31.165 -3.531 15.587 1.00 0.00 O +HETATM 44 O29 SUG 0 29.704 -1.666 17.172 1.00 0.00 O +HETATM 45 O36 SUG 0 27.071 -1.070 16.083 1.00 0.00 O +HETATM 46 O43 SUG 0 29.052 -1.884 13.110 1.00 0.00 O +HETATM 47 C34 SUG 0 26.781 0.225 16.560 1.00 0.00 C +HETATM 48 C41 SUG 0 26.699 0.253 18.098 1.00 0.00 C +HETATM 49 C48 SUG 0 25.441 -0.467 18.602 1.00 0.00 C +HETATM 50 C55 SUG 0 24.204 0.059 17.881 1.00 0.00 C +HETATM 51 C62 SUG 0 24.410 -0.081 16.380 1.00 0.00 C +HETATM 52 O23 SUG 0 27.847 -0.366 18.650 1.00 0.00 O +HETATM 53 O30 SUG 0 25.299 -0.240 19.991 1.00 0.00 O +HETATM 54 O37 SUG 0 23.040 -0.667 18.298 1.00 0.00 O +HETATM 55 O44 SUG 0 25.567 0.686 15.994 1.00 0.00 O +HETATM 56 C35 SUG 0 21.928 0.145 18.497 1.00 0.00 C +HETATM 57 C42 SUG 0 21.384 -0.053 19.901 1.00 0.00 C +HETATM 58 C49 SUG 0 20.627 -1.375 20.015 1.00 0.00 C +HETATM 59 C56 SUG 0 19.594 -1.552 18.897 1.00 0.00 C +HETATM 60 C63 SUG 0 20.270 -1.333 17.547 1.00 0.00 C +HETATM 61 C69 SUG 0 19.214 -1.415 16.427 1.00 0.00 C +HETATM 62 O24 SUG 0 22.479 -0.069 20.798 1.00 0.00 O +HETATM 63 O31 SUG 0 19.976 -1.435 21.273 1.00 0.00 O +HETATM 64 O38 SUG 0 19.093 -2.900 18.950 1.00 0.00 O +HETATM 65 O45 SUG 0 20.912 -0.048 17.514 1.00 0.00 O +HETATM 66 C36 SUG 0 17.741 -3.058 19.242 1.00 0.00 C +HETATM 67 C43 SUG 0 17.582 -4.041 20.395 1.00 0.00 C +HETATM 68 C50 SUG 0 18.134 -5.417 19.977 1.00 0.00 C +HETATM 69 C57 SUG 0 17.525 -5.878 18.652 1.00 0.00 C +HETATM 70 C64 SUG 0 17.556 -4.780 17.589 1.00 0.00 C +HETATM 71 C70 SUG 0 16.684 -5.252 16.404 1.00 0.00 C +HETATM 72 O25 SUG 0 18.283 -3.556 21.527 1.00 0.00 O +HETATM 73 O32 SUG 0 17.834 -6.385 20.977 1.00 0.00 O +HETATM 74 O39 SUG 0 18.260 -7.010 18.169 1.00 0.00 O +HETATM 75 O46 SUG 0 17.030 -3.550 18.126 1.00 0.00 O +HETATM 76 C37 SUG 0 17.570 -8.218 18.258 1.00 0.00 C +HETATM 77 C44 SUG 0 18.509 -9.300 18.773 1.00 0.00 C +HETATM 78 C51 SUG 0 19.541 -9.656 17.718 1.00 0.00 C +HETATM 79 C58 SUG 0 18.891 -10.006 16.376 1.00 0.00 C +HETATM 80 C65 SUG 0 17.935 -8.880 15.955 1.00 0.00 C +HETATM 81 C71 SUG 0 17.125 -9.146 14.684 1.00 0.00 C +HETATM 82 O26 SUG 0 19.188 -8.801 19.913 1.00 0.00 O +HETATM 83 O33 SUG 0 20.338 -10.740 18.176 1.00 0.00 O +HETATM 84 O40 SUG 0 19.929 -10.123 15.392 1.00 0.00 O +HETATM 85 O47 SUG 0 16.989 -8.598 17.015 1.00 0.00 O +HETATM 86 C9 SUG 0 17.418 -1.239 13.584 1.00 0.00 C +HETATM 87 C10 SUG 0 18.860 -0.770 13.731 1.00 0.00 C +HETATM 88 S1 SUG 0 19.908 -1.833 14.789 1.00 0.00 S +HETATM 89 C11 SUG 0 16.605 -0.528 12.497 1.00 0.00 C +HETATM 90 O6 SUG 0 16.819 0.799 12.272 1.00 0.00 O1- +HETATM 91 O7 SUG 0 15.747 -1.121 11.853 1.00 0.00 O +HETATM 92 S2 SUG 0 28.170 1.002 12.717 1.00 0.00 S +HETATM 93 C12 SUG 0 27.450 2.343 13.730 1.00 0.00 C +HETATM 94 C13 SUG 0 28.480 2.912 14.704 1.00 0.00 C +HETATM 95 C14 SUG 0 27.811 3.733 15.782 1.00 0.00 C +HETATM 96 O8 SUG 0 27.551 4.919 15.503 1.00 0.00 O +HETATM 97 O9 SUG 0 27.572 3.151 16.862 1.00 0.00 O1- +HETATM 98 S3 SUG 0 27.033 -3.242 10.793 1.00 0.00 S +HETATM 99 C15 SUG 0 27.682 -1.816 9.844 1.00 0.00 C +HETATM 100 C16 SUG 0 28.140 -2.193 8.431 1.00 0.00 C +HETATM 101 C17 SUG 0 29.647 -2.121 8.275 1.00 0.00 C +HETATM 102 O10 SUG 0 30.094 -1.147 7.638 1.00 0.00 O +HETATM 103 O11 SUG 0 30.326 -3.038 8.783 1.00 0.00 O1- +HETATM 104 S4 SUG 0 23.590 -6.791 10.402 1.00 0.00 S +HETATM 105 C18 SUG 0 23.511 -6.288 8.645 1.00 0.00 C +HETATM 106 C19 SUG 0 22.127 -5.757 8.279 1.00 0.00 C +HETATM 107 C20 SUG 0 22.066 -5.298 6.835 1.00 0.00 C +HETATM 108 O12 SUG 0 22.386 -6.126 5.959 1.00 0.00 O +HETATM 109 O13 SUG 0 21.693 -4.126 6.628 1.00 0.00 O1- +HETATM 110 S5 SUG 0 21.319 -10.795 10.182 1.00 0.00 S +HETATM 111 C21 SUG 0 22.340 -10.083 8.831 1.00 0.00 C +HETATM 112 C22 SUG 0 23.093 -11.150 8.020 1.00 0.00 C +HETATM 113 C23 SUG 0 24.487 -11.470 8.544 1.00 0.00 C +HETATM 114 O14 SUG 0 25.411 -10.686 8.236 1.00 0.00 O +HETATM 115 O15 SUG 0 24.640 -12.522 9.204 1.00 0.00 O1- +HETATM 116 S6 SUG 0 17.802 -8.316 13.201 1.00 0.00 S +HETATM 117 C24 SUG 0 16.675 -8.979 11.921 1.00 0.00 C +HETATM 118 C25 SUG 0 16.858 -10.474 11.627 1.00 0.00 C +HETATM 119 C26 SUG 0 16.014 -11.357 12.524 1.00 0.00 C +HETATM 120 O16 SUG 0 16.610 -12.153 13.282 1.00 0.00 O +HETATM 121 O17 SUG 0 14.778 -11.202 12.451 1.00 0.00 O1- +HETATM 122 S7 SUG 0 23.640 0.780 13.791 1.00 0.00 S +HETATM 123 C27 SUG 0 22.462 2.139 13.465 1.00 0.00 C +HETATM 124 C28 SUG 0 21.039 1.602 13.513 1.00 0.00 C +HETATM 125 C29 SUG 0 19.952 2.614 13.237 1.00 0.00 C +HETATM 126 O18 SUG 0 18.825 2.125 12.989 1.00 0.00 O +HETATM 127 O19 SUG 0 20.225 3.824 13.323 1.00 0.00 O1- +HETATM 128 C30 SUG 0 23.227 0.435 15.548 1.00 0.00 C +HETATM 129 H SUG 0 13.617 -5.074 16.420 1.00 0.00 H +HETATM 130 H7 SUG 0 12.733 -3.708 17.108 1.00 0.00 H +HETATM 131 H1 SUG 0 15.107 -2.529 17.117 1.00 0.00 H +HETATM 132 H2 SUG 0 14.090 -2.551 15.692 1.00 0.00 H +HETATM 133 H36 SUG 0 18.744 -11.463 14.408 1.00 0.00 H +HETATM 134 H61 SUG 0 15.847 -5.842 16.772 1.00 0.00 H +HETATM 135 H45 SUG 0 20.481 -13.077 13.981 1.00 0.00 H +HETATM 136 H62 SUG 0 17.285 -5.914 15.782 1.00 0.00 H +HETATM 137 H3 SUG 0 22.419 -11.115 15.272 1.00 0.00 H +HETATM 138 H4 SUG 0 22.227 -11.981 12.376 1.00 0.00 H +HETATM 139 H5 SUG 0 21.541 -9.271 13.663 1.00 0.00 H +HETATM 140 H64 SUG 0 22.410 -8.988 11.398 1.00 0.00 H +HETATM 141 H70 SUG 0 20.668 -8.783 11.366 1.00 0.00 H +HETATM 142 H46 SUG 0 20.621 -12.000 16.628 1.00 0.00 H +HETATM 143 H76 SUG 0 23.891 -12.745 14.261 1.00 0.00 H +HETATM 144 H37 SUG 0 23.964 -11.884 11.416 1.00 0.00 H +HETATM 145 H47 SUG 0 26.328 -11.920 11.434 1.00 0.00 H +HETATM 146 H77 SUG 0 26.209 -9.949 13.755 1.00 0.00 H +HETATM 147 H91 SUG 0 27.159 -9.504 10.885 1.00 0.00 H +HETATM 148 H98 SUG 0 24.710 -8.461 12.360 1.00 0.00 H +HETATM 149 H65 SUG 0 25.310 -8.193 9.413 1.00 0.00 H +HETATM 150 H71 SUG 0 25.972 -6.999 10.541 1.00 0.00 H +HETATM 151 H48 SUG 0 26.659 -12.723 13.570 1.00 0.00 H +HETATM 152 H78 SUG 0 28.585 -9.971 13.328 1.00 0.00 H +HETATM 153 H38 SUG 0 28.930 -8.628 11.247 1.00 0.00 H +HETATM 154 H49 SUG 0 30.626 -7.793 12.670 1.00 0.00 H +HETATM 155 H79 SUG 0 28.433 -6.551 14.381 1.00 0.00 H +HETATM 156 H92 SUG 0 30.489 -5.128 12.649 1.00 0.00 H +HETATM 157 H99 SUG 0 27.476 -5.461 12.243 1.00 0.00 H +HETATM 158 H66 SUG 0 28.730 -4.647 9.865 1.00 0.00 H +HETATM 159 H72 SUG 0 29.408 -3.584 11.082 1.00 0.00 H +HETATM 160 H50 SUG 0 30.182 -9.041 14.456 1.00 0.00 H +HETATM 161 H80 SUG 0 30.552 -7.328 15.266 1.00 0.00 H +HETATM 162 H39 SUG 0 30.674 -3.109 12.979 1.00 0.00 H +HETATM 163 H51 SUG 0 30.987 -1.596 14.874 1.00 0.00 H +HETATM 164 H81 SUG 0 28.652 -3.091 16.129 1.00 0.00 H +HETATM 165 H93 SUG 0 28.785 -0.191 15.262 1.00 0.00 H +HETATM 166 H100 SUG 0 27.239 -2.457 13.927 1.00 0.00 H +HETATM 167 H67 SUG 0 26.274 -0.111 13.789 1.00 0.00 H +HETATM 168 H73 SUG 0 26.692 -0.837 12.258 1.00 0.00 H +HETATM 169 H52 SUG 0 30.753 -4.386 15.372 1.00 0.00 H +HETATM 170 H82 SUG 0 30.455 -2.223 17.417 1.00 0.00 H +HETATM 171 H40 SUG 0 27.557 0.913 16.262 1.00 0.00 H +HETATM 172 H53 SUG 0 26.657 1.302 18.398 1.00 0.00 H +HETATM 173 H83 SUG 0 25.543 -1.536 18.407 1.00 0.00 H +HETATM 174 H94 SUG 0 24.113 1.119 18.126 1.00 0.00 H +HETATM 175 H101 SUG 0 24.589 -1.124 16.114 1.00 0.00 H +HETATM 176 H54 SUG 0 28.397 -0.759 17.945 1.00 0.00 H +HETATM 177 H84 SUG 0 26.192 -0.310 20.356 1.00 0.00 H +HETATM 178 H41 SUG 0 22.217 1.186 18.427 1.00 0.00 H +HETATM 179 H55 SUG 0 20.705 0.766 20.137 1.00 0.00 H +HETATM 180 H85 SUG 0 21.350 -2.190 19.947 1.00 0.00 H +HETATM 181 H95 SUG 0 18.784 -0.832 19.024 1.00 0.00 H +HETATM 182 H102 SUG 0 21.028 -2.102 17.385 1.00 0.00 H +HETATM 183 H68 SUG 0 18.692 -0.459 16.374 1.00 0.00 H +HETATM 184 H74 SUG 0 18.481 -2.186 16.653 1.00 0.00 H +HETATM 185 H56 SUG 0 23.282 -0.366 20.335 1.00 0.00 H +HETATM 186 H86 SUG 0 19.450 -2.257 21.328 1.00 0.00 H +HETATM 187 H42 SUG 0 17.297 -2.114 19.532 1.00 0.00 H +HETATM 188 H57 SUG 0 16.514 -4.131 20.609 1.00 0.00 H +HETATM 189 H87 SUG 0 19.214 -5.331 19.854 1.00 0.00 H +HETATM 190 H96 SUG 0 16.490 -6.152 18.840 1.00 0.00 H +HETATM 191 H103 SUG 0 18.573 -4.596 17.242 1.00 0.00 H +HETATM 192 H58 SUG 0 18.147 -4.221 22.214 1.00 0.00 H +HETATM 193 H88 SUG 0 18.145 -7.254 20.695 1.00 0.00 H +HETATM 194 H43 SUG 0 16.759 -8.119 18.972 1.00 0.00 H +HETATM 195 H59 SUG 0 17.918 -10.183 19.020 1.00 0.00 H +HETATM 196 H89 SUG 0 20.183 -8.788 17.554 1.00 0.00 H +HETATM 197 H97 SUG 0 18.350 -10.951 16.462 1.00 0.00 H +HETATM 198 H104 SUG 0 18.512 -7.967 15.797 1.00 0.00 H +HETATM 199 H69 SUG 0 16.110 -8.774 14.827 1.00 0.00 H +HETATM 200 H75 SUG 0 17.060 -10.216 14.535 1.00 0.00 H +HETATM 201 H60 SUG 0 19.641 -7.993 19.636 1.00 0.00 H +HETATM 202 H90 SUG 0 20.526 -10.588 19.111 1.00 0.00 H +HETATM 203 H8 SUG 0 16.903 -1.109 14.533 1.00 0.00 H +HETATM 204 H9 SUG 0 17.429 -2.300 13.339 1.00 0.00 H +HETATM 205 H10 SUG 0 18.838 0.205 14.205 1.00 0.00 H +HETATM 206 H11 SUG 0 19.317 -0.700 12.743 1.00 0.00 H +HETATM 207 H12 SUG 0 26.585 1.976 14.278 1.00 0.00 H +HETATM 208 H13 SUG 0 27.104 3.144 13.075 1.00 0.00 H +HETATM 209 H14 SUG 0 29.178 3.548 14.165 1.00 0.00 H +HETATM 210 H15 SUG 0 29.034 2.109 15.181 1.00 0.00 H +HETATM 211 H16 SUG 0 28.511 -1.365 10.394 1.00 0.00 H +HETATM 212 H17 SUG 0 26.886 -1.075 9.769 1.00 0.00 H +HETATM 213 H18 SUG 0 27.703 -1.496 7.719 1.00 0.00 H +HETATM 214 H19 SUG 0 27.811 -3.197 8.175 1.00 0.00 H +HETATM 215 H20 SUG 0 23.737 -7.148 8.011 1.00 0.00 H +HETATM 216 H21 SUG 0 24.256 -5.512 8.462 1.00 0.00 H +HETATM 217 H22 SUG 0 21.878 -4.915 8.921 1.00 0.00 H +HETATM 218 H23 SUG 0 21.389 -6.544 8.412 1.00 0.00 H +HETATM 219 H24 SUG 0 23.049 -9.353 9.216 1.00 0.00 H +HETATM 220 H25 SUG 0 21.663 -9.552 8.162 1.00 0.00 H +HETATM 221 H26 SUG 0 23.223 -10.783 7.005 1.00 0.00 H +HETATM 222 H27 SUG 0 22.512 -12.068 7.989 1.00 0.00 H +HETATM 223 H28 SUG 0 16.880 -8.426 11.004 1.00 0.00 H +HETATM 224 H29 SUG 0 15.640 -8.786 12.210 1.00 0.00 H +HETATM 225 H30 SUG 0 17.904 -10.754 11.718 1.00 0.00 H +HETATM 226 H31 SUG 0 16.535 -10.674 10.609 1.00 0.00 H +HETATM 227 H32 SUG 0 22.659 2.557 12.477 1.00 0.00 H +HETATM 228 H33 SUG 0 22.588 2.927 14.210 1.00 0.00 H +HETATM 229 H34 SUG 0 20.845 1.193 14.499 1.00 0.00 H +HETATM 230 H35 SUG 0 20.958 0.814 12.769 1.00 0.00 H +HETATM 231 H44 SUG 0 22.423 -0.301 15.572 1.00 0.00 H +HETATM 232 H63 SUG 0 22.873 1.364 15.992 1.00 0.00 H +HETATM 233 O ROC 1 23.012 -0.450 9.272 1.00 0.00 O +HETATM 234 O1 ROC 1 21.938 -7.135 18.284 1.00 0.00 O +HETATM 235 O2 ROC 1 25.837 -3.736 19.999 1.00 0.00 O +HETATM 236 O3 ROC 1 24.478 0.644 8.043 1.00 0.00 O +HETATM 237 N ROC 1 20.113 -0.552 8.972 1.00 0.00 N1+ +HETATM 238 N1 ROC 1 23.830 -5.062 18.367 1.00 0.00 N1+ +HETATM 239 C ROC 1 21.555 -2.826 11.682 1.00 0.00 C +HETATM 240 C1 ROC 1 22.846 -2.247 11.054 1.00 0.00 C +HETATM 241 C2 ROC 1 21.688 -4.226 12.333 1.00 0.00 C +HETATM 242 C3 ROC 1 22.689 -4.055 13.515 1.00 0.00 C +HETATM 243 C4 ROC 1 22.782 -5.250 14.513 1.00 0.00 C +HETATM 244 C5 ROC 1 20.786 -1.054 10.263 1.00 0.00 C +HETATM 245 C6 ROC 1 22.320 -0.889 10.488 1.00 0.00 C +HETATM 246 C7 ROC 1 20.486 -2.510 10.652 1.00 0.00 C +HETATM 247 C8 ROC 1 23.863 -2.224 12.213 1.00 0.00 C +HETATM 248 C9 ROC 1 21.332 -5.623 14.938 1.00 0.00 C +HETATM 249 C10 ROC 1 24.046 -3.568 12.945 1.00 0.00 C +HETATM 250 C11 ROC 1 20.317 -4.782 12.763 1.00 0.00 C +HETATM 251 C12 ROC 1 20.406 -5.948 13.753 1.00 0.00 C +HETATM 252 C13 ROC 1 23.579 -4.806 15.785 1.00 0.00 C +HETATM 253 C14 ROC 1 23.485 -3.038 9.896 1.00 0.00 C +HETATM 254 C15 ROC 1 21.278 -6.768 15.977 1.00 0.00 C +HETATM 255 C16 ROC 1 22.977 -5.274 17.134 1.00 0.00 C +HETATM 256 C17 ROC 1 23.503 -6.464 13.876 1.00 0.00 C +HETATM 257 C18 ROC 1 18.609 -0.669 9.121 1.00 0.00 C +HETATM 258 C19 ROC 1 20.445 -1.425 7.779 1.00 0.00 C +HETATM 259 C20 ROC 1 22.407 -6.696 17.022 1.00 0.00 C +HETATM 260 C21 ROC 1 20.455 0.882 8.645 1.00 0.00 C +HETATM 261 C22 ROC 1 18.088 -1.771 8.201 1.00 0.00 C +HETATM 262 C23 ROC 1 19.151 -1.902 7.117 1.00 0.00 C +HETATM 263 C24 ROC 1 20.314 1.892 9.758 1.00 0.00 C +HETATM 264 C25 ROC 1 24.063 0.380 9.168 1.00 0.00 C +HETATM 265 C26 ROC 1 25.305 -5.343 18.222 1.00 0.00 C +HETATM 266 C27 ROC 1 23.598 -3.736 19.024 1.00 0.00 C +HETATM 267 C28 ROC 1 26.120 -5.039 19.491 1.00 0.00 C +HETATM 268 C29 ROC 1 24.455 -3.525 20.280 1.00 0.00 C +HETATM 269 C30 ROC 1 24.714 1.026 10.386 1.00 0.00 C +HETATM 270 C31 ROC 1 21.257 2.807 10.015 1.00 0.00 C +HETATM 271 H1 ROC 1 23.485 -5.742 19.032 1.00 0.00 H +HETATM 272 H ROC 1 21.301 -2.158 12.503 1.00 0.00 H +HETATM 273 H2 ROC 1 22.099 -4.921 11.610 1.00 0.00 H +HETATM 274 H3 ROC 1 22.304 -3.233 14.119 1.00 0.00 H +HETATM 275 H5 ROC 1 20.365 -0.478 11.076 1.00 0.00 H +HETATM 276 H6 ROC 1 22.441 -0.111 11.240 1.00 0.00 H +HETATM 277 H71 ROC 1 19.489 -2.592 11.085 1.00 0.00 H +HETATM 278 H72 ROC 1 20.578 -3.191 9.808 1.00 0.00 H +HETATM 279 H81 ROC 1 23.485 -1.555 12.963 1.00 0.00 H +HETATM 280 H82 ROC 1 24.822 -1.859 11.863 1.00 0.00 H +HETATM 281 H9 ROC 1 20.902 -4.743 15.423 1.00 0.00 H +HETATM 282 H101 ROC 1 24.463 -4.309 12.264 1.00 0.00 H +HETATM 283 H102 ROC 1 24.760 -3.415 13.753 1.00 0.00 H +HETATM 284 H111 ROC 1 19.774 -5.115 11.878 1.00 0.00 H +HETATM 285 H112 ROC 1 19.727 -3.996 13.224 1.00 0.00 H +HETATM 286 H121 ROC 1 19.403 -6.141 14.135 1.00 0.00 H +HETATM 287 H122 ROC 1 20.745 -6.843 13.232 1.00 0.00 H +HETATM 288 H131 ROC 1 23.625 -3.718 15.842 1.00 0.00 H +HETATM 289 H132 ROC 1 24.604 -5.163 15.692 1.00 0.00 H +HETATM 290 H141 ROC 1 24.433 -2.583 9.609 1.00 0.00 H +HETATM 291 H142 ROC 1 22.842 -3.026 9.019 1.00 0.00 H +HETATM 292 H143 ROC 1 23.688 -4.056 10.196 1.00 0.00 H +HETATM 293 H151 ROC 1 21.341 -7.731 15.470 1.00 0.00 H +HETATM 294 H152 ROC 1 20.312 -6.710 16.478 1.00 0.00 H +HETATM 295 H16 ROC 1 22.091 -4.664 17.259 1.00 0.00 H +HETATM 296 H171 ROC 1 22.941 -6.832 13.025 1.00 0.00 H +HETATM 297 H172 ROC 1 23.605 -7.286 14.581 1.00 0.00 H +HETATM 298 H173 ROC 1 24.504 -6.193 13.544 1.00 0.00 H +HETATM 299 H181 ROC 1 18.115 0.256 8.850 1.00 0.00 H +HETATM 300 H182 ROC 1 18.289 -0.850 10.139 1.00 0.00 H +HETATM 301 H191 ROC 1 21.019 -2.294 8.067 1.00 0.00 H +HETATM 302 H192 ROC 1 21.072 -0.931 7.049 1.00 0.00 H +HETATM 303 H20 ROC 1 23.223 -7.352 16.718 1.00 0.00 H +HETATM 304 H211 ROC 1 19.855 1.229 7.815 1.00 0.00 H +HETATM 305 H212 ROC 1 21.463 0.958 8.261 1.00 0.00 H +HETATM 306 H221 ROC 1 17.110 -1.523 7.788 1.00 0.00 H +HETATM 307 H222 ROC 1 18.032 -2.702 8.768 1.00 0.00 H +HETATM 308 H231 ROC 1 19.236 -2.926 6.755 1.00 0.00 H +HETATM 309 H232 ROC 1 18.913 -1.229 6.293 1.00 0.00 H +HETATM 310 H24 ROC 1 19.414 1.858 10.318 1.00 0.00 H +HETATM 311 H261 ROC 1 25.731 -4.749 17.425 1.00 0.00 H +HETATM 312 H262 ROC 1 25.493 -6.366 17.924 1.00 0.00 H +HETATM 313 H271 ROC 1 22.558 -3.600 19.286 1.00 0.00 H +HETATM 314 H272 ROC 1 23.813 -2.928 18.338 1.00 0.00 H +HETATM 315 H281 ROC 1 25.889 -5.777 20.261 1.00 0.00 H +HETATM 316 H282 ROC 1 27.185 -5.107 19.268 1.00 0.00 H +HETATM 317 H291 ROC 1 24.313 -2.514 20.659 1.00 0.00 H +HETATM 318 H292 ROC 1 24.140 -4.219 21.060 1.00 0.00 H +HETATM 319 H301 ROC 1 24.991 0.262 11.106 1.00 0.00 H +HETATM 320 H302 ROC 1 25.610 1.568 10.085 1.00 0.00 H +HETATM 321 H303 ROC 1 24.013 1.719 10.846 1.00 0.00 H +HETATM 322 H311 ROC 1 21.145 3.527 10.785 1.00 0.00 H +HETATM 323 H312 ROC 1 22.157 2.866 9.459 1.00 0.00 H +HETATM 324 H39 ROC 1 21.729 -8.071 18.220 1.00 0.00 H +CONECT 1 2 4 129 130 +CONECT 2 1 3 131 132 +CONECT 3 2 71 +CONECT 4 1 5 5 6 +CONECT 5 4 4 +CONECT 6 4 +CONECT 7 8 16 84 133 +CONECT 8 7 9 13 135 +CONECT 9 8 10 14 137 +CONECT 10 9 11 15 138 +CONECT 11 10 12 16 139 +CONECT 12 11 110 140 141 +CONECT 13 8 142 +CONECT 14 9 143 +CONECT 15 10 17 +CONECT 16 7 11 +CONECT 17 15 18 26 144 +CONECT 18 17 19 23 145 +CONECT 19 18 20 24 146 +CONECT 20 19 21 25 147 +CONECT 21 20 22 26 148 +CONECT 22 21 104 149 150 +CONECT 23 18 151 +CONECT 24 19 152 +CONECT 25 20 27 +CONECT 26 17 21 +CONECT 27 25 28 36 153 +CONECT 28 27 29 33 154 +CONECT 29 28 30 34 155 +CONECT 30 29 31 35 156 +CONECT 31 30 32 36 157 +CONECT 32 31 98 158 159 +CONECT 33 28 160 +CONECT 34 29 161 +CONECT 35 30 37 +CONECT 36 27 31 +CONECT 37 35 38 46 162 +CONECT 38 37 39 43 163 +CONECT 39 38 40 44 164 +CONECT 40 39 41 45 165 +CONECT 41 40 42 46 166 +CONECT 42 41 92 167 168 +CONECT 43 38 169 +CONECT 44 39 170 +CONECT 45 40 47 +CONECT 46 37 41 +CONECT 47 45 48 55 171 +CONECT 48 47 49 52 172 +CONECT 49 48 50 53 173 +CONECT 50 49 51 54 174 +CONECT 51 50 55 128 175 +CONECT 52 48 176 +CONECT 53 49 177 +CONECT 54 50 56 +CONECT 55 47 51 +CONECT 56 54 57 65 178 +CONECT 57 56 58 62 179 +CONECT 58 57 59 63 180 +CONECT 59 58 60 64 181 +CONECT 60 59 61 65 182 +CONECT 61 60 88 183 184 +CONECT 62 57 185 +CONECT 63 58 186 +CONECT 64 59 66 +CONECT 65 56 60 +CONECT 66 64 67 75 187 +CONECT 67 66 68 72 188 +CONECT 68 67 69 73 189 +CONECT 69 68 70 74 190 +CONECT 70 69 71 75 191 +CONECT 71 3 70 134 136 +CONECT 72 67 192 +CONECT 73 68 193 +CONECT 74 69 76 +CONECT 75 66 70 +CONECT 76 74 77 85 194 +CONECT 77 76 78 82 195 +CONECT 78 77 79 83 196 +CONECT 79 78 80 84 197 +CONECT 80 79 81 85 198 +CONECT 81 80 116 199 200 +CONECT 82 77 201 +CONECT 83 78 202 +CONECT 84 7 79 +CONECT 85 76 80 +CONECT 86 87 89 203 204 +CONECT 87 86 88 205 206 +CONECT 88 61 87 +CONECT 89 86 90 91 91 +CONECT 90 89 +CONECT 91 89 89 +CONECT 92 42 93 +CONECT 93 92 94 207 208 +CONECT 94 93 95 209 210 +CONECT 95 94 96 96 97 +CONECT 96 95 95 +CONECT 97 95 +CONECT 98 32 99 +CONECT 99 98 100 211 212 +CONECT 100 99 101 213 214 +CONECT 101 100 102 102 103 +CONECT 102 101 101 +CONECT 103 101 +CONECT 104 22 105 +CONECT 105 104 106 215 216 +CONECT 106 105 107 217 218 +CONECT 107 106 108 108 109 +CONECT 108 107 107 +CONECT 109 107 +CONECT 110 12 111 +CONECT 111 110 112 219 220 +CONECT 112 111 113 221 222 +CONECT 113 112 114 114 115 +CONECT 114 113 113 +CONECT 115 113 +CONECT 116 81 117 +CONECT 117 116 118 223 224 +CONECT 118 117 119 225 226 +CONECT 119 118 120 120 121 +CONECT 120 119 119 +CONECT 121 119 +CONECT 122 123 128 +CONECT 123 122 124 227 228 +CONECT 124 123 125 229 230 +CONECT 125 124 126 126 127 +CONECT 126 125 125 +CONECT 127 125 +CONECT 128 51 122 231 232 +CONECT 129 1 +CONECT 130 1 +CONECT 131 2 +CONECT 132 2 +CONECT 133 7 +CONECT 134 71 +CONECT 135 8 +CONECT 136 71 +CONECT 137 9 +CONECT 138 10 +CONECT 139 11 +CONECT 140 12 +CONECT 141 12 +CONECT 142 13 +CONECT 143 14 +CONECT 144 17 +CONECT 145 18 +CONECT 146 19 +CONECT 147 20 +CONECT 148 21 +CONECT 149 22 +CONECT 150 22 +CONECT 151 23 +CONECT 152 24 +CONECT 153 27 +CONECT 154 28 +CONECT 155 29 +CONECT 156 30 +CONECT 157 31 +CONECT 158 32 +CONECT 159 32 +CONECT 160 33 +CONECT 161 34 +CONECT 162 37 +CONECT 163 38 +CONECT 164 39 +CONECT 165 40 +CONECT 166 41 +CONECT 167 42 +CONECT 168 42 +CONECT 169 43 +CONECT 170 44 +CONECT 171 47 +CONECT 172 48 +CONECT 173 49 +CONECT 174 50 +CONECT 175 51 +CONECT 176 52 +CONECT 177 53 +CONECT 178 56 +CONECT 179 57 +CONECT 180 58 +CONECT 181 59 +CONECT 182 60 +CONECT 183 61 +CONECT 184 61 +CONECT 185 62 +CONECT 186 63 +CONECT 187 66 +CONECT 188 67 +CONECT 189 68 +CONECT 190 69 +CONECT 191 70 +CONECT 192 72 +CONECT 193 73 +CONECT 194 76 +CONECT 195 77 +CONECT 196 78 +CONECT 197 79 +CONECT 198 80 +CONECT 199 81 +CONECT 200 81 +CONECT 201 82 +CONECT 202 83 +CONECT 203 86 +CONECT 204 86 +CONECT 205 87 +CONECT 206 87 +CONECT 207 93 +CONECT 208 93 +CONECT 209 94 +CONECT 210 94 +CONECT 211 99 +CONECT 212 99 +CONECT 213 100 +CONECT 214 100 +CONECT 215 105 +CONECT 216 105 +CONECT 217 106 +CONECT 218 106 +CONECT 219 111 +CONECT 220 111 +CONECT 221 112 +CONECT 222 112 +CONECT 223 117 +CONECT 224 117 +CONECT 225 118 +CONECT 226 118 +CONECT 227 123 +CONECT 228 123 +CONECT 229 124 +CONECT 230 124 +CONECT 231 128 +CONECT 232 128 +CONECT 233 245 264 +CONECT 234 259 324 +CONECT 235 267 268 +CONECT 236 264 264 +CONECT 237 244 257 258 260 +CONECT 238 255 265 266 271 +CONECT 239 272 240 241 246 +CONECT 240 239 245 247 253 +CONECT 241 239 273 242 250 +CONECT 242 241 274 243 249 +CONECT 243 242 248 252 256 +CONECT 244 237 275 245 246 +CONECT 245 233 240 244 276 +CONECT 246 239 244 277 278 +CONECT 247 240 279 280 249 +CONECT 248 243 281 251 254 +CONECT 249 242 247 282 283 +CONECT 250 241 284 285 251 +CONECT 251 248 250 286 287 +CONECT 252 243 288 289 255 +CONECT 253 240 290 291 292 +CONECT 254 248 293 294 259 +CONECT 255 238 252 295 259 +CONECT 256 243 296 297 298 +CONECT 257 237 299 300 261 +CONECT 258 237 301 302 262 +CONECT 259 234 254 255 303 +CONECT 260 237 304 305 263 +CONECT 261 257 306 307 262 +CONECT 262 258 261 308 309 +CONECT 263 260 310 270 270 +CONECT 264 233 236 236 269 +CONECT 265 238 311 312 267 +CONECT 266 238 313 314 268 +CONECT 267 235 265 315 316 +CONECT 268 235 266 317 318 +CONECT 269 264 319 320 321 +CONECT 270 263 263 322 323 +CONECT 271 238 +CONECT 272 239 +CONECT 273 241 +CONECT 274 242 +CONECT 275 244 +CONECT 276 245 +CONECT 277 246 +CONECT 278 246 +CONECT 279 247 +CONECT 280 247 +CONECT 281 248 +CONECT 282 249 +CONECT 283 249 +CONECT 284 250 +CONECT 285 250 +CONECT 286 251 +CONECT 287 251 +CONECT 288 252 +CONECT 289 252 +CONECT 290 253 +CONECT 291 253 +CONECT 292 253 +CONECT 293 254 +CONECT 294 254 +CONECT 295 255 +CONECT 296 256 +CONECT 297 256 +CONECT 298 256 +CONECT 299 257 +CONECT 300 257 +CONECT 301 258 +CONECT 302 258 +CONECT 303 259 +CONECT 304 260 +CONECT 305 260 +CONECT 306 261 +CONECT 307 261 +CONECT 308 262 +CONECT 309 262 +CONECT 310 263 +CONECT 311 265 +CONECT 312 265 +CONECT 313 266 +CONECT 314 266 +CONECT 315 267 +CONECT 316 267 +CONECT 317 268 +CONECT 318 268 +CONECT 319 269 +CONECT 320 269 +CONECT 321 269 +CONECT 322 270 +CONECT 323 270 +CONECT 324 234 +END diff --git a/paprika/data/sug-roc/sugammadex.sdf b/paprika/data/sug-roc/sugammadex.sdf new file mode 100644 index 0000000..19a2a2e --- /dev/null +++ b/paprika/data/sug-roc/sugammadex.sdf @@ -0,0 +1,479 @@ +data/sugammadex.pdb + OpenBabel09052323333D + +232240 0 0 1 0 0 0 0 0999 V2000 + 13.7100 -4.1750 17.0260 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.6740 -3.1840 16.3600 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.0050 -3.9270 15.3260 S 0 0 0 0 0 0 0 0 0 0 0 0 + 14.1140 -4.5570 18.4400 C 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2380 -5.7760 18.6830 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.2770 -3.6380 19.2690 O 0 5 0 0 0 0 0 0 0 0 0 0 + 19.7660 -11.1020 14.4070 C 0 0 2 0 0 0 0 0 0 0 0 0 + 20.7110 -12.2840 14.6930 C 0 0 1 0 0 0 0 0 0 0 0 0 + 22.1720 -11.8530 14.5080 C 0 0 2 0 0 0 0 0 0 0 0 0 + 22.3830 -11.2110 13.1330 C 0 0 1 0 0 0 0 0 0 0 0 0 + 21.3750 -10.0720 12.9410 C 0 0 1 0 0 0 0 0 0 0 0 0 + 21.4680 -9.5100 11.5040 C 0 0 0 0 0 0 0 0 0 0 0 0 + 20.5210 -12.7490 16.0200 O 0 0 0 0 0 0 0 0 0 0 0 0 + 23.0300 -12.9780 14.6480 O 0 0 0 0 0 0 0 0 0 0 0 0 + 23.7210 -10.6930 13.0550 O 0 0 0 0 0 0 0 0 0 0 0 0 + 20.0320 -10.5780 13.1050 O 0 0 0 0 0 0 0 0 0 0 0 0 + 24.4480 -11.0510 11.9130 C 0 0 2 0 0 0 0 0 0 0 0 0 + 25.8520 -11.5040 12.3250 C 0 0 1 0 0 0 0 0 0 0 0 0 + 26.6720 -10.3120 12.8360 C 0 0 2 0 0 0 0 0 0 0 0 0 + 26.6700 -9.1740 11.8060 C 0 0 1 0 0 0 0 0 0 0 0 0 + 25.2240 -8.8170 11.4660 C 0 0 1 0 0 0 0 0 0 0 0 0 + 25.1700 -7.7200 10.3880 C 0 0 0 0 0 0 0 0 0 0 0 0 + 25.7510 -12.4870 13.3490 O 0 0 0 0 0 0 0 0 0 0 0 0 + 28.0020 -10.7230 13.1030 O 0 0 0 0 0 0 0 0 0 0 0 0 + 27.3380 -8.0220 12.3570 O 0 0 0 0 0 0 0 0 0 0 0 0 + 24.5340 -9.9810 10.9730 O 0 0 0 0 0 0 0 0 0 0 0 0 + 28.6420 -7.8090 11.8970 C 0 0 2 0 0 0 0 0 0 0 0 0 + 29.6140 -7.7860 13.0770 C 0 0 1 0 0 0 0 0 0 0 0 0 + 29.4160 -6.5150 13.9080 C 0 0 2 0 0 0 0 0 0 0 0 0 + 29.4740 -5.2540 13.0310 C 0 0 1 0 0 0 0 0 0 0 0 0 + 28.4970 -5.3940 11.8620 C 0 0 1 0 0 0 0 0 0 0 0 0 + 28.5630 -4.2350 10.8610 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.4000 -8.9280 13.8950 O 0 0 0 0 0 0 0 0 0 0 0 0 + 30.4220 -6.4430 14.9030 O 0 0 0 0 0 0 0 0 0 0 0 0 + 29.0980 -4.1120 13.8230 O 0 0 0 0 0 0 0 0 0 0 0 0 + 28.7650 -6.6110 11.1340 O 0 0 0 0 0 0 0 0 0 0 0 0 + 29.8450 -2.9360 13.6550 C 0 0 2 0 0 0 0 0 0 0 0 0 + 30.3840 -2.4940 15.0180 C 0 0 1 0 0 0 0 0 0 0 0 0 + 29.2150 -2.1750 15.9430 C 0 0 2 0 0 0 0 0 0 0 0 0 + 28.2700 -1.1510 15.3100 C 0 0 1 0 0 0 0 0 0 0 0 0 + 27.8740 -1.5700 13.8910 C 0 0 1 0 0 0 0 0 0 0 0 0 + 27.1110 -0.4350 13.1780 C 0 0 0 0 0 0 0 0 0 0 0 0 + 31.1650 -3.5310 15.5870 O 0 0 0 0 0 0 0 0 0 0 0 0 + 29.7040 -1.6660 17.1720 O 0 0 0 0 0 0 0 0 0 0 0 0 + 27.0710 -1.0700 16.0830 O 0 0 0 0 0 0 0 0 0 0 0 0 + 29.0520 -1.8840 13.1100 O 0 0 0 0 0 0 0 0 0 0 0 0 + 26.7810 0.2250 16.5600 C 0 0 2 0 0 0 0 0 0 0 0 0 + 26.6990 0.2530 18.0980 C 0 0 1 0 0 0 0 0 0 0 0 0 + 25.4410 -0.4670 18.6020 C 0 0 2 0 0 0 0 0 0 0 0 0 + 24.2040 0.0590 17.8810 C 0 0 1 0 0 0 0 0 0 0 0 0 + 24.4100 -0.0810 16.3800 C 0 0 2 0 0 0 0 0 0 0 0 0 + 27.8470 -0.3660 18.6500 O 0 0 0 0 0 0 0 0 0 0 0 0 + 25.2990 -0.2400 19.9910 O 0 0 0 0 0 0 0 0 0 0 0 0 + 23.0400 -0.6670 18.2980 O 0 0 0 0 0 0 0 0 0 0 0 0 + 25.5670 0.6860 15.9940 O 0 0 0 0 0 0 0 0 0 0 0 0 + 21.9280 0.1450 18.4970 C 0 0 2 0 0 0 0 0 0 0 0 0 + 21.3840 -0.0530 19.9010 C 0 0 1 0 0 0 0 0 0 0 0 0 + 20.6270 -1.3750 20.0150 C 0 0 2 0 0 0 0 0 0 0 0 0 + 19.5940 -1.5520 18.8970 C 0 0 1 0 0 0 0 0 0 0 0 0 + 20.2700 -1.3330 17.5470 C 0 0 1 0 0 0 0 0 0 0 0 0 + 19.2140 -1.4150 16.4270 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.4790 -0.0690 20.7980 O 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9760 -1.4350 21.2730 O 0 0 0 0 0 0 0 0 0 0 0 0 + 19.0930 -2.9000 18.9500 O 0 0 0 0 0 0 0 0 0 0 0 0 + 20.9120 -0.0480 17.5140 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.7410 -3.0580 19.2420 C 0 0 2 0 0 0 0 0 0 0 0 0 + 17.5820 -4.0410 20.3950 C 0 0 1 0 0 0 0 0 0 0 0 0 + 18.1340 -5.4170 19.9770 C 0 0 2 0 0 0 0 0 0 0 0 0 + 17.5250 -5.8780 18.6520 C 0 0 1 0 0 0 0 0 0 0 0 0 + 17.5560 -4.7800 17.5890 C 0 0 1 0 0 0 0 0 0 0 0 0 + 16.6840 -5.2520 16.4040 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2830 -3.5560 21.5270 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.8340 -6.3850 20.9770 O 0 0 0 0 0 0 0 0 0 0 0 0 + 18.2600 -7.0100 18.1690 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.0300 -3.5500 18.1260 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.5700 -8.2180 18.2580 C 0 0 2 0 0 0 0 0 0 0 0 0 + 18.5090 -9.3000 18.7730 C 0 0 1 0 0 0 0 0 0 0 0 0 + 19.5410 -9.6560 17.7180 C 0 0 2 0 0 0 0 0 0 0 0 0 + 18.8910 -10.0060 16.3760 C 0 0 1 0 0 0 0 0 0 0 0 0 + 17.9350 -8.8800 15.9550 C 0 0 1 0 0 0 0 0 0 0 0 0 + 17.1250 -9.1460 14.6840 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.1880 -8.8010 19.9130 O 0 0 0 0 0 0 0 0 0 0 0 0 + 20.3380 -10.7400 18.1760 O 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9290 -10.1230 15.3920 O 0 0 0 0 0 0 0 0 0 0 0 0 + 16.9890 -8.5980 17.0150 O 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4180 -1.2390 13.5840 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.8600 -0.7700 13.7310 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9080 -1.8330 14.7890 S 0 0 0 0 0 0 0 0 0 0 0 0 + 16.6050 -0.5280 12.4970 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.8190 0.7990 12.2720 O 0 5 0 0 0 0 0 0 0 0 0 0 + 15.7470 -1.1210 11.8530 O 0 0 0 0 0 0 0 0 0 0 0 0 + 28.1700 1.0020 12.7170 S 0 0 0 0 0 0 0 0 0 0 0 0 + 27.4500 2.3430 13.7300 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.4800 2.9120 14.7040 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.8110 3.7330 15.7820 C 0 0 0 0 0 0 0 0 0 0 0 0 + 27.5510 4.9190 15.5030 O 0 0 0 0 0 0 0 0 0 0 0 0 + 27.5720 3.1510 16.8620 O 0 5 0 0 0 0 0 0 0 0 0 0 + 27.0330 -3.2420 10.7930 S 0 0 0 0 0 0 0 0 0 0 0 0 + 27.6820 -1.8160 9.8440 C 0 0 0 0 0 0 0 0 0 0 0 0 + 28.1400 -2.1930 8.4310 C 0 0 0 0 0 0 0 0 0 0 0 0 + 29.6470 -2.1210 8.2750 C 0 0 0 0 0 0 0 0 0 0 0 0 + 30.0940 -1.1470 7.6380 O 0 0 0 0 0 0 0 0 0 0 0 0 + 30.3260 -3.0380 8.7830 O 0 5 0 0 0 0 0 0 0 0 0 0 + 23.5900 -6.7910 10.4020 S 0 0 0 0 0 0 0 0 0 0 0 0 + 23.5110 -6.2880 8.6450 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.1270 -5.7570 8.2790 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.0660 -5.2980 6.8350 C 0 0 0 0 0 0 0 0 0 0 0 0 + 22.3860 -6.1260 5.9590 O 0 0 0 0 0 0 0 0 0 0 0 0 + 21.6930 -4.1260 6.6280 O 0 5 0 0 0 0 0 0 0 0 0 0 + 21.3190 -10.7950 10.1820 S 0 0 0 0 0 0 0 0 0 0 0 0 + 22.3400 -10.0830 8.8310 C 0 0 0 0 0 0 0 0 0 0 0 0 + 23.0930 -11.1500 8.0200 C 0 0 0 0 0 0 0 0 0 0 0 0 + 24.4870 -11.4700 8.5440 C 0 0 0 0 0 0 0 0 0 0 0 0 + 25.4110 -10.6860 8.2360 O 0 0 0 0 0 0 0 0 0 0 0 0 + 24.6400 -12.5220 9.2040 O 0 5 0 0 0 0 0 0 0 0 0 0 + 17.8020 -8.3160 13.2010 S 0 0 0 0 0 0 0 0 0 0 0 0 + 16.6750 -8.9790 11.9210 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.8580 -10.4740 11.6270 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.0140 -11.3570 12.5240 C 0 0 0 0 0 0 0 0 0 0 0 0 + 16.6100 -12.1530 13.2820 O 0 0 0 0 0 0 0 0 0 0 0 0 + 14.7780 -11.2020 12.4510 O 0 5 0 0 0 0 0 0 0 0 0 0 + 23.6400 0.7800 13.7910 S 0 0 0 0 0 0 0 0 0 0 0 0 + 22.4620 2.1390 13.4650 C 0 0 0 0 0 0 0 0 0 0 0 0 + 21.0390 1.6020 13.5130 C 0 0 0 0 0 0 0 0 0 0 0 0 + 19.9520 2.6140 13.2370 C 0 0 0 0 0 0 0 0 0 0 0 0 + 18.8250 2.1250 12.9890 O 0 0 0 0 0 0 0 0 0 0 0 0 + 20.2250 3.8240 13.3230 O 0 5 0 0 0 0 0 0 0 0 0 0 + 23.2270 0.4350 15.5480 C 0 0 0 0 0 0 0 0 0 0 0 0 + 13.6170 -5.0740 16.4200 H 0 0 0 0 0 0 0 0 0 0 0 0 + 12.7330 -3.7080 17.1080 H 0 0 0 0 0 0 0 0 0 0 0 0 + 15.1070 -2.5290 17.1170 H 0 0 0 0 0 0 0 0 0 0 0 0 + 14.0900 -2.5510 15.6920 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7440 -11.4630 14.4080 H 0 0 0 0 0 0 0 0 0 0 0 0 + 15.8470 -5.8420 16.7720 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.4810 -13.0770 13.9810 H 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2850 -5.9140 15.7820 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.4190 -11.1150 15.2720 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.2270 -11.9810 12.3760 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.5410 -9.2710 13.6630 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.4100 -8.9880 11.3980 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.6680 -8.7830 11.3660 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.6210 -12.0000 16.6280 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.8910 -12.7450 14.2610 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.9640 -11.8840 11.4160 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.3280 -11.9200 11.4340 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.2090 -9.9490 13.7550 H 0 0 0 0 0 0 0 0 0 0 0 0 + 27.1590 -9.5040 10.8850 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.7100 -8.4610 12.3600 H 0 0 0 0 0 0 0 0 0 0 0 0 + 25.3100 -8.1930 9.4130 H 0 0 0 0 0 0 0 0 0 0 0 0 + 25.9720 -6.9990 10.5410 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.6590 -12.7230 13.5700 H 0 0 0 0 0 0 0 0 0 0 0 0 + 28.5850 -9.9710 13.3280 H 0 0 0 0 0 0 0 0 0 0 0 0 + 28.9300 -8.6280 11.2470 H 0 0 0 0 0 0 0 0 0 0 0 0 + 30.6260 -7.7930 12.6700 H 0 0 0 0 0 0 0 0 0 0 0 0 + 28.4330 -6.5510 14.3810 H 0 0 0 0 0 0 0 0 0 0 0 0 + 30.4890 -5.1280 12.6490 H 0 0 0 0 0 0 0 0 0 0 0 0 + 27.4760 -5.4610 12.2430 H 0 0 0 0 0 0 0 0 0 0 0 0 + 28.7300 -4.6470 9.8650 H 0 0 0 0 0 0 0 0 0 0 0 0 + 29.4080 -3.5840 11.0820 H 0 0 0 0 0 0 0 0 0 0 0 0 + 30.1820 -9.0410 14.4560 H 0 0 0 0 0 0 0 0 0 0 0 0 + 30.5520 -7.3280 15.2660 H 0 0 0 0 0 0 0 0 0 0 0 0 + 30.6740 -3.1090 12.9790 H 0 0 0 0 0 0 0 0 0 0 0 0 + 30.9870 -1.5960 14.8740 H 0 0 0 0 0 0 0 0 0 0 0 0 + 28.6520 -3.0910 16.1290 H 0 0 0 0 0 0 0 0 0 0 0 0 + 28.7850 -0.1910 15.2620 H 0 0 0 0 0 0 0 0 0 0 0 0 + 27.2390 -2.4570 13.9270 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.2740 -0.1110 13.7890 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.6920 -0.8370 12.2580 H 0 0 0 0 0 0 0 0 0 0 0 0 + 30.7530 -4.3860 15.3720 H 0 0 0 0 0 0 0 0 0 0 0 0 + 30.4550 -2.2230 17.4170 H 0 0 0 0 0 0 0 0 0 0 0 0 + 27.5570 0.9130 16.2620 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.6570 1.3020 18.3980 H 0 0 0 0 0 0 0 0 0 0 0 0 + 25.5430 -1.5360 18.4070 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.1130 1.1190 18.1260 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.5890 -1.1240 16.1140 H 0 0 0 0 0 0 0 0 0 0 0 0 + 28.3970 -0.7590 17.9450 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.1920 -0.3100 20.3560 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.2170 1.1860 18.4270 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.7050 0.7660 20.1370 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.3500 -2.1900 19.9470 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.7840 -0.8320 19.0240 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.0280 -2.1020 17.3850 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.6920 -0.4590 16.3740 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.4810 -2.1860 16.6530 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.2820 -0.3660 20.3350 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.4500 -2.2570 21.3280 H 0 0 0 0 0 0 0 0 0 0 0 0 + 17.2970 -2.1140 19.5320 H 0 0 0 0 0 0 0 0 0 0 0 0 + 16.5140 -4.1310 20.6090 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.2140 -5.3310 19.8540 H 0 0 0 0 0 0 0 0 0 0 0 0 + 16.4900 -6.1520 18.8400 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5730 -4.5960 17.2420 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.1470 -4.2210 22.2140 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.1450 -7.2540 20.6950 H 0 0 0 0 0 0 0 0 0 0 0 0 + 16.7590 -8.1190 18.9720 H 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9180 -10.1830 19.0200 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.1830 -8.7880 17.5540 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.3500 -10.9510 16.4620 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.5120 -7.9670 15.7970 H 0 0 0 0 0 0 0 0 0 0 0 0 + 16.1100 -8.7740 14.8270 H 0 0 0 0 0 0 0 0 0 0 0 0 + 17.0600 -10.2160 14.5350 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.6410 -7.9930 19.6360 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.5260 -10.5880 19.1110 H 0 0 0 0 0 0 0 0 0 0 0 0 + 16.9030 -1.1090 14.5330 H 0 0 0 0 0 0 0 0 0 0 0 0 + 17.4290 -2.3000 13.3390 H 0 0 0 0 0 0 0 0 0 0 0 0 + 18.8380 0.2050 14.2050 H 0 0 0 0 0 0 0 0 0 0 0 0 + 19.3170 -0.7000 12.7430 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.5850 1.9760 14.2780 H 0 0 0 0 0 0 0 0 0 0 0 0 + 27.1040 3.1440 13.0750 H 0 0 0 0 0 0 0 0 0 0 0 0 + 29.1780 3.5480 14.1650 H 0 0 0 0 0 0 0 0 0 0 0 0 + 29.0340 2.1090 15.1810 H 0 0 0 0 0 0 0 0 0 0 0 0 + 28.5110 -1.3650 10.3940 H 0 0 0 0 0 0 0 0 0 0 0 0 + 26.8860 -1.0750 9.7690 H 0 0 0 0 0 0 0 0 0 0 0 0 + 27.7030 -1.4960 7.7190 H 0 0 0 0 0 0 0 0 0 0 0 0 + 27.8110 -3.1970 8.1750 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.7370 -7.1480 8.0110 H 0 0 0 0 0 0 0 0 0 0 0 0 + 24.2560 -5.5120 8.4620 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.8780 -4.9150 8.9210 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.3890 -6.5440 8.4120 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.0490 -9.3530 9.2160 H 0 0 0 0 0 0 0 0 0 0 0 0 + 21.6630 -9.5520 8.1620 H 0 0 0 0 0 0 0 0 0 0 0 0 + 23.2230 -10.7830 7.0050 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.5120 -12.0680 7.9890 H 0 0 0 0 0 0 0 0 0 0 0 0 + 16.8800 -8.4260 11.0040 H 0 0 0 0 0 0 0 0 0 0 0 0 + 15.6400 -8.7860 12.2100 H 0 0 0 0 0 0 0 0 0 0 0 0 + 17.9040 -10.7540 11.7180 H 0 0 0 0 0 0 0 0 0 0 0 0 + 16.5350 -10.6740 10.6090 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.6590 2.5570 12.4770 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.5880 2.9270 14.2100 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.8450 1.1930 14.4990 H 0 0 0 0 0 0 0 0 0 0 0 0 + 20.9580 0.8140 12.7690 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.4230 -0.3010 15.5720 H 0 0 0 0 0 0 0 0 0 0 0 0 + 22.8730 1.3640 15.9920 H 0 0 0 0 0 0 0 0 0 0 0 0 + 1 2 1 0 0 0 0 + 1 4 1 0 0 0 0 + 1129 1 0 0 0 0 + 1130 1 0 0 0 0 + 2 3 1 0 0 0 0 + 2131 1 0 0 0 0 + 2132 1 0 0 0 0 + 3 71 1 0 0 0 0 + 4 5 2 0 0 0 0 + 4 6 1 0 0 0 0 + 7 8 1 0 0 0 0 + 7 16 1 0 0 0 0 + 7 84 1 0 0 0 0 + 7133 1 1 0 0 0 + 8 9 1 0 0 0 0 + 8 13 1 0 0 0 0 + 8135 1 6 0 0 0 + 9 10 1 0 0 0 0 + 9 14 1 0 0 0 0 + 9137 1 1 0 0 0 + 10 11 1 0 0 0 0 + 10 15 1 0 0 0 0 + 10138 1 6 0 0 0 + 11 12 1 0 0 0 0 + 11 16 1 0 0 0 0 + 11139 1 1 0 0 0 + 12110 1 0 0 0 0 + 12140 1 0 0 0 0 + 12141 1 0 0 0 0 + 13142 1 0 0 0 0 + 14143 1 0 0 0 0 + 15 17 1 0 0 0 0 + 17 18 1 0 0 0 0 + 17 26 1 0 0 0 0 + 17144 1 6 0 0 0 + 18 19 1 0 0 0 0 + 18 23 1 0 0 0 0 + 18145 1 6 0 0 0 + 19 20 1 0 0 0 0 + 19 24 1 0 0 0 0 + 19146 1 1 0 0 0 + 20 21 1 0 0 0 0 + 20 25 1 0 0 0 0 + 20147 1 6 0 0 0 + 21 22 1 0 0 0 0 + 21 26 1 0 0 0 0 + 21148 1 1 0 0 0 + 22104 1 0 0 0 0 + 22149 1 0 0 0 0 + 22150 1 0 0 0 0 + 23151 1 0 0 0 0 + 24152 1 0 0 0 0 + 25 27 1 0 0 0 0 + 27 28 1 0 0 0 0 + 27 36 1 0 0 0 0 + 27153 1 6 0 0 0 + 28 29 1 0 0 0 0 + 28 33 1 0 0 0 0 + 28154 1 6 0 0 0 + 29 30 1 0 0 0 0 + 29 34 1 0 0 0 0 + 29155 1 1 0 0 0 + 30 31 1 0 0 0 0 + 30 35 1 0 0 0 0 + 30156 1 6 0 0 0 + 31 32 1 0 0 0 0 + 31 36 1 0 0 0 0 + 31157 1 1 0 0 0 + 32 98 1 0 0 0 0 + 32158 1 0 0 0 0 + 32159 1 0 0 0 0 + 33160 1 0 0 0 0 + 34161 1 0 0 0 0 + 35 37 1 0 0 0 0 + 37 38 1 0 0 0 0 + 37 46 1 0 0 0 0 + 37162 1 6 0 0 0 + 38 39 1 0 0 0 0 + 38 43 1 0 0 0 0 + 38163 1 6 0 0 0 + 39 40 1 0 0 0 0 + 39 44 1 0 0 0 0 + 39164 1 1 0 0 0 + 40 41 1 0 0 0 0 + 40 45 1 0 0 0 0 + 40165 1 6 0 0 0 + 41 42 1 0 0 0 0 + 41 46 1 0 0 0 0 + 41166 1 1 0 0 0 + 42 92 1 0 0 0 0 + 42167 1 0 0 0 0 + 42168 1 0 0 0 0 + 43169 1 0 0 0 0 + 44170 1 0 0 0 0 + 45 47 1 0 0 0 0 + 47 48 1 0 0 0 0 + 47 55 1 0 0 0 0 + 47171 1 6 0 0 0 + 48 49 1 0 0 0 0 + 48 52 1 0 0 0 0 + 48172 1 1 0 0 0 + 49 50 1 0 0 0 0 + 49 53 1 0 0 0 0 + 49173 1 6 0 0 0 + 50 51 1 0 0 0 0 + 50 54 1 0 0 0 0 + 50174 1 1 0 0 0 + 51 55 1 0 0 0 0 + 51128 1 0 0 0 0 + 51175 1 6 0 0 0 + 52176 1 0 0 0 0 + 53177 1 0 0 0 0 + 54 56 1 0 0 0 0 + 56 57 1 0 0 0 0 + 56 65 1 0 0 0 0 + 56178 1 6 0 0 0 + 57 58 1 0 0 0 0 + 57 62 1 0 0 0 0 + 57179 1 1 0 0 0 + 58 59 1 0 0 0 0 + 58 63 1 0 0 0 0 + 58180 1 6 0 0 0 + 59 60 1 0 0 0 0 + 59 64 1 0 0 0 0 + 59181 1 1 0 0 0 + 60 61 1 0 0 0 0 + 60 65 1 0 0 0 0 + 60182 1 6 0 0 0 + 61 88 1 0 0 0 0 + 61183 1 0 0 0 0 + 61184 1 0 0 0 0 + 62185 1 0 0 0 0 + 63186 1 0 0 0 0 + 64 66 1 0 0 0 0 + 66 67 1 0 0 0 0 + 66 75 1 0 0 0 0 + 66187 1 1 0 0 0 + 67 68 1 0 0 0 0 + 67 72 1 0 0 0 0 + 67188 1 1 0 0 0 + 68 69 1 0 0 0 0 + 68 73 1 0 0 0 0 + 68189 1 6 0 0 0 + 69 70 1 0 0 0 0 + 69 74 1 0 0 0 0 + 69190 1 1 0 0 0 + 70 71 1 0 0 0 0 + 70 75 1 0 0 0 0 + 70191 1 6 0 0 0 + 71134 1 0 0 0 0 + 71136 1 0 0 0 0 + 72192 1 0 0 0 0 + 73193 1 0 0 0 0 + 74 76 1 0 0 0 0 + 76 77 1 0 0 0 0 + 76 85 1 0 0 0 0 + 76194 1 1 0 0 0 + 77 78 1 0 0 0 0 + 77 82 1 0 0 0 0 + 77195 1 1 0 0 0 + 78 79 1 0 0 0 0 + 78 83 1 0 0 0 0 + 78196 1 6 0 0 0 + 79 80 1 0 0 0 0 + 79 84 1 0 0 0 0 + 79197 1 1 0 0 0 + 80 81 1 0 0 0 0 + 80 85 1 0 0 0 0 + 80198 1 6 0 0 0 + 81116 1 0 0 0 0 + 81199 1 0 0 0 0 + 81200 1 0 0 0 0 + 82201 1 0 0 0 0 + 83202 1 0 0 0 0 + 86 87 1 0 0 0 0 + 86 89 1 0 0 0 0 + 86203 1 0 0 0 0 + 86204 1 0 0 0 0 + 87 88 1 0 0 0 0 + 87205 1 0 0 0 0 + 87206 1 0 0 0 0 + 89 90 1 0 0 0 0 + 89 91 2 0 0 0 0 + 92 93 1 0 0 0 0 + 93 94 1 0 0 0 0 + 93207 1 0 0 0 0 + 93208 1 0 0 0 0 + 94 95 1 0 0 0 0 + 94209 1 0 0 0 0 + 94210 1 0 0 0 0 + 95 96 2 0 0 0 0 + 95 97 1 0 0 0 0 + 98 99 1 0 0 0 0 + 99100 1 0 0 0 0 + 99211 1 0 0 0 0 + 99212 1 0 0 0 0 +100101 1 0 0 0 0 +100213 1 0 0 0 0 +100214 1 0 0 0 0 +101102 2 0 0 0 0 +101103 1 0 0 0 0 +104105 1 0 0 0 0 +105106 1 0 0 0 0 +105215 1 0 0 0 0 +105216 1 0 0 0 0 +106107 1 0 0 0 0 +106217 1 0 0 0 0 +106218 1 0 0 0 0 +107108 2 0 0 0 0 +107109 1 0 0 0 0 +110111 1 0 0 0 0 +111112 1 0 0 0 0 +111219 1 0 0 0 0 +111220 1 0 0 0 0 +112113 1 0 0 0 0 +112221 1 0 0 0 0 +112222 1 0 0 0 0 +113114 2 0 0 0 0 +113115 1 0 0 0 0 +116117 1 0 0 0 0 +117118 1 0 0 0 0 +117223 1 0 0 0 0 +117224 1 0 0 0 0 +118119 1 0 0 0 0 +118225 1 0 0 0 0 +118226 1 0 0 0 0 +119120 2 0 0 0 0 +119121 1 0 0 0 0 +122123 1 0 0 0 0 +122128 1 0 0 0 0 +123124 1 0 0 0 0 +123227 1 0 0 0 0 +123228 1 0 0 0 0 +124125 1 0 0 0 0 +124229 1 0 0 0 0 +124230 1 0 0 0 0 +125126 2 0 0 0 0 +125127 1 0 0 0 0 +128231 1 0 0 0 0 +128232 1 0 0 0 0 +M CHG 8 6 -1 90 -1 97 -1 103 -1 109 -1 115 -1 121 -1 127 -1 +M END +$$$$ From 39ede2573bd004503a7f8a35dca7b6a325e2b6a8 Mon Sep 17 00:00:00 2001 From: Jake Anderson Date: Mon, 9 Oct 2023 14:40:56 -0700 Subject: [PATCH 2/4] Added to comment regarding improving the calculation --- docs/tutorials/08-tutorial-sug-roc-notleap.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb b/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb index 64e55b6..ef914e3 100644 --- a/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb +++ b/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb @@ -951,7 +951,7 @@ "id": "9ee91f39-6968-448d-8173-38f0c14928b5", "metadata": {}, "source": [ - "The experimental binding free energy is -8.27 kcal/mol1. To get a more accurate calculation we can decrease the step size of the attach fractions, increase the pull distance somewhat, decrease the step size between pull distances, to name a few options.\n", + "The experimental binding free energy is -8.27 kcal/mol1. To get a more accurate calculation we can decrease the step size of the attach fractions, increase the pull distance somewhat, decrease the step size between pull distances, to name a few options. Also realize that here we are only calculating the binding of rocuronium in one orientation to one face of sugammadex (primary).\n", "\n", "(1) https://doi.org/10.1016/j.molliq.2018.06.033" ] From c44351177ff4ed75fd386be07c97e5eb3d247fd5 Mon Sep 17 00:00:00 2001 From: Jake Anderson Date: Mon, 16 Oct 2023 17:53:30 -0700 Subject: [PATCH 3/4] Implemented changes recommended by @jeff231li except alterations to the manual pulling --- .../08-tutorial-sug-roc-notleap.ipynb | 133 ++++-------------- 1 file changed, 27 insertions(+), 106 deletions(-) diff --git a/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb b/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb index ef914e3..8b41f39 100644 --- a/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb +++ b/docs/tutorials/08-tutorial-sug-roc-notleap.ipynb @@ -2,21 +2,15 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "50480e01-d166-431f-a00a-933c68e67413", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-10-09 02:10:14 PM Enabling RDKit 2023.03.3 jupyter extensions\n" - ] - } - ], + "outputs": [], "source": [ "import logging\n", "import os\n", + "\n", + "os.environ[\"NUMEXPR_MAX_THREADS\"] = \"8\"\n", "import pickle\n", "from importlib import reload\n", "\n", @@ -57,23 +51,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "0119bb61-339f-413d-a243-4195fd770e0b", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-10-09 02:10:14 PM Attempting to up-convert vdW section from 0.3 to 0.4\n", - "2023-10-09 02:10:14 PM Successfully up-converted vdW section from 0.3 to 0.4. `method=\"cutoff\"` is now split into `periodic_method=\"cutoff\"` and `nonperiodic_method=\"no-cutoff\"`.\n", - "2023-10-09 02:10:14 PM Attempting to up-convert Electrostatics section from 0.3 to 0.4\n", - "2023-10-09 02:10:14 PM Successfully up-converted Electrostatics section from 0.3 to 0.4. `method=\"PME\"` is now split into `periodic_potential=\"Ewald3D-ConductingBoundary\"`, `nonperiodic_potential=\"Coulomb\"`, and `exception_potential=\"Coulomb\"`.\n" - ] - } - ], + "outputs": [], "source": [ "ff = ForceField(\"amber/tip3p_standard.xml\", \"amber/tip3p_HFE_multivalent.xml\")\n", "guest = openffMolecule.from_file(f\"{datadir}/rocuronium.sdf\")\n", @@ -123,21 +106,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "67fd1924-6017-40ff-b05c-e503f06c1ae1", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-10-09 02:10:15 PM Requested to generate parameters for residue \n", - "2023-10-09 02:10:15 PM Generating a residue template for [H][O][C@]1([H])[C@@]([H])([O][H])[C@@]2([H])[O][C@@]3([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]4([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]5([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]6([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]7([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]8([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@@]9([H])[C@]([H])([O][H])[C@@]([H])([O][H])[C@@]([H])([O][C@]1([H])[C@@]([H])([C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O]2)[O][C@]9([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]8([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]7([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]6([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]5([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]4([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-])[O][C@]3([H])[C]([H])([H])[S][C]([H])([H])[C]([H])([H])[C](=[O])[O-] using openff-2.0.0\n", - "2023-10-09 02:10:16 PM Requested to generate parameters for residue \n", - "2023-10-09 02:10:16 PM Generating a residue template for [H][O][C@@]1([H])[C]([H])([H])[C@]2([H])[C]([H])([H])[C]([H])([H])[C@]3([H])[C@]([H])([C]([H])([H])[C]([H])([H])[C@]4([C]([H])([H])[H])[C@@]([H])([O][C](=[O])[C]([H])([H])[H])[C@@]([H])([N+]5([C]([H])([H])[C]([H])=[C]([H])[H])[C]([H])([H])[C]([H])([H])[C]([H])([H])[C]5([H])[H])[C]([H])([H])[C@@]34[H])[C@@]2([C]([H])([H])[H])[C]([H])([H])[C@]1([H])[N+]1([H])[C]([H])([H])[C]([H])([H])[O][C]([H])([H])[C]1([H])[H] using openff-2.0.0\n" - ] - } - ], + "outputs": [], "source": [ "pdb = PDBFile(f\"{datadir}/sug_roc.pdb\")\n", "model = Modeller(topology.to_openmm(ensure_unique_atom_names=True), pdb.positions)\n", @@ -164,24 +136,10 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "21fc58f4-c6fe-4555-9022-f8d3739cb8dd", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-10-09 02:10:16 PM Note: detected 128 virtual cores but NumExpr set to maximum of 64, check \"NUMEXPR_MAX_THREADS\" environment variable.\n", - "2023-10-09 02:10:16 PM Note: NumExpr detected 128 cores but \"NUMEXPR_MAX_THREADS\" not set, so enforcing safe limit of 8.\n", - "2023-10-09 02:10:16 PM NumExpr defaulting to 8 threads.\n", - "2023-10-09 02:10:16 PM Warning on use of the timeseries module: If the inherent timescales of the system are long compared to those being analyzed, this statistical inefficiency may be an underestimate. The estimate presumes the use of many statistically independent samples. Tests should be performed to assess whether this condition is satisfied. Be cautious in the interpretation of the data.\n", - "2023-10-09 02:10:16 PM JAX detected. Using JAX acceleration.\n", - "2023-10-09 02:10:17 PM Moving :ROC@C14x (1 atoms) to the origin...\n", - "2023-10-09 02:10:17 PM Aligning :ROC@C8x (1 atoms) with the z axis...\n" - ] - } - ], + "outputs": [], "source": [ "from paprika.build import align\n", "\n", @@ -210,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "675d0486-5edc-48b2-ae9a-e4672b06e134", "metadata": {}, "outputs": [], @@ -230,13 +188,12 @@ " constraints=HBonds,\n", ") # We recreate the OpenMM system because it now has waters\n", "\n", - "# Set the nonbonded forces for the dummy atoms to have force constants of 0 and masses of 0.\n", - "# Masses of 0 means OpenMM won't calculate forces for them.\n", + "# Give the dummy atoms mass of lead (207.2) and set the nonbonded forces for the dummy atoms to have charge 0 and LJ parameters epsilon=sigma=0.\n", "for force in system.getForces():\n", " if isinstance(force, openmm.NonbondedForce):\n", - " system.addParticle(mass=0)\n", - " system.addParticle(mass=0)\n", - " system.addParticle(mass=0)\n", + " system.addParticle(mass=207.2)\n", + " system.addParticle(mass=207.2)\n", + " system.addParticle(mass=207.2)\n", " force.addParticle(0, 0, 0)\n", " force.addParticle(0, 0, 0)\n", " force.addParticle(0, 0, 0)\n", @@ -292,18 +249,10 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "7126b627-20ff-4c51-9335-2b76d2a277fa", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "There are [21, 60, 0] windows in this APR calculation.\n" - ] - } - ], + "outputs": [], "source": [ "attach_fractions = [f / 100 for f in np.arange(0, 105.0, 5.0)]\n", "initial_distance = 12.0\n", @@ -326,7 +275,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "f4cd75b9-4299-4324-94ca-6a6ef9b31e72", "metadata": {}, "outputs": [], @@ -413,21 +362,10 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "d425cbff-243d-4e5b-8150-aceb6c2a520a", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-10-09 02:10:45 PM Loaded complex/aligned_solvated_dummy_structure.pdb...\n", - "2023-10-09 02:10:47 PM Loaded complex/aligned_solvated_dummy_structure.pdb...\n", - "2023-10-09 02:10:50 PM Loaded complex/aligned_solvated_dummy_structure.pdb...\n", - "2023-10-09 02:10:53 PM Loaded complex/aligned_solvated_dummy_structure.pdb...\n" - ] - } - ], + "outputs": [], "source": [ "G1 = \":ROC@C14x\"\n", "G2 = \":ROC@C8x\"\n", @@ -501,7 +439,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "1443100a-bf44-4ff8-9a32-b41a11fd73b7", "metadata": {}, "outputs": [], @@ -515,18 +453,10 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "0f0636d5-ff8d-478c-93aa-2ccfd6596f2a", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-10-09 02:10:56 PM Restraints appear to be consistent\n" - ] - } - ], + "outputs": [], "source": [ "from paprika.restraints.utils import create_window_list\n", "\n", @@ -543,18 +473,10 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "a7545a70-e6b0-43ba-a8f7-a2d02d48eec6", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 119/119 [10:41<00:00, 5.39s/it]\n" - ] - } - ], + "outputs": [], "source": [ "import shutil\n", "\n", @@ -583,7 +505,6 @@ " np.arange(min(pull_distances), max(pull_distances) + step_size, step_size)[:]\n", "):\n", " offset = round(offset, 2)\n", - " # assert offset < initial_distance + 0.001\n", "\n", " with open(f\"{compdir}/solvated_dummy_system.xml\", \"r\") as f:\n", " system = XmlSerializer.deserialize(f.read())\n", @@ -942,7 +863,7 @@ "\n", "result_string = f\"Binding affinity: {binding_affinity:0.4f} ± {sem:0.4f}\"\n", "print(result_string)\n", - "with open(\"result.txt\", \"r\") as f:\n", + "with open(\"result.txt\", \"w\") as f:\n", " f.write(result_string)" ] }, @@ -951,7 +872,7 @@ "id": "9ee91f39-6968-448d-8173-38f0c14928b5", "metadata": {}, "source": [ - "The experimental binding free energy is -8.27 kcal/mol1. To get a more accurate calculation we can decrease the step size of the attach fractions, increase the pull distance somewhat, decrease the step size between pull distances, to name a few options. Also realize that here we are only calculating the binding of rocuronium in one orientation to one face of sugammadex (primary).\n", + "The experimental binding free energy is -8.27 kcal/mol1. To get a more accurate calculation we can increase the number of attach fractions, increase the pull distance somewhat, decrease the step size between pull distances, to name a few options. Also realize that here we are only calculating the binding of rocuronium in one orientation to one face of sugammadex (primary).\n", "\n", "(1) https://doi.org/10.1016/j.molliq.2018.06.033" ] From 7e70d424eab2f253491dc6f78e0dcaa56c316b6a Mon Sep 17 00:00:00 2001 From: Jake Anderson Date: Mon, 16 Oct 2023 18:41:19 -0700 Subject: [PATCH 4/4] Added myself as a contributor --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index eb5ba48..b8e6b6d 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ pAPRika is a toolkit for setting up, running, and analyzing free energy molecula - Simon Boothroyd (Sloan Kettering Institute, Open Force Field, XtalPi Inc.) - Jeff Setiadi (UCSD) - Willa Wang (UCSD) +- Jake Anderson (UCSD) # Installation