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
new file mode 100644
index 0000000..7256849
--- /dev/null
+++ b/cookbook/repairing_broken_networks.ipynb
@@ -0,0 +1,853 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "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.\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 cookbook follows the repair workflow end to end:\n",
+ "\n",
+ "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."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ef334d57",
+ "metadata": {},
+ "source": [
+ "## Fetch the data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "b5d4a134",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Fetching /Users/hannahbaumann/.local/share/mamba/envs/openfe_env/lib/python3.12/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": [
+ "## Imports"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "8d681408",
+ "metadata": {},
+ "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 copy\n",
+ "import json\n",
+ "import pathlib\n",
+ "import warnings\n",
+ "from collections.abc import Callable, Iterable\n",
+ "\n",
+ "from rdkit import Chem\n",
+ "from gufe import AtomMapper, AtomMapping\n",
+ "from openfe import (\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_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."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "89e33757",
+ "metadata": {},
+ "source": [
+ "### Load the planned network\n",
+ "\n",
+ "This is the connected network the campaign set out to run."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "8a702d3c",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "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/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": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "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",
+ "plot_atommapping_network(planned_network)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "bdf56bda",
+ "metadata": {},
+ "source": [
+ "### 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",
+ "- `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",
+ "A transformation is considered successful only when both its complex and solvent\n",
+ "legs have usable results.\n",
+ "\n",
+ "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": "647092f0-572a-413b-946c-5e45d2cde02b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def _load_result_json(path):\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",
+ "\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_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",
+ " state_a = ChemicalSystem.from_dict(inputs[\"stateA\"])\n",
+ " mapping = LigandAtomMapping.from_dict(inputs[\"ligandmapping\"])\n",
+ "\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",
+ " result = _load_result_json(path)\n",
+ " if result is None:\n",
+ " continue\n",
+ "\n",
+ " if reference_protocol is None:\n",
+ " settings = _units(result)[0][\"inputs\"].get(\"settings\")\n",
+ " reference_protocol = RelativeHybridTopologyProtocol(settings=settings)\n",
+ "\n",
+ " parsed = _extract_result_edge(result)\n",
+ " if parsed is None:\n",
+ " continue\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 = 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",
+ " return successful_edges, reference_complex_system, reference_protocol"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "be375fe0-99b4-49c9-830a-6bdcd77a6b75",
+ "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_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"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "successful planned edges: 7\n",
+ "recovered protocol: True\n"
+ ]
+ }
+ ],
+ "source": [
+ "RESULTS_DIR = pathlib.Path(\"results\")\n",
+ "\n",
+ "result_files = sorted(\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 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",
+ " 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",
+ "\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": "d43eca54-15c4-4cf3-96e7-5f244412fbaf",
+ "metadata": {},
+ "source": [
+ "### Remove the failed edges from the plan\n",
+ "\n",
+ "We compare the successful result mappings with the planned mappings to identify\n",
+ "the failed transformations. \n",
+ "\n",
+ "`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": 5,
+ "id": "adf03470-6ea4-4f0a-8607-b8166746d23e",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "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"
+ ]
+ },
+ {
+ "data": {
+ "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": "execute_result"
+ }
+ ],
+ "source": [
+ "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",
+ "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": "markdown",
+ "id": "6ad134e2-8617-46d0-8be2-e9457279cc75",
+ "metadata": {},
+ "source": [
+ "## 2. Repair the ligand network"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b9b19391",
+ "metadata": {},
+ "source": [
+ "### 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",
+ "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": 6,
+ "id": "a07a9acb-a5f5-4c08-931d-aa5c1fbe3e85",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "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",
+ " ligand_network : LigandNetwork\n",
+ " The ligand network to repair.\n",
+ " names : list[tuple[str, str]]\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",
+ " 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",
+ " 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",
+ " 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",
+ "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)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "287fc9e5",
+ "metadata": {},
+ "source": [
+ "### Repair automatically by score\n",
+ "\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 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": 8,
+ "id": "a3ee1ea3-661e-4861-a5b9-6fbc49535204",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "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",
+ " ligand_network : LigandNetwork\n",
+ " The ligand network to repair.\n",
+ " mapper : AtomMapper\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",
+ " 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",
+ " subnetworks = connected_subnetworks(ligand_network)\n",
+ "\n",
+ " concatenator = MstConcatenator(\n",
+ " mappers=mapper,\n",
+ " scorer=scorer,\n",
+ " )\n",
+ "\n",
+ " repaired_network = concatenator.concatenate_networks(\n",
+ " subnetworks,\n",
+ " exclude_edges=exclude_edges,\n",
+ " )\n",
+ "\n",
+ " new_edges = set(repaired_network.edges) - set(ligand_network.edges)\n",
+ "\n",
+ " return repaired_network, list(new_edges)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "a76d5b25-e8c7-46a3-be5c-dfea6eb6e196",
+ "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+5kh8tnyxY8eOXuhPnz5drVq18vuQACBh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",
+ "text/plain": [
+ ""
+ ]
+ },
+ "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": [
+ "# 3. Build replacement transformations\n",
+ "\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",
+ "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": 10,
+ "id": "69943267-eebf-4814-932c-c35014ec24cd",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def _formal_charge_difference(mapping):\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 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(\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(\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",
+ "\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",
+ " 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",
+ " 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",
+ " 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": 11,
+ "id": "42ac44ab",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "wrote 4 transformations\n"
+ ]
+ }
+ ],
+ "source": [
+ "alchemical_network = build_alchemical_network(\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",
+ "\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": {
+ "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.12.9"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
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