From 525593299f137db332be5f4722fa61d2c04086ee Mon Sep 17 00:00:00 2001 From: hannahbaumann Date: Tue, 18 Aug 2026 10:07:53 +0200 Subject: [PATCH 1/8] Add a notebook to repair broken networks --- cookbook/repairing_broken_networks.ipynb | 749 +++++++++++++++++++++++ 1 file changed, 749 insertions(+) create mode 100644 cookbook/repairing_broken_networks.ipynb diff --git a/cookbook/repairing_broken_networks.ipynb b/cookbook/repairing_broken_networks.ipynb new file mode 100644 index 0000000..0cb0a03 --- /dev/null +++ b/cookbook/repairing_broken_networks.ipynb @@ -0,0 +1,749 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "bc2dc4e7", + "metadata": {}, + "source": [ + "# Repairing a broken ligand network\n", + "\n", + "In a relative binding free energy (RBFE) campaign some transformations may fail. If\n", + "enough edges drop out, the completed network can split into disconnected pieces,\n", + "and a disconnected network can no longer rank all of its ligands.\n", + "\n", + "This notebook takes the TYK2 system from the JACS benchmark\n", + "set and repairs the network:\n", + "\n", + "1. load the stored, connected **planned** network,\n", + "2. parse a directory of **result JSONs** to find which edges actually completed,\n", + "3. reconstruct the **completed** network and diff it against the plan,\n", + "4. **repair** the breaks in two different ways:\n", + " - by ligand name\n", + " - by lomap score\n", + "6. **rebuild** alchemical transformations for the new edges and write them out." + ] + }, + { + "cell_type": "markdown", + "id": "ef334d57", + "metadata": {}, + "source": [ + "## 1. Fetch the data" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "2908ac2f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('industry_benchmarks_network.json', )" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import urllib.request\n", + "\n", + "NETWORK_URL = (\n", + " \"https://raw.githubusercontent.com/OpenFreeEnergy/openfe-benchmarks/main/\"\n", + " \"openfe_benchmarks/data/benchmark_systems/jacs_set/tyk2/\"\n", + " \"industry_benchmarks_network.json\"\n", + ")\n", + "urllib.request.urlretrieve(NETWORK_URL, \"industry_benchmarks_network.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b5d4a134", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fetching /Users/hannahbaumann/.local/share/mamba/envs/openfe/lib/python3.13/site-packages/openfecli/tests/data/rbfe_results.tar.gz\n" + ] + } + ], + "source": [ + "import locale\n", + "locale.getpreferredencoding = lambda: \"UTF-8\" # colab hack; not needed locally\n", + "\n", + "# Fetch and extract the CLI tutorial results from Zenodo\n", + "!openfe fetch rbfe-tutorial-results\n", + "!tar -xf rbfe_results.tar.gz" + ] + }, + { + "cell_type": "markdown", + "id": "09d26ef5", + "metadata": {}, + "source": [ + "## 2. Imports" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8d681408", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import pathlib\n", + "import warnings\n", + "\n", + "import networkx as nx\n", + "from rdkit import Chem\n", + "\n", + "from openfe import (\n", + " AlchemicalNetwork, ChemicalSystem, LigandAtomMapping, LigandNetwork,\n", + " ProteinComponent, SmallMoleculeComponent, SolventComponent, Transformation,\n", + ")\n", + "from openfe.protocols.openmm_rfe import RelativeHybridTopologyProtocol\n", + "from openfe.setup import KartografAtomMapper, lomap_scorers\n", + "from openfe.setup.ligand_network_planning import generate_network_from_names\n", + "from gufe.tokenization import JSON_HANDLER\n", + "\n", + "from konnektor.network_tools import merge_two_networks\n", + "from konnektor.network_planners import MstConcatenator" + ] + }, + { + "cell_type": "markdown", + "id": "89e33757", + "metadata": {}, + "source": [ + "## 3. Load the planned network\n", + "\n", + "This is the connected network the campaign set out to run." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "8a702d3c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "connected: True\n", + "ligands: 16 edges: 22\n" + ] + } + ], + "source": [ + "planned = LigandNetwork.from_json(\"industry_benchmarks_network.json\")\n", + "\n", + "print(\"connected:\", planned.is_connected())\n", + "print(\"ligands:\", len(planned.nodes), \" edges:\", len(planned.edges))" + ] + }, + { + "cell_type": "markdown", + "id": "bdf56bda", + "metadata": {}, + "source": [ + "## 4. Parse the results\n", + "\n", + "We read every result JSON, keep only the transformations that succeeded, and\n", + "record which ligand pairs finished. An edge counts as **completed** only if it\n", + "succeeded in *both* the solvent and complex legs.\n", + "\n", + "Ligand names needed to be adapted in this protocol (a leading `lig_` is stripped) so the tutorial\n", + "results line up with the `ejm_*`/`jmc_*` naming in the planned network. We also\n", + "store one complex `ChemicalSystem` as a reference for the protein, solvent and\n", + "cofactors, as well as a settings object for when we rebuild transformations later." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d0f1f442", + "metadata": {}, + "outputs": [], + "source": [ + "def _normalise(name: str) -> str:\n", + " return name[4:] if name.startswith(\"lig_\") else name\n", + "\n", + "\n", + "def _load_result_json(path):\n", + " \"\"\"Load a result JSON, or None if it isn't a usable result.\"\"\"\n", + " ru = json.load(open(path, \"rb\"), cls=JSON_HANDLER.decoder)\n", + " if not isinstance(ru, dict):\n", + " return None # e.g. the ligand network file\n", + " if ru.get(\"__qualname__\") in (\"AlchemicalNetwork\", \"Transformation\"):\n", + " return None # an input/alchemical network file\n", + " if \"unit_results\" not in ru:\n", + " return None\n", + " if all(\"exception\" in u for u in ru[\"unit_results\"].values()):\n", + " return None # every repeat failed\n", + " return ru\n", + "\n", + "\n", + "def _extract_edge(ru):\n", + " \"\"\"Return (pair, phase, stateA, settings) for a result, or None if inputs are stripped.\"\"\"\n", + " data = ru[\"protocol_result\"][\"data\"]\n", + " units = data[next(iter(data))]\n", + " if not units or \"stateA\" not in units[0][\"inputs\"]:\n", + " return None\n", + " inputs = units[0][\"inputs\"]\n", + " stateA = ChemicalSystem.from_dict(inputs[\"stateA\"])\n", + " mapping = LigandAtomMapping.from_dict(inputs[\"ligandmapping\"])\n", + " pair = frozenset({_normalise(mapping.componentA.name),\n", + " _normalise(mapping.componentB.name)})\n", + " is_complex = any(isinstance(c, ProteinComponent)\n", + " for c in stateA.components.values())\n", + " return pair, (\"complex\" if is_complex else \"solvent\"), stateA, inputs.get(\"settings\")\n", + "\n", + "\n", + "def parse_results(result_files, require_both_legs=True):\n", + " \"\"\"Completed pairs, a reference complex system, and the settings.\"\"\"\n", + " phases = {}\n", + " reference_complex_system = None\n", + " reference_protocol = None\n", + " for path in result_files:\n", + " ru = _load_result_json(path)\n", + " if ru is None:\n", + " continue\n", + " parsed = _extract_edge(ru)\n", + " if parsed is None:\n", + " continue\n", + " pair, phase, stateA, settings = parsed\n", + " if pair not in phases:\n", + " phases[pair] = set()\n", + " phases[pair].add(phase)\n", + " if phase == \"complex\" and reference_complex_system is None:\n", + " reference_complex_system = stateA\n", + " if settings is not None:\n", + " reference_protocol = RelativeHybridTopologyProtocol(settings=settings)\n", + "\n", + " completed_pairs = set()\n", + " for pair, seen in phases.items():\n", + " if not require_both_legs or seen == {\"complex\", \"solvent\"}:\n", + " completed_pairs.add(pair)\n", + " return completed_pairs, reference_complex_system, reference_protocol" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5119281e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "found 54 result files\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/hannahbaumann/.local/share/mamba/envs/openfe/lib/python3.13/site-packages/gufe/components/smallmoleculecomponent.py:286: UserWarning: The atom hybridization data was not found and has been set to unspecified. This can be fixed by recreating the SmallMoleculeComponent from the rdkit molecule after running sanitization.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "completed edges: 9\n", + "recovered protocol: True\n" + ] + } + ], + "source": [ + "RESULTS_DIR = pathlib.Path(\"results\")\n", + "\n", + "result_files = sorted(RESULTS_DIR.glob(\"*/*.json\"))\n", + "print(f\"found {len(result_files)} result files\")\n", + "\n", + "completed_pairs, reference_complex_system, reference_protocol = parse_results(result_files)\n", + "print(\"completed edges:\", len(completed_pairs))\n", + "print(\"recovered protocol:\", reference_protocol is not None)" + ] + }, + { + "cell_type": "markdown", + "id": "c17795f7", + "metadata": {}, + "source": [ + "## 5. Reconstruct the completed network and find the breaks\n", + "\n", + "We take the completed pairs and pull the matching edges out of the planned\n", + "network — so every ligand keeps the planned network's components. The result is\n", + "the network as it actually stands after the campaign, which is where we see the\n", + "damage." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5d8ea778", + "metadata": {}, + "outputs": [], + "source": [ + "def induced_completed(planned, completed_pairs):\n", + " \"\"\"The completed network as the subnetwork of `planned` that finished.\"\"\"\n", + " planned_pairs = {\n", + " frozenset({_normalise(e.componentA.name), _normalise(e.componentB.name)}): e\n", + " for e in planned.edges\n", + " }\n", + " edges = [planned_pairs[p] for p in completed_pairs if p in planned_pairs]\n", + "\n", + " unmatched = completed_pairs - set(planned_pairs)\n", + " if unmatched:\n", + " pairs = \", \".join(\" -- \".join(sorted(p)) for p in unmatched)\n", + " warnings.warn(\n", + " f\"{len(unmatched)} completed edge(s) are not in the planned network \"\n", + " f\"and will be ignored: {pairs}. This usually means the results and the \"\n", + " f\"planned network don't match. Check you supplied the right network.\"\n", + " )\n", + " return LigandNetwork(edges=edges)\n", + "\n", + "\n", + "def missing_ligands(planned, completed):\n", + " return set(planned.nodes) - set(completed.nodes)\n", + "\n", + "\n", + "def decompose_network(network):\n", + " \"\"\"Split a network into connected pieces.\"\"\"\n", + " g = network.graph.to_undirected()\n", + " pieces = []\n", + " for comp in nx.connected_components(g):\n", + " edges = [e for e in network.edges\n", + " if e.componentA in comp and e.componentB in comp]\n", + " pieces.append(LigandNetwork(nodes=comp, edges=edges))\n", + " return pieces\n", + "\n", + "\n", + "def fragments_to_repair(planned, completed):\n", + " \"\"\"Connected pieces of `completed`, plus one singleton per missing ligand.\"\"\"\n", + " frags = decompose_network(completed)\n", + " for lig in missing_ligands(planned, completed):\n", + " frags.append(LigandNetwork(nodes=[lig], edges=[]))\n", + " return frags" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "a8dcd736", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "completed connected: True\n", + "missing ligands: ['ejm_44', 'ejm_45', 'ejm_49', 'ejm_50', 'ejm_54', 'ejm_55', 'jmc_23', 'jmc_28', 'jmc_30']\n", + "fragment 0: ['ejm_31', 'ejm_42', 'ejm_43', 'ejm_46', 'ejm_47', 'ejm_48', 'jmc_27']\n", + "fragment 1: ['jmc_23']\n", + "fragment 2: ['ejm_45']\n", + "fragment 3: ['ejm_49']\n", + "fragment 4: ['ejm_44']\n", + "fragment 5: ['ejm_54']\n", + "fragment 6: ['jmc_30']\n", + "fragment 7: ['ejm_50']\n", + "fragment 8: ['ejm_55']\n", + "fragment 9: ['jmc_28']\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/459931657.py:12: UserWarning: 3 completed edge(s) are not in the planned network and will be ignored: ejm_31 -- ejm_50, ejm_46 -- jmc_28, ejm_46 -- jmc_23. This usually means the results and the planned network don't match. Check you supplied the right network.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "completed = induced_completed(planned, completed_pairs)\n", + "print(\"completed connected:\", completed.is_connected())\n", + "print(\"missing ligands:\", sorted(l.name for l in missing_ligands(planned, completed)))\n", + "\n", + "fragments = fragments_to_repair(planned, completed)\n", + "for i, frag in enumerate(fragments):\n", + " print(f\"fragment {i}: {sorted(n.name for n in frag.nodes)}\")" + ] + }, + { + "cell_type": "markdown", + "id": "2cf99324-388d-4ec6-8f97-3809b47544dd", + "metadata": {}, + "source": [ + "You'll see a warning that a few completed edges aren't part of the planned network and are being ignored. That's expected here and nothing to worry about: these tutorial results predate the `industry_benchmarks_network` and were run on a different network over the same TYK2 ligands, so a handful of the edges that completed don't exist in the plan we're repairing against. The guard drops them and carries on with the edges the two do share. If this warning appears in your own runs, it means the results and the planned network don't match (most often the wrong planned network was supplied), so it's worth checking." + ] + }, + { + "cell_type": "markdown", + "id": "b9b19391", + "metadata": {}, + "source": [ + "## 6. Repair — by ligand name\n", + "\n", + "When you know which ligands should bridge the gaps, name the edges explicitly.\n", + "Here we chain one representative ligand from each fragment; in practice you'd\n", + "choose these from the chemistry." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "73cea531", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bridging by name: [('ejm_31', 'jmc_23'), ('jmc_23', 'ejm_45'), ('ejm_45', 'ejm_49'), ('ejm_49', 'ejm_44'), ('ejm_44', 'ejm_54'), ('ejm_54', 'jmc_30'), ('jmc_30', 'ejm_50'), ('ejm_50', 'ejm_55'), ('ejm_55', 'jmc_28')]\n", + "connected: True\n" + ] + } + ], + "source": [ + "def repair_by_names(completed, ligands, mapper, names):\n", + " patch = generate_network_from_names(ligands=ligands, mapper=mapper, names=names)\n", + " return merge_two_networks(completed, patch)\n", + "\n", + "\n", + "reps = [sorted(frag.nodes, key=lambda n: n.name)[0].name for frag in fragments]\n", + "bridge_names = list(zip(reps[:-1], reps[1:]))\n", + "print(\"bridging by name:\", bridge_names)\n", + "\n", + "mapper = KartografAtomMapper()\n", + "\n", + "repaired_network_by_name = repair_by_names(completed, list(planned.nodes), mapper, bridge_names)\n", + "print(\"connected:\", repaired_network_by_name.is_connected())" + ] + }, + { + "cell_type": "markdown", + "id": "287fc9e5", + "metadata": {}, + "source": [ + "## 7. Repair — by lomap score\n", + "\n", + "You can also let the scorer choose the bridges: the concatenator proposes candidate edges\n", + "between fragments, scores them with lomap, and keeps the best. \n", + "`n_connecting_edges` determines how many edges to connect the fragments with." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d06afced", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "connected: True\n", + "edges added: [('ejm_49', 'ejm_44'), ('jmc_23', 'ejm_50'), ('ejm_54', 'ejm_55'), ('jmc_23', 'jmc_28'), ('ejm_49', 'ejm_50'), ('jmc_23', 'jmc_30'), ('ejm_42', 'ejm_54'), ('ejm_45', 'ejm_55'), ('ejm_44', 'jmc_30'), ('jmc_30', 'ejm_55'), ('ejm_31', 'ejm_45'), ('ejm_46', 'ejm_49'), ('jmc_30', 'jmc_28'), ('ejm_49', 'jmc_28'), ('ejm_44', 'ejm_50'), ('ejm_44', 'ejm_54'), ('ejm_54', 'ejm_50'), ('ejm_55', 'jmc_28'), ('ejm_46', 'jmc_30'), ('ejm_45', 'ejm_44'), ('ejm_45', 'jmc_28'), ('ejm_44', 'ejm_55'), ('jmc_27', 'jmc_23'), ('jmc_30', 'ejm_50'), ('ejm_44', 'jmc_28'), ('ejm_49', 'ejm_55'), ('jmc_27', 'jmc_28'), ('jmc_23', 'ejm_45'), ('jmc_23', 'ejm_49'), ('ejm_54', 'jmc_30'), ('ejm_49', 'jmc_30'), ('ejm_50', 'jmc_28'), ('ejm_45', 'ejm_54'), ('jmc_23', 'ejm_44'), ('ejm_42', 'ejm_50'), ('ejm_45', 'jmc_30'), ('jmc_23', 'ejm_54'), ('ejm_50', 'ejm_55'), ('ejm_49', 'ejm_54'), ('ejm_42', 'ejm_55'), ('ejm_43', 'ejm_44'), ('ejm_45', 'ejm_49'), ('jmc_23', 'ejm_55'), ('ejm_45', 'ejm_50'), ('ejm_54', 'jmc_28')]\n" + ] + } + ], + "source": [ + "def repair_by_score(fragments, mapper, scorer, n_connecting_edges=1):\n", + " concatenator = MstConcatenator(\n", + " mappers=mapper, scorer=scorer, n_connecting_edges=n_connecting_edges\n", + " )\n", + " return concatenator.concatenate_networks(ligand_networks=fragments)\n", + "\n", + "\n", + "def repair_edges(repaired, completed):\n", + " \"\"\"The newly added bridges, i.e. what still needs simulating.\"\"\"\n", + " return list(set(repaired.edges) - set(completed.edges))\n", + "\n", + "mapper = KartografAtomMapper()\n", + "scorer = lomap_scorers.default_lomap_score\n", + "\n", + "repaired_network_by_score = repair_by_score(fragments, mapper, scorer, n_connecting_edges=1)\n", + "print(\"connected:\", repaired_network_by_score.is_connected())\n", + "\n", + "new_edges = repair_edges(repaired_network_by_score, completed)\n", + "print(\"edges added:\", [(e.componentA.name, e.componentB.name) for e in new_edges])" + ] + }, + { + "cell_type": "markdown", + "id": "7c2fa5f7", + "metadata": {}, + "source": [ + "## 8. Rebuild the alchemical transformations\n", + "\n", + "Turn the new repair edges into runnable transformations — a solvent and a\n", + "complex leg each — and write them out. Protein, solvent and cofactors come from\n", + "the reference complex system, and the **protocol (with all its settings) is the\n", + "one recovered from the results**, so the repair edges match the original run.\n", + "\n", + "The only exception is a charge-changing edge: the completed run may contain no\n", + "charge-changing example to copy, so we take the recovered settings and add the\n", + "explicit charge correction on top." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "fbdc9724", + "metadata": {}, + "outputs": [], + "source": [ + "import copy\n", + "\n", + "\n", + "def _formal_charge_difference(mapping):\n", + " a = Chem.rdmolops.GetFormalCharge(mapping.componentA.to_rdkit())\n", + " b = Chem.rdmolops.GetFormalCharge(mapping.componentB.to_rdkit())\n", + " return a - b\n", + "\n", + "\n", + "def _protocol_for(mapping, reference_protocol):\n", + " \"\"\"Reuse the campaign's protocol; add charge correction for charge changes.\"\"\"\n", + " if abs(_formal_charge_difference(mapping)) < 1e-3:\n", + " return reference_protocol\n", + " from openff.units import unit\n", + " settings = copy.deepcopy(reference_protocol.settings)\n", + " settings.alchemical_settings.explicit_charge_correction = True\n", + " settings.simulation_settings.production_length = 20 * unit.nanosecond\n", + " settings.simulation_settings.n_replicas = 22\n", + " settings.lambda_settings.lambda_windows = 22\n", + " return RelativeHybridTopologyProtocol(settings=settings)\n", + "\n", + "\n", + "def _components_from_reference(reference_complex_system):\n", + " protein = next(c for c in reference_complex_system.components.values()\n", + " if isinstance(c, ProteinComponent))\n", + " solvent = next((c for c in reference_complex_system.components.values()\n", + " if isinstance(c, SolventComponent)), SolventComponent())\n", + " cofactors = {name: comp\n", + " for name, comp in reference_complex_system.components.items()\n", + " if name.startswith(\"cofactor\")}\n", + " return protein, solvent, cofactors\n", + "\n", + "\n", + "def build_alchemical_network(repair_network, reference_complex_system, reference_protocol):\n", + " protein, solvent, cofactors = _components_from_reference(reference_complex_system)\n", + " transformations = []\n", + " for mapping in repair_network.edges:\n", + " protocol = _protocol_for(mapping, reference_protocol)\n", + " if protocol is not reference_protocol:\n", + " warnings.warn(\n", + " f\"charge-changing edge {mapping.componentA.name} -> \"\n", + " f\"{mapping.componentB.name}; added explicit charge correction\"\n", + " )\n", + " for leg in (\"solvent\", \"complex\"):\n", + " sysA = {\"ligand\": mapping.componentA, \"solvent\": solvent}\n", + " sysB = {\"ligand\": mapping.componentB, \"solvent\": solvent}\n", + " if leg == \"complex\":\n", + " sysA[\"protein\"] = sysB[\"protein\"] = protein\n", + " sysA.update(cofactors)\n", + " sysB.update(cofactors)\n", + " transformations.append(Transformation(\n", + " stateA=ChemicalSystem(sysA),\n", + " stateB=ChemicalSystem(sysB),\n", + " mapping=mapping,\n", + " protocol=protocol,\n", + " name=f\"{leg}_{mapping.componentA.name}_{mapping.componentB.name}\",\n", + " ))\n", + " return AlchemicalNetwork(transformations)\n", + "\n", + "\n", + "def dump_transformations(network, out_dir):\n", + " out_dir = pathlib.Path(out_dir)\n", + " (out_dir / \"transformations\").mkdir(parents=True, exist_ok=True)\n", + " with open(out_dir / \"alchemical_network.json\", \"w\") as f:\n", + " json.dump(network.to_dict(), f, cls=JSON_HANDLER.encoder)\n", + " for transform in network.edges:\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "42ac44ab", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", + "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", + " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n" + ] + } + ], + "source": [ + "# use the repair produced by the score-based strategy\n", + "repair_network = LigandNetwork(edges=new_edges)\n", + "\n", + "alchemical_network = build_alchemical_network(\n", + " repair_network, reference_complex_system, reference_protocol\n", + ")\n", + "dump_transformations(alchemical_network, \"repair_transformations\")\n", + "print(\"wrote\", len(alchemical_network.edges), \"transformations\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "478b5cf2-e8f1-4694-9908-43f35389b80e", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.13.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 853eee3b8b585e1eadf637d8488d5af8c365c113 Mon Sep 17 00:00:00 2001 From: hannahbaumann Date: Tue, 18 Aug 2026 10:18:21 +0200 Subject: [PATCH 2/8] Small update --- cookbook/repairing_broken_networks.ipynb | 139 ++--------------------- 1 file changed, 7 insertions(+), 132 deletions(-) diff --git a/cookbook/repairing_broken_networks.ipynb b/cookbook/repairing_broken_networks.ipynb index 0cb0a03..6682583 100644 --- a/cookbook/repairing_broken_networks.ipynb +++ b/cookbook/repairing_broken_networks.ipynb @@ -500,7 +500,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "id": "fbdc9724", "metadata": {}, "outputs": [], @@ -565,143 +565,26 @@ " return AlchemicalNetwork(transformations)\n", "\n", "\n", - "def dump_transformations(network, out_dir):\n", + "def save_transformations(network, out_dir):\n", " out_dir = pathlib.Path(out_dir)\n", " (out_dir / \"transformations\").mkdir(parents=True, exist_ok=True)\n", " with open(out_dir / \"alchemical_network.json\", \"w\") as f:\n", " json.dump(network.to_dict(), f, cls=JSON_HANDLER.encoder)\n", " for transform in network.edges:\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")" + " transform.to_json(out_dir / \"transformations\" / f\"{transform.name}.json\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "id": "42ac44ab", "metadata": {}, "outputs": [ { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n", - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/1175382448.py:67: DeprecationWarning: `.dump()` is deprecated as of gufe v1.3.0; Use `.to_json()` instead.\n", - " transform.dump(out_dir / \"transformations\" / f\"{transform.name}.json\")\n" + "wrote 90 transformations\n" ] } ], @@ -712,17 +595,9 @@ "alchemical_network = build_alchemical_network(\n", " repair_network, reference_complex_system, reference_protocol\n", ")\n", - "dump_transformations(alchemical_network, \"repair_transformations\")\n", + "save_transformations(alchemical_network, \"repair_transformations\")\n", "print(\"wrote\", len(alchemical_network.edges), \"transformations\")" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "478b5cf2-e8f1-4694-9908-43f35389b80e", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 7c287f24b9bc5afe7f287de23ae52f71291a3b2c Mon Sep 17 00:00:00 2001 From: hannahbaumann Date: Wed, 19 Aug 2026 10:33:27 +0200 Subject: [PATCH 3/8] Address review comments --- cookbook/repairing_broken_networks.ipynb | 353 +++++++++++++---------- 1 file changed, 195 insertions(+), 158 deletions(-) diff --git a/cookbook/repairing_broken_networks.ipynb b/cookbook/repairing_broken_networks.ipynb index 6682583..43d07d5 100644 --- a/cookbook/repairing_broken_networks.ipynb +++ b/cookbook/repairing_broken_networks.ipynb @@ -34,34 +34,6 @@ { "cell_type": "code", "execution_count": 1, - "id": "2908ac2f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "('industry_benchmarks_network.json', )" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import urllib.request\n", - "\n", - "NETWORK_URL = (\n", - " \"https://raw.githubusercontent.com/OpenFreeEnergy/openfe-benchmarks/main/\"\n", - " \"openfe_benchmarks/data/benchmark_systems/jacs_set/tyk2/\"\n", - " \"industry_benchmarks_network.json\"\n", - ")\n", - "urllib.request.urlretrieve(NETWORK_URL, \"industry_benchmarks_network.json\")" - ] - }, - { - "cell_type": "code", - "execution_count": 2, "id": "b5d4a134", "metadata": {}, "outputs": [ @@ -92,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "8d681408", "metadata": {}, "outputs": [], @@ -129,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "8a702d3c", "metadata": {}, "outputs": [ @@ -137,16 +109,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "connected: True\n", - "ligands: 16 edges: 22\n" + "planned connected: True edges: 9\n" ] } ], "source": [ - "planned = LigandNetwork.from_json(\"industry_benchmarks_network.json\")\n", + "planned = LigandNetwork.from_json(\"ligand_network.json\")\n", "\n", - "print(\"connected:\", planned.is_connected())\n", - "print(\"ligands:\", len(planned.nodes), \" edges:\", len(planned.edges))" + "print(\"planned connected:\", planned.is_connected(), \" edges:\", len(planned.edges))" ] }, { @@ -154,29 +124,28 @@ "id": "bdf56bda", "metadata": {}, "source": [ - "## 4. Parse the results\n", + "## 4. Reconstruct the completed network from the results\n", "\n", - "We read every result JSON, keep only the transformations that succeeded, and\n", - "record which ligand pairs finished. An edge counts as **completed** only if it\n", - "succeeded in *both* the solvent and complex legs.\n", + "In a real campaign a failed transformation simply has no results. We simulate two\n", + "failures by dropping their result files before parsing:\n", "\n", - "Ligand names needed to be adapted in this protocol (a leading `lig_` is stripped) so the tutorial\n", - "results line up with the `ejm_*`/`jmc_*` naming in the planned network. We also\n", - "store one complex `ChemicalSystem` as a reference for the protein, solvent and\n", - "cofactors, as well as a settings object for when we rebuild transformations later." + "- `ejm_31 -- ejm_46` disconnects the network into two fragments (5 and 4 ligands);\n", + "- `ejm_31 -- ejm_48` was `ejm_48`'s *only* transformation, so `ejm_48` disappears\n", + " from the results entirely.\n", + "\n", + "We then read every remaining result JSON, keep the transformations that succeeded\n", + "in both legs, and rebuild the network from their ligand mappings. We also recover a reference complex system\n", + "(for the protein, solvent and cofactors) and the run's protocol (for its\n", + "settings), both used when we rebuild transformations later." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "id": "d0f1f442", "metadata": {}, "outputs": [], "source": [ - "def _normalise(name: str) -> str:\n", - " return name[4:] if name.startswith(\"lig_\") else name\n", - "\n", - "\n", "def _load_result_json(path):\n", " \"\"\"Load a result JSON, or None if it isn't a usable result.\"\"\"\n", " ru = json.load(open(path, \"rb\"), cls=JSON_HANDLER.decoder)\n", @@ -190,62 +159,62 @@ " return None # every repeat failed\n", " return ru\n", "\n", + "def _units(ru):\n", + " data = ru[\"protocol_result\"][\"data\"]\n", + " return data[next(iter(data))]\n", + "\n", "\n", "def _extract_edge(ru):\n", - " \"\"\"Return (pair, phase, stateA, settings) for a result, or None if inputs are stripped.\"\"\"\n", - " data = ru[\"protocol_result\"][\"data\"]\n", - " units = data[next(iter(data))]\n", + " \"\"\"Return (mapping, phase, stateA) for a result, or None if inputs are stripped.\"\"\"\n", + " units = _units(ru)\n", " if not units or \"stateA\" not in units[0][\"inputs\"]:\n", " return None\n", " inputs = units[0][\"inputs\"]\n", " stateA = ChemicalSystem.from_dict(inputs[\"stateA\"])\n", " mapping = LigandAtomMapping.from_dict(inputs[\"ligandmapping\"])\n", - " pair = frozenset({_normalise(mapping.componentA.name),\n", - " _normalise(mapping.componentB.name)})\n", - " is_complex = any(isinstance(c, ProteinComponent)\n", - " for c in stateA.components.values())\n", - " return pair, (\"complex\" if is_complex else \"solvent\"), stateA, inputs.get(\"settings\")\n", - "\n", + " is_complex = any(isinstance(c, ProteinComponent) for c in stateA.components.values())\n", + " return mapping, (\"complex\" if is_complex else \"solvent\"), stateA\n", "\n", "def parse_results(result_files, require_both_legs=True):\n", - " \"\"\"Completed pairs, a reference complex system, and the settings.\"\"\"\n", + " \"\"\"Reconstruct the completed network directly from the results.\"\"\"\n", " phases = {}\n", + " mapping_by_pair = {}\n", " reference_complex_system = None\n", " reference_protocol = None\n", " for path in result_files:\n", " ru = _load_result_json(path)\n", " if ru is None:\n", " continue\n", + " if reference_protocol is None:\n", + " settings = _units(ru)[0][\"inputs\"].get(\"settings\")\n", + " reference_protocol = RelativeHybridTopologyProtocol(settings=settings)\n", " parsed = _extract_edge(ru)\n", " if parsed is None:\n", " continue\n", - " pair, phase, stateA, settings = parsed\n", - " if pair not in phases:\n", - " phases[pair] = set()\n", - " phases[pair].add(phase)\n", + " mapping, phase, stateA = parsed\n", + " pair = frozenset({mapping.componentA, mapping.componentB})\n", + " phases.setdefault(pair, set()).add(phase)\n", + " mapping_by_pair[pair] = mapping\n", " if phase == \"complex\" and reference_complex_system is None:\n", " reference_complex_system = stateA\n", - " if settings is not None:\n", - " reference_protocol = RelativeHybridTopologyProtocol(settings=settings)\n", - "\n", - " completed_pairs = set()\n", - " for pair, seen in phases.items():\n", - " if not require_both_legs or seen == {\"complex\", \"solvent\"}:\n", - " completed_pairs.add(pair)\n", - " return completed_pairs, reference_complex_system, reference_protocol" + "\n", + " edges = [mapping_by_pair[pair] for pair, seen in phases.items()\n", + " if not require_both_legs or seen == {\"complex\", \"solvent\"}]\n", + " return LigandNetwork(edges=edges), reference_complex_system, reference_protocol" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "5119281e", + "execution_count": 5, + "id": "be375fe0-99b4-49c9-830a-6bdcd77a6b75", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "found 54 result files\n" + "found 54 result files\n", + "kept 42 after simulating failures\n" ] }, { @@ -260,7 +229,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "completed edges: 9\n", + "completed edges: 7 ligands: 9\n", + "connected: False (broken, as intended)\n", "recovered protocol: True\n" ] } @@ -268,59 +238,63 @@ "source": [ "RESULTS_DIR = pathlib.Path(\"results\")\n", "\n", - "result_files = sorted(RESULTS_DIR.glob(\"*/*.json\"))\n", + "result_files = sorted(\n", + " p for p in RESULTS_DIR.rglob(\"*.json\")\n", + " if not any(part.startswith(\"shared_\") for part in p.parts)\n", + ")\n", "print(f\"found {len(result_files)} result files\")\n", "\n", - "completed_pairs, reference_complex_system, reference_protocol = parse_results(result_files)\n", - "print(\"completed edges:\", len(completed_pairs))\n", + "# Simulate two failed transformations: drop their result files (both legs) before\n", + "# parsing. Matching on ligand name in the path is robust to the filename format.\n", + "DROP_EDGES = [(\"ejm_31\", \"ejm_46\"), (\"ejm_31\", \"ejm_48\")]\n", + "result_files = [\n", + " p for p in result_files\n", + " if not any(a in p.name and b in p.name for a, b in DROP_EDGES)\n", + "]\n", + "print(f\"kept {len(result_files)} after simulating failures\")\n", + "\n", + "completed, reference_complex_system, reference_protocol = parse_results(result_files)\n", + "print(\"completed edges:\", len(completed.edges), \" ligands:\", len(completed.nodes))\n", + "print(\"connected:\", completed.is_connected(), \"(broken, as intended)\")\n", "print(\"recovered protocol:\", reference_protocol is not None)" ] }, { "cell_type": "markdown", - "id": "c17795f7", + "id": "6ad134e2-8617-46d0-8be2-e9457279cc75", "metadata": {}, "source": [ - "## 5. Reconstruct the completed network and find the breaks\n", + "## 5. Inspect the damage\n", + "\n", + "The two failures show up in different ways. A missing **edge** between ligands\n", + "that survive elsewhere leaves the reconstructed network *disconnected*.\n", + "`decompose` finds it with no reference needed. A missing **ligand**, whose every\n", + "transformation failed, leaves no trace in the results at all; the only way to\n", + "know it should be there is to compare against the planed network.\n", "\n", - "We take the completed pairs and pull the matching edges out of the planned\n", - "network — so every ligand keeps the planned network's components. The result is\n", - "the network as it actually stands after the campaign, which is where we see the\n", - "damage." + "Here `ejm_48` is the missing ligand. We recover it from the planned network and\n", + "fold it in as its own fragment, so the repair reconnects it too." ] }, { "cell_type": "code", - "execution_count": 8, - "id": "5d8ea778", + "execution_count": 6, + "id": "72cdee1f-c103-4467-a73a-297d96a076e0", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "missing ligands: ['lig_ejm_48']\n", + "fragment 0: ['lig_ejm_46', 'lig_jmc_23', 'lig_jmc_27', 'lig_jmc_28']\n", + "fragment 1: ['lig_ejm_31', 'lig_ejm_42', 'lig_ejm_43', 'lig_ejm_47', 'lig_ejm_50']\n", + "fragment 2: ['lig_ejm_48']\n" + ] + } + ], "source": [ - "def induced_completed(planned, completed_pairs):\n", - " \"\"\"The completed network as the subnetwork of `planned` that finished.\"\"\"\n", - " planned_pairs = {\n", - " frozenset({_normalise(e.componentA.name), _normalise(e.componentB.name)}): e\n", - " for e in planned.edges\n", - " }\n", - " edges = [planned_pairs[p] for p in completed_pairs if p in planned_pairs]\n", - "\n", - " unmatched = completed_pairs - set(planned_pairs)\n", - " if unmatched:\n", - " pairs = \", \".join(\" -- \".join(sorted(p)) for p in unmatched)\n", - " warnings.warn(\n", - " f\"{len(unmatched)} completed edge(s) are not in the planned network \"\n", - " f\"and will be ignored: {pairs}. This usually means the results and the \"\n", - " f\"planned network don't match. Check you supplied the right network.\"\n", - " )\n", - " return LigandNetwork(edges=edges)\n", - "\n", - "\n", - "def missing_ligands(planned, completed):\n", - " return set(planned.nodes) - set(completed.nodes)\n", - "\n", - "\n", "def decompose_network(network):\n", - " \"\"\"Split a network into connected pieces.\"\"\"\n", " g = network.graph.to_undirected()\n", " pieces = []\n", " for comp in nx.connected_components(g):\n", @@ -330,63 +304,76 @@ " return pieces\n", "\n", "\n", - "def fragments_to_repair(planned, completed):\n", - " \"\"\"Connected pieces of `completed`, plus one singleton per missing ligand.\"\"\"\n", - " frags = decompose_network(completed)\n", - " for lig in missing_ligands(planned, completed):\n", - " frags.append(LigandNetwork(nodes=[lig], edges=[]))\n", - " return frags" + "def missing_ligands(planned, completed):\n", + " \"\"\"Ligands in the plan with no results at all.\"\"\"\n", + " have = {n.name for n in completed.nodes}\n", + " return [n for n in planned.nodes if n.name not in have]\n", + "\n", + "\n", + "fragments = decompose_network(completed)\n", + "missing = missing_ligands(planned, completed)\n", + "print(\"missing ligands:\", [n.name for n in missing])\n", + "\n", + "# fold each missing ligand in as a singleton fragment so the repair reconnects it\n", + "fragments += [LigandNetwork(nodes=[lig], edges=[]) for lig in missing]\n", + "for i, frag in enumerate(fragments):\n", + " print(f\"fragment {i}: {sorted(n.name for n in frag.nodes)}\")" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "a8dcd736", + "execution_count": 7, + "id": "e9eea99a-4bb2-44ef-955c-8225b3608177", "metadata": {}, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "completed connected: True\n", - "missing ligands: ['ejm_44', 'ejm_45', 'ejm_49', 'ejm_50', 'ejm_54', 'ejm_55', 'jmc_23', 'jmc_28', 'jmc_30']\n", - "fragment 0: ['ejm_31', 'ejm_42', 'ejm_43', 'ejm_46', 'ejm_47', 'ejm_48', 'jmc_27']\n", - "fragment 1: ['jmc_23']\n", - "fragment 2: ['ejm_45']\n", - "fragment 3: ['ejm_49']\n", - "fragment 4: ['ejm_44']\n", - "fragment 5: ['ejm_54']\n", - "fragment 6: ['jmc_30']\n", - "fragment 7: ['ejm_50']\n", - "fragment 8: ['ejm_55']\n", - "fragment 9: ['jmc_28']\n" - ] + "data": { + "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", + "text/plain": [ + "
" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/56/3yvgkyg96rvchgjgzfbf16gc0000gn/T/ipykernel_13875/459931657.py:12: UserWarning: 3 completed edge(s) are not in the planned network and will be ignored: ejm_31 -- ejm_50, ejm_46 -- jmc_28, ejm_46 -- jmc_23. This usually means the results and the planned network don't match. Check you supplied the right network.\n", - " warnings.warn(\n" - ] + "data": { + "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMVIYmgFYgFq1e1hqtvv/1W2bNnd8O+O3bsyLELIgStwL9ZY5Y1jNoZoZIlS+rgwYOugct23ZowYYLLxAKhgqAVuILPP/9cvXv3djVjVhpgXbk1a9bkuAUZalqBmGe82kis9evXu0DVNjzZtWuXG51lTaQW0DLjFaGAoBW4Atv72zIVViM2ffp05cmTh2MWhKhpBS7PJgvYZgQ249VKBLJkyeIat2zTApt8YiP7gGBG0AogLFAeAMROmjRp3DawNuN1wIABbsbr6tWr3Qg/a96yMiggGBG0AggLBK1A3FxzzTV6/vnn3SzXBx54wGVirRyqQoUKbmyWzX4FgglBK4CwQNAKxE+uXLk0evRobdy4Ue3bt3e3TZs2zTVu2YYFe/fu5dAiKBC0AgirmlY2FwDix2a52k5/Vh5wyy23uMkCr7/+upv9ahuqMOMVgUbQCiAskGkFEsf111+vTz75xDVmVatWzc14tQ1VbMbr0KFD9ffff3OoERAErQhrdepIffp41wsVkkaM8N9rDxxo//j77/UiHUErkLhuvPFGrVixQrNnz1apUqXcjNd+/frp2muv1ZtvvsmMV/gdQSsixpo1Urdu/nu9Rx6RFixI2tewQPyqq6JfHn88+n127JBuvVW6+mopWzbpwQftVLrCDkErkDQzXps3b+5mvE6cOPHcjNeuXbuqbNmybodAZrzCXwhaETGyZ5fSpfPf66VPL2XNmvSv89xzkvVJ+C4DBpz/2ZkzUpMm0rFj0rJl1lwhffCB1Levwg6bCwBJJ3ny5OrUqZOb8Tps2DBlzZrVNW61atXKlRDYdrFAUiNoRcS4uDxg40apVi2bWSiVKiXNn+9lKmfPjt3z7d4ttW0rZc7sBafNm0vbtsVcHtCpk9SihTR4sJQzp5Qpk/Tss5Ltotivn5Qli5QvnzRhQtzeV4YM1v17/mLBss+8edKGDdJbb9le5FK9etIrr0jjxkl//aWwwuYCgH9mvD700ENuxutTTz2lq6++2m1zfdNNN7mNWGwTFiCpELQiIp096wWQlnldvVoaO1bq3z/2jz9+XKpb1wsQlyzxsph2vVGjy596X7hQ2rPHe8ywYV5g27SpF/jaOrp39y47d8Z+LS+/7AXNFiAPGhT99VeulMqUkS7cxKthQ8tKSmvXKqxQHgD4T8aMGfXcc8+5Ga89e/ZUypQpNW/ePFWsWFF33HGHfv75Z34dSHQErYhIloHcskWaMkUqX97LuFrAF1t2mj1ZMmn8eKlsWalkSWniRK9+9HI7IVo2deRI6brrpM6dva8WAD/5pFS8uPTEEzaySVq+PHbr6N3bW4udmevZ08sk9+hx/uf79nlZ3QtZgGyvYT8LJwStgP/lzJlTo0aNcqUCHTp0cDWw7733nmvcuv/++5nxikRF0IqItGmTlD+/dzrdp0qV2D/espS2WYydmrcMq10sID1xwguGY1K6tBfs+lhAaUGvT/LkXtb0t99it46HHrIOX6lcOalrV+mNN6Q335QOHDh/Hyt5uFhU1KVvD2XUtAKBY+Ow3nrrLTfjtXHjxm6ywBtvvOFmvz755JP6888/+fUgwQhaEZESGrRZeUHFitK6ddEvmzdL/7+hzCWlTBn9e1vDpW6z54+PatW8r77dFy0ovzijeuiQdOrUvzOwoY6aViDwypcvr48//lhffvmlatSo4Wa6vvjiiy6oHTJkCDNekSAErYhIJUp4p/L3748+Eiu2KlSQrGQrRw6pWLHol2uuUcB8+633NXdu72v16tIPP3hTBS4sjUid2gu6wwnlAUDw+M9//qNly5Zpzpw5Kl26tA4dOqTHHntMxYsX1/jx45nxinghaEVEql/ftiyUOnaU1q/3akh9jVixycB26ODNPLWJAUuXSlu3Sl9+6dWY7tolv7Amq+HDvQyvvf706dJ990nNmkkFCnj3adDAm4xw111eQGtzY21+7L33WiOFwgpBKxBcrL61WbNm+u677zRp0iQVKFBAu3fv1r333qsyZcpoxowZzHhFnBC0IiJZ7aiNtjp6VKpc2asH9c03tRFYV2JTB2wCgAWHLVt6jVjWWGW7G/orGLRs6Xvvebt+WWD69NNeMPruu9Hf58cfe++pZk2pTRtvasLQoQo7BK1A8M547dixo5vxOmLECGXLlk2bNm3S7bffripVqmhBUu/CgrBxVRRbWQCOZVttioDVg1oWNqFsEoBlYW0cFpLeNddco7/++sv9x2inIAEEJ/t7ahsUvPLKKzpqmQN39qu+q321kVlATMi0ImLNmiV98YW3IYBtLGBbvFo2MqEBqzV52QQBSx7YtAD4B5lWIHRmvA4cONDNeH3wwQfdjNcvvvhClSpVUtu2bd0HT+BSCFoRsY4c8WaaWlOW7VZlZQJz5ng/s12rfKOsLr7ccsvln/fwYe90vc1Ctfmr8ZWQNUQaO2FE0AqElhw5cujVV191pQJ33XWXq4GdPn26m/F63333aY/txAJcgPIA4BIOHvQul5I2rZQ3b2SsIZTGXaW2Il830uuQMtkeuQBCyvr169W/f3999NFH7vu0adO6TKxNHchsu6Ig4hG0Agh5VheXwXZ6kHTs2DGls045ACHJRmU9/vjjWv7/WwPah1D7vlevXvzdjnCUBwAIeb7SAOPLuAIITbVq1dLSpUv14YcfutFYtpuWBa3WYDl27Fidst1REJEIWgGETdBqo3XsAiC0WX3rrbfeqnXr1mnKlCkqWLCgq3G1WlcLZN9//31mvEYgglYAIY8mLCA82YdQa9KyZi1r2sqePbubLtCmTRtVrlxZ8230CyIGQSuAsAlaU9nIBgBhx8p+rCnLxmTZuKz06dNr7dq1br6rXb7++utALxF+QNAKICymBxjqWYHwZg2XzzzzjAtee/fu7T6oWrbVsq62w5ZlZBG+CFoBhDzKA4DIm/FqW8JakHr33Xe7GtgZM2aodOnS6tatm3bv3h3oJSIJELQCCHkErUBkKlSokCZPnuxmvFrj1pkzZzRu3DgVK1bMzXc9GNOwa4QkglYAIY+gFYhsNlHARmTZjFcbmXXixAkNGTJERYsW1UsvvaTjx48HeolIBAStAMKmppVGLCCy1axZU0uWLHG7apUtW9bNeH3iiSdc5nXMmDHMeA1xBK0AQh6ZVgA+Vt/apEkTffvtt5o6daorIdi7d6+6d+/ual6nT5+us2fPcsBCEEErgJBH0ArgUjNe77zzTm3cuFEjR450M15//vlntW3b1k0bmDdvHhsUhBiCVgAhj6AVQExsFF6vXr3cmKxnn33Wjc365ptv1LBhQ9WrV09r1qzh4IUIglYAIY+aVgBXYsHq008/7YLXPn36uBr4hQsXqkqVKmrdurXLyCK4EbQCCHlkWgHElpUJDB8+3G0H26lTJyVLlkwffPCBq3e99957tWvXLg5mkCJoBRDyCFoBxFXBggU1ceJEN+O1efPmrjlr/PjxKl68uB599FFmvAYhglYAIY+gFUB8WYZ19uzZWr58uWrXru1mvP73v/9VkSJF9OKLL+rYsWMJPrh16kh9+njXCxWSRozw3+9r4EDp+usVFghaAYRN0MqcVgDxVaNGDX355Zf6+OOPVa5cOR0+fFhPPvmkm/H6+uuvJ9qMV+v76tbNf7+nRx6RFizwz2vZP8UWIF91lbRu3fnbDxyQGjWS8uSxxjgpf36pZ0/pr7/i9vwErQDCphHLuoQBICEzXhs3buxmvL711lsqXLiw9u3bpx49eqhkyZKaNm1agme8Zs8upUvnv99R+vRS1qz+ea1HH/UC04slSyY1by59+KG0ebM0aZI0f77UvXvcnp+gFUDIozwAQGKy5qwOHTq4iQKjRo1Sjhw53NSBdu3aqVKlSvr888/jPeP14vIAG1pQq5aUJo1UqpQXzFmmcvbs2D3f7t1S27ZS5sxecGrB4bZtMZcHdOoktWghDR4s5cwpZcokPfusdPq01K+flCWLlC+fNGFC3N7Xp59K8+ZJQ4f++2e2tvvvlypVslpi6eabpR49pKVL4/YaBK0AQh5BK4CkYCVHPXv2dAHrc88958ZmWRa2UaNGuummm7R69eoEPb8lbS2AtMyrPdXYsVL//rF//PHjUt26XjZ1yRJp2TLvup2K//8TUJe0cKG0Z4/3mGHDvMC2aVMvuLR1WAbULjt3xm4d+/dL994rTZ0auyyyvfbMmdKNNypOCFoBhDyCVgBJKX369Hrqqaf066+/6uGHH3bB7OLFi1WtWjW1bNlSW7dujdfzWmZyyxZpyhSpfHkv4zpoUOwfP22ad+p9/HipbFmpZElp4kRpxw5p8eKYH2fZ1JEjpeuukzp39r5aAPzkk1Lx4tITT1jALi1ffuU1WMLZsrcW5Fom9XLatfOC2rx5pYwZvXXHBUErgJDH5gIA/CFbtmx65ZVX3Haw99xzjysjmDVrlm6//fZ4Pd+mTV5TUq5c52+rUiX2j1+7VvrlF9s4wcuw2sUC0hMnvGA4JqVLe8Guj5UJWNDrkzy5V2rw229XXsOoUV5DlQW6VzJ8uPTNN17pg63v4YcVJynidncACD5kWgH4U4ECBTRhwgT17dtXAwYM0Pbt2+P1PJaltPrVhJQXVKwovf32pRu+YpIyZfTvbQ2Xui02PWdWarBqlTcV4EKWde3QQZo8+fxtFpzbpUQJLyiuXVt66ikpd27FCkErgJBH0AogUDNeLdNqGxTEhwVvdirfakIt2+kbiRVbFSpI770n5cjhnW4PBCszeOGF6PWqDRt666paNebH+frY/n9iYawQtAIIeQStAALJ5rrGR/36UtGiUseO0pAh0pEj5xuxYpOB7dBB+u9/vYkBzz3ndf1bEGxNTjYJwL5PagUKRP/eShSMvS/f63/yiReYV67s/XzDBm88Vs2a3jSF2KKmFUDIo6YVQCiy2lGr7zx61AvounaVBgzwfmYjsK4kXTpvAoAFji1beo1Y1lj199+By7xeStq00rhxXqOZrdF2B7NpBR99FLfnIdMKIOSRaQUQzC7s5L9whqqvRMBGVfn4OvaLFYvdc+fKFb1u9GJ2+t2X/TQ22P9y64tpnbFlmdOLR9jaWK4VK5RgBK0AQh5BK4BQNWuWF1TaqCmbBNC7t3fa3E6vJ0RUlPTrr94WrjfcoLBAeQCAkEfQCiBUWR2r7Q5lGVebd2plAnPmeD+zXat8o6zSX3S55ZbLP+/hw94OWzZv1eavxldC1pDYroqK7z5kABAkSpQooU2bNrlh3zfGdYsVAAhSBw96l5jqRPPmjYw1+FAeACBsGrFSXzwoEABCmG0UYJdIX4MP5QEAQh7lAQAQ/ghaAYQ8glYACH8ErQBCHkErAIQ/aloBhLxSpUrp1KlTuvrqqwO9FABAEmF6AAAAAIIe5QEAAAAIegStAAAACHoErQAAAAh6BK0AAAAIegStAAAACHoErQDCRp06Up8+3vVChaQRI/z32gMHStdf77/XA4BIQ9AKICytWSN16+a/13vkEWnBAv+81smTXoB81VXSunXnb580ybvtUpfffvPP2gAgqbC5AICwlD27f18vfXrv4g+PPirlySN9913029u2lRo1in5bp07SiRNSjhz+WRsAJBUyrQDC0sXlARs3SrVqSWnS2A5a0vz5XgZy9uzYPd/u3V5QmDmzlDWr1Ly5tG1bzOUBFiy2aCENHizlzCllyiQ9+6x0+rTUr5+UJYuUL580YULc3tenn0rz5klDh/77Z2nTSrlynb8kTy4tXCh16RK31wCAYETQCiDsnT3rBZDp0kmrV0tjx0r9+8f+8cePS3XrepnUJUukZcu865bV/OefmB9nAeOePd5jhg3zAtumTb3A19bRvbt32bkzduvYv1+6915p6lTvvVzJlCne/Vq3jv17BYBgRdAKIOxZZnLLFi+IK1/ey7gOGhT7x0+bJiVLJo0fL5UtK5UsKU2cKO3YIS1eHPPjLJs6cqR03XVS587eVwuAn3xSKl5ceuIJKVUqafnyK68hKsrL3lqQW6lS7NZtWdz27b0MLACEOmpaAYS9TZuk/Pm9U+Y+VarE/vFr10q//CJlyBD9dqsVtWA4JqVLe8Guj5UJlClz/ns7fW+lBrFpkho1SvrrLy/QjY2VK6UNG7xAHQDCAUErgLBnWUqrX01IeUHFitLbb8et4Stlyujf2xoudZs9/5VYqcGqVVLq1NFvt6xrhw7S5MnRb7essNXY2roBIBwQtAIIeyVKeKfyrSbUsp2+kVixVaGC9N57Xgd+xowKCCszeOGF899brWzDht66qlaNft+jR6Xp06UXX/T7MgEgyVDTCiDs1a8vFS0qdeworV/v1ZD6GrFik4G1TGa2bN7EgKVLpa1bpS+/lHr3lnbtkl8UKOCVFvgu117r3W7vy6YQXMgCWZtSYOsGgHBB0Aog7FntqI22sgxk5cpS167SgAHez2wE1pVYB75NALDAsWVLrxHLGqv+/jtwmdfLefNNb502pQAAwsVVUVFW7QUAkcWyrTZFwBqsLFuZUNYgZVlYG4cFAEh81LQCiAizZnmzVW3UlAWqdmq/Zs2EB6z2sf/XX70tXG+4IbFWCwC4GOUBACLCkSNSjx5eU5bNO7UygTlzvJ/ZrlW+bVgvvtxyy+Wf9/Bhb4ctm7dq81fjKyFrAIBIQHkAgIh38KDc5VJsMH/evJGxBgAIZgStAAAACHqUBwAAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAQMHu/wCrjNRQrXkNVQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "completed = induced_completed(planned, completed_pairs)\n", - "print(\"completed connected:\", completed.is_connected())\n", - "print(\"missing ligands:\", sorted(l.name for l in missing_ligands(planned, completed)))\n", + "from openfe.utils.atommapping_network_plotting import plot_atommapping_network\n", "\n", - "fragments = fragments_to_repair(planned, completed)\n", - "for i, frag in enumerate(fragments):\n", - " print(f\"fragment {i}: {sorted(n.name for n in frag.nodes)}\")" + "plot_atommapping_network(planned)" ] }, { - "cell_type": "markdown", - "id": "2cf99324-388d-4ec6-8f97-3809b47544dd", + "cell_type": "code", + "execution_count": 8, + "id": "751f8ad5-225a-461c-8951-cf35b9cb822e", "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAq0AAAJmCAYAAAB2c7ncAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQt1JREFUeJzt3XeclOW5//HvsvQmvS0tIh2kgwpGUGmiwuEYCWIEEZDYIEZNFKKowImK3RQRQVoEPQpqfupBQKqAhIBEDSBNmoICUoSluPt7Xc+dZXdhl51tM/fOfN6v1/Pa2dkp9wz+8fV6rvt64pKTk5MFAAAAeKxQpBcAAAAAZIXQCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QCAADAe4RWAAAAeI/QCgBAGHXuLI0c6W7XrSs991zevXZcnDR3bt69HuATQisAABGyerU0bFjevd4330g9eyoiDhyQ7r5bathQKllSql1buuce6dCh1McsWuSCdUaHfRfA+RQ+718BAEC+qVw5b1+vWjVFzJ497pgwQWrSRPr6a2n4cHff//6ve8xll7lgndYf/iDNny+1bRuRZaMAodIKAECEnN0esGGD1KmTVLy4C34W5rJzyj/tY7dvd7+/8YZ0+eVSiRJSu3bSpk2uqmkhsXRpqUcP6bvv0r/O5MlS06ZSsWJS9erSXXdl/d7NmklvvSVdd51Ur5505ZXSuHHSe+9Jp0+7xxQt6oJ1ylGxovTuu9LgwW6twPlQaQUAwANJSVKfPu60+qpV0pEj0m9/m/vXfeQRF4ztdS0c9u8vlS0rPf+8O41/443Sww9Lf/mLe7z9vPde6Y9/dK0Gdnp/+fKcvbc9196rcCZpwwLr999Lgwbl/PMhdhBaAQDwwLx50pYtru8z5TS/VSq7ds3d6953n9S9u7s9YoQLrQsWSB07uvtuu0167bXUx48d68KyPTaFVWiza/9+6fHHpdtvz/wxr77q1larVvZfH7GH0AoAgAc2bnThLW1favv2uX/diy9OvV21qvvZvHn6+/btc7ftp/WgXnVV7t7z8GGpVy/X4mCV3ozs2iX93/+59gUgFPS0AgDggeTk/OnrLFIk9XbK6599n7UmGOt7zS1ra7A+WeuXnTMn/XulNWWK62m9/vrcvydiA6EVAAAPNGok7dgh7d2bel+4x0CVKeM2h1n7QE4rrN26uQ1X1q9qG8oyC+gWWm+5JfNQC5yN9gAAADxgvau2637gQOnJJ13FctQo97dw7qwfM8aNqqpSxW3EsnXYRiybwXo+9jgLrMeOSTNmuABrR8por/j41McuXCht2+b6aYFQEVoBAPCAhTobVzVkiNv4dOGF0lNPuRFSmVUs84OF5sRE6dln3SauSpWkG27I+nlr1ripB+aii9L/zQKqVXDTbsCyma2NG+fx4hHV4pKTrUgPAAB8YxVOm9u6ebOrwp7PiRMu3H70kXT11eFaIRA+VFoBAPCEbVyyDUz167ugamOnbDRVVoHVTsO//bZUqJDrjQWiEaEVAABPWF/oAw9IO3e60/JWMX36afe38ePdkRFrJ/jyS+mJJ6SaNfNnbTNnZj5ztU4d6Ysv8ud9gRS0BwAAUAAcOOCOjNioqoSE/A/UaScbpGUTACy4AvmJ0AoAAADvMacVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvMfIKAIAISkxM1GOPPabt27frZz/7mR5++GEVK1aMfxPgLEwPAAAgwr7++mu1adNG+/fv1y233KLXXntNcXFxkV4W4BXaAwAAiLA6derojTfeUKFChTRt2jS99NJLkV4S4B1CKwAAHrjyyiv11FNPBbd/85vfaPHixZFeEuAV2gMAAPBEcnKybr75Zv3tb39T5cqVtWbNGtWqVSvSywK8QGgFAMAjx44d02WXXabPPvtMbdu21dKlS1W8ePFILwuIONoDAADwSMmSJTVnzhxVqFBB//jHP/TrX/86qMACsY7QCgCAZ2z01ezZs4ONWTZJ4M9//nOklwREHKEVAAAPXX311XriiSeC2yNHjgzaBIBYRk8rAACesraA/v37B1XXKlWqBBuzatasGellARFBaAUAwGM//vhjsDFr/fr1at++vZYsWcIVsxCTaA8AAMBjpUqVCjZmlS9fXp9++qnuvPNONmYhJhFaAQDw3IUXXqhZs2YFG7NeffVVvfzyy5FeEhB2hFYAAAqAbt26afz48cHte+65R8uXL4/0koCwoqcVAIACtDGrX79+evPNN1WtWrVgY1aNGjUivSwgLAitAAAUIEePHtWll16qzz//XJdccokWLVrExizEBNoDAAAoQEqXLq25c+eqXLlyWrlyZdAqAMQCQisAAAVMvXr19PrrrysuLk4TJ04MDiDaEVoBACiAevTooXHjxgW377rrLq1YsSLSSwLyFT2tAAAU4I1Zv/jFL/TWW2+pevXqwcYs+wlEI0IrAAAFfGOWbcj64osvgitnffzxxypatGiklwXkOdoDAAAo4Buz7IpZF1xwgT755BONGDEi0ksC8gWhFQCAAq5+/fqaOXNmsDHrr3/9qyZNmhTpJQF5jtAKAEAU6NWrlx577LHg9p133hmMwwKiCT2tAABEiaSkJN1www1Bu4BdKcs2ZtmVs4BoQGgFACCKHDlyRB06dNC///1vderUSQsWLGBjFqIC7QEAAESRMmXKBJXWsmXLatmyZbr33nsjvSQgTxBaAQCIMg0bNgw2Zpk//elPmjJlSqSXBOQaoRUAgCh07bXX6tFHHw1uDx8+XJ9++mmklwTkCqEVAIAoNXr0aPXu3VsnT55U3759tXfv3kgvKSZ17iyNHOlu160rPfdc3r12XJw0d65iAqEVAIAoVahQIU2bNi1oF9i9e7duvPFGnTp1KtLLimmrV0vDhuXd633zjdSzpyLiwAHp7rutHUUqWVKqXVu65x7p0KH0j9u0SerdW6pUSSpbVurYUfr44+y/H6EVAIAoZhuy5s6dG2zQWrJkiX77299GekkxrXJlF/DySrVqUrFiiog9e9wxYYL0r39Jr70mffihdNtt6R/Xq5d0+rS0cKG0Zo3UsqW1r0jffpu99yO0AgAQ5Ro1aqQZM2YEt1988UVNnTo10kuKWWe3B2zYIHXqJBUvLjVpIs2fn71T/nFpHrt9u/v9jTekyy+XSpSQ2rVzlU6r8LZta5f9lXr0kL77Lv3rTJ4sNW3qAnD16tJdd2X93s2aSW+9JV13nVSvnnTlldK4cdJ777mQar7/Xtq8Wfr976WLL7art0l//KN07Jj0xRfKFkIrAAAx4Prrr9cjjzwS3L799tv1j3/8I9JLinlJSVKfPq7yumqVNHGiNGpU7r+WRx6xfmbpn/+UCheW+veXHnhAev55aelSacsW6eGHUx//l7/YVdRc24JVTN99V7roopy9t7UGWAuAva+pWFFq3FiaNk368UcXZl9+WapaVWrTJnuv/Z+XBAAA0e7hhx8OrpL197//PdiYZcG1SpUqkV5W1LvqKqlOnXPvnzfPBchFi9xpfmOVyq5dc/d+990nde/ubo8Y4ULrggWul9TY6Xs7lZ9i7FjJukbssSmsQptd+/dLjz9u/1OUep9Vfj/6yPW0liljfdYusFobQbly2Xt9Kq0AAMTQxixrE2jQoIF27tzJxqww+cMfpFtucbdbtUq9f+NGqVat1MBq2rfP/ftdfHHqbQuIpnnz9Pft2+du20/rS7VgnRuHD7veVWtx+E9BP5CcLN1xh2T/b2RVXpu8ZgHWelptE1l2EFoBAIghF1xwQbAxq3Tp0lq8eLHuv//+SC8pplhITRvorBKZ14oUSb2d8vpn32etCcb6XnPryBHXJ2v9snPmpH8v23z1979Ls2a5Sm/r1tKf/+zeN7ut1YRWAABiTOPGjYNRWOb555/X9OnTI72kmNSokbRjh5R2fK5tmAqnMmXc5jBrH8hphbVbN6loUdcLaxvK0rINV8baAtKy31OCc6gIrQAAxKD/+q//Ci4+YIYNG6Z/2q4dhJX1rtqu+4EDpfXrpeXLUzdi5UcFNjNjxkhPPy298IL01VduA9eLLyqkCqsFVttg9eqrLsDaGCs7fvrJPebSS6Xy5d1n/OwzN8nAivvbtrl2guwgtAIAEKPGjBmja665RomJiUGI/e7sOUjIV/HxblzV0aNu49OQIW7Xvzm7YpmfLFDaGC47bW9jr6zf1MJrVmzmqk09sIkDNm3ARmWlHDt3usfYBQVs05V9RhuJZWO3li2T3nlHatEie+uMS062jgoAABCLfvjhB7Vr106bN29Wly5dNG/ePBVOmVeEsLNqq81ttdmmVoU9nxMnXLi13flXX62oR6UVAIAYVq5cuWBjVqlSpfTxxx9rlu2YOY/OnaWRIzMelB+O09h2NaVoYhuXLHTahQHswgI2K9U2LGUVWA8fll5/3fWGWm9sLCC0AgAQ45o2bXrmKlnvv/9+yM+zTUMWssLF5o/mdMNQdlkV0wKy9ZauW3fu323OqY2WskqnjawK5QpSmfWF2kgoC56DBrk2ATt1bsaPdzvyMzp695Z+9zvpiSekmjWVL2bOzPz9rY0g3GgPAAAAgVGjRmnbtm3629/+dt5Kq4W5cFZYI8EG7Vtf5wcfSGvXpq/wPvOM27j01FNShw5SYqK0dau7nGleOnDAHRkpUUJKSFC+skCddrJBWjbWKqMLJuQnKq0AACDw2GOP6eK0k+mzcHZ7wIYNrh/Tqo82ZN5Od1ul0jYbhWL3bqlfP7fb3C7/adVEO22eWXuAVSbtMqhWkbSB+XaFpUcfdZcKtR3qFSq4KuTkydn7B7agalermjDh3L8dPOg2S9nEsJtucqfxreqY14HV2Pptg1NGR0I+B9aUcViZvX+4A6shtAIAgEB8fLzuyuF5bpu5aQGyZEm3o3zixNTxTaGweZ5durhTz0uWuB3mdtuG1p88mfnzbHi9XdHJnmMVUAu2tvvdgq+tY/hwd6TsZs+KVRaHDpVsdK19lrNZ/6l9VgvYjRu7UHzjjaG/PnKO0AoAAM6wK2XlhFUmt2xxFUgbZWQV13HjQn++7f+yTUWTJrlLjlognDLFDd9ftOj81UibL9qwoTR4sPtpAfihh6T69aUHH3SD721XflZsnpJVby3k2mimjFgbgIVWq+5alfl//9edwreZq+cL18g9ZloAAIBc27jRXaLUNiWlaN8+9OfbzE8b82SnpNOyflELw5mxU/Npr7ZkbQLNmqWfhWqtBvv2Zb0GG6hvu/It6GbGAuupUy4o22B9Y7v47XN//LHUvXvW74OcIbQCAIBcsyplbq7iZGGwTRu3Y/1slStn/ry017k3toaM7gvlkqHWarBypVSsWPr7reo6YIBkAxZscL6xnt2067Mh+lYVRv4htAIAgFyzkU0W2qwn1KqdKSOxQtW6tTR7tlSlilS2bGT+Qax6OnZs6u/WK2uVU1uXTQkwNkM1pbKcMmrK2gO+/z4ym5NiCT2tAAAg16yn03bS2yVB1693PaQpG7FCqcBaJdOqlTYxYOlSd236xYvd6Kldu8LzD1S7tmstSDkaNHD32+dKCah2n63R1vXJJ9Lnn7vPbKHdNpIh/xBaAQBArlnvqI22smvM24D8IUPcaChjI7CyYjv1bQKABce+fd1GLNtYdfx45CqvmbHNZlZ57dVLuuIK147w4YfntiUgb3FxAQAAkC+s2mpTBGyDVVaXJQ2FbZCyKqyNw0LsoacVAADkiTlz3GxVGzVlQdVOoVsPaG4Dq23yslFTdgnXVq34x4pVtAcAAIA8u+znHXe4/k6bd2ptAu+84/5mc00zu459z57nf91Dh9xufZu3avNXcyo3a0Dk0R4AAADyne2wtyMjJUqE57KkPqwBOUdoBQAAgPdoDwAAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAkM5PP/2ku+++WzfddJNWrFjBtwMvMD0AAACk89FHH6lbt24qV66cvvnmGxUP5TqsQD6j0goAANKZPHly8HPAgAEEVniDSisAADjjwIEDqlGjhk6cOKE1a9aodevWfDvwApVWAABwxuuvvx4E1hYtWqhVq1Z8M/AGoRUAAJwxZcqU4Oett96quLg4vhl4g/YAAAAQ+Oyzz9SyZUsVKVJEe/bsUaVKlfhm4A0qrQAAIF2VtXfv3gRWeIfQCgAAdPLkSc2YMSP4JgYPHsw3Au8QWgEAgN577z3t378/mBxgM1oB3xBaAQDAmdmsAwcOVHx8PN8IvMNGLAAAYtzu3btVu3ZtJSUladOmTapfv36klwScg0orAAAxbtq0aUFgvfzyywms8BahFQCAGJacnHymNcBmswK+oj0AAIAYtmzZsqDCWqpUKX377bcqXbp0pJcEZIhKKwAAMSylytqvXz8CK7xGpRUAgBh15MgRVa9eXT/++GNQce3YsWOklwRkikorAAAx6s033wwCa4MGDXTZZZdFejnAeRFaAQCI8cu22gasuLi4SC8HOC/aAwAAiEE2j7Vhw4YqVKiQdu7cGVwJC/AZlVYAAGK4ytqzZ08CKwoEQisAADHm9OnTmjp1anCb2awoKAitAADEmHnz5umbb75RpUqVdN1110V6OUBICK0AAMTobNabb75ZRYsWjfRygJCwEQsAgBjy3XffKSEhQadOndL69evVvHnzSC8JCAmVVgAAYsjMmTODwNqmTRsCKwoUQisAADEiOTn5TGvA4MGDI70cIFtoDwAAIEasWbNGbdu2VbFixYKNWOXLl4/0koCQUWkFACBGpFRZ+/btS2BFgUOlFQCAGJCYmKjq1avrhx9+CEZede3aNdJLArKFSisAADFg7ty5QWCtXbu2rrzyykgvB8g2QisAADHUGjBo0CDFx8dHejlAttEeAABAlPv666/1s5/9LJgesHXr1uA2UNBQaQUAIMpNnTo1CKxdunQhsKLAIrQCABDFkpKSNGXKlOA2s1lRkNEeAABAFPv444+DjVdly5YNZrOWLFky0ksCcoRKKwAAMbABq3///gRWFGhUWgEAiFKHDh1StWrVghmtK1euVIcOHSK9JCDHqLQCABClZs2aFQTWJk2aqH379pFeDpArhFYAAKJU2g1YcXFxkV4OkCu0BwAAEIW++OILNWvWTIULF9auXbtUtWrVSC8JyBUqrQAARHGVtVevXgRWRAVCKwAAUebUqVOaPn16cJvZrIgWhFYAAKLM+++/r3379gUV1p49e0Z6OUCeILQCABCls1lvueUWFSlSJNLLAfIEoRUAgChy8OBBlSlTJriYwIgRIyK9HCDPMD0AAAAA3qPSCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQCAAq5zZ2nkSHe7bl3puefy7rXj4qS5c/Pu9YCcIrQCABBFVq+Whg3Lu9f75hspUhfVOnBAuvtuqWFDqWRJqXZt6Z57pEOH0j/u+uvd34oXl6pXl371K2nPnsisGfmH0AoAQBSpXNkFvLxSrZpUrJgiwoKnHRMmSP/6l/Taa9KHH0q33Zb+cV26SG+8IW3cKL31lrRli3TDDZFZM/IPoRUAgChydnvAhg1Sp06uCtmkiTR/fvZO+ad97Pbt7ncLiJdfLpUoIbVrJ23a5Cq8bdtKpUtLPXpI332X/nXsyrJNm7oAbNXQu+7K+r2bNXMh9LrrpHr1pCuvlMaNk957Tzp9OvVxv/mNdMklUp060mWXSb//vbRypXTqVGifEQVD4UgvAAAA5I+kJKlPH3fqfNUq6cgR6be/zf3rPvKIC8b2uoMHS/37S2XLSs8/76q8N94oPfyw9Je/uMfbz3vvlf74R9dqYKf3ly/P2Xvbc+29ChfOvKVg5kwXXosUyflnhH8IrQAARKl589yp8kWL3Gl+Y5XKrl1z97r33Sd17+5ujxjhQuuCBVLHju4+O31vp/JTjB3rwrI9NoVVaLNr/37p8cel228/92+/+5300kvSsWOu6vr3v2f/9eE32gMAAIhS1uNZq1ZqYDXt2+f+dS++OPV21aruZ/Pm6e/bt8/dtp/Wl3rVVbl7z8OHpV69XIuDVXrPdv/90tq1LqjHx0u33CIlJ+fuPeEXKq0AAEQpC23Wg5rX0p52T3n9s++z1gRjfa+5ZW0N1idr/bJz5mR82r9SJXc0aCA1buzCuvW1Xnpp7t8ffqDSCgBAlGrUSNqxQ9q7N/U+2zAVTmXKuM1h1j6Q0wprt25S0aLSu++6DWVZSamwnjiRs/eEn6i0AgAQpax31XbdDxwoPfmkq1iOGuX+lh8V2MyMGSMNHy5VqeI2Ytk6bCOWzWA9H3ucBVbrU50xwwVYO1JGe1kbwKefusMmJJQvL23d6jaB2eemyhpdCK0AAEQpC3U2rmrIELfx6cILpaeeciOkQqlY5hULzYmJ0rPPuk1cdho/lDmqa9a4qQfmoovS/23bNlfBtfaDt992fa4//ujGaVkrwaxZkZsvi/wRl5xMmzIAALHCKpxWldy82VUjz8dOr1u4/egj6eqrw7VCIGNUWgEAiGK2cck2MNWv74KqjZ2y0VRZBVY7DW8VzEKFXG8sEGmEVgAAopj1hT7wgLRzpzstbxXTp592fxs/3h0ZsXaCL7+UnnhCqlkzf9ZmFwHIaOaqsatbffFF/rwvCibaAwAAiFF29Sg7MmK9ogkJ+R+o0042SMvGWllwBVIQWgEAAOA95rQCAADAe4RWAAAAeI/QCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QCAADAe4RWAAAAeI/QCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QCAADAe4RWAAAAeI/QCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QCAADAe4RWAAAAeI/QCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRXe69xZGjnS3a5bV3ruufC995gxUsuW4Xs/AACQMUIrCpTVq6Vhw8L3fvfdJy1YkL/vYUE8Li798fvfp3/Mjh3SdddJpUpJlSpJ99wjnTyZv+sCAMAnhSO9ACA7KlcO7/dVurQ78ttjj0lDh6Z/3xQ//ST16uU++7Jl0v790sCBUnKy9OKL+b82AAB8QKUVBcrZ7QEbNkidOknFi0tNmkjz57tK5dy5ob3e7t1Sv35S+fJSxYpS797S9u2ZtwcMGiT16SONHy9VrSqVKyc9+qh0+rR0//1ShQpSzZrS5MnZ+1xlykjVqqUeaUPrvHnSl19KM2ZIrVpJV18tPf209Mor0uHD2XsfAAAKKkIrCqykJBcgS5aUVq2SJk6URo0K/fnHjklduriAuGSJq2La7R49zn/qfeFCac8e95xnnnHB9tprXfC1dQwf7o6dO0NfyxNPuNBsAXncuPTvv2KF1KyZVKNG6n3du0snTkhr1oT+HgAAFGS0B6DAsgrkli3SokWuOmks8HXtGtrzZ82SChWSJk1y1VkzZYqrntprduuW8fOsmvrCC+65DRtKTz7pAvBDD7m/P/ig9Mc/SsuXS7/8ZdbrGDFCat3ahd5PP3XP37bNrct8+62r6qZljy1a1P0NAIBYQGhFgbVxo1SrVmpgNe3bh/58q1Ju3uxOzaeVmOjCcGaaNnWBNYUFSquEpoiPd1XTfftCW8dvfpN6++KLXSC94YbU6qtJCdVpWU9rRvcDABCNCK0osHIb2qy9oE0baebM7G34KlIk/e+2hozus9fPiUsucT8tUFtotVBubQdpHTwonTp1bgUWAIBoRU8rCqxGjdwoqL1704/ECpWdkv/qK6lKFemii9IfF1ygiFm71v2sXt39vPRS6fPPpW++Sd8aUayYC90AAMQCQisKLOtdrVfPjX9av971kKZsxAqlAjtggJt5ahMDli51faSLF7se0127FBa2yerZZ6V169z7v/GGdPvt0vXXS7Vru8dYb61NRvjVr1ygtbmxNj/WRmSVLRuedQIAEGmEVhRY1jtqo62OHpXatZOGDJFGj3Z/sxFYWbGpAzYBwMJh375S48bS4MHS8ePhC4NWLZ092131y4Lpww+7MPr66+k/5//7f+4zdewo3Xijm5owYUJ41ggAgA/ikpOtMxCIDlZttbmt1g9qVdjcsp38VoW1cVgAACBy2IiFAm3OHDdbtX59F1Tt1L5VI3MbWO1/5bZudafibaA/AACILNoDUKAdOSLdcYfblGVXq7I2gXfecX+zq1alXIb17KNnz/O/7qFD7nS9zUJNmb+aE7lZAwAASEV7ACJuxYoVutS2yOexAwfckZESJaSEhDx/Sy/XAABANCC0IqKmT5+uDz/8UDMzGpYKAADwH7QHIGImTZqkgQMHir2AAAAgK4RWRMSf/vQnDR06NAisXW3gKgAAwHkQWhF2Tz/9tO66667g9r333qtBtoMKAADgPAitCKtx48bpPruck+zqVaM0YcIExYVy+SoAABDTCK0IC2sD+MMf/qDR/7lk1eOPP66xY8cSWAEAQEi4uADCElgfeOCBoKpqnnzySd1///188wAAIGSEVuSrpKQkjRgxQi+99FLw+wsvvKC7776bbx0AAGQLoRX5GliHDx+uV155JWgD+Otf/6phw4bxjQMAgGwjtCJfnD59WrfddpumTZumQoUKafLkycFMVgAAgKjbiNW5szRypLtdt6703HPhe+8xY6SWLcP3ftHk1KlTuvnmm4PAGh8fH1ztisAKAACiNrSmtXq1FM4zyzaVacGC8LzXiRMuINvkp3XrUu9/7TV3X0bHvn3y0okTJ3TjjTdq9uzZKlKkiN5880398pe/jPSyAABAAVdg2gMqVw7v+5Uu7Y5weOABqUYN6bPP0t/fr5/Uo0f6+2wOf2KiVKWKvJOYmKj//u//1vvvv69ixYrprbfeUq9evSK9LAAAEAUKTKX17PaADRukTp2k4sWlJk2k+fNdBXLu3NBeb/duFwrLl5cqVpR695a2b8+8PcDCYp8+0vjxUtWqUrly0qOPWu+mZNObKlSQataUJk/O3uf64ANp3jzpP9Og0ilRQqpWLfWIj5cWLpRuu03e+fHHH3XdddcFgbVEiRJ67733CKwAACD2QmtaSUkuQJYsKa1aJU2caFdXCv35x45JXbq4SuqSJdKyZe62VTVPnsz8eRYY9+xxz3nmGRdsr73WBV9bx/Dh7ti5M7R17N0rDR0qTZ/uPktWpk1zj7vhBnnlyJEjuuaaazR//nyVLl1aH3zwgbp27RrpZQEAgChSIEOrVSa3bHEhrkULV3EdNy7058+aJRUqJE2aJDVvLjVuLE2ZIu3YIS1alPnzrJr6wgtSw4bS4MHupwXghx6S6teXHnxQKlpUWr486zUkJ7vqrYXctm1DW7dVcW+6yVVgffHDDz+oW7duWrJkicqWLat58+bpiiuuiPSyAABAlCkwPa1pbdwo1arlTpmnaN8+9OevWSNt3iyVKZP+fusVtTCcmaZNXdhNYW0CzZql/m6n763VIJRNUi++KB0+7IJuKFaskL780gV1X+zfv1/du3fXmjVrVL58+SCwtg01gQMAAER7aLUqpfWv5qa9oE0baebM7G34KlIk/e+2hozus9fPirUarFwpFSuW/n7LfAMGSFOnpr/fqsLWY2vr9sG+ffuCFoD169erUqVKQWtACyt7AwAA5IMCGVobNXKn8q0n1KqdKSOxQtW6tTR7ttuBX7asIsLaDMaOTf3demW7d3fr6tAh/WOPHpXeeEP6n/+RF7755htdddVV+ve//61q1appwYIFamK74QAAAPJJgexptT0+9epJdoGl9etdD2nKRqxQKrBWyaxUyU0MWLpU2rZNWrxYGjFC2rVLYVG7tmstSDkaNHD32+eyKQRpWZC1KQW27kjbuXOnfv7znweBtWbNmkEvK4EVAADktwIZWq131EZbWQWyXTtpyBBp9Gj3NxuBlRXbgW8TACw49u3rNmLZxqrjxyNXeT2fV19167QpBZG0bdu2ILBu3rxZdevWDQJrfduBBgAAkM/ikpOtQ7Tgs2qrTRGwDVZWrcwt2yBlVVgbhwXpq6++0pVXXqldu3bpoosu0sKFC1XLdsMBAACEQYHsaTVz5rjZqlbos6Bqp/Y7dsx9YLUIv3Wru4Rrq1Z5tdqC7csvvwx6WL/99ls1btw46GGtXr16pJcFAABiSIFsDzBHjkh33OE2Zdm8U2sTeOcd9ze7alXKZVjPPnr2PP/rHjrkrrBl81Zt/mpO5WYNPvnss8/UuXPnILA2b95cixYtIrACAICwi5r2gLQOHHBHRmwwf0JCbKwht/7xj38EFw44ePCgWrduHcxhrWiDaAEAAMIsKkMrcm/FihXq0aOHDh8+rEsuuSS4NGu5cuX4agEAQEQU2PYA5B+bCmAVVgusl19+eVBhJbACAIBIIrQiHbuylVVYjx49Gmy+sgprmbOvdwsAABBmhFac8f777+vaa6/V8ePHdc011+i9995TqVKl+IYAAEDEEVoRmDt3rvr06aMTJ04EP99++22VsB1jAAAAHiiwc1qzy/ab2aVHbSj+qlWr9NNPPwX3lyxZUh07dgxOhde2S2TFoNmzZ2vAgAHBd3LjjTdqxowZKlKkSKSXBQAAENvTA7777ju99tprevnll7Vly5Yz91966aUaPny4fvGLX8RMlXHatGm69dZblZSUpF/96leaPHmyCheOmf+XAQAABURMhtYUFtSs8mrh1U6Pnz59Ori/fPnyuuWWW3T77bcHV4CKVvbZX3311aAK3aVLF912220qVIiOEQAA4J+YDq1p2RWfrMo4ceJEff3112fu//nPfx5UX/v27atixYpFdI0AAACxitB6FuvrtLmkVn213fNWjTWVKlXSoEGDNGzYMNWvXz8S/1YAAAAxi9B6Hrt27QpOn7/yyivavXv3mftt05ZVX3v37s2GJQAAgDAgtIbAel1thulf//pXffjhh0EPqKlatWrQBzp06FDVrVs3v/+tAAAAYhahNZu2b9+uSZMmBcfevXvdlxgXp+7duwfV1169erH7HgAAII8RWnPo1KlTevfdd4Pqq136NEVCQoKGDBkSHDVr1syrfycAAICYRmjNA5s3bw6mDkyZMkXff/99cJ+NjrJLotrYLKvCxsfHKz907iy1bCk995xkHQojR7ojHMaMsStpSevWhef9AABA7CK05iG7BKpd/tQmDyxevPjM/XXq1An6XgcPHqzq1avnW2j97jupVCm7ypfC4uhR+8xSxYr59x7XX+9C8b59Nj9Xuvpq6YknpBo1Uh8zYoS0bJn0+eeSjdUlRAMAEH2YJJ+HbI5r//79tWjRIn355ZcaOXJkcKECm/s6evTo4DKxN9xwgz766KMzo7TyUuXK4QuspnTp/A2spksX6Y03pI0bpbfekuwCZjfckP4xti9u8GCpX7/8XQsAAIgcQms+sStpPfvss8GorKlTp+qyyy4LphC89dZb6tatmxo0aKAnn3wyuKRsXrH2AKu4ptiwQerUSSpeXGrSRLLW27g4d0o/FDbly4KgVTgtnPbubRvR0rcHWJU3xaBBUp8+0vjxNllBKldOevRRm74g3X+/VKGCZG2+kyeH/pl+8xvpkkusWi1ddpn0+99LK1daT3HqY154QbrzTunCC0N/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", + "text/plain": [ + "
" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "You'll see a warning that a few completed edges aren't part of the planned network and are being ignored. That's expected here and nothing to worry about: these tutorial results predate the `industry_benchmarks_network` and were run on a different network over the same TYK2 ligands, so a handful of the edges that completed don't exist in the plan we're repairing against. The guard drops them and carries on with the edges the two do share. If this warning appears in your own runs, it means the results and the planned network don't match (most often the wrong planned network was supplied), so it's worth checking." + "plot_atommapping_network(LigandNetwork(nodes=planned.nodes, edges=completed.edges))" ] }, { @@ -403,7 +390,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "id": "73cea531", "metadata": {}, "outputs": [ @@ -411,13 +398,41 @@ "name": "stdout", "output_type": "stream", "text": [ - "bridging by name: [('ejm_31', 'jmc_23'), ('jmc_23', 'ejm_45'), ('ejm_45', 'ejm_49'), ('ejm_49', 'ejm_44'), ('ejm_44', 'ejm_54'), ('ejm_54', 'jmc_30'), ('jmc_30', 'ejm_50'), ('ejm_50', 'ejm_55'), ('ejm_55', 'jmc_28')]\n", + "bridging by name: [('lig_ejm_46', 'lig_ejm_31'), ('lig_ejm_31', 'lig_ejm_48')]\n", "connected: True\n" ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/hannahbaumann/.local/share/mamba/envs/openfe/lib/python3.13/site-packages/konnektor/network_planners/generators/explicit_network_generator.py:85: UserWarning: Generated network is not connected as a single network.\n", + " warnings.warn(\"Generated network is not connected as a single network.\")\n" + ] } ], "source": [ "def repair_by_names(completed, ligands, mapper, names):\n", + " \"\"\"Reconnect a broken network with bridging edges specified by name.\n", + "\n", + " Parameters\n", + " ----------\n", + " completed : LigandNetwork\n", + " The disconnected network to repair.\n", + " ligands : list[SmallMoleculeComponent]\n", + " The pool the named edges are drawn from. Must include any missing\n", + " ligands that are absent from ``completed``.\n", + " mapper : AtomMapper\n", + " Builds the atom mapping for each new edge.\n", + " names : list[tuple[str, str]]\n", + " The bridging edges to add, as pairs of ligand names, e.g.\n", + " ``[(\"lig_ejm_31\", \"lig_ejm_46\"), ...]``.\n", + "\n", + " Returns\n", + " -------\n", + " LigandNetwork\n", + " ``completed`` with the named bridging edges merged in.\n", + " \"\"\"\n", " patch = generate_network_from_names(ligands=ligands, mapper=mapper, names=names)\n", " return merge_two_networks(completed, patch)\n", "\n", @@ -428,7 +443,9 @@ "\n", "mapper = KartografAtomMapper()\n", "\n", - "repaired_network_by_name = repair_by_names(completed, list(planned.nodes), mapper, bridge_names)\n", + "# include the missing ligand(s) in the pool, since they aren't in `completed`\n", + "ligands = list(completed.nodes) + list(missing)\n", + "repaired_network_by_name = repair_by_names(completed, ligands, mapper, bridge_names)\n", "print(\"connected:\", repaired_network_by_name.is_connected())" ] }, @@ -446,7 +463,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "id": "d06afced", "metadata": {}, "outputs": [ @@ -455,12 +472,32 @@ "output_type": "stream", "text": [ "connected: True\n", - "edges added: [('ejm_49', 'ejm_44'), ('jmc_23', 'ejm_50'), ('ejm_54', 'ejm_55'), ('jmc_23', 'jmc_28'), ('ejm_49', 'ejm_50'), ('jmc_23', 'jmc_30'), ('ejm_42', 'ejm_54'), ('ejm_45', 'ejm_55'), ('ejm_44', 'jmc_30'), ('jmc_30', 'ejm_55'), ('ejm_31', 'ejm_45'), ('ejm_46', 'ejm_49'), ('jmc_30', 'jmc_28'), ('ejm_49', 'jmc_28'), ('ejm_44', 'ejm_50'), ('ejm_44', 'ejm_54'), ('ejm_54', 'ejm_50'), ('ejm_55', 'jmc_28'), ('ejm_46', 'jmc_30'), ('ejm_45', 'ejm_44'), ('ejm_45', 'jmc_28'), ('ejm_44', 'ejm_55'), ('jmc_27', 'jmc_23'), ('jmc_30', 'ejm_50'), ('ejm_44', 'jmc_28'), ('ejm_49', 'ejm_55'), ('jmc_27', 'jmc_28'), ('jmc_23', 'ejm_45'), ('jmc_23', 'ejm_49'), ('ejm_54', 'jmc_30'), ('ejm_49', 'jmc_30'), ('ejm_50', 'jmc_28'), ('ejm_45', 'ejm_54'), ('jmc_23', 'ejm_44'), ('ejm_42', 'ejm_50'), ('ejm_45', 'jmc_30'), ('jmc_23', 'ejm_54'), ('ejm_50', 'ejm_55'), ('ejm_49', 'ejm_54'), ('ejm_42', 'ejm_55'), ('ejm_43', 'ejm_44'), ('ejm_45', 'ejm_49'), ('jmc_23', 'ejm_55'), ('ejm_45', 'ejm_50'), ('ejm_54', 'jmc_28')]\n" + "edges added: [('lig_ejm_31', 'lig_ejm_48'), ('lig_jmc_28', 'lig_ejm_47'), ('lig_ejm_47', 'lig_ejm_48'), ('lig_ejm_46', 'lig_ejm_48'), ('lig_ejm_46', 'lig_ejm_47'), ('lig_jmc_28', 'lig_ejm_48')]\n" ] } ], "source": [ "def repair_by_score(fragments, mapper, scorer, n_connecting_edges=1):\n", + " \"\"\"Reconnect broken fragments with bridging edges chosen by score.\n", + "\n", + " Parameters\n", + " ----------\n", + " fragments : list[LigandNetwork]\n", + " The connected pieces to join back together, including single-node\n", + " networks for any missing ligands.\n", + " mapper : AtomMapper\n", + " Builds the atom mapping for each candidate edge.\n", + " scorer : Callable\n", + " Scores a mapping by expected difficulty (e.g. a lomap scorer).\n", + " n_connecting_edges : int, optional\n", + " Number of bridges to add per join, by default 1.\n", + "\n", + " Returns\n", + " -------\n", + " LigandNetwork\n", + " A single connected network: the fragments' edges plus the chosen\n", + " bridging edges.\n", + " \"\"\"\n", " concatenator = MstConcatenator(\n", " mappers=mapper, scorer=scorer, n_connecting_edges=n_connecting_edges\n", " )\n", @@ -474,7 +511,7 @@ "mapper = KartografAtomMapper()\n", "scorer = lomap_scorers.default_lomap_score\n", "\n", - "repaired_network_by_score = repair_by_score(fragments, mapper, scorer, n_connecting_edges=1)\n", + "repaired_network_by_score = repair_by_score(fragments, mapper, scorer, n_connecting_edges=2)\n", "print(\"connected:\", repaired_network_by_score.is_connected())\n", "\n", "new_edges = repair_edges(repaired_network_by_score, completed)\n", @@ -500,7 +537,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, "id": "fbdc9724", "metadata": {}, "outputs": [], @@ -576,7 +613,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 12, "id": "42ac44ab", "metadata": {}, "outputs": [ @@ -584,7 +621,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "wrote 90 transformations\n" + "wrote 12 transformations\n" ] } ], From d6411533484fab2380d57fc83e670c86848a6078 Mon Sep 17 00:00:00 2001 From: hannahbaumann Date: Wed, 19 Aug 2026 10:35:06 +0200 Subject: [PATCH 4/8] Add network --- cookbook/assets/mst_network_tyk2.json | 1 + cookbook/repairing_broken_networks.ipynb | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 cookbook/assets/mst_network_tyk2.json diff --git a/cookbook/assets/mst_network_tyk2.json b/cookbook/assets/mst_network_tyk2.json new file mode 100644 index 0000000..a7254f5 --- /dev/null +++ b/cookbook/assets/mst_network_tyk2.json @@ -0,0 +1 @@ +[["LigandNetwork-56242d91209617d23bca6e9e25c7e45b", {"graphml": "\n \n \n \n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.14806253125}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.09593746875}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12893746875}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05246253125}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.14353746875}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05246253125}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12893746875}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15706253125}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.060337468750000005}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.69176253125}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.55003746875}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.46003746875}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.33056253125}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.12766253125}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.30423746875}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.44526253125}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.73793746875}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.55126253125}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.32323746875}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.18006253125}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.55333746875}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.33156253125}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.67116253125}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.59303746875}, 3], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.17803746875}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.07109553125}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.07109553125}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.07109553125}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.025162531250000002}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.18306253125}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.060337468750000005}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15706253125}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 31, 1, 0, {}], [3, 4, 12, 0, {}], [3, 30, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 29, 1, 0, {}], [15, 16, 12, 0, {}], [15, 28, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 25, 1, 0, {}], [24, 26, 1, 0, {}], [24, 27, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (32, 3), } \\n\\u00f3\\u008eSt$\\u0017\\u0013\\u00c0W[\\u00b1\\u00bf\\u00ec\\u009e\\u0006\\u00c09\\u00b4\\u00c8v\\u00be\\u007f0\\u00c05\\u00ef8EGr\\u0015\\u00c0P\\u008d\\u0097n\\u0012\\u0083\\r\\u00c0b\\u00a1\\u00d64\\u00ef80\\u00c0\\u0095e\\u0088c]\\u001c\\u0013\\u00c0\\u0096!\\u008euq\\u00db\\u0013\\u00c0\\u00a5,C\\u001c\\u00eb20\\u00c0j\\u00deq\\u008a\\u008e$\\u0016\\u00c0\\u00b4\\u00c8v\\u00be\\u009fZ\\u0018\\u00c0+\\u00f6\\u0097\\u00dd\\u0093\\u00a7/\\u00c0_\\u0007\\u00ce\\u0019Q\\u009a\\u001b\\u00c0d\\u00cc]K\\u00c8\\u00c7\\u0017\\u00c0m\\u00c5\\u00fe\\u00b2{\\u00f2.\\u00c0\\u009e\\u00ef\\u00a7\\u00c6K\\u00f7\\u001d\\u00c0p\\u00ce\\u0088\\u00d2\\u00de\\u00a0\\u0012\\u00c0\\u00e7\\u00fb\\u00a9\\u00f1\\u00d2\\r/\\u00c0r\\u008a\\u008e\\u00e4\\u00f2\\u00df\\u001a\\u00c0\\u00e1\\u000b\\u0093\\u00a9\\u0082Q\\f\\u00c0\\t\\u001b\\u009e^)\\u00cb/\\u00c0\\u00f7\\u00e4a\\u00a1\\u00d6\\u00b4\\u001c\\u00c0\\u0017\\u00b7\\u00d1\\u0000\\u00de\\u0082\\u0004\\u00c0\\u00e2X\\u0017\\u00b7\\u00d1\\u00e0/\\u00c0)\\u00cb\\u0010\\u00c7\\u00baX\\\"\\u00c0a2U0*\\u00a9\\u0011\\u00c0V\\u009f\\u00ab\\u00ad\\u00d8_.\\u00c0C\\u001c\\u00eb\\u00e26\\u00da\\u001e\\u00c0\\u0083/L\\u00a6\\n\\u0086\\u001c\\u00c0\\u00de\\u0093\\u0087\\u0085Z\\u0013.\\u00c0\\u00d3\\u00bc\\u00e3\\u0014\\u001dI \\u00c0\\u00ec/\\u00bb'\\u000f\\u00cb\\u001c\\u00c0h\\\"lxz\\u00c5+\\u00c0\\u009f\\u00cd\\u00aa\\u00cf\\u00d5\\u0096\\u001f\\u00c0\\u0094\\u0087\\u0085Z\\u00d3\\u001c \\u00c0t$\\u0097\\u00ff\\u0090\\u00fe/\\u00c0r\\u00f9\\u000f\\u00e9\\u00b7\\u00af\\u001d\\u00c0Gr\\u00f9\\u000f\\u00e9w\\u001f\\u00c0Zd;\\u00dfO\\u00dd0\\u00c0p_\\u0007\\u00ce\\u0019q!\\u00c0!\\u00b0rh\\u0091m\\\"\\u00c0\\u008c\\u00dbh\\u0000o\\u00010\\u00c0H\\u00e1z\\u0014\\u00ae'#\\u00c0\\u008a\\u00b0\\u00e1\\u00e9\\u00952#\\u00c0\\u009e^)\\u00cb\\u0010\\u00e7-\\u00c0\\u0085\\u00ebQ\\u00b8\\u001e\\u00c5$\\u00c0I.\\u00ff!\\u00fdv%\\u00c0M\\u00f3\\u008eStD.\\u00c0\\\\\\u008f\\u00c2\\u00f5(\\u00bc$\\u00c0\\nh\\\"lx\\u00fa&\\u00c0\\u00ff\\u00b2{\\u00f2\\u00b0@0\\u00c0Nb\\u0010X9\\u0014#\\u00c0?5^\\u00baIL&\\u00c0i\\u0000o\\u0081\\u0004E1\\u00c0=\\u009bU\\u009f\\u00abm!\\u00c0\\u008euq\\u001b\\r\\u0000$\\u00c0[\\u00b1\\u00bf\\u00ec\\u009e,1\\u00c0%\\u0006\\u0081\\u0095C+ \\u00c0\\u0088\\u0085Z\\u00d3\\u00bcc#\\u00c0\\u0003x\\u000b$(\\u00fe1\\u00c0\\u0012\\u00a5\\u00bd\\u00c1\\u0017&#\\u00c0\\u00cb\\u00a1E\\u00b6\\u00f3\\u00dd'\\u00c0io\\u00f0\\u0085\\u00c9t2\\u00c0\\u00ea\\u0095\\u00b2\\fq\\u00cc$\\u00c0\\u0018\\u0095\\u00d4\\th\\u0002)\\u00c0vO\\u001e\\u0016j\\u008d2\\u00c0\\u00bb\\u00b8\\u008d\\u0006\\u00f0V!\\u00c0\\u00c1\\u00ca\\u00a1E\\u00b6\\u0013(\\u00c0\\u00deq\\u008a\\u008e\\u00e4r3\\u00c0\\u00c5 \\u00b0rhQ\\u001e\\u00c0\\u00c5\\u00fe\\u00b2{\\u00f2\\u00f0&\\u00c0\\u00d1\\u0091\\\\\\u00feCz3\\u00c0B>\\u00e8\\u00d9\\u00ac\\u001a\\\"\\u00c0\\u0080\\u00b7@\\u0082\\u00e2\\u00e7)\\u00c0\\b=\\u009bU\\u009f\\u009b4\\u00c0r\\u00f9\\u000f\\u00e9\\u00b7O\\\"\\u00c0\\u00de\\u0093\\u0087\\u0085Z\\u00f3+\\u00c0o\\u0012\\u0083\\u00c0\\u00caA4\\u00c0\\u008a\\u008e\\u00e4\\u00f2\\u001f\\u0092 \\u00c0\\u00aa`TR'\\u00e0)\\u00c0n4\\u0080\\u00b7@b5\\u00c0\\u00e8j+\\u00f6\\u0097\\u00fd#\\u00c0\\u00b3{\\u00f2\\u00b0PK)\\u00c0:#J{\\u0083\\u000f5\\u00c0\\u008c\\u00dbh\\u0000o!&\\u00c0\\u00d9=yX\\u00a8\\u0015&\\u00c0\\u0012\\u0014?\\u00c6\\u00dc\\u00b5,\\u00c0\\u00a5\\u00bd\\u00c1\\u0017&S#\\u00c0io\\u00f0\\u0085\\u00c9\\u0014\\\"\\u00c0\\u00ab\\u00cf\\u00d5V\\u00ec\\u000f,\\u00c0\\u00e0\\u009c\\u0011\\u00a5\\u00bd\\u0001\\u0013\\u00c0\\u00ad\\u00fa\\\\m\\u00c5~\\u001e\\u00c0L7\\u0089A`\\u00a5/\\u00c0\\u0002\\u009a\\b\\u001b\\u009e\\u00de\\r\\u00c0\\u00c8\\u0098\\u00bb\\u0096\\u0090O\\u0014\\u00c0N\\u00d1\\u0091\\\\\\u00fes0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14806253124999999 -0.095937468750000005 -0.12893746875000001 0.05246253125 -0.14353746875000001 0.05246253125 -0.12893746875000001 0.15706253125 -0.060337468750000005 0.69176253124999998\\n-0.55003746875000004 -0.46003746875000001 0.33056253125000001 0.12766253124999999 -0.30423746875000002 0.44526253124999998 -0.73793746874999999 0.55126253125000002 -0.32323746874999998\\n0.18006253124999999 -0.55333746875000001 0.33156253125000001 0.67116253125000003 -0.59303746874999996 -0.17803746875000001 0.071095531249999996 0.071095531249999996 0.071095531249999996\\n0.025162531250000002 0.18306253124999999 -0.060337468750000005 0.15706253125\", \"ofe-name\": \"lig_ejm_31\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.14792105263157893}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.09607894736842106}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12907894736842107}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05232105263157895}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.14367894736842107}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05232105263157895}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12907894736842107}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15692105263157893}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.059978947368421055}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.6916210526315789}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5501789473684211}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.4601789473684211}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.33042105263157895}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.12752105263157892}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3033789473684211}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.4441210526315789}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.7370789473684211}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.550121052631579}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.32037894736842104}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.17792105263157892}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5514789473684211}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.33042105263157895}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.669021052631579}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.589178947368421}, 3], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.13277894736842108}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.06662105263157894}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.09117894736842105}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.047121052631578945}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.047121052631578945}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.047121052631578945}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.09117894736842105}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.047121052631578945}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.047121052631578945}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.047121052631578945}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.025021052631578947}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.18292105263157893}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.059978947368421055}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15692105263157893}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 37, 1, 0, {}], [3, 4, 12, 0, {}], [3, 36, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 35, 1, 0, {}], [15, 16, 12, 0, {}], [15, 34, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 25, 1, 0, {}], [24, 26, 1, 0, {}], [24, 30, 1, 0, {}], [26, 27, 1, 0, {}], [26, 28, 1, 0, {}], [26, 29, 1, 0, {}], [30, 31, 1, 0, {}], [30, 32, 1, 0, {}], [30, 33, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (38, 3), } \\n|\\u00f2\\u00b0Pk\\u001a\\u0013\\u00c0_\\u0098L\\u0015\\u008cJ\\u0006\\u00c0*:\\u0092\\u00cb\\u007fh0\\u00c0\\u00bc\\u0096\\u0090\\u000fzv\\u0015\\u00c07\\u001a\\u00c0[ A\\r\\u00c0\\u00f0\\u00a7\\u00c6K7)0\\u00c0\\u00cf\\u00f7S\\u00e3\\u00a5\\u001b\\u0013\\u00c0\\u00ee|?5^\\u00ba\\u0013\\u00c0\\u00f1\\u00f4JY\\u0086(0\\u00c0\\u00d6V\\u00ec/\\u00bb'\\u0016\\u00c0\\u00bf}\\u001d8gD\\u0018\\u00c0\\u0087\\u00a7W\\u00ca2\\u00a4/\\u00c04\\u0080\\u00b7@\\u0082\\u00a2\\u001b\\u00c0\\u00e7\\u008c(\\u00ed\\r\\u00be\\u0017\\u00c0k+\\u00f6\\u0097\\u00dd\\u00f3.\\u00c0\\u00ab>W[\\u00b1\\u00ff\\u001d\\u00c0\\u00f5JY\\u00868\\u0096\\u0012\\u00c0\\u00a8\\u00c6K7\\u0089\\u0001/\\u00c0c\\u00eeZB>\\u00e8\\u001a\\u00c0\\u00d3\\u00de\\u00e0\\u000b\\u0093)\\f\\u00c0t\\u00b5\\u0015\\u00fb\\u00cb\\u00ae/\\u00c0\\b\\u00ac\\u001cZd\\u00bb\\u001c\\u00c0\\u0010z6\\u00ab>W\\u0004\\u00c0\\u00f2\\u00b0Pk\\u009a\\u00b7/\\u00c0&S\\u0005\\u00a3\\u0092Z\\\"\\u00c0T\\u00e3\\u00a5\\u009b\\u00c4\\u00a0\\u0011\\u00c0\\u00deq\\u008a\\u008e\\u00e4R.\\u00c0\\u001aQ\\u00da\\u001b|\\u00e1\\u001e\\u00c0-\\u00b2\\u009d\\u00ef\\u00a7\\u0086\\u001c\\u00c0\\u00c5\\u008f1w-!.\\u00c0EGr\\u00f9\\u000fI \\u00c0p\\u00ce\\u0088\\u00d2\\u00de\\u00e0\\u001c\\u00c0\\u00deq\\u008a\\u008e\\u00e4\\u00d2+\\u00c0\\u00e1z\\u0014\\u00aeG\\u00a1\\u001f\\u00c02w-!\\u001f\\u0014 \\u00c0\\u0098n\\u0012\\u0083\\u00c0\\n0\\u00c0\\u000f\\u009c3\\u00a2\\u00b4\\u00b7\\u001d\\u00c0\\u00af\\u0094e\\u0088c]\\u001f\\u00c0\\u007fj\\u00bct\\u0093\\u00e80\\u00c0,e\\u0019\\u00e2Xw!\\u00c0\\u00be\\u009f\\u001a/\\u00ddd\\\"\\u00c0U0*\\u00a9\\u0013\\u00100\\u00c0aTR'\\u00a0)#\\u00c0\\u008e\\u0006\\u00f0\\u0016H0#\\u00c0\\u00c0[ A\\u00f1\\u0003.\\u00c0fffff\\u00c6$\\u00c0\\u0014\\u00aeG\\u00e1zt%\\u00c0\\u00c3\\u00f5(\\\\\\u008fb.\\u00c0V\\u009f\\u00ab\\u00ad\\u00d8\\u00bf$\\u00c0\\u00a3#\\u00b9\\u00fc\\u0087\\u00f4&\\u00c0U\\u00c1\\u00a8\\u00a4NP0\\u00c0{\\u0014\\u00aeG\\u00e1\\u001a#\\u00c0\\u00a6\\nF%uB&\\u00c0\\u0014\\u00aeG\\u00e1zT1\\u00c0f\\u00f7\\u00e4a\\u00a1v!\\u00c0\\u0016jM\\u00f3\\u008e\\u00f3#\\u00c0\\u00b0rh\\u0091\\u00ed<1\\u00c0\\u0081\\u0004\\u00c5\\u008f17 \\u00c0\\u00a2E\\u00b6\\u00f3\\u00fdT#\\u00c0V\\u009f\\u00ab\\u00ad\\u00d8\\u000f2\\u00c0\\u00f3\\u001f\\u00d2o_'#\\u00c0sh\\u0091\\u00ed|\\u00df'\\u00c0\\u00ff!\\u00fd\\u00f6u\\u00802\\u00c0\\u00c5 \\u00b0rh\\u00d1$\\u00c0\\u00fc\\u00a9\\u00f1\\u00d2M\\u0002)\\u00c0\\rq\\u00ac\\u008b\\u00db\\u00982\\u00c0\\u0099*\\u0018\\u0095\\u00d4I!\\u00c0\\u00a9\\u0013\\u00d0D\\u00d80(\\u00c0\\u00bc\\u0096\\u0090\\u000fzv3\\u00c0\\u00e6?\\u00a4\\u00df\\u00beN\\u001e\\u00c0F\\u0094\\u00f6\\u0006_\\u00f8&\\u00c0\\u00e1\\u000b\\u0093\\u00a9\\u0082\\u00813\\u00c0\\u007f\\u00d9=yX\\u00e8!\\u00c0\\u008fSt$\\u0097?*\\u00c0\\u008d\\u0097n\\u0012\\u0083\\u00904\\u00c0\\u00fd\\u0087\\u00f4\\u00db\\u00d7\\u00c1#\\u00c09EGr\\u00f9O+\\u00c0L\\u00a6\\nF%U4\\u00c0\\u00d9=yX\\u00a85\\u001f\\u00c0'\\u00a0\\u0089\\u00b0\\u00e1I,\\u00c0\\u00b9\\u00fc\\u0087\\u00f4\\u00db\\u00b74\\u00c0\\u00e6?\\u00a4\\u00df\\u00beN\\u001e\\u00c0ffffff-\\u00c0Q\\u00da\\u001b|a\\u00d23\\u00c0\\u00fb\\u00cb\\u00ee\\u00c9\\u00c3\\u0082\\u001b\\u00c0\\u00c9v\\u00be\\u009f\\u001aO+\\u00c0\\u0081\\u0004\\u00c5\\u008f1\\u00075\\u00c0d;\\u00dfO\\u008d\\u0017 \\u00c0\\u00dch\\u0000o\\u0081\\u00c4-\\u00c0\\u0097\\u0090\\u000fz6{5\\u00c0o\\u0012\\u0083\\u00c0\\u00ca!\\\"\\u00c0\\u00f8\\u00c2d\\u00aa`\\u00f4(\\u00c0P\\u00fc\\u0018s\\u00d7\\u00f25\\u00c0\\u00c0\\u00ec\\u009e<,\\u00f4#\\u00c0\\u00f2\\u00b0Pk\\u009a\\u00d7'\\u00c0H\\u00bf}\\u001d8\\u00076\\u00c0\\u0010X9\\u00b4\\u00c8v \\u00c0\\u0091\\u00ed|?5\\u009e'\\u00c0{\\u0014\\u00aeG\\u00e1*6\\u00c0f\\u00f7\\u00e4a\\u00a16\\\"\\u00c0\\u0016jM\\u00f3\\u008es*\\u00c0\\u00af%\\u00e4\\u0083\\u009e\\u00bd6\\u00c0V}\\u00ae\\u00b6b\\u001f&\\u00c0\\u00d2o_\\u0007\\u00ce\\u0019&\\u00c0\\u00c1\\u00a8\\u00a4N@\\u00d3,\\u00c0\\u001a\\u00c0[ AQ#\\u00c0\\u000bF%u\\u0002\\u001a\\\"\\u00c0b\\u0010X9\\u00b4(,\\u00c0\\u00c7):\\u0092\\u00cb\\u00ff\\u0012\\u00c0\\u00bb'\\u000f\\u000b\\u00b5f\\u001e\\u00c0L7\\u0089A`\\u00a5/\\u00c0HP\\u00fc\\u0018s\\u00d7\\r\\u00c0\\u00d7\\u0012\\u00f2A\\u00cf&\\u0014\\u00c0\\u0081&\\u00c2\\u0086\\u00a7g0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14792105263157893 -0.096078947368421055 -0.12907894736842107 0.052321052631578949 -0.14367894736842107 0.052321052631578949 -0.12907894736842107 0.15692105263157893 -0.059978947368421055\\n0.69162105263157891 -0.5501789473684211 -0.46017894736842108 0.33042105263157895 0.12752105263157892 -0.30337894736842108 0.44412105263157892 -0.73707894736842106 0.55012105263157896\\n-0.32037894736842104 0.17792105263157892 -0.55147894736842107 0.33042105263157895 0.66902105263157896 -0.58917894736842102 -0.13277894736842108 0.066621052631578942 -0.091178947368421054\\n0.047121052631578945 0.047121052631578945 0.047121052631578945 -0.091178947368421054 0.047121052631578945 0.047121052631578945 0.047121052631578945 0.025021052631578947 0.18292105263157893\\n-0.059978947368421055 0.15692105263157893\", \"ofe-name\": \"lig_ejm_43\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.14794282857142857}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.09605717142857143}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12905717142857143}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05234282857142857}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.14365717142857143}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05234282857142857}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12905717142857143}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15694282857142858}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.05995717142857143}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.6916428285714286}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5501571714285715}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.46015717142857143}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3304428285714286}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.12754282857142857}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.30335717142857144}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.44414282857142856}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.7370571714285714}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.5501428285714286}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3203571714285714}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.17894282857142857}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5494571714285714}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3314428285714286}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.6690428285714286}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5931571714285714}, 3], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.15645717142857143}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.07564282857142858}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.07564282857142858}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.09715717142857143}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.04530982857142857}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.04530982857142857}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.04530982857142857}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.02504282857142857}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.18294282857142857}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.05995717142857143}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15694282857142858}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 34, 1, 0, {}], [3, 4, 12, 0, {}], [3, 33, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 32, 1, 0, {}], [15, 16, 12, 0, {}], [15, 31, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 25, 1, 0, {}], [24, 26, 1, 0, {}], [24, 27, 1, 0, {}], [27, 28, 1, 0, {}], [27, 29, 1, 0, {}], [27, 30, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (35, 3), } \\n\\u00ac\\u00ad\\u00d8_v\\u000f\\u0013\\u00c0\\u009a\\b\\u001b\\u009e^\\u00a9\\u0006\\u00c0\\u0019\\u0004V\\u000e-\\u00820\\u00c0\\u00b0\\u0003\\u00e7\\u008c(m\\u0015\\u00c0]\\u00dcF\\u0003x\\u008b\\r\\u00c0C\\u001c\\u00eb\\u00e26:0\\u00c0io\\u00f0\\u0085\\u00c9\\u0014\\u0013\\u00c0\\u00c5\\u008f1w-\\u00e1\\u0013\\u00c03333330\\u00c0\\u0001\\u00de\\u0002\\t\\u008a\\u001f\\u0016\\u00c0\\u00fee\\u00f7\\u00e4aa\\u0018\\u00c0a2U0*\\u00a9/\\u00c0\\u00f8\\u00c2d\\u00aa`\\u0094\\u001b\\u00c0\\u0004\\u00e7\\u008c(\\u00ed\\u00cd\\u0017\\u00c0\\u00a85\\u00cd;N\\u00f1.\\u00c0\\u00db\\u00f9~j\\u00bc\\u00f4\\u001d\\u00c0e\\u00aa`TR\\u00a7\\u0012\\u00c0\\u0091~\\u00fb:p\\u000e/\\u00c0\\u00cc\\u007fH\\u00bf}\\u00dd\\u001a\\u00c0>\\u00e8\\u00d9\\u00ac\\u00fa\\\\\\f\\u00c0\\u00aeG\\u00e1z\\u0014\\u00ce/\\u00c0\\u0001M\\u0084\\rO\\u00af\\u001c\\u00c0\\u00d5x\\u00e9&1\\u0088\\u0004\\u00c0M\\u00f3\\u008eSt\\u00e4/\\u00c0\\u009c3\\u00a2\\u00b47X\\\"\\u00c0\\u0088\\u00f4\\u00db\\u00d7\\u0081\\u00b3\\u0011\\u00c0U\\u00c1\\u00a8\\u00a4N`.\\u00c0q\\u001b\\r\\u00e0-\\u00d0\\u001e\\u00c0\\u00af%\\u00e4\\u0083\\u009e\\u008d\\u001c\\u00c0\\u0002+\\u0087\\u0016\\u00d9\\u000e.\\u00c0-!\\u001f\\u00f4l6 \\u00c0\\u009bU\\u009f\\u00ab\\u00ad\\u00d8\\u001c\\u00c0xz\\u00a5,C\\u00bc+\\u00c0T\\u00e3\\u00a5\\u009b\\u00c4\\u00a0\\u001f\\u00c0\\u0099\\u00bb\\u0096\\u0090\\u000f\\u001a \\u00c09\\u00b4\\u00c8v\\u00be\\u00ff/\\u00c0:\\u0092\\u00cb\\u007fH\\u00bf\\u001d\\u00c0:#J{\\u0083o\\u001f\\u00c0\\u001f\\u0085\\u00ebQ\\u00b8\\u00de0\\u00c0\\u00f8\\u00c2d\\u00aa`t!\\u00c0\\t\\u001b\\u009e^)k\\\"\\u00c0\\u00fee\\u00f7\\u00e4a\\u00010\\u00c0b\\u0010X9\\u00b4(#\\u00c0\\u0006\\u0081\\u0095C\\u008b,#\\u00c0h\\\"lxz\\u00e5-\\u00c0\\u0016\\u00fb\\u00cb\\u00ee\\u00c9\\u00c3$\\u00c0\\u00c1\\u00ca\\u00a1E\\u00b6s%\\u00c0\\u00cd;N\\u00d1\\u0091<.\\u00c0\\u0093\\u00a9\\u0082QI\\u00bd$\\u00c0xz\\u00a5,C\\u00fc&\\u00c0\\u00ec/\\u00bb'\\u000f;0\\u00c0\\u00b6\\u0084|\\u00d0\\u00b3\\u0019#\\u00c0\\u0002+\\u0087\\u0016\\u00d9N&\\u00c0\\u008c\\u00dbh\\u0000oA1\\u00c0\\u00fc\\u0018s\\u00d7\\u0012r!\\u00c0R'\\u00a0\\u0089\\u00b0\\u0001$\\u00c0A\\u00f1c\\u00cc]+1\\u00c04\\u00116<\\u00bd2 \\u00c0\\u0010\\u00e9\\u00b7\\u00af\\u0003g#\\u00c0 c\\u00eeZB\\u00fe1\\u00c0\\u00b2\\u009d\\u00ef\\u00a7\\u00c6+#\\u00c0\\u00b8\\u00af\\u0003\\u00e7\\u008c\\u00e8'\\u00c0V\\u000e-\\u00b2\\u009do2\\u00c00\\u00bb'\\u000f\\u000b\\u00d5$\\u00c0\\u00e8\\u00d9\\u00ac\\u00fa\\\\\\r)\\u00c0+\\u00f6\\u0097\\u00dd\\u0093\\u00872\\u00c0\\u00ac\\u001cZd;_!\\u00c0\\u00b8\\u00af\\u0003\\u00e7\\u008c((\\u00c0X\\u00ca2\\u00c4\\u00b1n3\\u00c0\\u00deq\\u008a\\u008e\\u00e4r\\u001e\\u00c0\\u00a0\\u0089\\u00b0\\u00e1\\u00e9\\u00f5&\\u00c0\\\"\\u00fd\\u00f6u\\u00e0|3\\u00c0yX\\u00a85\\u00cd\\u001b\\\"\\u00c0(\\u000f\\u000b\\u00b5\\u00a6\\u0019*\\u00c0\\u00e3\\u00a5\\u009b\\u00c4 \\u00904\\u00c01\\b\\u00ac\\u001cZ\\u00e4\\\"\\u00c0Y\\u00868\\u00d6\\u00c5\\u00ed(\\u00c0\\u00a2E\\u00b6\\u00f3\\u00fdd5\\u00c0\\u00d5\\u00e7j+\\u00f6\\u00b7#\\u00c0\\u008cJ\\u00ea\\u00044q+\\u00c0\\u00e0\\u00be\\u000e\\u009c3B4\\u00c0\\u00b3{\\u00f2\\u00b0Pk\\u001f\\u00c0\\u00bb'\\u000f\\u000b\\u00b5\\u00c6+\\u00c0\\u00b6\\u00f3\\u00fd\\u00d4x\\t5\\u00c0vq\\u001b\\r\\u00e0M \\u00c0\\u008c\\u00dbh\\u0000o!-\\u00c0\\u00bc\\u0096\\u0090\\u000fz\\u00d65\\u00c0_\\u0098L\\u0015\\u008c\\u00ca\\u001d\\u00c0\\u00d1\\u0091\\\\\\u00feC\\u00fa,\\u00c0a\\u00c3\\u00d3+e94\\u00c0K\\u00ea\\u00044\\u00116\\u001c\\u00c0\\u00a2\\u00b47\\u00f8\\u00c2\\u0084*\\u00c0[\\u00b1\\u00bf\\u00ec\\u009el5\\u00c0X9\\u00b4\\u00c8v\\u001e&\\u00c0p_\\u0007\\u00ce\\u0019\\u0011&\\u00c0\\u00ce\\u0088\\u00d2\\u00de\\u00e0\\u00ab,\\u00c0\\u00d5\\u00e7j+\\u00f6W#\\u00c0^\\u00baI\\f\\u0002\\u000b\\\"\\u00c08gDio\\u0010,\\u00c0\\u00c6m4\\u0080\\u00b7\\u0000\\u0013\\u00c0\\\\ A\\u00f1c\\u008c\\u001e\\u00c0\\u009e^)\\u00cb\\u0010\\u00a7/\\u00c0\\u00e7\\u00fb\\u00a9\\u00f1\\u00d2\\u00cd\\r\\u00c0\\u009d\\u0011\\u00a5\\u00bd\\u00c1W\\u0014\\u00c0\\u00f7\\u00e4a\\u00a1\\u00d6t0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14794282857142857 -0.096057171428571425 -0.12905717142857143 0.052342828571428572 -0.14365717142857143 0.052342828571428572 -0.12905717142857143 0.15694282857142858 -0.059957171428571432\\n0.69164282857142856 -0.55015717142857146 -0.46015717142857143 0.33044282857142859 0.12754282857142857 -0.30335717142857144 0.44414282857142856 -0.73705717142857141 0.5501428285714286\\n-0.3203571714285714 0.17894282857142857 -0.54945717142857142 0.33144282857142859 0.6690428285714286 -0.59315717142857138 -0.15645717142857143 0.07564282857142858 0.07564282857142858\\n-0.097157171428571429 0.045309828571428568 0.045309828571428568 0.045309828571428568 0.025042828571428571 0.18294282857142857 -0.059957171428571432 0.15694282857142858\", \"ofe-name\": \"lig_ejm_42\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.14805128205128204}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.09594871794871794}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12894871794871796}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05245128205128206}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.14354871794871796}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05245128205128206}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12894871794871796}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15705128205128205}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.05984871794871795}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.691751282051282}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.550048717948718}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.46004871794871793}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3305512820512821}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.12665128205128204}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.30324871794871794}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.44425128205128206}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.735948717948718}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.549251282051282}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3192487179487179}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.17805128205128204}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.547348717948718}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3325512820512821}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.703151282051282}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5950487179487179}, 3], [6, 0, 0, false, 1, 0, {\"PartialCharge\": -0.22864871794871794}, 4], [6, 0, 0, false, 2, 0, {\"PartialCharge\": -0.08964871794871794}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.09934871794871794}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.08725128205128206}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.08725128205128206}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.08175128205128206}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.08404871794871793}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.048751282051282055}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.048751282051282055}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.048751282051282055}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.09675128205128206}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.025151282051282055}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.18205128205128204}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.05984871794871795}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15705128205128205}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 38, 1, 0, {}], [3, 4, 12, 0, {}], [3, 37, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 36, 1, 0, {}], [15, 16, 12, 0, {}], [15, 35, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 26, 1, 0, {}], [24, 25, 1, 0, {}], [24, 34, 1, 0, {}], [25, 26, 1, 0, {}], [25, 29, 1, 0, {}], [25, 30, 1, 0, {}], [26, 27, 1, 0, {}], [26, 28, 1, 0, {}], [30, 31, 1, 0, {}], [30, 32, 1, 0, {}], [30, 33, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (39, 3), } \\n\\u00d5\\u00e7j+\\u00f6\\u0017\\u0013\\u00c0X\\u00a85\\u00cd;N\\u0006\\u00c0\\u00a4\\u00df\\u00be\\u000e\\u009cs0\\u00c0\\u00b5\\u00a6y\\u00c7)z\\u0015\\u00c0\\u00b5\\u00a6y\\u00c7):\\r\\u00c06\\u00ab>W[10\\u00c0\\u00eb\\u00e26\\u001a\\u00c0\\u001b\\u0013\\u00c0+\\u0087\\u0016\\u00d9\\u00ce\\u00b7\\u0013\\u00c0?W[\\u00b1\\u00bf,0\\u00c0e\\u00aa`TR'\\u0016\\u00c0\\b\\u00ac\\u001cZd;\\u0018\\u00c0\\u00db\\u008a\\u00fde\\u00f7\\u00a4/\\u00c0R'\\u00a0\\u0089\\u00b0\\u00a1\\u001b\\u00c0^\\u00baI\\f\\u0002\\u00ab\\u0017\\u00c06\\u00cd;N\\u00d1\\u00f1.\\u00c0RI\\u009d\\u0080&\\u0002\\u001e\\u00c0\\u00c4\\u00b1.n\\u00a3\\u0081\\u0012\\u00c0i\\u0000o\\u0081\\u0004\\u0005/\\u00c0H\\u00bf}\\u001d8\\u00e7\\u001a\\u00c0u\\u0093\\u0018\\u0004V\\u000e\\f\\u00c0\\u0095e\\u0088c]\\u00bc/\\u00c0\\u00bdR\\u0096!\\u008e\\u00b5\\u001c\\u00c0\\u000b$(~\\u008c9\\u0004\\u00c0\\u0007_\\u0098L\\u0015\\u00cc/\\u00c0|\\u00f2\\u00b0PkZ\\\"\\u00c0\\u00e9\\u00b7\\u00af\\u0003\\u00e7\\u008c\\u0011\\u00c0\\u00c1\\u00a8\\u00a4N@S.\\u00c0\\u00e1z\\u0014\\u00aeG\\u00e1\\u001e\\u00c0\\u00b0\\u0003\\u00e7\\u008c(m\\u001c\\u00c0\\u00f5JY\\u00868\\u0016.\\u00c0\\u00baI\\f\\u0002+G \\u00c0\\u0019s\\u00d7\\u0012\\u00f2\\u00c1\\u001c\\u00c0\\u00b9\\u008d\\u0006\\u00f0\\u0016\\u00c8+\\u00c0\\t\\u00f9\\u00a0g\\u00b3\\u00aa\\u001f\\u00c0\\u0080\\u00b7@\\u0082\\u00e2\\u0007 \\u00c0N\\u00d1\\u0091\\\\\\u00fe\\u00030\\u00c0\\n\\u00d7\\u00a3p=\\u00ca\\u001d\\u00c0v\\u00e0\\u009c\\u0011\\u00a5=\\u001f\\u00c0\\u0017\\u00b7\\u00d1\\u0000\\u00de\\u00e20\\u00c0\\u00b1Pk\\u009aw|!\\u00c0\\u0010X9\\u00b4\\u00c8V\\\"\\u00c0I.\\u00ff!\\u00fd\\u00060\\u00c0\\u00f3\\u001f\\u00d2o_'#\\u00c0\\u0096\\u00b2\\fq\\u00ac+#\\u00c0\\u00cb\\u0010\\u00c7\\u00ba\\u00b8\\u00ed-\\u00c0\\u00a9\\u00a4N@\\u0013\\u00c1$\\u00c0m\\u00e7\\u00fb\\u00a9\\u00f1r%\\u00c0\\u00e2\\u00e9\\u0095\\u00b2\\fQ.\\u00c0sh\\u0091\\u00ed|\\u00bf$\\u00c0\\u0006\\u0081\\u0095C\\u008b\\u00ec&\\u00c0`\\u00e5\\u00d0\\\"\\u00dbI0\\u00c0 A\\u00f1c\\u00cc\\u001d#\\u00c0\\u0001M\\u0084\\rO/&\\u00c0<\\u00bdR\\u0096!N1\\u00c0\\u00a6\\nF%u\\u0082!\\u00c0\\u0094\\u0087\\u0085Z\\u00d3\\u00dc#\\u00c0\\u0085|\\u00d0\\u00b3Y51\\u00c0\\u00d0D\\u00d8\\u00f0\\u00f4J \\u00c0\\u001dZd;\\u00df/#\\u00c0\\rq\\u00ac\\u008b\\u00db\\b2\\u00c0\\u0012\\u0083\\u00c0\\u00ca\\u00a1%#\\u00c05^\\u00baI\\f\\u00c2'\\u00c0\\u00e8j+\\u00f6\\u0097}2\\u00c0\\u0014\\u00aeG\\u00e1z\\u00d4$\\u00c0\\u009f\\u00cd\\u00aa\\u00cf\\u00d5\\u00d6(\\u00c0\\u001a\\u00c0[ A\\u00a12\\u00c0\\u00c7):\\u0092\\u00cb?!\\u00c0i\\u0000o\\u0081\\u0004\\u0005(\\u00c0q\\u001b\\r\\u00e0-p3\\u00c0Y\\u00868\\u00d6\\u00c5-\\u001e\\u00c0f\\u00f7\\u00e4a\\u00a1\\u00d6&\\u00c0\\u00ae\\u00b6b\\u007f\\u00d9m3\\u00c0\\u00f3\\u001f\\u00d2o_\\u0007\\\"\\u00c0\\u00a7\\u00e8H.\\u00ff\\u00e1)\\u00c0\\u00d3\\u00de\\u00e0\\u000b\\u0093\\u00894\\u00c0x\\u009c\\u00a2#\\u00b9\\u00fc\\u001f\\u00c0\\u00b7b\\u007f\\u00d9=\\u00b9+\\u00c0.\\u0090\\u00a0\\u00f8165\\u00c0r\\u008a\\u008e\\u00e4\\u00f2\\u00ff \\u00c0\\u0080\\u00b7@\\u0082\\u00e2G)\\u00c0\\u001f\\u00f4lV}\\u00ee5\\u00c0X9\\u00b4\\u00c8v>\\u001f\\u00c0\\\\\\u008f\\u00c2\\u00f5(\\u009c'\\u00c0\\u00ca2\\u00c4\\u00b1.\\u000e6\\u00c0\\u0002\\u009a\\b\\u001b\\u009e^\\\"\\u00c0.\\u00ff!\\u00fd\\u00f6\\u0095)\\u00c0O\\u001e\\u0016jM\\u00c36\\u00c0\\u0096!\\u008euq\\u00db \\u00c0\\u0095e\\u0088c]\\u009c-\\u00c0\\u00f4\\u00fd\\u00d4x\\u00e9\\u00865\\u00c0\\u00d4+e\\u0019\\u00e2\\u0018\\u001a\\u00c0\\u0019s\\u00d7\\u0012\\u00f2\\u0001,\\u00c0\\u0083/L\\u00a6\\n\\u00e64\\u00c0\\u00bb'\\u000f\\u000b\\u00b5&\\u0018\\u00c0\\u00be0\\u0099*\\u0018\\u0015*\\u00c0\\u00c7K7\\u0089A\\u00c04\\u00c0\\u00d2\\u0000\\u00de\\u0002\\t\\n\\u0018\\u00c0\\u00e7\\u00fb\\u00a9\\u00f1\\u00d2\\r-\\u00c0\\u0012\\u00a5\\u00bd\\u00c1\\u0017\\u00b65\\u00c0\\u00b57\\u00f8\\u00c2d\\u00aa\\u0019\\u00c0Q\\u00da\\u001b|a2-\\u00c0 c\\u00eeZB\\u00fe3\\u00c0\\u00a8W\\u00ca2\\u00c4\\u0011$\\u00c0\\u0017\\u00b7\\u00d1\\u0000\\u00de\\u00a2*\\u00c0\\u00ea\\u0095\\u00b2\\fq|4\\u00c0\\u00a3\\u0001\\u00bc\\u0005\\u0012\\u0014&\\u00c0\\u0017\\u00d9\\u00ce\\u00f7S#&\\u00c0\\u008b\\u00fde\\u00f7\\u00e4\\u00c1,\\u00c0\\u009c\\u00a2#\\u00b9\\u00fcG#\\u00c0\\u000bF%u\\u0002\\u001a\\\"\\u00c0\\u00e7\\u001d\\u00a7\\u00e8H\\u000e,\\u00c0\\u00f6\\u0097\\u00dd\\u0093\\u0087\\u0005\\u0013\\u00c0\\u00e6\\u00ae%\\u00e4\\u0083^\\u001e\\u00c0\\u00be\\u009f\\u001a/\\u00dd\\u00a4/\\u00c0\\u00d7\\u00a3p=\\n\\u00d7\\r\\u00c0)\\\\\\u008f\\u00c2\\u00f5(\\u0014\\u00c0\\u00e9H.\\u00ff!m0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14805128205128204 -0.09594871794871794 -0.12894871794871796 0.052451282051282057 -0.14354871794871796 0.052451282051282057 -0.12894871794871796 0.15705128205128205 -0.059848717948717947\\n0.691751282051282 -0.55004871794871801 -0.46004871794871793 0.33055128205128209 0.12665128205128204 -0.30324871794871794 0.44425128205128206 -0.73594871794871797 0.54925128205128204\\n-0.3192487179487179 0.17805128205128204 -0.54734871794871798 0.33255128205128209 0.70315128205128197 -0.59504871794871794 -0.22864871794871794 -0.08964871794871794 -0.099348717948717941\\n0.087251282051282061 0.087251282051282061 0.081751282051282056 -0.084048717948717933 0.048751282051282055 0.048751282051282055 0.048751282051282055 0.096751282051282056\\n0.025151282051282055 0.18205128205128204 -0.059848717948717947 0.15705128205128205\", \"ofe-name\": \"lig_jmc_28\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.148030303030303}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.09596969696969697}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12846969696969698}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05243030303030303}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.14356969696969699}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05243030303030303}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12846969696969698}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15703030303030302}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.060369696969696976}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.691730303030303}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.549069696969697}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.46106969696969696}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.33053030303030306}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.127630303030303}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.30126969696969697}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.44423030303030303}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.7319696969696969}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.5472303030303031}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3212696969696969}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.178030303030303}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.541369696969697}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.346530303030303}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.626130303030303}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5940696969696969}, 3], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.055430303030303024}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.08473030303030303}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.08473030303030303}, 1], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5877696969696969}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.411030303030303}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.027130303030303025}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.18303030303030302}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.060369696969696976}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15703030303030302}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 32, 1, 0, {}], [3, 4, 12, 0, {}], [3, 31, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 30, 1, 0, {}], [15, 16, 12, 0, {}], [15, 29, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 25, 1, 0, {}], [24, 26, 1, 0, {}], [24, 27, 1, 0, {}], [27, 28, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (33, 3), } \\n\\u0000\\u0091~\\u00fb:0\\u0013\\u00c0lxz\\u00a5,C\\u0006\\u00c0\\u009d\\u0080&\\u00c2\\u0086w0\\u00c02\\u00e6\\u00ae%\\u00e4\\u0083\\u0015\\u00c0\\b\\u00ac\\u001cZd;\\r\\u00c0\\u0015\\u008cJ\\u00ea\\u000440\\u00c0\\u00c2\\u0017&S\\u0005#\\u0013\\u00c0\\u00a4\\u00df\\u00be\\u000e\\u009c\\u00b3\\u0013\\u00c0\\u008d\\u0097n\\u0012\\u008300\\u00c0L7\\u0089A`%\\u0016\\u00c0]m\\u00c5\\u00fe\\u00b2;\\u0018\\u00c0KY\\u00868\\u00d6\\u00a5/\\u00c0@\\u00a4\\u00df\\u00be\\u000e\\u009c\\u001b\\u00c0e\\u0019\\u00e2X\\u0017\\u00b7\\u0017\\u00c0#J{\\u0083/\\u00ec.\\u00c0\\u00e4\\u0014\\u001d\\u00c9\\u00e5\\u00ff\\u001d\\u00c0\\u00c1\\u00a8\\u00a4N@\\u0093\\u0012\\u00c0\\u00aa`TR'\\u0000/\\u00c0\\u001a\\u00c0[ A\\u00f1\\u001a\\u00c0\\u00ed\\r\\u00be0\\u0099*\\f\\u00c0\\u0007\\u00ce\\u0019Q\\u00da\\u00bb/\\u00c0\\u0012\\u0083\\u00c0\\u00ca\\u00a1\\u00c5\\u001c\\u00c0\\u00d0\\u00b3Y\\u00f5\\u00b9Z\\u0004\\u00c0\\u00d3\\u00bc\\u00e3\\u0014\\u001d\\u00c9/\\u00c0&S\\u0005\\u00a3\\u0092Z\\\"\\u00c0W[\\u00b1\\u00bf\\u00ec\\u009e\\u0011\\u00c0\\\"\\u008euq\\u001bM.\\u00c0\\u00f7\\u0006_\\u0098L\\u00d5\\u001e\\u00c0\\u00d0\\u00d5V\\u00ec/{\\u001c\\u00c0vO\\u001e\\u0016j\\r.\\u00c0Dio\\u00f0\\u0085I \\u00c0\\u00e7\\u008c(\\u00ed\\r\\u00be\\u001c\\u00c0p\\u00ce\\u0088\\u00d2\\u00de\\u00c0+\\u00c0\\u00b7\\u00d1\\u0000\\u00de\\u0002\\u0089\\u001f\\u00c0\\u00f1\\u00f4JY\\u0086\\u0018 \\u00c0\\u000e\\u00be0\\u0099*\\u00f8/\\u00c0\\u00d2o_\\u0007\\u00ce\\u0099\\u001d\\u00c0\\u0083\\u00c0\\u00ca\\u00a1Ev\\u001f\\u00c0'\\u00a0\\u0089\\u00b0\\u00e1\\u00d90\\u00c0\\u00ecQ\\u00b8\\u001e\\u0085k!\\u00c0\\u009c\\u00a2#\\u00b9\\u00fcg\\\"\\u00c0\\u0007\\u00f0\\u0016HP\\u00fc/\\u00c0\\u0014?\\u00c6\\u00dc\\u00b5$#\\u00c0\\u0007_\\u0098L\\u0015,#\\u00c0\\u00fc\\u00a9\\u00f1\\u00d2M\\u00e2-\\u00c0S\\u0005\\u00a3\\u0092:\\u00c1$\\u00c07\\u0089A`\\u00e5p%\\u00c0=,\\u00d4\\u009a\\u00e6=.\\u00c0\\u00b8\\u001e\\u0085\\u00ebQ\\u00b8$\\u00c0\\u00c1\\u00ca\\u00a1E\\u00b6\\u00f3&\\u00c0\\u0093\\u0018\\u0004V\\u000e=0\\u00c0\\u0002+\\u0087\\u0016\\u00d9\\u000e#\\u00c00L\\u00a6\\nFE&\\u00c0TR'\\u00a0\\u0089@1\\u00c0\\u00f7u\\u00e0\\u009c\\u0011e!\\u00c0]m\\u00c5\\u00fe\\u00b2\\u00fb#\\u00c0\\u00f0\\u0016HP\\u00fc(1\\u00c0\\u001d\\u00c9\\u00e5?\\u00a4\\u001f \\u00c0\\u0088\\u0085Z\\u00d3\\u00bcc#\\u00c0z\\u00a5,C\\u001c\\u00fb1\\u00c0\\u0081\\u0095C\\u008bl'#\\u00c0,e\\u0019\\u00e2X\\u00d7'\\u00c0\\u00caT\\u00c1\\u00a8\\u00a4n2\\u00c0\\u00ed\\u009e<,\\u00d4\\u00da$\\u00c0]\\u00feC\\u00fa\\u00ed\\u00eb(\\u00c0c\\u00eeZB>\\u00882\\u00c0\\u00e9&1\\b\\u00ac\\\\!\\u00c0:\\u0092\\u00cb\\u007fH\\u001f(\\u00c0\\u00cb\\u0010\\u00c7\\u00ba\\u00b8m3\\u00c0\\u00ac\\u00ad\\u00d8_vO\\u001e\\u00c0\\u00d9\\u00ce\\u00f7S\\u00e3\\u0005'\\u00c0\\u00eeZB>\\u00e8y3\\u00c0\\u0091\\u000fz6\\u00ab>\\\"\\u00c0\\u00bct\\u0093\\u0018\\u0004\\u00f6)\\u00c0\\u0089\\u00d2\\u00de\\u00e0\\u000b\\u00934\\u00c0\\u00db\\u00f9~j\\u00bc\\u00b4\\\"\\u00c0q\\u00ac\\u008b\\u00dbh\\u00c0(\\u00c0\\u0016jM\\u00f3\\u008es5\\u00c0\\u008d(\\u00ed\\r\\u00be\\u0010$\\u00c0\\u00ee\\u00eb\\u00c09#\\n+\\u00c0t$\\u0097\\u00ff\\u0090N4\\u00c0\\u0099\\u00bb\\u0096\\u0090\\u000f: \\u00c0\\u00d7\\u00a3p=\\n\\u00d7+\\u00c0\\u00d9\\u00ce\\u00f7S\\u00e3\\u00e54\\u00c0^\\u00baI\\f\\u0002\\u00eb \\u00c0\\u00a3#\\u00b9\\u00fc\\u0087\\u00f4,\\u00c01\\b\\u00ac\\u001cZ\\u00945\\u00c0\\u0095e\\u0088c]\\u001c&\\u00c0\\u00fb:p\\u00ce\\u0088\\u0012&\\u00c0s\\u00d7\\u0012\\u00f2A\\u00af,\\u00c0\\u0000o\\u0081\\u0004\\u00c5O#\\u00c0TR'\\u00a0\\u0089\\u0010\\\"\\u00c0'\\u00c2\\u0086\\u00a7W\\n,\\u00c0S\\u0096!\\u008eu\\u00f1\\u0012\\u00c0\\u0081&\\u00c2\\u0086\\u00a7W\\u001e\\u00c0M\\u0015\\u008cJ\\u00ea\\u00a4/\\u00c0\\u00b0\\u0003\\u00e7\\u008c(\\u00ed\\r\\u00c0\\u00ac\\u001cZd;\\u001f\\u0014\\u00c0O\\u00af\\u0094e\\u0088s0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14803030303030301 -0.095969696969696969 -0.12846969696969698 0.052430303030303028 -0.14356969696969699 0.052430303030303028 -0.12846969696969698 0.15703030303030302 -0.060369696969696976\\n0.69173030303030303 -0.54906969696969699 -0.46106969696969696 0.33053030303030306 0.12763030303030301 -0.30126969696969697 0.44423030303030303 -0.73196969696969694 0.54723030303030307\\n-0.32126969696969693 0.17803030303030301 -0.54136969696969695 0.34653030303030302 0.62613030303030304 -0.59406969696969691 0.055430303030303024 0.084730303030303031 0.084730303030303031\\n-0.58776969696969694 0.41103030303030302 0.027130303030303025 0.18303030303030302 -0.060369696969696976 0.15703030303030302\", \"ofe-name\": \"lig_ejm_50\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.148}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.096}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.129}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.0524}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.1436}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.0524}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.129}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.157}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.0599}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.6917}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5501}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.4601}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3305}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.1266}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3033}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.4442}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.736}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.5502}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3203}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.178}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5474}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3335}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.7001}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5931}, 3], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.2297}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.1039}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.1039}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.0842}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.0842}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.0842}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.0842}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.0987}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.0251}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.183}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.0599}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.157}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 35, 1, 0, {}], [3, 4, 12, 0, {}], [3, 34, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 33, 1, 0, {}], [15, 16, 12, 0, {}], [15, 32, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 26, 1, 0, {}], [24, 25, 1, 0, {}], [24, 31, 1, 0, {}], [25, 26, 1, 0, {}], [25, 29, 1, 0, {}], [25, 30, 1, 0, {}], [26, 27, 1, 0, {}], [26, 28, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (36, 3), } \\n\\u00adi\\u00deq\\u008a\\u000e\\u0013\\u00c0\\u00d3Mb\\u0010X\\u00b9\\u0006\\u00c0\\u00dfO\\u008d\\u0097n\\u00820\\u00c0\\u00cff\\u00d5\\u00e7jk\\u0015\\u00c0\\u008c\\u00b9k\\t\\u00f9\\u00a0\\r\\u00c0\\u00ee|?5^:0\\u00c0\\u001dZd;\\u00df\\u000f\\u0013\\u00c0\\u00b57\\u00f8\\u00c2d\\u00ea\\u0013\\u00c0\\u0018&S\\u0005\\u00a320\\u00c0\\u009a\\u0099\\u0099\\u0099\\u0099\\u0019\\u0016\\u00c0\\u00ea\\u0095\\u00b2\\fql\\u0018\\u00c0\\u00d6V\\u00ec/\\u00bb\\u00a7/\\u00c0q\\u001b\\r\\u00e0-\\u0090\\u001b\\u00c0'1\\b\\u00ac\\u001c\\u00da\\u0017\\u00c0\\u00c5\\u00fe\\u00b2{\\u00f2\\u00f0.\\u00c0m\\u00c5\\u00fe\\u00b2{\\u00f2\\u001d\\u00c0\\u00db\\u00f9~j\\u00bc\\u00b4\\u0012\\u00c0;\\u00dfO\\u008d\\u0097\\u000e/\\u00c0\\u00e9&1\\b\\u00ac\\u00dc\\u001a\\u00c0.\\u00ff!\\u00fd\\u00f6u\\f\\u00c0\\u008f\\u00c2\\u00f5(\\\\\\u00cf/\\u00c0\\u00e5a\\u00a1\\u00d64\\u00af\\u001c\\u00c0\\u00a4p=\\n\\u00d7\\u00a3\\u0004\\u00c0\\u00bc\\u0005\\u0012\\u0014?\\u00e6/\\u00c0\\u00bdR\\u0096!\\u008eU\\\"\\u00c0\\u00e9H.\\u00ff!\\u00bd\\u0011\\u00c09\\u00d6\\u00c5m4`.\\u00c0\\u00e6?\\u00a4\\u00df\\u00be\\u00ce\\u001e\\u00c0\\u00f2\\u00d2Mb\\u0010\\u0098\\u001c\\u00c0\\u00e4\\u0083\\u009e\\u00cd\\u00aa\\u000f.\\u00c0\\u00e8j+\\u00f6\\u0097= \\u00c0\\u00ac\\u001cZd;\\u00df\\u001c\\u00c0\\u001e\\u00a7\\u00e8H.\\u00bf+\\u00c0\\u00cf\\u00f7S\\u00e3\\u00a5\\u009b\\u001f\\u00c0\\u008euq\\u001b\\r \\u00c0sh\\u0091\\u00ed|\\u00ff/\\u00c0Gr\\u00f9\\u000f\\u00e9\\u00b7\\u001d\\u00c0Z\\u00f5\\u00b9\\u00da\\u008a}\\u001f\\u00c0\\u00caT\\u00c1\\u00a8\\u00a4\\u00de0\\u00c0m\\u00e7\\u00fb\\u00a9\\u00f1r!\\u00c0\\u008e\\u0006\\u00f0\\u0016Hp\\\"\\u00c0\\u0019\\u00e2X\\u0017\\u00b7\\u00010\\u00c0\\u00b6\\u00f3\\u00fd\\u00d4x)#\\u00c0L\\u00a6\\nF%5#\\u00c0\\u00d4\\u009a\\u00e6\\u001d\\u00a7\\u00e8-\\u00c0\\u0012\\u00a5\\u00bd\\u00c1\\u0017\\u00c6$\\u00c0\\u0097\\u00ff\\u0090~\\u00fbz%\\u00c0\\u00f3\\u001f\\u00d2o_G.\\u00c0[\\u00b1\\u00bf\\u00ec\\u009e\\u00bc$\\u00c0V}\\u00ae\\u00b6b\\u00ff&\\u00c0o\\u0081\\u0004\\u00c5\\u008fA0\\u00c00\\u00bb'\\u000f\\u000b\\u0015#\\u00c0\\u0003\\t\\u008a\\u001fcN&\\u00c0\\u00a1g\\u00b3\\u00easE1\\u00c0Y\\u00868\\u00d6\\u00c5m!\\u00c0\\u00fc\\u00a9\\u00f1\\u00d2M\\u0002$\\u00c0\\u00ea\\u0095\\u00b2\\fq,1\\u00c0vO\\u001e\\u0016j- \\u00c0\\u00fa\\u00ed\\u00eb\\u00c09c#\\u00c0=,\\u00d4\\u009a\\u00e6\\u00fd1\\u00c0\\u0003x\\u000b$(\\u001e#\\u00c0R'\\u00a0\\u0089\\u00b0\\u00e1'\\u00c0L\\u00a6\\nF%u2\\u00c0{\\u0014\\u00aeG\\u00e1\\u00ba$\\u00c0\\u00d8\\u0081sF\\u0094\\u0016)\\u00c0\\u0003\\t\\u008a\\u001fc\\u008e2\\u00c0\\u0012\\u0083\\u00c0\\u00ca\\u00a1E!\\u00c0Gr\\u00f9\\u000f\\u00e9\\u0017(\\u00c0TR'\\u00a0\\u0089p3\\u00c0\\u0011\\u00c7\\u00ba\\u00b8\\u008dF\\u001e\\u00c0[\\u00b1\\u00bf\\u00ec\\u009e\\u00dc&\\u00c0_)\\u00cb\\u0010\\u00c7z3\\u00c0~\\u001d8gD\\t\\\"\\u00c0\\u00d5x\\u00e9&1\\b*\\u00c0Qk\\u009aw\\u009c\\u00824\\u00c0\\u00d9_vO\\u001e6!\\u00c0;\\u0001M\\u0084\\ro)\\u00c0\\u0001\\u00de\\u0002\\t\\u008a\\u00ef5\\u00c09\\u00b4\\u00c8v\\u00be\\u009f\\u001f\\u00c0\\u00ad\\u00fa\\\\m\\u00c5\\u009e+\\u00c0B\\u00cff\\u00d5\\u00e7*5\\u00c0\\u00c7K7\\u0089A@ \\u00c0\\u0003\\t\\u008a\\u001fc\\u00ae-\\u00c0\\u00ad\\u00fa\\\\m\\u00c5n5\\u00c0S\\u0005\\u00a3\\u0092:\\u0081\\u001b\\u00c0[\\u00d3\\u00bc\\u00e3\\u0014=+\\u00c0\\u00caT\\u00c1\\u00a8\\u00a4\\u00de4\\u00c0\\u0019\\u0004V\\u000e-\\u0012 \\u00c0\\u0000\\u0000\\u0000\\u0000\\u0000\\u00a0'\\u00c02\\u00e6\\u00ae%\\u00e4#6\\u00c0\\u0018\\u0095\\u00d4\\th\\u00a2\\\"\\u00c0?\\u00c6\\u00dc\\u00b5\\u0084\\u00fc)\\u00c0\\u0084\\u009e\\u00cd\\u00aa\\u00cf\\u00b56\\u00c0m\\u00c5\\u00fe\\u00b2{\\u00f2#\\u00c0B\\u00cff\\u00d5\\u00e7\\n+\\u00c0\\u00c1\\u00ca\\u00a1E\\u00b6c4\\u00c0J{\\u0083/L&&\\u00c0\\u00d8\\u0081sF\\u0094\\u0016&\\u00c0_\\u0007\\u00ce\\u0019Q\\u00ba,\\u00c0\\u00f5JY\\u00868V#\\u00c0K\\u00ea\\u00044\\u0011\\u0016\\\"\\u00c0\\u00c2\\u0086\\u00a7W\\u00ca\\u0012,\\u00c0\\u00c1\\u00ca\\u00a1E\\u00b6\\u00f3\\u0012\\u00c0\\u008cJ\\u00ea\\u00044\\u0091\\u001e\\u00c0\\u00a1\\u00d64\\u00ef8\\u00a5/\\u00c0\\u00a1\\u00d64\\u00ef8\\u00c5\\r\\u00c0 A\\u00f1c\\u00cc]\\u0014\\u00c0\\u00dc\\u00d7\\u0081sFt0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14799999999999999 -0.096000000000000002 -0.129 0.052400000000000002 -0.14360000000000001 0.052400000000000002 -0.129 0.157 -0.059900000000000002 0.69169999999999998 -0.55010000000000003\\n-0.46010000000000001 0.33050000000000002 0.12659999999999999 -0.30330000000000001 0.44419999999999998 -0.73599999999999999 0.55020000000000002 -0.32029999999999997 0.17799999999999999\\n-0.5474 0.33350000000000002 0.70009999999999994 -0.59309999999999996 -0.22969999999999999 -0.10390000000000001 -0.10390000000000001 0.084199999999999997 0.084199999999999997\\n0.084199999999999997 0.084199999999999997 0.098699999999999996 0.025100000000000001 0.183 -0.059900000000000002 0.157\", \"ofe-name\": \"lig_ejm_46\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.14794871794871794}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.09605128205128205}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12905128205128205}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05234871794871795}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.14365128205128205}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05234871794871795}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.12905128205128205}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15694871794871795}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.05995128205128206}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.691648717948718}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.550151282051282}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.4601512820512821}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.33044871794871794}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.12754871794871794}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3033512820512821}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.4441487179487179}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.737051282051282}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.550148717948718}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.32035128205128205}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.17794871794871794}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.551451282051282}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.33144871794871794}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.682048717948718}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.591151282051282}, 3], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.16775128205128204}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.08245128205128205}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.09445128205128205}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.08245128205128205}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.06289871794871796}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.06289871794871796}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.055648717948717945}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.055648717948717945}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.06289871794871796}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.06289871794871796}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.08564871794871795}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.025048717948717946}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.18294871794871795}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.05995128205128206}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.15694871794871795}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 38, 1, 0, {}], [3, 4, 12, 0, {}], [3, 37, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 36, 1, 0, {}], [15, 16, 12, 0, {}], [15, 35, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 27, 1, 0, {}], [24, 25, 1, 0, {}], [24, 34, 1, 0, {}], [25, 26, 1, 0, {}], [25, 32, 1, 0, {}], [25, 33, 1, 0, {}], [26, 27, 1, 0, {}], [26, 30, 1, 0, {}], [26, 31, 1, 0, {}], [27, 28, 1, 0, {}], [27, 29, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (39, 3), } \\n/\\u00dd$\\u0006\\u0081\\u0015\\u0013\\u00c0 A\\u00f1c\\u00cc]\\u0006\\u00c0\\u00e5\\u00f2\\u001f\\u00d2o\\u007f0\\u00c0\\u00deq\\u008a\\u008e\\u00e4r\\u0015\\u00c0\\u0080\\u00b7@\\u0082\\u00e2G\\r\\u00c0aTR'\\u00a090\\u00c0\\u00f91\\u00e6\\u00ae%\\u00e4\\u001a\\u00c0\\u0001\\u00de\\u0002\\t\\u008a\\u001f\\f\\u00c0\\u00e5a\\u00a1\\u00d64\\u00cf/\\u00c0\\u00e5\\u00d0\\\"\\u00db\\u00f9\\u00fe\\u001d\\u00c0I\\u009d\\u0080&\\u00c2\\u0086\\u0012\\u00c0Nb\\u0010X9\\u0014/\\u00c0k\\u009aw\\u009c\\u00a2\\u00a3\\u001b\\u00c0\\u00c9v\\u00be\\u009f\\u001a\\u00af\\u0017\\u00c0+\\u0087\\u0016\\u00d9\\u00ce\\u00f7.\\u00c0`vO\\u001e\\u0016*\\u0016\\u00c0V}\\u00ae\\u00b6b?\\u0018\\u00c0\\\"lxz\\u00a5\\u00ac/\\u00c0$\\u00b9\\u00fc\\u0087\\u00f4\\u001b\\u0013\\u00c0\\u00c9\\u00e5?\\u00a4\\u00df\\u00be\\u0013\\u00c0\\u00de\\u0002\\t\\u008a\\u001f30\\u00c0f\\u00f7\\u00e4a\\u00a1\\u00d6\\r\\u00c0:#J{\\u0083/\\u0014\\u00c0\\u00a8W\\u00ca2\\u00c4q0\\u00c0:\\u0092\\u00cb\\u007fH\\u00ff\\u0012\\u00c09\\u00b4\\u00c8v\\u00be_\\u001e\\u00c0\\u00db\\u008a\\u00fde\\u00f7\\u00a4/\\u00c03\\u00c4\\u00b1.n\\u00e3\\u001e\\u00c0\\u00e5a\\u00a1\\u00d64o\\u001c\\u00c0\\u00868\\u00d6\\u00c5m\\u0014.\\u00c0=\\n\\u00d7\\u00a3p= \\u00c0(~\\u008c\\u00b9k\\u00c9\\u001c\\u00c0\\u00e2X\\u0017\\u00b7\\u00d1\\u00c0+\\u00c0$(~\\u008c\\u00b9\\u00ab\\u001f\\u00c0\\u00b1\\u00bf\\u00ec\\u009e<\\f \\u00c0R\\u00b8\\u001e\\u0085\\u00eb\\u00010\\u00c0\\u000f\\u000b\\u00b5\\u00a6y\\u00c7\\u001d\\u00c0/\\u00dd$\\u0006\\u0081U\\u001f\\u00c0\\u001b\\u009e^)\\u00cb\\u00e00\\u00c0\\u00cb\\u00a1E\\u00b6\\u00f3}!\\u00c0\\u0097\\u00ff\\u0090~\\u00fbZ\\\"\\u00c0\\u00bct\\u0093\\u0018\\u0004\\u00060\\u00c0\\u009d\\u0080&\\u00c2\\u0086'#\\u00c0\\u0006\\u0081\\u0095C\\u008b,#\\u00c0\\u00b1\\u00bf\\u00ec\\u009e<\\u00ec-\\u00c0\\u0019s\\u00d7\\u0012\\u00f2\\u00c1$\\u00c0\\u00fa~j\\u00bcts%\\u00c0\\u0004\\u00e7\\u008c(\\u00edM.\\u00c0\\u0000\\u0000\\u0000\\u0000\\u0000\\u00c0$\\u00c0\\u001f\\u00f4lV}\\u00ee&\\u00c0b\\u0010X9\\u00b4H0\\u00c0\\u001b/\\u00dd$\\u0006!#\\u00c0\\u00a2E\\u00b6\\u00f3\\u00fd4&\\u00c0\\u0091\\u000fz6\\u00abN1\\u00c0\\u00c2\\u0017&S\\u0005\\u0083!\\u00c0\\u00e0\\u00be\\u000e\\u009c3\\u00e2#\\u00c0\\u00db\\u008a\\u00fde\\u00f741\\u00c0\\u009c\\u00a2#\\u00b9\\u00fcG \\u00c0E\\u00d8\\u00f0\\u00f4J9#\\u00c0\\u0081\\u0095C\\u008bl\\u00072\\u00c0+\\u0018\\u0095\\u00d4\\t(#\\u00c0\\u00d3\\u00de\\u00e0\\u000b\\u0093\\u00c9'\\u00c0;\\u0001M\\u0084\\r\\u007f2\\u00c0\\u00e6?\\u00a4\\u00df\\u00be\\u00ce$\\u00c0t\\u00b5\\u0015\\u00fb\\u00cb\\u00ee(\\u00c0\\u0097\\u00ff\\u0090~\\u00fb\\u009a2\\u00c00L\\u00a6\\nFE!\\u00c0'\\u00a0\\u0089\\u00b0\\u00e1\\t(\\u00c0\\u00f7u\\u00e0\\u009c\\u0011u3\\u00c0X\\u00a85\\u00cd;N\\u001e\\u00c0\\u00b7\\u00d1\\u0000\\u00de\\u0002\\u00c9&\\u00c0C\\u001c\\u00eb\\u00e26z3\\u00c0\\u00f1\\u00f4JY\\u0086\\u00d8!\\u00c0\\u00adi\\u00deq\\u008a\\u000e*\\u00c0\\u00f5\\u00b9\\u00da\\u008a\\u00fd\\u00954\\u00c0\\u00eeZB>\\u00e8Y!\\u00c0f\\u0088c]\\u00dc\\u0006)\\u00c0\\u00f7u\\u00e0\\u009c\\u0011\\u00056\\u00c0Dio\\u00f0\\u0085\\t \\u00c0\\u00bct\\u0093\\u0018\\u0004\\u00b6+\\u00c0\\u007f\\u00fb:p\\u00ceX6\\u00c0k+\\u00f6\\u0097\\u00dd\\u0013\\u001f\\u00c0'\\u00c2\\u0086\\u00a7W\\n,\\u00c0b\\u0010X9\\u00b4\\u00d84\\u00c0\\u0007_\\u0098L\\u0015\\u00cc\\u001f\\u00c09EGr\\u00f9\\u000f.\\u00c0#\\u00db\\u00f9~j|4\\u00c0\\u00fee\\u00f7\\u00e4a!\\u001b\\u00c0\\u00da\\u001b|a2U+\\u00c0{\\u0083/L\\u00a6\\u008a4\\u00c0\\u00d0\\u00d5V\\u00ec/{\\u001c\\u00c0\\u007fj\\u00bct\\u0093\\u0098+\\u00c0\\u009f<,\\u00d4\\u009a\\u00f66\\u00c0J\\f\\u0002+\\u0087v!\\u00c0\\u00b4Y\\u00f5\\u00b9\\u00da*-\\u00c0\\u0093\\u00a9\\u0082QI\\u00bd6\\u00c0@\\u0013a\\u00c3\\u00d3\\u00eb\\u001f\\u00c0`\\u00e5\\u00d0\\\"\\u00dbY'\\u00c0\\u0082sF\\u0094\\u00f6\\u00166\\u00c0\\u0081\\u0095C\\u008bl'#\\u00c0lxz\\u00a5,\\u00a3(\\u00c0a2U0*\\u00996\\u00c0d\\u00cc]K\\u00c8\\u00c7#\\u00c0\\u00c9v\\u00be\\u009f\\u001a\\u000f+\\u00c0\\u00e5\\u00f2\\u001f\\u00d2o\\u007f4\\u00c0\\u0086Z\\u00d3\\u00bc\\u00e3\\u0014&\\u00c0:\\u0092\\u00cb\\u007fH\\u001f&\\u00c0\\u00b3\\fq\\u00ac\\u008b\\u00bb,\\u00c0\\u009d\\u0080&\\u00c2\\u0086G#\\u00c0Gr\\u00f9\\u000f\\u00e9\\u0017\\\"\\u00c0\\u0003\\t\\u008a\\u001fc\\u000e,\\u00c0_)\\u00cb\\u0010\\u00c7Z\\\"\\u00c0\\u00a5N@\\u0013a\\u0083\\u0011\\u00c0\\u00b6\\u00f3\\u00fd\\u00d4xi.\\u00c0\\u00f9\\u00a0g\\u00b3\\u00ea\\u00b3\\u001c\\u00c0\\u00ee\\u00eb\\u00c09#J\\u0004\\u00c0\\u00c19#J{\\u00e3/\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14794871794871794 -0.09605128205128205 -0.12905128205128205 0.052348717948717947 -0.14365128205128205 0.052348717948717947 -0.12905128205128205 0.15694871794871795 -0.059951282051282057\\n0.69164871794871796 -0.55015128205128205 -0.46015128205128208 0.33044871794871794 0.12754871794871794 -0.30335128205128209 0.44414871794871791 -0.73705128205128201 0.550148717948718\\n-0.32035128205128205 0.17794871794871794 -0.55145128205128202 0.33144871794871794 0.68204871794871802 -0.59115128205128198 -0.16775128205128204 -0.082451282051282049 -0.094451282051282046\\n-0.082451282051282049 0.062898717948717958 0.062898717948717958 0.055648717948717945 0.055648717948717945 0.062898717948717958 0.062898717948717958 0.085648717948717951\\n0.025048717948717946 0.18294871794871795 -0.059951282051282057 0.15694871794871795\", \"ofe-name\": \"lig_ejm_47\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.148}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.096}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.129}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.0519}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.1436}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.0519}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.129}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.157}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.0599}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.6917}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5501}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.4601}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3305}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.1266}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3033}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.4442}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.737}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.5492}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3193}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.178}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5514}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3315}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.6741}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5911}, 3], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.1387}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.0764}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.0794}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.0794}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.0764}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.05595}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.05595}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.04545}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.04545}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.04545}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.04545}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.05595}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.05595}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.0747}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.0251}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.183}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.0599}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.157}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 41, 1, 0, {}], [3, 4, 12, 0, {}], [3, 40, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 39, 1, 0, {}], [15, 16, 12, 0, {}], [15, 38, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 28, 1, 0, {}], [24, 25, 1, 0, {}], [24, 37, 1, 0, {}], [25, 26, 1, 0, {}], [25, 35, 1, 0, {}], [25, 36, 1, 0, {}], [26, 27, 1, 0, {}], [26, 33, 1, 0, {}], [26, 34, 1, 0, {}], [27, 28, 1, 0, {}], [27, 31, 1, 0, {}], [27, 32, 1, 0, {}], [28, 29, 1, 0, {}], [28, 30, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (42, 3), } \\n\\u00c8\\u0007=\\u009bU\\u001f\\u0013\\u00c0\\u000f\\u009c3\\u00a2\\u00b47\\u0006\\u00c0\\u00e1\\u000b\\u0093\\u00a9\\u0082q0\\u00c0\\u00d5\\th\\\"lx\\u0015\\u00c0y\\u00e9&1\\b,\\r\\u00c0\\u001d8gDi/0\\u00c0\\u00b3\\fq\\u00ac\\u008b\\u001b\\u0013\\u00c0;\\u00dfO\\u008d\\u0097\\u00ae\\u0013\\u00c0\\u00ce\\u0088\\u00d2\\u00de\\u00e0+0\\u00c0\\u0083QI\\u009d\\u0080&\\u0016\\u00c0K\\u00ea\\u00044\\u00116\\u0018\\u00c0\\u00a1\\u00d64\\u00ef8\\u00a5/\\u00c0T\\u00e3\\u00a5\\u009b\\u00c4\\u00a0\\u001b\\u00c0\\u00b0\\u0003\\u00e7\\u008c(\\u00ad\\u0017\\u00c0\\u0088\\u00f4\\u00db\\u00d7\\u0081\\u00f3.\\u00c0\\u001e\\u00a7\\u00e8H.\\u00ff\\u001d\\u00c0\\u0011\\u00c7\\u00ba\\u00b8\\u008d\\u0086\\u0012\\u00c0\\u0011\\u00c7\\u00ba\\u00b8\\u008d\\u0006/\\u00c0EGr\\u00f9\\u000f\\u00e9\\u001a\\u00c06\\u00cd;N\\u00d1\\u0011\\f\\u00c0`\\u00e5\\u00d0\\\"\\u00db\\u00b9/\\u00c0\\u00054\\u00116<\\u00bd\\u001c\\u00c0\\u00feC\\u00fa\\u00ed\\u00eb@\\u0004\\u00c0\\u00d74\\u00ef8E\\u00c7/\\u00c0&S\\u0005\\u00a3\\u0092Z\\\"\\u00c0\\u00caT\\u00c1\\u00a8\\u00a4\\u008e\\u0011\\u00c0a\\u00c3\\u00d3+eY.\\u00c04\\u0080\\u00b7@\\u0082\\u00e2\\u001e\\u00c0\\u00c5\\u00fe\\u00b2{\\u00f2p\\u001c\\u00c0\\u00054\\u00116<\\u001d.\\u00c0e\\u00aa`TRG \\u00c0\\u00b4Y\\u00f5\\u00b9\\u00da\\u00ca\\u001c\\u00c0u\\u0093\\u0018\\u0004V\\u00ce+\\u00c0\\u00ab\\u00cf\\u00d5V\\u00ec\\u00af\\u001f\\u00c0\\u009f<,\\u00d4\\u009a\\u0006 \\u00c0\\rq\\u00ac\\u008b\\u00db\\b0\\u00c0 \\u00d2o_\\u0007\\u00ce\\u001d\\u00c0V}\\u00ae\\u00b6b?\\u001f\\u00c0d;\\u00dfO\\u008d\\u00e70\\u00c0tF\\u0094\\u00f6\\u0006\\u007f!\\u00c0\\u00116<\\u00bdRV\\\"\\u00c0=\\n\\u00d7\\u00a3p\\r0\\u00c0\\rq\\u00ac\\u008b\\u00db(#\\u00c0\\n\\u00d7\\u00a3p=*#\\u00c0\\u00b3\\fq\\u00ac\\u008b\\u00fb-\\u00c0\\u00e1z\\u0014\\u00aeG\\u00c1$\\u00c0\\u0019\\u00e2X\\u0017\\u00b7q%\\u00c0]m\\u00c5\\u00fe\\u00b2[.\\u00c0?\\u00c6\\u00dc\\u00b5\\u0084\\u00bc$\\u00c0w-!\\u001f\\u00f4\\u00ec&\\u00c0t$\\u0097\\u00ff\\u0090N0\\u00c0\\u00e4\\u0014\\u001d\\u00c9\\u00e5\\u001f#\\u00c0S\\u0096!\\u008eu1&\\u00c0\\u00dch\\u0000o\\u0081T1\\u00c0O\\u00af\\u0094e\\u0088\\u0083!\\u00c0\\u00cc]K\\u00c8\\u0007\\u00dd#\\u00c0xz\\u00a5,C<1\\u00c0\\u00ed\\r\\u00be0\\u0099J \\u00c0\\u00a6\\u009b\\u00c4 \\u00b02#\\u00c0W\\u00ec/\\u00bb'\\u000f2\\u00c0\\u00f3\\u001f\\u00d2o_'#\\u00c0\\u0005\\u00a3\\u0092:\\u0001\\u00cd'\\u00c0\\u00fee\\u00f7\\u00e4a\\u00812\\u00c0RI\\u009d\\u0080&\\u00c2$\\u00c0\\u009f<,\\u00d4\\u009a\\u0006)\\u00c0\\u00868\\u00d6\\u00c5m\\u00942\\u00c0\\u00dd\\u00b5\\u0084|\\u00d0S!\\u00c0\\u00fb\\u00cb\\u00ee\\u00c9\\u00c3\\u0002(\\u00c0\\\"\\u008euq\\u001b}3\\u00c0\\u0000o\\u0081\\u0004\\u00c5\\u008f\\u001e\\u00c0\\u00da\\u00ac\\u00fa\\\\m\\u00a5&\\u00c0sh\\u0091\\u00ed|\\u008f3\\u00c0\\u00b9\\u00fc\\u0087\\u00f4\\u00db\\u00d7!\\u00c0\\u00f5\\u00db\\u00d7\\u0081s&*\\u00c06\\u00ab>W[\\u00914\\u00c0\\u00bak\\t\\u00f9\\u00a0\\u00e7!\\u00c0r\\u008a\\u008e\\u00e4\\u00f2\\u00ff(\\u00c0sh\\u0091\\u00ed|\\u00ff5\\u00c0\\u0084\\u009e\\u00cd\\u00aa\\u00cf\\u0095 \\u00c0\\u0088\\u0085Z\\u00d3\\u00bc\\u0003+\\u00c0\\u00deq\\u008a\\u008e\\u00e4\\u00f26\\u00c0\\u00ef8EGr\\u00f9\\u001e\\u00c0t$\\u0097\\u00ff\\u0090>-\\u00c07\\u0089A`\\u00e5\\u00106\\u00c0\\u00c2\\u0086\\u00a7W\\u00ca\\u00b2\\u001e\\u00c0:\\u0092\\u00cb\\u007fH\\u00ff+\\u00c0[\\u00d3\\u00bc\\u00e3\\u0014\\u00ad4\\u00c0\\u00e6?\\u00a4\\u00df\\u00beN\\u001e\\u00c0\\u00aa\\u0082QI\\u009d\\u0080-\\u00c0\\u00a1g\\u00b3\\u00eas\\u00e53\\u00c00*\\u00a9\\u0013\\u00d0\\u0004\\u001b\\u00c0\\u00a4\\u00df\\u00be\\u000e\\u009c\\u00d3*\\u00c0p\\u00ce\\u0088\\u00d2\\u00de\\u00a04\\u00c0\\u00b3\\fq\\u00ac\\u008b\\u001b\\u001b\\u00c0\\u00b6\\u0084|\\u00d0\\u00b3\\u00f9-\\u00c0Dio\\u00f0\\u0085i6\\u00c09\\u00b4\\u00c8v\\u00be\\u00df \\u00c0\\\"lxz\\u00a5\\u00ec.\\u00c0\\u00c6\\u00dc\\u00b5\\u0084|\\u00106\\u00c0\\u00f9\\u00a0g\\u00b3\\u00ea\\u00f3\\u001d\\u00c0x\\u000b$(~\\f*\\u00c0\\u001aQ\\u00da\\u001b|\\u00817\\u00c0n4\\u0080\\u00b7@\\u0002\\\"\\u00c0y\\u00e9&1\\b\\u00cc+\\u00c0\\u00054\\u00116<\\u00ad7\\u00c0J\\f\\u0002+\\u0087\\u00d6 \\u00c0\\u009f\\u00cd\\u00aa\\u00cf\\u00d5\\u0016'\\u00c0p_\\u0007\\u00ce\\u0019\\u00116\\u00c02w-!\\u001f\\u00f4#\\u00c0\\u00be\\u009f\\u001a/\\u00dd\\u00a4(\\u00c0t\\u00b5\\u0015\\u00fb\\u00cbN6\\u00c0\\u0016\\u00fb\\u00cb\\u00ee\\u00c9\\u00a3#\\u00c0\\u00c3d\\u00aa`TR+\\u00c0v\\u00e0\\u009c\\u0011\\u00a5]4\\u00c0m\\u00e7\\u00fb\\u00a9\\u00f1\\u0012&\\u00c0\\u0091\\u000fz6\\u00ab\\u001e&\\u00c0\\f\\u0093\\u00a9\\u0082Q\\u00c9,\\u00c0\\u00cff\\u00d5\\u00e7jK#\\u00c0\\f\\u0002+\\u0087\\u0016\\u0019\\\"\\u00c0\\u00e9H.\\u00ff!\\u001d,\\u00c0\\u00ce\\u0019Q\\u00da\\u001b\\u00fc\\u0012\\u00c0\\u0010z6\\u00ab>W\\u001e\\u00c0i\\u0000o\\u0081\\u0004\\u00a5/\\u00c0}\\u00ae\\u00b6b\\u007f\\u00d9\\r\\u00c0\\u0095e\\u0088c]\\u001c\\u0014\\u00c0$(~\\u008c\\u00b9k0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14799999999999999 -0.096000000000000002 -0.129 0.051900000000000002 -0.14360000000000001 0.051900000000000002 -0.129 0.157 -0.059900000000000002 0.69169999999999998 -0.55010000000000003\\n-0.46010000000000001 0.33050000000000002 0.12659999999999999 -0.30330000000000001 0.44419999999999998 -0.73699999999999999 0.54920000000000002 -0.31929999999999997 0.17799999999999999\\n-0.5514 0.33150000000000002 0.67410000000000003 -0.59109999999999996 -0.13869999999999999 -0.076399999999999996 -0.079399999999999998 -0.079399999999999998 -0.076399999999999996 0.05595\\n0.05595 0.045449999999999997 0.045449999999999997 0.045449999999999997 0.045449999999999997 0.05595 0.05595 0.074700000000000003 0.025100000000000001 0.183 -0.059900000000000002 0.157\", \"ofe-name\": \"lig_ejm_48\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.14802777777777779}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.09597222222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.1289722222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05242777777777778}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.1435722222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05242777777777778}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.1289722222222222}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.1570277777777778}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.06037222222222222}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.6917277777777777}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5500722222222223}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.4610722222222222}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3305277777777778}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.12662777777777778}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3022722222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.4442277777777778}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.7309722222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.5482277777777778}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3192722222222222}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.17702777777777778}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5393722222222223}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3385277777777778}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.7001277777777777}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5820722222222222}, 3], [6, 0, 0, false, 1, 0, {\"PartialCharge\": -0.2116722222222222}, 4], [6, 0, 0, false, 2, 0, {\"PartialCharge\": -0.02427222222222222}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.09237222222222222}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.09572777777777777}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.09572777777777777}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.10972777777777779}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.11737222222222223}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.11472777777777778}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.02612777777777778}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.1830277777777778}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.06037222222222222}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.1570277777777778}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 35, 1, 0, {}], [3, 4, 12, 0, {}], [3, 34, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 33, 1, 0, {}], [15, 16, 12, 0, {}], [15, 32, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 26, 1, 0, {}], [24, 25, 1, 0, {}], [24, 31, 1, 0, {}], [25, 26, 1, 0, {}], [25, 29, 1, 0, {}], [25, 30, 1, 0, {}], [26, 27, 1, 0, {}], [26, 28, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (36, 3), } \\n\\u00a4p=\\n\\u00d7#\\u0013\\u00c0e\\u0019\\u00e2X\\u00177\\u0006\\u00c0\\u00e7\\u00fb\\u00a9\\u00f1\\u00d2m0\\u00c0&S\\u0005\\u00a3\\u0092z\\u0015\\u00c0\\u00c9v\\u00be\\u009f\\u001a/\\r\\u00c0\\u00b1\\u00bf\\u00ec\\u009e<,0\\u00c0\\u00b3\\fq\\u00ac\\u008b\\u001b\\u0013\\u00c0\\u0001M\\u0084\\rO\\u00af\\u0013\\u00c0`vO\\u001e\\u0016*0\\u00c0\\u0088\\u0085Z\\u00d3\\u00bc#\\u0016\\u00c0~\\u008c\\u00b9k\\t9\\u0018\\u00c0\\u00fc\\u00a9\\u00f1\\u00d2M\\u00a2/\\u00c0\\u0004V\\u000e-\\u00b2\\u009d\\u001b\\u00c033333\\u00b3\\u0017\\u00c0\\u00e6?\\u00a4\\u00df\\u00be\\u00ee.\\u00c0\\u0002\\u00bc\\u0005\\u0012\\u0014\\u00ff\\u001d\\u00c0\\u00af%\\u00e4\\u0083\\u009e\\u008d\\u0012\\u00c0U\\u00c1\\u00a8\\u00a4N\\u0000/\\u00c0\\u00ecQ\\u00b8\\u001e\\u0085\\u00eb\\u001a\\u00c0\\u0007\\u00ce\\u0019Q\\u00da\\u001b\\f\\u00c0\\u00de\\u0093\\u0087\\u0085Z\\u00b3/\\u00c0\\u00fd\\u0087\\u00f4\\u00db\\u00d7\\u00c1\\u001c\\u00c0\\u0094\\u00f6\\u0006_\\u0098L\\u0004\\u00c0\\u008euq\\u001b\\r\\u00c0/\\u00c0\\u0098\\u00dd\\u0093\\u0087\\u0085Z\\\"\\u00c0E\\u00d8\\u00f0\\u00f4J\\u0099\\u0011\\u00c0\\u008cJ\\u00ea\\u00044Q.\\u00c0$\\u00b9\\u00fc\\u0087\\u00f4\\u00db\\u001e\\u00c0F\\u00b6\\u00f3\\u00fd\\u00d4x\\u001c\\u00c0\\u00ba\\u00da\\u008a\\u00fde\\u0017.\\u00c0,\\u00d4\\u009a\\u00e6\\u001dG \\u00c0\\u00ce\\u0088\\u00d2\\u00de\\u00e0\\u00cb\\u001c\\u00c0(~\\u008c\\u00b9k\\u00c9+\\u00c0\\u0002\\u009a\\b\\u001b\\u009e\\u009e\\u001f\\u00c0X\\u00ca2\\u00c4\\u00b1\\u000e \\u00c0\\u00f8S\\u00e3\\u00a5\\u009b\\u00040\\u00c0\\u000f\\u009c3\\u00a2\\u00b4\\u00b7\\u001d\\u00c0/\\u00dd$\\u0006\\u0081U\\u001f\\u00c0m\\u00e7\\u00fb\\u00a9\\u00f1\\u00e20\\u00c0e\\u0019\\u00e2X\\u0017w!\\u00c0\\u0003x\\u000b$(^\\\"\\u00c0b\\u0010X9\\u00b4\\b0\\u00c0\\u00d74\\u00ef8E'#\\u00c0%\\u0006\\u0081\\u0095C+#\\u00c02w-!\\u001f\\u00f4-\\u00c0\\u008b\\u00fde\\u00f7\\u00e4\\u00c1$\\u00c0\\u008cJ\\u00ea\\u00044q%\\u00c0\\u00c2\\u0086\\u00a7W\\u00caR.\\u00c0[\\u00b1\\u00bf\\u00ec\\u009e\\u00bc$\\u00c0r\\u00f9\\u000f\\u00e9\\u00b7\\u00ef&\\u00c0\\f\\u0002+\\u0087\\u0016I0\\u00c0\\u00b5\\u00a6y\\u00c7)\\u001a#\\u00c0\\u0098\\u00dd\\u0093\\u0087\\u0085:&\\u00c0v\\u00e0\\u009c\\u0011\\u00a5M1\\u00c0\\u00f2\\u00d2Mb\\u0010x!\\u00c0C\\u00adi\\u00deq\\u00ea#\\u00c0.\\u00ff!\\u00fd\\u00f651\\u00c0\\u00d0\\u00d5V\\u00ec/; \\u00c0\\u00d5x\\u00e9&1H#\\u00c0EGr\\u00f9\\u000f\\t2\\u00c0\\u00f3\\u001f\\u00d2o_'#\\u00c0n\\u00a3\\u0001\\u00bc\\u0005\\u00d2'\\u00c0\\b\\u00ac\\u001cZd{2\\u00c033333\\u00d3$\\u00c0\\u00fd\\u00f6u\\u00e0\\u009c\\u00f1(\\u00c0/n\\u00a3\\u0001\\u00bc\\u00952\\u00c0F%u\\u0002\\u009aH!\\u00c0\\u00ae\\u00b6b\\u007f\\u00d9\\u001d(\\u00c0\\u00fee\\u00f7\\u00e4aq3\\u00c0\\u00caT\\u00c1\\u00a8\\u00a4N\\u001e\\u00c0\\u00dd$\\u0006\\u0081\\u0095\\u00e3&\\u00c0|a2U0z3\\u00c0\\u008f\\u00c2\\u00f5(\\\\\\u000f\\\"\\u00c0h\\u00b3\\u00eas\\u00b5\\u0015*\\u00c0q\\u001b\\r\\u00e0-\\u00804\\u00c0\\u00d1\\\"\\u00db\\u00f9~\\u00ea\\u001f\\u00c0*\\u00a9\\u0013\\u00d0D\\u00b8+\\u00c0\\u00c8\\u0007=\\u009bU?5\\u00c0\\u00b8\\u001e\\u0085\\u00ebQX!\\u00c0s\\u00d7\\u0012\\u00f2Ao)\\u00c09EGr\\u00f9\\u00ef5\\u00c0\\u00c9v\\u00be\\u009f\\u001a/ \\u00c0\\u00e0\\u00be\\u000e\\u009c3\\u00a2'\\u00c0\\u00c4\\u00b1.n\\u00a3!6\\u00c0\\u00d2o_\\u0007\\u00ce\\u00d9\\\"\\u00c0\\u00bd\\u00e3\\u0014\\u001d\\u00c9\\u00e5)\\u00c0\\u00c7K7\\u0089A\\u00b06\\u00c0\\u00d9\\u00ce\\u00f7S\\u00e3\\u0085 \\u00c0xz\\u00a5,C\\u00bc-\\u00c0\\u0098n\\u0012\\u0083\\u00c0\\u008a5\\u00c0x\\u009c\\u00a2#\\u00b9\\u00fc\\u0018\\u00c0 c\\u00eeZB~+\\u00c0K\\u00c8\\u0007=\\u009b\\u00055\\u00c0\\u0092\\u00cb\\u007fH\\u00bf\\u00fd#\\u00c0\\u00e8\\u00d9\\u00ac\\u00fa\\\\\\r+\\u00c0\\u00cf\\u00f7S\\u00e3\\u00a5[4\\u00c0)\\u00cb\\u0010\\u00c7\\u00ba\\u0018&\\u00c0\\u00d5\\th\\\"l\\u0018&\\u00c0\\u008a\\u001fc\\u00eeZ\\u00c2,\\u00c0\\u00b0\\u0003\\u00e7\\u008c(M#\\u00c0\\u00bdR\\u0096!\\u008e\\u0015\\\"\\u00c0\\u00b8\\u001e\\u0085\\u00ebQ\\u0018,\\u00c0\\u00f6(\\\\\\u008f\\u00c2\\u00f5\\u0012\\u00c0F\\u0094\\u00f6\\u0006_X\\u001e\\u00c0\\u00be\\u009f\\u001a/\\u00dd\\u00a4/\\u00c0\\u00d0\\u00b3Y\\u00f5\\u00b9\\u00da\\r\\u00c0\\u00ed\\u009e<,\\u00d4\\u001a\\u0014\\u00c0\\u00d0\\u00b3Y\\u00f5\\u00b9j0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14802777777777779 -0.095972222222222223 -0.12897222222222221 0.052427777777777781 -0.14357222222222221 0.052427777777777781 -0.12897222222222221 0.15702777777777779 -0.060372222222222223\\n0.69172777777777772 -0.5500722222222223 -0.46107222222222222 0.33052777777777781 0.12662777777777778 -0.30227222222222222 0.44422777777777778 -0.73097222222222225 0.54822777777777776\\n-0.31927222222222218 0.17702777777777778 -0.53937222222222225 0.33852777777777782 0.70012777777777768 -0.58207222222222221 -0.21167222222222221 -0.024272222222222219 -0.092372222222222217\\n0.095727777777777773 0.095727777777777773 0.10972777777777779 -0.11737222222222223 0.11472777777777778 0.026127777777777781 0.18302777777777779 -0.060372222222222223 0.15702777777777779\", \"ofe-name\": \"lig_jmc_27\"}}\n \n \n {\":version:\": 1, \"__module__\": \"gufe.components.smallmoleculecomponent\", \"__qualname__\": \"SmallMoleculeComponent\", \"atoms\": [[1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.14802777777777779}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.09597222222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.1289722222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05242777777777778}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.1435722222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.05242777777777778}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.1289722222222222}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.1570277777777778}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.06037222222222222}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.6917277777777777}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5500722222222223}, 3], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.4610722222222222}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3305277777777778}, 1], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.12662777777777778}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3012722222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.4442277777777778}, 3], [7, 0, 0, true, 0, 0, {\"PartialCharge\": -0.7299722222222222}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": 0.5472277777777778}, 3], [6, 0, 0, true, 0, 0, {\"PartialCharge\": -0.3192722222222222}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.17702777777777778}, 1], [7, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5413722222222223}, 3], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.3425277777777778}, 1], [6, 0, 0, false, 0, 0, {\"PartialCharge\": 0.7011277777777777}, 3], [8, 0, 0, false, 0, 0, {\"PartialCharge\": -0.5860722222222222}, 3], [6, 0, 0, false, 1, 0, {\"PartialCharge\": -0.2336722222222222}, 4], [6, 0, 0, false, 2, 0, {\"PartialCharge\": 0.12062777777777778}, 4], [6, 0, 0, false, 0, 0, {\"PartialCharge\": -0.12037222222222221}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.09522777777777779}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.09522777777777779}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.09972777777777778}, 1], [9, 0, 0, false, 0, 0, {\"PartialCharge\": -0.20527222222222222}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.11872777777777778}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.02612777777777778}, 1], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.1830277777777778}, 1], [17, 0, 0, false, 0, 0, {\"PartialCharge\": -0.06037222222222222}, 4], [1, 0, 0, false, 0, 0, {\"PartialCharge\": 0.1570277777777778}, 1]], \"bonds\": [[0, 1, 1, 0, {}], [1, 6, 12, 0, {}], [1, 2, 12, 0, {}], [2, 3, 12, 0, {}], [2, 35, 1, 0, {}], [3, 4, 12, 0, {}], [3, 34, 1, 0, {}], [4, 5, 12, 0, {}], [4, 9, 1, 0, {}], [5, 6, 12, 0, {}], [5, 8, 1, 0, {}], [6, 7, 1, 0, {}], [9, 10, 2, 0, {}], [9, 11, 1, 0, {}], [11, 12, 1, 0, {}], [11, 13, 1, 0, {}], [13, 18, 12, 0, {}], [13, 14, 12, 0, {}], [14, 15, 12, 0, {}], [14, 33, 1, 0, {}], [15, 16, 12, 0, {}], [15, 32, 1, 0, {}], [16, 17, 12, 0, {}], [17, 18, 12, 0, {}], [17, 20, 1, 0, {}], [18, 19, 1, 0, {}], [20, 21, 1, 0, {}], [20, 22, 1, 0, {}], [22, 23, 2, 0, {}], [22, 24, 1, 0, {}], [24, 26, 1, 0, {}], [24, 25, 1, 0, {}], [24, 31, 1, 0, {}], [25, 26, 1, 0, {}], [25, 29, 1, 0, {}], [25, 30, 1, 0, {}], [26, 27, 1, 0, {}], [26, 28, 1, 0, {}]], \"conformer\": [\"\\u0093NUMPY\\u0001\\u0000v\\u0000{'descr': '<f8', 'fortran_order': False, 'shape': (36, 3), } \\n\\u00f5\\u00b9\\u00da\\u008a\\u00fd%\\u0013\\u00c0\\u0002+\\u0087\\u0016\\u00d9N\\u0006\\u00c0\\u00ac\\u001cZd;\\u007f0\\u00c0&S\\u0005\\u00a3\\u0092z\\u0015\\u00c04\\u00a2\\u00b47\\u00f8B\\r\\u00c0\\u00f0\\u0085\\u00c9T\\u00c180\\u00c0\\u00b3\\fq\\u00ac\\u008b\\u001b\\u0013\\u00c0\\u00b7b\\u007f\\u00d9=\\u00b9\\u0013\\u00c0\\u008cJ\\u00ea\\u0004410\\u00c0\\u0089A`\\u00e5\\u00d0\\\"\\u0016\\u00c0x\\u009c\\u00a2#\\u00b9<\\u0018\\u00c0L7\\u0089A`\\u00a5/\\u00c0$\\u00b9\\u00fc\\u0087\\u00f4\\u009b\\u001b\\u00c0\\u001a\\u00c0[ A\\u00b1\\u0017\\u00c07\\u0089A`\\u00e5\\u00f0.\\u00c0v\\u00e0\\u009c\\u0011\\u00a5\\u00fd\\u001d\\u00c0\\u0096\\u00b2\\fq\\u00ac\\u008b\\u0012\\u00c0\\u00e7\\u00fb\\u00a9\\u00f1\\u00d2\\r/\\u00c0a2U0*\\u00e9\\u001a\\u00c06<\\u00bdR\\u0096!\\f\\u00c0z\\u00a5,C\\u001c\\u00cb/\\u00c0\\u00d8\\u0081sF\\u0094\\u00b6\\u001c\\u00c0\\u00cd\\u00cc\\u00cc\\u00cc\\u00ccL\\u0004\\u00c0\\u00c6m4\\u0080\\u00b7\\u00e0/\\u00c0&S\\u0005\\u00a3\\u0092Z\\\"\\u00c0\\u00de\\u0093\\u0087\\u0085Z\\u0093\\u0011\\u00c0\\u0085\\u00ebQ\\u00b8\\u001ee.\\u00c0E\\u00d8\\u00f0\\u00f4J\\u00d9\\u001e\\u00c0m\\u00c5\\u00fe\\u00b2{r\\u001c\\u00c04\\u00116<\\u00bd\\u0012.\\u00c0\\u000f\\u000b\\u00b5\\u00a6yG \\u00c0Z\\u00f5\\u00b9\\u00da\\u008a\\u00bd\\u001c\\u00c0j\\u00deq\\u008a\\u008e\\u00c4+\\u00c0\\\"\\u00fd\\u00f6u\\u00e0\\u009c\\u001f\\u00c0\\u0000o\\u0081\\u0004\\u00c5\\u000f \\u00c09\\u00b4\\u00c8v\\u00be\\u00ff/\\u00c0\\u00f9\\u00a0g\\u00b3\\u00ea\\u00b3\\u001d\\u00c0\\u00a2\\u00b47\\u00f8\\u00c2d\\u001f\\u00c0X9\\u00b4\\u00c8v\\u00de0\\u00c0O@\\u0013a\\u00c3s!\\u00c0\\u0000\\u0000\\u0000\\u0000\\u0000`\\\"\\u00c0\\u00feC\\u00fa\\u00ed\\u00eb\\u00000\\u00c0)\\u00cb\\u0010\\u00c7\\u00ba\\u0018#\\u00c06\\u00ab>W[1#\\u00c0\\u00e8j+\\u00f6\\u0097\\u00dd-\\u00c0O@\\u0013a\\u00c3\\u00b3$\\u00c0*\\u00a9\\u0013\\u00d0Dx%\\u00c0\\u0081\\u0004\\u00c5\\u008f17.\\u00c0\\u0016jM\\u00f3\\u008e\\u00b3$\\u00c0d;\\u00dfO\\u008d\\u00f7&\\u00c0$\\u0097\\u00ff\\u0090~;0\\u00c0F\\u00b6\\u00f3\\u00fd\\u00d4\\u0018#\\u00c0\\u00ad\\u00fa\\\\m\\u00c5>&\\u00c0O\\u00af\\u0094e\\u0088C1\\u00c0$\\u0097\\u00ff\\u0090~{!\\u00c0\\u00b3{\\u00f2\\u00b0P\\u00eb#\\u00c0\\u00ca2\\u00c4\\u00b1..1\\u00c0H\\u00bf}\\u001d8G \\u00c0\\u0083/L\\u00a6\\nF#\\u00c0\\u00dd\\u00b5\\u0084|\\u00d0\\u00032\\u00c0n4\\u0080\\u00b7@\\\"#\\u00c0\\u00d8\\u0081sF\\u0094\\u00d6'\\u00c0\\u00c4\\u00b1.n\\u00a3q2\\u00c0lxz\\u00a5,\\u00c3$\\u00c0\\u00a1\\u00f81\\u00e6\\u00ae\\u0005)\\u00c0`vO\\u001e\\u0016\\u008a2\\u00c0\\u00f2A\\u00cff\\u00d5G!\\u00c0O@\\u0013a\\u00c3\\u0013(\\u00c0\\u00ea\\u00044\\u00116l3\\u00c0\\u00e3\\u00c7\\u0098\\u00bb\\u0096P\\u001e\\u00c0\\u00a3#\\u00b9\\u00fc\\u0087\\u00d4&\\u00c0\\u00bc\\u0096\\u0090\\u000fzv3\\u00c0\\u00ff\\u00b2{\\u00f2\\u00b0\\u0010\\\"\\u00c0\\u007f\\u00fb:p\\u00ce\\b*\\u00c0Zd;\\u00dfO}4\\u00c0\\u0003\\t\\u008a\\u001fc\\u00ee\\u001f\\u00c0\\u00a8\\u00c6K7\\u0089\\u00c1+\\u00c0\\\\\\u008f\\u00c2\\u00f5(,5\\u00c0\\u00dfO\\u008d\\u0097n2!\\u00c0\\u00fe\\u00d4x\\u00e9&q)\\u00c0\\u009a\\u0099\\u0099\\u0099\\u0099\\u00e95\\u00c0\\u0018\\u0095\\u00d4\\th\\u00e2\\u001f\\u00c0\\u008a\\u00b0\\u00e1\\u00e9\\u0095\\u00b2'\\u00c0F\\u00b6\\u00f3\\u00fd\\u00d4\\u00186\\u00c0\\u0083QI\\u009d\\u0080\\u00a6\\\"\\u00c0\\u0003x\\u000b$(\\u00de)\\u00c0\\u001b/\\u00dd$\\u0006\\u00b16\\u00c0h\\u00b3\\u00eas\\u00b5u \\u00c0\\u0003\\t\\u008a\\u001fc\\u00ce-\\u00c0\\u00a9\\u0013\\u00d0D\\u00d8p5\\u00c0\\u0006\\u0012\\u0014?\\u00c6\\u009c\\u001a\\u00c0\\u0093\\u00a9\\u0082QI}+\\u00c0V\\u000e-\\u00b2\\u009d\\u00cf4\\u00c0\\u00f3\\u001f\\u00d2o_\\u0007$\\u00c04\\u00116<\\u00bd\\u00f2*\\u00c0\\u008fSt$\\u0097_4\\u00c0\\u00d8\\u00f0\\u00f4JY\\u0006&\\u00c0?\\u00c6\\u00dc\\u00b5\\u0084\\u001c&\\u00c0\\u00a8\\u00c6K7\\u0089\\u00a1,\\u00c0\\u0010X9\\u00b4\\u00c86#\\u00c0\\u0007\\u00ce\\u0019Q\\u00da\\u001b\\\"\\u00c0\\u00e36\\u001a\\u00c0[\\u0000,\\u00c0Q\\u00da\\u001b|a\\u00f2\\u0012\\u00c0\\u00d2o_\\u0007\\u00ceY\\u001e\\u00c0\\u0083QI\\u009d\\u0080\\u00a6/\\u00c0>\\u00e8\\u00d9\\u00ac\\u00fa\\u00dc\\r\\u00c0=\\u009bU\\u009f\\u00ab-\\u0014\\u00c0\\u00de\\u0002\\t\\u008a\\u001fs0\\u00c0\", {}], \"molprops\": {\"atom.dprop.PartialCharge\": \"0.14802777777777779 -0.095972222222222223 -0.12897222222222221 0.052427777777777781 -0.14357222222222221 0.052427777777777781 -0.12897222222222221 0.15702777777777779 -0.060372222222222223\\n0.69172777777777772 -0.5500722222222223 -0.46107222222222222 0.33052777777777781 0.12662777777777778 -0.30127222222222222 0.44422777777777778 -0.72997222222222224 0.54722777777777776\\n-0.31927222222222218 0.17702777777777778 -0.54137222222222225 0.34252777777777782 0.70112777777777768 -0.58607222222222222 -0.2336722222222222 0.12062777777777778 -0.12037222222222221\\n0.095227777777777786 0.095227777777777786 0.099727777777777776 -0.20527222222222222 0.11872777777777778 0.026127777777777781 0.18302777777777779 -0.060372222222222223 0.15702777777777779\", \"ofe-name\": \"lig_jmc_23\"}}\n \n \n [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 26], [27, 25], [28, 31], [29, 32], [30, 33], [31, 34]]\n {\"score\": 0.9048374180359595}\n \n \n [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 26], [27, 25], [28, 29], [29, 30], [30, 31], [31, 32]]\n {\"score\": 0.9048374180359595}\n \n \n [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [28, 32], [29, 33], [30, 34], [31, 35]]\n {\"score\": 0.36787944117144233}\n \n \n [[0, 0], [1, 1], [2, 6], [3, 5], [4, 4], [5, 3], [6, 2], [7, 38], [8, 37], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [28, 35], [29, 36], [30, 8], [31, 7]]\n {\"score\": 0.33287108369807955}\n \n \n [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [28, 38], [29, 39], [30, 40], [31, 41]]\n {\"score\": 0.301194211912202}\n \n \n [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [26, 25], [27, 26], [28, 29], [29, 27], [30, 28], [31, 34], [32, 35], [33, 36], [34, 37]]\n {\"score\": 0.9048374180359595}\n \n \n [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 26], [26, 25], [27, 29], [29, 27], [30, 28], [31, 34], [32, 35], [33, 36], [34, 37], [35, 38]]\n {\"score\": 0.9048374180359595}\n \n \n [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 26], [26, 25], [27, 29], [29, 27], [30, 28], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35]]\n {\"score\": 0.9048374180359595}\n \n \n [[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12], [13, 13], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18], [19, 19], [20, 20], [21, 21], [22, 22], [23, 23], [24, 24], [25, 26], [26, 25], [27, 29], [29, 27], [30, 28], [31, 31], [32, 32], [33, 33], [34, 34], [35, 35]]\n {\"score\": 0.9048374180359595}\n \n \n", "__qualname__": "LigandNetwork", "__module__": "gufe.ligandnetwork", ":version:": 1}]] \ No newline at end of file diff --git a/cookbook/repairing_broken_networks.ipynb b/cookbook/repairing_broken_networks.ipynb index 43d07d5..60c374a 100644 --- a/cookbook/repairing_broken_networks.ipynb +++ b/cookbook/repairing_broken_networks.ipynb @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 13, "id": "8a702d3c", "metadata": {}, "outputs": [ @@ -114,7 +114,7 @@ } ], "source": [ - "planned = LigandNetwork.from_json(\"ligand_network.json\")\n", + "planned = LigandNetwork.from_json(\"assets/mst_network_tyk2.json\")\n", "\n", "print(\"planned connected:\", planned.is_connected(), \" edges:\", len(planned.edges))" ] From 8b37b7f4d4b823d98bebe3556689aad8c332f58c Mon Sep 17 00:00:00 2001 From: hannahbaumann Date: Thu, 3 Sep 2026 15:21:17 +0200 Subject: [PATCH 5/8] Adapt fix broken network cookbook with newest konnektor updates --- cookbook/repairing_broken_networks.ipynb | 103 ++++++++++++++--------- environment.yaml | 2 +- 2 files changed, 65 insertions(+), 40 deletions(-) diff --git a/cookbook/repairing_broken_networks.ipynb b/cookbook/repairing_broken_networks.ipynb index 60c374a..5aa3b12 100644 --- a/cookbook/repairing_broken_networks.ipynb +++ b/cookbook/repairing_broken_networks.ipynb @@ -41,7 +41,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Fetching /Users/hannahbaumann/.local/share/mamba/envs/openfe/lib/python3.13/site-packages/openfecli/tests/data/rbfe_results.tar.gz\n" + "Fetching /Users/hannahbaumann/.local/share/mamba/envs/openfe_env/lib/python3.12/site-packages/openfecli/tests/data/rbfe_results.tar.gz\n" ] } ], @@ -67,7 +67,18 @@ "execution_count": 2, "id": "8d681408", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/hannahbaumann/.local/share/mamba/envs/openfe_env/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2274: UnsupportedFieldAttributeWarning: The 'validate_default' attribute with value True was provided to the `Field()` function, which has no effect in the context it was used. 'validate_default' is field-specific metadata, and can only be attached to a model field using `Annotated` metadata or by assignment. This may have happened because an `Annotated` type alias using the `type` statement was used, or if the `Field()` function was attached to a single member of a union type.\n", + " warnings.warn(\n", + "/Users/hannahbaumann/.local/share/mamba/envs/openfe_env/lib/python3.12/site-packages/pydantic/_internal/_generate_schema.py:2274: UnsupportedFieldAttributeWarning: The 'validate_default' attribute with value True was provided to the `Field()` function, which has no effect in the context it was used. 'validate_default' is field-specific metadata, and can only be attached to a model field using `Annotated` metadata or by assignment. This may have happened because an `Annotated` type alias using the `type` statement was used, or if the `Field()` function was attached to a single member of a union type.\n", + " warnings.warn(\n" + ] + } + ], "source": [ "import json\n", "import pathlib\n", @@ -85,7 +96,7 @@ "from openfe.setup.ligand_network_planning import generate_network_from_names\n", "from gufe.tokenization import JSON_HANDLER\n", "\n", - "from konnektor.network_tools import merge_two_networks\n", + "from konnektor.network_tools import merge_two_networks, decompose_network\n", "from konnektor.network_planners import MstConcatenator" ] }, @@ -101,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 3, "id": "8a702d3c", "metadata": {}, "outputs": [ @@ -221,7 +232,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/hannahbaumann/.local/share/mamba/envs/openfe/lib/python3.13/site-packages/gufe/components/smallmoleculecomponent.py:286: UserWarning: The atom hybridization data was not found and has been set to unspecified. This can be fixed by recreating the SmallMoleculeComponent from the rdkit molecule after running sanitization.\n", + "/Users/hannahbaumann/.local/share/mamba/envs/openfe_env/lib/python3.12/site-packages/gufe/components/smallmoleculecomponent.py:304: UserWarning: The atom hybridization data was not found and has been set to unspecified. This can be fixed by recreating the SmallMoleculeComponent from the rdkit molecule after running sanitization.\n", " warnings.warn(\n" ] }, @@ -294,16 +305,6 @@ } ], "source": [ - "def decompose_network(network):\n", - " g = network.graph.to_undirected()\n", - " pieces = []\n", - " for comp in nx.connected_components(g):\n", - " edges = [e for e in network.edges\n", - " if e.componentA in comp and e.componentB in comp]\n", - " pieces.append(LigandNetwork(nodes=comp, edges=edges))\n", - " return pieces\n", - "\n", - "\n", "def missing_ligands(planned, completed):\n", " \"\"\"Ligands in the plan with no results at all.\"\"\"\n", " have = {n.name for n in completed.nodes}\n", @@ -328,7 +329,7 @@ "outputs": [ { "data": { - "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", + "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaqVMl15tumA7b5QCCyvpMmTdKoUaPc9zYh4MUXX3SNYwAA/yJoBRC0wmnHLABAwjA9AEDQatSokQYPHuyu9+zZUytWrAj0kgAAAUKmFUBQC9bGLACAfxG0Agh6wdaYBQDwP8oDAAS9UNsxCwCQ+AhaAYSEUNkxCwCQNAhaAYRsY9Z333132fvXqSP16eNdt7GqI0bIbwYOlK6/3n+vBwDhjqAVQEh57LHH1Lp1a506dUr9+vWL9ePWrJH8OTHrkUekBQuS9jWaNZMKFJDSpJFy55buukvasyf6fXr3lipWlKwEmCAaQCgjaAUQUqw8YOLEiW5nqj/++CPWj8ueXUqXTn5j+w9kzZq0r1G3rjR9urRpk/TBB7Yhg9S6dfT7REVJnTtLbdsm7VoAIKkRtAII2casDBkyxPoxF5cHbNwo1arlZSlLlZLmz7eAWJo9O3bPt3u3FwhmzuwFp82bS9u2xVwe0KmT1KKFZNUNOXNKmTJJzz4rnT4tWcI4SxYpXz5pwoRYvyU99JBUrZpUsKBUo4b0+OPSqlXSqVPn7zNypPTAA1KRIrF/XgAIRgStAEK2Mcu2VI2Ps2e9ANIyr6tXS9bT1b9/7B9//LiX5bRs6pIl0rJl3vVGjaR//on5cQsXeqfv7THDhnmBbdOmXuBr6+je3bvs3Bn393TwoPT2217wmjJl3B8PAMGOoBVAyKphEVo8zJvnnUqfMkUqX97LuA4aFPvHT5smJUsmjR8vlS0rlSwpTZwo7dghLV4c8+Msm2qZz+uu807Z21cLgJ98UipeXHriCSlVKmn58tiv5bHHpKuv9rK99vpz5sT+sQAQSghaAUQcqwHNn1/Klev8bVWqxP7xa9dKv/wiWXWCZVjtYgHpiRNeMByT0qW9YNfHygQs6PVJntwLPn/7LfZrsdKCb7/1AnF7/N13e3WsABBuUgR6AQDgbxbUWf1qfFl5gXXk2+n4SzV8xeTi0/a2hkvdZs8fW9myeZdrr/UyvhaMW11r9eqxfw4ACAUErQAiTokS3qn0/fu9bKdvJFZsVaggvfeelCOHlDGjgoYvw3ryZKBXAgCJj/IAABGnfn1r5JI6dpTWr/dqSH2NWLHJwHbo4GU3bWLA0qXS1q3Sl196M1F37ZJffPWVNHq0tG6dtH27tGiR1L69974uzLJaGYPdZ98+6e+/vet2uVzDGAAEI4JWABHHaj9ttNXRo1LlylLXrtKAAd7PbATWldjUAZsAYIP9W7b0TstbY5UFhf7KvKZNK82cKd188/nGrjJlvODZNhLwsfd2ww3SmDHS5s3edbtcvAkBAAS7q6KiKNkHAMu22hQBy0xatjKhbBKAZWFtHBYAIOGoaQUQkWbN8rr+bdSUBap2ar9mzYQHrJYG+PVXbwtXy2gCABIH5QEAItKRI1KPHl5Tlu1WZWUCvhmntmuVb5TVxZdbbrn88x4+7O2wZfNWbf5qfCVkDQAQjigPABCyPv74YzVp0iTRn9d2l7JLTLWkefMm+ksG5RoAIJgQtAIIOWfPntWAAQP02Wef6Ztvvgn0cgAAfkB5AICQcvToUbVq1UovvvhioJcCAPAjGrEAhIwdO3aoWbNm+u6775QqVSq98MILgV4SAMBPyLQCCAmrVq1SlSpVXMCaI0cOLV68WI0bNw70sgAAfkLQCiDovfPOO6pTp47279+vcuXK6auvvlL1C7d9AgCEPYJWAEHfcNWhQwedPHnSlQYsX75cBQsWjPExn376qSpUqKDu3bsn2jqOHz+uGTNm6Pbbb3fP7bvce++9mj9/vk6dOpVorwUAuDSCVgBB6dixYy5IHDRokPv+scce06xZs5TeBpVexr59+/Ttt99q586dibaWdOnSqXXr1po+fbqGDRumIkWKaP369Ro/frzq16+vwoULu/paywQDAJIGQSuAoLNr1y7Vrl1bM2fOdA1XkyZN0ksvvaRkya78T5ZlZI09LrFdddVVrkzBsq5bt25V//79lT17du3evVtPPfWU8ufPrzvvvNPV37JDNgAkLoJWAEHF6lUrV67ssqUWEC5cuFAdO3aM9eP/+ecf9zV16tRJuEq5ANWyq5bRnTp1qqpWrerKBN5++21Xb2vvwYLtv//+O0nXAQCRgqAVQNCYNm2abrzxRneKv0yZMi6ArVmzZpyew5dpTeqg1cdex5ddtfVagG23rV27Vvfcc48Lbh9//HFt377dL+sBgHBF0AogKBqunnnmGbVr104nTpxQ06ZNtWLFChUqVCjOz+XvoPVCvuyqZV9t84MCBQrowIEDevnll10dbIsWLVzjFqUDABB3BK0AAso68++44w4999xz7vtHHnlEs2fPVoYMGeL1fIEMWn2srMGyq1u2bHHNY/Xq1XOB+Zw5c1zjVqlSpTR69Gj99ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", "text/plain": [ "
" ] @@ -339,7 +340,7 @@ }, { "data": { - "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMVIYmgFYgFq1e1hqtvv/1W2bNnd8O+O3bsyLELIgStwL9ZY5Y1jNoZoZIlS+rgwYOugct23ZowYYLLxAKhgqAVuILPP/9cvXv3djVjVhpgXbk1a9bkuAUZalqBmGe82kis9evXu0DVNjzZtWuXG51lTaQW0DLjFaGAoBW4Atv72zIVViM2ffp05cmTh2MWhKhpBS7PJgvYZgQ249VKBLJkyeIat2zTApt8YiP7gGBG0AogLFAeAMROmjRp3DawNuN1wIABbsbr6tWr3Qg/a96yMiggGBG0AggLBK1A3FxzzTV6/vnn3SzXBx54wGVirRyqQoUKbmyWzX4FgglBK4CwQNAKxE+uXLk0evRobdy4Ue3bt3e3TZs2zTVu2YYFe/fu5dAiKBC0AgirmlY2FwDix2a52k5/Vh5wyy23uMkCr7/+upv9ahuqMOMVgUbQCiAskGkFEsf111+vTz75xDVmVatWzc14tQ1VbMbr0KFD9ffff3OoERAErQhrdepIffp41wsVkkaM8N9rDxxo//j77/UiHUErkLhuvPFGrVixQrNnz1apUqXcjNd+/frp2muv1ZtvvsmMV/gdQSsixpo1Urdu/nu9Rx6RFixI2tewQPyqq6JfHn88+n127JBuvVW6+mopWzbpwQftVLrCDkErkDQzXps3b+5mvE6cOPHcjNeuXbuqbNmybodAZrzCXwhaETGyZ5fSpfPf66VPL2XNmvSv89xzkvVJ+C4DBpz/2ZkzUpMm0rFj0rJl1lwhffCB1Levwg6bCwBJJ3ny5OrUqZOb8Tps2DBlzZrVNW61atXKlRDYdrFAUiNoRcS4uDxg40apVi2bWSiVKiXNn+9lKmfPjt3z7d4ttW0rZc7sBafNm0vbtsVcHtCpk9SihTR4sJQzp5Qpk/Tss5Ltotivn5Qli5QvnzRhQtzeV4YM1v17/mLBss+8edKGDdJbb9le5FK9etIrr0jjxkl//aWwwuYCgH9mvD700ENuxutTTz2lq6++2m1zfdNNN7mNWGwTFiCpELQiIp096wWQlnldvVoaO1bq3z/2jz9+XKpb1wsQlyzxsph2vVGjy596X7hQ2rPHe8ywYV5g27SpF/jaOrp39y47d8Z+LS+/7AXNFiAPGhT99VeulMqUkS7cxKthQ8tKSmvXKqxQHgD4T8aMGfXcc8+5Ga89e/ZUypQpNW/ePFWsWFF33HGHfv75Z34dSHQErYhIloHcskWaMkUqX97LuFrAF1t2mj1ZMmn8eKlsWalkSWniRK9+9HI7IVo2deRI6brrpM6dva8WAD/5pFS8uPTEEzaySVq+PHbr6N3bW4udmevZ08sk9+hx/uf79nlZ3QtZgGyvYT8LJwStgP/lzJlTo0aNcqUCHTp0cDWw7733nmvcuv/++5nxikRF0IqItGmTlD+/dzrdp0qV2D/espS2WYydmrcMq10sID1xwguGY1K6tBfs+lhAaUGvT/LkXtb0t99it46HHrIOX6lcOalrV+mNN6Q335QOHDh/Hyt5uFhU1KVvD2XUtAKBY+Ow3nrrLTfjtXHjxm6ywBtvvOFmvz755JP6888/+fUgwQhaEZESGrRZeUHFitK6ddEvmzdL/7+hzCWlTBn9e1vDpW6z54+PatW8r77dFy0ovzijeuiQdOrUvzOwoY6aViDwypcvr48//lhffvmlatSo4Wa6vvjiiy6oHTJkCDNekSAErYhIJUp4p/L3748+Eiu2KlSQrGQrRw6pWLHol2uuUcB8+633NXdu72v16tIPP3hTBS4sjUid2gu6wwnlAUDw+M9//qNly5Zpzpw5Kl26tA4dOqTHHntMxYsX1/jx45nxinghaEVEql/ftiyUOnaU1q/3akh9jVixycB26ODNPLWJAUuXSlu3Sl9+6dWY7tolv7Amq+HDvQyvvf706dJ990nNmkkFCnj3adDAm4xw111eQGtzY21+7L33WiOFwgpBKxBcrL61WbNm+u677zRp0iQVKFBAu3fv1r333qsyZcpoxowZzHhFnBC0IiJZ7aiNtjp6VKpc2asH9c03tRFYV2JTB2wCgAWHLVt6jVjWWGW7G/orGLRs6Xvvebt+WWD69NNeMPruu9Hf58cfe++pZk2pTRtvasLQoQo7BK1A8M547dixo5vxOmLECGXLlk2bNm3S7bffripVqmhBUu/CgrBxVRRbWQCOZVttioDVg1oWNqFsEoBlYW0cFpLeNddco7/++sv9x2inIAEEJ/t7ahsUvPLKKzpqmQN39qu+q321kVlATMi0ImLNmiV98YW3IYBtLGBbvFo2MqEBqzV52QQBSx7YtAD4B5lWIHRmvA4cONDNeH3wwQfdjNcvvvhClSpVUtu2bd0HT+BSCFoRsY4c8WaaWlOW7VZlZQJz5ng/s12rfKOsLr7ccsvln/fwYe90vc1Ctfmr8ZWQNUQaO2FE0AqElhw5cujVV191pQJ33XWXq4GdPn26m/F63333aY/txAJcgPIA4BIOHvQul5I2rZQ3b2SsIZTGXaW2Il830uuQMtkeuQBCyvr169W/f3999NFH7vu0adO6TKxNHchsu6Ig4hG0Agh5VheXwXZ6kHTs2DGls045ACHJRmU9/vjjWv7/WwPah1D7vlevXvzdjnCUBwAIeb7SAOPLuAIITbVq1dLSpUv14YcfutFYtpuWBa3WYDl27Fidst1REJEIWgGETdBqo3XsAiC0WX3rrbfeqnXr1mnKlCkqWLCgq3G1WlcLZN9//31mvEYgglYAIY8mLCA82YdQa9KyZi1r2sqePbubLtCmTRtVrlxZ8230CyIGQSuAsAlaU9nIBgBhx8p+rCnLxmTZuKz06dNr7dq1br6rXb7++utALxF+QNAKICymBxjqWYHwZg2XzzzzjAtee/fu7T6oWrbVsq62w5ZlZBG+CFoBhDzKA4DIm/FqW8JakHr33Xe7GtgZM2aodOnS6tatm3bv3h3oJSIJELQCCHkErUBkKlSokCZPnuxmvFrj1pkzZzRu3DgVK1bMzXc9GNOwa4QkglYAIY+gFYhsNlHARmTZjFcbmXXixAkNGTJERYsW1UsvvaTjx48HeolIBAStAMKmppVGLCCy1axZU0uWLHG7apUtW9bNeH3iiSdc5nXMmDHMeA1xBK0AQh6ZVgA+Vt/apEkTffvtt5o6daorIdi7d6+6d+/ual6nT5+us2fPcsBCEEErgJBH0ArgUjNe77zzTm3cuFEjR450M15//vlntW3b1k0bmDdvHhsUhBiCVgAhj6AVQExsFF6vXr3cmKxnn33Wjc365ptv1LBhQ9WrV09r1qzh4IUIglYAIY+aVgBXYsHq008/7YLXPn36uBr4hQsXqkqVKmrdurXLyCK4EbQCCHlkWgHElpUJDB8+3G0H26lTJyVLlkwffPCBq3e99957tWvXLg5mkCJoBRDyCFoBxFXBggU1ceJEN+O1efPmrjlr/PjxKl68uB599FFmvAYhglYAIY+gFUB8WYZ19uzZWr58uWrXru1mvP73v/9VkSJF9OKLL+rYsWMJPrh16kh9+njXCxWSRozw3+9r4EDp+usVFghaAYRN0MqcVgDxVaNGDX355Zf6+OOPVa5cOR0+fFhPPvmkm/H6+uuvJ9qMV+v76tbNf7+nRx6RFizwz2vZP8UWIF91lbRu3fnbDxyQGjWS8uSxxjgpf36pZ0/pr7/i9vwErQDCphHLuoQBICEzXhs3buxmvL711lsqXLiw9u3bpx49eqhkyZKaNm1agme8Zs8upUvnv99R+vRS1qz+ea1HH/UC04slSyY1by59+KG0ebM0aZI0f77UvXvcnp+gFUDIozwAQGKy5qwOHTq4iQKjRo1Sjhw53NSBdu3aqVKlSvr888/jPeP14vIAG1pQq5aUJo1UqpQXzFmmcvbs2D3f7t1S27ZS5sxecGrB4bZtMZcHdOoktWghDR4s5cwpZcokPfusdPq01K+flCWLlC+fNGFC3N7Xp59K8+ZJQ4f++2e2tvvvlypVslpi6eabpR49pKVL4/YaBK0AQh5BK4CkYCVHPXv2dAHrc88958ZmWRa2UaNGuummm7R69eoEPb8lbS2AtMyrPdXYsVL//rF//PHjUt26XjZ1yRJp2TLvup2K//8TUJe0cKG0Z4/3mGHDvMC2aVMvuLR1WAbULjt3xm4d+/dL994rTZ0auyyyvfbMmdKNNypOCFoBhDyCVgBJKX369Hrqqaf066+/6uGHH3bB7OLFi1WtWjW1bNlSW7dujdfzWmZyyxZpyhSpfHkv4zpoUOwfP22ad+p9/HipbFmpZElp4kRpxw5p8eKYH2fZ1JEjpeuukzp39r5aAPzkk1Lx4tITT1jALi1ffuU1WMLZsrcW5Fom9XLatfOC2rx5pYwZvXXHBUErgJDH5gIA/CFbtmx65ZVX3Haw99xzjysjmDVrlm6//fZ4Pd+mTV5TUq5c52+rUiX2j1+7VvrlF9s4wcuw2sUC0hMnvGA4JqVLe8Guj5UJWNDrkzy5V2rw229XXsOoUV5DlQW6VzJ8uPTNN17pg63v4YcVJynidncACD5kWgH4U4ECBTRhwgT17dtXAwYM0Pbt2+P1PJaltPrVhJQXVKwovf32pRu+YpIyZfTvbQ2Xui02PWdWarBqlTcV4EKWde3QQZo8+fxtFpzbpUQJLyiuXVt66ikpd27FCkErgJBH0AogUDNeLdNqGxTEhwVvdirfakIt2+kbiRVbFSpI770n5cjhnW4PBCszeOGF6PWqDRt666paNebH+frY/n9iYawQtAIIeQStAALJ5rrGR/36UtGiUseO0pAh0pEj5xuxYpOB7dBB+u9/vYkBzz3ndf1bEGxNTjYJwL5PagUKRP/eShSMvS/f63/yiReYV67s/XzDBm88Vs2a3jSF2KKmFUDIo6YVQCiy2lGr7zx61AvounaVBgzwfmYjsK4kXTpvAoAFji1beo1Y1lj199+By7xeStq00rhxXqOZrdF2B7NpBR99FLfnIdMKIOSRaQUQzC7s5L9whqqvRMBGVfn4OvaLFYvdc+fKFb1u9GJ2+t2X/TQ22P9y64tpnbFlmdOLR9jaWK4VK5RgBK0AQh5BK4BQNWuWF1TaqCmbBNC7t3fa3E6vJ0RUlPTrr94WrjfcoLBAeQCAkEfQCiBUWR2r7Q5lGVebd2plAnPmeD+zXat8o6zSX3S55ZbLP+/hw94OWzZv1eavxldC1pDYroqK7z5kABAkSpQooU2bNrlh3zfGdYsVAAhSBw96l5jqRPPmjYw1+FAeACBsGrFSXzwoEABCmG0UYJdIX4MP5QEAQh7lAQAQ/ghaAYQ8glYACH8ErQBCHkErAIQ/aloBhLxSpUrp1KlTuvrqqwO9FABAEmF6AAAAAIIe5QEAAAAIegStAAAACHoErQAAAAh6BK0AAAAIegStAAAACHoErQDCRp06Up8+3vVChaQRI/z32gMHStdf77/XA4BIQ9AKICytWSN16+a/13vkEWnBAv+81smTXoB81VXSunXnb580ybvtUpfffvPP2gAgqbC5AICwlD27f18vfXrv4g+PPirlySN9913029u2lRo1in5bp07SiRNSjhz+WRsAJBUyrQDC0sXlARs3SrVqSWnS2A5a0vz5XgZy9uzYPd/u3V5QmDmzlDWr1Ly5tG1bzOUBFiy2aCENHizlzCllyiQ9+6x0+rTUr5+UJYuUL580YULc3tenn0rz5klDh/77Z2nTSrlynb8kTy4tXCh16RK31wCAYETQCiDsnT3rBZDp0kmrV0tjx0r9+8f+8cePS3XrepnUJUukZcu865bV/OefmB9nAeOePd5jhg3zAtumTb3A19bRvbt32bkzduvYv1+6915p6lTvvVzJlCne/Vq3jv17BYBgRdAKIOxZZnLLFi+IK1/ey7gOGhT7x0+bJiVLJo0fL5UtK5UsKU2cKO3YIS1eHPPjLJs6cqR03XVS587eVwuAn3xSKl5ceuIJKVUqafnyK68hKsrL3lqQW6lS7NZtWdz27b0MLACEOmpaAYS9TZuk/Pm9U+Y+VarE/vFr10q//CJlyBD9dqsVtWA4JqVLe8Guj5UJlClz/ns7fW+lBrFpkho1SvrrLy/QjY2VK6UNG7xAHQDCAUErgLBnWUqrX01IeUHFitLbb8et4Stlyujf2xoudZs9/5VYqcGqVVLq1NFvt6xrhw7S5MnRb7essNXY2roBIBwQtAIIeyVKeKfyrSbUsp2+kVixVaGC9N57Xgd+xowKCCszeOGF899brWzDht66qlaNft+jR6Xp06UXX/T7MgEgyVDTCiDs1a8vFS0qdeworV/v1ZD6GrFik4G1TGa2bN7EgKVLpa1bpS+/lHr3lnbtkl8UKOCVFvgu117r3W7vy6YQXMgCWZtSYOsGgHBB0Aog7FntqI22sgxk5cpS167SgAHez2wE1pVYB75NALDAsWVLrxHLGqv+/jtwmdfLefNNb502pQAAwsVVUVFW7QUAkcWyrTZFwBqsLFuZUNYgZVlYG4cFAEh81LQCiAizZnmzVW3UlAWqdmq/Zs2EB6z2sf/XX70tXG+4IbFWCwC4GOUBACLCkSNSjx5eU5bNO7UygTlzvJ/ZrlW+bVgvvtxyy+Wf9/Bhb4ctm7dq81fjKyFrAIBIQHkAgIh38KDc5VJsMH/evJGxBgAIZgStAAAACHqUBwAAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAIOgRtAIAACDoEbQCAAAg6BG0AgAAQMHu/wCrjNRQrXkNVQAAAABJRU5ErkJggg==", + "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", "text/plain": [ "
" ] @@ -362,7 +363,7 @@ "outputs": [ { "data": { - "image/png": "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ABBmhFac8f777+vaa6/V8ePHdc011+i9995TqVKl+IYAAEDEEVoRmDt3rvr06aMTJ04EP99++22VsB1jAAAAHiiwc1qzy/ab2aVHbSj+qlWr9NNPPwX3lyxZUh07dgxOhde2S2TFoNmzZ2vAgAHBd3LjjTdqxowZKlKkSKSXBQAAENvTA7777ju99tprevnll7Vly5Yz91966aUaPny4fvGLX8RMlXHatGm69dZblZSUpF/96leaPHmyCheOmf+XAQAABURMhtYUFtSs8mrh1U6Pnz59Ori/fPnyuuWWW3T77bcHV4CKVvbZX3311aAK3aVLF912220qVIiOEQAA4J+YDq1p2RWfrMo4ceJEff3112fu//nPfx5UX/v27atixYpFdI0AAACxitB6FuvrtLmkVn213fNWjTWVKlXSoEGDNGzYMNWvXz8S/1YAAAAxi9B6Hrt27QpOn7/yyivavXv3mftt05ZVX3v37s2GJQAAgDAgtIbAel1thulf//pXffjhh0EPqKlatWrQBzp06FDVrVs3v/+tAAAAYhahNZu2b9+uSZMmBcfevXvdlxgXp+7duwfV1169erH7HgAAII8RWnPo1KlTevfdd4Pqq136NEVCQoKGDBkSHDVr1syrfycAAICYRmjNA5s3bw6mDkyZMkXff/99cJ+NjrJLotrYLKvCxsfHKz907iy1bCk995xkHQojR7ojHMaMsStpSevWhef9AABA7CK05iG7BKpd/tQmDyxevPjM/XXq1An6XgcPHqzq1avnW2j97jupVCm7ypfC4uhR+8xSxYr59x7XX+9C8b59Nj9Xuvpq6YknpBo1Uh8zYoS0bJn0+eeSjdUlRAMAEH2YJJ+HbI5r//79tWjRIn355ZcaOXJkcKECm/s6evTo4DKxN9xwgz766KMzo7TyUuXK4QuspnTp/A2spksX6Y03pI0bpbfekuwCZjfckP4xti9u8GCpX7/8XQsAAIgcQms+sStpPfvss8GorKlTp+qyyy4LphC89dZb6tatmxo0aKAnn3wyuKRsXrH2AKu4ptiwQerUSSpeXGrSRLLW27g4d0o/FDbly4KgVTgtnPbubRvR0rcHWJU3xaBBUp8+0vjxNllBKldOevRRm74g3X+/VKGCZG2+kyeH/pl+8xvpkkusWi1ddpn0+99LK1daT3HqY154QbrzTunCC0N/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", + "image/png": "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ABBmhFac8f777+vaa6/V8ePHdc011+i9995TqVKl+IYAAEDEEVoRmDt3rvr06aMTJ04EP99++22VsB1jAAAAHiiwc1qzy/ab2aVHbSj+qlWr9NNPPwX3lyxZUh07dgxOhde2S2TFoNmzZ2vAgAHBd3LjjTdqxowZKlKkSKSXBQAAENvTA7777ju99tprevnll7Vly5Yz91966aUaPny4fvGLX8RMlXHatGm69dZblZSUpF/96leaPHmyCheOmf+XAQAABURMhtYUFtSs8mrh1U6Pnz59Ori/fPnyuuWWW3T77bcHV4CKVvbZX3311aAK3aVLF912220qVIiOEQAA4J+YDq1p2RWfrMo4ceJEff3112fu//nPfx5UX/v27atixYpFdI0AAACxitB6FuvrtLmkVn213fNWjTWVKlXSoEGDNGzYMNWvXz8S/1YAAAAxi9B6Hrt27QpOn7/yyivavXv3mftt05ZVX3v37s2GJQAAgDAgtIbAel1thulf//pXffjhh0EPqKlatWrQBzp06FDVrVs3v/+tAAAAYhahNZu2b9+uSZMmBcfevXvdlxgXp+7duwfV1169erH7HgAAII8RWnPo1KlTevfdd4Pqq136NEVCQoKGDBkSHDVr1syrfycAAICYRmjNA5s3bw6mDkyZMkXff/99cJ+NjrJLotrYLKvCxsfHKz907iy1bCk995xkHQojR7ojHMaMsStpSevWhef9AABA7CK05iG7BKpd/tQmDyxevPjM/XXq1An6XgcPHqzq1avnW2j97jupVCm7ypfC4uhR+8xSxYr59x7XX+9C8b59Nj9Xuvpq6YknpBo1Uh8zYoS0bJn0+eeSjdUlRAMAEH2YJJ+HbI5r//79tWjRIn355ZcaOXJkcKECm/s6evTo4DKxN9xwgz766KMzo7TyUuXK4QuspnTp/A2spksX6Y03pI0bpbfekuwCZjfckP4xti9u8GCpX7/8XQsAAIgcQms+sStpPfvss8GorKlTp+qyyy4LphC89dZb6tatmxo0aKAnn3wyuKRsXrH2AKu4ptiwQerUSSpeXGrSRLLW27g4d0o/FDbly4KgVTgtnPbubRvR0rcHWJU3xaBBUp8+0vjxNllBKldOevRRm74g3X+/VKGCZG2+kyeH/pl+8xvpkkusWi1ddpn0+99LK1daT3HqY154QbrzTunCC0N/XQAAULAQWvNZiRIlgkvCLl++XOvXr9edd96psmXLasuWLfrd734XbNyy6qy1E+TlxcmskGsB0iqvq1ZJEydKo0aF/vxjx1yV06qpS5a40+92u0cP6eTJzJ+3cKG0Z497zjPPuGB77bUu+No6hg93x86d2f9MBw5IM2e68FqkSPafDwAACi5Caxg1b95cL730kvbs2ROMzGrXrl0whWDWrFnq3LmzmjRpElRnD1g6y6V589yp9GnTpBYtXMV13LjQnz9rlm0mkyZNsnW7XtEpU6QdO6RFizJ/nlVTrfLZsKE7ZW8/LQA/9JBkFxJ78EGpaFFp+fLQ1/K737leXav22vu/807ozwUAANGB0BoBpUqVCi5K8Omnn2rNmjXBpWHtvg0bNujee+9VjRo1zlRnc1p9tR7QWrWkatVS72vfPvTnr1ljUxGkMmVchdUOC6SJiS4MZ6ZpUxd2U1ibgIXeFDZEwcKnbawKlbUWrF3rgrg9/5ZbXB8rAACIHYTWCGvdunUwbcCqr3/5y1/UokWLYArB9OnT1alTJ/3emjhzwEKd9a/mpr2gTRu3Ez/tsWmTdNNNmT/v7NP2toaM7svOPrRKlaQGDaSuXV0F+P33XV8rAACIHYRWT1ifq11Ra+3atVq5cqVuvfXWoB92Z06aPyU1auROpf/nol2B1atDf37r1tJXX0lVqkgXXZT+uOACRUxKhdVGbQEAgNhBaPWMXRK2Q4cOmjx5clB9HThwYI5ex6qS9epJ9vT1610PacpGrFAqsAMGuAqnTQxYulTatk2y0bM2E3XXLoXFp59KL73kKrxffy19/LGr8trnuvTS1MdZG4M95ttvpePHU6vC59swBgAAChZCq8fKlSsXXE0rJ6z300Zb2QUA2rWThgyRRo92f7MRWFmxqQM2AaB2balvX7cRyzZWWSgsW1ZhUaKE9Pbb0lVXpW7satbMhedixVIfZ5+tVSvp5Zdd+4LdtsOmGAAAgOjAFbFiiFVbbYqAVSatWplbNgnAqrA2DgsAACA/Fc7XV0dEzZnjdv3bqCkLqnZqv2PH3AdW6yvdulVasMBVNAEAAPIb7QFR7MgR6Y473KYsu1qVtQmkzDi1q1aljLI6++jZ8/yve+iQu8KWzVu1+as5lZs1AACA2EJ7QIyy6xdkdg0D6yVNSIiNNQAAgIKB0AoAAADv0R4AAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqG1APvpp580aNAg3XTTTdrDNUsBAEAUI7QWYPHx8dqwYYNef/11LVmyJNLLAQAAyDeE1gKu1X+uo7p27dpILwUAACDfEFoLOEIrAACIBYTWKAqtycnJkV4OAABAvuAyrgXc8ePHVaZMmWBT1q5du5SQkBDpJQEAAOQ5Kq0FXIkSJdSoUaPgNn2tAAAgWhFaowB9rQAAINoRWqMAoRUAAEQ7QmsUILQCAIBox0asKHDw4EFVqFDhzO1y5cpFekkAAAB5ikprFChfvrzq1KkT3F63bl2klwMAAJDnCK1RghYBAAAQzQitUYLQCgAAohmhNUoQWgEAQDRjI1aUsKth1apVS/Hx8Tp69KiKFy8e6SUBAADkGSqtUcIu31qxYsXgcq6ff/55pJcDAACQpwitUSIuLo4WAQAAELUIrVGEvlYAABCtCK1RhNAKAACiFaE1irRs2TL4uX79+qC3FQAAIFoQWqNIgwYNVLJkSR07dkxfffVVpJcDAACQZwitUcTGXV188cXB7bVr10Z6OQAAAHmG0Bpl6GsFAADRiNAaZQitAAAgGhFao3Qz1rp165ScnBzp5QAAAOQJLuMaZRITE1W6dOlgesDOnTtVs2bNSC8JAAAg16i0RpnixYurcePGwW02YwEAgGhBaI1C9LUCAIBoQ2iN4tBqfa0AAADRgNAaxZuxaA8AAADRgo1YUejgwYOqUKFCcPvAgQMqX758pJcEAACQK1Rao5CF1Lp16wa3aREAAADRgNAapdiMBQAAogmhNUqxGQsAAEQTQmuUYjMWAACIJmzEilK7du1SrVq1FB8fryNHjqhEiRKRXhIAAECOUWmNUgkJCapUqVJwOdfPP/880ssBAADIFUJrlIqLi2MzFgAAiBqE1ijGZiwAABAtCK1RjM1YAAAgWhBaY6DSun79+qC3FQAAoKAitEax+vXrq2TJkjp27Jg2bdoU6eUAAADkGKE1itm4qxYtWgS3165dG+nlAAAA5BihNcqxGQsAAEQDQmuUYzMWAACIBoTWGKm0WntAcnJypJcDAACQI1zGNcolJiaqdOnSwfSAHTt2BJd2BQAAKGiotEa54sWLq0mTJsFtNmMBAICCqnCkF4D89+tf/1pLly7VqVOn+LoBAECBRHsAAAAAvEd7AAAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuE1hjWubM0cqS7Xbeu9Nxz4XvvMWPsErPhez8AAFCwEVoRWL1aGjYsfF/GffdJCxaE571OnHABOS5OWrcu9f7PPpP695fsImElSkiNG0vPPx+eNQEAgOzh4gIIVK4c3i+idGl3hMMDD0g1ariQmtaaNe5zz5jhgusnn7jgHh8v3XVXeNYGAABCQ6UVGbYHbNggdepkl4GV7Cqw8+e7SuXcuaF9Ybt3S/36SeXLSxUrSr17S9u3Z94eMGiQ1KePNH68VLWqVK6c9Oij0unT0v33SxUqSDVrSpMnZ+8f7IMPpHnzpAkTzv3b4MHSCy9IV1whXXihdPPN0q23Sm+/zX8UAAD4htCKcyQluQBZsqS0apU0caI0alToX9SxY1KXLq6SumSJtGyZu92jh3TyZObPW7hQ2rPHPeeZZ1ywvfZaF3xtHcOHu2PnztDWsXevNHSoNH26+yyhOHTIBWQAAOAXQivOYZXJLVukadOkFi1cxXXcuNC/qFmzpEKFpEmTpObNXa/olCnSjh3SokWZP8/ColU+GzZ0VVD7aQH4oYek+vWlBx+UihaVli/Peg3Jya56ayG3bdvQ1r1ihfTGG9Ltt4f+WQEAQHjQ04pzbNzoejyrVUu9r3370L8o6xXdvFkqUyb9/YmJLgxnpmlTF3ZTWJtAs2apv1uvqbUa7NuX9RpefFE6fNgF3VB88YVrYXj4Yalr19CeAwAAwofQigyrlNa/mpv2gjZtpJkzs7fhq0iR9L/bGjK6z14/K9ZqsHKlVKxY+vut6jpggDR1aup9X34pXXmlayUYPTrr1wYAAOFHaMU5GjVyp/KtJ9SqnSkjsULVurU0e7ZUpYpUtmxkvmBrMxg7NvV365Xt3t2tq0OH9BVWC6wDB2avBQIAAIQXPa04h50er1fPBbn1610PacpGrFAqsFbJrFTJnW5fulTatk1avFgaMULatSs8X3jt2q61IOVo0MDdb5/LphCkBFbbMGaf9957pW+/dcd334VnjQAAIHSEVpzDekdttNXRo1K7dtKQIamnzW0EVlZsp75NALDg2Lev24hlG6uOH49c5TUjb77pAqq1MVSvnnrYZwYAAH6JS062Dkbg/KzaalMEbIOVVStzyzZIWRXWxmEBAABkhZ5WZGjOHDdb1UZNWVC1U/sdO+Y+sNr/Im3d6i7h2qoVXz4AAAgN7QHI0JEj0h13uE1ZNu/UTpm/8477m121KuUyrGcfPXtmPbzfrrBl81Zt/mpO5WYNAACg4KE9ANl24IA7MlKihJSQEBtrAAAA4UNoBQAAgPdoDwAAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuE1hiVlJSkoUOH6qabbtJmG8QKAADgMUJrjCpUqJD27dun119/XXPtmq0AAAAeI7TGsJ///OfBz8WLF0d6KQAAAOdFaI1hV1xxRfBz6dKl+umnnyK9HAAAgEwRWmNYy5YtVaZMGR06dEj/+te/Ir0cAACATBFaY1jhwoXVsWPH4DYtAgAAwGeE1hiX0iJAaAUAAD4jtMa4lM1YS5YsUXJycqSXAwAAkKG4ZJJKTDt58qTKlSun48eP6/PPP1fTpk0jvSQAAIBzUGmNcUWLFtVll112ptoKAADgI0IrmNcKAAC8R2hFus1YdIsAAAAf0dMKJSYm6oILLgj6Wzdt2qT69evzrQAAAK9QaYWKFy+uDh06BN8Eo68AAICPCK1I1yLAZiwAAOAjQivSzWul0goAAHxETysCP/74YzCv9fTp09q2bZvq1q3LNwMAALxBpRWBUqVKqW3btsFtWgQAAIBvCK04gxYBAADgK0IrMpzXCgAA4BN6WnHGoUOHVKFCBSUlJWnXrl1KSEjg2wEAAF6g0ooz7AIDLVu2DG7T1woAAHxCaEU6zGsFAAA+IrQiHTZjAQAAH9HTinT279+vSpUqBbf37t2rKlWq8A0BAICIo9KKdCpWrKjmzZsHt5cuXcq3AwAAvEBoxTloEQAAAL4htOIczGsFAAC+oacV5/j2229VvXp1xcXF6fvvvw9mtwIAAEQSlVaco1q1amrYsKGSk5O1bNkyviEAABBxhFZkiHmtAADAJ4RWZIjNWAAAwCf0tCJDu3btUq1atVSoUCEdPHhQZcuW5ZsCAAARQ6UVGapZs6YuvPBCJSUl6ZNPPuFbAgAAEUVoRaZoEQAAAL4gtCJTbMYCAAC+oKcVmdq6davq1aunIkWK6IcfflDJkiX5tgAAQERQaUWmfvaznwW9radOndKKFSv4pgAAQMQQWpEpuyIWLQIAAMAHhFacF5uxAACAD+hpxXlt3LhRjRo1UrFixYK+1uLFi/ONAQCAsKPSivNq0KCBqlatqhMnTmj16tV8WwAAICIIrciyr5UWAQAAEGmEVmSJzVgAACDSCK3IklVaO3TooISEhGD8FQAAQLixEQtZSkpKCtoE7AAAAIgEQisAAAC8R3sAAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QiVzp3lkaOdLfr1pWeey58X+iYMVLLluF7PwAAEDmEVuQZu8rrsGHh+0Lvu09asCA873XihAvINvVr3brU+/fvl3r0kGrUkIoVk2rVku66Szp8ODzrAgAgVhBakWcqV5ZKlgzfF1q6tFSxYnje64EHXDA9W6FCUu/e0rvvSps2Sa+9Js2fLw0fHp51AQAQKwityDNntwds2CB16iQVLy41aeLCnFUq584N7fV275b69ZPKl3fh1MLh9u2ZtwcMGiT16SONHy9VrSqVKyc9+qh0+rR0//1ShQpSzZrS5MnZ+1wffCDNmydNmHDu32xtv/611LatVKeOdNVV0h13SEuXZu89AADA+RFakS+SklyAtMrrqlXSxInSqFGhP//YMalLF1dNXbJEWrbM3bZT8SdPZv68hQulPXvcc555xgXba6914dLWYRVQO3buDG0de/dKQ4dK06eHVkW29377bemKK0L/rAAAIGuEVuQLq0xu2SJNmya1aOEqruPGhf78WbPcqfdJk6TmzaXGjaUpU6QdO6RFizJ/nlVTX3hBathQGjzY/bQA/NBDUv360oMPSkWLSsuXZ72G5GRXvbWQa5XU8+nf34XahASpbFm3bgAAkHcIrcgXGze6TUnVqqXe17596M9fs0bavFkqU8ZVWO2wQJqY6MJwZpo2dWE3hbUJWOhNER/vWg327ct6DS++6DZUWdDNyrPPSv/8p2t9sPXde2/WzwEAAKErnI3HAiGzKqX1r+amvaBNG2nmzIw3fGWmSJH0v9saMrrPXj8r1mqwcqWbCpCWVV0HDJCmTk29z8K5HY0auVB8+eXSH/4gVa+e9fsAAICsEVqRLyy82al86wm1amfKSKxQtW4tzZ4tVaniTrdHgrUZjB2bvl+1e3e3rg4dzh/YU8ZkAQCAvEFoRb7o2lWqV08aOFB68knpyJHUjVihVGCtkvnUU25iwGOPuV3/FoJtk5NNArDf81vt2ul/txYFY58r5f3ff98F83bt3N+//NKNx+rY0U1TAAAAeYOeVuQL6x21/s6jR12gGzJEGj3a/c1GYGXFNjXZBAALjn37uo1YtrHq+PHIVV4zUqKE9MorbqOZrdGuDmbTCv7+90ivDACA6BKXnJxyMhPIX7Zj38KdbbCyamVu2QYpm4dq47AAAEB0oz0A+WbOHHfK3EZNWVAdMcKdNs9tYLX/zdq61V3CtVWrvFotAADwGe0ByDfWx2pXh7JNWTbv1NoE3nnH/c2uWpUyyurso2fP87/uoUPuCls2b9Xmr+ZUbtYAAADCi/YARMSBA+7IrE/UhvTHwhoAAEBoCK0AAADwHu0BAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QCAADAe4RWAAAAeI/QCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QCAADAe4RWAAAAeI/QCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QCAADAe4RWAAAAeI/QCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CK4CI69xZGjnS3a5bV3ruufC995gxUsuW4Xs/AEDOEFoBeGX1amnYsPC93333SQsWhOe9TpxwATkuTlq37tzPfdVVUrlyUvnyUrdu5z4GAGIZoRWAVypXlkqWDN/7lS4tVawYnvd64AGpRo1z7z9yROreXapdW1q1Slq2TCpb1t136lR41gYAviO0AvDK2e0BGzZInTpJxYtLTZpI8+e7SuXcuaG93u7dUr9+rnpp4bR3b2n79szbAwYNkvr0kcaPl6pWdZXPRx+VTp+W7r9fqlBBqllTmjw5e5/rgw+kefOkCRPO/dvGjdLBg9Jjj0kNG0pNm0qPPCLt2yft2JG99wGAaEVoBeCtpCQXIK3yahXIiROlUaNCf/6xY1KXLq6aumSJq2Da7R49pJMnM3/ewoXSnj3uOc8844Lttde64GvrGD7cHTt3hraOvXuloUOl6dMzriJbUK1USXr1Vbeu48fdbQuvdeqE/nkBIJoRWgF4yyqTW7ZI06ZJLVq4iuu4caE/f9YsqVAhadIkqXlzqXFjacoUV71ctCjz51k19YUXXJgcPNj9tAD80ENS/frSgw9KRYtKy5dnvYbkZFe9tZDbtm3GjylTxq1nxgypRAkXrP/v/6T335cKFw798wJANCO0AvCWnTavVUuqVi31vvbtQ3/+mjXS5s0uFFoQtMMCaWKiC8OZsQqnhd0U1iZgoTdFfLxrNbDT91l58UXp8GEXdDNjlVULxx07SitXujBsa7jmGvc3AIDE/8MD8JZVKa1/NTftBW3aSDNnZrzhKzNFiqT/3daQ0X32+lmxVgMLosWKpb/fqq4DBkhTp0p/+5vrs12xIjUs233WjvDOO9Ivf5n1+wBAtCO0AvBWo0buVL71hFq1M2U0VKhat5Zmz5aqVHG78SPB2gzGjk393XplbSqAratDB3eftR5YWE0b0FN+DyUYA0AsoD0AgLe6dpXq1ZMGDpTWr3enzVM2YoVSgbVKpm1wsokBS5dK27ZJixdLI0ZIu3YpLGyMVbNmqUeDBu5++1w2hSDlc9r0gDvvlP79b+mLL6Rbb3X9rLaRDABAaAXgMesdtdFWR49K7dpJQ4ZIo0e7v9kIrKzYTn2bAGDBsW9ftxHLeketTzRSldfMKsrvveeC+aWXSpdf7iqyH34oVa8e6dUBgB/ikpOtawwACgarttoUAdtgZdXK3LINUlaFtXFYAAB/0dMKwGtz5rhd/zZqyoKqndq3Xfa5Daz2v+tbt7pLuLZqlVerBQDkF3paAXjNLnF6xx3uFLrNO7U2AdtRb+yqVSmjrM4+evY8/+seOuSusGXzVm3+ak7lZg0AgNDRHgCgwDpwwB0ZsSH9CQmxsQYAiAWEVgAAAHiP9gAAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAwHuEVgAAAHiP0AoAAADvEVoBAADgPUIrAAAAvEdoBQAAgPcIrQAAAPAeoRUAAADeI7QCAADAe4RWAAAAeI/QCgAAAO8RWgEAAOA9QisAAAC8R2gFAACA9witAAAA8B6hFQAAAN4jtAIAAMB7hFYAAAB4j9AKAAAA7xFaAQAA4D1CKwAAALxHaAUAAID3CK0AAADwHqEVAAAA3iO0AgAAQL77/3Ju4ch6AlyyAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -406,7 +407,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/Users/hannahbaumann/.local/share/mamba/envs/openfe/lib/python3.13/site-packages/konnektor/network_planners/generators/explicit_network_generator.py:85: UserWarning: Generated network is not connected as a single network.\n", + "/Users/hannahbaumann/.local/share/mamba/envs/openfe_env/lib/python3.12/site-packages/konnektor/network_planners/generators/explicit_network_generator.py:85: UserWarning: Generated network is not connected as a single network.\n", " warnings.warn(\"Generated network is not connected as a single network.\")\n" ] } @@ -463,47 +464,59 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "d06afced", + "execution_count": 14, + "id": "d1bf455e-d793-4bd5-a7bb-2da6fc2ac538", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "connected: True\n", - "edges added: [('lig_ejm_31', 'lig_ejm_48'), ('lig_jmc_28', 'lig_ejm_47'), ('lig_ejm_47', 'lig_ejm_48'), ('lig_ejm_46', 'lig_ejm_48'), ('lig_ejm_46', 'lig_ejm_47'), ('lig_jmc_28', 'lig_ejm_48')]\n" + "edges added: [('lig_ejm_46', 'lig_ejm_48'), ('lig_ejm_46', 'lig_ejm_47')]\n", + "connected: True\n" ] } ], "source": [ - "def repair_by_score(fragments, mapper, scorer, n_connecting_edges=1):\n", + "def repair_by_score(fragments, mapper, scorer, avoid_edges=(), n_connecting_edges=1):\n", " \"\"\"Reconnect broken fragments with bridging edges chosen by score.\n", "\n", " Parameters\n", " ----------\n", " fragments : list[LigandNetwork]\n", - " The connected pieces to join back together, including single-node\n", + " The connected subnetworks to join back together, including single-node\n", " networks for any missing ligands.\n", " mapper : AtomMapper\n", " Builds the atom mapping for each candidate edge.\n", " scorer : Callable\n", - " Scores a mapping by expected difficulty (e.g. a lomap scorer).\n", + " Scores a mapping by expected difficulty (e.g. a lomap scorer); higher\n", + " scores are preferred.\n", + " avoid_edges : Iterable[tuple[SmallMoleculeComponent, SmallMoleculeComponent]], optional\n", + " Component pairs that must not be proposed as bridges — e.g. the\n", + " already-attempted transformations. Empty by default.\n", " n_connecting_edges : int, optional\n", - " Number of bridges to add per join, by default 1.\n", + " Number of bridges to add per join, by default 1. Increase for redundancy\n", + " against future failures.\n", "\n", " Returns\n", " -------\n", " LigandNetwork\n", - " A single connected network: the fragments' edges plus the chosen\n", - " bridging edges.\n", + " A single connected network: the fragments' edges plus the chosen bridges.\n", + "\n", + " Raises\n", + " ------\n", + " RuntimeError\n", + " If the fragments cannot be joined into one connected network — e.g. all\n", + " candidate bridges between some fragments were excluded via ``avoid_edges``.\n", " \"\"\"\n", " concatenator = MstConcatenator(\n", - " mappers=mapper, scorer=scorer, n_connecting_edges=n_connecting_edges\n", + " mappers=mapper,\n", + " scorer=scorer,\n", + " n_connecting_edges=n_connecting_edges,\n", + " avoid_edges=avoid_edges,\n", " )\n", " return concatenator.concatenate_networks(ligand_networks=fragments)\n", "\n", - "\n", "def repair_edges(repaired, completed):\n", " \"\"\"The newly added bridges, i.e. what still needs simulating.\"\"\"\n", " return list(set(repaired.edges) - set(completed.edges))\n", @@ -511,11 +524,15 @@ "mapper = KartografAtomMapper()\n", "scorer = lomap_scorers.default_lomap_score\n", "\n", - "repaired_network_by_score = repair_by_score(fragments, mapper, scorer, n_connecting_edges=2)\n", - "print(\"connected:\", repaired_network_by_score.is_connected())\n", + "# The planned network records every attempted transformation. Exclude them all\n", + "# so the repair never re-proposes a failed edge. \n", + "frag_components = {n.name: n for frag in fragments for n in frag.nodes}\n", + "avoid_edges = [e for e in planned.edges]\n", "\n", - "new_edges = repair_edges(repaired_network_by_score, completed)\n", - "print(\"edges added:\", [(e.componentA.name, e.componentB.name) for e in new_edges])" + "repaired_by_score = repair_by_score(fragments, mapper, scorer, avoid_edges=avoid_edges)\n", + "new_edges = repair_edges(repaired_by_score, completed)\n", + "print(\"edges added:\", [(e.componentA.name, e.componentB.name) for e in new_edges])\n", + "print(\"connected:\", repaired_by_score.is_connected())" ] }, { @@ -537,7 +554,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 15, "id": "fbdc9724", "metadata": {}, "outputs": [], @@ -613,7 +630,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 16, "id": "42ac44ab", "metadata": {}, "outputs": [ @@ -621,7 +638,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "wrote 12 transformations\n" + "wrote 4 transformations\n" ] } ], @@ -635,6 +652,14 @@ "save_transformations(alchemical_network, \"repair_transformations\")\n", "print(\"wrote\", len(alchemical_network.edges), \"transformations\")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24c59994-f54d-4455-b5e6-c2799aefba84", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -653,7 +678,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.11" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/environment.yaml b/environment.yaml index 7bcdcab..f9a40a3 100644 --- a/environment.yaml +++ b/environment.yaml @@ -20,5 +20,5 @@ dependencies: - git+https://github.com/OpenFreeEnergy/openfe_analysis@v0.5.0 # Use conda-forge v0.5 after new openfe release updates pins on openfe-analysis - git+https://github.com/OpenFreeEnergy/cinnabar@0.6.0 # Use conda-forge v0.6.0 after new openfe release updates pins on cinnabar - git+https://github.com/OpenFreeEnergy/kartograf@v2.0.0 # Use conda-forge v2.0 after new openfe release updates pins on kartogra - - git+https://github.com/OpenFreeEnergy/konnektor@v0.4.0 # use conda-forge v0.4.0 after openfe conda-forge release + - git+https://github.com/OpenFreeEnergy/konnektor@avoid_edges_concatenator # use conda-forge v0.4.0 after openfe conda-forge release - git+https://github.com/OpenFreeEnergy/Lomap@v3.3.0 # use conda-forge v3.3.0 after openfe conda-forge release From 69d2716489c23862b0c060cdc8255b3eb3613bd6 Mon Sep 17 00:00:00 2001 From: hannahbaumann Date: Thu, 3 Sep 2026 15:27:00 +0200 Subject: [PATCH 6/8] Small fixes --- cookbook/repairing_broken_networks.ipynb | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/cookbook/repairing_broken_networks.ipynb b/cookbook/repairing_broken_networks.ipynb index 5aa3b12..18901a6 100644 --- a/cookbook/repairing_broken_networks.ipynb +++ b/cookbook/repairing_broken_networks.ipynb @@ -489,11 +489,9 @@ " mapper : AtomMapper\n", " Builds the atom mapping for each candidate edge.\n", " scorer : Callable\n", - " Scores a mapping by expected difficulty (e.g. a lomap scorer); higher\n", - " scores are preferred.\n", - " avoid_edges : Iterable[tuple[SmallMoleculeComponent, SmallMoleculeComponent]], optional\n", - " Component pairs that must not be proposed as bridges — e.g. the\n", - " already-attempted transformations. Empty by default.\n", + " Scores a mapping by expected difficulty (e.g. a lomap scorer).\n", + " avoid_edges : Iterable[LigandAtomMapping], optional\n", + " Edges that should not be considered when attempting to fix a network. Empty by default.\n", " n_connecting_edges : int, optional\n", " Number of bridges to add per join, by default 1. Increase for redundancy\n", " against future failures.\n", @@ -526,7 +524,6 @@ "\n", "# The planned network records every attempted transformation. Exclude them all\n", "# so the repair never re-proposes a failed edge. \n", - "frag_components = {n.name: n for frag in fragments for n in frag.nodes}\n", "avoid_edges = [e for e in planned.edges]\n", "\n", "repaired_by_score = repair_by_score(fragments, mapper, scorer, avoid_edges=avoid_edges)\n", From 68a72595ec568aa642d85d23ff8eaffec5906828 Mon Sep 17 00:00:00 2001 From: hannahbaumann Date: Mon, 7 Sep 2026 15:04:20 +0200 Subject: [PATCH 7/8] More updates --- cookbook/repairing_broken_networks.ipynb | 75 +++++++++++++----------- 1 file changed, 42 insertions(+), 33 deletions(-) diff --git a/cookbook/repairing_broken_networks.ipynb b/cookbook/repairing_broken_networks.ipynb index 18901a6..db29d61 100644 --- a/cookbook/repairing_broken_networks.ipynb +++ b/cookbook/repairing_broken_networks.ipynb @@ -64,7 +64,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "8d681408", "metadata": {}, "outputs": [ @@ -96,7 +96,7 @@ "from openfe.setup.ligand_network_planning import generate_network_from_names\n", "from gufe.tokenization import JSON_HANDLER\n", "\n", - "from konnektor.network_tools import merge_two_networks, decompose_network\n", + "from konnektor.network_tools import merge_two_networks, connected_subnetworks\n", "from konnektor.network_planners import MstConcatenator" ] }, @@ -112,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "8a702d3c", "metadata": {}, "outputs": [ @@ -152,7 +152,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "id": "d0f1f442", "metadata": {}, "outputs": [], @@ -216,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "be375fe0-99b4-49c9-830a-6bdcd77a6b75", "metadata": {}, "outputs": [ @@ -311,7 +311,7 @@ " return [n for n in planned.nodes if n.name not in have]\n", "\n", "\n", - "fragments = decompose_network(completed)\n", + "fragments = connected_subnetworks(completed)\n", "missing = missing_ligands(planned, completed)\n", "print(\"missing ligands:\", [n.name for n in missing])\n", "\n", @@ -457,14 +457,17 @@ "source": [ "## 7. Repair — by lomap score\n", "\n", - "You can also let the scorer choose the bridges: the concatenator proposes candidate edges\n", - "between fragments, scores them with lomap, and keeps the best. \n", - "`n_connecting_edges` determines how many edges to connect the fragments with." + "Let the scorer choose the bridges: the concatenator treats each fragment as a\n", + "node and joins them with a minimum spanning tree, keeping the single best-scoring\n", + "edge per join.\n", + "\n", + "The transformations that already failed are passed as `avoid_edges`, so the\n", + "concatenator never proposes them again." ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 10, "id": "d1bf455e-d793-4bd5-a7bb-2da6fc2ac538", "metadata": {}, "outputs": [ @@ -472,13 +475,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "edges added: [('lig_ejm_46', 'lig_ejm_48'), ('lig_ejm_46', 'lig_ejm_47')]\n", + "edges added: [('lig_ejm_46', 'lig_ejm_47'), ('lig_ejm_46', 'lig_ejm_48')]\n", "connected: True\n" ] } ], "source": [ - "def repair_by_score(fragments, mapper, scorer, avoid_edges=(), n_connecting_edges=1):\n", + "def repair_by_score(fragments, mapper, scorer, avoid_edges=()):\n", " \"\"\"Reconnect broken fragments with bridging edges chosen by score.\n", "\n", " Parameters\n", @@ -492,9 +495,6 @@ " Scores a mapping by expected difficulty (e.g. a lomap scorer).\n", " avoid_edges : Iterable[LigandAtomMapping], optional\n", " Edges that should not be considered when attempting to fix a network. Empty by default.\n", - " n_connecting_edges : int, optional\n", - " Number of bridges to add per join, by default 1. Increase for redundancy\n", - " against future failures.\n", "\n", " Returns\n", " -------\n", @@ -504,16 +504,11 @@ " Raises\n", " ------\n", " RuntimeError\n", - " If the fragments cannot be joined into one connected network — e.g. all\n", + " If the fragments cannot be joined into one connected network, e.g. all\n", " candidate bridges between some fragments were excluded via ``avoid_edges``.\n", " \"\"\"\n", - " concatenator = MstConcatenator(\n", - " mappers=mapper,\n", - " scorer=scorer,\n", - " n_connecting_edges=n_connecting_edges,\n", - " avoid_edges=avoid_edges,\n", - " )\n", - " return concatenator.concatenate_networks(ligand_networks=fragments)\n", + " concatenator = MstConcatenator(mappers=mapper, scorer=scorer)\n", + " return concatenator.concatenate_networks(fragments, avoid_edges=avoid_edges)\n", "\n", "def repair_edges(repaired, completed):\n", " \"\"\"The newly added bridges, i.e. what still needs simulating.\"\"\"\n", @@ -532,6 +527,28 @@ "print(\"connected:\", repaired_by_score.is_connected())" ] }, + { + "cell_type": "code", + "execution_count": 12, + "id": "4abcaf8c-59e5-4a1b-a211-c7c0e5500950", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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nzhxojrYDi4AgLiiJZ8CduzYodtvv10nn3yyF/DFixfXf/7zH82dOzcmAW9atWqlfv36efe7d++uX375JSbvAwDIGC35gPvggw907bXXauXKld73l156qZ555hlVrFgx5u+9e/dub8a+9SBY9/17772nXJHsMQsAiApa8gG1fv16XX755WrXrp0X8FWqVNG7777rlamNR8CbAgUKaPTo0d5XK6xja+4BAPFDyAfMgQMH9OKLL3rr28eOHavcuXPrpptu0qJFi9S+ffu4H0/9+vX16KOPevdvvvlmLVmyJO7HAACpiu76ALEgt4l1c/7cXN1mt9vEOhuL9/vCw2buT5s2TU2bNtUnn3yifPny+XpMAJAKaMkHwK5du3TPPfeoUaNGXsAXKVJETz/9tDfJzu+AN9abMHLkSK+SnpXOHTBggN+HBAApgZZ8kps+fbp69eqlpUuXet9feOGF3jr4qlWrKtGMGzdOnTp18kJ/9uzZOv300/0+JAAINFrySWrjxo3q2rWr2rRp4wV8hQoV9NZbb3llahMx4M1ll12mf//73173vX21ojkAgNgh5JOMFZcZNWqUN7HulVde8Zak2b7v33//vS655JKEX6L27LPPqlq1avrxxx+9TXEAALFDd30SsRa7rXm3CWzGCtnYxDqrXJdMZs2a5RXLsQuW8ePH6+9//7vfhwQAgURLPgns2bNHDz30kBfqFvCFChXylqUtXLgw6QI+vE/9bbfd5t3v0aOH1q1b5/chAUAg0ZJPcFZ6tmfPnt7yOGNL0Wy3ONs1LtkvXKwa3ldffaW2bdt6xXISfagBAJINLfkE9dtvv3lr3lu2bOkFfJkyZTRmzBivTG2yB7zJnz+/93kKFizofSarpQ8AiC5a8gnGxqltqVmfPn280rThDV4ee+wxlSxZUkEzZMgQ77Na2H/xxRfeFrgAgOgg5BPIihUrdN1112ny5Mne9zaD3uq92xh2UNlyOquvP2XKFK9C36effuq18gEAOUd3fQLYt2+fnnjiCdWrV88LeAu5Bx54wBuvDnLAGyuMM2LECK+Xwlry9rkBANFBS95nCxYs8GaY23asxpaW/fe//1WtWrWUSqyQzz/+8Q8v9D/++GNvLgIAIGdoyftk69atuvHGGw/ut24t2eHDh3tlalMt4MP73Hfp0uVgNTw7PwCAnKEl74OJEyfq+uuv188//+x9b6H25JNPejPoU5kFe8OGDbVy5UqvZK914wMAso+Qj6M1a9bohhtu8ELe1KhRw+uaP/vss+N5GAnNdtE788wzvRa9deFbqV4AQPbQXR8H+/fv95aK2fIwC/i8efPqrrvu0rfffkvAH8bG4u+44w7vvhUBWrt2bTz+RAAQSLTkY8xmyFtY2QQ7Y9ur2rK4+vXrx/qtk7oaXvPmzb3Z9lbhz1Yc2IQ8AEDW8C9njPzxxx+69dZb1bRpUy/gjznmGK8cre2jTsAfnS0hHD16tFcgx9bPP//887H6MwFAoNGSjwFredpucT/99NPBfdQHDx7s7fmOyFm42wRFC3vbjKdu3bqcPgDIAkI+in755Rdvj/Q33njD+972Tbea7Oeff3403yalSvzaubPa9o0aNdK8efOohgcAWUB3fRTYTHDb190m1lnA58mTR7fccou+++47Aj4HbFc6qx1QqlQpb27DfffdF40/FwCkDFryOWRBbrvF2ZawxsbgLfAbN24cjb8PJE2YMEEXX3yxF/ozZ84MfKlfAIgWWvLZtHPnTvXv398Lcwv4okWLeuPun332GQEfZX//+9/VrVs3r/v+yiuv1JYtW6L9FgAQSLTks2HatGnq1auXli1b5n1/0UUX6bnnnlOVKlWi/ffBn7Zt2+aNy//4449ehcBRo0ZxbgAgE7Tks2Djxo1efXWrUGcBX7FiRY0fP16TJk0i4GOsWLFievXVV7318vZ13LhxsX5LAEh6hHwErJt45MiR3v7u1oK0sWFb2vX99997XcmIDyskZJUCjfWkhGv/AwCOjO76TPzwww9eoMyYMcP7/qSTTvIm1tnucYi/vXv3emH/+eefez0qH374IdXwACADtOSPUlr1wQcf9ELdAr5QoUJ67LHHvHAh4P2TL18+rxqe/T2mTp2qZ5991sejAYDERks+g53QrN68dcebtm3bekVtjjvuuHj/fZABKxHcu3dvFShQwLvwolQwAPwVIZ/Ob7/9pttvv10vvvii933ZsmX1zDPPqFOnTt44PBJrnkT79u31/vvve3vQWzU8C3wAQBq66/8MjNdff92bWBcO+B49emjx4sX65z//ScAnILvoevnll1W6dGl9/fXXuueee/w+JABIOCnfkl+xYoW3mYxN4DJWmtYm1tm+5kh8tnyxY8eOXuhPnz5drVq18vuQACBh5E7lWdqPP/646tWr5wW8dfUOGDBAX375JQGfRDp06KDu3bsfrIb3+++/+31IAJAwUrIlb+O3NrHum2++8b5v3bq1/vvf/+rEE0/0+9CQDdu3b/eq4S1fvlydO3f2Zt8DAFIs5C0MrPzsm2++6bX8jj32WN10003eBC4m1iU32zPAhlj279/vza+wuRQAkOpSKuQRbLYVrQ252MWb9dKwlwCAVEfII1DzLKw1P3/+fJ111ln66KOPqIYHIKWl7MQ7BLcaXuHChb2Z9rb1LwCkMlryCBxbAnnNNdcof/78XjW8Bg0a+H1IAOALQh6BY9NMLrroIr333ntewFv3fcGCBf0+LACIu4Tsrrd6Jn37uvvVq0vx7HW9/36pUaP4vR9iVw3PyhJ/++236t+/P6cZQEpKyJBPb8ECqWfP+L1fv37StGnxea/du90FhZXF/+qrv37uNm2kY4+VSpSQzj33r7+DjFnAW9CbJ5980hujB4BUk/AhX6aMVLhw/N6vaFGpVKn4vNdtt0kVK/718W3bpPPOk6pWtcI9tiueVLy4e2zv3vgcWxBY/QMbmzddunTxNiACgFSS8CF/eHf94sWSlZW3Ida6daWpU11LeOLEyF7v55+lTp1c69jCvEMHaeXKjLvru3aVOnaUBg6UypVzLesHHpD27ZNuvVUqWVKqXFkaPjxrn2vyZGnKFGnQoL/+bMkS2xFPGjBAqlVLqlfP1oBLGzZIq1Zl7X1SnbXia9asqTVr1ui6667z+3AAIK4SPuTTO3DABa617K2FO2yYdPfdkT9/xw4rYeta67NmuRay3W/bVtqzJ+PnWU/v2rXuOU895S4E2rd3Fwp2HL16udvq1ZEdx/r1tsud9OqrR+6lsGAvXVqy3mY7rp073X0L+2rVIv+8kIoUKeItq8uTJ49XCe+1117jtABIGUkV8tbyXb5cGjVKatjQtegffjjy548dK+XOLb30kmSrqurUkUaMcK3jmTMzfp611ocMceHbrZv7ahcMd90l1awp3XmnlD+/NHdu5sdg9QWtd8AuCpo2PfLvFCvmjsdKsBcq5C5EbJO899+X8uaN/PPCadasme69917vfu/evbWK7hAAKSKpQt66satUkcqXT3usWbPIn79wobRsmQtRC067WYDv2uUuHjJiLWi7OAizbvv0S6/z5HFd/9adnplnn5W2bnUXBhmxlrtdTLRoYTXZ3cWDHcP557ufIevuuusunXbaadqyZYs3Pn/AuoUAIOCSql1orWAbf88u+3f95JOlMWOOPMEvI/nyHfq9HcORHoskN6zr34K7QIFDH7dWfefO0iuvSNajbPMEPv007eLCHrPhgUmTJPZeybq8efPq1Vdf9Xarmzlzpp566in1s6UUABBgSdWSr13bda3bmHb6pWaRatJEWrrUlldJJ5xw6O2YYxQX1u3/9dduOZzdrAvevPFG2tCDDQVYuKe/oAl/TwM0+0444YSDpW6tZf+1/SEAIMCSKuTPOUeqUcOWQ0m2Fbx1Y4cn3kXSwreWsk1osxn1s2dLK1ZIH38s9ekjrVmjuLBlcfXrp93CW9jb57JZ+uHPabPrbTL4999L330nXXWVG4+3iYPIvquvvlodOnTwNrOxved32VgNAARUUoW8jX3bUrnt26VTTpG6d5fCxcwiqVpqM9lthrwF7cUXu4l3NvZt49y2Dj2ReizefdddyDRvLp1xhpvd/8EHUoUKfh9d8lfDe/HFF1WuXDl99913uvNokyMAIMklfe16a83bLHubUGet4Zyyf/OtlW/L6xBc77//vi644ALvvm1Je/bZZ/t9SACQ2i15M2GC/aPsJqZZIRwreWuz0HMa8HapYzPsraStzWRHsJ1//vm69tprvftdu3bV5s2b/T4kAIi6pAt5K/nau7fr0rb15tZtbzPOjVWlCy+NO/zWrt3RX3fLFldBz9a72/r37MrJMSC+Bg0apBNPPFE///yzF/hJ3qkFAMHrrk/PGmMZNcisqEylSqlxDIic7TffvHlz7du3z1tid8UVV3D6AARGoEIeyI6HHnpI99xzj4oXL65vvvlG1agdDCAgCHmkPGvFn3nmmfrkk0/0t7/9zduW1mrdA0CyS7oxeSBW1fCKFi2qWbNmeWP1ABAEtOSBP40YMULdunVTvnz5NG/ePDVu3JhzAyCpEfLAn2x6yiWXXKIJEyaobt263qS8QjZbEgCSFN31QLpqeMOGDVP58uW1aNEi3XHHHZwbAEmNljxwmA8++EDt/ixq8OGHH+rcc8/lHAFISrTkgcO0bdtW19nuQH9Ww9u0aRPnCEBSoiUPHMGOHTt08skna/Hixd44/Ztvvul15wNAMqElDxxB4cKFNWbMGG953dtvv61Ro0ZxngAkHUIeyECTJk00YMAA7/4NN9ygFStWcK4AJBW664Gj2L9/v1q1aqU5c+aoZcuWmjlzJtXwACQNWvLAUVh5W+uqL1asmBf0jz/+OOcLQNKgJQ9E4JVXXvFm2tsYvVXDs658AEh0hDwQYTW8yy67TG+99ZZq166thQsXepPzACCR0V0PRMCWz/33v/9VhQoVvGV1t99+O+cNQMKjJQ9kwZQpU3Teeed59ydPnuwVzgGAREVLHsgCK3F74403evevuuoqbdy4kfMHIGHRkgeyaOfOnWratKm3ic3f//53r1gO1fAAJCJa8kAW2fazo0eP9vadt21pR44cyTkEkJAIeSAbGjdurAcffNC7b933P/74I+cRQMKhux7IQTW8s846S7NmzdLpp5+ujz/+2FtHDwCJgpY8kMNqeMWLF9cnn3ziFczJSKtWUt++7n716tLgwfE77fffLzVqFL/3A5A4CHkgB6pVq6bnn3/eu//CCy9E9JwFC6SePeN32vv1k6ZNi8977d7tLihsV96vvkp73KYt2GNHum3YEJ9jA1IRIQ/kUOfOnb1qePv27Yvo98uUsa1s43faixaVSpWKz3vddptUseJfH+/USVq37tCblRs480ypbNn4HBuQigh5IIds+dzQoUNVNsK0Ory7fvFiqWVLqWBBqW5daepU18KdODGy9//5ZxeiJUq4MO/QQVq5MuPu+q5dpY4dpYEDpXLlpGOPlR54QLJrlFtvlUqWlCpXloYPV5ZMnmzFgqRBg/76s0KFpPLl02558kjTp0tXX5219wCQNYQ8EAUlS5bUA5aUWXTggAtca9nPmycNGybdfXfkz9+xQ2rd2rXWZ82S5sxx960Q3549GT/PAnbtWvecp55yFwLt27sLBTuOXr3cbfXqyI5j/XqpRw/p1Vcj66UYNcr93qWXRv5ZAWQdIQ9Eyamnnprl51jLd/lyF3oNG7oW/cMPR/78sWOl3Lmll16SGjSQ6tSRRoyQVq2SZs7M+HnWWh8yRKpVS+rWzX21C4a77pJq1pTuvFPKn1+aOzfzYwiFXO+AXRQ0bRrZcVsvwb/+5Vr4AGKH9T6Aj5YskapUcV3YYc2aRf78hQulZcukYsUOfXzXLnfxkJF69dzFQZh129evn/a9dadb138kk+KefVbautVdGETi00+lRYvchQ2A2CLkAR9ZK9jG37PLuvtPPlkaM+bIE/wyki/fod/bMRzpMXv9zFjX/2efSQUKHPq4teo7d5YOX1lovQ42R8COG0BsEfKAj2rXdl3rNqZtrenwErtINWkivfGGm6FevLh8Yd3+Dz2U9r2N9dvMeTuuw0cwtm+Xxo2THnkk7ocJpCTG5AEfnXOOVKOG1KWL9M03bgw8PPEukha+tZRLl3Yz6mfPllaskD7+WOrTR1qzRnFRtarr6g/fTjzRPW6fy2bpp2fBb7P47bgBxB4hD/jIxr5tqZy1cE85RereXerf3/3MltRlxmao2wx5C9qLL3YT72wi3c6d/rXsj+bll91x2ix+ALFH7XogwVhr3mbZ24Q6aw3nlE2Is1a+La8DkFoYkwd8NmGCW9tuS9cs2K2rvUWLnAe8TeqzzfGspG3jxtE6WgDJhO56wGfbtkm9e7tJeLbe3LrtJ01yP7OqdHYBcKRbu3ZHf90tW1wFPVvvbuvfsysnxwDAX3TXAwls82Z3OxIrJFOpUmocA4DsIeQBAAgouusBAAgoQh4AgIAi5AEACChCHgCAgCLkAZ/s3btXPXv2VJMmTdS+fXv99ttv/C0ARBWz6wEfbdq0yduHfvny5WrZsqWmTp2qAodv5wYA2URLHvBRqVKl9N577+mYY47RnDlz1KtXL4WsVB0ARAEhD/isdu3aGjdunPLkyaORI0dq0KBBfh8SgICgux5IEM8995xuuOEG5cqVSxMnTtRFF13k9yEBSHKEPJAgrJv+uuuu09ChQ1WkSBHNnTtXDRs29PuwACQxQh5IsBn3559/vjcBr0qVKpo/f77Kly/v92EBSFKEPJBgbCndaaedph9++MH7OmPGDBUsWNDvwwKQhJh4BySYEiVKeDPu7etnn32m7t27M+MeQLYQ8kACqlmzpt566y3lzZtXY8aM0SOPPOL3IQFIQnTXAwnshRde8NbOGwv9Sy65xO9DApBECHkgwfXp00dDhgxRoUKFvII5VgYXACJByAMJbt++fV5t+w8//FCVKlXyZtxXrFjR78MCkAQIeSAJbNmyRc2bN9f333+vpk2b6uOPP1bhwoX9PiwACY6Jd0ASsNr27777rlfr/vPPP9dVV13FjHsAmSLkgSRRo0YNjR8/Xvny5fNq3Q8YMMDvQwKQ4OiuB5LMyy+/7K2dN2PHjlWnTp38PiQACYqQB5JQv3799OSTT3qV8Gx8vlmzZn4fEoAERMgDSWj//v3q2LGjVxnPatsvWLBAlStX9vuwACQYQh5IUtu2bdPpp5+u//3vf2rcuLFmz57t7V4HAGFMvAOSVLFixbwZ92XKlNGXX36pK6+8UgcOHPD7sAAkEEIeSGLVq1fXhAkTlD9/fm/m/T333OP3IQFIIIQ8kORatGihF1980bs/cOBAjR492u9DApAgGJMHAuLOO+/Uo48+6rXqZ86c6VXIA5DaCHkgIGw83napmzhxosqWLevVuK9WrZrfhwXAR4Q8ECDbt2/XGWecoa+++koNGjTQ3LlzvQl6AFITY/JAgBQtWlTvvPOOypUrp2+//VZXXHGFt6YeQGoi5IGAqVKliiZNmqQCBQp4gW9j9QBSEyEPBNCpp56qESNGePefeOKJg/cBpBZCHgioyy+//OC6+WuuucariAcgtTDxDgj4jHvbpe6tt97y9qK3GffHH3+834cFIE4IeSDgduzYob/97W9auHCh6tatq08//VTFixf3+7AAxAHd9UDAFS5c2JuIV7FiRS1atEj//Oc/mXEPpAhCHkgBlSpV8oK+UKFCmjx5srcfPYDgI+SBFNG0aVO98sor3v3Bgwdr2LBhfh8SgBgj5IEU8o9//EMDBgzw7l933XWaMWOG34cEIIaYeAekmFAopM6dO+v1119XiRIlNG/ePNWsWdPvwwIQA4Q8kIJ27typ1q1bewFfq1YtffbZZzr22GP9PiwAUUZ3PZCCbAKe7VZnJXCXLFmiyy67TPv27fP7sABEGSEPpKjy5ct7te1tid1HH32kvn37+n1IAKKMkAdSWKNGjTRmzBjv/vPPP+/dAAQHIQ+kuI4dO+qRRx7x7vfp08dr1QMIBibeAfBm3Hft2lWjRo3SMccc403Eq127NmcGSHKEPADP7t271aZNG82dO1cnnHCCN/O+ZMmSnB0gidFdD8BToEABjR8/XtWqVdOyZct06aWXau/evZwdIIkR8gAOKlu2rN59910VLVrUq4Z3/fXXe135AJITIQ/gEA0aNPCq4eXKlcurbz9kyBDOEJCkCHkAf9G+fXs98cQT3v2bb77Z27kOQPJh4h2AI7Ju+u7du2v48OEqVqyYPv30U9WrV4+zBSQRQh5Ahvbs2aNzzjlHs2bN0nHHHaf58+erdOnSnDEgSdBdDyBD+fPn19tvv63jjz9eK1as0MUXX+wttQOQHAh5AEdlLXebcV+8eHHNnj1b1157LTPugSRByAPIVN26dfXGG28od+7cGjFihJ588knOGpAEGJMHEDFbTmf17W153aRJk3ThhRdy9oAERsgDyNKMe+uuf+GFF7yCOVYC96STTuIMAgmKkAeQJVbqtm3btpo+fbqqVq3qzbgvV64cZxFIQIQ8gCzbvHmzTjvtNC1dulTNmzf3Ar9gwYKcSSDBMPEOQJbZ7nQ24/7YY4/1iuT06NGDGfdAAiLkAWRLrVq19OabbypPnjwaPXq0Hn30Uc4kkGDorgeQI0OHDlXv3r29+1Y4xwrmAEgMhDyAHLvhhhv03HPPqXDhwpozZ44aN27MWQUSACEPIMf27dunCy64QFOmTFHlypW9GfcVKlTgzAI+Y0weQI7lzZvXq4hXu3ZtrVmzRh07dtTOnTs5s8iWVq2kvn3d/erVpcGD43ci779fatRIgUHIA4gKm2lvM+5t5r215K+66ipm3CPHFiyQevaM34ns10+aNi2272EXLrlyHXq7445Df2fVKskKShYpYvtHSDfeaLtCZv29CHkAUXPCCSd4k+/CLfsHH3yQs4scKVNGKlw4fiexaFGpVKnYv8+AAdK6dWm3/v3TfrZ/v3TBBdIff0hz5khjx9qkVumWW7L+PoQ8gKhq1aqVN+Pe3HfffRo3bhxnGNl2eHf94sVSy5aS1V6qW1eaOtW1hCdOjOz1fv5Z6tRJKlHChXmHDtLKlRl313ftKnXsKA0cKFlhx2OPlR54wOahSLfeajUjpMqVpeHDs/a5ihWTypdPu9nFRdiUKdKiRdLo0ZLNYT37bMn2hHrxRWnr1qy9DyEPIOq6d++um266ybvfpUsXLbA+VyCHDhxwgWst+3nzpGHDpLvvjvz5O3ZIrVu7QJ01y7WS7X7btkfvCp8+XVq71j3nqafchUD79u5CwY6jVy93W7068mN57DF3kWEXFA8/fOj7f/qpVL++VLFi2mPnnSft3i0tXKgsIeQBxMQTTzyh888/X7t27VKHDh30szWhgBywFu7y5dKoUVLDhq5FbwEZqbFjpdy5pZdekho0kOrUkUaMcOPfM2dm/DxrrQ8ZYgWgpG7d3Fe7YLjrLqlmTenOO6X8+aW5cyM7jj593LHMmCFdf73rqfiz1ITnl19cr0F6dkFh72E/y4q8Wft1AIiMVcJ7/fXXdfrpp+u7777TRRddpFmzZqmIzSQCsmHJEqlKFde9HdasWeTPX7hQWrbMdZWnt2uXu3jISL167uIgzALYWtphefK4VvmGDZEdx5+dXB7bxNEC/NJL01r3xoYgDhcKHfnxo6ElDyBmihcv7s24L126tL744guv6/6A9bkC2ZCdkEvP/tM7+WTpq68Ovf3wg/SvfylD+fId+r0dw5Eey+5/2qed5r7aBYixi5jDW+y//WY7QP61hZ8ZQh5ATB133HGaMGGC8uXL5828t8l4QHbUru261tevT3ssK9M9mjSRli6Vypa1lSCH3o45xr+/yZdfuq/h+lHNm0v/+5+bdZ9+qKJAAXeRkhWEPICYa9mypYbZLClJDz30kF577TXOOrLsnHOkGjVsMqf0zTduDDw88S6SFn7nzm7Nuc2onz1bWrFC+vhjN0a+Zk18/iA2qe7pp10Pgr2/LT655hrpooukqlXd75x7rls58O9/uwsAW7dv6/d79LDesay9H2PyAOKia9eu+v777/X444+rW7duOv7447096RFsu3fv1rp167R27dqDN3OjVXfJIhv7tqVy3btLp5wiHX+8TfB0RWNsSV1mChd2M+Rvv12yfZS2bZMqVZLatMl6eGaXtcbfeMMtw7PZ8tWqufC+7bZDP+f//Z+bjNeihVSokBtOGDQo6+9H7XoAcbN//35vl7p33nlH5cqV8yrjVQ03X5BU9u7dq19++eWQ8E5/Cwf7pk2b/vJc28DI5mhEg7XmbZa9jWdbKz+n7rzTtfJteV0Q0JIHENcZ92PGjPG677/++mtvxr3tWlc0fSUQ+L7Z0IYNGzINb/udSBUoUEAVK1b0Ni2yr82yMiX+MBMmuLXttnTNgt262q21m9OAD4WkH390XeNB2kSRljyAuFu1apVOOeUULygs6G1iXu70a5SOsGGJFQ2x9cRWAc02LwlvYBJrVvjEuohtDDWZ2aqGX3/9NcPwDgf4+vXrI14BYeWL04d3RrcSJUooV06mxadja+StWrIVnrHx9XA1OFt6ZlXp7HYkZ5whTZ6c8ev+/rubuW7DAGPGuG707MjJMcQCIQ/AF59++qlat27tjdk+88wzRx2jTR/yv/7qNu2IVz3z7dvd2Gks65nbpCu7iLDGsa2ZtuCyNdPpK55Zi9W6kG3WtRVxifSi49///rdmzJjhda3bcEmkPS7ly5fPNMBLlSp11IuzeNu82d2OpFAhN/6eCseQHiEPwDfWdX/FFVdkOkabPuSDyGZb27IpW0JlhQFtJrX55JO037FrIKu0ZmVUbWZ5pCHfpEkTffnnGi1rTdtciHBIZxTgZcqU8YIeARACAB/dfffdocaNGx/1d848MxTq08fdr1YtFHr66bSfff99KNSiRShUoEAoVKdOKPTRRza6GgpNmBDZ+69ZEwpddlkodOyxoVDJkqHQRReFQitWpP38vvtCoYYN077v0iUU6tAhFHr44VCobNlQ6JhjQqH77w+F9u4Nhfr1C4VKlAiFKlUKhV5+OZRtkyaFQrlyhUJ79vz1Z4cfT2ZmzJgRmj9/fmjNmjWhvXaQSClMvAPgqwEDBnhd9jnZsMQm6FsL15ZEZWU7zvCGJTZWakur8ua1dfxuwxJrLVut8Iw2LLGdx+w5Nrv76qvd+ue//c0dhy2Rsg1LbF23lWHNCuvqtTHh00//a1W17O4KiNSVOIMpAFKSjela0KfyhiXG1m7bXAMb+7f3nzQp8ucCGSHkAfiukM1I8nnDEluWZTcL8OxsWGIXCdndsMTY3uQ2dG4XLvb8K690y7qAnKC7HoBSfcMS6x4/XJky8d2wxJaD2e3EE12Pgl28fPaZm5AHZBchDyAQG5aEd+fK6oYlNn5uG5bEq6xpJMIt+GxOVQAOorseQNIKwoYl8+dLzz3nlsT99JM0Y4arU26fK30r3oYV7HdsC9KdO9O2Sd2zJz7HieREyANIWuENS6xgjVUqs41L+vd3P8vKhiU2O982LLFucptIZyEar5a9TUcYP95tkhKeyFe/vrvYsM1MwuyzWbnVF15w+5/bfbv9ud8LcEQUwwEQKGxYAqRhTB5AUmPDEiBjdNcDSGpWAMf23bZJeF27um778Bpz2ygkvDTu8Fu7dkd/3S1bpLp13Xp3W/+eXTk5BiCn6K4HEFiJsFlIIhwDUhchDwBAQNFdDwBAQBHyAAAEFCEPAEBAEfIAAAQUIQ8goezcuVNNmjTxbr/99pvfhwMkNYrhAEgoixYt0pdffqkyZcqoRIkSfh8OkNRoyQNIKN9//733tY4VkgeQI4Q8gIRryZu6Vm4OQI4Q8gASCi15IHoIeQAJhZY8ED2UtQWQMHbv3q3ChQvrwIEDWrNmjSpR2B3IEVryABLG0qVLvYAvXry4Klas6PfhAEmPkAeQkF31uXLl8vtwgKRHyANIGEy6A6KLkAeQMJh0B0QXIQ8gYdCSB6KLkAeQEPbt26clS5Z49ymEA0QHIQ8gIaxYsUJ79uxRoUKFVK1aNb8PBwgEQh5AQo3H165dW7lz808TEA38nwQgITAeD0QfIQ8gITCzHog+Qh5AQoU8W8wC0UPIA/CdlbJdvHixd5+Z9UD0EPIAfLd69Wr98ccfypcvn2rUqOH34QCBQcgDSJhJdzVr1vSCHkB0EPIAfMekOyA2CHkAvmP5HBAbhDwA39GSB2KDkAfgq1AoREseiJFcIfs/DAB88ssvv6hChQpeKdvt27d7tesBRActeQAJMR5/3HHHEfBAlBHyAHzFeDwQO4Q8AF8R8kDsEPIAfMXyOSB2CHkAvqIlD8QOs+sB+Gbz5s0qVaqUd3/r1q0qVqwYfw0gimjJA/C9q75KlSoEPBADhDwA3zAeD8QWIQ/AN4zHA7FFyAPwDS15ILYIeQC+oSUPxBaz6wH4wurUh2fTb9y48eAsewDRQ0segC8WL17sfS1btiwBD8QIIQ/AF3TVA7FHyAPwBZPugNgj5AH4gpY8EHuEPABf0JIHYo/Z9QDibteuXSpSpIgOHDigtWvXqkKFCvwVgBigJQ8g7pYuXeoF/DHHHKPy5cvzFwBihJAH4Ot4fK5cufgLADFCyAPwbTzeQh5A7BDyAHxrydepU4ezD8QQIQ8g7mjJA/FByAOIq3379mnJkiXefVryQGwR8gDiavny5dq7d68KFy6sqlWrcvaBGCLkAfjSVV+7dm3lzs0/QUAs8X8YgLiinC0QP4Q8gLiinC0QP4Q8gLiiJQ/EDyEPIG6slO3ixYu9+8ysB2KPkAcQN6tWrdKOHTuUL18+1ahRgzMPxBghDyDu4/G1atVS3rx5OfNAjBHyAOKGcrZAfBHyAOKGcrZAfBHyAOKGljwQX4Q8gLgIhUIsnwPiLFfI/s8DgBhbt26dKlas6JWytRn2BQoU4JwDMUZLHkBcu+pt6RwBD8QHIQ8gLihnC8QfIQ8gLihnC8QfIQ8gLlg+B8QfIQ8gLlg+B8Qfs+sBxNymTZtUunRp7/62bdtUtGhRzjoQB7TkAcStq75q1aoEPBBHhDyAmGM8HvAHIQ8g5hiPB/xByAOIOZbPAf4g5AHEHIVwAH8wux5ATNls+uLFix+cZV+yZEnOOBAntOQBxNTixYu9r+XLlyfggTgj5AHEFJPuAP8Q8gBiiuVzgH8IeQAxRUse8A8hDyCmaMkD/mF2PYCY2bVrl4oUKaIDBw5o3bp13uQ7APFDSx5AzPzwww9ewJcoUULlypXjTANxRsgDiMt4fK5cuTjTQJwR8gBihnK2gL8IeQAxw6Q7wF+EPICYYfkc4C9m1wOIib1793oz6+3rTz/9pKpVq3KmgTijJQ8gJpYvX34w6KtUqcJZBnxAyAOI+fayzKwH/EHIA4gJxuMB/xHyAGKCmfWA/wh5ADFBSx7wHyEPIOqslO3ixYu9+3Xr1uUMAz4h5AFEnS2Z27lzp/Lnz6/jjjuOMwz4JK9fbwwguNasWaPGjRurZs2aypuXf2YAv1AMBwCAgKK7HgCAgCLkAQAIKEIeAICAIuQBAAgoQh4AgIAi5AFEXatWUt++7n716tLgwfE7yfffLzVqFL/3AxIZIQ8gphYskHr2jN9J7tdPmjYtPu+1e7e7oMiVS/rqq7THv/5auvxyyXbYLVTIduKTnnkmPscEpEeVCgAxVaZMfE9w0aLuFg+33SZVrOhCPb2FC93nHj3aBf0nn7gLnTx5pOuvj8+xAYaWPICYOry73krat2wpFSxode2lqVNdS3jixMhe7+efpU6dpBIlpFKlpA4dpJUrM+6u79pV6thRGjhQKldOOvZY6YEHpH37pFtvlUqWlCpXloYPz9rnmjxZmjJFGjTorz/r1k0aMkQ680zp+OOlK66QrrpKGj8+a+8B5BQhDyBuDhxwgVu4sDRvnjRsmHT33ZE/f8cOqXVr11KfNUuaM8fdb9tW2rMn4+dNny6tXeue89RT7kKgfXt3oWDH0auXu61eHdlxrF8v9eghvfqq+yyR2LLFXVAA8UTIA4gba/kuXy6NGiU1bOha9A8/HPnzx46VcueWXnpJatDAjXWPGCGtWiXNnJnx8yxcrWVdq5ZrZdtXu2C46y6pZk3pzjul/PmluXMzP4ZQyPUO2EVB06aRHfenn0rjxknXXBP5ZwWigTF5AHGzZIkboy5fPu2xZs0if76NdS9bJhUrdujju3a5i4eM1KvnLg7CrNu+fv20722s3Lr+N2zI/BiefVbautVdGETiu+/ckMK990rnnBPZc4BoIeQBxI21gm38PSfd/SefLI0Zk7UJfvnyHfq9HcORHrPXz4x1/X/2mVSgwKGPW6u+c2fplVfSHlu0SDrrLNe1379/5q8NRBshDyBuatd2Xes2pm2t6fASu0g1aSK98YZUtqxUvLh8Yd3+Dz2U9r2N9Z93njuuU089tAVvAd+lS9aGJIBoYkweQNxYd3WNGi74vvnGjYGHJ95F0sK3lnLp0q77e/ZsacUK6eOPpT59bA97xUXVqq6rP3w78UT3uH0um6UfDnibIGif9+abpV9+cbdff43PMQJhhDyAuLGxb1sqt327dMopUvfuad3YtqQuMzaT3WbIW9BefLGbeGcT6Xbu9K9lfyRvvukC3YYVKlRIu9lnBuIpVyhko2QA4A9rzdsse5tQZ63hnLIJcdbKt+V1QKpjTB5AXE2Y4Na229I1C3bram/RIucBb82VH390JW0bN47W0QLJje56AHG1bZvUu7ebhGfrza0Le9Ik9zOrShcuS3v4rV27zIvNWAU9W+9u69+zKyfHACQauusBJIzNm93tSGyjl0qVUuMYgGgh5AEACCi66wEACChCHgCAgCLkAQAIKEIeAICAIuQBRM3SpUvVpEkTtWnThrMKJABm1wOImvXr16t8+fLKlSuX9u7dqzxWxxaAb2jJA4iaUrYpu1d9LqRNmzZxZgGfEfIAoiZv3rwHg37Dhg2cWcBnhDyAqCprm70T8kBCIOQBRBUhDyQOQh5AVBHyQOIg5AFEFSEPJA5CHkBUEfJA4iDkAUQVIQ8kDkIeQFQR8kDiIOQBRBUhDyQOQh5AVBHyQOIg5AHEJOS3bdumnTt3cnYBHxHyAKLqmGOOUb58+bz7v/76K2cX8BEhDyCqbAc6uuyBxEDIA4g6Qh5IDIQ8gKgj5IHEQMgDiDpCHkgMhDyAqCPkgcRAyAOIOkIeSAyEPICoI+SBxEDIA4g6Qh5IDIQ8gKgj5IHEQMgDiGnIh0IhzjDgE0IeQNSVKVPG+7p3715t2bKFMwz4hJAHEHWFChVSsWLFDrbmAfiDkAcQE4zLA/4j5AHEBCEP+I+QBxAThDzgP0IeQEwQ8oD/CHkAMUHIA/4j5AHEBCEP+I+QBxAThDzgP0IeQEwQ8oD/CHkAMUHIA/4j5AHENOQ3bdqkffv2cZYBHxDyAGKiVKlSypUrl3d/48aNnGXAB4Q8gJjIkyePSpcu7d2nfj3gD0IeQMwwLg/4i5AHEDOEPOAvQh5AzBDygL8IeQAxQ8gD/iLkAcQMIQ/4i5AHEPOQ//XXXznLgA8IeQAxU6ZMGe8rS+gAfxDyAGKG7nrAX4Q8gJgh5AF/EfIAYh7y27dv144dOzjTQJwR8gBipnjx4sqfP793n8l3QPwR8gBixjaoocse8A8hDyCmCHnAP4Q8gJgi5AH/EPIAYoqQB/xDyAOIKUIe8A8hDyCmCHnAP4Q8gJgi5AH/EPIAYoqQB/xDyAOIKUIe8A8hDyBuIR8KhTjbQBwR8gDist3svn379Pvvv3O2gTgi5AHEVMGCBb0a9oZ95YH4IuQBxBzj8oA/CHkAMUfIA/4g5AHEHCEP+IOQBxBzhDzgD0IeQMwR8oA/CHkAMUfIA/4g5AHEHCEP+IOQBxBzhDzgD0IeQMwR8oA/CHkAcQv5zZs3a+/evZxxIE4IeQAxV7JkSeXO7f652bhxI2cciBNCHkDM5cmTR6VLl/buU78eiB9CHkBcMC4PxB8hDyAuCHkg/gh5AHFByAPxR8gDiAtCHog/Qh5AXBDyQPwR8gDigpAH4o+QBxAXhDwQf4Q8gLgg5IH4I+QBxAUhD8QfIQ8griG/Y8cO/fHHH5x1IA4IeQBxUbRoURUsWNC7T2lbID4IeQBxkStXLrrsgTgj5AHEDePyQHzljfP7AUhhzZs31/79+3XgwAG/DwVICblCoVDI74MAAADRR3c9AAABRcgDABBQhDwAAAFFyAMAEFCEPAAAAUXIA/BNq1ZS377ufvXq0uDB8Xvv+++XGjWK3/sBfiDkASSEBQuknj3j9379+knTpsXnvXbvdhcUuXJJX32V9vimTVLbtlLFilKBAlKVKtL110tbt8bnuBB8hDyAhFCmjFS4cPzer2hRqVSp+LzXbbe5ID9c7txShw7SO+9IP/wgjRwpTZ0q9eoVn+NC8BHyABLC4d31ixdLLVtKtqdN3bou/KwlPHFiZK/3889Sp05SiRIuzC1MV67MuLu+a1epY0dp4ECpXDnp2GOlBx6Q9u2Tbr1VKllSqlxZGj48a59r8mRpyhRp0KC//syO7dprpaZNpWrVpDZtpN69pdmzs/YeQEYIeQAJx6reWuBay37ePGnYMOnuuyN//o4dUuvWrrU+a5Y0Z467b13je/Zk/Lzp06W1a91znnrKXQi0b+/C2I7DWth2W706suNYv17q0UN69dXIeinsvcePl848M/LPChwNIQ8g4VjLd/lyadQoqWFD16J/+OHInz92rOsKf+klqUEDqU4dacQIadUqaebMjJ9nrfUhQ6RataRu3dxXu2C46y6pZk3pzjul/PmluXMzPwYrGG69A3ZRYC31o7n8cncRUKmSVLy4O24gGgh5AAlnyRI3Ca18+bTHmjWL/PkLF0rLlknFirkWvN0swHftchcPGalXz10chFm3vV0khOXJ47r+N2zI/BiefdZNoLMLg8w8/bT0xRduKMKO7+abM38OEAl2oQOQcKwVbOPvOenuP/lkacyYI0/wy0i+fId+b8dwpMci2UTPuv4/+8zNmk/PWvWdO0uvvJL2mF3M2K12bXcRccYZ0j33SBUqZP4+wNEQ8gASjoWdda3bmLa1psNL7CLVpIn0xhu2f73r/vaDdfs/9NCh4+3nneeO69RTM35eeF9QW3YH5BQhDyDhnHOOVKOG1KWL9Pjj0rZtaRPvImnhW0v5iSfcjPoBA9yseLtosEltNlPevo+1qlUP/d6GDIx9rvD7v/++u5A55RT380WL3HK7Fi3cagMgpxiTB5BwbOzbxqe3b3cB2L271L+/+5ktqcuMTWKzGfIWtBdf7Cbe2US6nTv9a9kfSaFC0osvuomFdoxW/c9m87/3nt9HhqDIFQqFO4cAIHHZjHYLQ5tQZ63hnLIJcbYe3ZbXAUFFdz2AhDRhguvCtqVrFux9+rhu7JwGvDVrfvzRlbRt3DhaRwskJrrrASQkG4e36m82Cc/Wm1u3/aRJ7mdWlS68NO7wW7t2R3/dLVtcBT1b727r37MrJ8cAxAvd9QCSzubN7pbROLcVlUmFYwAyQ8gDABBQdNcDABBQhDwAAAFFyAMAEFCEPAAAAUXIAwAQUIQ8AAABRcgDABBQhDwAAAFFyAMAEFCEPAAAAUXIAwAQUIQ8AAABRcgDABBQhDwAAAFFyAMAEFCEPAAAAUXIAwAQUIQ8AAABRcgDABBQhDwAAAFFyAMAEFCEPAAAAUXIAwAQUIQ8AAABRcgDABBQhDwAAAFFyAMAEFCEPAAAAUXIAwAQUIQ8AAABRcgDABBQhDwAAAFFyAMAoGD6fwNDzGvGFigZAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_atommapping_network(repaired_by_score)" + ] + }, { "cell_type": "markdown", "id": "7c2fa5f7", @@ -551,7 +568,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "id": "fbdc9724", "metadata": {}, "outputs": [], @@ -627,7 +644,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "id": "42ac44ab", "metadata": {}, "outputs": [ @@ -649,14 +666,6 @@ "save_transformations(alchemical_network, \"repair_transformations\")\n", "print(\"wrote\", len(alchemical_network.edges), \"transformations\")" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "24c59994-f54d-4455-b5e6-c2799aefba84", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 53112cf2c253eb1b667645326064e4354f2f5098 Mon Sep 17 00:00:00 2001 From: hannahbaumann Date: Thu, 10 Sep 2026 13:55:01 +0200 Subject: [PATCH 8/8] More changes --- cookbook/repairing_broken_networks.ipynb | 769 ++++++++++++++--------- 1 file changed, 465 insertions(+), 304 deletions(-) diff --git a/cookbook/repairing_broken_networks.ipynb b/cookbook/repairing_broken_networks.ipynb index db29d61..7256849 100644 --- a/cookbook/repairing_broken_networks.ipynb +++ b/cookbook/repairing_broken_networks.ipynb @@ -2,25 +2,20 @@ "cells": [ { "cell_type": "markdown", - "id": "bc2dc4e7", + "id": "ca95f143-c048-462b-9cf3-9304842c0cba", "metadata": {}, "source": [ "# Repairing a broken ligand network\n", "\n", - "In a relative binding free energy (RBFE) campaign some transformations may fail. If\n", - "enough edges drop out, the completed network can split into disconnected pieces,\n", - "and a disconnected network can no longer rank all of its ligands.\n", + "In a relative binding free energy (RBFE) campaign, some transformations may fail.\n", + "If enough edges fail, the ligand network can become disconnected and can no longer\n", + "rank all ligands in a single connected component.\n", "\n", - "This notebook takes the TYK2 system from the JACS benchmark\n", - "set and repairs the network:\n", + "This cookbook follows the repair workflow end to end:\n", "\n", - "1. load the stored, connected **planned** network,\n", - "2. parse a directory of **result JSONs** to find which edges actually completed,\n", - "3. reconstruct the **completed** network and diff it against the plan,\n", - "4. **repair** the breaks in two different ways:\n", - " - by ligand name\n", - " - by lomap score\n", - "6. **rebuild** alchemical transformations for the new edges and write them out." + "1. **Identify failures** from campaign results and reconstruct the damaged planned network.\n", + "2. **Repair the ligand network**, either manually or by selecting new edges by score.\n", + "3. **Build replacement transformations** for the newly proposed repair edges." ] }, { @@ -28,7 +23,7 @@ "id": "ef334d57", "metadata": {}, "source": [ - "## 1. Fetch the data" + "## Fetch the data" ] }, { @@ -59,7 +54,7 @@ "id": "09d26ef5", "metadata": {}, "source": [ - "## 2. Imports" + "## Imports" ] }, { @@ -80,24 +75,49 @@ } ], "source": [ + "import copy\n", "import json\n", "import pathlib\n", "import warnings\n", + "from collections.abc import Callable, Iterable\n", "\n", - "import networkx as nx\n", "from rdkit import Chem\n", - "\n", + "from gufe import AtomMapper, AtomMapping\n", "from openfe import (\n", - " AlchemicalNetwork, ChemicalSystem, LigandAtomMapping, LigandNetwork,\n", - " ProteinComponent, SmallMoleculeComponent, SolventComponent, Transformation,\n", + " AlchemicalNetwork,\n", + " ChemicalSystem,\n", + " LigandAtomMapping,\n", + " LigandNetwork,\n", + " ProteinComponent,\n", + " SolventComponent,\n", + " Transformation,\n", ")\n", "from openfe.protocols.openmm_rfe import RelativeHybridTopologyProtocol\n", "from openfe.setup import KartografAtomMapper, lomap_scorers\n", "from openfe.setup.ligand_network_planning import generate_network_from_names\n", + "from openfe.utils.atommapping_network_plotting import plot_atommapping_network\n", "from gufe.tokenization import JSON_HANDLER\n", "\n", - "from konnektor.network_tools import merge_two_networks, connected_subnetworks\n", - "from konnektor.network_planners import MstConcatenator" + "from konnektor.network_planners import MstConcatenator\n", + "from konnektor.network_tools import connected_subnetworks, merge_two_networks, delete_transformation" + ] + }, + { + "cell_type": "markdown", + "id": "cd95fe5d-a486-4739-b01c-3518fdd67f4c", + "metadata": {}, + "source": [ + "## 1. Identify the failures\n", + "\n", + "We start from the **planned ligand network** and the campaign results.\n", + "\n", + "The results tell us which planned transformations completed successfully. We remove the\n", + "failed edges from the planned network. This preserves every planned ligand,\n", + "including ligands whose only transformation failed and therefore become isolated\n", + "nodes.\n", + "\n", + "The result is a `damaged_network`: the planned network after unsuccessful\n", + "transformations have been removed." ] }, { @@ -105,7 +125,7 @@ "id": "89e33757", "metadata": {}, "source": [ - "## 3. Load the planned network\n", + "### Load the planned network\n", "\n", "This is the connected network the campaign set out to run." ] @@ -120,14 +140,41 @@ "name": "stdout", "output_type": "stream", "text": [ - "planned connected: True edges: 9\n" + "planned connected: True\n", + "planned ligands: 10\n", + "planned edges: 9\n" ] + }, + { + "data": { + "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", + "text/plain": [ + "
" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ - "planned = LigandNetwork.from_json(\"assets/mst_network_tyk2.json\")\n", + "planned_network = LigandNetwork.from_json(\"assets/mst_network_tyk2.json\")\n", + "\n", + "print(\"planned connected:\", planned_network.is_connected())\n", + "print(\"planned ligands:\", len(planned_network.nodes))\n", + "print(\"planned edges:\", len(planned_network.edges))\n", "\n", - "print(\"planned connected:\", planned.is_connected(), \" edges:\", len(planned.edges))" + "plot_atommapping_network(planned_network)" ] }, { @@ -135,83 +182,104 @@ "id": "bdf56bda", "metadata": {}, "source": [ - "## 4. Reconstruct the completed network from the results\n", + "### Parse the campaign results\n", + "\n", + "For this example we simulate two failed transformations by omitting both legs of\n", + "their result files before parsing:\n", "\n", - "In a real campaign a failed transformation simply has no results. We simulate two\n", - "failures by dropping their result files before parsing:\n", + "- `ejm_31 -- ejm_46`, which breaks a connection in the network;\n", + "- `ejm_31 -- ejm_48`, which was `ejm_48`'s only planned transformation.\n", "\n", - "- `ejm_31 -- ejm_46` disconnects the network into two fragments (5 and 4 ligands);\n", - "- `ejm_31 -- ejm_48` was `ejm_48`'s *only* transformation, so `ejm_48` disappears\n", - " from the results entirely.\n", + "A transformation is considered successful only when both its complex and solvent\n", + "legs have usable results.\n", "\n", - "We then read every remaining result JSON, keep the transformations that succeeded\n", - "in both legs, and rebuild the network from their ligand mappings. We also recover a reference complex system\n", - "(for the protein, solvent and cofactors) and the run's protocol (for its\n", - "settings), both used when we rebuild transformations later." + "While reading the results we also recover a reference complex system and the\n", + "protocol settings. These are not needed to repair the ligand network itself, but\n", + "will be used in Part 3 to construct replacement transformations." ] }, { "cell_type": "code", "execution_count": 3, - "id": "d0f1f442", + "id": "647092f0-572a-413b-946c-5e45d2cde02b", "metadata": {}, "outputs": [], "source": [ "def _load_result_json(path):\n", - " \"\"\"Load a result JSON, or None if it isn't a usable result.\"\"\"\n", - " ru = json.load(open(path, \"rb\"), cls=JSON_HANDLER.decoder)\n", - " if not isinstance(ru, dict):\n", - " return None # e.g. the ligand network file\n", - " if ru.get(\"__qualname__\") in (\"AlchemicalNetwork\", \"Transformation\"):\n", - " return None # an input/alchemical network file\n", - " if \"unit_results\" not in ru:\n", + " \"\"\"Load a usable result JSON, or return None.\"\"\"\n", + " result = json.load(open(path, \"rb\"), cls=JSON_HANDLER.decoder)\n", + "\n", + " if not isinstance(result, dict):\n", + " return None\n", + " if result.get(\"__qualname__\") in (\"AlchemicalNetwork\", \"Transformation\"):\n", + " return None\n", + " if \"unit_results\" not in result:\n", + " return None\n", + " if all(\"exception\" in unit for unit in result[\"unit_results\"].values()):\n", " return None\n", - " if all(\"exception\" in u for u in ru[\"unit_results\"].values()):\n", - " return None # every repeat failed\n", - " return ru\n", "\n", - "def _units(ru):\n", - " data = ru[\"protocol_result\"][\"data\"]\n", + " return result\n", + "\n", + "\n", + "def _units(result):\n", + " data = result[\"protocol_result\"][\"data\"]\n", " return data[next(iter(data))]\n", "\n", "\n", - "def _extract_edge(ru):\n", - " \"\"\"Return (mapping, phase, stateA) for a result, or None if inputs are stripped.\"\"\"\n", - " units = _units(ru)\n", + "def _extract_result_edge(result):\n", + " \"\"\"Return (mapping, phase, stateA), or None if inputs are unavailable.\"\"\"\n", + " units = _units(result)\n", " if not units or \"stateA\" not in units[0][\"inputs\"]:\n", " return None\n", + "\n", " inputs = units[0][\"inputs\"]\n", - " stateA = ChemicalSystem.from_dict(inputs[\"stateA\"])\n", + " state_a = ChemicalSystem.from_dict(inputs[\"stateA\"])\n", " mapping = LigandAtomMapping.from_dict(inputs[\"ligandmapping\"])\n", - " is_complex = any(isinstance(c, ProteinComponent) for c in stateA.components.values())\n", - " return mapping, (\"complex\" if is_complex else \"solvent\"), stateA\n", "\n", - "def parse_results(result_files, require_both_legs=True):\n", - " \"\"\"Reconstruct the completed network directly from the results.\"\"\"\n", - " phases = {}\n", + " is_complex = any(\n", + " isinstance(component, ProteinComponent)\n", + " for component in state_a.components.values()\n", + " )\n", + "\n", + " return mapping, (\"complex\" if is_complex else \"solvent\"), state_a\n", + "\n", + "\n", + "def parse_results(result_files):\n", + " \"\"\"Return successful ligand mappings and campaign information.\"\"\"\n", + " phases_by_pair = {}\n", " mapping_by_pair = {}\n", " reference_complex_system = None\n", " reference_protocol = None\n", + "\n", " for path in result_files:\n", - " ru = _load_result_json(path)\n", - " if ru is None:\n", + " result = _load_result_json(path)\n", + " if result is None:\n", " continue\n", + "\n", " if reference_protocol is None:\n", - " settings = _units(ru)[0][\"inputs\"].get(\"settings\")\n", + " settings = _units(result)[0][\"inputs\"].get(\"settings\")\n", " reference_protocol = RelativeHybridTopologyProtocol(settings=settings)\n", - " parsed = _extract_edge(ru)\n", + "\n", + " parsed = _extract_result_edge(result)\n", " if parsed is None:\n", " continue\n", - " mapping, phase, stateA = parsed\n", - " pair = frozenset({mapping.componentA, mapping.componentB})\n", - " phases.setdefault(pair, set()).add(phase)\n", + "\n", + " mapping, phase, state_a = parsed\n", + " pair = frozenset((mapping.componentA.key, mapping.componentB.key))\n", + "\n", + " phases_by_pair.setdefault(pair, set()).add(phase)\n", " mapping_by_pair[pair] = mapping\n", + "\n", " if phase == \"complex\" and reference_complex_system is None:\n", - " reference_complex_system = stateA\n", + " reference_complex_system = state_a\n", + "\n", + " successful_edges = [\n", + " mapping_by_pair[pair]\n", + " for pair, phases in phases_by_pair.items()\n", + " if phases == {\"complex\", \"solvent\"}\n", + " ]\n", "\n", - " edges = [mapping_by_pair[pair] for pair, seen in phases.items()\n", - " if not require_both_legs or seen == {\"complex\", \"solvent\"}]\n", - " return LigandNetwork(edges=edges), reference_complex_system, reference_protocol" + " return successful_edges, reference_complex_system, reference_protocol" ] }, { @@ -224,8 +292,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "found 54 result files\n", - "kept 42 after simulating failures\n" + "found 54 result files\n" ] }, { @@ -240,8 +307,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "completed edges: 7 ligands: 9\n", - "connected: False (broken, as intended)\n", + "successful planned edges: 7\n", "recovered protocol: True\n" ] } @@ -250,131 +316,111 @@ "RESULTS_DIR = pathlib.Path(\"results\")\n", "\n", "result_files = sorted(\n", - " p for p in RESULTS_DIR.rglob(\"*.json\")\n", - " if not any(part.startswith(\"shared_\") for part in p.parts)\n", + " path\n", + " for path in RESULTS_DIR.rglob(\"*.json\")\n", + " if not any(part.startswith(\"shared_\") for part in path.parts)\n", ")\n", "print(f\"found {len(result_files)} result files\")\n", "\n", - "# Simulate two failed transformations: drop their result files (both legs) before\n", - "# parsing. Matching on ligand name in the path is robust to the filename format.\n", - "DROP_EDGES = [(\"ejm_31\", \"ejm_46\"), (\"ejm_31\", \"ejm_48\")]\n", + "# Simulate two failed transformations by dropping both legs from the result set.\n", + "DROP_EDGES = [\n", + " (\"ejm_31\", \"ejm_46\"),\n", + " (\"ejm_31\", \"ejm_48\"),\n", + "]\n", + "\n", "result_files = [\n", - " p for p in result_files\n", - " if not any(a in p.name and b in p.name for a, b in DROP_EDGES)\n", + " path\n", + " for path in result_files\n", + " if not any(a in path.name and b in path.name for a, b in DROP_EDGES)\n", "]\n", - "print(f\"kept {len(result_files)} after simulating failures\")\n", "\n", - "completed, reference_complex_system, reference_protocol = parse_results(result_files)\n", - "print(\"completed edges:\", len(completed.edges), \" ligands:\", len(completed.nodes))\n", - "print(\"connected:\", completed.is_connected(), \"(broken, as intended)\")\n", + "successful_edges, reference_complex_system, reference_protocol = parse_results(\n", + " result_files\n", + ")\n", + "\n", + "print(\"successful planned edges:\", len(successful_edges))\n", "print(\"recovered protocol:\", reference_protocol is not None)" ] }, { "cell_type": "markdown", - "id": "6ad134e2-8617-46d0-8be2-e9457279cc75", + "id": "d43eca54-15c4-4cf3-96e7-5f244412fbaf", "metadata": {}, "source": [ - "## 5. Inspect the damage\n", + "### Remove the failed edges from the plan\n", "\n", - "The two failures show up in different ways. A missing **edge** between ligands\n", - "that survive elsewhere leaves the reconstructed network *disconnected*.\n", - "`decompose` finds it with no reference needed. A missing **ligand**, whose every\n", - "transformation failed, leaves no trace in the results at all; the only way to\n", - "know it should be there is to compare against the planed network.\n", + "We compare the successful result mappings with the planned mappings to identify\n", + "the failed transformations. \n", "\n", - "Here `ejm_48` is the missing ligand. We recover it from the planned network and\n", - "fold it in as its own fragment, so the repair reconnects it too." + "`delete_transformations` deliberately keeps all nodes from the planned network. Setting\n", + "`must_stay_connected=False` is important here: a broken network is exactly what\n", + "we expect to create before repairing it." ] }, { "cell_type": "code", - "execution_count": 6, - "id": "72cdee1f-c103-4467-a73a-297d96a076e0", + "execution_count": 5, + "id": "adf03470-6ea4-4f0a-8607-b8166746d23e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "missing ligands: ['lig_ejm_48']\n", - "fragment 0: ['lig_ejm_46', 'lig_jmc_23', 'lig_jmc_27', 'lig_jmc_28']\n", - "fragment 1: ['lig_ejm_31', 'lig_ejm_42', 'lig_ejm_43', 'lig_ejm_47', 'lig_ejm_50']\n", - "fragment 2: ['lig_ejm_48']\n" + "failed edges: [('lig_ejm_31', 'lig_ejm_48'), ('lig_ejm_31', 'lig_ejm_46')]\n", + "damaged_network connected: False\n", + "damaged_network ligands: 10\n", + "damaged_network edges: 7\n" ] - } - ], - "source": [ - "def missing_ligands(planned, completed):\n", - " \"\"\"Ligands in the plan with no results at all.\"\"\"\n", - " have = {n.name for n in completed.nodes}\n", - " return [n for n in planned.nodes if n.name not in have]\n", - "\n", - "\n", - "fragments = connected_subnetworks(completed)\n", - "missing = missing_ligands(planned, completed)\n", - "print(\"missing ligands:\", [n.name for n in missing])\n", - "\n", - "# fold each missing ligand in as a singleton fragment so the repair reconnects it\n", - "fragments += [LigandNetwork(nodes=[lig], edges=[]) for lig in missing]\n", - "for i, frag in enumerate(fragments):\n", - " print(f\"fragment {i}: {sorted(n.name for n in frag.nodes)}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "e9eea99a-4bb2-44ef-955c-8225b3608177", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunf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+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", - "text/plain": [ - "
" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" }, { "data": { - "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunfeOONLmAtWbKkVq1apYwZMwZ6WQAA4AqoaUVEse1VZ8+erTx58rj5qu3bt9eZM2cCvSwAAHAFBK2IOLlz59acOXNcAPvxxx+7XbMAAEBwI2hFRKpUqZImTJjgrg8ZMkRTp04N9JIAAMBlELQiYrVr1+5clvXee+/V999/f9n716kj9enjXS9UyHbckt8MHChdf73/Xg8AgGBD0IqIZvNVmzdv7jYI6Nu3b6wft2aN1K2b/OaRR6QFC/zzWidPegGyjZ1dt+7fP580SSpXzuqDpVy5pJ49/bMuAEBkSxHoBQCBlCxZMlcaUKNGDf3xxx+xflz27PKr9Om9iz88+qiUJ4/03Xf//tmwYdIrr0j//a9UtapNY5B+/dU/6wIARDYyrYh4tsWrbfWaOXPmWB+Li8sDNm6UbBdXyz6WKiXNn+9lKmfPjt3z7d4ttW0r2RKyZpWaN5e2bYu5PKBTJ6lFC2nwYClnTilTJunZZ6XTp6V+/aQsWaR8+aT/L9uNtU8/lebNk4YO/ffPDh2SBgyQpkyR2reXbMRt6dLSrbfG7TUAAIgPglZAUuHChV1DVnycPesFkOnSSatXS2PHSv37x/7xx49Ldet6mdQlS6Rly7zrjRpJ//wT8+MWLpT27PEeYxlQC2ybNvUCX1tH9+7eZefO2K1j/36r7ZWsJ83ey8W++MJ7rxZglyzpBcVt2sT++QEASAiCVuD/VaxYMV7HwjKTW7Z4Gcjy5b2M66BBsX/8tGlWpiCNHy+VLesFhBMnSjt2SIsXx/w4y6aOHCldd53UubP31QJg6y0rXlx64gkpVSpp+fIrryEqysveWpBbqdKl72NlABa0WnbXsswzZkgHD0r1618+uAYAIDFQ0wok0KZNUv78XlOST5UqsX/82rXSL79IGTJEv93qRS0Yjomdmrdg18fKBMqUOf998uReqcFvv115DaNGSX/95QW6MbGA9dQpL1Bu0MC77d13vfe9aJHUsOGVXwcAgPgiaAUSyLKUVr8aXxYMWpL37bfj1vCVMmX0720Nl7rNnv9KrNRg1Sopderot1vWtUMHafJk25TBu81qdi9cX7ZsXlYYAICkRNAKJFCJEl7QZjWhlu30jcSKrQoVpPfek3LkkDJmDMyvw7KnL7xw/nurlbXMqa3LpgSYmjXPZ5atntVYeYANXShYMACLBgBEFGpagQSymk7rpO/YUVq/3qsh9TVixSYDa5lMy1baxIClS6WtW6Uvv5R695Z27fLPr6dAAa+0wHe59lrvdntfvgDVbrM12rpWrJB++MF7zxa0WyMZAABJiaAVEe/EiRNaunSp3nzzzXgdC6sdtdFWR49KlStLXbt6o6GMjcC6EuvUtwkAFji2bOk1Yllj1d9/By7zGhNrNrPMa5Mm0o03euUIn33277IEAAAS21VRUVaRB0SOo0ePauXKlVqyZIm7rF692u2IdcMNN+ibb75JlNewbKtNEbAGK8tWJpQ1SFkW1sZhAQAQiahpRdg7ePCgli9ffi5IXbt2rc6cORPtPjlz5lQDX0t8PMya5c1WtVFTFqjaKXSrAU1owGofKW3UlG3hesMNCXsuAABCGUErws7evXvd6X5fkPr999//6z6FChXSf/7zn3OXYsWK6aoEjAA4csTb/tQG7Vt9ar163nanxuaa2uVSatf2dqGKyeHDXre+lR3Y/NX4SsgaAAAIBpQHIKRZdcv27dvPBah2+fnnn/91vxIlSpwLUGvXrq0CVkDqJ9Zhb5dLSZtWyps3MtYAAEBCELQi5ILUTZs2RQtSd160j6hlTMuXLx8tSM1h86QAAEDIojwAQc1qT+30/oVB6u+//x7tPilSpFDlypXPBag1a9ZUpkyZArZmAACQ+AhaEVT++ecf1yjlC1CtgeqwFXZeIE2aNKpevfq5TGrVqlV19dVXB2zNAAAg6RG0IqCOHz/uRk75glQbRfW3DSi9QIYMGVSrVq1zQWrFihWV+uL9RgEAQFgjaIVfWdZ0xYoV54LUNWvW6NSpU9HukzVr1mid/Vafmtwm+AMAgIhF0IokZfWny5YtOxekrlu3TmfPno12n7x580YLUkuWLJmg8VP+ZAF4r169XINY//791apVq0AvCQCAsMT0ACSqXbt2nQtQbVbqhg0b/nUfm4l6YZBqM1NDJUi9lBdffFFPPvmkUqZMqcWLF6tGjRqBXhIAAGGHoBXxZtnFLVu2ROvs37p167/uV6ZMmWjjp/LkyRN2x6FNmzaaMWOGcuXK5RrJwu09AgAQaAStiDU7rW+Z0wuDVNt96kLJkiVThQoVzgWp1kBlNarh7ujRo26iwQ8//OC+Llq0iGYxAAASEUErYnT69GlXg3rh6f6DF22rlCpVKlWpUuVckGqnxq3bPxJZ1rlSpUr6888/1a1bN40ZMybQSwIAIGwQtOKcEydOuG5+C059M1Itg3ghm4dqgakvSLWA1eamwvPZZ5+pcePGrmTAglYLXgEAQMIRtEYwC0htLqovk2rzUk+ePBntPrazlNWh+oLUG264wTUcIWY0ZgEAkPgIWiPIoUOHoo2fsoYh2yb1Qjlz5ozW2W9NVFanitijMQsAgMRH0BrG9u3bd+5Uv12+//57F1BdqGDBgtGC1OLFi4f0+KlgQWMWAACJi6A1jGzfvj1aZ//mzZv/dZ8SJUpEGz9VoECBgKw1EtCYBQBA4iFoDVGWMd20aVO0IHXnzp3R7mMZU9sC9cLxU3b6H/5DYxbgX3XqSNdfL40YIRUqJPXp4138YeBAafZsad06/7weEGkIWkOE1Z7a6f0Lg1TbIvVCKVKkcCOXfEFqzZo1XSMVAovGLCAwQav9E3n11VK6dP55bRu2Yr2s/hhNba9Ttar03XfSt99679lnzRrp8celtWsteSFVriwNGRL9PkAoImgNUqdOndJPP/2kb7/9Vt98842bl3rkyJFo90mdOrXKli3rhvnbxa6nTZs2YGvGpdGYBQQmaA1nvXtLP/8sffpp9KDV/psoWFBq3twLXE+flp55Rlq61LbZlhj+gpAWBSDJHTlyJKpMmTLWBRdVvXr1qBMnTnDUgSRw441RUb17e9cLFoyKGj78/M9++ikqqmbNqKjUqaOiSpaMivriC+tMjYqaNSt2z71rV1RUmzZRUZkyRUVlyRIV1axZVNTWred//swzUVHly5//vmPHqKjmzaOiBg2KisqRIyrqmmuiogYOjIo6dSoq6pFHoqIyZ46Kyps3KurNN+P2Hj/5JCqqRImoqB9/9Nb/7bfnf7ZmjXfbjh3nb1u/3rvtl1/i9jpAsGGWEeAH6dOn1+zZs125hs3GffDBBznugB+dPSu1aOGVCqxeLY0dK/XvH/vHHz8u1a1rf5elJUukZcu8640aSf/8E/PjFi6U9uzxHjNsmFf32rSplDmzt47u3b3LRS0JMdq/X7r3Xmnq1EuXPVx3nZQtm/Tmm966/v7bu166tJeBBUIZQSvgJ0WLFtW7777rGuTGjh3rLgD8Y948m+ghTZkilS8v1aolDRoU+8dPmybZyOrx46WyZaWSJaWJE6UdO6TFi2N+XJYs0siRXjDZubP31QLgJ5+UiheXnnjCtsOWli+/8hosX9qpkxfkVqp06fvYLtq2nrfekqxazALrzz+XPvnE+h5i/36BYETQCvhRo0aNNOj//6fs2bOnVqxYwfEH/GDTJil/filXrvO3VakS+8dbU9Mvv3hBoQWCdrGA9MQJLxiOiWU4L9yfxQa4WNDrkzy517j1229XXsOoUdJff3mBbkwss2rBcc2a0qpVXjBsa2jc2PsZEMr43AX42eOPP+6a62bMmKFWrVq5ncny5MnD7wFIQpalTMi+KVZeULGi9Pbb//5Z9uwxP+7ixidbw6Vus+e/Eis1sEA0derot1vWtUMHafJk6Z13pG3bpJUrzwfLdpuVI8yZI91xx5VfBwhWBK2An1l5wMSJE7Vx40b98MMPat26tRYtWuSmQQBIGiVKeKfyrSbUN67aRkPFVoUK0nvvSTlySBkzBua3ZGUGL7xw/nurlW3Y0FuXjb8yVnpgweqFAbrv+9gExkAwSxbso0t8Q6FtSHRijjCxv8A2BBoIBBqzAP+qX9/qyqWOHaX1673T5r5GrNhkYC2TaQ1ONkrKxkdt3Sp9+aU3espGSfmDbWBYpsz5y7XXerfb+8qX7/z7PHRIeuAB6aefpB9/lO65x6tntUYyIJQFddB6IftE3K1b4j3f3r3SLbcoIA4elHr18gryrfvT/iGyZvLDh6Pfr1kz72dp0ki5c0t33eV9skZ4oDEL8B+rHbVEhW0AYMP2u3aVBgzwfmb/xl6J/VttEwDs3+SWLb1GLKsdtTrRQGVeY8ooz53rBebVq0u1a3v/b3z2mff/CBDKgnpzgXAdEv3DD96wZ+sCLVVK2r7d6wYtV06aMeP8/YYP9/7RsX9odu+WHnnEu53enfDCjllAYFi21aYIWIOVZSsTyhqkLAtr47AARHCm9eLygI0bvX9s7BOyBX7z58ftlP+F97Widft++nTvU6mNCbFP4ps3exleK3L3zeO7aOdUTZjgdWZaOaIFlz17Xvm17bTOBx9It97q/UN5003e6BX7dGy7l/g89JBUrZo3W69GDW93EyvCP3Uqdu8RodOYZXWttguaNWbtIZ0OJIlZs6QvvvD+zbf/M+zsnXXZJzRgtdSPTRBYsMD7/wBAhAetiTkkOiaW/bTTRd9849X/tGsnPfqo9Oqr3qdn+0fp6afP3//11726IfuH7/vvpQ8/lIoVi99rW2mAnWKKaY6elRRY16oFr2zDF56NWWXKlNG+fftcAHvSNhYHkKhsi9MePbxT6Hamy5IT1lFvBg8+P8rq4suVSsns329Lnti8VZu/Gl8JWQMQCVKE8pBoG6Dsm7lnmUorQE8IO/1unZjGiustaLVPzvZJ3HTpIk2adP7+1sXZt693Xx/7RzCuDhyQnn9euu++f//sscek0aO9jlDLun70UdyfH6HTmFWpUqVzO2aNGTMm0MsCgo5N3LAPePFx993e5VKsRKtNm0v/zM6+XU6mTFJifM5MyBqASJAsEodEx8RqSn18I1EuHAJtt/kGQNtXO4t7880Je00bFN2kifcp3TK9F+vXT/r2Wy9Qt0YC+wc3eKuQkRA0ZgGXZ7ON77U9TJOAbRRgZ8oudcmb1z+/mWBYAxDMkkXikOiYXHja3ff8F9/mm3OXGJ967VSV1cnaqR+rtbrUaX8bsWJjTSyLbNsI2lZ8VteK8MSOWcC/Wb/w4MGDdfvtt1M6A0SwZKE+JNonLkOiE4Nt5WfNYVY+EN8Ma4MGXg2U1cLGZuSKL8NKuWN4ozELOM/qu++55x71///Ghfbt23N4gAiVItSHRA8Z4mUs4zIkOrEMHOjVINkOKVYkb+uwESo2g/Vy7H4WsFqd6ltveQGsXXzbAVoZwFdfeRebkGDb7/36q9cEZu/bxmAhfLFjFuD5448/1LJlSy1dulTJkyfXqFGjdP/993N4gAiVLBKHRCcWC5ptDNf//ueNOWnaVPr55ys/bu1ab+qBTRywWiUbleW77Nx5vvxg5kyvZtY2IbAh1tZ7YDuwsNtn+GPHLEQ62+a4WrVqLmDNmDGjPv74YwJWIMIF9eYCSTUk2k6vW3Br8/rq1fPXCoG4++yzz9S4cWNX02fTBLol5rZwQJBasGCBG/32559/qlChQvroo49UmgGoQMQLyUxrQoZE22n4d9+VkiXzamOBYEZjFiLNuHHj3J97C1hr1Kihr776ioAVQGgHrfEdEt28uTf79OWXpXz5kmZttglATK9PsgBxRWMWIsGZM2f0yCOPuLMJp0+fdg1XlnHNboX+ABBO5QEX7x5ll0uxWtGknndnAfWFkw0uZGOtbFtWIC6OHj2q6tWru8Hq9nXRokVKTXEzwujPd4cOHfShjVKR9Oyzz+qpp55yTYkAENZBKxCOtmzZ4nbMstOmlo1ixyyEg127dunWW2/VunXr3AexSZMm6Y477gj0sgAEoZAtDwAiDTtmIdysXbtWVapUcQFrjhw5tHjxYgJWADEiaAVCCI1ZCBczZ85U7dq1tXfvXtdotXr1ajfiCgBiQnkAEGKsoqdNmzZuH/ZcuXK5bFWePHkCvSwg1n9+hwwZ4hoMfR/E3nvvPTeLFQAuh6AVCEE0ZiEU/fPPP+revbsmTpzovu/Zs6eGDx+uFClCcnNGAH5GeQAQgtgxC6HmwIEDatCggQtYkyVL5rZktQsBK4DYItMKhDB2zEIo2Lx5s5o2baqff/5ZGTJkcOUAt9xyS6CXBSDEkGkFQhiNWQh2NlPYGqwsYC1YsKBWrFhBwAogXsi0AiGOxiwEqwkTJui+++5zO1xVrVpVc+bMUc6cOQO9LAAhikwrEOJs1yCrEyxTpoz27dun1q1b6+TJk4FeFiLY2bNn9dhjj6lLly4uYLXNAizjSsAKICEIWoEwQGMWgsWxY8fcBycba2WefvppvfPOO0pre2gDQAJQHgCEERqzEEh79uxxW7J+8803SpUqlSsP6NChA78UAImCoBUIMy+++KKefPJJpUyZ0m2LWaNGjUAvCRHAAtVmzZpp9+7dypYtm2bPnq2aNWsGelkAwghBKxBmaMyCv1mDVfv27XX8+HGVKlVKc+fOVZEiRfhFAEhU1LQCYYbGLPjzA9LQoUN12223uYDVNg+wkVYErACSAkErEIZozEJSO3XqlLp166Z+/fq54PX+++/Xxx9/rGuuuYaDDyBJELQCYapo0aJ69913XeZ17Nix7gIkhkOHDrmNLcaPH++2ZB0xYoRee+01tmQFkKSoaQXCHI1ZSEy//PKLmjRp4rZmtYz+tGnT3PcAkNQIWoEwR2MWEsuSJUtc/erBgweVP39+ffTRRypXrhwHGIBfUB4AhDkas5AYJk+erHr16rmAtUqVKvrqq68IWAH4FUErEAFozEJCtmS1ub+dOnVyzVe33367m/+bK1cuDioAvyJoBSIEjVmIKxtj1aZNG1cXbQYMGOBqWNmSFUAgUNMKRBgasxAbe/fudTtcff31125LVpsUcNddd3HwAAQMQSsQYWjMwpV89913atq0qXbt2qWsWbNq1qxZql27NgcOQEARtAIR6OjRo6pevbp++OEH93XRokVKnTp1oJeFIGBbsLZr107Hjh1TiRIl3IQAKy0BgECjphWIQDRm4VIZ+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", + "image/png": "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aMVp7777rq655hodPXpUV199td555x0VK1aMbwgAAEQdoRWBOXPmqFevXjp+/Hjw880331QR2zEGAADggTw7pzWzbL/Zv/71L82aNSs4BX7KrosqG0FVPKgq/vKXv4zbqzvNnDlT/fr1008//aQbbrhB06ZNU4ECBaK9LAAAgPieHvDdd9/p1Vdf1UsvvaSNGzeefvzSSy/VkCFD9Ktf/SpuqoxTpkzRLbfcoqSkJP3mN7/RxIkTlT9/3Py/DAAAyCPiMrSGWFCzy5FaeLXT46Hqa+nSpXXzzTfr9ttvD64AFausBWDMmDFBFfoXv/iFRowYoXz56BgBAAD+ievQeia74pNVGcePH69vvvnm9OM///nPg+pr7969VahQoaiuEQAAIF4RWs9ifZ02l9Sqr7Z73qqxply5chowYIAGDx4ct72vAAAA0UJoPY/t27frlVde0csvv6wdO3acftzml1r1tWfPnmxYAgAAiABCaxis19VmmP7973/X+++/H/SAmooVK+rWW2/Vbbfdplq1auX2vxUAAEDcIrRm0pYtWzRhwoTgtnv3bvclJiSoa9euQfW1R48e7L4HAADIYYTWLDp58qTefvvtoPpqc19DqlatqkGDBgW3atWq5dS/EwAAQFwjtOaADRs2BFMHJk2apO+//z54zEZH2SVRbWyWVWETExOVGzp2lJo1k559VrIOhWHD3C0SRo2yK2lJq1dH5ngAACB+EVpzkF0C1Waf2uSBRYsWnX68Zs2aQd/rwIEDVbly5VwLrd99JxUrJhUtqog4dMg+s1S2bO4d47rrXCjes8fm50pXXSU9/rhUpUrKc4YOlZYulb74QrKxuoRoAABiD5Pkc5DNce3bt68WLlyor776SsOGDQsuVGBzX0eOHKkaNWro+uuv1wcffHB6lFZOKl8+coHVFC+eu4HVdOokvf66tG6dNGuWZBcwu/761M+xfXEDB0p9+uTuWgAAQPQQWnOJXUnrmWeeCUZlTZ48We3atQumEMyaNUtdunRR3bp19cQTTwSXlM0p1h5gFdeQtWulDh2kwoWlhg0la71NSHCn9MNhU74sCFqF08Jpz562ES11e4BVeUMGDJB69ZLGjrXJClKpUtIjj9j0Bem++6QyZSRr8504MfzP9PvfS5dcYtVqqV076Y9/lJYvt57ilOc8/7x0553ShReG/74AACBv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", "text/plain": [ "
" ] }, + "execution_count": 5, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "from openfe.utils.atommapping_network_plotting import plot_atommapping_network\n", + "def _edge_pair(edge):\n", + " \"\"\"Return an unordered, serialization-stable ligand pair.\"\"\"\n", + " return frozenset((edge.componentA.name, edge.componentB.name))\n", + "\n", + "successful_pairs = {_edge_pair(edge) for edge in successful_edges}\n", + "failed_edges = [\n", + " edge\n", + " for edge in planned_network.edges\n", + " if _edge_pair(edge) not in successful_pairs\n", + "]\n", "\n", - "plot_atommapping_network(planned)" + "print(\n", + " \"failed edges:\",\n", + " [(edge.componentA.name, edge.componentB.name) for edge in failed_edges],\n", + ")\n", + "\n", + "damaged_network = delete_transformation(\n", + " planned_network,\n", + " failed_edges,\n", + " must_stay_connected=False,\n", + ")\n", + "\n", + "print(\"damaged_network connected:\", damaged_network.is_connected())\n", + "print(\"damaged_network ligands:\", len(damaged_network.nodes))\n", + "print(\"damaged_network edges:\", len(damaged_network.edges))\n", + "\n", + "plot_atommapping_network(damaged_network)" ] }, { - "cell_type": "code", - "execution_count": 8, - "id": "751f8ad5-225a-461c-8951-cf35b9cb822e", + "cell_type": "markdown", + "id": "6ad134e2-8617-46d0-8be2-e9457279cc75", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ABBmhFac8f777+vaa6/V8ePHdc011+i9995TqVKl+IYAAEDEEVoRmDt3rvr06aMTJ04EP99++22VsB1jAAAAHiiwc1qzy/ab2aVHbSj+qlWr9NNPPwX3lyxZUh07dgxOhde2S2TFoNmzZ2vAgAHBd3LjjTdqxowZKlKkSKSXBQAAENvTA7777ju99tprevnll7Vly5Yz91966aUaPny4fvGLX8RMlXHatGm69dZblZSUpF/96leaPHmyCheOmf+XAQAABURMhtYUFtSs8mrh1U6Pnz59Ori/fPnyuuWWW3T77bcHV4CKVvbZX3311aAK3aVLF912220qVIiOEQAA4J+YDq1p2RWfrMo4ceJEff3112fu//nPfx5UX/v27atixYpFdI0AAACxitB6FuvrtLmkVn213fNWjTWVKlXSoEGDNGzYMNWvXz8S/1YAAAAxi9B6Hrt27QpOn7/yyivavXv3mftt05ZVX3v37s2GJQAAgDAgtIbAel1thulf//pXffjhh0EPqKlatWrQBzp06FDVrVs3v/+tAAAAYhahNZu2b9+uSZMmBcfevXvdlxgXp+7duwfV1169erH7HgAAII8RWnPo1KlTevfdd4Pqq136NEVCQoKGDBkSHDVr1syrfycAAICYRmjNA5s3bw6mDkyZMkXff/99cJ+NjrJLotrYLKvCxsfHKz907iy1bCk995xkHQojR7ojHMaMsStpSevWhef9AABA7CK05iG7BKpd/tQmDyxevPjM/XXq1An6XgcPHqzq1avnW2j97jupVCm7ypfC4uhR+8xSxYr59x7XX+9C8b59Nj9Xuvpq6YknpBo1Uh8zYoS0bJn0+eeSjdUlRAMAEH2YJJ+HbI5r//79tWjRIn355ZcaOXJkcKECm/s6evTo4DKxN9xwgz766KMzo7TyUuXK4QuspnTp/A2spksX6Y03pI0bpbfekuwCZjfckP4xti9u8GCpX7/8XQsAAIgcQms+sStpPfvss8GorKlTp+qyyy4LphC89dZb6tatmxo0aKAnn3wyuKRsXrH2AKu4ptiwQerUSSpeXGrSRLLW27g4d0o/FDbly4KgVTgtnPbubRvR0rcHWJU3xaBBUp8+0vjxNllBKldOevRRm74g3X+/VKGCZG2+kyeH/pl+8xvpkkusWi1ddpn0+99LK1daT3HqY154QbrzTunCC0N/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", - "text/plain": [ - "
" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "plot_atommapping_network(LigandNetwork(nodes=planned.nodes, edges=completed.edges))" + "## 2. Repair the ligand network" ] }, { @@ -382,72 +428,103 @@ "id": "b9b19391", "metadata": {}, "source": [ - "## 6. Repair — by ligand name\n", + "### Repair manually by ligand name\n", + "\n", + "If you already know which ligands should bridge the disconnected pieces, you can\n", + "propose those mappings directly.\n", "\n", - "When you know which ligands should bridge the gaps, name the edges explicitly.\n", - "Here we chain one representative ligand from each fragment; in practice you'd\n", - "choose these from the chemistry." + "Here we choose one representative ligand from each fragment and connect the\n", + "fragments in a chain. In a real campaign, these choices would normally be based\n", + "on chemical judgement or inspection." ] }, { "cell_type": "code", - "execution_count": 9, - "id": "73cea531", + "execution_count": 6, + "id": "a07a9acb-a5f5-4c08-931d-aa5c1fbe3e85", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "bridging by name: [('lig_ejm_46', 'lig_ejm_31'), ('lig_ejm_31', 'lig_ejm_48')]\n", - "connected: True\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/hannahbaumann/.local/share/mamba/envs/openfe_env/lib/python3.12/site-packages/konnektor/network_planners/generators/explicit_network_generator.py:85: UserWarning: Generated network is not connected as a single network.\n", - " warnings.warn(\"Generated network is not connected as a single network.\")\n" - ] - } - ], + "outputs": [], "source": [ - "def repair_by_names(completed, ligands, mapper, names):\n", - " \"\"\"Reconnect a broken network with bridging edges specified by name.\n", + "def repair_network_by_names(\n", + " ligand_network: LigandNetwork,\n", + " names: list[tuple[str, str]],\n", + " mapper: AtomMapper,\n", + ") -> tuple[LigandNetwork, list[AtomMapping]]:\n", + " \"\"\"Repair a ligand network using specified ligand pairs.\n", + "\n", + " New mappings are generated between the ligand pairs specified by ``names``\n", + " and added to ``ligand_network``.\n", "\n", " Parameters\n", " ----------\n", - " completed : LigandNetwork\n", - " The disconnected network to repair.\n", - " ligands : list[SmallMoleculeComponent]\n", - " The pool the named edges are drawn from. Must include any missing\n", - " ligands that are absent from ``completed``.\n", - " mapper : AtomMapper\n", - " Builds the atom mapping for each new edge.\n", + " ligand_network : LigandNetwork\n", + " The ligand network to repair.\n", " names : list[tuple[str, str]]\n", - " The bridging edges to add, as pairs of ligand names, e.g.\n", - " ``[(\"lig_ejm_31\", \"lig_ejm_46\"), ...]``.\n", + " Pairs of ligand names to connect. Each pair identifies the two ligands\n", + " for which a new mapping should be generated.\n", + " mapper : AtomMapper\n", + " Atom mapper used to propose mappings between the specified ligand pairs.\n", "\n", " Returns\n", " -------\n", - " LigandNetwork\n", - " ``completed`` with the named bridging edges merged in.\n", + " repaired_network : LigandNetwork\n", + " The ligand network with the new mappings added.\n", + " new_edges : list[AtomMapping]\n", + " The new mappings added to the ligand network.\n", " \"\"\"\n", - " patch = generate_network_from_names(ligands=ligands, mapper=mapper, names=names)\n", - " return merge_two_networks(completed, patch)\n", + " repair_edges = generate_network_from_names(\n", + " ligands=ligand_network.nodes,\n", + " mapper=mapper,\n", + " names=names,\n", + " )\n", "\n", + " repaired_network = merge_two_networks(\n", + " ligand_network,\n", + " repair_edges,\n", + " )\n", "\n", - "reps = [sorted(frag.nodes, key=lambda n: n.name)[0].name for frag in fragments]\n", - "bridge_names = list(zip(reps[:-1], reps[1:]))\n", - "print(\"bridging by name:\", bridge_names)\n", + " new_edges = set(repaired_network.edges) - set(ligand_network.edges)\n", "\n", + " return repaired_network, list(new_edges)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bdecf5a2-2783-4062-8a91-c85c4ce12203", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/hannahbaumann/.local/share/mamba/envs/openfe_env/lib/python3.12/site-packages/konnektor/network_planners/generators/explicit_network_generator.py:85: UserWarning: Generated network is not connected as a single network.\n", + " warnings.warn(\"Generated network is not connected as a single network.\")\n" + ] + }, + { + "data": { + "image/png": "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SFLFixd3c0eTJ0/uZrkOHz6cI36R48eP63//+9+5WmCraQUAANERtCLJ1a9f/1y9Zr9+/fTpp59y1C8wefJkHThwQIULF9Ztt93GsQEA4BIIWuEXvXr1UteuXd2GA3fccYc2btzIkf//LXB92ec+ffooRYoUHBcAAC6BRiz4jdVs1qtXT0uXLnVlA6tXr1bmzJkj+jdgu4jZtACr+925c6fSp08f6CUBABCUyLTCb3w7ZRUsWFA///yz2rRpo9OnT0f0b8C3Zet9991HwAoAwGWQaYXfrV+/3nXIHzt2TA8++KBeffXViPwtrFmzRlWqVHElAdu2bVPevHkDvSQAAIIWmVb4Xbly5TR16lR3feTIkRo/fnxEZ1nbtWtHwAoAwBWQaUXAvPDCC3rqqaeUMmVKLViwQLVr146Y34ZlVosWLeoasdatW6fy5csHekkAAAQ1Mq0ImP79+6tt27Y6deqUWrZs6QK5SGElERawWmMaASsAAFdGphUBH6z/n//8R2vXrnVlA8uXLw/7hiTb3jZ//vw6evSom1nbqFGjQC8JAICgR6YVAZUuXTrNnj1buXLlcg1ad911l8tAhrNx48a5gLV06dJq2LBhoJcDAEBIIGhFwOXLl0+zZs1S6tSpXQD7zDPPKFxZKYQ1n5mHH36YLVsBAIglglYEhWrVqrkMpK9B67333lM4mj59unbt2qWcOXOqQ4cOgV4OAAAhg6AVQcNKA/r16+eud+rUydW5hpOoqCgNHTr03La2llkGAACxQyMWgsqZM2fUvHlzffzxx252qQ3gz507t8LBwoULdfPNNytt2rRuy9asWbMGekkAAIQMMq0IKsmTJ9c777yjkiVLavfu3brtttt04sQJhdNmAvfccw8BKwAAcUSmFUHpl19+cVucHjp0yJUNTJ48OaSbln766SeVKlXKvYfNmzerWLFigV4SAAAhhUwrgpIFdTNmzHCZV9vy1VcLGqqGDRvmvlrpAwErAABxR6YVQe21115Tz549XYZy7ty5atKkiULN/v37VbBgQZ08eVJLly5VrVq1Ar0kAABCDplWBLUePXrovvvuc5337dq104YNGxSKgbcFrFbuULNmzUAvBwCAkESmFSExkL9+/fr68ssvVbRoUa1evTpkGplsm9oCBQrowIEDbkbr7bffHuglAQAQksi0IuilTJnS1bcWLlxYW7ZsUZs2bVwgGwqmTJniAtZChQq5SQgAACB+CFoRErJly6YPP/xQ6dOnd/NOH3roIQW7s2fPavjw4e56nz59lCJFikAvCQCAkEXQipBRpkwZvf32264py+pEx4wZo2D20UcfufFW11xzjTp37hzo5QAAENIIWhFSmjVrpkGDBrnrNlVg8eLFCvbNBKyRLEOGDIFeDgAAIY1GLIQcmyRw5513up2zrCHrq6++UpEiRRRMbPtZmxZgJQFbt25Vvnz5Ar0kAABCGplWhBwrDxg/frwqV67smpxsYP+RI0cUjFlWG9NFwAoAQMKRaUXI2r17twtc9+7d68oGZs2apWTJAv85bPv27W4015kzZ7Ru3TqVL18+0EsCACDkBf5/eCCe8ubNq9mzZyt16tRussCAAQOC4li++uqrLmC9+eabCVgBAEgkZFoR8qy2tUOHDu66TRdo3759wNZy+PBh5c+f35UrfPLJJ7rlllsCthYAAMIJmVaEPAtSH3/8cXe9S5curgkqUMaNG+cC1lKlSqlRo0YBWwcAAOGGTCvCgg3yb9GihebOnavcuXPr66+/Vp48efy6Btuly6YY7Nq1yzWKWQANAAASB5lWhAVrwLLSgNKlS7vGLAtg//77b7+uYfr06S5gzZEjx7lyBQAAkDgIWhE2bIC/NWTZ7FYrEejataub6eoP9jq+MVe9evVSmjRp/PK6AABECoJWhBU7PT9jxgw31N8atF5++WW/vK7tzPXtt98qbdq0uv/++/3ymgAARBKCVoSdOnXqaNSoUe76k08+6epck5ovy9qpUyeX6QUAAImLRiyErQceeED/+9//lD59eq1cuVJlypRJktf56aef3LQA26lr06ZNKl68eJK8DgAAkYxMK8LWiBEjVLduXR09etTtmPXHH38kyesMHz7cfbXXIGAFACBpkGlFWDtw4ICqVq2qLVu2uLKBefPmKWXKlIn2/Pv371fBggV18uRJLVmyRLVr10605wYAAOeRaUVYs/pSmyhgkwWsWerBBx9M1Oe38gMLWKtUqaJatWol6nMDAIDzCFoR9qze1CYJWM3pG2+84QLNxHDixAktW7ZMN9xwg55//nn3/AAAIGlQHoCIYeOvbLvX5MmTuzKBm266KdBLAgAAsUTQiohhGwDcfffdeuutt5QlSxZ99dVXKlq0aKCXBQAAYoGgFRHFTunfeOONLmAtWbKkVq1apYwZMwZ6WQAA4AqoaUVEse1VZ8+erTx58rj5qu3bt9eZM2cCvSwAAHAFBK2IOLlz59acOXNcAPvxxx+7XbMAAEBwI2hFRKpUqZImTJjgrg8ZMkRTp04N9JIAAMBlELQiYrVr1+5clvXee+/V999/f9n716kj9enjXS9UyHbckt8MHChdf73/Xg8AgGBD0IqIZvNVmzdv7jYI6Nu3b6wft2aN1K2b/OaRR6QFC/zzWidPegGyjZ1dt+7fP580SSpXzuqDpVy5pJ49/bMuAEBkSxHoBQCBlCxZMlcaUKNGDf3xxx+xflz27PKr9Om9iz88+qiUJ4/03Xf//tmwYdIrr0j//a9UtapNY5B+/dU/6wIARDYyrYh4tsWrbfWaOXPmWB+Li8sDNm6UbBdXyz6WKiXNn+9lKmfPjt3z7d4ttW0r2RKyZpWaN5e2bYu5PKBTJ6lFC2nwYClnTilTJunZZ6XTp6V+/aQsWaR8+aT/L9uNtU8/lebNk4YO/ffPDh2SBgyQpkyR2reXbMRt6dLSrbfG7TUAAIgPglZAUuHChV1DVnycPesFkOnSSatXS2PHSv37x/7xx49Ldet6mdQlS6Rly7zrjRpJ//wT8+MWLpT27PEeYxlQC2ybNvUCX1tH9+7eZefO2K1j/36r7ZWsJ83ey8W++MJ7rxZglyzpBcVt2sT++QEASAiCVuD/VaxYMV7HwjKTW7Z4Gcjy5b2M66BBsX/8tGlWpiCNHy+VLesFhBMnSjt2SIsXx/w4y6aOHCldd53UubP31QJg6y0rXlx64gkpVSpp+fIrryEqysveWpBbqdKl72NlABa0WnbXsswzZkgHD0r1618+uAYAIDFQ0wok0KZNUv78XlOST5UqsX/82rXSL79IGTJEv93qRS0Yjomdmrdg18fKBMqUOf998uReqcFvv115DaNGSX/95QW6MbGA9dQpL1Bu0MC77d13vfe9aJHUsOGVXwcAgPgiaAUSyLKUVr8aXxYMWpL37bfj1vCVMmX0720Nl7rNnv9KrNRg1Sopderot1vWtUMHafJk25TBu81qdi9cX7ZsXlYYAICkRNAKJFCJEl7QZjWhlu30jcSKrQoVpPfek3LkkDJmDMyvw7KnL7xw/nurlbXMqa3LpgSYmjXPZ5atntVYeYANXShYMACLBgBEFGpagQSymk7rpO/YUVq/3qsh9TVixSYDa5lMy1baxIClS6WtW6Uvv5R695Z27fLPr6dAAa+0wHe59lrvdntfvgDVbrM12rpWrJB++MF7zxa0WyMZAABJiaAVEe/EiRNaunSp3nzzzXgdC6sdtdFWR49KlStLXbt6o6GMjcC6EuvUtwkAFji2bOk1Yllj1d9/By7zGhNrNrPMa5Mm0o03euUIn33277IEAAAS21VRUVaRB0SOo0ePauXKlVqyZIm7rF692u2IdcMNN+ibb75JlNewbKtNEbAGK8tWJpQ1SFkW1sZhAQAQiahpRdg7ePCgli9ffi5IXbt2rc6cORPtPjlz5lQDX0t8PMya5c1WtVFTFqjaKXSrAU1owGofKW3UlG3hesMNCXsuAABCGUErws7evXvd6X5fkPr999//6z6FChXSf/7zn3OXYsWK6aoEjAA4csTb/tQG7Vt9ar163nanxuaa2uVSatf2dqGKyeHDXre+lR3Y/NX4SsgaAAAIBpQHIKRZdcv27dvPBah2+fnnn/91vxIlSpwLUGvXrq0CVkDqJ9Zhb5dLSZtWyps3MtYAAEBCELQi5ILUTZs2RQtSd160j6hlTMuXLx8tSM1h86QAAEDIojwAQc1qT+30/oVB6u+//x7tPilSpFDlypXPBag1a9ZUpkyZArZmAACQ+AhaEVT++ecf1yjlC1CtgeqwFXZeIE2aNKpevfq5TGrVqlV19dVXB2zNAAAg6RG0IqCOHz/uRk75glQbRfW3DSi9QIYMGVSrVq1zQWrFihWV+uL9RgEAQFgjaIVfWdZ0xYoV54LUNWvW6NSpU9HukzVr1mid/Vafmtwm+AMAgIhF0IokZfWny5YtOxekrlu3TmfPno12n7x580YLUkuWLJmg8VP+ZAF4r169XINY//791apVq0AvCQCAsMT0ACSqXbt2nQtQbVbqhg0b/nUfm4l6YZBqM1NDJUi9lBdffFFPPvmkUqZMqcWLF6tGjRqBXhIAAGGHoBXxZtnFLVu2ROvs37p167/uV6ZMmWjjp/LkyRN2x6FNmzaaMWOGcuXK5RrJwu09AgAQaAStiDU7rW+Z0wuDVNt96kLJkiVThQoVzgWp1kBlNarh7ujRo26iwQ8//OC+Llq0iGYxAAASEUErYnT69GlXg3rh6f6DF22rlCpVKlWpUuVckGqnxq3bPxJZ1rlSpUr6888/1a1bN40ZMybQSwIAIGwQtOKcEydOuG5+C059M1Itg3ghm4dqgakvSLWA1eamwvPZZ5+pcePGrmTAglYLXgEAQMIRtEYwC0htLqovk2rzUk+ePBntPrazlNWh+oLUG264wTUcIWY0ZgEAkPgIWiPIoUOHoo2fsoYh2yb1Qjlz5ozW2W9NVFanitijMQsAgMRH0BrG9u3bd+5Uv12+//57F1BdqGDBgtGC1OLFi4f0+KlgQWMWAACJi6A1jGzfvj1aZ//mzZv/dZ8SJUpEGz9VoECBgKw1EtCYBQBA4iFoDVGWMd20aVO0IHXnzp3R7mMZU9sC9cLxU3b6H/5DYxbgX3XqSNdfL40YIRUqJPXp4138YeBAafZsad06/7weEGkIWkOE1Z7a6f0Lg1TbIvVCKVKkcCOXfEFqzZo1XSMVAovGLCAwQav9E3n11VK6dP55bRu2Yr2s/hhNba9Ttar03XfSt99679lnzRrp8celtWsteSFVriwNGRL9PkAoImgNUqdOndJPP/2kb7/9Vt98842bl3rkyJFo90mdOrXKli3rhvnbxa6nTZs2YGvGpdGYBQQmaA1nvXtLP/8sffpp9KDV/psoWFBq3twLXE+flp55Rlq61LbZlhj+gpAWBSDJHTlyJKpMmTLWBRdVvXr1qBMnTnDUgSRw441RUb17e9cLFoyKGj78/M9++ikqqmbNqKjUqaOiSpaMivriC+tMjYqaNSt2z71rV1RUmzZRUZkyRUVlyRIV1axZVNTWred//swzUVHly5//vmPHqKjmzaOiBg2KisqRIyrqmmuiogYOjIo6dSoq6pFHoqIyZ46Kyps3KurNN+P2Hj/5JCqqRImoqB9/9Nb/7bfnf7ZmjXfbjh3nb1u/3rvtl1/i9jpAsGGWEeAH6dOn1+zZs125hs3GffDBBznugB+dPSu1aOGVCqxeLY0dK/XvH/vHHz8u1a1rf5elJUukZcu8640aSf/8E/PjFi6U9uzxHjNsmFf32rSplDmzt47u3b3LRS0JMdq/X7r3Xmnq1EuXPVx3nZQtm/Tmm966/v7bu166tJeBBUIZQSvgJ0WLFtW7777rGuTGjh3rLgD8Y948m+ghTZkilS8v1aolDRoU+8dPmybZyOrx46WyZaWSJaWJE6UdO6TFi2N+XJYs0siRXjDZubP31QLgJ5+UiheXnnjCtsOWli+/8hosX9qpkxfkVqp06fvYLtq2nrfekqxazALrzz+XPvnE+h5i/36BYETQCvhRo0aNNOj//6fs2bOnVqxYwfEH/GDTJil/filXrvO3VakS+8dbU9Mvv3hBoQWCdrGA9MQJLxiOiWU4L9yfxQa4WNDrkzy517j1229XXsOoUdJff3mBbkwss2rBcc2a0qpVXjBsa2jc2PsZEMr43AX42eOPP+6a62bMmKFWrVq5ncny5MnD7wFIQpalTMi+KVZeULGi9Pbb//5Z9uwxP+7ixidbw6Vus+e/Eis1sEA0derot1vWtUMHafJk6Z13pG3bpJUrzwfLdpuVI8yZI91xx5VfBwhWBK2An1l5wMSJE7Vx40b98MMPat26tRYtWuSmQQBIGiVKeKfyrSbUN67aRkPFVoUK0nvvSTlySBkzBua3ZGUGL7xw/nurlW3Y0FuXjb8yVnpgweqFAbrv+9gExkAwSxbso0t8Q6FtSHRijjCxv8A2BBoIBBqzAP+qX9/qyqWOHaX1673T5r5GrNhkYC2TaQ1ONkrKxkdt3Sp9+aU3espGSfmDbWBYpsz5y7XXerfb+8qX7/z7PHRIeuAB6aefpB9/lO65x6tntUYyIJQFddB6IftE3K1b4j3f3r3SLbcoIA4elHr18gryrfvT/iGyZvLDh6Pfr1kz72dp0ki5c0t33eV9skZ4oDEL8B+rHbVEhW0AYMP2u3aVBgzwfmb/xl6J/VttEwDs3+SWLb1GLKsdtTrRQGVeY8ooz53rBebVq0u1a3v/b3z2mff/CBDKgnpzgXAdEv3DD96wZ+sCLVVK2r7d6wYtV06aMeP8/YYP9/7RsX9odu+WHnnEu53enfDCjllAYFi21aYIWIOVZSsTyhqkLAtr47AARHCm9eLygI0bvX9s7BOyBX7z58ftlP+F97Widft++nTvU6mNCbFP4ps3exleK3L3zeO7aOdUTZjgdWZaOaIFlz17Xvm17bTOBx9It97q/UN5003e6BX7dGy7l/g89JBUrZo3W69GDW93EyvCP3Uqdu8RodOYZXWttguaNWbtIZ0OJIlZs6QvvvD+zbf/M+zsnXXZJzRgtdSPTRBYsMD7/wBAhAetiTkkOiaW/bTTRd9849X/tGsnPfqo9Oqr3qdn+0fp6afP3//11726IfuH7/vvpQ8/lIoVi99rW2mAnWKKaY6elRRY16oFr2zDF56NWWXKlNG+fftcAHvSNhYHkKhsi9MePbxT6Hamy5IT1lFvBg8+P8rq4suVSsns329Lnti8VZu/Gl8JWQMQCVKE8pBoG6Dsm7lnmUorQE8IO/1unZjGiustaLVPzvZJ3HTpIk2adP7+1sXZt693Xx/7RzCuDhyQnn9euu++f//sscek0aO9jlDLun70UdyfH6HTmFWpUqVzO2aNGTMm0MsCgo5N3LAPePFx993e5VKsRKtNm0v/zM6+XU6mTFJifM5MyBqASJAsEodEx8RqSn18I1EuHAJtt/kGQNtXO4t7880Je00bFN2kifcp3TK9F+vXT/r2Wy9Qt0YC+wc3eKuQkRA0ZgGXZ7ON77U9TJOAbRRgZ8oudcmb1z+/mWBYAxDMkkXikOiYXHja3ff8F9/mm3OXGJ967VSV1cnaqR+rtbrUaX8bsWJjTSyLbNsI2lZ8VteK8MSOWcC/Wb/w4MGDdfvtt1M6A0SwZKE+JNonLkOiE4Nt5WfNYVY+EN8Ma4MGXg2U1cLGZuSKL8NKuWN4ozELOM/qu++55x71///Ghfbt23N4gAiVItSHRA8Z4mUs4zIkOrEMHOjVINkOKVYkb+uwESo2g/Vy7H4WsFqd6ltveQGsXXzbAVoZwFdfeRebkGDb7/36q9cEZu/bxmAhfLFjFuD5448/1LJlSy1dulTJkyfXqFGjdP/993N4gAiVLBKHRCcWC5ptDNf//ueNOWnaVPr55ys/bu1ab+qBTRywWiUbleW77Nx5vvxg5kyvZtY2IbAh1tZ7YDuwsNtn+GPHLEQ62+a4WrVqLmDNmDGjPv74YwJWIMIF9eYCSTUk2k6vW3Br8/rq1fPXCoG4++yzz9S4cWNX02fTBLol5rZwQJBasGCBG/32559/qlChQvroo49UmgGoQMQLyUxrQoZE22n4d9+VkiXzamOBYEZjFiLNuHHj3J97C1hr1Kihr776ioAVQGgHrfEdEt28uTf79OWXpXz5kmZttglATK9PsgBxRWMWIsGZM2f0yCOPuLMJp0+fdg1XlnHNboX+ABBO5QEX7x5ll0uxWtGknndnAfWFkw0uZGOtbFtWIC6OHj2q6tWru8Hq9nXRokVKTXEzwujPd4cOHfShjVKR9Oyzz+qpp55yTYkAENZBKxCOtmzZ4nbMstOmlo1ixyyEg127dunWW2/VunXr3AexSZMm6Y477gj0sgAEoZAtDwAiDTtmIdysXbtWVapUcQFrjhw5tHjxYgJWADEiaAVCCI1ZCBczZ85U7dq1tXfvXtdotXr1ajfiCgBiQnkAEGKsoqdNmzZuH/ZcuXK5bFWePHkCvSwg1n9+hwwZ4hoMfR/E3nvvPTeLFQAuh6AVCEE0ZiEU/fPPP+revbsmTpzovu/Zs6eGDx+uFClCcnNGAH5GeQAQgtgxC6HmwIEDatCggQtYkyVL5rZktQsBK4DYItMKhDB2zEIo2Lx5s5o2baqff/5ZGTJkcOUAt9xyS6CXBSDEkGkFQhiNWQh2NlPYGqwsYC1YsKBWrFhBwAogXsi0AiGOxiwEqwkTJui+++5zO1xVrVpVc+bMUc6cOQO9LAAhikwrEOJs1yCrEyxTpoz27dun1q1b6+TJk4FeFiLY2bNn9dhjj6lLly4uYLXNAizjSsAKICEIWoEwQGMWgsWxY8fcBycba2WefvppvfPOO0pre2gDQAJQHgCEERqzEEh79uxxW7J+8803SpUqlSsP6NChA78UAImCoBUIMy+++KKefPJJpUyZ0m2LWaNGjUAvCRHAAtVmzZpp9+7dypYtm2bPnq2aNWsGelkAwghBKxBmaMyCv1mDVfv27XX8+HGVKlVKc+fOVZEiRfhFAEhU1LQCYYbGLPjzA9LQoUN12223uYDVNg+wkVYErACSAkErEIZozEJSO3XqlLp166Z+/fq54PX+++/Xxx9/rGuuuYaDDyBJELQCYapo0aJ69913XeZ17Nix7gIkhkOHDrmNLcaPH++2ZB0xYoRee+01tmQFkKSoaQXCHI1ZSEy//PKLmjRp4rZmtYz+tGnT3PcAkNQIWoEwR2MWEsuSJUtc/erBgweVP39+ffTRRypXrhwHGIBfUB4AhDkas5AYJk+erHr16rmAtUqVKvrqq68IWAH4FUErEAFozEJCtmS1ub+dOnVyzVe33367m/+bK1cuDioAvyJoBSIEjVmIKxtj1aZNG1cXbQYMGOBqWNmSFUAgUNMKRBgasxAbe/fudTtcff31125LVpsUcNddd3HwAAQMQSsQYWjMwpV89913atq0qXbt2qWsWbNq1qxZql27NgcOQEARtAIR6OjRo6pevbp++OEH93XRokVKnTp1oJeFIGBbsLZr107Hjh1TiRIl3IQAKy0BgECjphWIQDRm4VIZ+OHDh6t58+YuYL355pvdlqwErACCBUErEKFozIKPTQXo3r27Hn74YRe82vasn376qTJnzsxBAhA0KA8AItxLL72kJ554QilTpnSjjGrUqBHoJcGP/vzzTzfGav78+W6m79ChQ/XQQw+56wAQTAhagQhHY1bk2rJli2u42rhxo66++mq98847bmIAAAQjglYANGZFoGXLlqlFixY6cOCA8uXL5xqwrr/++kAvCwBiRE0rABqzIszUqVNdo5UFrJUqVXJbshKwAgh2BK0AHBqzImNLVtvV6u6779Y///yjli1b6ssvv1Tu3LkDvTQAuCKCVgDnNGrUSIMHD3bXe/bs6UYeITz8/fffbv7qoEGD3PePP/643n//faVLly7QSwOAWKGmFUA0NGaFn3379rn5q1YGYFMixowZo3vuuSfQywKAOCFoBfAv7JgVPtavX69bb71VO3bsUJYsWTRz5kzdeOONgV4WAMQZ5QEA/oUds8LDJ598opo1a7qA9dprr9WqVasIWAGELIJWAJdEY1Zol3iMHDnSZVgta163bl2tXLlSxYsXD/TSACDeCFoBxIjGrNBz+vRp10TXu3dvNy2gS5cu+uyzz1xpAACEMmpaAVwWjVmh4/Dhw2rTpo3mzZvntmEdMmSI+vbty5asAMICQSuAK6IxK/ht3brVbcm6YcMGN8bq7bffdjteAUC4oDwAwBXRmBXcbJ5u1apVXcCaJ08eLV26lIAVQNghaAUQKzRmBad33nlHN910k37//XfdcMMNbhZrhQoVAr0sAEh0BK0AYo3GrOCqNR44cKA6dOigkydPusyqZVjz5s0b6KUBQJKgphVAnNCYFXgnTpxwO1pNmzbNff/oo4/qxRdfVLJk5CEAhC+CVgBxRmNW4Ozfv99lVW2jgBQpUuiNN95wY60AINzxsRxAnNGYFRg//PCDa7iygDVz5sxutBUBK4BIQdAKIF5ozPIv2yCgRo0a2r59u4oVK+YCV9vpCgAiBUErgHijMcs/Ro8erSZNmujIkSO68cYbXcB67bXX+unVASA4UNMKIEFozEraLVkfeughF7SaTp06acyYMUqVKlUSvioABCeCVgAJRmNW4vvrr790xx136NNPP3Xf23SAxx57jC1ZAUQsglYAiWLLli2qVKmS/vzzT3Xr1s1lBBE/VrdqW7Ja41XatGn11ltvqWXLlhxOABGNmlYAiYLGrMRh9apVqlRxAWvu3Lm1ZMkSAlYAIGgFkJhozEoY2yygTp06+u2333T99de7LVktew0AoDwAQCKjMSt+x+z555/XM888476/9dZb9c4777h5uAAADzWtABIdjVlx25K1a9euevvtt933ffv21csvv6zkyZPzJxMALkBNK4BEx45ZsfP777+rXr16LmC1LVnHjh2roUOHErACwCWQaQWQpLs4NW7c2J3+tmkCNlUAng0bNrgJAVu3btU111yjDz74QDfffDOHBwBiQKYVQJKhMevSvvjiC1WvXt0FrEWKFHETAwhYAeDyyLQCSFI0ZkX3xhtvqGfPnjpz5oxq1aqlWbNmKVu2bPwpBIArINMKIEldddVVmjhxosqUKaN9+/apdevWOnnyZMQddQtSbUvW+++/312/++67NX/+fAJWAIglglYASS7SG7OOHDmi5s2ba8SIEe77QYMGadKkSUqdOnWglwYAIYPyAAB+E4mNWTt27HBzV9evX680adJoypQpuv322wO9LAAIOQStAPzqpZde0hNPPKGUKVNq8eLFqlGjRtj+BmxHq2bNmmn//v3KmTOnPvzwQ7dFKwAg7ghaAfhVpDRm2fu766673OYB5cqV09y5c1WgQIFALwsAQhY1rQD8KtwbsywoHzx4sCsBsIC1SZMmWrZsGQErACQQQSsAvwvXxiwLvjt16qT+/fu77/v06aM5c+YoQ4YMgV4aAIQ8ygMABEw4NWb98ccfatmypZYuXeq2YR09erS6d+8e6GUBQNggaAUQUOHQmLVx40a3JeuWLVuUMWNGvf/++2rQoEGglwUAYYWgFUBAhXpj1oIFC1xd7p9//qnChQvro48+UqlSpQK9LAAIO9S0AgioUG7MGjt2rBo2bOgC1po1a2r16tUErACQRAhaAQRcqDVm2Tasffv21X333eeud+jQwW3Jmj179kAvDQDCFkErgKBQtGhRvfvuuy7zahlMuwSjo0ePuoarYcOGue+fe+45TZ061e12BQBIOtS0AggqwdyYtWvXLrcl67p165Q6dWpNnjxZbdu2DfSyACAiELQCCCrB2pj19ddfuy1Z9+7dqxw5crj5q9WqVQv0sgAgYhC0AgjKU/DVq1fXDz/84L4uWrTIZTYDZebMmbrzzjv1999/u4Yx25K1UKFCAVsPAEQiglYAQclmnlaq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9ddfAVsjAIQaglYAAWMNTP/5z3/0/vvvK2XKlHrzzTf13//+V8mTJ4/3c/pqWpOiESuuUqRI4bKrX3zxhTZs2KCePXu66QcbN25Ur169lDdvXnfbTz/9FOilAkDQI2gFEBBff/212+HKaj+zZs3qTpt37tw5wc8bDJnWSylZsqRGjRrlAnXLspYoUUJHjx7Va6+95jKvlo21DPPp06cDvVQACEoErQD8zuadWoZ1z549LmCzBib7PjEEa9DqkzFjRj3wwAMu82qBumVibZTXggULdNttt6lo0aJuvNfvv/8e6KUCQFAhaAXgN9aAZLWrbdu2daOgGjdurJUrV7ompcQS7EHrhTNfb775Zlfz+uuvv7oaWMs479ixQ0888YSbOmCTCNasWRPopQJAUCBoBeAXFqS2b9/eTQkwDz30kD788EOXeUxMSbm5QFKxbWlt2oBtqmDTBypWrOjex5QpU1wJhc2AtVmwvvcGAJGIoBVAktu7d6+bv2pzWK05ady4cW471IQ0XAV6c4GkkCZNmnPZVZv7avNfLfi28om7777bZV9tF67E3KIWAEIFQSuAJPXNN9+4+aUWiGXJksV10nft2jXJXi9UygOuVDrgy65auYDtvGWTBqzOdfDgwW5+batWrbRo0SJmvgKIGAStAJLMBx98oFq1armOeeuWt4xhnTp1kvSIh0PQeqGcOXO67Oq2bds0Y8YMd/xs5uvMmTN10003uZ3DXn/9dTeJAADCGUErgCRpuBo0aJBat27talkbNmzoTndbZ3xSC8Wa1tiwsgpfdvX7779X9+7ddfXVV7spBD169HCZ2N69e2vTpk2BXioAJAmCVgCJyrZhtVrMAQMGuO8tkProo490zTXX+OVIh3JNa2z5squWwX711VdVvHhxt7vWyJEjXUbbPiTMnTtXZ86cCfRSASDRELQCSDT79u1zp6/feecdlxl84403NGLECHfdX8KtPOBy7IPAgw8+6HbY+vzzz3Xrrbe6eth58+apWbNmKlasmNth7MCBA4FeKgAkGEErgESxbt06N55p9erVypw5swui7rvvPr8f3UgKWn1sc4IGDRq4EWJbtmxRv3793O/A6mAfffRR5cuXT126dHFNcQAQqghaASSYbT9as2ZNN4rpuuuuc4GrNQkFQiQGrRcqXLiwhgwZ4ma+vvnmm7r++utdycaECRPc/Ff7PVkm3FdGAQChgqAVQIIarmzLUdt+9Pjx46pfv75ruLIay0DxBWPh1ogVV+nSpVPnzp1ddnX58uVq166dK9NYsWKFOnTooAIFCujpp592dbEAEAquirL/dQAgjix7161bNzdL1PTs2VPDhw/3a/3qpeTKlUv79+/Xd999p3LlygV0LcG4yYNt7GC1xnbd2AYPLVu2dL+/2rVru5pYAAhGBK0A4syCQsuurly50gU91rVuY5eCgdVy/vnnn645yUoV8G+nTp3SrFmzNHr0aC1duvTc7WXLlnXBq2VibZwWAAQTglYAcbJ+/XrXpW47NWXKlEnvv/++6tWrF1SnxW027NatW93OUbjy7/O1115zGXM7br6pBFZaYB9EbAIBAAQDglYAsWbd6e3bt9exY8dc3arNAg22bKZlfm3HKKvVzJMnT6CXEzIOHTqkSZMmuQDWJhD43HLLLS772qhRIzelAAAChaAVwBVZ6bvN+3z88cfd9ZtvvlnTp09XlixZguro2TB9X03tH3/8oaxZswZ6SSHHAn4bV2alA5988sm52203M8u83nPPPa4EAwD8jaAVwBVHSNm81cmTJ7vv77//frcLU8qUKYPuyNkEA18t5pEjR5Q+ffpALymk/fLLL27nLRuXZXXCJm3atG7HswceeEDly5cP9BIBRBCCVgAx+v33313DlY1MslPDFqzaqeJgPsXty/7a6KtgDKxDkZWD2GzXUaNG6fvvvz93e61atdyfB5s+wLEGkNQIWgFc0g8//OAarmxXJWvMsXIA23Up2LeRzZ0797nT3IxvSlxWGrJs2TJXOvDBBx+4cgxjx9yy8TYCzXf8ASCxEbQC+JePPvrIDaM/evSoq2W070uUKBH0R8omGhQsWNDthmVzZJF0rNFt7NixGjNmjBuBZqyeuHXr1i77WqNGDT40AEhUBK0AomXShg0b5vaut+t16tTRjBkzQqah6eeff9a1116rjBkz6vDhw4FeTkSwMgzLulr21Xbb8rHtYy14tQ8/NoYMABKK+SUAzgUfXbt21SOPPOIC1nvvvVfz5s0LmYDV1zRmLNMK/7Dtci0wtbrntWvXuvmuadKk0bp169yfp3z58rkPQb/++iu/EgAJQqYVgBsP1apVKy1ZssQ1XFm29cEHHwy507sWNFWqVMkFSjt37gz0ciLWgQMH3MSB//3vf64m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AICwQnkA4CeWUb3ppptcwFqhQgWtWbOGgDUR+UoDDEErAIQfglbADw1Xjz76qO655x7XcNW6dWs34iovc2SSJGhNliyZUqTgJBJCx5EjRzR69GjVqFHDfaC1y4MPPqiff/450EsDggpzWoEk/s+oQ4cOmjt3rvveNguwpisLrJC4tm3bpsKFC7s64b9tY3YgxOzdu9ftgjdu3Dj3Ydd2wmvfvr27rUiRIoFeHhBw/M8JJJHt27erZs2aLmC109Vvv/22+8+HgDVpa1opDUCosjr3119/XT/99JNrzrTGQvt3o0SJEurVq5f2798f6CUCAUXQCiSBFStWqEqVKvr+++/dLk02f9UyJkg6jLtCuChevLgbgbd27Vo1bNjQlRVZ+UDRokX19NNPu5F5QCQiaAUS2dSpU1W3bl23nej111/vGq6qVq3KcU5iBK0IN1bb+tlnn2nhwoXuQ/CxY8f0/PPPu1KB4cOH68SJE4FeIuBXBK1AIjl79qyeeOIJ3X333e5UtY22shFX+fPn5xj7AUErwpV9CF61apU++OADXXfddTpw4IAefvhhd92mklj9KxAJCFqBRHD06FG1atVKL730kvv+ySef1IwZM3T11VdzfP1c08rGAghH1pTVsmVL/fDDDxo/frzy5cunHTt2uKkk5cqVczOffZtrAOGKoBVIIPuPo1atWpo9e7YLmKw8YNCgQTRc+RmZVkQCG+fWpUsXbd68Wf/973+VOXNmbdiwQS1atHAjs6x+HghXBK1AAqxcudLVmn333XfKkSOHFi9erDvvvJNjGgAErYgkadOm1SOPPKJff/3VndlJly6dKyGoU6eOGjdurHXr1gV6iUCiI2gF4slG0VitmY2hsdNzX331lapXr87xDBCCVkSiTJkyuTM7v/zyi3r06OEysZ9++qluuOEGNyN6y5YtgV4ikGgIWoF4NFz179/fZVQtUGrWrJmWL1+uggULciyDIGilphWROuP1tddeczNe27Vr525755133IzXnj17at++fYFeIpBgBK1AHNjImdtvv12DBw923z/22GOaNWuW0qdPz3EMMDYXAKRixYq5YPWbb75Ro0aNdPr0aRfM2oxX25Hv8OHDHCaELIJWIJZ27typ2rVra+bMmS6bZ6NmbFoAO1wFB8oDgPOsPMDKBBYtWuTmRB8/flwvvPCCm/H6yiuvMOMV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", + "text/plain": [ + "
" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ "mapper = KartografAtomMapper()\n", - "\n", - "# include the missing ligand(s) in the pool, since they aren't in `completed`\n", - "ligands = list(completed.nodes) + list(missing)\n", - "repaired_network_by_name = repair_by_names(completed, ligands, mapper, bridge_names)\n", - "print(\"connected:\", repaired_network_by_name.is_connected())" + "repaired_by_name, new_edges_by_name = repair_network_by_names(\n", + " damaged_network,\n", + " names=[\n", + " (\"lig_ejm_31\", \"lig_ejm_46\"),\n", + " (\"lig_ejm_31\", \"lig_ejm_48\"),\n", + " ],\n", + " mapper=mapper,\n", + ")\n", + "plot_atommapping_network(repaired_by_name)" ] }, { @@ -455,82 +532,77 @@ "id": "287fc9e5", "metadata": {}, "source": [ - "## 7. Repair — by lomap score\n", + "### Repair automatically by score\n", "\n", - "Let the scorer choose the bridges: the concatenator treats each fragment as a\n", - "node and joins them with a minimum spanning tree, keeping the single best-scoring\n", - "edge per join.\n", + "Instead of choosing the bridges manually, we can let a `MstConcatenator` score\n", + "candidate mappings between the connected fragments and select the bridges needed\n", + "to reconnect them.\n", "\n", - "The transformations that already failed are passed as `avoid_edges`, so the\n", - "concatenator never proposes them again." + "The original planned edges are passed as `exclude_edges`. This prevents the\n", + "repair from proposing a ligand pair that was already attempted in the original\n", + "campaign, including the transformations that failed." ] }, { "cell_type": "code", - "execution_count": 10, - "id": "d1bf455e-d793-4bd5-a7bb-2da6fc2ac538", + "execution_count": 8, + "id": "a3ee1ea3-661e-4861-a5b9-6fbc49535204", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "edges added: [('lig_ejm_46', 'lig_ejm_47'), ('lig_ejm_46', 'lig_ejm_48')]\n", - "connected: True\n" - ] - } - ], + "outputs": [], "source": [ - "def repair_by_score(fragments, mapper, scorer, avoid_edges=()):\n", - " \"\"\"Reconnect broken fragments with bridging edges chosen by score.\n", + "def repair_network_by_score(\n", + " ligand_network: LigandNetwork,\n", + " mapper: AtomMapper,\n", + " scorer: Callable[[AtomMapping], float],\n", + " exclude_edges: Iterable[AtomMapping] | None = None,\n", + ") -> tuple[LigandNetwork, list[AtomMapping]]:\n", + " \"\"\"Repair a disconnected ligand network using scored mappings.\n", + "\n", + " The connected subnetworks of ``ligand_network`` are reconnected using a\n", + " minimum spanning tree. Candidate mappings between subnetworks are generated\n", + " with ``mapper`` and ranked using ``scorer``.\n", "\n", " Parameters\n", " ----------\n", - " fragments : list[LigandNetwork]\n", - " The connected subnetworks to join back together, including single-node\n", - " networks for any missing ligands.\n", + " ligand_network : LigandNetwork\n", + " The ligand network to repair.\n", " mapper : AtomMapper\n", - " Builds the atom mapping for each candidate edge.\n", - " scorer : Callable\n", - " Scores a mapping by expected difficulty (e.g. a lomap scorer).\n", - " avoid_edges : Iterable[LigandAtomMapping], optional\n", - " Edges that should not be considered when attempting to fix a network. Empty by default.\n", + " Atom mapper used to propose mappings between ligands in different\n", + " connected subnetworks.\n", + " scorer : Callable[[AtomMapping], float]\n", + " Callable used to score proposed mappings.\n", + " exclude_edges : Iterable[AtomMapping] | None, optional\n", + " Mappings identifying ligand pairs that should not be used when\n", + " reconnecting the network, by default None.\n", "\n", " Returns\n", " -------\n", - " LigandNetwork\n", - " A single connected network: the fragments' edges plus the chosen bridges.\n", - "\n", - " Raises\n", - " ------\n", - " RuntimeError\n", - " If the fragments cannot be joined into one connected network, e.g. all\n", - " candidate bridges between some fragments were excluded via ``avoid_edges``.\n", + " repaired_network : LigandNetwork\n", + " The repaired, connected ligand network.\n", + " new_edges : list[AtomMapping]\n", + " The new mappings added to reconnect the ligand network.\n", " \"\"\"\n", - " concatenator = MstConcatenator(mappers=mapper, scorer=scorer)\n", - " return concatenator.concatenate_networks(fragments, avoid_edges=avoid_edges)\n", + " subnetworks = connected_subnetworks(ligand_network)\n", "\n", - "def repair_edges(repaired, completed):\n", - " \"\"\"The newly added bridges, i.e. what still needs simulating.\"\"\"\n", - " return list(set(repaired.edges) - set(completed.edges))\n", + " concatenator = MstConcatenator(\n", + " mappers=mapper,\n", + " scorer=scorer,\n", + " )\n", "\n", - "mapper = KartografAtomMapper()\n", - "scorer = lomap_scorers.default_lomap_score\n", + " repaired_network = concatenator.concatenate_networks(\n", + " subnetworks,\n", + " exclude_edges=exclude_edges,\n", + " )\n", "\n", - "# The planned network records every attempted transformation. Exclude them all\n", - "# so the repair never re-proposes a failed edge. \n", - "avoid_edges = [e for e in planned.edges]\n", + " new_edges = set(repaired_network.edges) - set(ligand_network.edges)\n", "\n", - "repaired_by_score = repair_by_score(fragments, mapper, scorer, avoid_edges=avoid_edges)\n", - "new_edges = repair_edges(repaired_by_score, completed)\n", - "print(\"edges added:\", [(e.componentA.name, e.componentB.name) for e in new_edges])\n", - "print(\"connected:\", repaired_by_score.is_connected())" + " return repaired_network, list(new_edges)" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "4abcaf8c-59e5-4a1b-a211-c7c0e5500950", + "execution_count": 9, + "id": "a76d5b25-e8c7-46a3-be5c-dfea6eb6e196", "metadata": {}, "outputs": [ { @@ -540,111 +612,178 @@ "
" ] }, - "execution_count": 12, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "mapper = KartografAtomMapper()\n", + "scorer = lomap_scorers.default_lomap_score\n", + "\n", + "repaired_by_score, new_edges_by_score = repair_network_by_score(\n", + " damaged_network,\n", + " mapper=mapper,\n", + " scorer=scorer,\n", + " exclude_edges=planned_network.edges,\n", + ")\n", "plot_atommapping_network(repaired_by_score)" ] }, + { + "cell_type": "markdown", + "id": "b7d78c66-03d9-4ff7-9923-fe2b063df8d9", + "metadata": {}, + "source": [ + "At this stage the repaired ligand network is connected again, and `new_edges_by_score`\n", + "contains exactly the ligand mappings that still need to be simulated.\n", + "\n", + "Keeping this difference explicit is useful while exploring the API: a future\n", + "network-repair interface may want to expose both the repaired network and the\n", + "newly proposed edges, but this cookbook does not require a new result type." + ] + }, { "cell_type": "markdown", "id": "7c2fa5f7", "metadata": {}, "source": [ - "## 8. Rebuild the alchemical transformations\n", + "# 3. Build replacement transformations\n", "\n", - "Turn the new repair edges into runnable transformations — a solvent and a\n", - "complex leg each — and write them out. Protein, solvent and cofactors come from\n", - "the reference complex system, and the **protocol (with all its settings) is the\n", - "one recovered from the results**, so the repair edges match the original run.\n", + "The network repair produced new `LigandAtomMapping` edges. To continue the RBFE\n", + "campaign, these mappings must be turned into runnable solvent and complex\n", + "`Transformation`s.\n", "\n", - "The only exception is a charge-changing edge: the completed run may contain no\n", - "charge-changing example to copy, so we take the recovered settings and add the\n", - "explicit charge correction on top." + "We reuse the protein, solvent, cofactors, and protocol settings recovered from\n", + "the successful campaign results in Part 1. For a charge-changing mapping we add\n", + "the explicit charge-correction settings used by this example." ] }, { "cell_type": "code", - "execution_count": 13, - "id": "fbdc9724", + "execution_count": 10, + "id": "69943267-eebf-4814-932c-c35014ec24cd", "metadata": {}, "outputs": [], "source": [ - "import copy\n", - "\n", - "\n", "def _formal_charge_difference(mapping):\n", - " a = Chem.rdmolops.GetFormalCharge(mapping.componentA.to_rdkit())\n", - " b = Chem.rdmolops.GetFormalCharge(mapping.componentB.to_rdkit())\n", - " return a - b\n", + " charge_a = Chem.rdmolops.GetFormalCharge(mapping.componentA.to_rdkit())\n", + " charge_b = Chem.rdmolops.GetFormalCharge(mapping.componentB.to_rdkit())\n", + " return charge_a - charge_b\n", "\n", "\n", "def _protocol_for(mapping, reference_protocol):\n", - " \"\"\"Reuse the campaign's protocol; add charge correction for charge changes.\"\"\"\n", + " \"\"\"Reuse campaign settings and add charge correction when required.\"\"\"\n", " if abs(_formal_charge_difference(mapping)) < 1e-3:\n", " return reference_protocol\n", + "\n", " from openff.units import unit\n", + "\n", " settings = copy.deepcopy(reference_protocol.settings)\n", " settings.alchemical_settings.explicit_charge_correction = True\n", " settings.simulation_settings.production_length = 20 * unit.nanosecond\n", " settings.simulation_settings.n_replicas = 22\n", " settings.lambda_settings.lambda_windows = 22\n", + "\n", " return RelativeHybridTopologyProtocol(settings=settings)\n", "\n", "\n", "def _components_from_reference(reference_complex_system):\n", - " protein = next(c for c in reference_complex_system.components.values()\n", - " if isinstance(c, ProteinComponent))\n", - " solvent = next((c for c in reference_complex_system.components.values()\n", - " if isinstance(c, SolventComponent)), SolventComponent())\n", - " cofactors = {name: comp\n", - " for name, comp in reference_complex_system.components.items()\n", - " if name.startswith(\"cofactor\")}\n", + " protein = next(\n", + " component\n", + " for component in reference_complex_system.components.values()\n", + " if isinstance(component, ProteinComponent)\n", + " )\n", + "\n", + " solvent = next(\n", + " (\n", + " component\n", + " for component in reference_complex_system.components.values()\n", + " if isinstance(component, SolventComponent)\n", + " ),\n", + " SolventComponent(),\n", + " )\n", + "\n", + " cofactors = {\n", + " name: component\n", + " for name, component in reference_complex_system.components.items()\n", + " if name.startswith(\"cofactor\")\n", + " }\n", + "\n", " return protein, solvent, cofactors\n", "\n", "\n", - "def build_alchemical_network(repair_network, reference_complex_system, reference_protocol):\n", - " protein, solvent, cofactors = _components_from_reference(reference_complex_system)\n", + "def build_alchemical_network(\n", + " repair_edges,\n", + " reference_complex_system,\n", + " reference_protocol,\n", + "):\n", + " \"\"\"Create solvent and complex transformations for repair mappings.\"\"\"\n", + " protein, solvent, cofactors = _components_from_reference(\n", + " reference_complex_system\n", + " )\n", + "\n", " transformations = []\n", - " for mapping in repair_network.edges:\n", + "\n", + " for mapping in repair_edges:\n", " protocol = _protocol_for(mapping, reference_protocol)\n", + "\n", " if protocol is not reference_protocol:\n", " warnings.warn(\n", " f\"charge-changing edge {mapping.componentA.name} -> \"\n", " f\"{mapping.componentB.name}; added explicit charge correction\"\n", " )\n", + "\n", " for leg in (\"solvent\", \"complex\"):\n", - " sysA = {\"ligand\": mapping.componentA, \"solvent\": solvent}\n", - " sysB = {\"ligand\": mapping.componentB, \"solvent\": solvent}\n", + " state_a_components = {\n", + " \"ligand\": mapping.componentA,\n", + " \"solvent\": solvent,\n", + " }\n", + " state_b_components = {\n", + " \"ligand\": mapping.componentB,\n", + " \"solvent\": solvent,\n", + " }\n", + "\n", " if leg == \"complex\":\n", - " sysA[\"protein\"] = sysB[\"protein\"] = protein\n", - " sysA.update(cofactors)\n", - " sysB.update(cofactors)\n", - " transformations.append(Transformation(\n", - " stateA=ChemicalSystem(sysA),\n", - " stateB=ChemicalSystem(sysB),\n", - " mapping=mapping,\n", - " protocol=protocol,\n", - " name=f\"{leg}_{mapping.componentA.name}_{mapping.componentB.name}\",\n", - " ))\n", + " state_a_components[\"protein\"] = protein\n", + " state_b_components[\"protein\"] = protein\n", + " state_a_components.update(cofactors)\n", + " state_b_components.update(cofactors)\n", + "\n", + " transformations.append(\n", + " Transformation(\n", + " stateA=ChemicalSystem(state_a_components),\n", + " stateB=ChemicalSystem(state_b_components),\n", + " mapping=mapping,\n", + " protocol=protocol,\n", + " name=(\n", + " f\"{leg}_\"\n", + " f\"{mapping.componentA.name}_\"\n", + " f\"{mapping.componentB.name}\"\n", + " ),\n", + " )\n", + " )\n", + "\n", " return AlchemicalNetwork(transformations)\n", "\n", "\n", "def save_transformations(network, out_dir):\n", " out_dir = pathlib.Path(out_dir)\n", - " (out_dir / \"transformations\").mkdir(parents=True, exist_ok=True)\n", - " with open(out_dir / \"alchemical_network.json\", \"w\") as f:\n", - " json.dump(network.to_dict(), f, cls=JSON_HANDLER.encoder)\n", - " for transform in network.edges:\n", - " transform.to_json(out_dir / \"transformations\" / f\"{transform.name}.json\")" + " transformations_dir = out_dir / \"transformations\"\n", + " transformations_dir.mkdir(parents=True, exist_ok=True)\n", + "\n", + " with open(out_dir / \"alchemical_network.json\", \"w\") as file:\n", + " json.dump(network.to_dict(), file, cls=JSON_HANDLER.encoder)\n", + "\n", + " for transformation in network.edges:\n", + " transformation.to_json(\n", + " transformations_dir / f\"{transformation.name}.json\"\n", + " )" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 11, "id": "42ac44ab", "metadata": {}, "outputs": [ @@ -657,15 +796,37 @@ } ], "source": [ - "# use the repair produced by the score-based strategy\n", - "repair_network = LigandNetwork(edges=new_edges)\n", - "\n", "alchemical_network = build_alchemical_network(\n", - " repair_network, reference_complex_system, reference_protocol\n", + " new_edges_by_score,\n", + " reference_complex_system,\n", + " reference_protocol,\n", + ")\n", + "\n", + "save_transformations(\n", + " alchemical_network,\n", + " \"repair_transformations\",\n", ")\n", - "save_transformations(alchemical_network, \"repair_transformations\")\n", + "\n", "print(\"wrote\", len(alchemical_network.edges), \"transformations\")" ] + }, + { + "cell_type": "markdown", + "id": "667bfbfe-f5e4-4c2a-83dc-b528ad725f5e", + "metadata": {}, + "source": [ + "## Summary\n", + "\n", + "The repair workflow is deliberately split into three layers:\n", + "\n", + "1. **Campaign results → failed planned edges**\n", + "2. **Damaged ligand network → new repair edges**\n", + "3. **New repair edges → runnable transformations**\n", + "\n", + "For now these steps remain explicit. That makes the cookbook useful both to users\n", + "who need to repair a campaign today and as a concrete example for deciding which\n", + "parts should eventually be wrapped by higher-level OpenFE APIs." + ] } ], "metadata": {