diff --git a/ahfe_tutorial/ahfe_cycle.png b/ahfe_tutorial/ahfe_cycle.png new file mode 100644 index 0000000..fd82dd7 Binary files /dev/null and b/ahfe_tutorial/ahfe_cycle.png differ diff --git a/ahfe_tutorial/ahfe_json/benzene.json b/ahfe_tutorial/ahfe_json/benzene.json new file mode 100644 index 0000000..3d2684d --- /dev/null +++ b/ahfe_tutorial/ahfe_json/benzene.json @@ -0,0 +1 @@ +{":version:": 1, "__module__": "gufe.transformations.transformation", "__qualname__": "Transformation", "mapping": null, "name": "benzene", "protocol": {":version:": 1, "__module__": "openfe.protocols.openmm_afe.equil_solvation_afe_method", "__qualname__": "AbsoluteSolvationProtocol", "settings": {":is_custom:": true, "__class__": "AbsoluteSolvationSettings", "__module__": "openfe.protocols.openmm_afe.equil_afe_settings", "alchemical_settings": {":is_custom:": true, "__class__": "AlchemicalSettings", "__module__": "openfe.protocols.openmm_afe.equil_afe_settings"}, "integrator_settings": {":is_custom:": true, "__class__": "IntegratorSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "barostat_frequency": {":is_custom:": true, "magnitude": 25, "pint_unit_registry": "openff_units", "unit": "timestep"}, "constraint_tolerance": 1e-06, "langevin_collision_rate": {":is_custom:": true, "magnitude": 1.0, "pint_unit_registry": "openff_units", "unit": "1 / picosecond"}, "n_restart_attempts": 20, "reassign_velocities": false, "remove_com": false, "timestep": {":is_custom:": true, "magnitude": 4, "pint_unit_registry": "openff_units", "unit": "femtosecond"}}, "lambda_settings": {":is_custom:": true, "__class__": "LambdaSettings", "__module__": "openfe.protocols.openmm_afe.equil_afe_settings", "lambda_elec": [0.0, 0.26, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "lambda_restraints": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "lambda_vdw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.24, 0.36, 0.48, 0.6, 0.7, 0.77, 0.85, 1.0]}, "partial_charge_settings": {":is_custom:": true, "__class__": "OpenFFPartialChargeSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "nagl_model": null, "number_of_conformers": null, "off_toolkit_backend": "ambertools", "partial_charge_method": "am1bcc"}, "protocol_repeats": 1, "solvation_settings": {":is_custom:": true, "__class__": "OpenMMSolvationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "solvent_model": "tip3p", "solvent_padding": {":is_custom:": true, "magnitude": 1.2, "pint_unit_registry": "openff_units", "unit": "nanometer"}}, "solvent_engine_settings": {":is_custom:": true, "__class__": "OpenMMEngineSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "compute_platform": "CUDA"}, "solvent_equil_output_settings": {":is_custom:": true, "__class__": "MDOutputSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "checkpoint_interval": {":is_custom:": true, "magnitude": 250, "pint_unit_registry": "openff_units", "unit": "picosecond"}, "checkpoint_storage_filename": "checkpoint.chk", "equil_npt_structure": "equil_npt_structure.pdb", "equil_nvt_structure": "equil_nvt_structure.pdb", "forcefield_cache": "db.json", "log_output": "equil_simulation.log", "minimized_structure": "minimized.pdb", "output_indices": "not water", "preminimized_structure": "system.pdb", "production_trajectory_filename": "production_equil.xtc", "trajectory_write_interval": {":is_custom:": true, "magnitude": 20, "pint_unit_registry": "openff_units", "unit": "picosecond"}}, "solvent_equil_simulation_settings": {":is_custom:": true, "__class__": "MDSimulationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "equilibration_length": {":is_custom:": true, "magnitude": 0.2, "pint_unit_registry": "openff_units", "unit": "nanosecond"}, "equilibration_length_nvt": {":is_custom:": true, "magnitude": 0.1, "pint_unit_registry": "openff_units", "unit": "nanosecond"}, "minimization_steps": 5000, "production_length": {":is_custom:": true, "magnitude": 0.5, "pint_unit_registry": "openff_units", "unit": "nanosecond"}}, "solvent_forcefield_settings": {":is_custom:": true, "__class__": "OpenMMSystemGeneratorFFSettings", "__module__": "gufe.settings.models", "constraints": "hbonds", "forcefields": ["amber/ff14SB.xml", "amber/tip3p_standard.xml", "amber/tip3p_HFE_multivalent.xml", "amber/phosaa10.xml"], "hydrogen_mass": 3.0, "nonbonded_cutoff": {":is_custom:": true, "magnitude": 1.0, "pint_unit_registry": "openff_units", "unit": "nanometer"}, "nonbonded_method": "PME", "rigid_water": true, "small_molecule_forcefield": "openff-2.0.0"}, "solvent_output_settings": {":is_custom:": true, "__class__": "MultiStateOutputSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "checkpoint_interval": {":is_custom:": true, "magnitude": 250, "pint_unit_registry": "openff_units", "unit": "picosecond"}, "checkpoint_storage_filename": "solvent_checkpoint.nc", "forcefield_cache": "db.json", "output_filename": "solvent.nc", "output_indices": "not water", "output_structure": "hybrid_system.pdb"}, "solvent_simulation_settings": {":is_custom:": true, "__class__": "MultiStateSimulationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "early_termination_target_error": {":is_custom:": true, "magnitude": 0.0, "pint_unit_registry": "openff_units", "unit": "kilocalorie_per_mole"}, "equilibration_length": {":is_custom:": true, "magnitude": 0.009999999999999998, "pint_unit_registry": "openff_units", "unit": "nanosecond"}, "minimization_steps": 5000, "n_replicas": 14, "production_length": {":is_custom:": true, "magnitude": 0.4999999999999999, "pint_unit_registry": "openff_units", "unit": "nanosecond"}, "real_time_analysis_interval": {":is_custom:": true, "magnitude": 250, "pint_unit_registry": "openff_units", "unit": "picosecond"}, "real_time_analysis_minimum_time": {":is_custom:": true, "magnitude": 500, "pint_unit_registry": "openff_units", "unit": "picosecond"}, "sampler_method": "repex", "sams_flatness_criteria": "logZ-flatness", "sams_gamma0": 1.0, "time_per_iteration": {":is_custom:": true, "magnitude": 1, "pint_unit_registry": "openff_units", "unit": "picosecond"}}, "thermo_settings": {":is_custom:": true, "__class__": "ThermoSettings", "__module__": "gufe.settings.models", "ph": null, "pressure": {":is_custom:": true, "magnitude": 0.9869232667160129, "pint_unit_registry": "openff_units", "unit": "standard_atmosphere"}, "redox_potential": null, "temperature": {":is_custom:": true, "magnitude": 298.15, "pint_unit_registry": "openff_units", "unit": "kelvin"}}, "vacuum_engine_settings": {":is_custom:": true, "__class__": "OpenMMEngineSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "compute_platform": null}, "vacuum_equil_output_settings": {":is_custom:": true, "__class__": "MDOutputSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "checkpoint_interval": {":is_custom:": true, "magnitude": 250, "pint_unit_registry": "openff_units", "unit": "picosecond"}, "checkpoint_storage_filename": "checkpoint.chk", "equil_npt_structure": "equil_structure.pdb", "equil_nvt_structure": null, "forcefield_cache": "db.json", "log_output": "equil_simulation.log", "minimized_structure": "minimized.pdb", "output_indices": "not water", "preminimized_structure": "system.pdb", "production_trajectory_filename": "production_equil.xtc", "trajectory_write_interval": {":is_custom:": true, "magnitude": 20, "pint_unit_registry": "openff_units", "unit": "picosecond"}}, "vacuum_equil_simulation_settings": {":is_custom:": true, "__class__": "MDSimulationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "equilibration_length": {":is_custom:": true, "magnitude": 0.2, "pint_unit_registry": "openff_units", "unit": "nanosecond"}, "equilibration_length_nvt": null, "minimization_steps": 5000, "production_length": {":is_custom:": true, "magnitude": 0.5, "pint_unit_registry": "openff_units", "unit": "nanosecond"}}, "vacuum_forcefield_settings": {":is_custom:": true, "__class__": "OpenMMSystemGeneratorFFSettings", "__module__": "gufe.settings.models", "constraints": "hbonds", "forcefields": ["amber/ff14SB.xml", "amber/tip3p_standard.xml", "amber/tip3p_HFE_multivalent.xml", "amber/phosaa10.xml"], "hydrogen_mass": 3.0, "nonbonded_cutoff": {":is_custom:": true, "magnitude": 1.0, "pint_unit_registry": "openff_units", "unit": "nanometer"}, "nonbonded_method": "nocutoff", "rigid_water": true, "small_molecule_forcefield": "openff-2.0.0"}, "vacuum_output_settings": {":is_custom:": true, "__class__": "MultiStateOutputSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "checkpoint_interval": {":is_custom:": true, "magnitude": 250, "pint_unit_registry": "openff_units", "unit": "picosecond"}, "checkpoint_storage_filename": "vacuum_checkpoint.nc", "forcefield_cache": "db.json", "output_filename": "vacuum.nc", "output_indices": "not water", "output_structure": "hybrid_system.pdb"}, "vacuum_simulation_settings": {":is_custom:": true, "__class__": "MultiStateSimulationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", "early_termination_target_error": {":is_custom:": true, "magnitude": 0.0, "pint_unit_registry": "openff_units", "unit": "kilocalorie_per_mole"}, "equilibration_length": {":is_custom:": true, "magnitude": 0.009999999999999998, "pint_unit_registry": "openff_units", "unit": "nanosecond"}, "minimization_steps": 5000, "n_replicas": 14, "production_length": {":is_custom:": true, "magnitude": 0.4999999999999999, "pint_unit_registry": "openff_units", "unit": "nanosecond"}, "real_time_analysis_interval": {":is_custom:": true, "magnitude": 250, "pint_unit_registry": "openff_units", "unit": "picosecond"}, "real_time_analysis_minimum_time": {":is_custom:": true, "magnitude": 500, "pint_unit_registry": "openff_units", "unit": "picosecond"}, "sampler_method": "repex", "sams_flatness_criteria": "logZ-flatness", "sams_gamma0": 1.0, "time_per_iteration": {":is_custom:": true, "magnitude": 1, "pint_unit_registry": "openff_units", "unit": "picosecond"}}}}, "stateA": {":version:": 1, "__module__": "gufe.chemicalsystem", "__qualname__": "ChemicalSystem", "components": {"ligand": {":version:": 1, "__module__": "gufe.components.smallmoleculecomponent", "__qualname__": "SmallMoleculeComponent", "atoms": [[6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}]], "bonds": [[0, 1, 12, 0, {}], [0, 5, 12, 0, {}], [0, 6, 1, 0, {}], [1, 2, 12, 0, {}], [1, 7, 1, 0, {}], [2, 3, 12, 0, {}], [2, 8, 1, 0, {}], [3, 4, 12, 0, {}], [3, 9, 1, 0, {}], [4, 5, 12, 0, {}], [4, 10, 1, 0, {}], [5, 11, 1, 0, {}]], "conformer": ["\u0093NUMPY\u0001\u0000v\u0000{'descr': '\u00ae \u00b5\u0092\u00d1?\u008bl\u0012/_X\u00bd?\u009e\u00d6\u00b4\u00d9x5\u00a4?\u00afs\u0092\u0018\u00ffT\u008a?{$b\u00d2\u00dd\u00e2\u0087?\u00cd\u008b\u00d8\u00f3mK\u0080?\u009d|(8\u0011il?\u00bb\u00d0\u00c5\u00fc5aK?\u00c9\u0018\u001b\u00a6H\u00a5\u0018?\u009c\u00b4_\u00bdRQ\u00d9>\u00b72\\R\u00fe\u00bf\u0097>t\u00ca+\u0089!0F>N\u00f4\u00ccc\u00a0\u00fe\u00e1=\u00e1>\u00ae \u00b5\u0092\u00d1?\u00b9z\u001b\u009d\u00eb\u00c3\u00d1?\u000f\u0098x\u00eb6C\u00c9?\u00d1\u00e5\u00a8V/\u00f6\u00bb?^\u0080\u00be\u00f1e\u00cd\u00ab?\u009c\u008eO9\u0019\u000f\u00a7?\u00b7X\u00c8\u00d4\u0017\u008c\u009c?d\u00d6\u0086\u00b5\u00ff\u00ea\u0086?\u00cc\u000e\u008b\u0086\u0019\u00dbd?\u00e9\u00f1\u00a9r()2?\u00ec\u0016\u00da\u00a3\u008ej\u00f2>\u00f8)\u00a9\u0002\u00ae9\u00b1>\u0019Qd\u0090\u00bf\u001d`>\u0092.\u00ab\u00e6\u0094|\u00fa=\u008bl\u0012/_X\u00bd?\u000f\u0098x\u00eb6C\u00c9?%\u00a9\u00ec\u00e9\u00f1O\u00cb?\u00e1\u001e={5T\u00c6?\u0005\u00d1Y4\u00bf\u008e\u00bf?\u00d6^}\u00f3f\u008c\u00b8?&\u00147+\u00e5A\u00ac?lo\u00b9\u0004\u00b7K\u0095?\u0004\u00c6l\u00b6\u00ba\u0085r?\u00a1\u00b7\u00de\u00f6\u00d2j??o\u0090\u00e8\u0007\u00a1\u008d\u00ff>\u009d-\u00d7\u00fa\u0090x\u00bd>l:G\u00a3\u0004\u00a5k>\u00bf\r:\u00da/\u0005\u0007>\u009e\u00d6\u00b4\u00d9x5\u00a4?\u00d1\u00e5\u00a8V/\u00f6\u00bb?\u00e1\u001e={5T\u00c6?\u000fcX\u0095\u00c9Y\u00ca?\u00cd\u00f9nF\u00e1\u00e6\u00c9?\u00ccj8g\u00f77\u00c3?\u009e\u0015\r\u001e\u0007\u00fe\u00b4?\u0096\u0084\u00ae\n\u009eF\u009e?S'\u0094\u0089j\u0086y?{\u001f\u00fc\u0087^@E?\u009f\u00c5y\u00f4H0\u0005?\u00ffPJ`\u00f0\u00c1\u00c3>\u00aa\u0099T\u00be\u00f2\u008br>\u00efL]\u0015\u009f\u0014\u000f>\u00afs\u0092\u0018\u00ffT\u008a?^\u0080\u00be\u00f1e\u00cd\u00ab?\u0005\u00d1Y4\u00bf\u008e\u00bf?\u00cd\u00f9nF\u00e1\u00e6\u00c9?\u00fd\u0000\u0084\t\u00c6\u001d\u00d1?\u00fb\u00a5\u000fJ]\u00b2\u00c8?\"DY.\u009b7\u00ba?f~\u00f4\u0097\u00b2{\u00a2?\u0099Y\u00aa\u00a3`\u00af~?\u00cf\u00e4\u00fb)h\u00f9\u0007\u009f\u00e9u>4\u0091\u009aP\u0099[\u0012>{$b\u00d2\u00dd\u00e2\u0087?\u009c\u008eO9\u0019\u000f\u00a7?\u00d6^}\u00f3f\u008c\u00b8?\u00ccj8g\u00f77\u00c3?\u00fb\u00a5\u000fJ]\u00b2\u00c8?\u00a3\u00ef~\u0086\u00d5\u001d\u00cb?i\u00b2\u0094\u00b7\u0019n\u00c6?\u0012\u00ed\u00f0MS\u00f8\u00b6?\u00d5\u00e3\u00dc\u008b\u0083\u00ea\u0098?)\u00f7\u00e4\u00ec\u00e4Kh?\u00b7N\u008b\u00bc\u00e1\u000f*?\u00ff\u0097\nR\u0018\u00f2\u00e8>Z}\bp<\u00a6\u0097>\u00ae\u00e2\u0019\u0015\u00feW3>\u00cd\u008b\u00d8\u00f3mK\u0080?\u00b7X\u00c8\u00d4\u0017\u008c\u009c?&\u00147+\u00e5A\u00ac?\u009e\u0015\r\u001e\u0007\u00fe\u00b4?\"DY.\u009b7\u00ba?i\u00b2\u0094\u00b7\u0019n\u00c6?\u00b1\u0017)#Ap\u00cf?\u00a8)\u00f1\u0016\u00e6p\u00ca?Qy\u00d5\u00d3\u009c5\u00b5?XcTJc\f\u008b?\u00af\t\u001f\u0082k\u00b9P?\u00b4\u0016KwI\u0011\u0011?\u00a9U\u0094\u00d7\u00f7\u00eb\u00c0>\u0017\u00a6`nO_\\>\u009d|(8\u0011il?d\u00d6\u0086\u00b5\u00ff\u00ea\u0086?lo\u00b9\u0004\u00b7K\u0095?\u0096\u0084\u00ae\n\u009eF\u009e?f~\u00f4\u0097\u00b2{\u00a2?\u0012\u00ed\u00f0MS\u00f8\u00b6?\u00a8)\u00f1\u0016\u00e6p\u00ca?RxMh\u00f3\u00e9\u00d3?s\u00a3\u0001\u00c0c\u00cb\u00cc?q:\u00da\u00a4\u00c8\u008c\u00ae?\u00b7\u0084\u0010\u009a\u00b3\u00ddy?\u00d3\u00ba/^\u00d0\u00dc>?4\u00a7\n\u00b7H@\u00f1>8J\u00fb4\u00ab\u008d\u008f>\u00bb\u00d0\u00c5\u00fc5aK?\u00cc\u000e\u008b\u0086\u0019\u00dbd?\u0004\u00c6l\u00b6\u00ba\u0085r?S'\u0094\u0089j\u0086y?\u0099Y\u00aa\u00a3`\u00af~?\u00d5\u00e3\u00dc\u008b\u0083\u00ea\u0098?Qy\u00d5\u00d3\u009c5\u00b5?s\u00a3\u0001\u00c0c\u00cb\u00cc?)w\u00ff\u00f6\u00af\u00cf\u00d7?\u00db\u00fc\u00e3ap\u00f8\u00cc?$\u00e6\"#K\u0016\u00a6?\u0087\u0093\u00bf3\u00f6kr?\u0083\u008f`ce\u00b7+?\u00bd\u00b1\u0004\u0093\u00e0z\u00d1>\u00c9\u0018\u001b\u00a6H\u00a5\u0018?\u00e9\u00f1\u00a9r()2?\u00a1\u00b7\u00de\u00f6\u00d2j??{\u001f\u00fc\u0087^@E?\u00cf\u00e4\u00fb\u00ec\u0016\u00da\u00a3\u008ej\u00f2>o\u0090\u00e8\u0007\u00a1\u008d\u00ff>\u009f\u00c5y\u00f4H0\u0005??\u00ca\u00feC\n\u001c\t?\u00b7N\u008b\u00bc\u00e1\u000f*?\u00af\t\u001f\u0082k\u00b9P?\u00b7\u0084\u0010\u009a\u00b3\u00ddy?$\u00e6\"#K\u0016\u00a6?\u00c7\"\u0082AC\u001f\u00cd?[\u00e8W\u00d2\u00a7\u0001\u00da?\u00f2\u00d7j\u00cfm|\u00cd?\u00e1\u009bW\u00e9\u008d\u00a2\u00b1?!\u00d4\u00a2\u00ba\u00cft\u0090?\u00b72\\R\u00fe\u00bf\u0097>\u00f8)\u00a9\u0002\u00ae9\u00b1>\u009d-\u00d7\u00fa\u0090x\u00bd>\u00ffPJ`\u00f0\u00c1\u00c3>\u007f^\u009d\u0001\u0093^\u00c7>\u00ff\u0097\nR\u0018\u00f2\u00e8>\u00b4\u0016KwI\u0011\u0011?\u00d3\u00ba/^\u00d0\u00dc>?\u0087\u0093\u00bf3\u00f6kr?x\u00a4\u00ee4B\u00fd\u00a7?\u00f2\u00d7j\u00cfm|\u00cd?w\u0006\u00c5\u00c7ih\u00d5?\u00895\n\u00dd\u0092g\u00cf?\u0098\\\u00c5\u00b9A\u00a6\u00c1?t\u00ca+\u0089!0F>\u0019Qd\u0090\u00bf\u001d`>l:G\u00a3\u0004\u00a5k>\u00aa\u0099T\u00be\u00f2\u008br>)h\u00f9\u0007\u009f\u00e9u>Z}\bp<\u00a6\u0097>\u00a9U\u0094\u00d7\u00f7\u00eb\u00c0>4\u00a7\n\u00b7H@\u00f1>\u0083\u008f`ce\u00b7+?\u00bc=q\u008b\u008e\u008dq?\u00e1\u009bW\u00e9\u008d\u00a2\u00b1?\u00895\n\u00dd\u0092g\u00cf?{7\u0085}\u0000\u001e\u00d6?\u00d6&\u00cf|\u0095{\u00d5?N\u00f4\u00ccc\u00a0\u00fe\u00e1=\u0092.\u00ab\u00e6\u0094|\u00fa=\u00bf\r:\u00da/\u0005\u0007>\u00efL]\u0015\u009f\u0014\u000f>4\u0091\u009aP\u0099[\u0012>\u00ae\u00e2\u0019\u0015\u00feW3>\u0017\u00a6`nO_\\>8J\u00fb4\u00ab\u008d\u008f>\u00bd\u00b1\u0004\u0093\u00e0z\u00d1>\u00ea\u00c5y\u00f9\u00041*?!\u00d4\u00a2\u00ba\u00cft\u0090?\u0098\\\u00c5\u00b9A\u00a6\u00c1?\u00d6&\u00cf|\u0095{\u00d5?v\u008a\u000e\u00f7QS\u00e0?"}}}, "forward_and_reverse_energies": {"fractions": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0088\u008e\u00e1\u00c5y\u00e8\u00b8?\u009a\u0099\u0099\u0099\u0099\u0099\u00c9?o0E>\u00eb\u0006\u00d3?\u009a\u0099\u0099\u0099\u0099\u0099\u00d9?<\u00fd\u0011\u000b\u00b8\u00d3\u00df?333333\u00e3?\u0004e\u00efkBP\u00e6?\u009a\u0099\u0099\u0099\u0099\u0099\u00e9?k\u00cbU\u00d2\u00a8\u00b6\u00ec?\u0000\u0000\u0000\u0000\u0000\u0000\u00f0?"}}, "forward_DGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00a1\u0015\"\u009c\u00be\u00ea\u0011@\u0012\u007f\u008co\u00197\t@\u00f7s\u00d1\u00da\u00e4\u00e3\f@\u0092\u00f6\u00a3\u00e6G=\u00e2?\n\u00f5h\u00a1\u00c6\u00db\u00c0\u00bf\u00a2\u00b9\u0005\u00bf\u00ac\u00fe\u00e3?^E\u0014\u008cN,\u00f2\u00bf\u0002\u0004\u00ef4j\u00a4\u00ec\u00bf\u00bf`\u00b3\u008b\u000b\u00f3\u00fb\u00bf\u00d7\u0093\u00e8V49\u00fa\u00bf"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "forward_dDGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00aaT\u00df\u008d\u00fd\u0014\u00d9?\u00d8\u0001\u00fc\u0089\u0017\u0006\u00d3?\u00c5L\u00e2\u00f9I@\u00ce?\u0018'\u0006Y3y\u00cd?\u00ac\u00ab\\\u00bf\u00e0\u0017\u00cb?\u00f3D\u00a1\u00b8\u00b3\u0007\u00c8?\u00d3\u00f1\u008c\u00d1\r\u00a9\u00c7?\u00e8\u00ccI\u00a8y\u00fd\u00c5?\u00af1\u00bd\u0003\u008fy\u00c5?\u0007\u00b4\u00e6m\u009aL\u00c4?"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "reverse_DGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "9\u009e\u00c7\u00b5b\u00c5\u0002\u00c0l\u00ff\u0091\u0090b\u00fc\u0015\u00c0o\u00b7\u00a6\u0012\u008aG\u00fd\u00bf\u001e\u009f\u00bb/\u00f6\u00c8\u0018\u00c0\u001c\u008dR\u001b\u00fe3\r\u00c0\u00c4&\u0004Aq\u0002\u000b\u00c0>\u00b7\u00ba\u00cep\u00d0\u0014\u00c0/\u0093\u008b\u008e\u00c7~\t\u00c0y\fc\u00ae\u00ba\u0002\u0006\u00c0\u00d7\u0093\u00e8V49\u00fa\u00bf"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "reverse_dDGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0085'$\u0012[\u00f9\u00e0?\u00f3\u00d4\u00d7\u00ce\u00f2\r\u00da?3\u00cc\u00b2\u00c8\u00da\u001b\u00d3?\u00ae\u0091,\u00d4\u0095\u00d0\u00d2?uVe\u00f8\u00b5\b\u00cf?u\t\u0012a\u00c6\u00dd\u00cb?O\u00c5\u00db\u00e2\u00d2F\u00cb?\u00a8p\u0010Z\u008e\u00c2\u00c7?\u001fO\u00e3v\u00b8A\u00c6?\u0007\u00b4\u00e6m\u009aL\u00c4?"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}}, "production_iterations": 185.4853057861328, "equilibration_iterations": 6.0, "replica_exchange_statistics": {"eigenvalues": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00e9\u00ff\u00ff\u00ff\u00ff\u00ff\u00ef?0\u00be\r\u0085K\f\u00ef?\u0012\u00bb~f\u0084\u00ea\u00ea??h\u00cc\u00bfS\u00c5\u00e6?L!\u00ca\u00c2H\u00c9\u00e3?\u00a3PdB:P\u00df?\u00e5#\u00bd\u00e9\u00f9\u008e\u00d6?\u00bf\u00a6\u00e5~\u00cf\u00f0\u00d4?\u009dA\u0014\b\u00f0\u00ce\u00d0?\b%\u00e7U\u008e\u0000\u00c5?A\tp0\u00d7\u00dc\u00c2?ug\u00d6\u00e5\f\u00a7\u00b7?\u00be.\u001dD\u0081\u00e1\u009c?Y<\u00d2Dc0\u0087?"}}, "matrix": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14, 14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00aeUg\u00fdx\u0093\u00e4?\u008a\u00f3w]\u00fcB\u00cb?|\u001aa\u00b9\u00a7\u0011\u00b6?F=r4\u00a7\u00f6\u0099?\u00e8%\u00b3c@\u0014\u008d?\u00ccs\u0085\u001b\u0097\u00b1\u0082?\u00e8%\u00b3c@\u0014}?`\u0083\u00af\u00a6\u00db\u009d`?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008a\u00f3w]\u00fcB\u00cb?\u0003\u0087l\u000bR\u00aa\u00d8?\u009d\u00f5\u00e3M\u00d2\u00b7\u00c6?+\u00c1\u00a8,\u0012\u00e1?\u00d3\u00d2\u00d2\u00d2\u00d2\u00d2\u00c2?|5\u00dd\u00ee\u0084\u0000\u009b?`\u0083\u00af\u00a6\u00db\u009d`?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000`\u0083\u00af\u00a6\u00db\u009dP?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000`\u0083\u00af\u00a6\u00db\u009dP?\u0010E\u0007z\u00c9\u00ecx?\u00e8%\u00b3c@\u0014\u008d?\u00a4T1\u0005\u000e\u00d9\u00a6?\u00d3\u00d2\u00d2\u00d2\u00d2\u00d2\u00c2?\u00fb\f\u00a3\u001e9\u009a\u00e3?\u00da1 \u008a\u000e\u00f4\u00c2?8d[\u0090R\u00c5\u0094?8d[\u0090R\u00c5t?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000`\u0083\u00af\u00a6\u00db\u009dP?`\u0083\u00af\u00a6\u00db\u009d`?\u0010E\u0007z\u00c9\u00ecx?|5\u00dd\u00ee\u0084\u0000\u009b?\u00da1 \u008a\u000e\u00f4\u00c2?I\u00c4\u00de?\u00f9\u00a0\u00e2?\u00b2\u0012\u00ccs\u0085\u001b\u00c7?\u00a4T1\u0005\u000e\u00d9\u00a6?\u00ccs\u0085\u001b\u0097\u00b1\u0082?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000`\u0083\u00af\u00a6\u00db\u009d`?8d[\u0090R\u00c5\u0094?\u00b2\u0012\u00ccs\u0085\u001b\u00c7?[u\u00d6\u008f7I\u00df?\u00c0\u00eb\u00e2\u0017\u00daL\u00cc?\u0089\u00d8\u00fb'\u001fT\u00b6?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00008d[\u0090R\u00c5t?\u00a4T1\u0005\u000e\u00d9\u00a6?\u00c0\u00eb\u00e2\u0017\u00daL\u00cc?\u00c6J0\u00cf\u0015n\u00dc?4\u00a7\u00f6\u0019F=\u00d2?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ccs\u0085\u001b\u0097\u00b1\u0082?\u0089\u00d8\u00fb'\u001fT\u00b6?4\u00a7\u00f6\u0019F=\u00d2?\u0085\u001b\u0097\u00b1\u0012\u00cc\u00e3?"}}}}, "start_time": {"__class__": "datetime", "__module__": "datetime", ":is_custom:": true, "isotime": "2024-03-06T17:15:35.964193"}, "end_time": {"__class__": "datetime", "__module__": "datetime", ":is_custom:": true, "isotime": "2024-03-06T17:24:08.581624"}, "__qualname__": "ProtocolUnitResult", "__module__": "gufe.protocols.protocolunit", ":version:": 1}]}, "vacuum": {"279370490201278614325565891219309171778": [{"name": "Absolute Solvation, benzene vacuum leg: repeat 0 generation 0", "_key": "ProtocolUnitResult-4e48b3dcdbf44c828added08e40a0781", "source_key": "AbsoluteSolvationVacuumUnit-718f88d975dc4a4aacc6e60f688d3bbb", "inputs": {"protocol": {"settings": {"__class__": "AbsoluteSolvationSettings", "__module__": "openfe.protocols.openmm_afe.equil_afe_settings", ":is_custom:": true, "protocol_repeats": 1, "solvent_forcefield_settings": {"__class__": "OpenMMSystemGeneratorFFSettings", "__module__": "gufe.settings.models", ":is_custom:": true, "constraints": "hbonds", "rigid_water": true, "hydrogen_mass": 3.0, "forcefields": ["amber/ff14SB.xml", "amber/tip3p_standard.xml", "amber/tip3p_HFE_multivalent.xml", "amber/phosaa10.xml"], "small_molecule_forcefield": "openff-2.0.0", "nonbonded_cutoff": {"magnitude": 1.0, "unit": "nanometer", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "nonbonded_method": "PME"}, "vacuum_forcefield_settings": {"__class__": "OpenMMSystemGeneratorFFSettings", "__module__": "gufe.settings.models", ":is_custom:": true, "constraints": "hbonds", "rigid_water": true, "hydrogen_mass": 3.0, "forcefields": ["amber/ff14SB.xml", "amber/tip3p_standard.xml", "amber/tip3p_HFE_multivalent.xml", "amber/phosaa10.xml"], "small_molecule_forcefield": "openff-2.0.0", "nonbonded_cutoff": {"magnitude": 1.0, "unit": "nanometer", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "nonbonded_method": "nocutoff"}, "thermo_settings": {"__class__": "ThermoSettings", "__module__": "gufe.settings.models", ":is_custom:": true, "temperature": {"magnitude": 298.15, "unit": "kelvin", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "pressure": {"magnitude": 0.9869232667160129, "unit": "standard_atmosphere", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "ph": null, "redox_potential": null}, "solvation_settings": {"__class__": "OpenMMSolvationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "solvent_model": "tip3p", "solvent_padding": {"magnitude": 1.2, "unit": "nanometer", ":is_custom:": true, "pint_unit_registry": "openff_units"}}, "alchemical_settings": {"__class__": "AlchemicalSettings", "__module__": "openfe.protocols.openmm_afe.equil_afe_settings", ":is_custom:": true}, "lambda_settings": {"__class__": "LambdaSettings", "__module__": "openfe.protocols.openmm_afe.equil_afe_settings", ":is_custom:": true, "lambda_elec": [0.0, 0.26, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "lambda_vdw": [0.0, 0.0, 0.0, 0.0, 0.0, 0.12, 0.24, 0.36, 0.48, 0.6, 0.7, 0.77, 0.85, 1.0], "lambda_restraints": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "vacuum_engine_settings": {"__class__": "OpenMMEngineSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "compute_platform": null}, "solvent_engine_settings": {"__class__": "OpenMMEngineSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "compute_platform": "CUDA"}, "integrator_settings": {"__class__": "IntegratorSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "timestep": {"magnitude": 4.0, "unit": "femtosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "langevin_collision_rate": {"magnitude": 1.0, "unit": "1 / picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "barostat_frequency": {"magnitude": 25.0, "unit": "timestep", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "remove_com": false, "reassign_velocities": false, "n_restart_attempts": 20, "constraint_tolerance": 1e-06}, "vacuum_equil_simulation_settings": {"__class__": "MDSimulationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "equilibration_length": {"magnitude": 0.2, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "production_length": {"magnitude": 0.5, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "minimization_steps": 5000, "equilibration_length_nvt": null}, "vacuum_simulation_settings": {"__class__": "MultiStateSimulationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "equilibration_length": {"magnitude": 0.009999999999999998, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "production_length": {"magnitude": 0.4999999999999999, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "minimization_steps": 5000, "time_per_iteration": {"magnitude": 1.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "real_time_analysis_interval": {"magnitude": 250.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "early_termination_target_error": {"magnitude": 0.0, "unit": "kilocalorie / mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "real_time_analysis_minimum_time": {"magnitude": 500.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "sampler_method": "repex", "sams_flatness_criteria": "logZ-flatness", "sams_gamma0": 1.0, "n_replicas": 14}, "solvent_equil_simulation_settings": {"__class__": "MDSimulationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "equilibration_length": {"magnitude": 0.2, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "production_length": {"magnitude": 0.5, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "minimization_steps": 5000, "equilibration_length_nvt": {"magnitude": 0.1, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}}, "solvent_simulation_settings": {"__class__": "MultiStateSimulationSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "equilibration_length": {"magnitude": 0.009999999999999998, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "production_length": {"magnitude": 0.4999999999999999, "unit": "nanosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "minimization_steps": 5000, "time_per_iteration": {"magnitude": 1.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "real_time_analysis_interval": {"magnitude": 250.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "early_termination_target_error": {"magnitude": 0.0, "unit": "kilocalorie / mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "real_time_analysis_minimum_time": {"magnitude": 500.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "sampler_method": "repex", "sams_flatness_criteria": "logZ-flatness", "sams_gamma0": 1.0, "n_replicas": 14}, "vacuum_equil_output_settings": {"__class__": "MDOutputSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "checkpoint_interval": {"magnitude": 1.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "forcefield_cache": "db.json", "output_indices": "not water", "checkpoint_storage_filename": "checkpoint.chk", "trajectory_write_interval": {"magnitude": 20.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "equil_nvt_structure": null, "equil_npt_structure": "equil_structure.pdb", "production_trajectory_filename": "production_equil.xtc", "preminimized_structure": "system.pdb", "minimized_structure": "minimized.pdb", "log_output": "equil_simulation.log"}, "vacuum_output_settings": {"__class__": "MultiStateOutputSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "checkpoint_interval": {"magnitude": 1.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "forcefield_cache": "db.json", "output_indices": "not water", "checkpoint_storage_filename": "vacuum_checkpoint.nc", "output_filename": "vacuum.nc", "output_structure": "hybrid_system.pdb"}, "solvent_equil_output_settings": {"__class__": "MDOutputSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "checkpoint_interval": {"magnitude": 1.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "forcefield_cache": "db.json", "output_indices": "not water", "checkpoint_storage_filename": "checkpoint.chk", "trajectory_write_interval": {"magnitude": 20.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "equil_nvt_structure": "equil_nvt_structure.pdb", "equil_npt_structure": "equil_npt_structure.pdb", "production_trajectory_filename": "production_equil.xtc", "preminimized_structure": "system.pdb", "minimized_structure": "minimized.pdb", "log_output": "equil_simulation.log"}, "solvent_output_settings": {"__class__": "MultiStateOutputSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "checkpoint_interval": {"magnitude": 1.0, "unit": "picosecond", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "forcefield_cache": "db.json", "output_indices": "not water", "checkpoint_storage_filename": "solvent_checkpoint.nc", "output_filename": "solvent.nc", "output_structure": "hybrid_system.pdb"}, "partial_charge_settings": {"__class__": "OpenFFPartialChargeSettings", "__module__": "openfe.protocols.openmm_utils.omm_settings", ":is_custom:": true, "partial_charge_method": "am1bcc", "off_toolkit_backend": "ambertools", "number_of_conformers": null, "nagl_model": null}}, "__qualname__": "AbsoluteSolvationProtocol", "__module__": "openfe.protocols.openmm_afe.equil_solvation_afe_method", ":version:": 1}, "stateA": {"components": {"ligand": {"atoms": [[6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [6, 0, 0, true, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}], [1, 0, 0, false, 0, 0, {}]], "bonds": [[0, 1, 12, 0, {}], [0, 5, 12, 0, {}], [0, 6, 1, 0, {}], [1, 2, 12, 0, {}], [1, 7, 1, 0, {}], [2, 3, 12, 0, {}], [2, 8, 1, 0, {}], [3, 4, 12, 0, {}], [3, 9, 1, 0, {}], [4, 5, 12, 0, {}], [4, 10, 1, 0, {}], [5, 11, 1, 0, {}]], "conformer": ["\u0093NUMPY\u0001\u0000v\u0000{'descr': '\u00e2Z5\u00c23LH=\u009d\u00a2I \u0000\u0005\u00e9<-\u009e\u00a3\u00d5\u0098x\u0099;p\u00a4\u0086\u0010`@\u00cf8h\u007f\u00b0\u00a2h\u00a5\u00fa1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Yo\u00e4QiC\r\u00af\u0014\"8\u0094\u00112\u00d3\u00b1`s\u0013\u00a0T\u00c0-\u00b5\u00f2\u0012\u000e\u00c4\u00b3\u000e\u008b\u00b5\u0000\u0000\u0000\u0000\u0000\u00d13\u00b6"}}, "matrix": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14, 14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "t\u008d\u00ae\u00c0\u00f5K\u00b2?J\u00a8\u00e3\u00f3\u0012K\u00b2?\b\u001f\u00a9\u00c1@J\u00b2?#\u00fc\u0096\u00ebdI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?J\u00a8\u00e3\u00f3\u0012K\u00b2?\u0004\u00e3\u001e\u0081wJ\u00b2?<\u00d6\u0015k\u00e7I\u00b2?y^\u00a9\u00b4PI\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\b\u001f\u00a9\u00c1@J\u00b2?<\u00d6\u0015k\u00e7I\u00b2?\u0018>\u0013\u0099\u0094I\u00b2?\f\u00a7\u00c6\u00f4=I\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?#\u00fc\u0096\u00ebdI\u00b2?y^\u00a9\u00b4PI\u00b2?\f\u00a7\u00c6\u00f4=I\u00b2?\u00f5\u00fa\u00d7T*I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?"}}}, "forward_and_reverse_energies": {"fractions": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00ec\f\u00b0\u001e\u00e2\b\u00b9?\u008d\u00ba\r\u009b@p\u00c9?R\u00b7a\u0013\b.\u00d3?\u008d\u00ba\r\u009b@p\u00d9?\u0098\u0094\u00e8`(\u00e6\u00df?R\u00b7a\u0013\b.\u00e3?\u00ef\u00b87W$O\u00e6?\u00f5%%:\u0018\u008a\u00e9?\u00fa\u0092\u0012\u001d\f\u00c5\u00ec?\u0000\u0000\u0000\u0000\u0000\u0000\u00f0?"}}, "forward_DGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0098[A\u00d4\u00ef&\u0003\u00c0W\u00ee#Az$\u0003\u00c0/*;\u000b\u00d9#\u0003\u00c0(\u000ebf\u00ba%\u0003\u00c0\u00afM\u00d0\u0085\u0083%\u0003\u00c0\u0094\u008b\u0005\u00bd*%\u0003\u00c0\u001fQ=j\u0090$\u0003\u00c0\u0017\u0085G\u00d4i$\u0003\u00c0\u00c0\u00b5\u00ff\u00bd_$\u0003\u00c0e\u00b2r\u0093\u0003$\u0003\u00c0"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "forward_dDGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "[Q)\u00a6\u00ee\u0093K?_E0Ot\u00f1B?\u00c9\u00023\u0012\u00cc\u0086>?\u0006bo'Y\u00cf;?\u00a5\u009e\u00ed\u00c8\u0094\u00a58?Cq~m\u00baI6?t5\u00e5\u00dc\u009e\u00a34?H\u00eb\u00e1\u0093\u0018F3?a\u00a6\u0001\tHJ2?\u00f7J\u0084\u00a2|f1?"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "reverse_DGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00b9\u00d8\u0093\u0011\u00c5 \u0003\u00c05\u001d\u00eea\u0094\"\u0003\u00c0\u00a3pu\u0013\u00be\"\u0003\u00c0\u00ad\u00f2\u00e4\u0013X\"\u0003\u00c0\t\u00af\u00ca\u0091\u0085\"\u0003\u00c0\u00a6\u00e3/\u0095\u00e8\"\u0003\u00c0\u00cbe\u00be\u00eb\u0002$\u0003\u00c0'\u0085\u00f5\u0095\u00da#\u0003\u00c0\u000f\u00f0.\u00cb\u00b2#\u0003\u00c0e\u00b2r\u0093\u0003$\u0003\u00c0"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "reverse_dDGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": ">p\u000f\u00f6\u00d7\u00baL?\u0093\u00f5lUmVD?\u00ea({\u008f\u00f46@?\u008796C{\u00e9;?\u0013\u001bh\u0011\u00f0\u00988?gh\u009d\u00bb\u00f2\\6?\u0083t\u00ce\u00a8k&5?\u00e3\u00b5\u00a6U\u0084\u00953?l\u00f2?\u00fd\u00b5^2?\u00f7J\u0084\u00a2|f1?"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}}, "production_iterations": 317.3360900878906, "equilibration_iterations": 11.0, "replica_exchange_statistics": {"eigenvalues": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00fb\u00ff\u00ff\u00ff\u00ff\u00ff\u00ef?\u00e0\u0098\u00b1\u0086\u00e6>\u00b0?ST\u00b8\bDn\u00ab?\u00b3]\u001daw\u00ed\u00a0?\u00e1\u0081\u00d5K\u00e8\r\u009a?W\u00a7b\u00f39a\u0085?(\u00db\u001d\u0084\u00d7\u00e2M\u00bfM\u00af\u00e2\u00f1\u00f0\u00d8y\u00bf\u00ab\u00fc\u008b\u00be\u00cb\u0003\u0094\u00bf\u00ea\r%\u0087\u0001\u00c8\u0096\u00bf\u00f9\u00bb+\u008e.g\u009f\u00bf\u00c0\n\u00ec\u0012\u00aaY\u00a1\u00bf\u00b9\u00b9\u009f\u0006\u00a9-\u00aa\u00bf\u0015\u0001\u00ee\u00feX\u00bb\u00ac\u00bf"}}, "matrix": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14, 14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0011\u00ac\u00a3\u00cd\u00fb\u0014\u00b7?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u0082u\u00b4y\u009f\u00e2\u00b2?\u0000\u0000\u0000\u0000\u0000\u0000\u00b0?a\u001dm\u00de\u00a7\u00b8\u00b4?\u00b9d\b\u00d6\u00d1\u00e6\u00ad?\r\u00c1:\u00da\u00bcO\u00b1?&C\u00b0\u008e6\u00ef\u00b3?\u00de\u00a7\u00b8d\b\u00d6\u00b1?v\u00b4y\u009f\u00e2\u0092\u00b1?\u00a8\u00b8d\b\u00d6\u00d1\u00b6?\u00ce\u00fb\u0014\u0097\f\u00c1\u00aa?v\u00b4y\u009f\u00e2\u0092\u00b1?G\u009b\u00f7).\u0019\u00b2?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00b0\u008e6\u00efS\\\u00b2?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00b9d\b\u00d6\u00d1\u00e6\u00ad?\r\u00c1:\u00da\u00bcO\u00b1?\u00b4y\u009f\u00e2\u0092!\u00b8?\r\u00c1:\u00da\u00bcO\u00b1?\u00e7}\u008aK\u0086`\u00ad?;\u00da\u00bcOq\u00c9\u00b0?\u008f6\u00efS\\2\u00b4?a\u001dm\u00de\u00a7\u00b8\u00b4?\u00f8).\u0019\u0082u\u00b4?\u00d2\u00e6}\u008aK\u0086\u00b0?\u0082u\u00b4y\u009f\u00e2\u00b2?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?C\u00b0\u008e6\u00efS\u00ac?\u00de\u00a7\u00b8d\b\u00d6\u00b1?.\u0019\u0082u\u00b4y\u00af?\u00bdOq\u00c9\u0010\u00ac\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?\u00b0\u008e6\u00efS\\\u00b2?v\u00b4y\u009f\u00e2\u0092\u00b1?T\\2\u0004\u00ebh\u00b3?\u00d6\u00d1\u00e6}\u008aK\u00b6?.\u0019\u0082u\u00b4y\u00af?&C\u00b0\u008e6\u00ef\u00b3?m\u00de\u00a7\u00b8d\b\u00b6?\u0000\u0000\u0000\u0000\u0000\u0000\u00b0?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00de\u00a7\u00b8d\b\u00d6\u00b1?;\u00da\u00bcOq\u00c9\u00b0?G\u009b\u00f7).\u0019\u00b2?\r\u00c1:\u00da\u00bcO\u00b1?m\u00de\u00a7\u00b8d\b\u00b6?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?&C\u00b0\u008e6\u00ef\u00b3?m\u00de\u00a7\u00b8d\b\u00b6?*.\u0019\u0082u\u00b4\u00a9?\u0082u\u00b4y\u009f\u00e2\u00b2?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00de\u00a7\u00b8d\b\u00d6\u00b1?a\u001dm\u00de\u00a7\u00b8\u00b4?\u00b9d\b\u00d6\u00d1\u00e6\u00ad?.\u0019\u0082u\u00b4y\u00af?G\u009b\u00f7).\u0019\u00b2?\u009b\u00f7).\u0019\u0082\u00b5?.\u0019\u0082u\u00b4y\u00af?\u009b\u00f7).\u0019\u0082\u00b5?\u00f8).\u0019\u0082u\u00b4?\u0086`\u001dm\u00de\u00a7\u00b8?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\\2\u0004\u00ebh\u00f3\u00ae?v\u00b4y\u009f\u00e2\u0092\u00b1?\u008aK\u0086`\u001dm\u00ae?\u00d2\u00e6}\u008aK\u0086\u00b0?\u00b9d\b\u00d6\u00d1\u00e6\u00ad?\r\u00c1:\u00da\u00bcO\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?.\u0019\u0082u\u00b4y\u00af?;\u00da\u00bcOq\u00c9\u00b0?T\\2\u0004\u00ebh\u00b3?\u0004\u00ebh\u00f3>\u00c5\u00b5?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00b0\u008e6\u00efS\\\u00b2?\u00b0\u008e6\u00efS\\\u00b2?\r\u00c1:\u00da\u00bcO\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?\u00b4y\u009f\u00e2\u0092!\u00b8?\r\u00c1:\u00da\u00bcO\u00b1?m\u00de\u00a7\u00b8d\b\u00b6?\u009b\u00f7).\u0019\u0082\u00b5?T\\2\u0004\u00ebh\u00b3?\u00e7}\u008aK\u0086`\u00ad?i\u00f3>\u00c5%C\u00b0?\u0019\u0082u\u00b4y\u009f\u00b2?\u00e7}\u008aK\u0086`\u00ad?\\2\u0004\u00ebh\u00f3\u00ae?m\u00de\u00a7\u00b8d\b\u00b6?\u00d2\u00e6}\u008aK\u0086\u00b0?\u0000\u0000\u0000\u0000\u0000\u0000\u00b0?&C\u00b0\u008e6\u00ef\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?\u00b0\u008e6\u00efS\\\u00b2?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?\u00f8).\u0019\u0082u\u00b4?\u0004\u00ebh\u00f3>\u00c5\u00b5?i\u00f3>\u00c5%C\u00b0?i\u00f3>\u00c5%C\u00b0?\u009f\u00e2\u0092!XG\u00ab?\u00bdOq\u00c9\u0010\u00ac\u00b3?T\\2\u0004\u00ebh\u00b3?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?\u00c9\u0010\u00ac\u00a3\u00cd\u00fb\u00b4?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00e7}\u008aK\u0086`\u00ad?v\u00b4y\u009f\u00e2\u0092\u00b1?&C\u00b0\u008e6\u00ef\u00b3?\u0086`\u001dm\u00de\u00a7\u00b8?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u0019\u0082u\u00b4y\u009f\u00b2?\u009f\u00e2\u0092!XG\u00ab??\u00c5%C\u00b0\u008e\u00b6?\u009f\u00e2\u0092!XG\u00ab?G\u009b\u00f7).\u0019\u00b2?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00d2\u00e6}\u008aK\u0086\u00b0?\u0082u\u00b4y\u009f\u00e2\u00b2?v\u00b4y\u009f\u00e2\u0092\u00b1?;\u00da\u00bcOq\u00c9\u00b0?T\\2\u0004\u00ebh\u00b3?m\u00de\u00a7\u00b8d\b\u00b6?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00e7}\u008aK\u0086`\u00ad?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u009f\u00e2\u0092!XG\u00ab?\u00f8).\u0019\u0082u\u00b4?\u0082u\u00b4y\u009f\u00e2\u00b2?\u00bdOq\u00c9\u0010\u00ac\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?\u00b0\u008e6\u00efS\\\u00b2?\u00a8\u00b8d\b\u00d6\u00d1\u00b6?\u008f6\u00efS\\2\u00b4?\u00d6\u00d1\u00e6}\u008aK\u00b6?*.\u0019\u0082u\u00b4\u00a9?\\2\u0004\u00ebh\u00f3\u00ae?\u00b0\u008e6\u00efS\\\u00b2?\\2\u0004\u00ebh\u00f3\u00ae?T\\2\u0004\u00ebh\u00b3?G\u009b\u00f7).\u0019\u00b2?\u0082u\u00b4y\u009f\u00e2\u00b2?C\u00b0\u008e6\u00efS\u00ac?\u00b0\u008e6\u00efS\\\u00b2?\u0004\u00ebh\u00f3>\u00c5\u00b5?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00ce\u00fb\u0014\u0097\f\u00c1\u00aa?a\u001dm\u00de\u00a7\u00b8\u00b4?.\u0019\u0082u\u00b4y\u00af?\u0082u\u00b4y\u009f\u00e2\u00b2?v\u00b4y\u009f\u00e2\u0092\u00b1?\u00b0\u008e6\u00efS\\\u00b2?m\u00de\u00a7\u00b8d\b\u00b6?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00b0\u008e6\u00efS\\\u00b2?\r\u00c1:\u00da\u00bcO\u00b1?\u0019\u0082u\u00b4y\u009f\u00b2?\u00de\u00a7\u00b8d\b\u00d6\u00b1?v\u00b4y\u009f\u00e2\u0092\u00b1?\u00f8).\u0019\u0082u\u00b4?&C\u00b0\u008e6\u00ef\u00b3?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u008aK\u0086`\u001dm\u00ae?\r\u00c1:\u00da\u00bcO\u00b1?\u00d2\u00e6}\u008aK\u0086\u00b0?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?\u00d2\u00e6}\u008aK\u0086\u00b0?\r\u00c1:\u00da\u00bcO\u00b1?\u0004\u00ebh\u00f3>\u00c5\u00b5?\u0019\u0082u\u00b4y\u009f\u00b2?;\u00da\u00bcOq\u00c9\u00b0?2\u0004\u00ebh\u00f3>\u00b5?G\u009b\u00f7).\u0019\u00b2?\u00d2\u00e6}\u008aK\u0086\u00b0?m\u00de\u00a7\u00b8d\b\u00b6?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00d2\u00e6}\u008aK\u0086\u00b0?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u0000\u0000\u0000\u0000\u0000\u0000\u00b0?\u00c9\u0010\u00ac\u00a3\u00cd\u00fb\u00b4?\u0082u\u00b4y\u009f\u00e2\u00b2?\u00b0\u008e6\u00efS\\\u00b2?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00de\u00a7\u00b8d\b\u00d6\u00b1?2\u0004\u00ebh\u00f3>\u00b5?C\u00b0\u008e6\u00efS\u00ac?"}}}}, "start_time": {"__class__": "datetime", "__module__": "datetime", ":is_custom:": true, "isotime": "2024-03-06T17:14:16.112945"}, "end_time": {"__class__": "datetime", "__module__": "datetime", ":is_custom:": true, "isotime": "2024-03-06T17:15:35.963930"}, "__qualname__": "ProtocolUnitResult", "__module__": "gufe.protocols.protocolunit", ":version:": 1}]}}, "__qualname__": "AbsoluteSolvationProtocolResult", "__module__": "openfe.protocols.openmm_afe.equil_solvation_afe_method", ":version:": 1}, "unit_results": {"ProtocolUnitResult-7571b445816d4ea383e1be915c41b24f": {"name": "Absolute Solvation, benzene solvent leg: repeat 0 generation 0", "_key": "ProtocolUnitResult-7571b445816d4ea383e1be915c41b24f", "source_key": "AbsoluteSolvationSolventUnit-1d05404cbfd246fb9fd8e8256d6280c5", "inputs": {"protocol": {":gufe-key:": "AbsoluteSolvationProtocol-d127cf265cfd04054dfd96001983268b"}, "stateA": {":gufe-key:": "ChemicalSystem-bccec9dd1e516db5ac7ff2763fdd4f7c"}, "stateB": {":gufe-key:": "ChemicalSystem-fed9973d1274c4ca7a68fc66a0a753da"}, "alchemical_components": {"stateA": [{":gufe-key:": "SmallMoleculeComponent-b01ddf596bc809274f3809d9878c60ba"}], "stateB": []}, "repeat_id": 23375512213741230270651942912798595258, "generation": 0}, "outputs": {"repeat_id": 23375512213741230270651942912798595258, "generation": 0, "simtype": "solvent", "nc": {"__class__": "PosixPath", "__module__": "pathlib", ":is_custom:": true, "path": "results/benzene/shared_AbsoluteSolvationSolventUnit-1d05404cbfd246fb9fd8e8256d6280c5_attempt_0/solvent.nc"}, "last_checkpoint": "solvent_checkpoint.nc", "unit_estimate": {"magnitude": -1.6389659304488668, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "unit_estimate_error": {"magnitude": 0.15858774534481787, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "unit_mbar_overlap": {"scalar": 0.04105662489713835, "eigenvalues": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "4\u0000\u0000\u0000\u0000\u0000\u00f0?{\u000bY\u0004\u00aa\u00af\u00ee?:_\u00c5w\u00ae \u00b5\u0092\u00d1?\u008bl\u0012/_X\u00bd?\u009e\u00d6\u00b4\u00d9x5\u00a4?\u00afs\u0092\u0018\u00ffT\u008a?{$b\u00d2\u00dd\u00e2\u0087?\u00cd\u008b\u00d8\u00f3mK\u0080?\u009d|(8\u0011il?\u00bb\u00d0\u00c5\u00fc5aK?\u00c9\u0018\u001b\u00a6H\u00a5\u0018?\u009c\u00b4_\u00bdRQ\u00d9>\u00b72\\R\u00fe\u00bf\u0097>t\u00ca+\u0089!0F>N\u00f4\u00ccc\u00a0\u00fe\u00e1=\u00e1>\u00ae \u00b5\u0092\u00d1?\u00b9z\u001b\u009d\u00eb\u00c3\u00d1?\u000f\u0098x\u00eb6C\u00c9?\u00d1\u00e5\u00a8V/\u00f6\u00bb?^\u0080\u00be\u00f1e\u00cd\u00ab?\u009c\u008eO9\u0019\u000f\u00a7?\u00b7X\u00c8\u00d4\u0017\u008c\u009c?d\u00d6\u0086\u00b5\u00ff\u00ea\u0086?\u00cc\u000e\u008b\u0086\u0019\u00dbd?\u00e9\u00f1\u00a9r()2?\u00ec\u0016\u00da\u00a3\u008ej\u00f2>\u00f8)\u00a9\u0002\u00ae9\u00b1>\u0019Qd\u0090\u00bf\u001d`>\u0092.\u00ab\u00e6\u0094|\u00fa=\u008bl\u0012/_X\u00bd?\u000f\u0098x\u00eb6C\u00c9?%\u00a9\u00ec\u00e9\u00f1O\u00cb?\u00e1\u001e={5T\u00c6?\u0005\u00d1Y4\u00bf\u008e\u00bf?\u00d6^}\u00f3f\u008c\u00b8?&\u00147+\u00e5A\u00ac?lo\u00b9\u0004\u00b7K\u0095?\u0004\u00c6l\u00b6\u00ba\u0085r?\u00a1\u00b7\u00de\u00f6\u00d2j??o\u0090\u00e8\u0007\u00a1\u008d\u00ff>\u009d-\u00d7\u00fa\u0090x\u00bd>l:G\u00a3\u0004\u00a5k>\u00bf\r:\u00da/\u0005\u0007>\u009e\u00d6\u00b4\u00d9x5\u00a4?\u00d1\u00e5\u00a8V/\u00f6\u00bb?\u00e1\u001e={5T\u00c6?\u000fcX\u0095\u00c9Y\u00ca?\u00cd\u00f9nF\u00e1\u00e6\u00c9?\u00ccj8g\u00f77\u00c3?\u009e\u0015\r\u001e\u0007\u00fe\u00b4?\u0096\u0084\u00ae\n\u009eF\u009e?S'\u0094\u0089j\u0086y?{\u001f\u00fc\u0087^@E?\u009f\u00c5y\u00f4H0\u0005?\u00ffPJ`\u00f0\u00c1\u00c3>\u00aa\u0099T\u00be\u00f2\u008br>\u00efL]\u0015\u009f\u0014\u000f>\u00afs\u0092\u0018\u00ffT\u008a?^\u0080\u00be\u00f1e\u00cd\u00ab?\u0005\u00d1Y4\u00bf\u008e\u00bf?\u00cd\u00f9nF\u00e1\u00e6\u00c9?\u00fd\u0000\u0084\t\u00c6\u001d\u00d1?\u00fb\u00a5\u000fJ]\u00b2\u00c8?\"DY.\u009b7\u00ba?f~\u00f4\u0097\u00b2{\u00a2?\u0099Y\u00aa\u00a3`\u00af~?\u00cf\u00e4\u00fb)h\u00f9\u0007\u009f\u00e9u>4\u0091\u009aP\u0099[\u0012>{$b\u00d2\u00dd\u00e2\u0087?\u009c\u008eO9\u0019\u000f\u00a7?\u00d6^}\u00f3f\u008c\u00b8?\u00ccj8g\u00f77\u00c3?\u00fb\u00a5\u000fJ]\u00b2\u00c8?\u00a3\u00ef~\u0086\u00d5\u001d\u00cb?i\u00b2\u0094\u00b7\u0019n\u00c6?\u0012\u00ed\u00f0MS\u00f8\u00b6?\u00d5\u00e3\u00dc\u008b\u0083\u00ea\u0098?)\u00f7\u00e4\u00ec\u00e4Kh?\u00b7N\u008b\u00bc\u00e1\u000f*?\u00ff\u0097\nR\u0018\u00f2\u00e8>Z}\bp<\u00a6\u0097>\u00ae\u00e2\u0019\u0015\u00feW3>\u00cd\u008b\u00d8\u00f3mK\u0080?\u00b7X\u00c8\u00d4\u0017\u008c\u009c?&\u00147+\u00e5A\u00ac?\u009e\u0015\r\u001e\u0007\u00fe\u00b4?\"DY.\u009b7\u00ba?i\u00b2\u0094\u00b7\u0019n\u00c6?\u00b1\u0017)#Ap\u00cf?\u00a8)\u00f1\u0016\u00e6p\u00ca?Qy\u00d5\u00d3\u009c5\u00b5?XcTJc\f\u008b?\u00af\t\u001f\u0082k\u00b9P?\u00b4\u0016KwI\u0011\u0011?\u00a9U\u0094\u00d7\u00f7\u00eb\u00c0>\u0017\u00a6`nO_\\>\u009d|(8\u0011il?d\u00d6\u0086\u00b5\u00ff\u00ea\u0086?lo\u00b9\u0004\u00b7K\u0095?\u0096\u0084\u00ae\n\u009eF\u009e?f~\u00f4\u0097\u00b2{\u00a2?\u0012\u00ed\u00f0MS\u00f8\u00b6?\u00a8)\u00f1\u0016\u00e6p\u00ca?RxMh\u00f3\u00e9\u00d3?s\u00a3\u0001\u00c0c\u00cb\u00cc?q:\u00da\u00a4\u00c8\u008c\u00ae?\u00b7\u0084\u0010\u009a\u00b3\u00ddy?\u00d3\u00ba/^\u00d0\u00dc>?4\u00a7\n\u00b7H@\u00f1>8J\u00fb4\u00ab\u008d\u008f>\u00bb\u00d0\u00c5\u00fc5aK?\u00cc\u000e\u008b\u0086\u0019\u00dbd?\u0004\u00c6l\u00b6\u00ba\u0085r?S'\u0094\u0089j\u0086y?\u0099Y\u00aa\u00a3`\u00af~?\u00d5\u00e3\u00dc\u008b\u0083\u00ea\u0098?Qy\u00d5\u00d3\u009c5\u00b5?s\u00a3\u0001\u00c0c\u00cb\u00cc?)w\u00ff\u00f6\u00af\u00cf\u00d7?\u00db\u00fc\u00e3ap\u00f8\u00cc?$\u00e6\"#K\u0016\u00a6?\u0087\u0093\u00bf3\u00f6kr?\u0083\u008f`ce\u00b7+?\u00bd\u00b1\u0004\u0093\u00e0z\u00d1>\u00c9\u0018\u001b\u00a6H\u00a5\u0018?\u00e9\u00f1\u00a9r()2?\u00a1\u00b7\u00de\u00f6\u00d2j??{\u001f\u00fc\u0087^@E?\u00cf\u00e4\u00fb\u00ec\u0016\u00da\u00a3\u008ej\u00f2>o\u0090\u00e8\u0007\u00a1\u008d\u00ff>\u009f\u00c5y\u00f4H0\u0005??\u00ca\u00feC\n\u001c\t?\u00b7N\u008b\u00bc\u00e1\u000f*?\u00af\t\u001f\u0082k\u00b9P?\u00b7\u0084\u0010\u009a\u00b3\u00ddy?$\u00e6\"#K\u0016\u00a6?\u00c7\"\u0082AC\u001f\u00cd?[\u00e8W\u00d2\u00a7\u0001\u00da?\u00f2\u00d7j\u00cfm|\u00cd?\u00e1\u009bW\u00e9\u008d\u00a2\u00b1?!\u00d4\u00a2\u00ba\u00cft\u0090?\u00b72\\R\u00fe\u00bf\u0097>\u00f8)\u00a9\u0002\u00ae9\u00b1>\u009d-\u00d7\u00fa\u0090x\u00bd>\u00ffPJ`\u00f0\u00c1\u00c3>\u007f^\u009d\u0001\u0093^\u00c7>\u00ff\u0097\nR\u0018\u00f2\u00e8>\u00b4\u0016KwI\u0011\u0011?\u00d3\u00ba/^\u00d0\u00dc>?\u0087\u0093\u00bf3\u00f6kr?x\u00a4\u00ee4B\u00fd\u00a7?\u00f2\u00d7j\u00cfm|\u00cd?w\u0006\u00c5\u00c7ih\u00d5?\u00895\n\u00dd\u0092g\u00cf?\u0098\\\u00c5\u00b9A\u00a6\u00c1?t\u00ca+\u0089!0F>\u0019Qd\u0090\u00bf\u001d`>l:G\u00a3\u0004\u00a5k>\u00aa\u0099T\u00be\u00f2\u008br>)h\u00f9\u0007\u009f\u00e9u>Z}\bp<\u00a6\u0097>\u00a9U\u0094\u00d7\u00f7\u00eb\u00c0>4\u00a7\n\u00b7H@\u00f1>\u0083\u008f`ce\u00b7+?\u00bc=q\u008b\u008e\u008dq?\u00e1\u009bW\u00e9\u008d\u00a2\u00b1?\u00895\n\u00dd\u0092g\u00cf?{7\u0085}\u0000\u001e\u00d6?\u00d6&\u00cf|\u0095{\u00d5?N\u00f4\u00ccc\u00a0\u00fe\u00e1=\u0092.\u00ab\u00e6\u0094|\u00fa=\u00bf\r:\u00da/\u0005\u0007>\u00efL]\u0015\u009f\u0014\u000f>4\u0091\u009aP\u0099[\u0012>\u00ae\u00e2\u0019\u0015\u00feW3>\u0017\u00a6`nO_\\>8J\u00fb4\u00ab\u008d\u008f>\u00bd\u00b1\u0004\u0093\u00e0z\u00d1>\u00ea\u00c5y\u00f9\u00041*?!\u00d4\u00a2\u00ba\u00cft\u0090?\u0098\\\u00c5\u00b9A\u00a6\u00c1?\u00d6&\u00cf|\u0095{\u00d5?v\u008a\u000e\u00f7QS\u00e0?"}}}, "forward_and_reverse_energies": {"fractions": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0088\u008e\u00e1\u00c5y\u00e8\u00b8?\u009a\u0099\u0099\u0099\u0099\u0099\u00c9?o0E>\u00eb\u0006\u00d3?\u009a\u0099\u0099\u0099\u0099\u0099\u00d9?<\u00fd\u0011\u000b\u00b8\u00d3\u00df?333333\u00e3?\u0004e\u00efkBP\u00e6?\u009a\u0099\u0099\u0099\u0099\u0099\u00e9?k\u00cbU\u00d2\u00a8\u00b6\u00ec?\u0000\u0000\u0000\u0000\u0000\u0000\u00f0?"}}, "forward_DGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00a1\u0015\"\u009c\u00be\u00ea\u0011@\u0012\u007f\u008co\u00197\t@\u00f7s\u00d1\u00da\u00e4\u00e3\f@\u0092\u00f6\u00a3\u00e6G=\u00e2?\n\u00f5h\u00a1\u00c6\u00db\u00c0\u00bf\u00a2\u00b9\u0005\u00bf\u00ac\u00fe\u00e3?^E\u0014\u008cN,\u00f2\u00bf\u0002\u0004\u00ef4j\u00a4\u00ec\u00bf\u00bf`\u00b3\u008b\u000b\u00f3\u00fb\u00bf\u00d7\u0093\u00e8V49\u00fa\u00bf"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "forward_dDGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00aaT\u00df\u008d\u00fd\u0014\u00d9?\u00d8\u0001\u00fc\u0089\u0017\u0006\u00d3?\u00c5L\u00e2\u00f9I@\u00ce?\u0018'\u0006Y3y\u00cd?\u00ac\u00ab\\\u00bf\u00e0\u0017\u00cb?\u00f3D\u00a1\u00b8\u00b3\u0007\u00c8?\u00d3\u00f1\u008c\u00d1\r\u00a9\u00c7?\u00e8\u00ccI\u00a8y\u00fd\u00c5?\u00af1\u00bd\u0003\u008fy\u00c5?\u0007\u00b4\u00e6m\u009aL\u00c4?"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "reverse_DGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "9\u009e\u00c7\u00b5b\u00c5\u0002\u00c0l\u00ff\u0091\u0090b\u00fc\u0015\u00c0o\u00b7\u00a6\u0012\u008aG\u00fd\u00bf\u001e\u009f\u00bb/\u00f6\u00c8\u0018\u00c0\u001c\u008dR\u001b\u00fe3\r\u00c0\u00c4&\u0004Aq\u0002\u000b\u00c0>\u00b7\u00ba\u00cep\u00d0\u0014\u00c0/\u0093\u008b\u008e\u00c7~\t\u00c0y\fc\u00ae\u00ba\u0002\u0006\u00c0\u00d7\u0093\u00e8V49\u00fa\u00bf"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "reverse_dDGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0085'$\u0012[\u00f9\u00e0?\u00f3\u00d4\u00d7\u00ce\u00f2\r\u00da?3\u00cc\u00b2\u00c8\u00da\u001b\u00d3?\u00ae\u0091,\u00d4\u0095\u00d0\u00d2?uVe\u00f8\u00b5\b\u00cf?u\t\u0012a\u00c6\u00dd\u00cb?O\u00c5\u00db\u00e2\u00d2F\u00cb?\u00a8p\u0010Z\u008e\u00c2\u00c7?\u001fO\u00e3v\u00b8A\u00c6?\u0007\u00b4\u00e6m\u009aL\u00c4?"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}}, "production_iterations": 185.4853057861328, "equilibration_iterations": 6.0, "replica_exchange_statistics": {"eigenvalues": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00e9\u00ff\u00ff\u00ff\u00ff\u00ff\u00ef?0\u00be\r\u0085K\f\u00ef?\u0012\u00bb~f\u0084\u00ea\u00ea??h\u00cc\u00bfS\u00c5\u00e6?L!\u00ca\u00c2H\u00c9\u00e3?\u00a3PdB:P\u00df?\u00e5#\u00bd\u00e9\u00f9\u008e\u00d6?\u00bf\u00a6\u00e5~\u00cf\u00f0\u00d4?\u009dA\u0014\b\u00f0\u00ce\u00d0?\b%\u00e7U\u008e\u0000\u00c5?A\tp0\u00d7\u00dc\u00c2?ug\u00d6\u00e5\f\u00a7\u00b7?\u00be.\u001dD\u0081\u00e1\u009c?Y<\u00d2Dc0\u0087?"}}, "matrix": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14, 14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00aeUg\u00fdx\u0093\u00e4?\u008a\u00f3w]\u00fcB\u00cb?|\u001aa\u00b9\u00a7\u0011\u00b6?F=r4\u00a7\u00f6\u0099?\u00e8%\u00b3c@\u0014\u008d?\u00ccs\u0085\u001b\u0097\u00b1\u0082?\u00e8%\u00b3c@\u0014}?`\u0083\u00af\u00a6\u00db\u009d`?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u008a\u00f3w]\u00fcB\u00cb?\u0003\u0087l\u000bR\u00aa\u00d8?\u009d\u00f5\u00e3M\u00d2\u00b7\u00c6?+\u00c1\u00a8,\u0012\u00e1?\u00d3\u00d2\u00d2\u00d2\u00d2\u00d2\u00c2?|5\u00dd\u00ee\u0084\u0000\u009b?`\u0083\u00af\u00a6\u00db\u009d`?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000`\u0083\u00af\u00a6\u00db\u009dP?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000`\u0083\u00af\u00a6\u00db\u009dP?\u0010E\u0007z\u00c9\u00ecx?\u00e8%\u00b3c@\u0014\u008d?\u00a4T1\u0005\u000e\u00d9\u00a6?\u00d3\u00d2\u00d2\u00d2\u00d2\u00d2\u00c2?\u00fb\f\u00a3\u001e9\u009a\u00e3?\u00da1 \u008a\u000e\u00f4\u00c2?8d[\u0090R\u00c5\u0094?8d[\u0090R\u00c5t?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000`\u0083\u00af\u00a6\u00db\u009dP?`\u0083\u00af\u00a6\u00db\u009d`?\u0010E\u0007z\u00c9\u00ecx?|5\u00dd\u00ee\u0084\u0000\u009b?\u00da1 \u008a\u000e\u00f4\u00c2?I\u00c4\u00de?\u00f9\u00a0\u00e2?\u00b2\u0012\u00ccs\u0085\u001b\u00c7?\u00a4T1\u0005\u000e\u00d9\u00a6?\u00ccs\u0085\u001b\u0097\u00b1\u0082?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000`\u0083\u00af\u00a6\u00db\u009d`?8d[\u0090R\u00c5\u0094?\u00b2\u0012\u00ccs\u0085\u001b\u00c7?[u\u00d6\u008f7I\u00df?\u00c0\u00eb\u00e2\u0017\u00daL\u00cc?\u0089\u00d8\u00fb'\u001fT\u00b6?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00008d[\u0090R\u00c5t?\u00a4T1\u0005\u000e\u00d9\u00a6?\u00c0\u00eb\u00e2\u0017\u00daL\u00cc?\u00c6J0\u00cf\u0015n\u00dc?4\u00a7\u00f6\u0019F=\u00d2?\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u00ccs\u0085\u001b\u0097\u00b1\u0082?\u0089\u00d8\u00fb'\u001fT\u00b6?4\u00a7\u00f6\u0019F=\u00d2?\u0085\u001b\u0097\u00b1\u0012\u00cc\u00e3?"}}}}, "start_time": {"__class__": "datetime", "__module__": "datetime", ":is_custom:": true, "isotime": "2024-03-06T17:15:35.964193"}, "end_time": {"__class__": "datetime", "__module__": "datetime", ":is_custom:": true, "isotime": "2024-03-06T17:24:08.581624"}, "__qualname__": "ProtocolUnitResult", "__module__": "gufe.protocols.protocolunit", ":version:": 1}, "ProtocolUnitResult-4e48b3dcdbf44c828added08e40a0781": {"name": "Absolute Solvation, benzene vacuum leg: repeat 0 generation 0", "_key": "ProtocolUnitResult-4e48b3dcdbf44c828added08e40a0781", "source_key": "AbsoluteSolvationVacuumUnit-718f88d975dc4a4aacc6e60f688d3bbb", "inputs": {"protocol": {":gufe-key:": "AbsoluteSolvationProtocol-d127cf265cfd04054dfd96001983268b"}, "stateA": {":gufe-key:": "ChemicalSystem-bccec9dd1e516db5ac7ff2763fdd4f7c"}, "stateB": {":gufe-key:": "ChemicalSystem-fed9973d1274c4ca7a68fc66a0a753da"}, "alchemical_components": {"stateA": [{":gufe-key:": "SmallMoleculeComponent-b01ddf596bc809274f3809d9878c60ba"}], "stateB": []}, "repeat_id": 279370490201278614325565891219309171778, "generation": 0}, "outputs": {"repeat_id": 279370490201278614325565891219309171778, "generation": 0, "simtype": "vacuum", "nc": {"__class__": "PosixPath", "__module__": "pathlib", ":is_custom:": true, "path": "results/benzene/shared_AbsoluteSolvationVacuumUnit-718f88d975dc4a4aacc6e60f688d3bbb_attempt_0/vacuum.nc"}, "last_checkpoint": "vacuum_checkpoint.nc", "unit_estimate": {"magnitude": -2.392584945619364, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "unit_estimate_error": {"magnitude": 0.00026550810663754316, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "unit_mbar_overlap": {"scalar": 0.9999095748969496, "eigenvalues": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0000\u0000\u0000\u0000\u0000\u0000\u00f0?L\u0090\u00fcpS\u00b4\u0017?\u009a\u007f\u0007\u000e\u00d0\u00c30>\u00e2Z5\u00c23LH=\u009d\u00a2I \u0000\u0005\u00e9<-\u009e\u00a3\u00d5\u0098x\u0099;p\u00a4\u0086\u0010`@\u00cf8h\u007f\u00b0\u00a2h\u00a5\u00fa1\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000Yo\u00e4QiC\r\u00af\u0014\"8\u0094\u00112\u00d3\u00b1`s\u0013\u00a0T\u00c0-\u00b5\u00f2\u0012\u000e\u00c4\u00b3\u000e\u008b\u00b5\u0000\u0000\u0000\u0000\u0000\u00d13\u00b6"}}, "matrix": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14, 14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "t\u008d\u00ae\u00c0\u00f5K\u00b2?J\u00a8\u00e3\u00f3\u0012K\u00b2?\b\u001f\u00a9\u00c1@J\u00b2?#\u00fc\u0096\u00ebdI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00ea\u00f7j)\u0088H\u00b2?J\u00a8\u00e3\u00f3\u0012K\u00b2?\u0004\u00e3\u001e\u0081wJ\u00b2?<\u00d6\u0015k\u00e7I\u00b2?y^\u00a9\u00b4PI\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\u00a09\u0086W\u00b9H\u00b2?\b\u001f\u00a9\u00c1@J\u00b2?<\u00d6\u0015k\u00e7I\u00b2?\u0018>\u0013\u0099\u0094I\u00b2?\f\u00a7\u00c6\u00f4=I\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?#\u00fc\u0096\u00ebdI\u00b2?y^\u00a9\u00b4PI\u00b2?\f\u00a7\u00c6\u00f4=I\u00b2?\u00f5\u00fa\u00d7T*I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u00ea\u00f7j)\u0088H\u00b2?\u00a09\u0086W\u00b9H\u00b2?j\u001dW\u00ed\u00e6H\u00b2?\u00ec\u0019\u00d0\u009b\u0016I\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?\u001c\u008f\u00fd~FI\u00b2?"}}}, "forward_and_reverse_energies": {"fractions": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00ec\f\u00b0\u001e\u00e2\b\u00b9?\u008d\u00ba\r\u009b@p\u00c9?R\u00b7a\u0013\b.\u00d3?\u008d\u00ba\r\u009b@p\u00d9?\u0098\u0094\u00e8`(\u00e6\u00df?R\u00b7a\u0013\b.\u00e3?\u00ef\u00b87W$O\u00e6?\u00f5%%:\u0018\u008a\u00e9?\u00fa\u0092\u0012\u001d\f\u00c5\u00ec?\u0000\u0000\u0000\u0000\u0000\u0000\u00f0?"}}, "forward_DGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0098[A\u00d4\u00ef&\u0003\u00c0W\u00ee#Az$\u0003\u00c0/*;\u000b\u00d9#\u0003\u00c0(\u000ebf\u00ba%\u0003\u00c0\u00afM\u00d0\u0085\u0083%\u0003\u00c0\u0094\u008b\u0005\u00bd*%\u0003\u00c0\u001fQ=j\u0090$\u0003\u00c0\u0017\u0085G\u00d4i$\u0003\u00c0\u00c0\u00b5\u00ff\u00bd_$\u0003\u00c0e\u00b2r\u0093\u0003$\u0003\u00c0"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "forward_dDGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "[Q)\u00a6\u00ee\u0093K?_E0Ot\u00f1B?\u00c9\u00023\u0012\u00cc\u0086>?\u0006bo'Y\u00cf;?\u00a5\u009e\u00ed\u00c8\u0094\u00a58?Cq~m\u00baI6?t5\u00e5\u00dc\u009e\u00a34?H\u00eb\u00e1\u0093\u0018F3?a\u00a6\u0001\tHJ2?\u00f7J\u0084\u00a2|f1?"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "reverse_DGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00b9\u00d8\u0093\u0011\u00c5 \u0003\u00c05\u001d\u00eea\u0094\"\u0003\u00c0\u00a3pu\u0013\u00be\"\u0003\u00c0\u00ad\u00f2\u00e4\u0013X\"\u0003\u00c0\t\u00af\u00ca\u0091\u0085\"\u0003\u00c0\u00a6\u00e3/\u0095\u00e8\"\u0003\u00c0\u00cbe\u00be\u00eb\u0002$\u0003\u00c0'\u0085\u00f5\u0095\u00da#\u0003\u00c0\u000f\u00f0.\u00cb\u00b2#\u0003\u00c0e\u00b2r\u0093\u0003$\u0003\u00c0"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}, "reverse_dDGs": {"magnitude": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [10], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": ">p\u000f\u00f6\u00d7\u00baL?\u0093\u00f5lUmVD?\u00ea({\u008f\u00f46@?\u008796C{\u00e9;?\u0013\u001bh\u0011\u00f0\u00988?gh\u009d\u00bb\u00f2\\6?\u0083t\u00ce\u00a8k&5?\u00e3\u00b5\u00a6U\u0084\u00953?l\u00f2?\u00fd\u00b5^2?\u00f7J\u0084\u00a2|f1?"}}, "unit": "kilocalorie_per_mole", ":is_custom:": true, "pint_unit_registry": "openff_units"}}, "production_iterations": 317.3360900878906, "equilibration_iterations": 11.0, "replica_exchange_statistics": {"eigenvalues": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u00fb\u00ff\u00ff\u00ff\u00ff\u00ff\u00ef?\u00e0\u0098\u00b1\u0086\u00e6>\u00b0?ST\u00b8\bDn\u00ab?\u00b3]\u001daw\u00ed\u00a0?\u00e1\u0081\u00d5K\u00e8\r\u009a?W\u00a7b\u00f39a\u0085?(\u00db\u001d\u0084\u00d7\u00e2M\u00bfM\u00af\u00e2\u00f1\u00f0\u00d8y\u00bf\u00ab\u00fc\u008b\u00be\u00cb\u0003\u0094\u00bf\u00ea\r%\u0087\u0001\u00c8\u0096\u00bf\u00f9\u00bb+\u008e.g\u009f\u00bf\u00c0\n\u00ec\u0012\u00aaY\u00a1\u00bf\u00b9\u00b9\u009f\u0006\u00a9-\u00aa\u00bf\u0015\u0001\u00ee\u00feX\u00bb\u00ac\u00bf"}}, "matrix": {"__class__": "ndarray", "__module__": "numpy", ":is_custom:": true, "dtype": "float64", "shape": [14, 14], "bytes": {"__class__": "bytes", "__module__": "builtins", ":is_custom:": true, "latin-1": "\u0011\u00ac\u00a3\u00cd\u00fb\u0014\u00b7?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u0082u\u00b4y\u009f\u00e2\u00b2?\u0000\u0000\u0000\u0000\u0000\u0000\u00b0?a\u001dm\u00de\u00a7\u00b8\u00b4?\u00b9d\b\u00d6\u00d1\u00e6\u00ad?\r\u00c1:\u00da\u00bcO\u00b1?&C\u00b0\u008e6\u00ef\u00b3?\u00de\u00a7\u00b8d\b\u00d6\u00b1?v\u00b4y\u009f\u00e2\u0092\u00b1?\u00a8\u00b8d\b\u00d6\u00d1\u00b6?\u00ce\u00fb\u0014\u0097\f\u00c1\u00aa?v\u00b4y\u009f\u00e2\u0092\u00b1?G\u009b\u00f7).\u0019\u00b2?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00b0\u008e6\u00efS\\\u00b2?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00b9d\b\u00d6\u00d1\u00e6\u00ad?\r\u00c1:\u00da\u00bcO\u00b1?\u00b4y\u009f\u00e2\u0092!\u00b8?\r\u00c1:\u00da\u00bcO\u00b1?\u00e7}\u008aK\u0086`\u00ad?;\u00da\u00bcOq\u00c9\u00b0?\u008f6\u00efS\\2\u00b4?a\u001dm\u00de\u00a7\u00b8\u00b4?\u00f8).\u0019\u0082u\u00b4?\u00d2\u00e6}\u008aK\u0086\u00b0?\u0082u\u00b4y\u009f\u00e2\u00b2?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?C\u00b0\u008e6\u00efS\u00ac?\u00de\u00a7\u00b8d\b\u00d6\u00b1?.\u0019\u0082u\u00b4y\u00af?\u00bdOq\u00c9\u0010\u00ac\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?\u00b0\u008e6\u00efS\\\u00b2?v\u00b4y\u009f\u00e2\u0092\u00b1?T\\2\u0004\u00ebh\u00b3?\u00d6\u00d1\u00e6}\u008aK\u00b6?.\u0019\u0082u\u00b4y\u00af?&C\u00b0\u008e6\u00ef\u00b3?m\u00de\u00a7\u00b8d\b\u00b6?\u0000\u0000\u0000\u0000\u0000\u0000\u00b0?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00de\u00a7\u00b8d\b\u00d6\u00b1?;\u00da\u00bcOq\u00c9\u00b0?G\u009b\u00f7).\u0019\u00b2?\r\u00c1:\u00da\u00bcO\u00b1?m\u00de\u00a7\u00b8d\b\u00b6?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?&C\u00b0\u008e6\u00ef\u00b3?m\u00de\u00a7\u00b8d\b\u00b6?*.\u0019\u0082u\u00b4\u00a9?\u0082u\u00b4y\u009f\u00e2\u00b2?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00de\u00a7\u00b8d\b\u00d6\u00b1?a\u001dm\u00de\u00a7\u00b8\u00b4?\u00b9d\b\u00d6\u00d1\u00e6\u00ad?.\u0019\u0082u\u00b4y\u00af?G\u009b\u00f7).\u0019\u00b2?\u009b\u00f7).\u0019\u0082\u00b5?.\u0019\u0082u\u00b4y\u00af?\u009b\u00f7).\u0019\u0082\u00b5?\u00f8).\u0019\u0082u\u00b4?\u0086`\u001dm\u00de\u00a7\u00b8?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\\2\u0004\u00ebh\u00f3\u00ae?v\u00b4y\u009f\u00e2\u0092\u00b1?\u008aK\u0086`\u001dm\u00ae?\u00d2\u00e6}\u008aK\u0086\u00b0?\u00b9d\b\u00d6\u00d1\u00e6\u00ad?\r\u00c1:\u00da\u00bcO\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?.\u0019\u0082u\u00b4y\u00af?;\u00da\u00bcOq\u00c9\u00b0?T\\2\u0004\u00ebh\u00b3?\u0004\u00ebh\u00f3>\u00c5\u00b5?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00b0\u008e6\u00efS\\\u00b2?\u00b0\u008e6\u00efS\\\u00b2?\r\u00c1:\u00da\u00bcO\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?\u00b4y\u009f\u00e2\u0092!\u00b8?\r\u00c1:\u00da\u00bcO\u00b1?m\u00de\u00a7\u00b8d\b\u00b6?\u009b\u00f7).\u0019\u0082\u00b5?T\\2\u0004\u00ebh\u00b3?\u00e7}\u008aK\u0086`\u00ad?i\u00f3>\u00c5%C\u00b0?\u0019\u0082u\u00b4y\u009f\u00b2?\u00e7}\u008aK\u0086`\u00ad?\\2\u0004\u00ebh\u00f3\u00ae?m\u00de\u00a7\u00b8d\b\u00b6?\u00d2\u00e6}\u008aK\u0086\u00b0?\u0000\u0000\u0000\u0000\u0000\u0000\u00b0?&C\u00b0\u008e6\u00ef\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?\u00b0\u008e6\u00efS\\\u00b2?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?\u00f8).\u0019\u0082u\u00b4?\u0004\u00ebh\u00f3>\u00c5\u00b5?i\u00f3>\u00c5%C\u00b0?i\u00f3>\u00c5%C\u00b0?\u009f\u00e2\u0092!XG\u00ab?\u00bdOq\u00c9\u0010\u00ac\u00b3?T\\2\u0004\u00ebh\u00b3?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?\u00c9\u0010\u00ac\u00a3\u00cd\u00fb\u00b4?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00e7}\u008aK\u0086`\u00ad?v\u00b4y\u009f\u00e2\u0092\u00b1?&C\u00b0\u008e6\u00ef\u00b3?\u0086`\u001dm\u00de\u00a7\u00b8?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u0019\u0082u\u00b4y\u009f\u00b2?\u009f\u00e2\u0092!XG\u00ab??\u00c5%C\u00b0\u008e\u00b6?\u009f\u00e2\u0092!XG\u00ab?G\u009b\u00f7).\u0019\u00b2?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00d2\u00e6}\u008aK\u0086\u00b0?\u0082u\u00b4y\u009f\u00e2\u00b2?v\u00b4y\u009f\u00e2\u0092\u00b1?;\u00da\u00bcOq\u00c9\u00b0?T\\2\u0004\u00ebh\u00b3?m\u00de\u00a7\u00b8d\b\u00b6?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00e7}\u008aK\u0086`\u00ad?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u009f\u00e2\u0092!XG\u00ab?\u00f8).\u0019\u0082u\u00b4?\u0082u\u00b4y\u009f\u00e2\u00b2?\u00bdOq\u00c9\u0010\u00ac\u00b3?\r\u00c1:\u00da\u00bcO\u00b1?\u00b0\u008e6\u00efS\\\u00b2?\u00a8\u00b8d\b\u00d6\u00d1\u00b6?\u008f6\u00efS\\2\u00b4?\u00d6\u00d1\u00e6}\u008aK\u00b6?*.\u0019\u0082u\u00b4\u00a9?\\2\u0004\u00ebh\u00f3\u00ae?\u00b0\u008e6\u00efS\\\u00b2?\\2\u0004\u00ebh\u00f3\u00ae?T\\2\u0004\u00ebh\u00b3?G\u009b\u00f7).\u0019\u00b2?\u0082u\u00b4y\u009f\u00e2\u00b2?C\u00b0\u008e6\u00efS\u00ac?\u00b0\u008e6\u00efS\\\u00b2?\u0004\u00ebh\u00f3>\u00c5\u00b5?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00ce\u00fb\u0014\u0097\f\u00c1\u00aa?a\u001dm\u00de\u00a7\u00b8\u00b4?.\u0019\u0082u\u00b4y\u00af?\u0082u\u00b4y\u009f\u00e2\u00b2?v\u00b4y\u009f\u00e2\u0092\u00b1?\u00b0\u008e6\u00efS\\\u00b2?m\u00de\u00a7\u00b8d\b\u00b6?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u00b0\u008e6\u00efS\\\u00b2?\r\u00c1:\u00da\u00bcO\u00b1?\u0019\u0082u\u00b4y\u009f\u00b2?\u00de\u00a7\u00b8d\b\u00d6\u00b1?v\u00b4y\u009f\u00e2\u0092\u00b1?\u00f8).\u0019\u0082u\u00b4?&C\u00b0\u008e6\u00ef\u00b3?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u008aK\u0086`\u001dm\u00ae?\r\u00c1:\u00da\u00bcO\u00b1?\u00d2\u00e6}\u008aK\u0086\u00b0?\u00a4\u00cd\u00fb\u0014\u0097\f\u00b1?\u00d2\u00e6}\u008aK\u0086\u00b0?\r\u00c1:\u00da\u00bcO\u00b1?\u0004\u00ebh\u00f3>\u00c5\u00b5?\u0019\u0082u\u00b4y\u009f\u00b2?;\u00da\u00bcOq\u00c9\u00b0?2\u0004\u00ebh\u00f3>\u00b5?G\u009b\u00f7).\u0019\u00b2?\u00d2\u00e6}\u008aK\u0086\u00b0?m\u00de\u00a7\u00b8d\b\u00b6?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00d2\u00e6}\u008aK\u0086\u00b0?\u00bdOq\u00c9\u0010\u00ac\u00b3?\u0000\u0000\u0000\u0000\u0000\u0000\u00b0?\u00c9\u0010\u00ac\u00a3\u00cd\u00fb\u00b4?\u0082u\u00b4y\u009f\u00e2\u00b2?\u00b0\u008e6\u00efS\\\u00b2?\u00de\u00a7\u00b8d\b\u00d6\u00b1?\u00de\u00a7\u00b8d\b\u00d6\u00b1?2\u0004\u00ebh\u00f3>\u00b5?C\u00b0\u008e6\u00efS\u00ac?"}}}}, "start_time": {"__class__": "datetime", "__module__": "datetime", ":is_custom:": true, "isotime": "2024-03-06T17:14:16.112945"}, "end_time": {"__class__": "datetime", "__module__": "datetime", ":is_custom:": true, "isotime": "2024-03-06T17:15:35.963930"}, "__qualname__": "ProtocolUnitResult", "__module__": "gufe.protocols.protocolunit", ":version:": 1}}} \ No newline at end of file diff --git a/ahfe_tutorial/python_tutorial.ipynb b/ahfe_tutorial/python_tutorial.ipynb new file mode 100644 index 0000000..5c8477d --- /dev/null +++ b/ahfe_tutorial/python_tutorial.ipynb @@ -0,0 +1,968 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "35354229", + "metadata": {}, + "source": [ + "# Setting up and running absolute hydration free energy calculations\n", + "\n", + "This tutorial gives a step-by-step process to set up absolute hydration free energy (AHFE) simulation campaign using OpenFE. In this tutorial we are performing an absolute hydration free energy calculation of benzene.\n", + "\n", + "The absolute hydration free energy is obtained through a thermodynamic cycle. The interactions of the molecule are decoupled both in solvent, giving $\\Delta G$(solvent) and in vacuum, giving $\\Delta G$(vacuum), which allows calculation of the absolute hydration free energy, $\\Delta G$(AHFE). \n", + "\n", + "Note: In this protocol, the coulombic interactions of the molecule are fully turned off (annihilated), while the Lennard-Jones interactions are decoupled, meaning the intermolecular interactions turned off, keeping the intramolecular Lennard-Jones interactions." + ] + }, + { + "cell_type": "markdown", + "id": "aa696921-9fef-4a5e-ab66-a5023fa56a80", + "metadata": {}, + "source": [ + "## \"Drawing\"" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "fc97de03", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import openfe" + ] + }, + { + "cell_type": "markdown", + "id": "2fea29c3", + "metadata": {}, + "source": [ + "## 1. Loading the ligand\n", + "\n", + "First we must load the chemical models between which we wish to calculate free energies.\n", + "In this example these are initially stored in a molfile (`.sdf`) containing multiple molecules.\n", + "This can be loaded using the `SDMolSupplier` class from rdkit and passed to openfe." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "41cf8be7", + "metadata": {}, + "outputs": [], + "source": [ + "from rdkit import Chem\n", + "supp = Chem.SDMolSupplier(\"../cookbook/assets/benzene.sdf\", removeHs=False)\n", + "ligands = [openfe.SmallMoleculeComponent.from_rdkit(mol) for mol in supp]" + ] + }, + { + "cell_type": "markdown", + "id": "d0cb1329", + "metadata": {}, + "source": [ + "## 2. Creating `ChemicalSystem`s\n", + "\n", + "OpenFE describes complex molecular systems as being composed of `Component`s. For example, we have `SmallMoleculeComponent` for each small molecule in the `LigandNetwork`. We'll create a `SolventComponent` to describe the solvent.\n", + "\n", + "The `Component`s are joined in a `ChemicalSystem`, which describes all the particles in the simulation.\n", + "\n", + "In state A of the hydration free energy protocol, the ligand is fully interacting in the solvent and the `ChemicalSystem` contains both the ligand and the solvent. In the other endstate, state B, the ligand is fully decoupled in the solvent. Therefore, the `ChemicalSystem` in state B only contains the solvent.\n", + "\n", + "Note that for AHFE simulations, we are not separately defining the vacuum state, but the protocol creates that based on the solvent states." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "9d2fbc22", + "metadata": {}, + "outputs": [], + "source": [ + "# defaults are water with NaCl at 0.15 M\n", + "solvent = openfe.SolventComponent()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "710285ca", + "metadata": {}, + "outputs": [], + "source": [ + "# In state A the ligand is fully interacting in the solvent\n", + "systemA = openfe.ChemicalSystem({\n", + " 'ligand': ligands[0],\n", + " 'solvent': solvent,\n", + "}, name=ligands[0].name)\n", + "# In state B the ligand is fully decoupled in the solvent, therefore we are only defining the solvent here\n", + "systemB = openfe.ChemicalSystem({'solvent': solvent})" + ] + }, + { + "cell_type": "markdown", + "id": "33aa384c-54f4-4b42-8b6d-38b07b4e3c47", + "metadata": {}, + "source": [ + "## 3. Defining the AHFE simulation settings and creating a `Protocol`" + ] + }, + { + "cell_type": "markdown", + "id": "a0993eec-50f4-49d2-83ba-e3c166b9377e", + "metadata": {}, + "source": [ + "There are various different parameters which can be set to determine how the AHFE simulation will take place. \n", + "\n", + "The easiest way to customize protocol settings is to start with the default settings, and modify them. Many settings carry units with them." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c31c712b-4844-477b-8aa4-ded6f0c8ca5f", + "metadata": {}, + "outputs": [], + "source": [ + "from openfe.protocols.openmm_afe import AbsoluteSolvationProtocol" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "fb839094", + "metadata": {}, + "outputs": [], + "source": [ + "settings = AbsoluteSolvationProtocol.default_settings()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "8b99f77f-c70c-436d-b4eb-fb462a4b043e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'alchemical_settings': {},\n", + " 'integrator_settings': {'barostat_frequency': ,\n", + " 'constraint_tolerance': 1e-06,\n", + " 'langevin_collision_rate': ,\n", + " 'n_restart_attempts': 20,\n", + " 'reassign_velocities': False,\n", + " 'remove_com': False,\n", + " 'timestep': },\n", + " 'lambda_settings': {'lambda_elec': [0.0,\n", + " 0.25,\n", + " 0.5,\n", + " 0.75,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0],\n", + " 'lambda_restraints': [0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0],\n", + " 'lambda_vdw': [0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.12,\n", + " 0.24,\n", + " 0.36,\n", + " 0.48,\n", + " 0.6,\n", + " 0.7,\n", + " 0.77,\n", + " 0.85,\n", + " 1.0]},\n", + " 'partial_charge_settings': {'nagl_model': None,\n", + " 'number_of_conformers': None,\n", + " 'off_toolkit_backend': 'ambertools',\n", + " 'partial_charge_method': 'am1bcc'},\n", + " 'protocol_repeats': 3,\n", + " 'solvation_settings': {'solvent_model': 'tip3p',\n", + " 'solvent_padding': },\n", + " 'solvent_engine_settings': {'compute_platform': None},\n", + " 'solvent_equil_output_settings': {'checkpoint_interval': ,\n", + " 'checkpoint_storage_filename': 'checkpoint.chk',\n", + " 'equil_npt_structure': 'equil_npt_structure.pdb',\n", + " 'equil_nvt_structure': 'equil_nvt_structure.pdb',\n", + " 'forcefield_cache': 'db.json',\n", + " 'log_output': 'equil_simulation.log',\n", + " 'minimized_structure': 'minimized.pdb',\n", + " 'output_indices': 'not water',\n", + " 'preminimized_structure': 'system.pdb',\n", + " 'production_trajectory_filename': 'production_equil.xtc',\n", + " 'trajectory_write_interval': },\n", + " 'solvent_equil_simulation_settings': {'equilibration_length': ,\n", + " 'equilibration_length_nvt': ,\n", + " 'minimization_steps': 5000,\n", + " 'production_length': },\n", + " 'solvent_forcefield_settings': {'constraints': 'hbonds',\n", + " 'forcefields': ['amber/ff14SB.xml',\n", + " 'amber/tip3p_standard.xml',\n", + " 'amber/tip3p_HFE_multivalent.xml',\n", + " 'amber/phosaa10.xml'],\n", + " 'hydrogen_mass': 3.0,\n", + " 'nonbonded_cutoff': ,\n", + " 'nonbonded_method': 'PME',\n", + " 'rigid_water': True,\n", + " 'small_molecule_forcefield': 'openff-2.0.0'},\n", + " 'solvent_output_settings': {'checkpoint_interval': ,\n", + " 'checkpoint_storage_filename': 'solvent_checkpoint.nc',\n", + " 'forcefield_cache': 'db.json',\n", + " 'output_filename': 'solvent.nc',\n", + " 'output_indices': 'not water',\n", + " 'output_structure': 'hybrid_system.pdb'},\n", + " 'solvent_simulation_settings': {'early_termination_target_error': ,\n", + " 'equilibration_length': ,\n", + " 'minimization_steps': 5000,\n", + " 'n_replicas': 14,\n", + " 'production_length': ,\n", + " 'real_time_analysis_interval': ,\n", + " 'real_time_analysis_minimum_time': ,\n", + " 'sampler_method': 'repex',\n", + " 'sams_flatness_criteria': 'logZ-flatness',\n", + " 'sams_gamma0': 1.0,\n", + " 'time_per_iteration': },\n", + " 'thermo_settings': {'ph': None,\n", + " 'pressure': ,\n", + " 'redox_potential': None,\n", + " 'temperature': },\n", + " 'vacuum_engine_settings': {'compute_platform': None},\n", + " 'vacuum_equil_output_settings': {'checkpoint_interval': ,\n", + " 'checkpoint_storage_filename': 'checkpoint.chk',\n", + " 'equil_npt_structure': 'equil_structure.pdb',\n", + " 'equil_nvt_structure': None,\n", + " 'forcefield_cache': 'db.json',\n", + " 'log_output': 'equil_simulation.log',\n", + " 'minimized_structure': 'minimized.pdb',\n", + " 'output_indices': 'not water',\n", + " 'preminimized_structure': 'system.pdb',\n", + " 'production_trajectory_filename': 'production_equil.xtc',\n", + " 'trajectory_write_interval': },\n", + " 'vacuum_equil_simulation_settings': {'equilibration_length': ,\n", + " 'equilibration_length_nvt': None,\n", + " 'minimization_steps': 5000,\n", + " 'production_length': },\n", + " 'vacuum_forcefield_settings': {'constraints': 'hbonds',\n", + " 'forcefields': ['amber/ff14SB.xml',\n", + " 'amber/tip3p_standard.xml',\n", + " 'amber/tip3p_HFE_multivalent.xml',\n", + " 'amber/phosaa10.xml'],\n", + " 'hydrogen_mass': 3.0,\n", + " 'nonbonded_cutoff': ,\n", + " 'nonbonded_method': 'nocutoff',\n", + " 'rigid_water': True,\n", + " 'small_molecule_forcefield': 'openff-2.0.0'},\n", + " 'vacuum_output_settings': {'checkpoint_interval': ,\n", + " 'checkpoint_storage_filename': 'vacuum_checkpoint.nc',\n", + " 'forcefield_cache': 'db.json',\n", + " 'output_filename': 'vacuum.nc',\n", + " 'output_indices': 'not water',\n", + " 'output_structure': 'hybrid_system.pdb'},\n", + " 'vacuum_simulation_settings': {'early_termination_target_error': ,\n", + " 'equilibration_length': ,\n", + " 'minimization_steps': 5000,\n", + " 'n_replicas': 14,\n", + " 'production_length': ,\n", + " 'real_time_analysis_interval': ,\n", + " 'real_time_analysis_minimum_time': ,\n", + " 'sampler_method': 'repex',\n", + " 'sams_flatness_criteria': 'logZ-flatness',\n", + " 'sams_gamma0': 1.0,\n", + " 'time_per_iteration': }}\n" + ] + } + ], + "source": [ + "settings" + ] + }, + { + "cell_type": "markdown", + "id": "f2d77ba4-f6d7-465f-8933-1cf35748d71f", + "metadata": {}, + "source": [ + "Displaying the default values:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "82c3e1ea-2bf6-47ec-bf1d-fe06adb6ea10", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "298.15 kelvin" + ], + "text/latex": [ + "$298.15\\ \\mathrm{kelvin}$" + ], + "text/plain": [ + "298.15 " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "settings.thermo_settings.temperature # Simulation temperature" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "05d407e9-8ddb-4c53-be73-88ec65f4a93e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0.0, 0.25, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "settings.lambda_settings.lambda_elec # List of floats of lambda values for the electrostatics" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "cbaa744c-9b3e-45ca-b6e1-227e80446623", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "1.0 nanosecond" + ], + "text/latex": [ + "$1.0\\ \\mathrm{nanosecond}$" + ], + "text/plain": [ + "1.0 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "settings.solvent_simulation_settings.equilibration_length # Length of the NPT equilibration in the solvent, prior to running the AHFE calculation" + ] + }, + { + "cell_type": "markdown", + "id": "9f81f879-9eea-4af0-b772-e28832912487", + "metadata": {}, + "source": [ + "By default we run 3 repeats with solvent and vacuum simulation lengths of 10 ns and 2 ns over 14 lambda windows. \n", + "To speed things up here we instead run 1 repeat with both solvent and vacuum simulation lengths of 0.5 ns over 14 lambda windows.\n", + "\n", + "Changing default values:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e83630f0", + "metadata": {}, + "outputs": [], + "source": [ + "from openff.units import unit\n", + "\n", + "# change the values\n", + "settings.protocol_repeats = 1\n", + "settings.lambda_settings.lambda_elec = [0.0, 0.26, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "55067780-d228-4661-8c1e-5cb0217fd2dc", + "metadata": {}, + "outputs": [], + "source": [ + "settings.solvent_simulation_settings.equilibration_length = 10 * unit.picosecond\n", + "settings.solvent_simulation_settings.production_length = 500 * unit.picosecond\n", + "settings.vacuum_simulation_settings.equilibration_length = 10 * unit.picosecond\n", + "settings.vacuum_simulation_settings.production_length = 500 * unit.picosecond\n", + "settings.solvent_engine_settings.compute_platform = 'CUDA'" + ] + }, + { + "cell_type": "markdown", + "id": "af14d630-e933-4054-9444-e96af7dfcc80", + "metadata": { + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "Here a view of all the settings that the user can modify as shown in the examples above:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "137d3f96-00fc-4400-bf5d-b8ed355dbbec", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'alchemical_settings': {},\n", + " 'integrator_settings': {'barostat_frequency': ,\n", + " 'constraint_tolerance': 1e-06,\n", + " 'langevin_collision_rate': ,\n", + " 'n_restart_attempts': 20,\n", + " 'reassign_velocities': False,\n", + " 'remove_com': False,\n", + " 'timestep': },\n", + " 'lambda_settings': {'lambda_elec': [0.0,\n", + " 0.26,\n", + " 0.5,\n", + " 0.75,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0,\n", + " 1.0],\n", + " 'lambda_restraints': [0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0],\n", + " 'lambda_vdw': [0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.0,\n", + " 0.12,\n", + " 0.24,\n", + " 0.36,\n", + " 0.48,\n", + " 0.6,\n", + " 0.7,\n", + " 0.77,\n", + " 0.85,\n", + " 1.0]},\n", + " 'partial_charge_settings': {'nagl_model': None,\n", + " 'number_of_conformers': None,\n", + " 'off_toolkit_backend': 'ambertools',\n", + " 'partial_charge_method': 'am1bcc'},\n", + " 'protocol_repeats': 1,\n", + " 'solvation_settings': {'solvent_model': 'tip3p',\n", + " 'solvent_padding': },\n", + " 'solvent_engine_settings': {'compute_platform': 'CUDA'},\n", + " 'solvent_equil_output_settings': {'checkpoint_interval': ,\n", + " 'checkpoint_storage_filename': 'checkpoint.chk',\n", + " 'equil_npt_structure': 'equil_npt_structure.pdb',\n", + " 'equil_nvt_structure': 'equil_nvt_structure.pdb',\n", + " 'forcefield_cache': 'db.json',\n", + " 'log_output': 'equil_simulation.log',\n", + " 'minimized_structure': 'minimized.pdb',\n", + " 'output_indices': 'not water',\n", + " 'preminimized_structure': 'system.pdb',\n", + " 'production_trajectory_filename': 'production_equil.xtc',\n", + " 'trajectory_write_interval': },\n", + " 'solvent_equil_simulation_settings': {'equilibration_length': ,\n", + " 'equilibration_length_nvt': ,\n", + " 'minimization_steps': 5000,\n", + " 'production_length': },\n", + " 'solvent_forcefield_settings': {'constraints': 'hbonds',\n", + " 'forcefields': ['amber/ff14SB.xml',\n", + " 'amber/tip3p_standard.xml',\n", + " 'amber/tip3p_HFE_multivalent.xml',\n", + " 'amber/phosaa10.xml'],\n", + " 'hydrogen_mass': 3.0,\n", + " 'nonbonded_cutoff': ,\n", + " 'nonbonded_method': 'PME',\n", + " 'rigid_water': True,\n", + " 'small_molecule_forcefield': 'openff-2.0.0'},\n", + " 'solvent_output_settings': {'checkpoint_interval': ,\n", + " 'checkpoint_storage_filename': 'solvent_checkpoint.nc',\n", + " 'forcefield_cache': 'db.json',\n", + " 'output_filename': 'solvent.nc',\n", + " 'output_indices': 'not water',\n", + " 'output_structure': 'hybrid_system.pdb'},\n", + " 'solvent_simulation_settings': {'early_termination_target_error': ,\n", + " 'equilibration_length': ,\n", + " 'minimization_steps': 5000,\n", + " 'n_replicas': 14,\n", + " 'production_length': ,\n", + " 'real_time_analysis_interval': ,\n", + " 'real_time_analysis_minimum_time': ,\n", + " 'sampler_method': 'repex',\n", + " 'sams_flatness_criteria': 'logZ-flatness',\n", + " 'sams_gamma0': 1.0,\n", + " 'time_per_iteration': },\n", + " 'thermo_settings': {'ph': None,\n", + " 'pressure': ,\n", + " 'redox_potential': None,\n", + " 'temperature': },\n", + " 'vacuum_engine_settings': {'compute_platform': None},\n", + " 'vacuum_equil_output_settings': {'checkpoint_interval': ,\n", + " 'checkpoint_storage_filename': 'checkpoint.chk',\n", + " 'equil_npt_structure': 'equil_structure.pdb',\n", + " 'equil_nvt_structure': None,\n", + " 'forcefield_cache': 'db.json',\n", + " 'log_output': 'equil_simulation.log',\n", + " 'minimized_structure': 'minimized.pdb',\n", + " 'output_indices': 'not water',\n", + " 'preminimized_structure': 'system.pdb',\n", + " 'production_trajectory_filename': 'production_equil.xtc',\n", + " 'trajectory_write_interval': },\n", + " 'vacuum_equil_simulation_settings': {'equilibration_length': ,\n", + " 'equilibration_length_nvt': None,\n", + " 'minimization_steps': 5000,\n", + " 'production_length': },\n", + " 'vacuum_forcefield_settings': {'constraints': 'hbonds',\n", + " 'forcefields': ['amber/ff14SB.xml',\n", + " 'amber/tip3p_standard.xml',\n", + " 'amber/tip3p_HFE_multivalent.xml',\n", + " 'amber/phosaa10.xml'],\n", + " 'hydrogen_mass': 3.0,\n", + " 'nonbonded_cutoff': ,\n", + " 'nonbonded_method': 'nocutoff',\n", + " 'rigid_water': True,\n", + " 'small_molecule_forcefield': 'openff-2.0.0'},\n", + " 'vacuum_output_settings': {'checkpoint_interval': ,\n", + " 'checkpoint_storage_filename': 'vacuum_checkpoint.nc',\n", + " 'forcefield_cache': 'db.json',\n", + " 'output_filename': 'vacuum.nc',\n", + " 'output_indices': 'not water',\n", + " 'output_structure': 'hybrid_system.pdb'},\n", + " 'vacuum_simulation_settings': {'early_termination_target_error': ,\n", + " 'equilibration_length': ,\n", + " 'minimization_steps': 5000,\n", + " 'n_replicas': 14,\n", + " 'production_length': ,\n", + " 'real_time_analysis_interval': ,\n", + " 'real_time_analysis_minimum_time': ,\n", + " 'sampler_method': 'repex',\n", + " 'sams_flatness_criteria': 'logZ-flatness',\n", + " 'sams_gamma0': 1.0,\n", + " 'time_per_iteration': }}\n" + ] + } + ], + "source": [ + "settings" + ] + }, + { + "cell_type": "markdown", + "id": "8c32f1b9-b09e-41ac-b66d-3fbc8ee433ec", + "metadata": {}, + "source": [ + "### Creating the `Protocol`\n", + "With the Settings inspected and adjusted, we can provide these to the `Protocol`. This `Protocol` defines the procedure to estimate a free energy difference between two chemical systems, with the details of the two end states yet to be defined." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "23f6322b-0336-4aa9-b9d0-ebe533dc5753", + "metadata": {}, + "outputs": [], + "source": [ + "protocol = AbsoluteSolvationProtocol(settings=settings)" + ] + }, + { + "cell_type": "markdown", + "id": "7f1dfcff-bb06-4508-9f16-4e3de18a5f93", + "metadata": {}, + "source": [ + "## 4. Running the AHFE simulation" + ] + }, + { + "cell_type": "markdown", + "id": "fe618563-c445-4fb3-bc0c-6c08148ddede", + "metadata": {}, + "source": [ + "### (a) Using the CLI" + ] + }, + { + "cell_type": "markdown", + "id": "38129396-ba19-46e9-9eb0-36b0e3a7ad3c", + "metadata": {}, + "source": [ + "Once we have the ChemicalSystems, and the Protocol, we can create the Transformation. " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "1231fad8-b37d-4008-a851-5ad546386286", + "metadata": {}, + "outputs": [], + "source": [ + "transformation = openfe.Transformation(\n", + " stateA=systemA,\n", + " stateB=systemB,\n", + " mapping=None,\n", + " protocol=protocol, # use protocol created above\n", + " name=f\"{systemA.name}\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "451e3345-0b30-4dbf-93b5-28847fad1c9a", + "metadata": {}, + "source": [ + "We'll write out the transformation to disk, so that it can be run using the openfe quickrun command:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "b69efbcd-b888-4afc-a33e-01860889f408", + "metadata": {}, + "outputs": [], + "source": [ + "import pathlib\n", + "# first we create the directory\n", + "transformation_dir = pathlib.Path(\"ahfe_json\")\n", + "transformation_dir.mkdir(exist_ok=True)\n", + "\n", + "# then we write out the transformation\n", + "transformation.dump(transformation_dir / f\"{transformation.name}.json\")" + ] + }, + { + "cell_type": "markdown", + "id": "5b4f7397-d79e-4bea-a473-1750b27d7b44", + "metadata": {}, + "source": [ + "You can run the AHFE simulation from the CLI by using the `openfe quickrun` command. It takes a transformation JSON as input, and the flags -o to give the final output JSON file and -d for the directory where simulation results should be stored. For example,\n", + "\n", + "`openfe quickrun path/to/transformation.json -o results.json -d working-directory`\n", + "\n", + "where path/to/transformation.json is the path to one of the files created above." + ] + }, + { + "cell_type": "markdown", + "id": "bc919dc3-1281-49d2-ad92-4a3355d8bbe5", + "metadata": {}, + "source": [ + "### (b) Using the Python API" + ] + }, + { + "cell_type": "markdown", + "id": "21b64394-fdc7-47e9-aadd-488a55c1d0bb", + "metadata": {}, + "source": [ + "**Creating the `ProtocolDAG`**\n", + "\n", + "Once we have the two `ChemicalSystem`s, and the `Protocol`, we can create the `ProtocolDAG`.\n", + "\n", + "This creates a directed-acyclic-graph (DAG) of computational tasks necessary for creating an estimate of the free energy difference between the two chemical systems." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "44ba94ca", + "metadata": {}, + "outputs": [], + "source": [ + "dag = protocol.create(stateA=systemA, stateB=systemB, mapping=None)" + ] + }, + { + "cell_type": "markdown", + "id": "4283dfe4", + "metadata": {}, + "source": [ + "To summarize, this `ProtocolDAG` contains:\n", + "- chemical models of both sides of the alchemical transformation in `systemA` and `systemB`\n", + "- a description of the exact computational algorithm to use to perform the estimate in `protocol`\n", + "- the `mapping` is set to `None` since no atoms are mapped in the AHFE protocol" + ] + }, + { + "cell_type": "markdown", + "id": "1e29d1c8", + "metadata": {}, + "source": [ + "**Executing the simulation**\n", + "\n", + "The DAG contains many invdividual jobs. We can execute them sequentially in this notebook using the `gufe.protocols.execute` function.\n", + "\n", + "In a more realistic (expansive) situation we would farm off the individual jobs to a HPC cluster or cloud compute service so they could be executed in parallel.\n", + "\n", + "Note: we use the `shared_basedir` and `scratch_basedir` argument of `execute_DAG` in order to set the directory where the simulation files are written to" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "6dbedb47-46b9-4c22-ad74-a580174a359c", + "metadata": {}, + "outputs": [], + "source": [ + "from gufe.protocols import execute_DAG\n", + "import pathlib" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "be690ef1-3243-4114-b56f-5babbb660af6", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/hannahbaumann/openfe/openfe/protocols/openmm_rfe/_rfe_utils/compute.py:56: UserWarning: Non-GPU platform selected: CPU, this may significantly impact simulation performance\n", + " warnings.warn(wmsg)\n", + "WARNING:root:Non-GPU platform selected: CPU, this may significantly impact simulation performance\n", + "WARNING:openmmtools.multistate.multistatereporter:Warning: The openmmtools.multistate API is experimental and may change in future releases\n", + "WARNING:root:Non-GPU platform selected: CPU, this may significantly impact simulation performance\n", + "WARNING:openmmtools.multistate.multistatesampler:Warning: The openmmtools.multistate API is experimental and may change in future releases\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please cite the following:\n", + "\n", + " Friedrichs MS, Eastman P, Vaidyanathan V, Houston M, LeGrand S, Beberg AL, Ensign DL, Bruns CM, and Pande VS. Accelerating molecular dynamic simulations on graphics processing unit. J. Comput. Chem. 30:864, 2009. DOI: 10.1002/jcc.21209\n", + " Eastman P and Pande VS. OpenMM: A hardware-independent framework for molecular simulations. Comput. Sci. Eng. 12:34, 2010. DOI: 10.1109/MCSE.2010.27\n", + " Eastman P and Pande VS. Efficient nonbonded interactions for molecular dynamics on a graphics processing unit. J. Comput. Chem. 31:1268, 2010. DOI: 10.1002/jcc.21413\n", + " Eastman P and Pande VS. Constant constraint matrix approximation: A robust, parallelizable constraint method for molecular simulations. J. Chem. Theor. Comput. 6:434, 2010. DOI: 10.1021/ct900463w\n", + " Chodera JD and Shirts MR. Replica exchange and expanded ensemble simulations as Gibbs multistate: Simple improvements for enhanced mixing. J. Chem. Phys., 135:194110, 2011. DOI:10.1063/1.3660669\n", + " \n" + ] + } + ], + "source": [ + "# Finally we can run the simulations\n", + "path = pathlib.Path('./ahfe_results')\n", + "path.mkdir()\n", + "\n", + "# Execute the DAG\n", + "dag_results = execute_DAG(dag, scratch_basedir=path, shared_basedir=path, n_retries=3)" + ] + }, + { + "cell_type": "markdown", + "id": "d91f78b8-58dc-4780-880f-5a643cbb18c9", + "metadata": {}, + "source": [ + "## 6. Analysis" + ] + }, + { + "cell_type": "markdown", + "id": "27f1f7d0-a294-41a7-8b97-70878747a22d", + "metadata": {}, + "source": [ + "Finally now that we've run our simulations, let's go ahead and gather the free\n", + "energies for both phases." + ] + }, + { + "cell_type": "markdown", + "id": "8dfef043-35de-4943-a728-571a83c13161", + "metadata": {}, + "source": [ + "### Python API" + ] + }, + { + "cell_type": "markdown", + "id": "cea729d2-231f-4759-8a11-d6d09c1428fb", + "metadata": {}, + "source": [ + "If you executed the simulations using the Python API, you will have generated a `dag_results` object. You can analyze these results by calling the Protocols' `gather()` method. This takes a **list** of completed DAG results and returns a `AbsoluteSolvationProtocolResult` which can return a free energy estimate and uncertainty by calling the `get_estimate()` and `get_uncertainty()` methods." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0f6b8fb-dde2-442a-b641-3160a70e2f84", + "metadata": {}, + "outputs": [], + "source": [ + "# Get the complex and solvent results\n", + "protocol_results = protocol.gather([dag_results])\n", + "\n", + "print(f\"AHFE dG: {protocol_results.get_estimate()}, err {protocol_results.get_uncertainty()}\")" + ] + }, + { + "cell_type": "markdown", + "id": "b23748c3-3fa6-45f2-8fcb-e471bd28dd3d", + "metadata": {}, + "source": [ + "You can save the `AbsoluteSolvationProtocolResult` to a JSON output file in the following manner:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "847b5663-2e6c-4cb2-aa9d-39d132fcff3d", + "metadata": {}, + "outputs": [], + "source": [ + "# Save the results in a json file\n", + "import gzip\n", + "import json\n", + "import gufe\n", + "outdict = {\n", + " \"estimate\": protocol_results.get_estimate(),\n", + " \"uncertainty\": protocol_results.get_uncertainty(),\n", + " \"protocol_result\": protocol_results.to_dict(),\n", + " \"unit_results\": {\n", + " unit.key: unit.to_keyed_dict()\n", + " for unit in dag_results.protocol_unit_results\n", + " }\n", + "}\n", + "\n", + "with open(\"ahfe_json/benzene_results.json\") as stream:\n", + " json.dump(outdict, stream, cls=gufe.tokenization.JSON_HANDLER.encoder)" + ] + }, + { + "cell_type": "markdown", + "id": "43f3626a-74c1-4835-be7b-fd6bf0c81562", + "metadata": {}, + "source": [ + "### CLI / Quickrun" + ] + }, + { + "cell_type": "markdown", + "id": "aa3978a2-ed90-4706-b3be-554237d40751", + "metadata": {}, + "source": [ + "If you ran the simulation using the CLI (i.e. by calling `openfe quickrun` ) you will end up with the same JSON output file as the one created in the previous cell. To get your simulation results you can load them back into Python in the following manner:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "f62f69a1-09c0-4a4a-9b37-9663b51a75ac", + "metadata": {}, + "outputs": [], + "source": [ + "import gzip\n", + "import json\n", + "import gufe\n", + "\n", + "outfile = \"ahfe_json/benzene_results.json\"\n", + "with open(outfile) as stream:\n", + " results = json.load(stream)\n", + " estimate = results['estimate']\n", + " uncertainty = results['uncertainty']" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3b459b28-a4dc-4fa9-a961-b106c45d79ce", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'magnitude': -0.7536190151704971,\n", + " 'unit': 'kilocalorie_per_mole',\n", + " ':is_custom:': True,\n", + " 'pint_unit_registry': 'openff_units'}" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "estimate" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}