{ "cells": [ { "cell_type": "markdown", "id": "35354229", "metadata": {}, "source": [ "# Setting up a relative binding free energy network\n", "\n", "This tutorial gives a step-by-step process to set up a relative binding free energy (RBFE) simulation campaign using OpenFE. This tutorial is designed as an accompaniment to the CLI tutorial found in the same directory as this notebook.\n", "\n", "With the CLI, all the steps here were performed by the `openfe plan-rbfe-network` command. However, that command offers little room for customization. Using the Python interface gives us the ability to customize all aspects of how our simulation runs. This tutorial provides a step-by-step Python guide to reproducing the setup done in the CLI tutorial, highlighting areas where the Python interface enables customization." ] }, { "cell_type": "code", "execution_count": 1, "id": "fc97de03", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import openfe" ] }, { "cell_type": "markdown", "id": "2fea29c3", "metadata": {}, "source": [ "## Loading the ligands\n", "\n", "First we must load the chemical models between which we wish to calculate free energies.\n", "In this example these are initially stored in a molfile (`.sdf`) containing multiple molecules.\n", "This can be loaded using the `SDMolSupplier` class from rdkit and passed to openfe." ] }, { "cell_type": "code", "execution_count": 2, "id": "41cf8be7", "metadata": {}, "outputs": [], "source": [ "from rdkit import Chem\n", "supp = Chem.SDMolSupplier(\"tyk2_ligands.sdf\", removeHs=False)\n", "ligands = [openfe.SmallMoleculeComponent.from_rdkit(mol) for mol in supp]" ] }, { "cell_type": "markdown", "id": "8e5de19a", "metadata": {}, "source": [ "## Charging the ligands\n", "\n", "It is recommended to use a single set of charges for each ligand to ensure reproducibility between repeats or consistent charges between different legs of a calculation involving the same ligand, like a relative binding affinity calculation for example. \n", "\n", "Here we will use some utility functions from OpenFE which can assign partial charges to a series of molecules with a variety of methods which can be configured via the `OpenFFPartialChargeSettings` class. In this example \n", "we will charge the ligands using the `am1bcc` method from `ambertools` which is the default charge scheme used by OpenFE." ] }, { "cell_type": "code", "execution_count": 3, "id": "5219106c", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Generating charges: 100%|███████████████████████| 10/10 [02:59<00:00, 17.95s/it]\n" ] } ], "source": [ "from openfe.protocols.openmm_utils.omm_settings import OpenFFPartialChargeSettings\n", "from openfe.protocols.openmm_utils.charge_generation import bulk_assign_partial_charges\n", "\n", "charge_settings = OpenFFPartialChargeSettings(partial_charge_method=\"am1bcc\", off_toolkit_backend=\"ambertools\")\n", "\n", "charged_ligands = bulk_assign_partial_charges(\n", " molecules=ligands,\n", " overwrite=False, \n", " method=charge_settings.partial_charge_method,\n", " toolkit_backend=charge_settings.off_toolkit_backend,\n", " generate_n_conformers=charge_settings.number_of_conformers,\n", " nagl_model=charge_settings.nagl_model,\n", " processors=1\n", ")" ] }, { "cell_type": "markdown", "id": "6963be83", "metadata": {}, "source": [ "## Creating the `LigandNetwork`\n", "\n", "The first step is to create a `LigandNetwork`, which is a network with small molecules as nodes, and atom mappings, the description of how to alchemically mutate between the molecules, as its edges.\n", "\n", "The pipeline for creating a `LigandNetwork` can involve three components:\n", "\n", "* **Atom Mapper**: Proposes potential atom mappings (descriptions of the alchemical change) for pairs of ligands. We will use the `LomapAtomMapper`.\n", "* **Scorer**: Given an atom mapping, provides an estimate of the quality of that mapping (higher scores are better). We will use `default_lomap_scorer`.\n", "* **Network Planner**: Creates the actual `LigandNetwork`; different network planners provide different strategies. We will create a minimal spanning network with the `generate_minimal_spanning_network` method.\n", "\n", "Each of these components could be replaced by other options." ] }, { "cell_type": "code", "execution_count": 4, "id": "5a3cf244", "metadata": {}, "outputs": [], "source": [ "mapper = openfe.LomapAtomMapper(max3d=1.0, element_change=False)\n", "scorer = openfe.lomap_scorers.default_lomap_score\n", "network_planner = openfe.ligand_network_planning.generate_minimal_spanning_network" ] }, { "cell_type": "markdown", "id": "acc13581", "metadata": {}, "source": [ "The exact call signature depends on the network planner: a minimal spanning network requires a score, whereas that is optional for a radial network (but a radial network needs the central ligand to be provided)." ] }, { "cell_type": "code", "execution_count": 5, "id": "f6e7bce5", "metadata": {}, "outputs": [], "source": [ "ligand_network = network_planner(\n", " ligands=charged_ligands,\n", " mappers=[mapper],\n", " scorer=scorer\n", ")" ] }, { "cell_type": "markdown", "id": "b7492637", "metadata": {}, "source": [ "Now we can look at the overall structure of the `LigandNetwork`:" ] }, { "cell_type": "code", "execution_count": 6, "id": "e6ca6131", "metadata": {}, "outputs": [ { "data": { "image/png": "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AEqqyJw5M0uXLiVPnjz89ttvtG/fntjYWKtjOR273X5765eePXuSMWNGixOJiIgrUgGUVFO4cGEWL16Mt7c3Cxcu5MMPP7Q6ktNZt24du3fvxtfXl+7du1sdR0REXJQKoKSqGjVqMHnyZAA++OADfvjhB4sTOZe4R+117NiRnDlzWpxGRERclQqgpLoOHTrc3ri4ffv27Nq1y+JEzmH//v0sX74cm81G3759rY4jIiIuTAVQ0sTo0aNp2LAh165do1mzZpw/f97qSA5vzJgxADRv3pzixYtbnEZERFyZCqCkCU9PT/773/9SsmRJTp48SYsWLbhx44bVsRzW+fPnmTVrFqCNn0VEJO2pAEqayZYtG8uWLSNbtmxs2bKF7t27Y7fbrY7lkL744gtu3rxJ1apVqVGjhtVxRETExakASpoqUaIE8+fPx9PTkxkzZjB27FirIzmcq1ev8uWXXwJm9E8bP4uISFpTAZQ0V69evdv3tw0YMIDly5dbnMixfPfdd1y8eJFHH32UFi1aWB1HRETcgAqgpItevXrRpUsXYmNjefnllzlw4IDVkRxCbGzs7VHRvn374uXlZXEiERFxByqAki5sNhtffPEFtWvXJiIigqZNm3L58mWrY1lu2bJlHD58mGzZstGpUyer44iIiJtQAZR0E/eEkCJFinD48GFefPFFbt26ZXUsS8U99q1bt274+flZnEZERNyFCqCkq9y5cxMcHEzmzJlZvXq1W295sn37djZu3IiXlxe9evWyOo6IiLgRFUBJd+XLl7+9592ECROYNm2axYmsETf616ZNGwoUKGBxGhERcScqgGKJFi1a8NFHHwHQo0cPNm7caHGi9HX8+PHbz0l251FQERGxhgqgWGbIkCG89NJLREdH07JlS44fP251pHQzfvx4YmNjefbZZ6lQoYLVcURExM2oAIplbDYb06dPp1KlSvz99980a9aMqKgoq2OluX/++ef2tLdG/0RExAoqgGIpX19flixZQr58+dizZw+vvvoqsbGxVsdKU1OnTiUqKoqyZcvSoEEDq+OIiIgbUgEUyxUsWJDFixeTMWNGlixZwvvvv291pDQTHR3NhAkTAOjXr58e+yYiIpZQARSHUK1aNaZOnQrA8OHDmTdvnsWJ0sb8+fM5deoUefPmpV27dlbHERERN6UCKA7j1VdfZcCAAQB06NCB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UYg4qunTp1O/fn0uX75M1apVCQ0NJTAw0OpYIoIKoIjT06IQcTSxsbG88847dO7cmVu3bvHyyy+zbt068ubNa3U0Efl/KoAiLkCLQsRRXLlyhVatWjF69GgA3nvvPebMmUOmTJksTiYid1IBFHERWhQiVjtz5gxPPvkkixcvxtvbm++//54PPvhAz/QVcUAqgCIuRItCxCo7d+4kKCiInTt3kitXLtauXUu7du2sjiUi96ECKOJitChE0tvSpUupXbs2p0+fpkyZMoSGhlKzZk2rY4nIA6gAirgYLQqR9GK32/nss89o0aIFV69epX79+mzevJlixYpZHU1EHkIFUMQFaVGIpLXo6Gi6du3KgAEDsNvtvPHGG/z0009kzZrV6mgikggqgCIuSotCJK1cvnyZhg0bMm3aNDw8PBg3bhxffPGFHusm4kRUAEVcmBaFSGo7cuQI1apVY+3atfj5+REcHEyfPn200lfEyagAirg4LQqR1LJhwwaqVq3KoUOHKFSoECEhITRu3NjqWCKSDCqAIi5Oi0IkNXz33Xc8++yzXLp0iaCgILZt20b58uWtjiUiyaQCKOIGtChEkis2NpbBgwfToUMHoqOjad26NevXrydfvnxWRxORFFABFHETWhQiSXX16lVefPFFRo0aBcDQoUOZO3euHusm4gJUAEXciBaFSGKdPXuWp556ioULF+Lt7c3MmTP56KOP8PDQvzZEXIH+ThZxM1oUIg/z22+/ERQUxP/+9z9y5szJ6tWrefXVV62OJSKpSAVQxM1oUYg8yLJly6hZsyanTp2iVKlShIaGUrt2batjiUgqUwEUcUNaFCJ3s9vtjB07lmbNmnHlyhWeeeYZNm/eTEBAgNXRRCQNqACKuCktCpE40dHRdO/enX79+mG32+natSvLly8ne/bsVkcTkTSiAijixho2bMjIkSMBLQpxV//88w+NGjViypQp2Gw2Pv/8c77++msyZMhgdTQRSUMqgCJu7p133tGiEDcVFhZG9erVWb16NZkzZ2bJkiX069dPj3UTcQMqgCJuTotC3NOmTZuoWrUqBw4coGDBgmzatImmTZtaHUtE0okKoIhoUYibmTVrFs888wwXL16kcuXKbNu2jccff9zqWCKSjlQARQTQohB3EBsby9ChQ3nttde4efMmLVu25NdffyV//vxWRxORdKYCKCK3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", "text/plain": [ "
" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from openfe.utils.atommapping_network_plotting import plot_atommapping_network\n", "plot_atommapping_network(ligand_network)" ] }, { "cell_type": "markdown", "id": "5f99678c", "metadata": {}, "source": [ "We can also inspect the individual atom mappings:" ] }, { "cell_type": "code", "execution_count": 7, "id": "c55cbcac", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# get the first edge; it automatically displays in a Jupyter notebook\n", "mapping = next(iter(ligand_network.edges))\n", "mapping" ] }, { "cell_type": "markdown", "id": "dd0c96d7", "metadata": {}, "source": [ "To get the score for this mapping, we inspect its `annotations` attribute. Arbitrary annotations can be added when a mapping is created, although our network generator only includes the score." ] }, { "cell_type": "code", "execution_count": 8, "id": "6b7492d7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'score': 0.9048374180359595}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# higher score is better\n", "mapping.annotations" ] }, { "cell_type": "markdown", "id": "30b276b6", "metadata": {}, "source": [ "You can output the ligand network to the same `graphml` format as we saw in the CLI tutorial with the following:" ] }, { "cell_type": "code", "execution_count": 9, "id": "2263838f", "metadata": {}, "outputs": [], "source": [ "with open(\"ligand_network.graphml\", mode='w') as f:\n", " f.write(ligand_network.to_graphml())" ] }, { "cell_type": "markdown", "id": "056924a3", "metadata": {}, "source": [ "## Creating a single `Transformation`\n", "\n", "The `LigandNetwork` only knows about the small molecules and the alchemical connections between them. It doesn't know anything about environment (e.g., solvent) or about the `Protocol` that will be used during the simulation.\n", "\n", "That information in included in a `Transformation`. Each of these transformations corresponds to a single leg of the simulation campaign, so for each edge in the `LigandNetwork`, we will create two `Transformation`s: one for the complex and one for solvent.\n", "\n", "In practice, this will be done for each edge of the `LigandNetwork` in a loop, but for illustrative purposes we'll dive into the details of creating a single transformation. In particular, we'll create the solvent leg for the pair of molecules we selecting for the mapping above." ] }, { "cell_type": "markdown", "id": "d0cb1329", "metadata": {}, "source": [ "### Creating `ChemicalSystem`s\n", "\n", "OpenFE describes complex molecular systems as being composed of `Component`s. For example, we have `SmallMoleculeComponent` for each small molecule in the `LigandNetwork`. We'll create a `SolventComponent` to describe the solvent, and binding free energy calculations involve a `ProteinComponent`.\n", "\n", "The `Component`s are joined in a `ChemicalSystem`, which describes all the particles in the simulation." ] }, { "cell_type": "code", "execution_count": 10, "id": "9d2fbc22", "metadata": {}, "outputs": [], "source": [ "# defaults are water with NaCl at 0.15 M\n", "solvent = openfe.SolventComponent()" ] }, { "cell_type": "code", "execution_count": 11, "id": "3f1706ee", "metadata": {}, "outputs": [], "source": [ "protein = openfe.ProteinComponent.from_pdb_file(\"./tyk2_protein.pdb\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "710285ca", "metadata": {}, "outputs": [], "source": [ "systemA = openfe.ChemicalSystem({\n", " 'ligand': mapping.componentA,\n", " 'solvent': solvent,\n", " 'protein': protein\n", "})\n", "systemB = openfe.ChemicalSystem({\n", " 'ligand': mapping.componentB,\n", " 'solvent': solvent,\n", " 'protein': protein \n", "})" ] }, { "cell_type": "markdown", "id": "340d1a6e", "metadata": {}, "source": [ "### Creating a `Protocol`\n", "\n", "The actual simulation is performed by a `Protocol`. We'll use an OpenMM-based hybrid topology relative free energy `Protocol`." ] }, { "cell_type": "code", "execution_count": 13, "id": "3f394a0d", "metadata": { "scrolled": true }, "outputs": [], "source": [ "from openfe.protocols.openmm_rfe import RelativeHybridTopologyProtocol" ] }, { "cell_type": "markdown", "id": "3bddfa3c", "metadata": {}, "source": [ "The easiest way to customize protocol settings is to start with the default settings, and modify them. Many settings carry units with them." ] }, { "cell_type": "code", "execution_count": 14, "id": "fb839094", "metadata": {}, "outputs": [ { "data": { "text/html": [ "298.15 kelvin" ], "text/latex": [ "$298.15\\ \\mathrm{kelvin}$" ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "settings = RelativeHybridTopologyProtocol.default_settings()\n", "settings.thermo_settings.temperature # display default value" ] }, { "cell_type": "code", "execution_count": 15, "id": "e83630f0", "metadata": {}, "outputs": [], "source": [ "from openff.units import unit\n", "\n", "# change the value\n", "settings.thermo_settings.temperature = 310.0 * unit.kelvin" ] }, { "cell_type": "markdown", "id": "56658a3a", "metadata": {}, "source": [ "We use the default settings with an adapted solvent padding for the complex phase to avoid adding too many waters." ] }, { "cell_type": "code", "execution_count": 16, "id": "7adf42d6", "metadata": {}, "outputs": [], "source": [ "# Create a protocol for the solvent legs using default settings\n", "solvent_protocol = RelativeHybridTopologyProtocol(RelativeHybridTopologyProtocol.default_settings())\n", "\n", "# Create a prrotocol for the complex legs with a reduced solvent padding\n", "complex_settings = RelativeHybridTopologyProtocol.default_settings()\n", "complex_settings.solvation_settings.solvent_padding = 1 * unit.nanometer\n", "complex_protocol = RelativeHybridTopologyProtocol(complex_settings)" ] }, { "cell_type": "markdown", "id": "318ff872", "metadata": {}, "source": [ "### Creating the `Transformation`\n", "\n", "Once we have the mapping, the two `ChemicalSystem`s, and the `Protocol`, creating the `Transformation` is easy:" ] }, { "cell_type": "code", "execution_count": 17, "id": "44ba94ca", "metadata": {}, "outputs": [], "source": [ "# Here we assume we are creating a transformation for a complex leg\n", "transformation = openfe.Transformation(\n", " systemA,\n", " systemB,\n", " complex_protocol,\n", " mapping=mapping,\n", ")" ] }, { "cell_type": "markdown", "id": "4283dfe4", "metadata": {}, "source": [ "To summarize, this `Transformation` contains:\n", "- chemical models of both sides of the alchemical transformation in `systemA` and `systemB`\n", "- the correspondence of items in these two sides in `mapping` \n", "- a description of the exact computational algorithm to use to perform the estimate in `complex_protocol`" ] }, { "cell_type": "markdown", "id": "1e29d1c8", "metadata": {}, "source": [ "## Creating the `AlchemicalNetwork`\n", "\n", "The `AlchemicalNetwork` contains all the information needed to run the entire campaign. It consists of a `Transformation` for each leg of the campaign. We'll loop over all the mappings, and then loop over the legs. In that inner loop, we'll make each transformation." ] }, { "cell_type": "code", "execution_count": 18, "id": "66666a80", "metadata": {}, "outputs": [], "source": [ "transformations = []\n", "for mapping in ligand_network.edges:\n", " for leg in ['solvent', 'complex']:\n", " # use the solvent and protein created above\n", " sysA_dict = {'ligand': mapping.componentA,\n", " 'solvent': solvent}\n", " sysB_dict = {'ligand': mapping.componentB,\n", " 'solvent': solvent}\n", " \n", " if leg == 'complex':\n", " # If this is a complex transformation we use the complex protocol\n", " # and add in the protein to the chemical states\n", " protocol = complex_protocol\n", " sysA_dict['protein'] = protein\n", " sysB_dict['protein'] = protein\n", " else:\n", " # If this is a solvent transformation we just use the solvent protocol\n", " protocol = solvent_protocol\n", " \n", " # we don't have to name objects, but it can make things (like filenames) more convenient\n", " sysA = openfe.ChemicalSystem(sysA_dict, name=f\"{mapping.componentA.name}_{leg}\")\n", " sysB = openfe.ChemicalSystem(sysB_dict, name=f\"{mapping.componentB.name}_{leg}\")\n", " \n", " prefix = \"rbfe_\" # prefix is only to exactly reproduce CLI\n", " \n", " transformation = openfe.Transformation(\n", " stateA=sysA,\n", " stateB=sysB,\n", " mapping=mapping,\n", " protocol=protocol, # use protocol created above\n", " name=f\"{prefix}{sysA.name}_{sysB.name}\"\n", " )\n", " transformations.append(transformation)\n", "\n", "network = openfe.AlchemicalNetwork(transformations)" ] }, { "cell_type": "markdown", "id": "6c61fe36", "metadata": {}, "source": [ "## Writing the `AlchemicalNetwork` to disk\n", "\n", "We'll write out each transformation to disk, so that they can be run independently using the `openfe quickrun` command:" ] }, { "cell_type": "code", "execution_count": 19, "id": "d6cebd9a", "metadata": {}, "outputs": [], "source": [ "import pathlib\n", "# first we create the directory\n", "transformation_dir = pathlib.Path(\"transformations\")\n", "transformation_dir.mkdir(exist_ok=True)\n", "\n", "# then we write out each transformation\n", "for transformation in network.edges:\n", " transformation.to_json(transformation_dir / f\"{transformation.name}.json\")" ] }, { "cell_type": "code", "execution_count": 20, "id": "b96b57a9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rbfe_lig_ejm_31_complex_lig_ejm_42_complex.json\n", "rbfe_lig_ejm_31_complex_lig_ejm_46_complex.json\n", "rbfe_lig_ejm_31_complex_lig_ejm_47_complex.json\n", "rbfe_lig_ejm_31_complex_lig_ejm_48_complex.json\n", "rbfe_lig_ejm_31_complex_lig_ejm_50_complex.json\n", "rbfe_lig_ejm_31_solvent_lig_ejm_42_solvent.json\n", "rbfe_lig_ejm_31_solvent_lig_ejm_46_solvent.json\n", "rbfe_lig_ejm_31_solvent_lig_ejm_47_solvent.json\n", "rbfe_lig_ejm_31_solvent_lig_ejm_48_solvent.json\n", "rbfe_lig_ejm_31_solvent_lig_ejm_50_solvent.json\n", "rbfe_lig_ejm_42_complex_lig_ejm_43_complex.json\n", "rbfe_lig_ejm_42_solvent_lig_ejm_43_solvent.json\n", "rbfe_lig_ejm_46_complex_lig_jmc_23_complex.json\n", "rbfe_lig_ejm_46_complex_lig_jmc_27_complex.json\n", "rbfe_lig_ejm_46_complex_lig_jmc_28_complex.json\n", "rbfe_lig_ejm_46_solvent_lig_jmc_23_solvent.json\n", "rbfe_lig_ejm_46_solvent_lig_jmc_27_solvent.json\n", "rbfe_lig_ejm_46_solvent_lig_jmc_28_solvent.json\n" ] } ], "source": [ "!ls transformations/" ] }, { "cell_type": "markdown", "id": "c30e8ae2", "metadata": {}, "source": [ "Each of these individual `.json` files contains a `Transformation`, which contains all the information to run the calculation. These could be farmed out as individual jobs on a HPC cluster. These files are identical to what were created in setup stage of the CLI tutorial; for details on running them, follow from the section on running simulations in the CLI tutorial" ] } ], "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.11.14" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "030a9a234df04a2d8585393a38bc75ad": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "bar_style": "success", "layout": "IPY_MODEL_e85c46b9e6cd4b4aa6721d42d95f43ae", "max": 45, "style": "IPY_MODEL_f88d8e81d56d42a597caa294df13b463", "value": 45 } }, "10e8431bce284e53adcc12f212cc9d70": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "498d5b0fc56749e59ef58c37d6d532bc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_ee4133a6dace4dde806e0d7abb02685e", "style": "IPY_MODEL_10e8431bce284e53adcc12f212cc9d70", "value": "Mapping: 100%" } }, "5df4176b643243e4b0b09a61b29ac397": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "children": [ "IPY_MODEL_498d5b0fc56749e59ef58c37d6d532bc", "IPY_MODEL_030a9a234df04a2d8585393a38bc75ad", "IPY_MODEL_7c62d22f8c7542b9b2263b34cf14ead9" ], "layout": "IPY_MODEL_657b6894bf6f433e878640fd8b9d8c7f" } }, "657b6894bf6f433e878640fd8b9d8c7f": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "7c62d22f8c7542b9b2263b34cf14ead9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "layout": "IPY_MODEL_c8d5465db83f4b0dba48c1adc78b79ed", "style": "IPY_MODEL_96dc11073263403985645abb3375a8da", "value": " 45/45 [00:00<00:00, 151.07it/s]" } }, "96dc11073263403985645abb3375a8da": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "description_width": "", "font_size": null, "text_color": null } }, "c8d5465db83f4b0dba48c1adc78b79ed": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "e85c46b9e6cd4b4aa6721d42d95f43ae": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "ee4133a6dace4dde806e0d7abb02685e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "f88d8e81d56d42a597caa294df13b463": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "description_width": "" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }