From 05b14364d323c755f1321b698474376ecefd8afe Mon Sep 17 00:00:00 2001 From: "Frank T. Bergmann" Date: Fri, 26 Sep 2025 17:59:09 +0200 Subject: [PATCH 1/6] - fix v1 COAPSI TL --- pyenzyme/v1/thinlayers/TL_Copasi.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/pyenzyme/v1/thinlayers/TL_Copasi.py b/pyenzyme/v1/thinlayers/TL_Copasi.py index 22718fb..badb47a 100644 --- a/pyenzyme/v1/thinlayers/TL_Copasi.py +++ b/pyenzyme/v1/thinlayers/TL_Copasi.py @@ -178,11 +178,11 @@ def _import_experiments(self): # validate value if k in data.columns: initial_value = data[data["time"] == 0.0][k] - if not initial_value.empty and float(initial_value) != v[0]: + if not initial_value.empty and float(initial_value.iloc[0]) != v[0]: log.warning( f'The initial value of "{k}" in experiment "{measurement_id}" ' f"is inconsistent with the specified initial concentration: " - f"{float(initial_value)} != {v[0]}" + f"{float(initial_value.iloc[0])} != {v[0]}" ) exp_filename = os.path.abspath( @@ -218,10 +218,10 @@ def _import_experiments(self): obj_map.setRole(i, role) obj_map.setObjectCN( i, - self.sbml_id_map[col] + COPASI.CRegisteredCommonName(self.sbml_id_map[col] .getConcentrationReference() .getCN() - .getString(), + .getString()), ) elif col.startswith("init_") and col[5:] in self.sbml_id_map.keys(): @@ -229,10 +229,10 @@ def _import_experiments(self): obj_map.setRole(i, role) obj_map.setObjectCN( i, - self.sbml_id_map[col[5:]] + COPASI.CRegisteredCommonName(self.sbml_id_map[col[5:]] .getInitialConcentrationReference() .getCN() - .getString(), + .getString()), ) else: @@ -298,9 +298,9 @@ def set_fit_parameters(self, fit_parameters): fit_item = self.problem.addFitItem(cn) assert isinstance(fit_item, COPASI.CFitItem) if "lower" in item: - fit_item.setLowerBound(COPASI.CCommonName(str(item["lower"]))) + fit_item.setLowerBound(COPASI.CRegisteredCommonName(str(item["lower"]))) if "upper" in item: - fit_item.setUpperBound(COPASI.CCommonName(str(item["upper"]))) + fit_item.setUpperBound(COPASI.CRegisteredCommonName(str(item["upper"]))) if "start" in item: fit_item.setStartValue(float(item["start"])) @@ -399,8 +399,8 @@ def _set_default_items(self): cn = obj.getCN() fit_item = self.problem.addFitItem(cn) assert isinstance(fit_item, COPASI.CFitItem) - fit_item.setLowerBound(COPASI.CCommonName(str(1e-6))) - fit_item.setUpperBound(COPASI.CCommonName(str(1e6))) + fit_item.setLowerBound(COPASI.CRegisteredCommonName(str(1e-6))) + fit_item.setUpperBound(COPASI.CRegisteredCommonName(str(1e6))) fit_item.setStartValue(float(p.value)) def _set_default_items_from_init_file(self): @@ -439,8 +439,8 @@ def _set_default_items_from_init_file(self): cn = mv.getInitialValueReference().getCN() fit_item = self.problem.addFitItem(cn) assert isinstance(fit_item, COPASI.CFitItem) - fit_item.setLowerBound(COPASI.CCommonName(str(global_param.lower))) - fit_item.setUpperBound(COPASI.CCommonName(str(global_param.upper))) + fit_item.setLowerBound(COPASI.CRegisteredCommonName(str(global_param.lower))) + fit_item.setUpperBound(COPASI.CRegisteredCommonName(str(global_param.upper))) fit_item.setStartValue(float(value)) for reaction_id, (model, _) in self.reaction_data.items(): @@ -467,8 +467,8 @@ def _set_default_items_from_init_file(self): cn = obj.getCN() fit_item = self.problem.addFitItem(cn) assert isinstance(fit_item, COPASI.CFitItem) - fit_item.setLowerBound(COPASI.CCommonName(str(p.lower))) - fit_item.setUpperBound(COPASI.CCommonName(str(p.upper))) + fit_item.setLowerBound(COPASI.CRegisteredCommonName(str(p.lower))) + fit_item.setUpperBound(COPASI.CRegisteredCommonName(str(p.upper))) fit_item.setStartValue(float(value)) From 121824716e2f29b9b1237a804dcec66614e9065a Mon Sep 17 00:00:00 2001 From: "Frank T. Bergmann" Date: Fri, 26 Sep 2025 17:59:41 +0200 Subject: [PATCH 2/6] - add v2 basico thinlayer + test --- pyenzyme/thinlayers/__init__.py | 7 +- pyenzyme/thinlayers/basico.py | 468 +++++++++++++++++++++++++++++++ tests/integration/test_basico.py | 105 +++++++ 3 files changed, 579 insertions(+), 1 deletion(-) create mode 100644 pyenzyme/thinlayers/basico.py create mode 100644 tests/integration/test_basico.py diff --git a/pyenzyme/thinlayers/__init__.py b/pyenzyme/thinlayers/__init__.py index e330290..190b986 100644 --- a/pyenzyme/thinlayers/__init__.py +++ b/pyenzyme/thinlayers/__init__.py @@ -5,4 +5,9 @@ except ImportError: pass -__all__ = ["BaseThinLayer", "ThinLayerPysces"] +try: + from .basico import ThinLayerCopasi +except ImportError: + pass + +__all__ = ["BaseThinLayer", "ThinLayerPysces", "ThinLayerCopasi"] diff --git a/pyenzyme/thinlayers/basico.py b/pyenzyme/thinlayers/basico.py new file mode 100644 index 0000000..31159d5 --- /dev/null +++ b/pyenzyme/thinlayers/basico.py @@ -0,0 +1,468 @@ +# File: pysces.py +# Project: ThinLayers +# Authors: Frank T. Bergmann (frankbergmann@live.com), Jan Range (jan.range@simtech.uni-stuttgart.de) +# License: BSD-2 clause +# Copyright (c) 2025 Heidelberg University, University of Stuttgart + +from __future__ import annotations + +from dataclasses import dataclass +from pathlib import Path +import numpy as np +import pandas as pd +import os + +from typing import Dict, List, Optional, Tuple + +from pyenzyme.thinlayers.base import BaseThinLayer, SimResult, Time, InitCondDict +from pyenzyme.versions import v2 + +try: + import basico + import COPASI +except ModuleNotFoundError as e: + raise ModuleNotFoundError( + "ThinLayerCopasi is not available. " + "To use it, please install the following dependencies: " + f"{e}" + ) + + +class ThinLayerCopasi(BaseThinLayer): + """ + COPASI implementation of the BaseThinLayer for kinetic modeling. + + This class provides integration with the COPASI (COmplex PAthway SImulator) + for simulating and optimizing kinetic models from EnzymeML documents. + + Attributes: + model (basico.COPASI.CDataModel): The COPASI model instance. + model_dir (Path | str): Directory for storing model files. + inits (list[InitMap]): Initial conditions for each measurement. + cols (list[str]): Column names for the experimental data. + parameters (list[dict[str, float]]): Optimizable parameters for the model. + """ + + model: basico.COPASI.CDataModel + model_dir: Path | str + inits: list[InitMap] + cols: list[str] + parameters: list + nu_enzmldoc: v2.EnzymeMLDocument + + def __init__( + self, + enzmldoc: v2.EnzymeMLDocument, + model_dir: Path | str = "./copasi_models", + measurement_ids: Optional[List[str]] = None, + ): + """ + Initialize the ThinLayerCopasi instance. + + Args: + enzmldoc (v2.EnzymeMLDocument): EnzymeML document containing the model. + model_dir (Path | str): Directory where COPASI model files will be stored. + measurement_ids (Optional[List[str]]): IDs of measurements to include in the analysis. + If None, all measurements will be used. + + Examples: + >>> import pyenzyme as pe + >>> import pyenzyme.thinlayers as tls + >>> doc = pe.read_enzymeml("path/to/enzmldoc.json") + >>> tl = tls.ThinLayerCopasi(doc) + """ + + # not sure this is needed, everything ought to be supported + self._check_compliance(enzmldoc) + + super().__init__( + enzmldoc=enzmldoc, + measurement_ids=measurement_ids, + df_per_measurement=False, + ) + + if not isinstance(model_dir, Path): + model_dir = Path(model_dir) + + if not model_dir.exists(): + # Create model directory if it doesn't exist + os.makedirs(model_dir, exist_ok=True) + + self.model_dir = model_dir + + # load the model into COPASI + self._get_copasi_model(model_dir) + + def _check_compliance(self, enzmldoc: v2.EnzymeMLDocument): + """ + Check if the EnzymeML document is compliant with COPASI model. + """ + has_kinetic_laws = any(m.kinetic_law is not None for m in enzmldoc.reactions) + + has_odes = any( + m.equation_type == v2.EquationType.ODE for m in enzmldoc.equations + ) + + if not has_kinetic_laws and not has_odes: + raise ValueError("EnzymeML document must contain kinetic laws or ODEs") + + def integrate( + self, + model: v2.EnzymeMLDocument, + initial_conditions: InitCondDict, + t0: float, + t1: float, + nsteps: int = 100, + ) -> Tuple[SimResult, Time]: + """ + Integrates the model from t0 to t1 with the given initial conditions. + + This method simulates the model dynamics within the specified time range + and returns trajectories for all species. + + Args: + model (v2.EnzymeMLDocument): EnzymeML document containing the model. + initial_conditions (InitCondDict): Dictionary mapping species IDs to initial concentrations. + t0 (float): Start time for integration. + t1 (float): End time for integration. + nsteps (int, optional): Number of time points to generate. Defaults to 100. + + Returns: + Tuple[SimResult, Time]: A tuple containing: + - Dict mapping species IDs to concentration trajectories. + - List of time points. + + Raises: + ValueError: If the provided model is different from the one used for initialization. + + Examples: + >>> # Get initial conditions from a measurement + >>> initial_conditions = { + ... s.species_id: s.initial for s in measurement.species_data + ... if s.initial is not None + ... } + >>> # Simulate from time 0 to 10 + >>> results, time = tl.integrate(doc, initial_conditions, 0, 10) + """ + if model != self.enzmldoc: + raise ValueError( + "Model must be the same as the one used to initialize the ThinLayerCopasi. Otherwise, rerun the Thin Layer optimization with the new model." + ) + + # Convert the initial conditions to a InitMap + time = np.linspace(t0, t1, nsteps).tolist() + init_map = InitMap( + time=time, + species=initial_conditions, + ) + + out, species_order = self._simulate_condition(init_map) + + return ( + {species: traj.tolist() for species, traj in zip(species_order, out)}, + time, + ) + + def optimize(self, method="Levenberg - Marquardt"): + """ + Optimizes model parameters to fit experimental data. + + This method performs parameter estimation to minimize the difference + between simulated and experimental data. + + Args: + method (str, optional): Optimization algorithm to use from COPASI. Defaults to "Levenberg - Marquard". + Available methods include: + - 'Levenberg - Marquardt': Levenberg-Marquardt (default) + - 'Hooke & Jeeves': Hooke & Jeeves + - 'Nelder - Mead': Nelder-Mead + - 'Steepest Descent': Steepest Descent + - 'NL2SOL': NL2SOL + - 'Praxis': Praxis + - 'Current Solution Statistics': just return the current solution + - 'Particle Swarm': Particle Swarm Optimization + - 'Evolution Strategy (SRES)': Evolution Strategy with Stochastic Ranking + - 'Genetic Algorithm SR': Genetic Algorithm with Stochastic Ranking + - 'Evolutionary Programming': Evolutionary Programming + - 'Genetic Algorithm': Genetic Algorithm + - 'Scatter Search': Scatter Search + - 'Differential Evolution': Differential Evolution + - 'Simulated Annealing': Simulated Annealing + - 'Random Search': Random Search + + Returns: + {}: Result of the optimization. + + Examples: + >>> # Optimize model parameters + >>> tl = ThinLayerCopasi(doc, ".") + >>> result = tl.optimize() + >>> print(f"Optimization success: {result.success}") + """ + # Get experimental data from the EnzymeML document + self._get_experimental_data() + + # Initialize the model parameters + parameters = self._initialize_parameters() + basico.set_fit_parameters(parameters, model=self.model) + + # Perform optimization + basico.run_parameter_estimation(method=method, update_model=True, model=self.model) + return basico.get_fit_statistic(include_parameters=True, model=self.model) + + def write(self) -> v2.EnzymeMLDocument: + """ + Creates a new EnzymeML document with optimized parameter values. + + This method updates parameter values in a copy of the original EnzymeML document + based on optimization results. + + Returns: + v2.EnzymeMLDocument: A new EnzymeML document with optimized parameters. + + Raises: + ValueError: If a parameter in the optimization results is not found in the document. + + Examples: + >>> # Optimize and save optimized document + >>> tl = ThinLayerCopasi(doc) + >>> tl.optimize() + >>> optimized_doc = tl.write() + >>> pe.write_enzymeml(optimized_doc, "optimized_model.json") + """ + nu_enzmldoc = self.enzmldoc.model_copy(deep=True) + results = basico.get_fit_statistic(include_parameters=True) # type: ignore + + # update the parameters in the enzmldoc + for parameter in nu_enzmldoc.parameters: + for fitted_param in results['parameters']: + if fitted_param['name'] == f'Values[{parameter.symbol}].InitialValue': + parameter.value = fitted_param['value'] + break + return nu_enzmldoc + + # ! Helper methods + def _initialize_parameters(self): + """ + Initializes Parameters instance with model parameters. + + Returns: + list[dict[str, float]]: Parameters object ready for optimization. + + Raises: + ValueError: If a parameter has neither an initial value nor a value attribute. + """ + # Initialize parameters + parameters = [] + + # Add global parameters + for param in self.enzmldoc.parameters: + # Build kwargs dictionary with conditional assignments + param_dict = {} + + if param.lower_bound is not None: + param_dict["lower"] = param.lower_bound + + if param.upper_bound is not None: + param_dict["upper"] = param.upper_bound + + # Determine parameter value + if param.value: + param_dict["start"] = param.value + elif param.initial_value: + param_dict["start"] = param.initial_value + else: + raise ValueError( + f"Neither initial_value nor value given for parameter {param.name} in global parameters" + ) + + param_dict["name"] = 'Values[' + param.symbol + ']' + parameters.append(param_dict) + + return parameters + + def _get_experimental_data(self): + """ + Extracts measurement data from the EnzymeML document. + + Populates the inits, experimental_data, and cols attributes. + """ + self.inits = { + measurement.id: InitMap.from_measurement(measurement, self.df_map[measurement.id]) + for measurement in self.enzmldoc.measurements + if measurement.id in self.measurement_ids + } + + # get all species + species_df = basico.get_species(model=self.model).reset_index() + + # loop over 'id' colum of self.df and create a new experiment for each id + for id in self.df['id'].unique(): + # get the dataframe for the id + df = self.df[self.df['id'] == id] + # drop id column + df = df.drop(columns=["id"]) + # initializations + inits = self.inits[id] + + # loop over remaining columns + for col in df.columns: + # if col is 'time' rename to Time and continue + if col == 'time': + df = df.rename(columns={"time": "Time"}) + continue + # otherwise find in species_df and rename to '[col]' + if col in species_df['name'].values: + df = df.rename(columns={col: f"[{col}]"}) + continue + # otherwise raise error + else: + raise ValueError(f"Column {col} not found in species_df") + + # finally add all the initial concentrations to the dataframe with the + # initial value at Time == 0 + for species in inits.species.keys(): + df.loc[df.index[0], f"[{species}]_0"] = inits.species[species] + + # now add as experiment to basico + basico.add_experiment(name=id, data=df, data_dir=self.model_dir) + + def _get_copasi_model(self, model_dir: Path | str): + """ + Converts an EnzymeML document to a COPASI model. + + Args: + model_dir (Path | str): Directory for storing model files. + """ + model_dir = self._prepare_model_directory(model_dir) + sbmlfile_name = self._create_sbml_file(model_dir) + + self._load_copasi_model(sbmlfile_name, model_dir) + # TODO: check whether this is really needed!!! + #self._fix_compartment_sizes() + + def _load_copasi_model(self, sbmlfile_name: str, model_dir: Path | str): + """ + Loads a COPASI model from an SBML file. + """ + self.model = basico.load_model(os.path.join(model_dir, sbmlfile_name)) + + def _prepare_model_directory(self, model_dir: Path | str) -> str: + """ + Ensures the model directory exists and returns it as a string. + + Args: + model_dir (Path | str): Directory path for model files. + + Returns: + str: Path to the model directory as a string. + """ + model_dir = str(model_dir) + os.makedirs(model_dir, exist_ok=True) + + return model_dir + + def _create_sbml_file(self, model_dir: str) -> str: + """ + Creates an SBML file from the EnzymeML document. + + Args: + model_dir (str): Directory to save the SBML file. + + Returns: + str: Name of the created SBML file. + """ + sbmlfile_name = f"{self.enzmldoc.name.replace(' ', '_')}.xml" + sbmlfile_path = os.path.join(model_dir, sbmlfile_name) + + with open(sbmlfile_path, "w") as file: + file.write(self.sbml_xml) + + return sbmlfile_name + + def _simulate_condition( + self, init_concs: InitMap + ) -> Tuple[List[np.ndarray], List[str]]: + """ + Simulates a single experimental condition. + + Args: + init_concs (InitMap): Initial concentrations for the simulation. + + Returns: + Tuple[List[np.ndarray], List[str]]: + - List of arrays containing trajectory data for each species + - List of species IDs + """ + + # apply initial conditions to model + init_concs.to_copasi_model(self.model) + result = basico.run_time_course_with_output(output_selection=[f'[{species}]' for species in init_concs.species.keys()], values=init_concs.time, model=self.model) + + # result is a pandas dataframe with the columns as the species and the rows as the time points + # enzymeml needs it separated by columns and converted to np.ndarray + # build a tuple of the result and the species + data = [] + ids = [] + for species in init_concs.species.keys(): + data.append(result[f'[{species}]'].values) + ids.append(species) + return (data, ids) + + +@dataclass +class InitMap: + """ + Helper class for managing species initial concentrations. + + This class provides type-safe handling of initial concentrations and + time points for COPASI model simulations. + + Attributes: + time (List[float]): List of time points for simulation. + species (Dict[str, float]): Dictionary mapping species IDs to initial concentrations. + """ + + time: List[float] + species: Dict[str, float] + + @classmethod + def from_measurement(cls, meas: v2.Measurement, df: pd.DataFrame) -> "InitMap": + """ + Create an InitMap instance from a measurement and its dataframe. + + Args: + meas (v2.Measurement): The measurement containing species data. + df (pd.DataFrame): DataFrame with time data for the measurement. + + Returns: + InitMap: Initialized instance with time points and species initial values. + """ + return cls( + time=df["time"].tolist(), + species={ + s.species_id: s.initial + for s in meas.species_data + if s.initial is not None + }, + ) + + def to_copasi_model(self, model: COPASI.CDataModel): + """ + Apply initial conditions to a COPASI model. + + This method sets the simulation time and initial species concentrations + in the COPASI model, ensuring zero values are replaced with small positive values. + + Args: + model (COPASI.CDataModel): The COPASI model to update. + + Returns: + COPASI.CDataModel: The updated model with initial conditions set. + """ + + for species_id, value in self.species.items(): + # seems odd to be doing this here, but it is the same for the PySCeS thin layer + if value == 0: + value = 1.0e-9 # is this really needed? + basico.set_species(species_id, exact=True, initial_concentration=value, model=model) diff --git a/tests/integration/test_basico.py b/tests/integration/test_basico.py new file mode 100644 index 0000000..f6c83aa --- /dev/null +++ b/tests/integration/test_basico.py @@ -0,0 +1,105 @@ +import tempfile + +import pytest +import pyenzyme as pe +from pyenzyme.thinlayers.basico import ThinLayerCopasi +from pyenzyme.versions import v2 + + +class TestCopasiThinLayer: + def test_optimize(self): + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc_reaction.json") + + with tempfile.TemporaryDirectory() as tmp_dir: + layer = ThinLayerCopasi(doc, tmp_dir) + layer.optimize() + + opt_doc = layer.write() + + k_cat = self._extract_parameter(opt_doc, "k_cat") + k_ie = self._extract_parameter(opt_doc, "k_ie") + K_M = self._extract_parameter(opt_doc, "K_M") + + # Check if values are positive using a small epsilon + expected_km = 82.0 + expected_kcat = 0.85 + expected_kie = 0.0012 + + assert k_cat.value is not None, "k_cat is not set" + assert k_ie.value is not None, "k_ie is not set" + assert K_M.value is not None, "K_M is not set" + + assert expected_kcat * 0.95 < k_cat.value < expected_kcat * 1.1, ( + f"k_cat is not correct, got {k_cat.value} expected {expected_kcat}" + ) + assert expected_kie * 0.75 < k_ie.value < expected_kie * 1.1, ( + f"k_ie is not correct, got {k_ie.value} expected {expected_kie}" + ) + assert expected_km * 0.95 < K_M.value < expected_km * 1.1, ( + f"K_M is not correct, got {K_M.value} expected {expected_km}" + ) + + def test_plot(self): + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc_reaction.json") + + with tempfile.TemporaryDirectory() as tmp_dir: + layer = ThinLayerCopasi(doc, tmp_dir) + layer.optimize() + + fig, axs = pe.plot( + layer.enzmldoc, + thinlayer=layer, + measurement_ids=[ + "measurement0", + "measurement1", + "measurement2", + "measurement3", + ], + ) + + # Raw image + + assert fig is not None, "Figure is not created" + assert axs is not None, "Axes are not created" + + def test_plot_interactive(self): + with tempfile.TemporaryDirectory() as tmp_dir: + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc_reaction.json") + layer = ThinLayerCopasi(doc, tmp_dir) + layer.optimize() + + out_file = "test.html" + pe.plot_interactive( + layer.enzmldoc, + thinlayer=layer, + output_nb=False, + show=False, + out=out_file, + ) + + def test_rate_rule(self): + doc = pe.read_enzymeml("tests/fixtures/modeling/enzmldoc.json") + + with tempfile.TemporaryDirectory() as tmp_dir: + layer = ThinLayerCopasi(doc, tmp_dir) + layer.optimize() + + out_file = "test2.html" + pe.plot_interactive( + layer.enzmldoc, + thinlayer=layer, + output_nb=False, + show=False, + out=out_file, + ) + + @staticmethod + def _extract_parameter(doc: v2.EnzymeMLDocument, symbol: str) -> v2.Parameter: + param = next(p for p in doc.parameters if p.symbol == symbol) + assert param is not None, f"{symbol} is not set" + return param + + +if __name__ == "__main__": + # test current file only + pytest.main([__file__]) From 7cf5ce6a05f0db555efb20daff1582b1122564fb Mon Sep 17 00:00:00 2001 From: "Frank T. Bergmann" Date: Fri, 26 Sep 2025 17:59:52 +0200 Subject: [PATCH 3/6] - add v1 example --- examples/KineticModellingCOPASI.ipynb | 546 ++++++++++++++++++++++++++ 1 file changed, 546 insertions(+) create mode 100644 examples/KineticModellingCOPASI.ipynb diff --git a/examples/KineticModellingCOPASI.ipynb b/examples/KineticModellingCOPASI.ipynb new file mode 100644 index 0000000..8010b6f --- /dev/null +++ b/examples/KineticModellingCOPASI.ipynb @@ -0,0 +1,546 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9b9be722", + "metadata": {}, + "source": [ + "# Kinetic Modelling with COPASI\n", + "\n", + "\n", + " \"Open\n", + "\n", + "\n", + "This notebook demonstrates how to utilize the [COPASI](https://basico.rtfd.io/) library to model kinetic data.\n", + "\n", + "We will use the [abts_reaction.json](./data/abts_reaction.json) EnzymeML document as an example, which describes the oxidation of [ABTS](https://en.wikipedia.org/wiki/ABTS) catalyzed by a [Small Laccase](https://pmc.ncbi.nlm.nih.gov/articles/PMC2280001/).\n", + "\n", + "## What is a Thin Layer?\n", + "\n", + "PyEnzyme provides interfaces to integrate with other kinetic modelling libraries, such as [PySCeS](https://pysces.sourceforge.io/), [COPASI](https://copasi.org/), and [Catalax](https://github.com/JR-1991/catalax).\n", + "\n", + "The thin layer can be understood as a tiny wrapper around the kinetic modelling library, which provides a common interface to PyEnzyme. Hence, every thin layer exposes the same methods, making it easy to switch between different kinetic modelling libraries.\n", + "\n", + "Lets explore the COPASI thin layer in more detail!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "5debd1d7", + "metadata": {}, + "outputs": [], + "source": [ + "#%pip install copasi-basico" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b70d7dd9", + "metadata": {}, + "outputs": [], + "source": [ + "import pyenzyme as pe\n", + "import matplotlib\n", + "\n", + "matplotlib.use(\"svg\")\n", + "\n", + "# Import the PySCeS thin layer\n", + "from pyenzyme.thinlayers import ThinLayerCopasi" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f1d7108e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
๐Ÿ“‹ EnzymeML Document Summary\n",
+       "
\n" + ], + "text/plain": [ + "๐Ÿ“‹ \u001b[1;34mEnzymeML Document Summary\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ•ญโ”€ ๐Ÿ“„ Document Overview โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚ Name: ABTS measurement                                                                                          โ”‚\n",
+       "โ”‚ Version: 2                                                                                                      โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "\n",
+       "    ๐Ÿ“Š Component Counts                                                      \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”“                                                  \n",
+       "โ”ƒ Component       โ”ƒ Count โ”ƒ                                                  \n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”ฉ                                                  \n",
+       "โ”‚ Vessels         โ”‚     1 โ”‚                                                  \n",
+       "โ”‚ Proteins        โ”‚     2 โ”‚                                                  \n",
+       "โ”‚ Complexes       โ”‚     0 โ”‚                                                  \n",
+       "โ”‚ Small Molecules โ”‚     3 โ”‚                                                  \n",
+       "โ”‚ Reactions       โ”‚     2 โ”‚                                                  \n",
+       "โ”‚ Measurements    โ”‚    24 โ”‚                                                  \n",
+       "โ”‚ Equations       โ”‚     0 โ”‚                                                  \n",
+       "โ”‚ Parameters      โ”‚     3 โ”‚                                                  \n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                                  \n",
+       "                             ๐Ÿงฌ Species Details                              \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ Type           โ”ƒ ID              โ”ƒ Name                 โ”ƒ Details         โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ Protein        โ”‚ slac            โ”‚ slac                 โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ”‚ Protein        โ”‚ slac_inactive   โ”‚ slac_inactive        โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ”‚ Small Molecule โ”‚ abts            โ”‚ abts                 โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ”‚ Small Molecule โ”‚ buffer          โ”‚ buffer               โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ”‚ Small Molecule โ”‚ abts_radical    โ”‚ abts_radical         โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "\n",
+       "               ๐Ÿงช Vessels                \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ ID      โ”ƒ Name    โ”ƒ Volume โ”ƒ Constant โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ vessel0 โ”‚ vessel0 โ”‚ 1.0 l  โ”‚    โœ“     โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "\n",
+       "                                    โšก Reactions                                     \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ ID           โ”ƒ Name                 โ”ƒ Reversible โ”ƒ Reaction Schema                โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ reaction0    โ”‚ reaction0            โ”‚     โœ—      โ”‚ abts โ†’ abts_radical            โ”‚\n",
+       "โ”‚ reaction1    โ”‚ reaction1            โ”‚     โœ—      โ”‚ slac โ†’ slac_inactive           โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "\n",
+       "                                ๐Ÿ“ˆ Measurements                                 \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ ID                        โ”ƒ Name                 โ”ƒ Species Data โ”ƒ Conditions โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ measurement0              โ”‚ measurement0 - A2    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ measurement1              โ”‚ measurement0 - B2    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ measurement2              โ”‚ measurement0 - C2    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ measurement3              โ”‚ measurement1 - A3    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ measurement4              โ”‚ measurement1 - B3    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ ... +19 more measurements โ”‚                      โ”‚              โ”‚            โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "\n",
+       "                                ๐Ÿ”ข Parameters                                \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ Symbol โ”ƒ Name  โ”ƒ Value โ”ƒ Initial Value โ”ƒ Bounds         โ”ƒ Unit โ”ƒ Constant โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ k_cat  โ”‚ k_cat โ”‚ 1.85  โ”‚ 0.01          โ”‚ [1e-06, 2.0]   โ”‚ โ€”    โ”‚    โœ“     โ”‚\n",
+       "โ”‚ K_M    โ”‚ K_M   โ”‚ 20.0  โ”‚ 120.0         โ”‚ [1e-06, 150.0] โ”‚ โ€”    โ”‚    โœ“     โ”‚\n",
+       "โ”‚ k_ie   โ”‚ k_ie  โ”‚ 0.001 โ”‚ 0.01          โ”‚ [1e-06, 0.05]  โ”‚ โ€”    โ”‚    โœ“     โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34mโ•ญโ”€\u001b[0m\u001b[34m ๐Ÿ“„ Document Overview \u001b[0m\u001b[34mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[34mโ”€โ•ฎ\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[1mName:\u001b[0m ABTS measurement \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[1mVersion:\u001b[0m 2 \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n", + "\n", + "\u001b[3m ๐Ÿ“Š Component Counts \u001b[0m \n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”“ \n", + "โ”ƒ\u001b[1;35m \u001b[0m\u001b[1;35mComponent \u001b[0m\u001b[1;35m \u001b[0mโ”ƒ\u001b[1;35m \u001b[0m\u001b[1;35mCount\u001b[0m\u001b[1;35m \u001b[0mโ”ƒ \n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”ฉ \n", + "โ”‚ Vessels โ”‚ 1 โ”‚ \n", + "โ”‚ Proteins โ”‚ 2 โ”‚ \n", + "โ”‚ Complexes โ”‚ 0 โ”‚ \n", + "โ”‚ Small Molecules โ”‚ 3 โ”‚ \n", + "โ”‚ Reactions โ”‚ 2 โ”‚ \n", + "โ”‚ Measurements โ”‚ 24 โ”‚ \n", + "โ”‚ Equations โ”‚ 0 โ”‚ \n", + "โ”‚ Parameters โ”‚ 3 โ”‚ \n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ \n", + "\u001b[3m ๐Ÿงฌ Species Details \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;32m \u001b[0m\u001b[1;32mType \u001b[0m\u001b[1;32m \u001b[0mโ”ƒ\u001b[1;32m \u001b[0m\u001b[1;32mID \u001b[0m\u001b[1;32m \u001b[0mโ”ƒ\u001b[1;32m \u001b[0m\u001b[1;32mName \u001b[0m\u001b[1;32m \u001b[0mโ”ƒ\u001b[1;32m \u001b[0m\u001b[1;32mDetails \u001b[0m\u001b[1;32m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚ Protein โ”‚\u001b[35m \u001b[0m\u001b[35mslac\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ slac โ”‚ Vessel: vessel0 โ”‚\n", + "โ”‚ Protein โ”‚\u001b[35m \u001b[0m\u001b[35mslac_inactive\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ slac_inactive โ”‚ Vessel: vessel0 โ”‚\n", + "โ”‚ Small Molecule โ”‚\u001b[35m \u001b[0m\u001b[35mabts\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ abts โ”‚ Vessel: vessel0 โ”‚\n", + "โ”‚ Small Molecule โ”‚\u001b[35m \u001b[0m\u001b[35mbuffer\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ buffer โ”‚ Vessel: vessel0 โ”‚\n", + "โ”‚ Small Molecule โ”‚\u001b[35m \u001b[0m\u001b[35mabts_radical\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ abts_radical โ”‚ Vessel: vessel0 โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n", + "\n", + "\u001b[3m ๐Ÿงช Vessels \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;33m \u001b[0m\u001b[1;33mID \u001b[0m\u001b[1;33m \u001b[0mโ”ƒ\u001b[1;33m \u001b[0m\u001b[1;33mName \u001b[0m\u001b[1;33m \u001b[0mโ”ƒ\u001b[1;33m \u001b[0m\u001b[1;33mVolume\u001b[0m\u001b[1;33m \u001b[0mโ”ƒ\u001b[1;33m \u001b[0m\u001b[1;33mConstant\u001b[0m\u001b[1;33m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mvessel0\u001b[0m\u001b[35m \u001b[0mโ”‚ vessel0 โ”‚ 1.0 l โ”‚ โœ“ โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n", + "\n", + "\u001b[3m โšก Reactions \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;31m \u001b[0m\u001b[1;31mID \u001b[0m\u001b[1;31m \u001b[0mโ”ƒ\u001b[1;31m \u001b[0m\u001b[1;31mName \u001b[0m\u001b[1;31m \u001b[0mโ”ƒ\u001b[1;31m \u001b[0m\u001b[1;31mReversible\u001b[0m\u001b[1;31m \u001b[0mโ”ƒ\u001b[1;31m \u001b[0m\u001b[1;31mReaction Schema \u001b[0m\u001b[1;31m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mreaction0 \u001b[0m\u001b[35m \u001b[0mโ”‚ reaction0 โ”‚ โœ— โ”‚ abts โ†’ abts_radical โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mreaction1 \u001b[0m\u001b[35m \u001b[0mโ”‚ reaction1 โ”‚ โœ— โ”‚ slac โ†’ slac_inactive โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n", + "\n", + "\u001b[3m ๐Ÿ“ˆ Measurements \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;36m \u001b[0m\u001b[1;36mID \u001b[0m\u001b[1;36m \u001b[0mโ”ƒ\u001b[1;36m \u001b[0m\u001b[1;36mName \u001b[0m\u001b[1;36m \u001b[0mโ”ƒ\u001b[1;36m \u001b[0m\u001b[1;36mSpecies Data\u001b[0m\u001b[1;36m \u001b[0mโ”ƒ\u001b[1;36m \u001b[0m\u001b[1;36mConditions\u001b[0m\u001b[1;36m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement0 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement0 - A2 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement1 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement0 - B2 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement2 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement0 - C2 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement3 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement1 - A3 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement4 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement1 - B3 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35m... +19 more measurements\u001b[0m\u001b[35m \u001b[0mโ”‚ โ”‚ โ”‚ โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n", + "\n", + "\u001b[3m ๐Ÿ”ข Parameters \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mSymbol\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mName \u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mValue\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mInitial Value\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mBounds \u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mUnit\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mConstant\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mk_cat \u001b[0m\u001b[35m \u001b[0mโ”‚ k_cat โ”‚ 1.85 โ”‚ 0.01 โ”‚ [1e-06, 2.0] โ”‚ โ€” โ”‚ โœ“ โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mK_M \u001b[0m\u001b[35m \u001b[0mโ”‚ K_M โ”‚ 20.0 โ”‚ 120.0 โ”‚ [1e-06, 150.0] โ”‚ โ€” โ”‚ โœ“ โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mk_ie \u001b[0m\u001b[35m \u001b[0mโ”‚ k_ie โ”‚ 0.001 โ”‚ 0.01 โ”‚ [1e-06, 0.05] โ”‚ โ€” โ”‚ โœ“ โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# First, load the EnzymeML document\n", + "enzmldoc = pe.read_enzymeml(\"./data/abts_reaction.json\")\n", + "pe.summary(enzmldoc, interactive=False)" + ] + }, + { + "cell_type": "markdown", + "id": "f902ad03", + "metadata": {}, + "source": [ + "## Thin layer workflow\n", + "\n", + "Every thin layer follows the same workflow:\n", + "\n", + "1. Initialize the thin layer with an EnzymeML document\n", + "2. Optimize the model\n", + "3. Visualize and/or write the results\n", + "\n", + "The thin layer methods expose the same methods, but the arguments can be different to allow for more flexibility. For instance, when using COPASI, we can specify the optimization method in the `optimize` method. We will use the default method, which is `Levenberg - Marquardt`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "21192bb7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " \u001b[36mSBML\u001b[0m\tvalidation\t\u001b[33m\u001b[1mWARNING\u001b[0m: Parameter with id 'k_cat' should ideally have a unit defined.\n", + " \u001b[36mSBML\u001b[0m\tvalidation\t\u001b[33m\u001b[1mWARNING\u001b[0m: Parameter with id 'K_M' should ideally have a unit defined.\n", + " \u001b[36mSBML\u001b[0m\tvalidation\t\u001b[33m\u001b[1mWARNING\u001b[0m: Parameter with id 'k_ie' should ideally have a unit defined.\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'ThinLayerCopasi' object has no attribute '_convert_to_pysces_format'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[4], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# We are using a temporary directory to store the PySCeS model\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m tl_copasi \u001b[38;5;241m=\u001b[39m \u001b[43mThinLayerCopasi\u001b[49m\u001b[43m(\u001b[49m\u001b[43menzmldoc\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43menzmldoc\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 4\u001b[0m \u001b[38;5;66;03m# Run the optimization\u001b[39;00m\n\u001b[0;32m 5\u001b[0m tl_copasi\u001b[38;5;241m.\u001b[39moptimize()\n", + "File \u001b[1;32mC:\\Development\\PyEnzyme\\pyenzyme\\thinlayers\\basico.py:95\u001b[0m, in \u001b[0;36mThinLayerCopasi.__init__\u001b[1;34m(self, enzmldoc, model_dir, measurement_ids)\u001b[0m\n\u001b[0;32m 92\u001b[0m os\u001b[38;5;241m.\u001b[39mmakedirs(model_dir, exist_ok\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[0;32m 94\u001b[0m \u001b[38;5;66;03m# Convert model to PSC\u001b[39;00m\n\u001b[1;32m---> 95\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_pysces_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel_dir\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[1;32mC:\\Development\\PyEnzyme\\pyenzyme\\thinlayers\\basico.py:313\u001b[0m, in \u001b[0;36mThinLayerCopasi._get_pysces_model\u001b[1;34m(self, model_dir)\u001b[0m\n\u001b[0;32m 310\u001b[0m model_dir \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_prepare_model_directory(model_dir)\n\u001b[0;32m 311\u001b[0m sbmlfile_name \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_create_sbml_file(model_dir)\n\u001b[1;32m--> 313\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_convert_to_pysces_format\u001b[49m(sbmlfile_name, model_dir)\n\u001b[0;32m 314\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_load_pysces_model(sbmlfile_name, model_dir)\n\u001b[0;32m 315\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fix_compartment_sizes()\n", + "\u001b[1;31mAttributeError\u001b[0m: 'ThinLayerCopasi' object has no attribute '_convert_to_pysces_format'" + ] + } + ], + "source": [ + "# We are using a temporary directory to store the PySCeS model\n", + "tl_copasi = ThinLayerCopasi(enzmldoc=enzmldoc)\n", + "\n", + "# Run the optimization\n", + "tl_copasi.optimize()" + ] + }, + { + "cell_type": "markdown", + "id": "43db3b0f", + "metadata": {}, + "source": [ + "## Collecting and visualizing data\n", + "\n", + "Since all thin layers expose the same interface, inherited from the `BaseThinLayer` class, we can utilize PyEnzyme's functions that accept descendants of the `BaseThinLayer` class. The `pe.plot` function is one such function, which accepts a `thinlayer` argument to integrate a fitted model and visualize the data.\n", + "\n", + "In order to export the data and write the fitted parameters back to the EnzymeML document, we can use the thin layer's `write` method, which will copy the initial document and add the fitted parameters to it. This way, we can keep the original document intact and do something different with it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a4e07612", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "image/png": "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Fvfff7/YYfTwww/jhx9+wLXXXgsAOHToEF566aVG2e8///lPlw6jO+64A99++y1+//13rFixAsOGDXN7TY8ePbB06VL89ttvWLp0KbRaLQCguLi40epJCCGEtCftNR+KjIzE3/72N7z55pvo3Llzk+//yy+/dFu2evVqj2XHjRuH5cuXY+3atdiwYQPmzJkjrsvIyMDmzZsbrZ6EkBaMEdLApk2bxgAwAOznn39mjz/+OAsNDWUhISFsxowZzGw2s5ycHDZx4kSm0WhYZGQke/7555nNZnPZDs/z7KOPPmJDhgxhQUFBTKlUsh49erClS5e6lf3ggw/Y6NGjWXx8PFOr1UyhULBOnTqxmTNnssLCQpey2dnZ7K677mLR0dFMJpMxnU7H0tLS2H333ccOHz4slrO3ITEx0eX11113nbguOztb3KZ92XXXXce2bNnCBg0axJRKJZs2bZr42sOHD7M777yTRUVFsYCAABYTE8MeeOABdv78eZd9zJ8/X9zeBx98wBYsWMCioqJYUFAQu/POO1lpaSkrLi5m99xzD9NqtSwkJIQ98sgjzGQyub0f33//PbvhhhtYcHAwk8vlrHPnzmzBggWsqqrKa7sOHz7MZs6cySIiIphSqWRjx45lZ8+edWurp3+bN29mu3fvFp+npaUxnucZY4xdvHiRcRzHALCQkBBmtVq9fIr8U1xczAIDA8V9z5kzx2O5Y8eOiY9//fVXt/VLly51qT8hhBDiK8qHKB+63MCBA6+4vqFlZWWJ+xs6dCiLj49nAJharWZGo7FO2+jZs6e4jTVr1jRyjQkhLRF1GpEG55wkdezY0e1LdOrUqSw5Odlt+fvvv++ynXvvvdfrF/Edd9zhUnbMmDFey6alpYnJQ3V1NevcubPXss518DdJiomJYUqlUnxuT5J+/vlnplAoPO43KiqKnTlzRtyHc5LkKYZjx45lAwYMcFv+/PPPu9T1hRde8NrWa665hlksFo/t6tChg1v5oUOHurXVW5L05ptvis/vv/9+lzo5v/cHDx6s24eqjv773/+K29bpdKy8vNyv7axbt07cTr9+/Rq0joQQQtoHyocoH7pcU3cavfLKK+L+li1bxp588knx+RdffHHF11ZUVLBvv/1WfA8VCgW7cOFCo9eZENLy0OVppFHl5eXhvffewwcffACJRPi4ffbZZzCZTFi9ejUWLFggln333XfFx19//TX++9//AgC6dOmCL7/8EmvXrsWgQYMAAF999RW++uorsfwdd9yBjz76COvWrcMff/yBdevW4d577wUAHD9+HN9++y0A4MSJE8jMzAQAjBw5EuvXr8dPP/2Et956C+PGjYNCoah3my9evIi4uDisWrUKP//8M2666SZUVVVh2rRpsFgskMlkePXVV/Hrr79i7ty5Ypwee+wxj9s7e/YsXn/9dXz11VfiHEDr16/HsWPH8MEHH2DFihUeY7h37168/PLLAIDo6Gh8+OGHWL9+PcaPHw8A2LZtG/7973973GdhYSFWrlyJVatWITg4GACwfft2/PXXX4iOjsa2bdswbtw4sfzy5cuxbds2bNu2Db1793aZCDIyMtJl23q9XnycnZ19xVj66vDhw+LjHj16iJeZ+eqbb74RHzu3kxBCCPEH5UPtMx9qbvZL0ziOw6233oq//e1v4jpvl6itXLkSHMchKCgIt9xyC8xmMzp06IBvvvkGsbGxTVJvQkgL09y9VqTtcT6z9txzz4nLu3btKi7/8MMPGWPCkOugoCAGgAUHB4tlJ0+eLJZdvnw527ZtG9u2bRt7//33xeUTJkwQy587d4499NBDLDk52ePZq6eeeooxxtiJEydczvCdPn3abWi3nb2cr2fWJBIJO3HihMtrvvvuO3H9uHHjxPZs27aNJSUlMQCM4zhx6LjzmbUpU6aI2xk/fry4/IUXXvAY27KyMsYYY7NmzXJ5H+z7W7t2rbi8W7duHtv173//W1z+97//XVz+/fffe3yfLz9bNn36dHHdiy++6LLummuuEdd99tlnHmPPGGNlZWUucdq2bRvbu3ev1/KMMfbggw96PftaV++9957LGUZ7PAkhhBBfUD5E+dDl/Blp5E8+xBhjR48eFfc1ePBgxpjwOYuJiWEAmFwuZ6WlpW6vW7FihdvnJjU1lf3www91qi8hpO2RXbVXiZB6GDBggPg4NDRUfNyvXz8AwpmP0NBQVFRUoKysTFxvP/sFAE888YTHbdtvm15RUYEhQ4bgwoULXuth33ZKSgquueYabNu2DZ999hk+++wzqFQq9OzZE7fccgueeOKJep9dS0lJQZcuXVyWObfnl19+wS+//OL2OsYYTpw44TZR89ViCADh4eHi47KyMuh0Opd9vvbaa3jttdfc9nnixAmP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bO22cOFCXdvdkdgeIoC5GcHMjGFu+oVLZr4pDFrrtlIg550MxhQG4YLtochpDxkaafT444+jqqoKAPDYY4/h+uuvxx133IH8/Hy89tprHVpBIqJIFMrz5sPxaFY4yflheavPKScMX++5+JvWV3TCEcsen33apvc///zzccstt2D27NkoKirCVVddhf/5n/9BVFRUQLmtW7fivvvuw6ZNm9DQ0ID6+noMGDAAAHD06FH06tWrTe/XmvT0dO2x3W5HTU2Ntu577rkHK1euRH19PRoaGrQrcRw5cgSjR4829H5XXHEF/u///g9TpkzBhx9+qA3PPnToEJYvXx5wNZPGxkYcO9byVWTMZnOzSSz//e9/G6pTe7E9REREbeGbwuCON9dBAQLmvgzmFAZNsT0ksT10aro7jYQQSE9P146gpaenY9GiRR1eMSIiMuaM3snITIgOuGpaU8GckDscmez2kJe98847ceedd+Lw4cO49NJLMXjwYFx33XUBZe69916MGzcOH3zwAex2O2644QbtSGmPHj1w8ODBNr+fHo888ggSExOxYcMGJCQkYN68eSgsLAQA9OzZEwcOHGjxdaca9n/55Zfjqaeewr59+7Bx40ZMnToVAJCdnY2JEyfigw8+6NgN6WRsDxERkR7hMIVBU2wPnRzbQ366T08TQqBfv34Rea5+axRFgdVq5bnBOjAzY5ibfsxMP9/RLAWhnZD7RB5VYMWeUixcfwQr9pR224m4161bh7Vr18LtdiMuLg5RUVEwm83NylVVVcHhcCA6Oho//PADvvzyS+25a6+9Fk8//TS2bdsGIQR+/vlnbcRLe1VXVyMuLg5xcXHYsmUL3n33Xe25mTNn4rXXXsPKlSshhMDOnTu1I2BpaWmtNqAAoFevXhgwYABmzZqFyZMna5eJnTp1KjZs2IBPPvkEbrcbdXV1+Oqrr1BZWWl4G05Vl47A9hD5MDf9mJkxzE2/cMss1FMYhBO2hyKnPaS708hkMiE/P/+ks5JHGkVRkJycHDY7k0jAzIxhbvoxM2OmDpNHszIdgaegZTqi8eK1I4PeOFm0+RjOfvJbXP3KT5jz7npc/cpPOPvJb7Foc8tDbruyyspK3H777cjOzsaIESMwduxYXHnllc3KPfroo3j55ZeRmZmJ559/HhdddJH23JVXXolf//rXuOKKK5CZmYm7774bjY2NHVK/Bx54AMuWLUNmZiZ+97vf4ZJLLtGeGzt2LP7yl7/gjjvuQGZmJq699lqtcXbPPfdg3rx5yM7Oxnvvvdfiui+//HIsXboUl112mbbM4XDgww8/xIsvvoi8vDwMGjQIr7/+eru24cEHH8Q111yD7Oxsbf6Bjsb2EPkwN/2YmTHMTb9wzMw3hcElI3pgbN+UoB/ECxdsD0VOe0gRBmYF++STT/CXv/wFL774YkgnenQ6nXA4HKisrAy4dJ5eQgitJzGcdijhjJkZw9z0Y2bG+HKzx8Ri9f5yFFfVIz1enpIW7MbJos3HcMeb63Difza+WnRWJ1ZdXR127dqF/Px8qKoKIUTIL7lLoVdfX499+/Zh37592L17NyZOnIhRo0YZWle4tIeAjmkTcX9rDHPTj5kZw9z0Y2aB7SGLxYL6+voWR/RQ9+NrE23evBnV1dW49dZbYbPZmpUzNBH29ddfj9raWpx22mmwWq2wn3DeYllZmbFah4gQAjU1NYiNje22OxO9mJkxzE0/ZmZM09xCNSE3IE9Je+STrc06jAA5CaQC4JFPtuLCwZnd9kgbRS62hwhgbkYwM2OYm37MjKj9DHUa/e1vf+MvHRERndKqfWUBkz2eSAA4VlmPVfvKQtq51RWsXLkS06dPb7Z8xIgR+Oqrr0JQo66P7SEiIqLwwvZQxzPUaXTjjTd2cDWIiKgrKq5qvcPISDlq3ZgxY1BcXBzqanQrbA8RERGFF7aHOp6hyR3MZnOLH0RpaWlEnh+pKArsdjuPFurAzIxhbvoxM2PCJbf0+OhTF9JRjiicsD1EAHMzgpkZw9z0Y2ZE7Weo06i1ubNdLhesVmu7KhQKiqLA4XBwZ6IDMzOGuenHzIwJl9zO6J2MLEc0WquFAiDLISfo7iyqqnbauinyGLj+h+51sT3UvTA3/ZiZMcxNP2bmx/YQnUgIod1ORtfpaX//+98ByF++V199FXFxcdpzHo8Hy5Ytw8CBAw1UN7SEEHA6nUhISOAOpY2YmTHMTT9mZky45GY2KXh4+mDc8eY6KEDAhNi+Wj08fXCnTIJttVqhKAqKi4u1q0nxO9S9CSFQWloKj8cDt9tteD1sD1FTzE0/ZmYMc9OPmQE2mw0mkwkHDx5EWloahBARORqWOlZjYyOKi4vh8XjgcrlOWlZXp9Hf/vY3APKXb8GCBQFfNqvViry8PCxYsMBAlUNLCIG6ujrEx8d3252JXszMGOamHzMzJpxymzI0Cy9eOxKPfLI1YFLsTEc0Hp4+GFOGZnXK+5rNZuTl5WH//v0oLS2FEAImk6EBttSFeDweHDlyRDviauT3g+0haoq56cfMjGFu+jEzwGQyIT8/H4cPH8ahQ4fgdrvZHiLtyoJFRUXweDxQFKXV3xFdnUb79u0DAJx//vn46KOPkJSU1P7aEhFRlzdlaBYuHJyJVfvKUFxVj/R4eUpaZ4wwaio+Ph6DBw/Gl19+iV27diEzM5NH17o5t9sNVVVRVVUFs9mM+Ph43etge4iIiCKJzWZDnz59cPDgQSxatAhRUVHaKGzqnjweDzweD1RVRWVlJXJzcxEVFdViWUNXT1uyZEm7KkhERN2P2aRgbN+U4L+v2YyxY8eirKxM+2OfyGKxYPTo0ejbt6/hdbA9REREkUJRFOTm5qKgoAA//PADrzBGmvT0dEycOLFjRhr5eDwevPHGG1i8eDGKi4ubTar17bffGlltyCiKgtjY2G47ZNEIZmYMc9OPmRnD3AIlJSXhkksuQWFh4SnP26auT1EUxMTEIDc3t10jz9geIoC5GcHMjGFu+jGzQIqiYPTo0cjMzER1dTUnxyZERUUhPT39pKOmDXUazZkzB2+88QamTZuGoUOHRvwvoaIohoand2fMzBjmph8zM4a5NRcfH89MqEOxPUQAczOCmRnD3PRjZs35RhwRtZUiDFx7NjU1Ff/6179w0UUXdUad2szpdMLhcKCysrJd52QKIVBeXo6kpKSIb/AFCzMzhrnpx8yMYW5EnS9c2kNAx7SJuN8whrnpx8yMYW76MTOi9jM0bbrVakW/fv06ui4hI4RAQ0MDDPSfdVvMzBjmph8zM4a5EXU+tocIYG5GMDNjmJt+zIyo/Qx1Gt1777149tln2/3LN3/+fIwePRrx8fFIT0/HjBkzsGPHjnatk4iIiCgYOqo9RERERBSuDM1ptHz5cixZsgRffPEFhgwZ0uzSbB999FGb1rN06VLMmjULo0ePhtvtxh/+8AdMmjQJW7duRWxsrJGqEREREQVFR7WHiIiIiMKVoU6jxMREXHrppe1+80WLFgX8/MYbbyA9PR1r167Fueee2+71t5WiKEhISOB5rjowM2OYm37MzBjmRtT5Oqo9FC643zCGuenHzIxhbvoxM6L2MzQRdmfZvXs38vPzsWnTJgwdOrTZ8y6XK+BSyU6nEzk5OSgvL9cmfVQUBYqiQAgRMFz8VMtPvNyg3uUmk6nZuvUuN1p3bhO3idvEbepu20REgTrq4iBERERETRkaaQQAbrcb3333Hfbs2YNrrrkG8fHxOHr0KBISEhAXF6d7faqqYu7cuTjrrLNa7DAC5BxIjzzySLPlJSUlqK+vBwDY7XY4HA44nU7U1dVpZWJjYxEfH4/y8nI0NDRoyxMSEhAdHY19+/bBbrfDZJLTPCUlJcFms6GkpCTgD5aUlBSYzWYUFxcH1CE9PR0ejwelpaXaMkVRkJGRgYaGBpSXl2vLLRYLUlNTUVdXB6fTqS23Wq1ITk5GdXU1ampqtOVGtikmJgZlZWVwu93a8o7cpvr6ehw6dAhxcXEwmUxdYpuC8TnV19ejuroacXFxSExM7BLb1Nmfk6qqqK6uRnx8PLKysrrENgXjc1JVFW63Gz179kRFRUWX2CbA/zkRhYuObg+FkqqqKCsrQ3JystYeolNjbvoxM2OYm37MjKj9DI00OnDgAKZMmYKDBw/C5XJh586d6NOnD+bMmQOXy4UFCxborsgdd9yBL774AsuXL0fPnj1bLNNZI42EECgqKkJaWpq2M4mkI+6hGEXg8XhQXFwckFmkb1MwPiePx4OSkhKkpaXBbDZ3iW3q7M9JVVUtM4vF0iW2yehyPXX35ZaRkaE9F+nb1HQ5UTjojPYQADzxxBN48MEHMWfOHDzzzDNtek1HjDRSVRXFxcVIT0/nH1c6MDf9mJkxzE0/ZkbUfoZGGs2ZMwejRo3Chg0bkJKSoi2/9NJLcdttt+le3+zZs/Hpp59i2bJlrXYYAYDNZoPNZmu23GQyNdsJtPaHRUvLhRBQFKXF9bS2c2lpuZ73DMZyPXVvbfmp3vPEzLrCNnXmcpPJFHCvt+6tLe/q3z1fZsGoe1f67jXNr6tsE1E46ej2EACsXr0aL730EoYPH95R1SQiIiIyzFCn0ffff48ff/wRVqs1YHleXh6OHDnS5vUIIXDnnXfi448/xnfffYfevXsbqQ4RERFR0HVUe8inuroaM2fOxCuvvII///nPHVVNIiIiIsMMdRqpqgqPx9Ns+eHDh3XNNTFr1iy8/fbbWLhwIeLj41FYWAgAcDgcsNvtRqpmiKIoSEpK4tFsHZiZMcxNP2ZmDHMj6nwd1R7ymTVrFqZNm4aJEyeestOopVP2fXXynUqq9/RPQM5t5js1+MTykXDqaihOMQZk27VpbpG+TcE4xbhpZl1hm4LxOQkhtNwAdIltMrq8rXX3ZebTFbbpxOVEnc1Qp9GkSZPwzDPP4OWXXwYgv7DV1dV4+OGHcdFFF7V5PS+++CIAYPz48QHLX3/9ddx4441GqmaIoigtnvZGrWNmxjA3/ZiZMcyNqPN1VHsIAN59912sW7cOq1evblP5zro4SExMDI4fPx6xk+SH4mIGjY2NqKys7FLb1NmfU1e8QENX/Jy4TZGxTUSdzdBE2IcPH8bkyZMhhMCuXbswatQo7Nq1C6mpqVi2bBnS09M7o67NdNTlZZtOtMsJ0tqGmRnD3PRjZsYwN6LO11HtoUOHDmHUqFH4+uuvtbmMxo8fjxEjRrQ6EXZnXBxECIHjx48jJSWlxfkKI+GIeyhGEfgucpGamsqLg7Rx+YmZdYVtCsbnpKoqjh8/jtTUVF4cpI1192XmuwhNV9imE5cTdTZDI4169uyJDRs24L333sOGDRtQXV2NW265BTNnzgzqaWUdyUDfWbfHzIxhbvoxM2OYG1Hn6qj20Nq1a1FcXIyRI0dqyzweD5YtW4bnnnsOLpcLZrM54DWdcXEQVVUhhGhxHb51tyScJslvbXlnT/zvew0vDtL25b46Na1XpG9TsD4nXhxE/3Lf4660TUTBYqjTCJDD6mbOnImZM2d2ZH2IiIiIIkZHtIcuuOACbNq0KWDZTTfdhIEDB+L+++9v1mFEREREFCyGOo3mz5+PjIwM3HzzzQHLX3vtNZSUlOD+++/vkMoRERERhauOag/Fx8dj6NChActiY2ORkpLSbDkRERFRMBma6OKll17CwIEDmy0fMmQIFixY0O5KBZuiKEhJSeFwPx2YmTHMTT9mZgxzI+p8bA8RwNyMYGbGMDf9mBlR+xkaaVRYWIisrKxmy9PS0nDs2LF2VyrYFEWB2WzmzkQHZmYMc9OPmRnD3Ig6X2e2h7777rt2vd4I7jeMYW76MTNjmJt+zIyo/QyNNMrJycEPP/zQbPkPP/yA7Ozsdlcq2FRVRXFxcbNZ8Kl1zMwY5qYfMzOGuRF1PraHCGBuRjAzY5ibfsyMqP0MjTS67bbbMHfuXDQ2NmLChAkAgMWLF+O+++7Dvffe26EVJCIiIgpHbA8RERFRV2eo0+j3v/89SktL8dvf/hYNDQ0AgOjoaNx///148MEHO7SCREREROGI7SEiIiLq6gx1GimKgieffBIPPfQQtm3bBrvdjvz8fNhsto6uHxEREVFYYnuIiIiIujpFCCFCXQmjnE4nHA4HKisrkZCQ0K51qaoKk8nQFE/dFjMzhrnpx8yMYW5E3UdHtYm43zCGuenHzIxhbvoxM6L2MTTSqKamBk888QQWL17c4sRie/fu7ZDKBYsQAh6PB4qicGb9NmJmxjA3/ZiZMcyNqPOxPUQAczOCmRnD3PRjZkTtZ6jT6NZbb8XSpUtx3XXXISsrK+J/AYUQKC0tRXp6esRvS7AwM2OYm37MzBjmRtT52B4igLkZwcyMYW76MTOi9jPUafTFF1/gs88+w1lnndXR9SEiIiKKCGwPERERUVdnqNMoKSkJycnJHV0XIiKKdA21QE0JUHMc6DES8B3V+/ktYN9SwGQBZrwQ2joSdRC2h4iIiKirM9Rp9Oijj2LevHn45z//iZiYmI6uU0hwuKJ+zMwY5qYfMzOmQ3ITAnA5gepi2RmUO9bfEbT6/wN2L/Z2EhXLjqKGav9rHzgIRDvk48OrgI3vATYHO42oy2B7iHyYm37MzBjmph8zI2ofQ1dPKygowJ49eyCEQF5eHqKiogKeX7duXYdV8GQ68uppRETdSkMtUF0kO4NyzmjSEfQqsOsb2QlU7b15XP7X3X8AsCfKx5/MBda+3nzdZisQmw7cvAhIzJHLdn8DFG0FYtOA067yvx9RBAuX9hDANhERUcSoPAKU7QVS+gIJ2aGuDdEpGRppNGPGjA6uRmgJIdDQ0ACr1cqe6DZiZsYwN/2YmQ5CAHXlQFUhRNpANDQ2ytx+fhPYs1h2AFUVyvuGKv/rmnYEFW0Bdn7RfN22BCA2FXBV+csOvRzIHAbEpcvOIN/NFt+8U6jfRHkj6kLYHiKAuRnBzIxhbvoFLbPju4GSbf5T9GtKAh9fvxCIz5Rlf3oBWPEc8Iu/AaNu7rw6EXUQQ51GDz/8cEfXI6SEECgvL+es+jowM2OYm37MDLIzqL4CiE70d8ZsXQjs+x6oLpQdQVVF8rGnQb7k9/tQXtUgczv6M7Dl4+brtdhlh4/LeUJH0HBvR1C6vI9LB6LszV/f+xx5I+qm2B4igLkZwcyMYW76tSuz4u1A0WbvKfrFQLXvdPwS+fjWb4CELFl27euyI6g11cX+TqPEXCAlHzDbjG0UUZAZ6jTyWbt2LbZt2wYAGDJkCAoKCjqkUkRE3dKBFcCRNbITyHkUqDrmvRUC7nrg/v2APUmW3bdMnkrWEnuSHHGEWPnz4IuB1HxvB1CG/9bSiKC8s+WNiNqM7SEioghRshMo3uI9Bb/If6q+73bbYv8pYz//++QdQTXF/k6j1Hyg5xneUdepTUZgp8pbcm//68b8Rt6IIoShTqPi4mJcddVV+O6775CYmAgAqKiowPnnn493330XaWlpHVlHIqLIVXkYOL5LdgI5jwJV3nvnEcB5DJi9GojxXn1p8/+13hEEyNFEvk6jfhfKU8bis+SRK98tLgOw2ABVBYqLZdk+4+WNiDoU20NERGGg4iBwfKd/1LXvvroYSlUhTNP+CaSny7I//wv48R+tr6u6yN9plD4I6HU2EJfmHX2d5h+FHZsuRwv5nH6jvBF1QYY6je68805UVVVhy5YtGDRoEABg69atuOGGG3DXXXfhnXfe6dBKBoPF0q5BV90SMzOGuekXlpk11smJDJ2HvfdHZAeR8yhw+av+072W/+0UHUHH/J1GOWOAugp51Cq+yS0hC4jLBKKi/a8bMEXeTiIscyPqQtgeIh/mph8zM6bb5FbvlO0qbdT1MdkZ5BuBfdVb/tO9Vr3cakeQAsDqKvUvSBsorwTr6/iJbzICOzYNSB3gL1twrbwRdXOGrp7mcDjwzTffYPTo0QHLV61ahUmTJqGioqKj6ndSvFIIEXUKVZVDjisOAZWHZKNl1E3ydC4A+OpPJz9KdfsPQOZQ+finBfI89/gswNEDSOjh7QjqIY9kpebLkUFEFHHCpT0EsE1ERBHC3SA7frTR18f8P099UnbmAKdua932LdDjdPl4zevAqle8HUCZJ9xnyLkabXGdv21EXZShrmpVVZtdVhYAoqKioKpquysVbEII1NXVwW63c1K5NmJmxjA3/TolM3eDHCGU0BOwWOWyDe8CP7/p7SQ6AqiNga/pO8HfERSTIu+jYv0dQY4ecn2OHv4jXwBw5u3yFmT8rhF1PraHCGBuRjAzY8I+t4aaJqfge+9H3eIfUb3kcWDpk62/fuwsf6dRfLY8JT8+u8lp+Fn++6QmcwSNukneWqBlJkR4ZkYUAQx1Gk2YMAFz5szBO++8g+xsec7nkSNHcPfdd+OCCy7o0AoGgxACTqcT0dHR3Jm0ETMzhrnp167MSnYAB1fIc9212yF5RAsicERQ1TFg//f+1yom2VBx9JQ3s9X/3Kib5XnrTa9mFmb4XSPqfGwPEcDcjGBmxoQ0t8Z6b2fQESB7pH/kzrp/AysXyFHZ9RXNX9fnfH+nkW9eRrPNeyp+tv+U/IRsee9z5h3A2N+2u9r8rhG1n6FOo+eeew4XX3wx8vLykJOTAwA4dOgQhg4dijfffLNDK0hE1IzqkZ085fuB8gNAxQHv/UFg+rNAWn9ZbsfnwDf/r+V1WKKB2uP+n/tPkY2XxBzZSRSfDZhb2UVGOzpya4goQrE9RERdghDyZjLJn/f/AGz/1D/6uvKwPG3f55ZvgBzvabkNNfKy9D5NR2En9ACsTU4LG3ENMOxXshPpVB047OAhChuGOo1ycnKwbt06fPPNN9i+fTsAYNCgQZg4cWKHVo6IujFXlewUKt0LJSYfgHe48upXgS8eaH76mE/ZHn+nUcYwIH8SkJgLOHLkfWIveR+bGtggSR8kb0REbcT2EBFFjNoyoHibPMBWech/X3lY3m78DOg5SpYt2gz89ELzdVjsskPI4/IvGzAVSOknRwo5esgru7bW4cODbkQRSVen0bfffovZs2fjp59+QkJCAi688EJceOGFAIDKykoMGTIECxYswDnnnNMple0siqLAarVyyKIOzMwY5taKwk3A1v8C5ftkR1HZPm0UkAlAzPRXoeR5O3SiE2WHkckiO4KSesmOIN99doF/vfkT5a0b4neNqPOwPURNMTf9mJkxrebmccvTxioOytHXvlPyz74bSPNeDWzj+8Ci+1tfecVBf6dRz1HAuLu8p+jnyM4gR448vezE907ytsHCFL9rRO2nq9PomWeewW233dbiVTkcDgd+85vf4Omnn47IRlJycnKoqxFRmJkx3S43IeRpZGV7gdI98r5sr+wUmvQo0Pd8Wa5kB7DsL81fH5MCJOUhPqFJIyV/EjB3kxzybDIHb1siTLf7rhEFEdtD1BRz04+Z6SQEUF0MpXw/klP6+dtEW/4DfP2QPIVMeJq/rv9kf6dRch95c+R4T8XP9d57f07o4X9dj9P9VyaLcPyuEbWfrk6jDRs24MknW5/xftKkSXjqqafaXalgE0KguroacXFx7IVuI2ZmTJfMTQig5jhQulseaUqQk8FixxfA/90MNNa2/LrjO/2dRpnD5cTSSb2B5N5AUp68RTv8mfmuehGdIG90Ul3yu0YUJtgeoqaYm37M7CTK9gI7v/TO27jfP3+juw4AUPeLBYg+/SqZmzlKjhAC5AU7fCOwffdpTU677z9J3roZfteI2k9Xp1FRUVGLl5bVVmaxoKSkpN2VCjYhBGpqahAbG8udSRsxM2MiPreaUmDvEjlqqHS397YHcFXK5y96CjjjNvk4JlV2GClmOYdQch8gpa//SFfWaf71pvWXE1i3IOIzCxHmRtR52B6ippibft02s9oyOdq6fJ9/5HX5PuCce4F8eYorirYCix5o/lrFBJHQA666Gth8B9JyxwI3fylPz4/L8E9kTZpu+10j6kC6Oo169OiBzZs3o1+/fi0+v3HjRmRlZbX4HBFFACHkOfHHdwLHd8lbfpMjU6W7gA9vaeGFijyq1VTmMGD2WtlhZLG28BoiosjE9hARtcg3+rpsjzzdK9HbNtr7HfD+DS1fkh4Airb4O43SBgKDL5EjrhN7+UdgO3IgFDPqi4uhjbeOSQZyz+zMLSIi0tdpdNFFF+Ghhx7ClClTEB0dHfBcXV0dHn74YfziF7/o0AoSUSerOAQsfsTbUbQbaKwJfN5i83capeQDOWPkfUpfIDUfSPaOHooK3CcgKhpIbfkPKiKiSMb2EBGhphTY/bV/1HXZHjlyyOWUz0/6MzDuTvk4JsXfYRSf5T0dvw+QnCcf+yagBmTb6Vf/avk9VbWztoaIqFWKEEK0tXBRURFGjhwJs9mM2bNnY8AAObHa9u3b8fzzz8Pj8WDdunXIyMjotAo35XQ64XA4UFlZ2eJklG0lhIDT6URCQgKHLbYRMzMm6Lk11MrOoJIdQMl2eX98BzDkUmDCn2SZqiLgf/v7X2OyyAZM2gB5CdU+4/1zD4UAv2vGMDeizhNu7SGgY9pE3G8Yw9z0i4jMGutlR1DT0/HzL5RtKAA4+jPw8vgWXqjIq46deQcwdpZc5HbJ1yflAdYYw1WKiNzCDDMjaj9dnUYAcODAAdxxxx348ssv4XupoiiYPHkynn/+efTu3bvN61q2bBn++te/Yu3atTh27Bg+/vhjzJgxo82v76hOI6KI11ADuKqBeO8fKDXHgVcmeCdHbOFXfMBFwNXvyMdCAD/+Qx7xShsgGzTm1ufqICKijm0PdQS2iYgMEEJ26PhGS1ccAj6ZI0/HrziEZm2o0bcC0/5XPq53Au9e452vsa//Pimv+ehrIqIIpuv0NADo1asXPv/8c5SXl2P37t0QQiA/Px9JSUm637ympgannXYabr75Zlx22WW6X99R2AOtHzMzpt25uV1ynqHibUDxVjl6qHirvKrG4EuAX/1TlrMny44jCDkkOm2g7BBKHSDv05tcTUNRgLPu6pDt6wz8rhnD3Ig6V0e2h8IF9xvGMDf9gp6Zp1GeOnZ8h3cE9k7//I0FM4Gp3qsh2uKAPYv9r7M5/Kfjp+QDvcb6n4tOAG78tPPr3gS/a/oxM6L2091p5JOUlITRo0e3682nTp2KqVOntmsdHUEIgbq6OsTHx3Nn0kbMzJg256aqQOVBoL7Sf5Ux1QM82bv5nEM+VYX+xyYTcNNncnLq2NSO24AQ4HfNGOZGFBwd0R6aP38+PvroI2zfvh12ux3jxo3Dk08+qZ32FizcbxjD3PTrtMwa6+SpZEIAWcPlstoy4Kl8QHW3/JrjO/2P7UnAjBflaKGUfNmGCqPPlN81/ZgZUfsZ7jQKBZfLBZfLpf3sdMqJ5lRVheqdGE5RFCiKAiEEmp55d7LlgNyhqE0ml/OVV0+YcK615SaTqdm69S43UveTLW9r3duzTU1f01W26VTL27NNqqpq91od6yrk5VWLt0Ap2gIUb4VStBVoqILIHA7x66Xe9ZigJPeBqDggRw5lDIZIGwRTxmCItIEQMakBEySasgtkXdqQQTh/Tk0z6+q/Tx25Tb7cAHSZbWq6nKgrWbp0KWbNmoXRo0fD7XbjD3/4AyZNmoStW7ciNjY21NUjCj+qChRu9M7XuN0/d2P5fkCoQP8pwDXvybL2JMCWIEdrp+YDqf2BtP5y9HVqf3l1sqZGXBP0zSEiCmcR1Wk0f/58PPLII82Wl5SUoL6+HgBgt9vhcDjgdDpRV1enlYmNjUV8fDzKy8vR0NCgLU9ISEB0dDSqqqoghIDJZAIgjxzabDaUlJQE/MGSkpICs9mM4uLigDqkp6fD4/GgtLRUW6YoCjIyMtDQ0IDy8nJtucViQWpqKurq6rSOLwCwWq1ITk5GdXU1amr8o0mMbFNMTAzKysrgdvuPqnT0NlVUVGiZdZVt6tTPqawMjSW74Srag2IxHomJiYiJiYH60nhYKvbhRMIUhUZhQllREaAocptu+ATFlfUBR720bWqyrV3pu6eqKiorKwEAWVlZXWKbfDrzc1JVVetk7yrbBPg/J6KuZNGiRQE/v/HGG0hPT8fatWtx7rnnhqhWRGHA0yhHDhVvlaOHhl0hlysK8MYvgIaq5q+JTgSsTTpbFQWYtUqeru9t5xMRUdvpngi7syiKcsqJsFsaaZSTk4Py8nJt0kejI42cTifi4uK0nyPpiHsoRhGoqoqqqqqAzCJ9mzr0c3K7gOLtQNEmKIWboBRthijcBMXlhLDGQ71vP0xmsyz/3nXAkTVA+mAgYyiQMRRK5lCoSX0CJqQO+TaF6HMSQqC6uhpxcXEwm81dYpuMLtdTdyEEampqtA6WrrBNTZcTdWW7d+9Gfn4+Nm3ahKFDh7bpNR119TTf/pa/Z23H3PRrNbNdXwPH1nvnbtwm5xxSG+Vzqf2B2av9Zd+8Ql4IJH0gkDZIztmYNhCISw+rU8o6Er9r+jEzovaLqE6jE/FKIRQWXNVySHTPUf5lb/0S2PVV87Jmq2zQXL8QiEmWyzyNvFoZEREBkKMEL774YlRUVGD58uWtluusA2mR3qHMbYqAbXI5IYq2QBRuBuoqgHN/5y//4llQijYHvC9sCRBpA4HMYRBT/wp4y4bVNnXFz4nbFDHbRNTZIur0tM4ihEB5eTmSkpL4i9dG3Tazeqc8h/7oeuDYBnk07PguAAL43W4gLk2WyxgCHFoJZA4HModp9yK1P8qd1UiyJ0FLjR1GJ9Vtv2vtxNyIItOsWbOwefPmk3YYAZ1zyn58fDxcLhc8Hg88Ho+2PJJOXQ3F6bgulwuHDh3SRjJ0hW3qyM/Js/MbWAvXwFK6A9aynVCch6AAUAAIsxVF/a9BQmIyYmJiUJdzHpSEPnAn56MxeQBie4+CLa0PiouL5TaVlITFNoXqc/KNmomPj0dmZmaX2KbO/px8mWVmZnaZbTrxcyLqbCEdaVRdXY3du3cDAAoKCvD000/j/PPPR3JyMnJzc0/5+o4aaaSqKoqLi5Genq7NaUQn1y0yc1UDlmjA7O1bXTIfWPpEy2Xjs4Cr3wGyC+TPjfWAxdZseHS3yK2DMTNjmBtR5Jk9ezYWLlyIZcuWoXfv3ict2xkjjYQQKCkpQWpqasB+I5KOuIdiFIHH40FxcTHS0tK03CJ9m3R/To11EEXbgMKNUEp2AJMfg+Itj/eug7L9k4B1iYRsuBLzYe1ZAJx7LxRbfPhtUxh+TqqqoqSkBGlpabBYLF1im4wub2vdfZmlp6e3OM1BJG7TicuJOltIRxqtWbMG559/vvbzPffcAwC44YYb8MYbb4SoVtQtNdYDRZuBI+uAo+vk/fGdwC1fAzneSyk7enrvc4Cs04DsEUDWCPk4Lj1wfVHRwaw9ERFFMCEE7rzzTnz88cf47rvvTtlhBAA2mw02m63ZcpPJ1KyjuLU/LE5c7vsjqKV1+Ja3pKXlbX3PYC3XU/fWlp/qPU/MrStsU6vLCzcD+5bJUdeFm6CUbIci/KPTcObtQFIvWbb/JCDaAWQO9c7dOAQiOhEVLRzYCOk2ddLyjt4m33ctGHUPy++egeWtPTZa99aWh+rzIOpsIe00Gj9+fLNeV6Kg2vsd8M3/k40f30SLTRVv8XcaDb4EGDAViE0NZg2JiKiLmzVrFt5++20sXLgQ8fHxKCwsBAA4HA7Y7fYQ1466tdoyeSr+sQ3A6TcB9kS5fNP7wA/PBpa1J8tT8rOGA6Ymf2KMvF7emjphlAYREYUvzmkE2WubkJDAnlsdIiqz6mLg8Bp5hbLDa4DRtwKDL5bPmaKAoz/LxzEpQI/TgeyR8jSz7AIgPsO/nuj2T7YeUbmFCWZmDHMjihwvvvgiAHkwranXX38dN954Y9Dqwf2GMV0mt/pK4Mha77yN62X7qOKg//msEUBf7xkCvc4Cju+Wo619HUUJPZqdlt+aLpNZkDE3/ZgZUfux0whyZxITExPqakSUsM6stgzY+D5weLW8VRwIfD59kL/TKHsEcMXrsrMoMbfNjR2jwjq3MMXMjGFuRJEjXEZdc79hTETm5qqSnUMp/YCELLls80fAp3Obl03qLdtLtiYT7vafLG8GRWRmYYC56cfMiNqPnUaQ5/CXlZUhOTmZE8a2UdhkVl0sr1Jmiwf6jJfL3PXAovubFFLkZe57ng70GAXkneN/yhoLDL0saNUNm9wiCDMzhrkRkV7cbxgT9rm5G7zzNq71z91YsgOAAKY9DYy+RZbLLvB2EBXITqLsAnn1V98paR0o7DMLU8xNP2ZG1H7sNPJqeolFapugZ6aqQMk24OBPwKFVwKGfgPL98rn8yf5Oo4RsYPhV8uhZz1FyFFEHnFrWUfhd04+ZGcPciEgv7jeMCZvchADcLv8FOQ6vBV6fCnhczcsm9AREk7mFskcAc9YHo5YAwiizCMPc9GNmRO3DTiMKX6oK+I4IqCrwt8FA1bETCinydLP0gYGLL3spKFUkIiIiCpl6pxxBpM3duBoYMROY9Kh8PqWv7DCyJ8k5G3uc7r2NbH7lVyIiohaw04jCR12FHEV08EfgwAp5mtnt38vnTCYgua9sHPUcBeSMAXLHyNPNOmHYNBEREVFYaqiVp+EfXgMUbwNwwpxYvgt8ALKNNGdjUOZtJCKiromdRpATpCUlJXFWfR06LLPd3wA7vwIO/CjPtz+x4VNbBsQky8dXvCavcGaO3K8tv2v6MTNjmBsR6cX9hjGdlltDrRxFdGglYDIDZ98tl0fZge2fAbWl8ufEXKDnGUDP0fLAWuawwPUk9erYenUAfteMYW76MTOi9ovcv747kKIosNlsoa5GRDGUWVUhcOAHYPAM2fgBgE0fAhve9pdJ6QfkjgV6jZP39iT/c/EZ7a53qPG7ph8zM4a5EZFe3G8Y02G5VRXJ+RoPem+FGwHVOxdLfBZw1lw5WkhRgAsfBaIdsqMoAttH/K4Zw9z0Y2ZE7cdOI8hZ9UtKSpCWlsZZ9duoTZlVFQH7vwf2L5e30l1y+W/6AVmnyceDL5ZXPus1Tt66+Pn1/K7px8yMYW5EpBf3G8YYyk0IoPIwkJjjX/bOVfLKZk3FZ8vT8XPGAKrHP9q6YGbHVD5E+F0zhrnpx8yI2o+dRl5CiFMXogCtZrZjEfD1POD4jhOeUICs4YCryr9owFR560b4XdOPmRnD3IhIL+43jDllbqoHKNoiT8c/8IMcSVRXBjxwELDGyjK9xgGeBiD3TCDnTHnv6Nll5yLid80Y5qYfMyNqH3YakWFKY62ck2j/MqD/VCDvLPmENcbbYaQAmUOBvHOB3ufIxk/T082IiIiIurLtnwNr35CdRK7KwOfMNqBkh7ySGQBM+nOX7SAiIqLIxU4jajuPW16RY+8SKHuWIP3waihqo/85X6dRzzOAX/0byDvbP4k1ERERUVeluuWk1QeWA0Ov8J92VnEQ2PWlfGyNk6eZ9RoH9DoLyC4AoqL962CHERERhSF2GkFOkJaSksJZ9U+mqhB47gztKJkvKeHoCaX3eKDfBf6yUdFyriJqht81/ZiZMcyNiPTifkMH1SMnqt73PZT93yPjwI9QGqrlczEpwMjr5eP8CwG1UXYSZQ6P6CvAdiR+14xhbvoxM6L24/9ckDsTs9nMnQkA1DuBfcuAPYsBSzQwZb5cHpcBRCfIo2C9zwX6jIfa+zyYUvryyJgO/K7px8yMYW5EpBf3G210aDXw1uVAfeCBNEQ7gF5ny8mrfVL6AuPuDHoVwx2/a8YwN/2YGVH7sdMIclb94uJipKend79Z9VVVHinb/Q2w51vg0Er/5V2jHfL8epNZdgzd9DmQ0AMwmf2ZCQETd8Jt1q2/awYxM2OYGxHpxf3GCSqPAHu/k7ceI4Ez75DLU/rKg2zWeCDvLKi9zkaZYwiSB54DkyUqlDWOGPyuGcPc9GNmRO3HTqPu7u1fyg6jplL6AX0nAH0vkJeE9UnMDW7diIiIiIKlvhLYv1x2Eu1ZApTu8j9XedjfaRSTDNy+HEgbKE83U1W4i4vlQTYiIqIuhp1G3YEQQOEmYNdXcjTR1e/KU80AoMfp8ooevc+T8xL1uwBIygtpdYmIiIg6nRD+U+xVFXj2NKCu3P+8YgKyRwJ9xsuDaU1lDg1aNYmIiEKJnUZdVUMNsHepvGLHzq+AqqP+5/Z+55+oeuxs4JzfARZrSKpJREREFDSVh4Hdi+XcjeUHgN8slctNJjlZdfE2oO/5sqMo7xzAnhjK2hIREYWcIkTT848ii9PphMPhQGVlJRISEtq1LlVVu855rts/Az64CfC4/MuiYmQDKP9CYMA0ID6j3W/TpTILIuamHzMzhrkRdR8d1SbqcvsNtws48KM8FX/3N0DJ9sDn7/oZSO4jHzfWyyvAGtDlcgsCZmYMc9OPmRG1D0caARBCwOPxQFGUyJpZXwjg2AZgx+dA1mnAwGlyecYQ2WGU2AvoPwXoP0lezcNgQ6jlt47QzEKMuenHzIxhbkSkV5fcb3z5R2D1K/6fFRPQY5Q8Hb/vBbKt5GOwndQlc+tkzMwY5qYfMyNqP3YaQe5MSktLkZ6eHv47E3cDcGC5HE204wvAeUQu7z/F32mUlAfcuU4eOeuk7YmozMIIc9OPmRnD3IhIr4jdb3ga5fyMu74Edn0N/OIZoNdY+VzfCcC2T4B+E70dRecD9qQOffuIzS2EmJkxzE0/ZkbUfuw0ihSqCvzndtlR5HL6l0fFAv0mAINnBJZP6RvU6hEREREFTU0psPtrYOciOUdR07bR7q/9nUb9JwP3bu+0g2hERERdHTuNwlVtGXB4tWzsAHKCxsrDslEUmw4MmCpHFvU+r0NPOyMiIiIKa4WbgQVnA2gyLWdMCtDvQnlKftMrnZnMQa8eERFRV8JOI6+wGK5YVSiHUG/7BNi/HIAAfrcLiE2Vz0/4E6CYgZ6jZSdSiIVFZhGIuenHzIxhbkSkV1jtNzxu4OAKOco62gGMv18uTx8kO4kSsuTp+fmTgR4jQ9pBFFa5RQhmZgxz04+ZEbUPr54Was5jwNb/AFsXyvPxmx41yxwGXPK8nOSaiIiIqBVdok0EAA018nSz7Z/JOYrqyuXy+Czgnm3+08zqK2VHEhEREXUqjjSCnCCtoaEBVqs1OD3RQvgbPbu+BBY94H+u52hg0MXAoOlAcu/Or4tBQc+si2Bu+jEzY5gbEekV8v3GZ/cCP78JuOv9y+xJcjTRgIsAocoR10BYdRiFPLcIxMyMYW76MTOi9mOnEeTOpLy8vHNn1a8qlKOJNn8EDL0cGPNruXzgdGDj+/6OIkePznn/DhaUzLog5qYfMzOGuRGRXkHdb1QeAXZ8Dpx+I2COksss0bLDKCkPGDANGHgRkHMmYA7v5ir3t/oxM2OYm37MjKj9wvt/4UhXW+btKPrQP0eRj6/TKDYFuOnzkFSPiIiIKGjK9gHb/gts/S9wZI1cltLXP3H1Gb8GTrsayBjCq50RERGFCXYadQZVBd67Vp56prr9y3ueAQy5FBgyI2RVIyIiIgqaqiJg/ZvyINqxDU2eUICcMfLeJ6lXsGtHREREp8BOIy+LpR1RuBuAw6uBvLPkzyaTPO9edQOZw+XpaEMvAxJzO6ayYaJdmXVjzE0/ZmYMcyMivTpkv+FuACxW+bi6EFj8P/KxYgLyzpGn4w+aDsRntv+9wgT3t/oxM2OYm37MjKh9ePU0o4QADq2U8xFt+Uhe3WPOBnkePgAUbgYsNiA1P7j1IiIiom4n5FdPKz8AbPlYnpKfPhi47CW5XAhg4Sw5qmjgNCA2Nfh1IyIiIsPY7Qo5QVpdXR3sdvupJ0gr3QNseBfY+B5QccC/PC4DKNvr7zTKHNpp9Q0HujIjDXPTj5kZw9yISC/d+w3nMWDrf2RH0eHV/uWVhwCPW05grSjAjBc6rc7hgPtb/ZiZMcxNP2ZG1H7sNAKws2wnlu1dhsSERJhNZpgUE8yK//70jNORFpMG7PwKhe9dhZ3WKJgBmOISYeo1Fqa+E2DOHgmTyYLerko4bPIysM4GJ4pqigLWpSiKdu+wOWC32AEAjWoj6t31zcqYFTMUKGG3kxNCwOl0Ijo6OuzqFs6Ym37MzBjmRkR66dpvLJwN/PwmtIt8KCYg72w5d+Ogi8P+imcdiftb/ZiZMcxNP2ZG1H5h8T/6888/j7/+9a8oLCzEaaedhn/84x8444wzgvb+qwpX4e9b/97q8y9OfFF2GuWdhR8SkvD/EmP8T9ZuATZtATbJH58e/zQu7HUhAGD54eW4//v7W13v42c/jul9p2tl71pyV6tlHzrzIfxqwK8AAKsLV2PW4lkBHUsmxSRvMOH2Ebfjl/1/CQDYVroN9y27T3u+aUeUSTHhVwN+hcvyLwMAHKo6hId/fFhbj7ZO7+sm9Zqk1be0rhSPb3gcdru9WT0URcGYrDGYkjcFAFDdUI0XNrygrVNR5Hv76jA4ZTAm5MorpzR4GvDvrf/2v6+3jO81vRJ6YVz2OACAKlQs3L0woI5N3yMjJgMj0kdoGX5/+HsA0NbrW6dJMSHBmoAByQO0sltKt8h2sILAesMEe5QdPeJ6aGWPVR+DR3gC6uxbt0WxIDE6UStb01iDWnctahtrYTFbtHU2rQt1HUIIeWpG05vZDMUkP2fhdkM0NABCtFhWiYmBySrnBVEbGqA6nU3KAoCQE+8LAbPDAVNsrCxbV4eGoiJ4jpeiobZOXoTIV14IWFJSYE5MlGVra9Fw8KCvwoHrFwKWjHREpadrZeu379DWc+JrorKzYe3ZUytbt359wLoAAcViQezYsZ0bPFGECnV7qFUNtcDOL4ABFwFR8mAXHDkAhDztbOjlwOAZQHxGKGtJREREnSDknUbvvfce7rnnHixYsABjxozBM888g8mTJ2PHjh1I9/6h0tl6xvfEWelnIcoaBdVVBY/zMETVMXg8DVCjYpBkTZQFrbFI/MWzGLT1X1CFCo/wQAgh7yHgUT2ItcRq640yRyE5Ohke4YGqqlChytepHqhQAzoIVKgnrWPTso2eRtS561otW++u9z/21GO/c3+rZY/XHdce1zTWYHXh6lbL9kvspz2ubqzGksIlrZaNNkdrnUY1jTX499Z/t1r28vzLtU4jl8eFZ9Y902rZqb2nap1GHuHBvB/nySeEgCIAkwAU7+3cnHPxzGT/kPg/fHYnPKo7oIzv8fDs0/HsFf/Uyv7pnZtR56qBSf6dG/Ca3hkD8OxNH2pl//jyr1BdUw4AMHnr4bulpeTimbu+0Mo+9MzFqKosDiijQN7HO1Lx1z8u1co+PH8KnCVHYIIi3x8mmACYhQJrbAIefsxf9u/zr0DV0f1QhNKkvLw32Wy4+2/LtLKvP3EtavftkeWgQFFlHUwCUMxm3PySv+wHT94K1/Yd3vUBilC0OpsEcPFrX8EaFQ0A+Pwvs9G4fqP3eQWKEN7yAgqAc175GHGOFADAt0/dC8+K1dp7+zLwfY7DX34TyZnyKjornvkj3F8vxW7F5F23AHzrFUCfBS8jvc8QAMCav/8/qAu/1LL1rU92cgDZLzyHrKGjAQAbX5gP9c2PZBlvkablU577G3qccR4AYNsrf4PnxX826dABFK3TBEj4+xPIOX8aAGDXGy+g8cnn/M+fIPZ/H0XutCsAAAc/ehu18+a3WA4AYv/8J+ReMRMAcOzrT+G894+tl/3T75B77S0AgJIVy1D227kAAGdLZX93J3Jv/S0AoGLTzyi64dZW1xs3+zfImS3XVbN3Fw5fc03rZW+9ETm/kx3l9ceO4ODNtzQroyQ6MPCnn1pdB1F3FQ7tIQB4acdLMO0zwaQoUJzHoJTuglK2D4qnAT2KV+HaCU/KgqNuxqsxZlSbLVCUeii73oOiKNqBk9ToVFw58Eptve/veB/OBrlH8pXx/UuwJWgHsADgi31foLy+XCvjawMpigK7xY5f9PmFVvb7w9+jrL5MK+srp0BBlCkKk/ImaWXXFa1DaX2p9r5N62tSTDi357la2e1l21FWVwYozeurKApOzzhdq9d+537sLd+LZCTDZAo8gKRAwYDkAbCYZJO7sKYQla7KgHo2HVGem5CLKFMUAKC8vhxVDVVyu1qoR2pMqla2uqEate7agHU1LR9vjdfq4PK40OBpaFbGVyeryQqzyQwAss0qVP/7n5AbUVciVO/fY772XsCTAkpUlP/HxsbA8k3KAYDSZGST6nIBbneTYvKByWqF4j04SBTOQt5p9PTTT+O2227DTTfdBABYsGABPvvsM7z22mt44IEHglKH8emnY/SB7Yjd+TGUQysBeH/fo5MhhlwIJb63Vvb8nhfivMSxEB6PLOTxyB2GqkJ4PLA4/A27CY7ROHvIC4DqOaG8AFQPbPH+TphzbEOxLOuv8HjcEB4PhOqRj1UPVLcHCSb/HEnD1Ez8x307hOqG8KiyjMcNqALC40Zijf+StXm1sXjz4FRZP1WW9dUXqorEzBRguCyb5lTw2uoC+bxQAY8KIVRAlaMZ4qKswEhZ1lHpxoJPe8BsUrTnoXp3sKoKy8Q6wHtw1Oasw6tvObx/kPtHRiiqAFSBxvNLANkPBKW6Fv98wQKo3rK+Thjvup1nHQC8bTrR0ID3nnB7/8hvrvj0fcBk/88vPuuCuZW+ucIhB4Ar/D8/9Go17PUtFz7a5zBwk//nX79TDkeVp8Wyx7IKgSYDyC7773Gklba83pKUcqBJn8B5XxUi65i7xbIV8Q3AY/6fBy3dj577a1osW2sLbNRlrdiNXjsqWyzrPmGgU8zanRi68XiLZQHIz9L3cNN29F9X0mpRd6O/M7N253b03dJ6WVd9tfa4fP8O9N1X3mrZmpoK7XHR4Z3oc6Si1bIV1ceR5X18pHg38sqqWy17vKoQvvFkB0v3ILfW1WrZY84jyPE+PuA8gB4nub7AIedB+K6juLdyH0527aC9lXu0svud+5EMyO5lxdvH5f1ohQLsrNitlT1QexhRUYCqtFAWwIGqXf6ydUdRH9t8fcL7Pntqdmjbdri+CIWJzcv4Xlvj2qmVLWwsxYE0f1nfvctei4En2Wai7ioc2kOKomDRoc9R7akNfCIuGkA0hpduwLXasjS8u+9zHK8plq9tchBEEUDfpH4BnUYfrHsDhysOwvc/UtMDJ1nxPQI6jd7/8SUcOL67xfU6YpLwi9v9nUYfLPkHdhdulQd5mpSHAKKj7Jh0r7/T6P1F/4tdhzdoz/vXK6AoJpz70CZ/2U//gh17VjYr63uPlx9eC5v3oMmH/30S27cvD3i+6euefGgpEuPkBOAffPRnbNuwJHB9TR4/+IdPkZUq250ffPhnbF+1qMV1AsAd972DPjmyEffhh49h+/f/9R8EOWG919z7Cgbny8bWxx/Ox7ZvPtCeM/kOhnjX+4s5z6BguMztk4V/xdb//iugrk3LnnPH/2DcmbIB9cUnz2Lb+68Ebpf3PwkTgOG3/g7nnX8DAGDpV69i2z+f8x848nVaedfd9/o7MOGi2wEAK5a8he0LnvIe5FECvkMAkH3VdZh4+T0AgJ9//A+2Pf0//s/MexAL3nonX34FLrz2DwCAbeu+xtb/eSBgXf7MFNinT8Xk2x4FAOzd8iO2PHBXYA5NsjBNHo8pdz0FADi6dxM2zr7JfwBLG+3rfXj+WEy6/x8AgNKj+7D+xl82q4NvvY1nFeDCR14BAFRXlGDdZVMgBLBT8dfTt/L60YNx4V/kQVp3gwurLhzX5H29FfFmUXdaPiY8955vK/DTeaOguNUmbWqh1almcC7G/38L/WXPHwNLXUNArvDWp7ZvFs5+x3+w9KcLx8FWXhOwfVodclIxduG3WtmVU8+F/Vh5wDp9OdSlO3DG18v9ZadPQOz+YrmupvkKwJUUg5HL/QfB11wxFXHbDqFMWyK0ujTarRj+8wZ/2WsuRtz6PWiJalIwZOtW7ee1v74GsSs2t1gWAPqtX4eoaDky8+e7b0XMt2uar/PuWzDkN79rdR1E4SKknUYNDQ1Yu3YtHnzwQW2ZyWTCxIkTsWLFimblXS4XXC7/H25OpzxipaoqVO8fr4oij3wI3ykWXidbXv7Q1Sj+fI/3jIss/184AIDP0DN5BmLHyf9oK/+zEIUPP9zqNmX//VnET5wIAKhaugzH7m/99LSsJ59AwnR5ulfdho0ovOvuVsvGPvIIRN8Bsu4HjqLhr8+1WtaalAOMPheqqsJaWgXrW5+0Wja+13AIIeTRu1oP4r5pfaRR8pBxUFUVJpMJsaoFyZsOtFo28YwoqKoKRVEQa4pBwsHSVss6PEna5xdtscNeWd9q2d72nlpZs2JptcMIAPok9NbKAoDZZAFUt5yUU1EA7ylCitmMvqkDAr4bCanZ8FRVQTGbAZO32WE2A4qC/r0HA4BWPrP/CHjKygCT4j3tSJGvUUzo3ztPy1cIgbxRE+AuKmpSBwXC+zg3PU3LTFEU9Bk/HY2Hj2jvD5MCYZLfzdSEeG3bTCYT+ky+Qp5i5PtD3mQCzCYICETbbAE55F18NVz79nnLKf4//BVAmEwBZXMvuwZVI3ZD4MQOCAUwAfkmi1Y++4qrUTRiO6DIsgKAgNDq3CfWoZVNu+JK7B2+EVAUCAVQISC8jwWAC5MztXyTr/glNg1fCwEFQhHaeuV7CFzUI0/7PBKuuAw/Ds6Q5RRZTwHA4x3JN6PPAO3ziJtxCb7sHyvX5c1AhYAKFUJR8Kshw7XPI+aSafigtwdCkWWF4n1/ISAgcN2oMdq2WS+6EK/2LJH9p4rcBlWB9tpbRp2llY268Dz8b9ourYyqCG99BKAouH3EeP/nfO5YzPvLCpmpt3WkClX7zv52xPlaZqZRp+FPj/Txl0Hgfu83w8+Rz6kqTIP744/3y640X7mm97cOPVPLTOmdiz/clRiwvqaPbxwyUttHIDMdD94WrdXXt74kWyIuafIdM7LP5tFt6mr0toeATmoTVRzAi3+rgMWleEdUQv5f5R1lWjPAA/Vy/+/vU884YStv+aBJdW4p1Mv8Ze9/qQyxhS2XrUkvh7jOX5ff/Os4HAdaLlvnqAJu9/8ffOX7RUje1XLZhug6iHvk/ktVVUz9pBA3bG65rGpSof7R/3/w2V8ewS/Xtj4KXDzYCNVshclkQsGSw/jFitbLqvfUQI1JhqIo6P/jYUxccpL1zqqGmiyfz1l9COd8eZKyt1ZC7SGfT11/ENd/e5JR69eXQe0rn3dsPYyrlrVe1nVVqZavfecRXLqi9caWc4Y8sCSEQNT+o5i6uuV8AeD41GL//ydHinD+z42tli28oFD7P1gtKsaZG1pvGx4++5j2nW88XoKCza2Pxj9w6IhW1lVWisHba1stu79pWWcF+u1q+eAcAOw9dETLrL6mCr32tl52z+HDAOTvqstVg+yDJyl79AgAmW9jYwPSjrZe373Hjmr/B6tCRVJR62XLi44GtDljS2pgaeUrUVpSFLBPsZRXIba+5e9EaXlJQDtSraxEdHXLKy5zlgWUdTkrkFDf8sFSV01lwP6qpqYcCY0tf9dcLrndvvIVdWWIb+VgXqPaoH0nVVXF8bpSxLVYUq6vaWZFtUXo00pZQI7SM3s/j2M1hejbQpmj1UcxiG0iigAh7TQ6fvw4PB4PMjICz4HPyMjA9u3bm5WfP38+HnnkkWbLS0pKUF8v/zOx2+1wOBxwOp2oq/P/pxEbG4v4+HiUl5ejoaFBW56QkACRNRLCs7fVelaUlqGmWB5Ji9K6sr1/9JvNgMkExWyGYjajsqoKdd6yje5GWDIzAZMCVUD+IW8yQTGbYImywm21odhXFgJRQ4bAYrPBI3x/xMqODXOUBVGZGdo2eUwmRJ13HixRUYiy2dDgdss/Mk0mQDEBufJYf1lZGVwmM2yXXw6YTYi222GJikJNXZ0sZ1JQ36c33G43zGYzKhQF9l//2ltPBXEJCRBQUFNXC8VkQmO/fJSUlCAjIwOehARE/e5eRFltUMwmmCwWJDgS0dDYiNr6eqg9slFcXAyr1YrEpESkPvcP1Ltc3o4aBTa7HXEJ8aipqUFDTIyWQ0x0NHov/A+czio0uhsBk+y0iYtPgD3GjgqXSysrhEDu4m9gi45GyfHj3s4XExQFSE5Lg9lq1coCQOKXi5CemQlVVVFa6u/EUhQFGRkZcLlcKC+XRzji3vw3LBYLUlNTUVtbqzXGAcDqHUZaXV2NmpoaRP/vUwHfvcrKyoDvXnV1tfbdi3rgAXjq6xEdHQ2Hw4GYmBgcP34cbrf8T7K4uBhJSUmw2Wyw3z4b0U3+Y0hJSYHZbNa2yXefnp6O3Nn3nnSbfGUtFgsG3jKnxW1KTk5GVVVVQGa5U69ucZt8v09lZWXa71P2mGkYeOHVzbYJgLZNRUVFEEKg1/BJ6DV8UrNt8omJS4Lb7UZpaSl6549HVs6ZsNvtyMzMDPicAECocjdWV1eH/NyzkZ97drNtqqnxNshU/2Wph/c+D/mZ/rlCWtqm4uJiJCQk4JxBUzEobfRJt8m3DWN7nYez+0xotk3p6enweDwoLS3Vnsu3D8KrM95stk1Nv3u+sr3NvfHS2S813yY0/+71RE+8OvZV7XvQ0n4PkPuIDDUDb5/7dovb5OPbRyQ2JuLjCR+3uE0+vn1ED3sPfDHJf7SxpW1q+jn5fp9O3KbW9uVEXYne9hDQOW2i+Ph02N1mqO4T/8CSPztM8QG/vzFRsfCg5T94k21JAWXjoxKgooVRroqCJHsy6urqtP+XkmMz4LFV++d/87a5FADxiXLEjm+bMtL6wX28Uf7xZDZ5O6jlH1HRMTGoq6tDTEwMysrK0LPHMLi9ww1MFjkPo1uoABSYvP8X+f5fyutzBtwVUVp7z+I9LcXt8QCKgvKyCpistcjIyMCQEZNQWbkUJpOc41ExmRBltcIjVHg8KlzVbhQL2SYaPfYyVNR9C49H1dZtNpsRFRWFRrcbaPS3XQpGz4Dbk4GGxkb5x7ViAhQgKsoKS5QFFluaVnZYwXQojZkwWcyor3d5h6vI09qs0dFI6zlcKztoxDQ0Vjtgj7ZDhUC9q14rC8WEAflnoqGhAeXl5eg/fApcl9phMpsRbbfD7XbD1digfXY5vU4HINs6fQZPQN2VZkABzJYo2Gw2uBpccLs9gAL06H2G1ibKG3weyq6qhdkiy1ttNliiolBXVwdVCPQccI7WJho8agr23Vzh/S7I7Yq2R0MxmVBbU4ucEWO1bes3/DwcmVOOuro6/whaRX7n3R4PevYfqpVNzB6EivtuRaPbjQaXSzuIZjKbEB0dgz5NyloTe6Dw3uths9pQ3+BCo6cRvvFGFmsUBg4b7f99ik7EkXtmwmqTn1NdfR1UVfV+LwXyBsth+yUlJWiADft/fw2gNNmm2hrfOB8kZskDoB6PB1X1jdj54NVwuz2wWCyIjZPb5Pt9T0jPRVlZGVJTU+FqdGPrn67RDjLJzy8aroYGNDY2IiFFttN9+4idj96AhoYGLYOoqChE2ayor6tDbJz/e5aQkICjT9wOZ1UFVFVox9ltdhtMJjPM5piA3/tjj9+OAw11qPFtk7e8PTYGcfbAfcT+P16PfWYPPKp/m4QQUMwmpCZnBOwjDt1/PbY1VMAaHY3GxkY0NMoOSAGBWHs8xjbZRxz53XVY5zwCe7QdUVYr6l31cHvcABRYzFEY1GQfUXTPdVhffRhCCFijrTCbLairrdX2KalN9hEld83Emsp9Wv3tdjtUoaLOW/fbyisQZalBRkYG6u+9GW8fXS8PoimynR4dHY3zekxgm4gigiJEK12vQXD06FH06NEDP/74I8Y2mRj1vvvuw9KlS7Fy5cqA8i0dVcvJyUF5ebn2R5CRHlq304niPXuRnJ4Gs8UiO3YsFpjMZqiKAlN0NBSLJeA1J8ZmMpmarVvvcqO9y60tb9p7b2T5yeru8XhQXFyMtLQ0OaqgC2xTMD4nj8eDkpISpKWlwWw2d4lt6uzPSVVVLTOLxdIltsnocj119+WWkZHRbJ8VqdvUdDlRV6K3PQR0TptICIHCjRuRnJwMk3d0LbydIIpigrCYYUlK0sqrVVVQAKhCaOUA+QeqMJkC5uoQbrdcDu+ZJ01+jyN9H842kf66n5hZV9gmtonC83PyZZaeng6z2dwltunE5USdLaQjjVJTU2E2m1FUVBSwvKioCJmZzWf6sNlssNlszZabTCbtP2mf1n6JWlpujo+HOTsLtvT0Zusxt1L3tq47lMtP3BYjy0/1nidm3xW2qTOX+xpGvnu9dW9teVf/7vkyC0bdu9J3r2l+XWWbiLoive0hoHPaRKqqwpzVcnuoJSaHA0DrbaUA3g6k1n6bu8I+nG0i/ctPzKwrbFN76t7acraJ2re8tcdG697acraJqKsK6fW9rVYrTj/9dCxevFhbpqoqFi9eHHCkjYiIiKirYnuIiIiIwlXIr552zz334IYbbsCoUaNwxhln4JlnnkFNTY129ZBgUBQFdrudPbc6MDNjmJt+zMwY5kYUWdgeilzMTT9mZgxz04+ZEbVfyDuNrrzySpSUlGDevHkoLCzEiBEjsGjRomaTQXYmRVHg8A6xprZhZsYwN/2YmTHMjSiysD0UuZibfszMGOamHzMjar+QToTdXr6rIFVWVmqTPhohhIDT6URCQgJ7oduImRnD3PRjZsYwN6LupSPaRNxvGMPc9GNmxjA3/ZgZUfuFdE6jcCGEkJfmjNz+s6BjZsYwN/2YmTHMjYj04n7DGOamHzMzhrnpx8yI2o+dRkRERERERERE1EzI5zRqD1+PsdPpbNd6VFVFVVUVoqOj23SJWWJmRjE3/ZiZMd0ht/j4eA41J/LqiDZRd9hvdAbmph8zM4a56dddMmObiDpTRHcaVVVVAQBycnJCXBMiIgq29s5nR9SVsE1ERNR9sU1EnSmiJ8JWVRVHjx5td8+q0+lETk4ODh06xF+2NmJmxjA3/ZiZMd0hNx5VI/LriDZRd9hvdAbmph8zM4a56dddMmObiDpTRI80MplM6NmzZ4etLyEhoUvvTDoDMzOGuenHzIxhbkTdQ0e2ibjfMIa56cfMjGFu+jEzIuO67omdRERERERERERkGDuNiIiIiIiIiIioGXYaAbDZbHj44Ydhs9lCXZWIwcyMYW76MTNjmBsR6cX9hjHMTT9mZgxz04+ZEbVfRE+ETUREREREREREnYMjjYiIiIiIiIiIqBl2GhERERERERERUTPsNCIiIiIiIiIioma6fafR888/j7y8PERHR2PMmDFYtWpVqKsUMvPnz8fo0aMRHx+P9PR0zJgxAzt27AgoU19fj1mzZiElJQVxcXG4/PLLUVRUFFDm4MGDmDZtGmJiYpCeno7f//73cLvdwdyUkHniiSegKArmzp2rLWNmLTty5AiuvfZapKSkwG63Y9iwYVizZo32vBAC8+bNQ1ZWFux2OyZOnIhdu3YFrKOsrAwzZ85EQkICEhMTccstt6C6ujrYmxIUHo8HDz30EHr37g273Y6+ffvi0UcfRdNp6ZgZEbUH20QS20Mdg22itmF7SD+2iYiCTHRj7777rrBareK1114TW7ZsEbfddptITEwURUVFoa5aSEyePFm8/vrrYvPmzWL9+vXioosuErm5uaK6ulorc/vtt4ucnByxePFisWbNGnHmmWeKcePGac+73W4xdOhQMXHiRPHzzz+Lzz//XKSmpooHH3wwFJsUVKtWrRJ5eXli+PDhYs6cOdpyZtZcWVmZ6NWrl7jxxhvFypUrxd69e8WXX34pdu/erZV54oknhMPhEP/5z3/Ehg0bxMUXXyx69+4t6urqtDJTpkwRp512mvjpp5/E999/L/r16yeuvvrqUGxSp3vsscdESkqK+PTTT8W+ffvEBx98IOLi4sSzzz6rlWFmRGQU20R+bA+1H9tEbcP2kDFsExEFV7fuNDrjjDPErFmztJ89Ho/Izs4W8+fPD2GtwkdxcbEAIJYuXSqEEKKiokJERUWJDz74QCuzbds2AUCsWLFCCCHE559/LkwmkygsLNTKvPjiiyIhIUG4XK7gbkAQVVVVifz8fPH111+L8847T2sgMbOW3X///eLss89u9XlVVUVmZqb461//qi2rqKgQNptNvPPOO0IIIbZu3SoAiNWrV2tlvvjiC6Eoijhy5EjnVT5Epk2bJm6++eaAZZdddpmYOXOmEIKZEVH7sE3UOraH9GGbqO3YHjKGbSKi4Oq2p6c1NDRg7dq1mDhxorbMZDJh4sSJWLFiRQhrFj4qKysBAMnJyQCAtWvXorGxMSCzgQMHIjc3V8tsxYoVGDZsGDIyMrQykydPhtPpxJYtW4JY++CaNWsWpk2bFpANwMxa89///hejRo3CL3/5S6Snp6OgoACvvPKK9vy+fftQWFgYkJvD4cCYMWMCcktMTMSoUaO0MhMnToTJZMLKlSuDtzFBMm7cOCxevBg7d+4EAGzYsAHLly/H1KlTATAzIjKObaKTY3tIH7aJ2o7tIWPYJiIKLkuoKxAqx48fh8fjCfhPCQAyMjKwffv2ENUqfKiqirlz5+Kss87C0KFDAQCFhYWwWq1ITEwMKJuRkYHCwkKtTEuZ+p7rit59912sW7cOq1evbvYcM2vZ3r178eKLL+Kee+7BH/7wB6xevRp33XUXrFYrbrjhBm27W8qlaW7p6ekBz1ssFiQnJ3fJ3B544AE4nU4MHDgQZrMZHo8Hjz32GGbOnAkAzIyIDGObqHVsD+nDNpE+bA8ZwzYRUXB1204jOrlZs2Zh8+bNWL58eairEtYOHTqEOXPm4Ouvv0Z0dHSoqxMxVFXFqFGj8PjjjwMACgoKsHnzZixYsAA33HBDiGsXnt5//3289dZbePvttzFkyBCsX78ec+fORXZ2NjMjIuokbA+1HdtE+rE9ZAzbRETB1W1PT0tNTYXZbG52xYaioiJkZmaGqFbhYfbs2fj000+xZMkS9OzZU1uemZmJhoYGVFRUBJRvmllmZmaLmfqe62rWrl2L4uJijBw5EhaLBRaLBUuXLsXf//53WCwWZGRkMLMWZGVlYfDgwQHLBg0ahIMHDwLwb/fJfj8zMzNRXFwc8Lzb7UZZWVmXzO33v/89HnjgAVx11VUYNmwYrrvuOtx9992YP38+AGZGRMaxTdQytof0YZtIP7aHjGGbiCi4um2nkdVqxemnn47Fixdry1RVxeLFizF27NgQ1ix0hBCYPXs2Pv74Y3z77bfo3bt3wPOnn346oqKiAjLbsWMHDh48qGU2duxYbNq0KWAn/PXXXyMhIaHZf4pdwQUXXIBNmzZh/fr12m3UqFGYOXOm9piZNXfWWWc1u3zxzp070atXLwBA7969kZmZGZCb0+nEypUrA3KrqKjA2rVrtTLffvstVFXFmDFjgrAVwVVbWwuTKXCXbTaboaoqAGZGRMaxTRSI7SFj2CbSj+0hY9gmIgqyUM/EHUrvvvuusNls4o033hBbt24Vv/71r0ViYmLAFRu6kzvuuEM4HA7x3XffiWPHjmm32tparcztt98ucnNzxbfffivWrFkjxo4dK8aOHas977tU6qRJk8T69evFokWLRFpaWpe9VGpLml4pRAhm1pJVq1YJi8UiHnvsMbFr1y7x1ltviZiYGPHmm29qZZ544gmRmJgoFi5cKDZu3CguueSSFi+VWlBQIFauXCmWL18u8vPzu+ylUm+44QbRo0cP7fKyH330kUhNTRX33XefVoaZEZFRbBP5sT3UcdgmOjm2h4xhm4gouLp1p5EQQvzjH/8Qubm5wmq1ijPOOEP89NNPoa5SyABo8fb6669rZerq6sRvf/tbkZSUJGJiYsSll14qjh07FrCe/fv3i6lTpwq73S5SU1PFvffeKxobG4O8NaFzYgOJmbXsk08+EUOHDhU2m00MHDhQvPzyywHPq6oqHnroIZGRkSFsNpu44IILxI4dOwLKlJaWiquvvlrExcWJhIQEcdNNN4mqqqpgbkbQOJ1OMWfOHJGbmyuio6NFnz59xB//+MeASxAzMyJqD7aJJLaHOg7bRKfG9pB+bBMRBZcihBChGeNEREREREREREThqtvOaURERERERERERK1jpxERERERERERETXDTiMiIiIiIiIiImqGnUZERERERERERNQMO42IiIiIiIiIiKgZdhoREREREREREVEz7DQiIiIiIiIiIqJm2GlERERERERERETNsNOIKIzdeOONmDFjRqirQURERBQybA8REYWOJdQVIOquFEU56fMPP/wwnn32WQghglQjIiIiouBie4iIKLwpgntgopAoLCzUHr/33nuYN28eduzYoS2Li4tDXFxcKKpGREREFBRsDxERhTeenkYUIpmZmdrN4XBAUZSAZXFxcc2GY48fPx533nkn5s6di6SkJGRkZOCVV15BTU0NbrrpJsTHx6Nfv3744osvAt5r8+bNmDp1KuLi4pCRkYHrrrsOx48fD/IWExEREQVie4iIKLyx04gowvzzn/9EamoqVq1ahTvvvBN33HEHfvnLX2LcuHFYt24dJk2ahOuuuw61tbUAgIqKCkyYMAEFBQVYs2YNFi1ahKKiIvzqV78K8ZYQERERGcP2EBFRcLDTiCjCnHbaafjTn/6E/Px8PPjgg4iOjkZqaipuu+025OfnY968eSgtLcXGjRsBAM899xwKCgrw+OOPY+DAgSgoKMBrr72GJUuWYOfOnSHeGiIiIiL92B4iIgoOToRNFGGGDx+uPTabzUhJScGwYcO0ZRkZGQCA4uJiAMCGDRuwZMmSFucD2LNnD/r379/JNSYiIiLqWGwPEREFBzuNiCJMVFRUwM+KogQs812FRFVVAEB1dTWmT5+OJ598stm6srKyOrGmRERERJ2D7SEiouBgpxFRFzdy5Eh8+OGHyMvLg8XCX3kiIiLqftgeIiIyhnMaEXVxs2bNQllZGa6++mqsXr0ae/bswZdffombbroJHo8n1NUjIiIi6nRsDxERGcNOI6IuLjs7Gz/88AM8Hg8mTZqEYcOGYe7cuUhMTITJxF0AERERdX1sDxERGaMIIUSoK0FEREREREREROGF3epERERERERERNQMO42IiIiIiIiIiKgZdhoREREREREREVEz7DQiIiIiIiIiIqJm2GlERERERERERETNsNOIiIiIiIiIiIiaYacRERERERERERE1w04jIiIiIiIiIiJqhp1GRERERERERETUDDuNiIiIiIiIiIioGXYaERERERERERFRM+w0IiIiIiIiIiKiZv5/TUBvJcBBlFwAAAAASUVORK5CYII=",
+      "text/plain": [
+       "\u001b[1m<\u001b[0m\u001b[1;95mFigure\u001b[0m\u001b[39m size 120\u001b[0m\u001b[1;36m0x600\u001b[0m\u001b[39m with \u001b[0m\u001b[1;36m4\u001b[0m\u001b[39m Axes\u001b[0m\u001b[1m>\u001b[0m"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "  EnzymeML document written to outputs\\fitted.json\n",
+       "\n",
+       "
\n" + ], + "text/plain": [ + "\n", + " EnzymeML document written to \u001b[1;32moutputs\\fitted.json\u001b[0m\n", + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# And we can use the new model to visualize the data\n", + "f, ax = pe.plot(\n", + " enzmldoc,\n", + " thinlayer=tl_copasi,\n", + " show=True,\n", + " measurement_ids=[\n", + " \"measurement0\",\n", + " \"measurement1\",\n", + " \"measurement2\",\n", + " \"measurement3\",\n", + " ],\n", + ")\n", + "\n", + "# We can now write the fitted parameters back to the EnzymeML document\n", + "fitted = tl_copasi.write()\n", + "pe.write_enzymeml(fitted, path=\"outputs/fitted_copasi.json\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "096845ec", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
๐Ÿ“‹ EnzymeML Document Summary\n",
+       "
\n" + ], + "text/plain": [ + "๐Ÿ“‹ \u001b[1;34mEnzymeML Document Summary\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
โ•ญโ”€ ๐Ÿ“„ Document Overview โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n",
+       "โ”‚ Name: ABTS measurement                                                                                          โ”‚\n",
+       "โ”‚ Version: 2                                                                                                      โ”‚\n",
+       "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\n",
+       "\n",
+       "    ๐Ÿ“Š Component Counts                                                      \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”“                                                  \n",
+       "โ”ƒ Component       โ”ƒ Count โ”ƒ                                                  \n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”ฉ                                                  \n",
+       "โ”‚ Vessels         โ”‚     1 โ”‚                                                  \n",
+       "โ”‚ Proteins        โ”‚     2 โ”‚                                                  \n",
+       "โ”‚ Complexes       โ”‚     0 โ”‚                                                  \n",
+       "โ”‚ Small Molecules โ”‚     3 โ”‚                                                  \n",
+       "โ”‚ Reactions       โ”‚     2 โ”‚                                                  \n",
+       "โ”‚ Measurements    โ”‚    24 โ”‚                                                  \n",
+       "โ”‚ Equations       โ”‚     0 โ”‚                                                  \n",
+       "โ”‚ Parameters      โ”‚     3 โ”‚                                                  \n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                                                  \n",
+       "                             ๐Ÿงฌ Species Details                              \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ Type           โ”ƒ ID              โ”ƒ Name                 โ”ƒ Details         โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ Protein        โ”‚ slac            โ”‚ slac                 โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ”‚ Protein        โ”‚ slac_inactive   โ”‚ slac_inactive        โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ”‚ Small Molecule โ”‚ abts            โ”‚ abts                 โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ”‚ Small Molecule โ”‚ buffer          โ”‚ buffer               โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ”‚ Small Molecule โ”‚ abts_radical    โ”‚ abts_radical         โ”‚ Vessel: vessel0 โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "\n",
+       "               ๐Ÿงช Vessels                \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ ID      โ”ƒ Name    โ”ƒ Volume โ”ƒ Constant โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ vessel0 โ”‚ vessel0 โ”‚ 1.0 l  โ”‚    โœ“     โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "\n",
+       "                                    โšก Reactions                                     \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ ID           โ”ƒ Name                 โ”ƒ Reversible โ”ƒ Reaction Schema                โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ reaction0    โ”‚ reaction0            โ”‚     โœ—      โ”‚ abts โ†’ abts_radical            โ”‚\n",
+       "โ”‚ reaction1    โ”‚ reaction1            โ”‚     โœ—      โ”‚ slac โ†’ slac_inactive           โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "\n",
+       "                                ๐Ÿ“ˆ Measurements                                 \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ ID                        โ”ƒ Name                 โ”ƒ Species Data โ”ƒ Conditions โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ measurement0              โ”‚ measurement0 - A2    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ measurement1              โ”‚ measurement0 - B2    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ measurement2              โ”‚ measurement0 - C2    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ measurement3              โ”‚ measurement1 - A3    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ measurement4              โ”‚ measurement1 - B3    โ”‚      5       โ”‚ โ€”          โ”‚\n",
+       "โ”‚ ... +19 more measurements โ”‚                      โ”‚              โ”‚            โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "\n",
+       "                                        ๐Ÿ”ข Parameters                                        \n",
+       "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n",
+       "โ”ƒ Symbol โ”ƒ Name  โ”ƒ Value                 โ”ƒ Initial Value โ”ƒ Bounds         โ”ƒ Unit โ”ƒ Constant โ”ƒ\n",
+       "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n",
+       "โ”‚ k_cat  โ”‚ k_cat โ”‚ 0.8566148829513647    โ”‚ 0.01          โ”‚ [1e-06, 2.0]   โ”‚ โ€”    โ”‚    โœ“     โ”‚\n",
+       "โ”‚ K_M    โ”‚ K_M   โ”‚ 82.448096549958       โ”‚ 120.0         โ”‚ [1e-06, 150.0] โ”‚ โ€”    โ”‚    โœ“     โ”‚\n",
+       "โ”‚ k_ie   โ”‚ k_ie  โ”‚ 0.0012441163321251665 โ”‚ 0.01          โ”‚ [1e-06, 0.05]  โ”‚ โ€”    โ”‚    โœ“     โ”‚\n",
+       "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[34mโ•ญโ”€\u001b[0m\u001b[34m ๐Ÿ“„ Document Overview \u001b[0m\u001b[34mโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€\u001b[0m\u001b[34mโ”€โ•ฎ\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[1mName:\u001b[0m ABTS measurement \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ”‚\u001b[0m \u001b[1mVersion:\u001b[0m 2 \u001b[34mโ”‚\u001b[0m\n", + "\u001b[34mโ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ\u001b[0m\n", + "\n", + "\u001b[3m ๐Ÿ“Š Component Counts \u001b[0m \n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”“ \n", + "โ”ƒ\u001b[1;35m \u001b[0m\u001b[1;35mComponent \u001b[0m\u001b[1;35m \u001b[0mโ”ƒ\u001b[1;35m \u001b[0m\u001b[1;35mCount\u001b[0m\u001b[1;35m \u001b[0mโ”ƒ \n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”ฉ \n", + "โ”‚ Vessels โ”‚ 1 โ”‚ \n", + "โ”‚ Proteins โ”‚ 2 โ”‚ \n", + "โ”‚ Complexes โ”‚ 0 โ”‚ \n", + "โ”‚ Small Molecules โ”‚ 3 โ”‚ \n", + "โ”‚ Reactions โ”‚ 2 โ”‚ \n", + "โ”‚ Measurements โ”‚ 24 โ”‚ \n", + "โ”‚ Equations โ”‚ 0 โ”‚ \n", + "โ”‚ Parameters โ”‚ 3 โ”‚ \n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ \n", + "\u001b[3m ๐Ÿงฌ Species Details \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;32m \u001b[0m\u001b[1;32mType \u001b[0m\u001b[1;32m \u001b[0mโ”ƒ\u001b[1;32m \u001b[0m\u001b[1;32mID \u001b[0m\u001b[1;32m \u001b[0mโ”ƒ\u001b[1;32m \u001b[0m\u001b[1;32mName \u001b[0m\u001b[1;32m \u001b[0mโ”ƒ\u001b[1;32m \u001b[0m\u001b[1;32mDetails \u001b[0m\u001b[1;32m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚ Protein โ”‚\u001b[35m \u001b[0m\u001b[35mslac\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ slac โ”‚ Vessel: vessel0 โ”‚\n", + "โ”‚ Protein โ”‚\u001b[35m \u001b[0m\u001b[35mslac_inactive\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ slac_inactive โ”‚ Vessel: vessel0 โ”‚\n", + "โ”‚ Small Molecule โ”‚\u001b[35m \u001b[0m\u001b[35mabts\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ abts โ”‚ Vessel: vessel0 โ”‚\n", + "โ”‚ Small Molecule โ”‚\u001b[35m \u001b[0m\u001b[35mbuffer\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ buffer โ”‚ Vessel: vessel0 โ”‚\n", + "โ”‚ Small Molecule โ”‚\u001b[35m \u001b[0m\u001b[35mabts_radical\u001b[0m\u001b[35m \u001b[0m\u001b[35m \u001b[0mโ”‚ abts_radical โ”‚ Vessel: vessel0 โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n", + "\n", + "\u001b[3m ๐Ÿงช Vessels \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;33m \u001b[0m\u001b[1;33mID \u001b[0m\u001b[1;33m \u001b[0mโ”ƒ\u001b[1;33m \u001b[0m\u001b[1;33mName \u001b[0m\u001b[1;33m \u001b[0mโ”ƒ\u001b[1;33m \u001b[0m\u001b[1;33mVolume\u001b[0m\u001b[1;33m \u001b[0mโ”ƒ\u001b[1;33m \u001b[0m\u001b[1;33mConstant\u001b[0m\u001b[1;33m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mvessel0\u001b[0m\u001b[35m \u001b[0mโ”‚ vessel0 โ”‚ 1.0 l โ”‚ โœ“ โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n", + "\n", + "\u001b[3m โšก Reactions \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;31m \u001b[0m\u001b[1;31mID \u001b[0m\u001b[1;31m \u001b[0mโ”ƒ\u001b[1;31m \u001b[0m\u001b[1;31mName \u001b[0m\u001b[1;31m \u001b[0mโ”ƒ\u001b[1;31m \u001b[0m\u001b[1;31mReversible\u001b[0m\u001b[1;31m \u001b[0mโ”ƒ\u001b[1;31m \u001b[0m\u001b[1;31mReaction Schema \u001b[0m\u001b[1;31m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mreaction0 \u001b[0m\u001b[35m \u001b[0mโ”‚ reaction0 โ”‚ โœ— โ”‚ abts โ†’ abts_radical โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mreaction1 \u001b[0m\u001b[35m \u001b[0mโ”‚ reaction1 โ”‚ โœ— โ”‚ slac โ†’ slac_inactive โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n", + "\n", + "\u001b[3m ๐Ÿ“ˆ Measurements \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;36m \u001b[0m\u001b[1;36mID \u001b[0m\u001b[1;36m \u001b[0mโ”ƒ\u001b[1;36m \u001b[0m\u001b[1;36mName \u001b[0m\u001b[1;36m \u001b[0mโ”ƒ\u001b[1;36m \u001b[0m\u001b[1;36mSpecies Data\u001b[0m\u001b[1;36m \u001b[0mโ”ƒ\u001b[1;36m \u001b[0m\u001b[1;36mConditions\u001b[0m\u001b[1;36m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement0 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement0 - A2 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement1 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement0 - B2 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement2 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement0 - C2 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement3 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement1 - A3 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mmeasurement4 \u001b[0m\u001b[35m \u001b[0mโ”‚ measurement1 - B3 โ”‚ 5 โ”‚ โ€” โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35m... +19 more measurements\u001b[0m\u001b[35m \u001b[0mโ”‚ โ”‚ โ”‚ โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n", + "\n", + "\u001b[3m ๐Ÿ”ข Parameters \u001b[0m\n", + "โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“\n", + "โ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mSymbol\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mName \u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mValue \u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mInitial Value\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mBounds \u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mUnit\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\u001b[1;38;5;129m \u001b[0m\u001b[1;38;5;129mConstant\u001b[0m\u001b[1;38;5;129m \u001b[0mโ”ƒ\n", + "โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mk_cat \u001b[0m\u001b[35m \u001b[0mโ”‚ k_cat โ”‚ 0.8566148829513647 โ”‚ 0.01 โ”‚ [1e-06, 2.0] โ”‚ โ€” โ”‚ โœ“ โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mK_M \u001b[0m\u001b[35m \u001b[0mโ”‚ K_M โ”‚ 82.448096549958 โ”‚ 120.0 โ”‚ [1e-06, 150.0] โ”‚ โ€” โ”‚ โœ“ โ”‚\n", + "โ”‚\u001b[35m \u001b[0m\u001b[35mk_ie \u001b[0m\u001b[35m \u001b[0mโ”‚ k_ie โ”‚ 0.0012441163321251665 โ”‚ 0.01 โ”‚ [1e-06, 0.05] โ”‚ โ€” โ”‚ โœ“ โ”‚\n", + "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Due to GitHub's rendering we need to disable the interactive summary\n", + "# but locally you can enable it by setting `interactive=True` to make\n", + "# use of the interactive widgets.\n", + "pe.summary(fitted, interactive=False)" + ] + }, + { + "cell_type": "markdown", + "id": "3881b55b", + "metadata": {}, + "source": [ + "## I want to write my own thin layer!\n", + "\n", + "In order to write your own thin layer, you need to implement the `BaseThinLayer` class. This class provides a common interface to PyEnzyme, which allows you to use the same functions and methods as the built-in thin layers. Once implemented, you can plug it into PyEnzyme's functions and methods.\n", + "\n", + "Your thin layer is something PyEnzyme needs? Feel free to open a pull request!" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "env-pyenzyme", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From f8b4d08d6925b60990d3eb0a0ab784072547cc15 Mon Sep 17 00:00:00 2001 From: Frank Bergmann Date: Sat, 27 Sep 2025 11:45:24 +0200 Subject: [PATCH 4/6] add basico to workflow dependencies --- .github/workflows/unit-tests.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml index 95005e3..8e3aa8d 100644 --- a/.github/workflows/unit-tests.yaml +++ b/.github/workflows/unit-tests.yaml @@ -21,7 +21,7 @@ jobs: - name: Install dependencies run: | python3 -m pip install --upgrade pip - python3 -m pip install pytest-cov openpyxl pytest-httpx pysces lmfit seaborn numexpr python-libcombine deepdiff deprecation + python3 -m pip install pytest-cov openpyxl pytest-httpx pysces copasi-basico lmfit seaborn numexpr python-libcombine deepdiff deprecation pip3 install -e . - name: Test with pytest From 8bad59db1fdb2669c35172f79f65841a643cd889 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Sat, 27 Sep 2025 11:59:26 +0200 Subject: [PATCH 5/6] Specify UTF-8 encoding when opening files Added explicit encoding="utf-8" to file open calls in omex.py and test_legacy.py to ensure consistent file reading across different environments. --- pyenzyme/sbml/omex.py | 5 ++++- tests/integration/test_legacy.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pyenzyme/sbml/omex.py b/pyenzyme/sbml/omex.py index 636231d..7d32f01 100644 --- a/pyenzyme/sbml/omex.py +++ b/pyenzyme/sbml/omex.py @@ -184,4 +184,7 @@ def read_sbml_omex(path: Path | str) -> tuple[TextIO, dict[str, pd.DataFrame]]: meas_data[entry.location] = df - return open(omex.get_path(master_file.location)), meas_data + return open( + omex.get_path(master_file.location), + encoding="utf-8", + ), meas_data diff --git a/tests/integration/test_legacy.py b/tests/integration/test_legacy.py index 8e304ea..987fded 100644 --- a/tests/integration/test_legacy.py +++ b/tests/integration/test_legacy.py @@ -16,7 +16,7 @@ def test_legacy(self): consistent and expected output for legacy OMEX files. """ enzmldoc = EnzymeMLDocument.fromFile("tests/fixtures/sbml/v1_example.omex") - expected = open("tests/fixtures/sbml/v1_sbml.xml", "r").read() + expected = open("tests/fixtures/sbml/v1_sbml.xml", "r", encoding="utf-8").read() actual = enzmldoc.toXMLString() assert actual == expected From f94585d0d5698ba032610e0a9f01d6f202e5ffc1 Mon Sep 17 00:00:00 2001 From: Jan Range <30547301+JR-1991@users.noreply.github.com> Date: Sun, 28 Sep 2025 01:43:18 +0200 Subject: [PATCH 6/6] Change inits type from list to dict in ThinLayerCopasi Updated the 'inits' attribute in the ThinLayerCopasi class from a list of InitMap to a dictionary mapping strings to InitMap. This change likely improves lookup efficiency and clarifies the intended data structure. --- pyenzyme/thinlayers/basico.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyenzyme/thinlayers/basico.py b/pyenzyme/thinlayers/basico.py index 31159d5..c921523 100644 --- a/pyenzyme/thinlayers/basico.py +++ b/pyenzyme/thinlayers/basico.py @@ -45,7 +45,7 @@ class ThinLayerCopasi(BaseThinLayer): model: basico.COPASI.CDataModel model_dir: Path | str - inits: list[InitMap] + inits: dict[str, InitMap] cols: list[str] parameters: list nu_enzmldoc: v2.EnzymeMLDocument