From 14f0dfd8b417f86dcd154c5abb31503b528cd4e3 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Wed, 29 Jul 2026 19:59:26 +0200 Subject: [PATCH 01/13] ci: adopt public main trunk workflow --- .github/workflows/build-and-publish.yml | 9 + .github/workflows/deploy-docs.yml | 67 ++---- .github/workflows/unit-tests.yml | 9 +- CONTRIBUTING.md | 4 +- RELEASE.md | 276 +++++------------------- corneto/release.py | 27 +-- docs/custom-index.html | 2 +- docs/releases/index.md | 2 +- docs/tutorials/README.md | 6 +- scripts/generate_switcher.py | 7 +- tests/test_generate_switcher.py | 24 +++ tests/test_release.py | 2 - 12 files changed, 118 insertions(+), 317 deletions(-) create mode 100644 tests/test_generate_switcher.py diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml index fc5cf44ff..7b52beecc 100644 --- a/.github/workflows/build-and-publish.yml +++ b/.github/workflows/build-and-publish.yml @@ -89,6 +89,15 @@ jobs: poetry build poetry run twine check dist/* + # The tag is already covered by the merged PR's full test gate. Validate + # only the tag-specific artifact here, before it is published. + - name: Smoke-test the release wheel + if: steps.validate_tag.outputs.should_publish == 'true' + run: | + python -m venv /tmp/corneto-release-wheel-smoke + /tmp/corneto-release-wheel-smoke/bin/pip install dist/*.whl + /tmp/corneto-release-wheel-smoke/bin/python -c 'import corneto; print(corneto.__version__)' + # 8. Create GitHub Release with automated notes - name: Create GitHub Release if: steps.validate_tag.outputs.should_publish == 'true' diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index e365d6b50..f9b78f005 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -7,24 +7,8 @@ env: on: push: branches: - - dev - main - tags: - - '*' workflow_dispatch: - inputs: - target: - description: "What to build/deploy (dev=latest, main=stable, or tag)" - type: choice - required: true - options: - - dev - - main - - tag - tag: - description: "Tag to deploy when target=tag (e.g., v1.0.0-beta.3)" - type: string - required: false workflow_run: workflows: ["Publish Python Package"] types: [completed] @@ -43,14 +27,7 @@ jobs: with: fetch-depth: 0 fetch-tags: true - ref: >- - ${{ - github.event_name == 'workflow_dispatch' && - (github.event.inputs.target == 'tag' && format('refs/tags/{0}', github.event.inputs.tag) || - format('refs/heads/{0}', github.event.inputs.target)) - || github.event_name == 'workflow_run' && github.event.workflow_run.head_sha - || github.ref - }} + ref: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.ref }} - name: Set up Python & Graphviz uses: actions/setup-python@v5 @@ -89,22 +66,19 @@ jobs: - name: Determine version_folder id: set_version run: | - case "${GITHUB_REF}" in - refs/heads/dev) - echo "version_folder=latest" >> $GITHUB_OUTPUT - ;; - refs/heads/main) - echo "version_folder=stable" >> $GITHUB_OUTPUT - ;; - refs/tags/*) - v="${GITHUB_REF#refs/tags/}" - echo "version_folder=${v}" >> $GITHUB_OUTPUT - ;; - *) - echo "No docs to deploy for ${GITHUB_REF}" >&2 - exit 0 - ;; - esac + if [ "${{ github.event_name }}" = "workflow_run" ]; then + if [[ "${{ github.event.workflow_run.head_branch }}" == v* ]]; then + echo "version_folder=${{ github.event.workflow_run.head_branch }}" >> $GITHUB_OUTPUT + else + echo "Publish workflow did not run for a release tag" >&2 + exit 1 + fi + elif [ "${GITHUB_REF}" = "refs/heads/main" ]; then + echo "version_folder=stable" >> $GITHUB_OUTPUT + else + echo "No documentation target for ${GITHUB_REF}" >&2 + exit 1 + fi - name: Sync GitHub Releases to Docs env: @@ -119,15 +93,6 @@ jobs: DOCS_BASE_URL: https://corneto.org run: poetry run sphinx-build -W --keep-going -b html docs docs/_build/html - - name: Deploy “latest” docs - if: ${{ steps.set_version.outputs.version_folder == 'latest' }} - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/_build/html - destination_dir: latest - keep_files: true - - name: Deploy “stable” docs if: ${{ steps.set_version.outputs.version_folder == 'stable' }} uses: peaceiris/actions-gh-pages@v4 @@ -137,8 +102,8 @@ jobs: destination_dir: stable keep_files: true - - name: Deploy versioned docs for tag - if: ${{ startsWith(github.ref, 'refs/tags/') }} + - name: Deploy versioned docs for release tag + if: ${{ steps.set_version.outputs.version_folder != 'stable' }} uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index f213c1b4f..7b3d9819d 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -4,8 +4,15 @@ name: Unit tests on: - push: pull_request: + branches: + - main + +# A PR into the public trunk is the release gate. Do not repeat this matrix +# for every temporary branch push, merge to main, or release tag. +concurrency: + group: unit-tests-${{ github.event.pull_request.number }} + cancel-in-progress: true env: POETRY_VERSION: "2.4.1" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 43712a505..e14e0b8e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,7 +13,7 @@ For notebook execution in tutorials, we also support [Pixi](https://pixi.sh/) en Once installed, clone the repository and install it with poetry. This will create a virtual environment ready for development: ```bash -git clone git+https://github.com/saezlab/corneto.git@dev +git clone https://github.com/saezlab/corneto.git cd corneto poetry install --with dev ``` @@ -243,7 +243,7 @@ poetry run python docs/tutorials/run_notebooks.py - **Pixi integration**: Tutorial notebooks can use individual `pixi.toml` files for isolated execution environments with specific dependencies. - **Poetry and PEP 621**: The project uses both Poetry (legacy) and modern PEP 621 project configuration in `pyproject.toml`. -Please see [contributing with tutorials](https://github.com/saezlab/corneto/blob/dev/docs/tutorials/README.md) for more information on how to contribute tutorials. +Please see [contributing with tutorials](https://github.com/saezlab/corneto/blob/main/docs/tutorials/README.md) for more information on how to contribute tutorials. ## Releases diff --git a/RELEASE.md b/RELEASE.md index 41dc719cb..941140b18 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,264 +1,88 @@ # Release Process -CORNETO uses an automated tag-based release process powered by Poetry Dynamic Versioning and GitHub Actions. Git tags serve as the single source of truth for versioning - no manual version bumping in files is required. +CORNETO uses public `main` as its trunk. Every public change reaches it through a +pull request, and an annotated Git tag is the single source of truth for a +release version. Poetry Dynamic Versioning reads that tag; do not edit a version +in project files for a release. -**Note**: This document covers the release process for maintainers. For development setup and contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md). +## Public workflow -## Release Workflow +1. Develop and validate changes in the private workbench as needed. +2. Review the exact publishable snapshot for confidential material. +3. Push that snapshot to a temporary public `publication/` branch and + open one pull request into public `main`. +4. The public-main pull request is the release gate. Its CI validates the merge + result with the Python test matrix, quality checks, documentation build, and + package smoke test. +5. After the PR merges, fast-forward the private mirror's `main` branch to + public `main`. +6. Create the release tag from that public `main` commit. -To create a new release: +There is no public `dev` branch in this workflow. The private `dev` branch may +remain an unpublished integration line, but it is never a public promotion +target. -1. **Integrate `dev` into `main`**. - - Merge via pull request (`dev` -> `main`) or fast-forward merge locally. - ```bash - git checkout dev - git pull --ff-only origin dev - git checkout main - git pull --ff-only origin main - git merge --ff-only dev - git push origin main - ``` +## Creating a release -2. **Create and push the release tag from `main`**: - ```bash - poetry install - git checkout main - git pull --ff-only origin main - poetry run release v1.2.3 - ``` - - Use pre-release tags as needed: `v1.2.3-alpha.0`, `v1.2.3-beta.0`, `v1.2.3-rc.0`. - -3. **Automatic pipeline execution**: - - GitHub Actions detects the new tag - - Builds the package using Poetry - - **Creates GitHub Release with automated release notes** - - Publishes to PyPI via OIDC trusted publishing - - Deploys versioned documentation to GitHub Pages - -4. **Sync `main` back into `dev` after tagging**: - - This keeps `dev` reachable from the latest release tags used by dynamic versioning. - - Without this step, `dev` may continue reporting an older pre-release base (e.g., `1.0.0b3+...`). - ```bash - git checkout dev - git pull --ff-only origin dev - git merge --ff-only origin/main - git push origin dev - ``` - -5. **Version resolution**: - - Poetry Dynamic Versioning automatically extracts the version from the Git tag - - The package version in `pyproject.toml` remains at `0.0.0` (placeholder) - - Built packages use the actual tag version (e.g., `1.2.3`) - -6. **Automated Release Notes**: - - GitHub automatically generates release notes based on merged PRs and commits - - Uses conventional commit patterns to categorize changes - - Includes contributor acknowledgments and change summaries - - Release notes can be manually edited after creation if needed - -## Example Release Process +Only tag a clean local checkout on `main` after the public-main PR has passed +and merged: ```bash -# Integrate dev into main -git checkout dev -git pull --ff-only origin dev git checkout main git pull --ff-only origin main -git merge --ff-only dev -git push origin main - -# Create and push a release tag explicitly -poetry run release v1.0.0-beta.4 - -# Sync main back into dev so dev sees the latest release tag ancestry -git checkout dev -git pull --ff-only origin dev -git merge --ff-only origin/main -git push origin dev -``` - -The release pipeline (`.github/workflows/build-and-publish.yml`) will automatically: -- Build source and wheel distributions -- Create a GitHub Release with automated release notes -- Publish to PyPI using trusted publishing -- Deploy documentation with version switcher - -### Release Helper - -Use the helper command to create and push an explicit tag: - -```bash +poetry install +poetry run release v1.2.3 --dry-run poetry run release v1.2.3 -poetry run release v1.0.0-beta.4 -poetry run release 1.0.0-rc.1 # 'v' prefix is optional ``` -It validates release preconditions (clean tree, on `main`, in sync with `origin/main`, -`origin/dev` merged into `main`, tag not already present), then creates an annotated tag and pushes it to `origin`. +Pre-release tags use the same flow, for example `v1.2.3-alpha.0`, +`v1.2.3-beta.0`, or `v1.2.3-rc.0`. The helper confirms that the tree is clean, +the checkout is on and matches the selected remote's `main`, and the tag does +not already exist. Useful options: ```bash -poetry run release v1.0.0-beta.4 --dry-run # validate only -poetry run release v1.0.0-beta.4 --yes # skip confirmation prompt -poetry run release v1.0.0-beta.4 --remote public # use an explicit release remote +poetry run release v1.0.0-rc.1 --dry-run +poetry run release v1.0.0-rc.1 --yes ``` -The remote defaults to `origin`, which is appropriate for a normal clone of -the public CORNETO repository. In a private development workbench where -`origin` points to a private mirror, configure a separate release-only remote -for the public repository and pass it explicitly: +In the private workbench, the public repository is configured as `public` and +must be named explicitly: ```bash -git remote add public https://github.com/saezlab/corneto.git -poetry run release v1.0.0-beta.8 --remote public --dry-run -poetry run release v1.0.0-beta.8 --remote public +poetry run release v1.0.0-rc.1 --remote public --dry-run +poetry run release v1.0.0-rc.1 --remote public ``` -Before tagging, publish selected private changes through a clean branch and a -pull request into public `dev`, followed by a release pull request from public -`dev` into public `main`. Never release a private development branch directly. +## CI responsibilities -### Customizing Release Notes +The release process intentionally gives each workflow one job: -After the automated release is created, you can: -1. Go to the [GitHub Releases page](https://github.com/saezlab/corneto/releases) -2. Edit the release to add additional context, migration guides, or breaking change notices -3. The automated notes will serve as the foundation, with your manual additions +- Pull requests into `main` run the complete release gate. +- Pushes to `main` deploy the stable documentation only. +- Release tags build the exact tagged distributions, check them, publish to + PyPI, create the GitHub Release, and deploy versioned documentation. -## Version Numbering +This avoids repeating the full test matrix for temporary branch pushes, the +post-merge `main` push, and the release tag. The tagged package remains +protected by artifact-specific validation, while the merged PR is the code +quality gate. -Follow [Semantic Versioning](https://semver.org/): -- `MAJOR.MINOR.PATCH` (e.g., `v1.2.3`) -- Use `v` prefix for tags (e.g., `v1.0.0`, not `1.0.0`) -- Pre-releases: `v1.0.0-alpha.0`, `v1.0.0-beta.0`, `v1.0.0-rc.0` +## Local validation -## Prerequisites for Releases - -Before creating a release, ensure the development environment and code quality standards are met: - -### Development Setup -All maintainers should have the development environment properly configured as described in [CONTRIBUTING.md](CONTRIBUTING.md), including: -- Poetry for dependency management -- Pre-commit hooks installed and active - -### Pre-commit Requirements -**Critical**: Pre-commit hooks must be installed and passing for all commits that will be included in the release. The pre-commit configuration ensures: - -- **Conventional commit messages**: Required for automated GitHub release notes generation (feat:, fix:, docs:, etc.) -- **Code quality**: Linting, formatting, and style checks via Ruff -- **Repository hygiene**: File validation, trailing whitespace removal, etc. - -**Important**: Conventional commits are essential for the automated release notes feature. Each commit should follow the pattern: -``` -(): - -[optional body] - -[optional footer(s)] -``` - -Common types: `feat`, `fix`, `docs`, `chore`, `refactor`, `test`, `ci`, `build`, `perf`, `style`, `revert` - -To set up pre-commit hooks: -```bash -poetry run pre-commit install --hook-type pre-commit --hook-type commit-msg -``` +Before opening the public-main PR, run the checks relevant to the change. A +full release-candidate check normally includes: -### Code Quality Validation -Before releasing, run comprehensive quality checks: ```bash -# Tests poetry run pytest - -# Linting and formatting -poetry run ruff check corneto tests +poetry run ruff check --no-fix corneto tests poetry run ruff format --check corneto tests - -# Package metadata poetry check - -# Advisory type-checking baseline (309 errors in Pyrefly 0.60.0 for RC1) -# This report is tracked but is not an RC blocker. -poetry run pyrefly check corneto - -# Documentation and distributions -poetry run sphinx-build -E -a -W --keep-going -b html docs docs/_build/html +poetry run sphinx-build -W --keep-going -b html docs docs/_build/html poetry build poetry run twine check dist/* ``` -## Development Workflow - -The typical development workflow involves: - -1. **Work in the `dev` branch** for ongoing development -2. **Ensure all commits follow conventional commit format** (enforced by pre-commit hooks) -3. **Run quality checks** before merging to main -4. **Integrate into `main`** when ready for release (via pull request or fast-forward merge) -5. **Create release tag** on the `main` branch to trigger automated publishing -6. **Sync `main` back into `dev`** immediately after tagging - -## Technical Details - -### Poetry Dynamic Versioning Configuration - -The project uses Poetry Dynamic Versioning (configured in `pyproject.toml`): - -```toml -[tool.poetry-dynamic-versioning] -enable = true -vcs = "git" -pattern = "default" -style = "pep440" -tagged-metadata = false -``` - -### GitHub Actions Workflow - -The release workflow (`.github/workflows/build-and-publish.yml`) is triggered by: -- Push events to tags matching `v*` pattern -- Uses OIDC trusted publishing for secure PyPI uploads -- Requires no manual secrets or tokens - -### Branch Strategy - -- **`main`**: Stable releases and release tags -- **`dev`**: Active development branch -- Recommended integration: `dev` -> `main` for releases, then `main` -> `dev` immediately after tagging - -### Documentation Version Switcher - -The documentation uses a centralized version switcher that allows users to navigate between different documentation versions (stable, latest, and specific releases). This system is designed to work across all deployed documentation versions automatically. - -#### Architecture - -The version switcher uses a **single, centrally-updated file hosted on GitHub Pages**: - -1. **Switcher Hosting**: `switcher.json` is deployed to the root of the docs site - - URL: `https://corneto.org/switcher.json` (configured via `DOCS_BASE_URL`) - - This URL is configured in `docs/conf.py` via `_switcher_url_with_ts()` - - A timestamp parameter is added to bypass browser caching - -2. **Automated Updates**: When documentation is deployed to GitHub Pages: - - The docs workflow generates `switcher.json` (`scripts/generate_switcher.py`) - - It is published to the site root alongside the redirect page - - A post-deploy patch step updates existing HTML in `gh-pages` to: - - point `theme_switcher_json_url` to `https://corneto.org/switcher.json` - - correct `theme_switcher_version_match` based on folder (`stable/`, `latest/`, `vX.Y.Z/`) - -3. **Version Mapping**: Documentation deployments use the following version identifiers: - - `dev` branch → deployed as `"latest"` - - `main` branch → deployed as `"stable"` (typically marked as preferred) - - Git tags (e.g., `v1.0.0`) → deployed using the tag name - - The `SPHINX_VERSION_MATCH` environment variable (set in `.github/workflows/deploy-docs.yml`) tells the PyData Sphinx Theme which version is currently being viewed. - -4. **Deployment Behavior (Why `destination_dir` is used without `keep_files`)**: - - Each docs build replaces only its own folder (`latest/`, `stable/`, or `vX.Y.Z/`) on the `gh-pages` branch. - - This ensures clean regeneration for a given version (no mixing of old/new files) while leaving other versions untouched. - - The root redirect is deployed with `keep_files: true` so it doesn’t delete any versioned folders. - -#### Manual Switcher Updates - -If the automatic workflow fails or manual intervention is needed, re-run the docs workflow or regenerate and deploy the root artifacts (redirect + `switcher.json`) using the same workflow steps. +The GitHub release pipeline uses OIDC trusted publishing, creates release notes +automatically, and marks alpha, beta, and RC tags as pre-releases. diff --git a/corneto/release.py b/corneto/release.py index 420f6a8dc..caddfddbc 100644 --- a/corneto/release.py +++ b/corneto/release.py @@ -55,25 +55,11 @@ def _ensure_remote_exists(remote: str) -> None: def _ensure_up_to_date_with_remote_main(remote: str) -> None: - _run(["git", "fetch", remote, "main", "dev"], check=True) + _run(["git", "fetch", remote, "main"], check=True) head = _run(["git", "rev-parse", "HEAD"], check=True) remote_main = _run(["git", "rev-parse", f"{remote}/main"], check=True) if head != remote_main: - raise ReleaseError(f"HEAD is not at {remote}/main. Pull main after merging dev -> main.") - - -def _ensure_dev_is_merged(remote: str) -> None: - # `merge-base --is-ancestor A B` succeeds when A is reachable from B. - result = subprocess.run( - ["git", "merge-base", "--is-ancestor", f"{remote}/dev", "HEAD"], - text=True, - capture_output=True, - check=False, - ) - if result.returncode != 0: - raise ReleaseError( - f"{remote}/dev is not merged into current main commit yet. Merge dev -> main before releasing." - ) + raise ReleaseError(f"HEAD is not at {remote}/main. Pull main before releasing.") def _ensure_tag_does_not_exist(version: str, remote: str) -> None: @@ -103,7 +89,7 @@ def parse_args(argv: Sequence[str]) -> argparse.Namespace: parser.add_argument( "--remote", default="origin", - help="Git remote containing the release main/dev branches (default: origin).", + help="Git remote containing the release main branch (default: origin).", ) parser.add_argument( "--yes", @@ -127,7 +113,6 @@ def main(argv: Sequence[str] | None = None) -> int: _ensure_clean_tree() _ensure_on_main() _ensure_up_to_date_with_remote_main(args.remote) - _ensure_dev_is_merged(args.remote) _ensure_tag_does_not_exist(version, args.remote) if args.dry_run: @@ -143,12 +128,6 @@ def main(argv: Sequence[str] | None = None) -> int: _create_and_push_tag(version, args.remote) print(f"Release tag pushed to {args.remote}: {version}") print("GitHub Actions will now build, publish, and create the GitHub release.") - print("Post-release sync reminder:") - print(" git checkout dev") - print(f" git pull --ff-only {args.remote} dev") - print(f" git merge --ff-only {args.remote}/main") - print(f" git push {args.remote} dev") - print("This keeps dev aligned with the latest release tag ancestry for dynamic versioning.") return 0 except ReleaseError as exc: print(f"Release aborted: {exc}", file=sys.stderr) diff --git a/docs/custom-index.html b/docs/custom-index.html index d42cb2d23..dfb0fc1b0 100644 --- a/docs/custom-index.html +++ b/docs/custom-index.html @@ -14,7 +14,7 @@ /> - + list[dict[str, object]]: "version": "stable", "url": f"{base_url}/stable/", "preferred": True, - }, - { - "name": "latest", - "version": "latest", - "url": f"{base_url}/latest/", - }, + } ] for tag in _get_tags(): entries.append( diff --git a/tests/test_generate_switcher.py b/tests/test_generate_switcher.py new file mode 100644 index 000000000..0df9b6794 --- /dev/null +++ b/tests/test_generate_switcher.py @@ -0,0 +1,24 @@ +"""Tests for the public documentation version switcher.""" + +from scripts.generate_switcher import build_entries + + +def test_switcher_lists_stable_and_release_tags_without_dev_docs(monkeypatch): + """The public trunk has no separate latest/development documentation site.""" + monkeypatch.setattr("scripts.generate_switcher._get_tags", lambda: ["v1.0.0-rc.2"]) + + entries = build_entries("https://corneto.org") + + assert entries == [ + { + "name": "stable", + "version": "stable", + "url": "https://corneto.org/stable/", + "preferred": True, + }, + { + "name": "v1.0.0-rc.2", + "version": "v1.0.0-rc.2", + "url": "https://corneto.org/v1.0.0-rc.2/", + }, + ] diff --git a/tests/test_release.py b/tests/test_release.py index 072020055..69b76d2ed 100644 --- a/tests/test_release.py +++ b/tests/test_release.py @@ -17,7 +17,6 @@ def test_dry_run_uses_selected_remote(monkeypatch, capsys): monkeypatch.setattr(release, "_ensure_clean_tree", lambda: None) monkeypatch.setattr(release, "_ensure_on_main", lambda: None) monkeypatch.setattr(release, "_ensure_up_to_date_with_remote_main", calls.append) - monkeypatch.setattr(release, "_ensure_dev_is_merged", calls.append) monkeypatch.setattr( release, "_ensure_tag_does_not_exist", @@ -28,7 +27,6 @@ def test_dry_run_uses_selected_remote(monkeypatch, capsys): assert result == 0 assert calls == [ - "public", "public", "public", ("v1.0.0-beta.8", "public"), From c478b4f0e68795d14041282286fc4ddbcb368b93 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Thu, 30 Jul 2026 16:09:24 +0200 Subject: [PATCH 02/13] docs(metabolism): overhaul FBA and iMAT guides --- corneto/methods/imat.py | 10 +- .../metabolism/flux-balance-analysis.ipynb | 9264 +---------------- docs/guide/metabolism/imat.ipynb | 663 ++ docs/guide/metabolism/index.md | 11 +- .../metabolism/multicondition-imat.ipynb | 1913 +--- .../metabolism/multicondition-sfba.ipynb | 582 +- tests/methods/test_user_inputs.py | 21 +- 7 files changed, 1751 insertions(+), 10713 deletions(-) create mode 100644 docs/guide/metabolism/imat.ipynb diff --git a/corneto/methods/imat.py b/corneto/methods/imat.py index 88595fecd..667fd22c8 100644 --- a/corneto/methods/imat.py +++ b/corneto/methods/imat.py @@ -40,7 +40,9 @@ class MultiSampleIMAT(MultiSampleFBA): Used when both types of regularization are needed. Defaults to 0.0. eps (float, optional): Tolerance for considering a flux as non-zero. Defaults to 1e-2. - scale (bool, optional): Whether to scale the weights. Defaults to False. + scale (bool, optional): If True, normalize the nonzero iMAT score + weights independently for each condition so their absolute values + sum to 100. Defaults to False. gpr_field (str, optional): Name of the attribute field containing GPR rules. Defaults to "GPR". high_expression_threshold (Optional[float], optional): Threshold above @@ -198,8 +200,10 @@ def preprocess(self, graph: BaseGraph, data: Data) -> Tuple[BaseGraph, Data]: # Count features with mapping="edge" for feature in sample.features: - if feature.mapping == "edge" and ( - feature.data.get("role") != "objective" or "imat_score" in feature.data + if ( + feature.mapping == "edge" + and (feature.value is not None or "imat_score" in feature.data) + and (feature.data.get("role") != "objective" or "imat_score" in feature.data) ): edge_features_count += 1 diff --git a/docs/guide/metabolism/flux-balance-analysis.ipynb b/docs/guide/metabolism/flux-balance-analysis.ipynb index 7fbf1451c..9a4f3f05d 100644 --- a/docs/guide/metabolism/flux-balance-analysis.ipynb +++ b/docs/guide/metabolism/flux-balance-analysis.ipynb @@ -2,9212 +2,300 @@ "cells": [ { "cell_type": "markdown", - "id": "f2d7b3c9", + "id": "fba-introduction", "metadata": {}, "source": [ - "# Flux Balance Analysis (FBA)\n", - " \n", - "Flux Balance Analysis (FBA) is a computational method used primarily in systems biology and metabolic engineering. It's a way to understand and predict the flow or \"flux\" of metabolites in a metabolic network under certain conditions.\n", + "# Flux balance analysis\n", "\n", - "In this tutorial, we will see how to create FBA problems with CORNETO for metabolic analysis, how CORNETO can interoperate with other FBA-based libraries such as COBRApy or MIOM, and how CORNETO's FBA problem can be used as a building block for more advanced FBA methods. \n", + "Flux balance analysis (FBA) predicts steady-state fluxes in a metabolic network. For a stoichiometric matrix $S$ and reaction-flux vector $v$, FBA imposes\n", "\n", - "## What is FBA?\n", + "$$\n", + "S v = 0, \\qquad v_{\\mathrm{lower}} \\leq v \\leq v_{\\mathrm{upper}},\n", + "$$\n", "\n", - "The basis of FBA lies in the principle of steady-state, where the concentration of internal metabolites doesn't change over time even though they may be consumed and produced. This means that the total rate at which a metabolite is produced equals the rate at which it's consumed. \n", + "and optimizes an objective such as biomass production. These models are commonly used to predict growth, compare media, simulate knockouts, and identify metabolic-engineering strategies.\n", "\n", - "In the realm of metabolic network analysis, this concept translates to steady-state metabolic fluxes. A flux is a rate at which a substance moves through a system, and in metabolic systems, flux represents the rate of turnover of a metabolite through a specific pathway or reaction. When considering the steady-state, each reaction's flux in the metabolic network is balanced, meaning that, for every internal metabolite, the sum of fluxes leading to its production is equal to the sum of fluxes leading to its consumption. This balance ensures that, over time, there's no accumulation or depletion of any metabolite in the system.\n", + "CORNETO brings FBA into the same optimization framework used for other network-inference problems. It interoperates with COBRApy models and supports standard FBA, while exposing the resulting optimization problem so that constraints, conditions, sparsity, and omics-derived evidence can be combined through a common interface.\n", "\n", - "For quantifying these fluxes, the typical units used are millimoles per gram dry weight per hour (mmol/gDW/h). The \"mmol\" part represents the quantity of the metabolite, the \"gDW\" (gram dry weight) normalizes this value to the biomass of the organism, and the \"/h\" provides a temporal dimension, indicating how fast the metabolic turnover occurs. This unit allows researchers and practitioners to make meaningful comparisons across different metabolic systems and conditions. For example, a flux value of 5 mmol/gDW/h for a particular reaction indicates that 5 millimoles of the relevant metabolite are produced or consumed per gram of the organism's dry weight every hour.\n", - "\n", - "
\n", - " \"Flux\n", - "
\n", - " \n", - " Figure 1: Vivek-Ananth, R. P., and Areejit Samal. \"Advances in the integration of transcriptional regulatory information into genome-scale metabolic models.\" Biosystems 147 (2016): 1-10.\n", - " \n", - "
\n", - "\n", - "\n", - "\n", - "## FBA with CORNETO\n", - "\n", - "In order to define a FBA problem, you need to know the following:\n", - "\n", - "- **Genome-scale metabolic network**: This is the prior knowledge, usually known as genome-scale metabolic models (GEMs). These models represent the metabolic network through a stoichiometric matrix, where each row represents a metabolite and each column represents a reaction. The entries in the matrix are the stoichiometric coefficients of the metabolites in the reactions. These models also contain annotations such as Gene-Protein-Rules (GPRs) and default reaction bounds.\n", - "\n", - "- **Constraints**: For each reaction, there are limits or \"constraints\" on the flux based on factors like enzyme capacities. Basically, it’s setting the maximum and minimum fluxes for the reactions.\n", - "\n", - "- **Objective function**: You then define an objective to optimize, like maximizing the production of a specific metabolite or maximizing growth rate.\n", - "\n", - "- **LP Solver**: Using linear programming techniques, you can find the flux distribution that meets the constraints and optimizes the objective function.\n", - "\n", - "\n", - "CORNETO naturally supports FBA-based problems by transforming a genome scale metabolic network into a prior knowledge graph, and then modelling the FBA problem as a network flow problem. This is the main building block for creating more complex problems, such as multicondition Sparse FBA or multicondition iMAT for context-specific reconstruction.\n" + "COBRApy remains a natural tool for curating metabolic models and running established COBRA workflows. CORNETO is useful when the formulation itself must be extended or several network-inference problems must be expressed together." ] }, { "cell_type": "markdown", - "id": "83bd70ba", + "id": "concept-map", "metadata": {}, "source": [ - "## Using COBRApy\n", + "## From COBRApy to CORNETO\n", "\n", - "Here we show how can we use COBRApy to import the `textbook` metabolic network and how can we import it in CORNETO. We will also compare the FBA solution from COBRApy and CORNETO." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "662e7b90", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter Username\n", - "Set parameter LicenseID to value 2593994\n", - "Academic license - for non-commercial use only - expires 2025-12-02\n" - ] - }, - { - "data": { - "text/plain": [ - "(72, 95)" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from cobra.io import load_model\n", + "| COBRApy concept | CORNETO concept |\n", + "|---|---|\n", + "| `cobra.Model` | metabolic hypergraph |\n", + "| metabolite | vertex |\n", + "| reaction and stoichiometry | directed hyperedge and its coefficients |\n", + "| reaction bounds | edge-flow bounds |\n", + "| objective coefficients | reaction objectives |\n", + "| `solution.fluxes` | `problem.expr.flow.value` |\n", + "| optimize a configured model | build and extend an optimization problem |\n", "\n", - "model = load_model(\"textbook\")\n", - "len(model.metabolites), len(model.reactions)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "86322a8f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Reaction identifierBiomass_Ecoli_core
NameBiomass Objective Function with GAM
Memory address0x165a9e840
Stoichiometry\n", - "

1.496 3pg_c + 3.7478 accoa_c + 59.81 atp_c + 0.361 e4p_c + 0.0709 f6p_c + 0.129 g3p_c + 0.205 g6p_c + 0.2557 gln__L_c + 4.9414 glu__L_c + 59.81 h2o_c + 3.547 nad_c + 13.0279 nadph_c + 1.7867 oaa_c...

\n", - "

1.496 3-Phospho-D-glycerate + 3.7478 Acetyl-CoA + 59.81 ATP + 0.361 D-Erythrose 4-phosphate + 0.0709 D-Fructose 6-phosphate + 0.129 Glyceraldehyde 3-phosphate + 0.205 D-Glucose 6-phosphate + 0.2557...

\n", - "
GPR
Lower bound0.0
Upper bound1000.0
\n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "biomass_rxn = model.reactions.get_by_id(\"Biomass_Ecoli_core\")\n", - "biomass_rxn" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1f1db2c3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "solution = model.optimize()\n", - "print(solution)" + "The graph representation preserves reaction identifiers, stoichiometry, default bounds, and gene–protein–reaction annotations imported from the COBRApy model." ] }, { "cell_type": "markdown", - "id": "55cdaff4-984d-4b34-abcc-3edabd54ca44", + "id": "load-cobrapy-model", "metadata": {}, "source": [ - "## Using CORNETO" + "### Solve the COBRApy model\n", + "\n", + "We start with the familiar *E. coli* core model distributed with COBRApy." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "3b2af9de", + "execution_count": null, + "id": "imports", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - "
Installed version:v1.0.0.dev5 (latest stable: v1.0.0-alpha)
Available backends:CVXPY v1.6.4, PICOS v2.6.0
Default backend (corneto.opt):CVXPY
Installed solvers:CLARABEL, CVXOPT, GLOP, GLPK, GLPK_MI, GUROBI, HIGHS, OSQP, PDLP, PROXQP, SCIP, SCIPY, SCS
Graphviz version:v0.20.3
Installed path:/Users/pablorodriguezmier/Documents/work/repos/pablormier/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import numpy as np\n", + "from contextlib import redirect_stdout\n", + "from io import StringIO\n", "\n", - "import corneto as cn\n", + "import numpy as np\n", + "import pandas as pd\n", + "from cobra.io import load_model\n", "\n", - "cn.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "67301de4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(72, 95)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ "from corneto.io import cobra_model_to_graph\n", + "from corneto.methods import MultiSampleFBA\n", "\n", - "G = cobra_model_to_graph(model)\n", - "G.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "d2efe710", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'__edge_type': 'directed',\n", - " 'id': 'Biomass_Ecoli_core',\n", - " '__source_attr': {'3pg_c': {'__value': -1.496},\n", - " 'accoa_c': {'__value': -3.7478},\n", - " 'atp_c': {'__value': -59.81},\n", - " 'e4p_c': {'__value': -0.361},\n", - " 'f6p_c': {'__value': -0.0709},\n", - " 'g3p_c': {'__value': -0.129},\n", - " 'g6p_c': {'__value': -0.205},\n", - " 'gln__L_c': {'__value': -0.2557},\n", - " 'glu__L_c': {'__value': -4.9414},\n", - " 'h2o_c': {'__value': -59.81},\n", - " 'nad_c': {'__value': -3.547},\n", - " 'nadph_c': {'__value': -13.0279},\n", - " 'oaa_c': {'__value': -1.7867},\n", - " 'pep_c': {'__value': -0.5191},\n", - " 'pyr_c': {'__value': -2.8328},\n", - " 'r5p_c': {'__value': -0.8977}},\n", - " '__target_attr': {'adp_c': {'__value': 59.81},\n", - " 'akg_c': {'__value': 4.1182},\n", - " 'coa_c': {'__value': 3.7478},\n", - " 'h_c': {'__value': 59.81},\n", - " 'nadh_c': {'__value': 3.547},\n", - " 'nadp_c': {'__value': 13.0279},\n", - " 'pi_c': {'__value': 59.81}},\n", - " 'default_lb': 0.0,\n", - " 'default_ub': 1000.0,\n", - " 'GPR': ''}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rid = list(G.get_edges_by_attr(\"id\", biomass_rxn.id))[0]\n", - "G.get_attr_edge(rid)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "8d57a2f4", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "coa_c\n", - "\n", - "coa_c\n", - "\n", - "\n", - "\n", - "e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "acald_c\n", - "\n", - "acald_c\n", - "\n", - "\n", - "\n", - "acald_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c\n", - "\n", - "nad_c\n", - "\n", - "\n", - "\n", - "nad_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c\n", - "\n", - "accoa_c\n", - "\n", - "\n", - "\n", - "accoa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c\n", - "\n", - "nadh_c\n", - "\n", - "\n", - "\n", - "e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c\n", - "\n", - "h_c\n", - "\n", - "\n", - "\n", - "e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "acald_e\n", - "\n", - "acald_e\n", - "\n", - "\n", - "\n", - "acald_e->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "acald_e->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "ac_c\n", - "\n", - "ac_c\n", - "\n", - "\n", - "\n", - "e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c\n", - "\n", - "atp_c\n", - "\n", - "\n", - "\n", - "atp_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c\n", - "\n", - "adp_c\n", - "\n", - "\n", - "\n", - "e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "actp_c\n", - "\n", - "actp_c\n", - "\n", - "\n", - "\n", - "e_2_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_2_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cit_c\n", - "\n", - "cit_c\n", - "\n", - "\n", - "\n", - "e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "cit_c->e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c\n", - "\n", - "acon_C_c\n", - "\n", - "\n", - "\n", - "e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c\n", - "\n", - "h2o_c\n", - "\n", - "\n", - "\n", - "h2o_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->acon_C_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "icit_c\n", - "\n", - "icit_c\n", - "\n", - "\n", - "\n", - "e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "e_4_center->icit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h_e\n", - "\n", - "h_e\n", - "\n", - "\n", - "\n", - "e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_e\n", - "\n", - "ac_e\n", - "\n", - "\n", - "\n", - "ac_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "ac_e->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->ac_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "amp_c\n", - "\n", - "amp_c\n", - "\n", - "\n", - "\n", - "amp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_c\n", - "\n", - "akg_c\n", - "\n", - "\n", - "\n", - "akg_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "akg_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "succoa_c\n", - "\n", - "succoa_c\n", - "\n", - "\n", - "\n", - "co2_c\n", - "\n", - "co2_c\n", - "\n", - "\n", - "\n", - "co2_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_e\n", - "\n", - "akg_e\n", - "\n", - "\n", - "\n", - "akg_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "akg_e->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_c\n", - "\n", - "etoh_c\n", - "\n", - "\n", - "\n", - "etoh_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_c\n", - "\n", - "pi_c\n", - "\n", - "\n", - "\n", - "pi_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c\n", - "\n", - "e4p_c\n", - "\n", - "\n", - "\n", - "e4p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c\n", - "\n", - "oaa_c\n", - "\n", - "\n", - "\n", - "oaa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c\n", - "\n", - "gln__L_c\n", - "\n", - "\n", - "\n", - "gln__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c\n", - "\n", - "g6p_c\n", - "\n", - "\n", - "\n", - "f6p_c\n", - "\n", - "f6p_c\n", - "\n", - "\n", - "\n", - "g6p_c->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c\n", - "\n", - "pep_c\n", - "\n", - "\n", - "\n", - "pep_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c\n", - "\n", - "g3p_c\n", - "\n", - "\n", - "\n", - "g3p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c\n", - "\n", - "glu__L_c\n", - "\n", - "\n", - "\n", - "glu__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c\n", - "\n", - "pyr_c\n", - "\n", - "\n", - "\n", - "pyr_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c\n", - "\n", - "r5p_c\n", - "\n", - "\n", - "\n", - "r5p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "ru5p__D_c\n", - "\n", - "ru5p__D_c\n", - "\n", - "\n", - "\n", - "r5p_c->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c\n", - "\n", - "nadph_c\n", - "\n", - "\n", - "\n", - "nadph_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c\n", - "\n", - "3pg_c\n", - "\n", - "\n", - "\n", - "3pg_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c\n", - "\n", - "nadp_c\n", - "\n", - "\n", - "\n", - "nadp_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "co2_e\n", - "\n", - "co2_e\n", - "\n", - "\n", - "\n", - "co2_e->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "co2_e->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->cit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_c\n", - "\n", - "o2_c\n", - "\n", - "\n", - "\n", - "o2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c\n", - "\n", - "q8h2_c\n", - "\n", - "\n", - "\n", - "q8h2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c\n", - "\n", - "q8_c\n", - "\n", - "\n", - "\n", - "q8_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e\n", - "\n", - "lac__D_e\n", - "\n", - "\n", - "\n", - "lac__D_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e->e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_c\n", - "\n", - "lac__D_c\n", - "\n", - "\n", - "\n", - "lac__D_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->lac__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c\n", - "\n", - "2pg_c\n", - "\n", - "\n", - "\n", - "2pg_c->3pg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c->e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e\n", - "\n", - "etoh_e\n", - "\n", - "\n", - "\n", - "etoh_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e->e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->etoh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "for_e\n", - "\n", - "for_e\n", - "\n", - "\n", - "\n", - "for_e->e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "fru_e\n", - "\n", - "fru_e\n", - "\n", - "\n", - "\n", - "fru_e->e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fru_e->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "fum_e\n", - "\n", - "fum_e\n", - "\n", - "\n", - "\n", - "fum_e->e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e\n", - "\n", - "glc__D_e\n", - "\n", - "\n", - "\n", - "glc__D_e->e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e\n", - "\n", - "gln__L_e\n", - "\n", - "\n", - "\n", - "gln__L_e->e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e\n", - "\n", - "glu__L_e\n", - "\n", - "\n", - "\n", - "glu__L_e->e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e\n", - "\n", - "h2o_e\n", - "\n", - "\n", - "\n", - "h2o_e->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e->e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e\n", - "\n", - "mal__L_e\n", - "\n", - "\n", - "\n", - "mal__L_e->e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "nh4_e\n", - "\n", - "nh4_e\n", - "\n", - "\n", - "\n", - "nh4_e->e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c\n", - "\n", - "nh4_c\n", - "\n", - "\n", - "\n", - "nh4_e->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "o2_e\n", - "\n", - "o2_e\n", - "\n", - "\n", - "\n", - "o2_e->o2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_e->e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "pi_e\n", - "\n", - "pi_e\n", - "\n", - "\n", - "\n", - "pi_e->e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e\n", - "\n", - "pyr_e\n", - "\n", - "\n", - "\n", - "pyr_e->e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "succ_e\n", - "\n", - "succ_e\n", - "\n", - "\n", - "\n", - "succ_e->e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "succ_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c\n", - "\n", - "fdp_c\n", - "\n", - "\n", - "\n", - "e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "dhap_c\n", - "\n", - "dhap_c\n", - "\n", - "\n", - "\n", - "dhap_c->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->dhap_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_c\n", - "\n", - "for_c\n", - "\n", - "\n", - "\n", - "for_c->for_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_c\n", - "\n", - "fum_c\n", - "\n", - "\n", - "\n", - "fum_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "fum_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c\n", - "\n", - "succ_c\n", - "\n", - "\n", - "\n", - "succ_c->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c\n", - "\n", - "mal__L_c\n", - "\n", - "\n", - "\n", - "mal__L_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgl_c\n", - "\n", - "6pgl_c\n", - "\n", - "\n", - "\n", - "6pgl_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->6pgl_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "13dpg_c\n", - "\n", - "13dpg_c\n", - "\n", - "\n", - "\n", - "e_48_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->g6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgc_c\n", - "\n", - "6pgc_c\n", - "\n", - "\n", - "\n", - "6pgc_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c\n", - "\n", - "xu5p__D_c\n", - "\n", - "\n", - "\n", - "ru5p__D_c->xu5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glx_c\n", - "\n", - "glx_c\n", - "\n", - "\n", - "\n", - "glx_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->glx_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->fdp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->6pgc_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->amp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->succ_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "s7p_c\n", - "\n", - "s7p_c\n", - "\n", - "\n", - "\n", - "s7p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->e4p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->s7p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G.plot(layout=\"fdp\")" + "with redirect_stdout(StringIO()):\n", + " model = load_model(\"textbook\")\n", + "biomass_id = \"Biomass_Ecoli_core\"\n", + "cobra_solution = model.optimize()\n", + "\n", + "pd.Series(\n", + " {\n", + " \"metabolites\": len(model.metabolites),\n", + " \"reactions\": len(model.reactions),\n", + " \"biomass flux\": cobra_solution.fluxes[biomass_id],\n", + " },\n", + " name=\"COBRApy model\",\n", + ")" ] }, { - "cell_type": "code", - "execution_count": 8, - "id": "1b29ccc3", + "cell_type": "markdown", + "id": "convert-and-solve", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'_flow': _flow: Variable((95,), _flow),\n", - " 'edge_has_flux': edge_has_flux: Variable((95,), edge_has_flux, boolean=True),\n", - " 'flow': _flow: Variable((95,), _flow)}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "from corneto.methods import MultiSampleFBA as FBA\n", + "### Convert the model and solve with CORNETO\n", "\n", - "d = cn.Data.from_cdict({\"fba_example\": {\"Biomass_Ecoli_core\": {\"role\": \"objective\"}}})\n", + "`cobra_model_to_graph` converts each reaction into a stoichiometric hyperedge. `MultiSampleFBA.build` then constructs the mass-balance constraints, applies the imported bounds, and adds the requested reaction objective.\n", "\n", - "m = FBA()\n", - "P = m.build(G, d)\n", - "P.expr" + "`MultiSampleFBA` minimizes a weighted objective. Therefore, the coefficient `-1` below maximizes biomass. CORNETO's general optimization API also supports an explicit `Direction.MAX` when constructing a problem directly, but `direction` is not an argument of `MultiSampleFBA.build`." ] }, { "cell_type": "code", - "execution_count": 9, - "id": "fa9bda70-6811-4fb8-86c6-18d60a7a0e2e", + "execution_count": null, + "id": "build-corneto-fba", "metadata": {}, "outputs": [], "source": [ - "P.solve(solver=\"scipy\");" + "G = cobra_model_to_graph(model)\n", + "reaction_ids = list(G.get_attr_from_edges(\"id\"))\n", + "reaction_index = {reaction_id: i for i, reaction_id in enumerate(reaction_ids)}\n", + "biomass_idx = reaction_index[biomass_id]\n", + "\n", + "problem = MultiSampleFBA().build(\n", + " G,\n", + " objectives={biomass_id: -1},\n", + ")\n", + "problem.solve(solver=\"scipy\")\n", + "\n", + "corneto_biomass = float(problem.expr.flow[biomass_idx].value)\n", + "comparison = pd.Series(\n", + " {\n", + " \"COBRApy\": cobra_solution.fluxes[biomass_id],\n", + " \"CORNETO\": corneto_biomass,\n", + " },\n", + " name=\"optimal biomass flux\",\n", + ")\n", + "\n", + "assert np.isclose(comparison[\"COBRApy\"], comparison[\"CORNETO\"], atol=1e-7)\n", + "comparison" ] }, { - "cell_type": "code", - "execution_count": 10, - "id": "9782359c-e4e5-49a7-8474-a8904abb11f9", + "cell_type": "markdown", + "id": "inspect-results", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.8739215069684303" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "opt_flux = P.expr.flow[rid].value\n", - "opt_flux" + "Fluxes follow the graph's edge order. Mapping that order back to reaction identifiers gives a labeled result analogous to `solution.fluxes`." ] }, { "cell_type": "code", - "execution_count": 11, - "id": "54dfa3d3-6e47-4430-8d78-c41f6841f0e6", + "execution_count": null, + "id": "flux-table", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "48" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "sum(np.abs(P.expr.flow.value) >= 1e-6)" + "fluxes = pd.Series(\n", + " np.asarray(problem.expr.flow.value),\n", + " index=reaction_ids,\n", + " name=\"flux\",\n", + ")\n", + "fluxes.loc[[biomass_id, \"EX_glc__D_e\", \"EX_o2_e\", \"ATPM\"]]" ] }, { - "cell_type": "code", - "execution_count": 12, - "id": "d088eaaa-9e73-4447-ab83-c0f644bbd997", + "cell_type": "markdown", + "id": "compose-constraints", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
fluxes
ACALD-0.000000
ACALDt0.000000
ACKr0.000000
ACONTa6.007250
ACONTb6.007250
......
TALA1.496984
THD20.000000
TKT11.496984
TKT21.181498
TPI7.477382
\n", - "

95 rows × 1 columns

\n", - "
" - ], - "text/plain": [ - " fluxes\n", - "ACALD -0.000000\n", - "ACALDt 0.000000\n", - "ACKr 0.000000\n", - "ACONTa 6.007250\n", - "ACONTb 6.007250\n", - "... ...\n", - "TALA 1.496984\n", - "THD2 0.000000\n", - "TKT1 1.496984\n", - "TKT2 1.181498\n", - "TPI 7.477382\n", - "\n", - "[95 rows x 1 columns]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "import pandas as pd\n", + "## Extend the optimization problem\n", "\n", - "pd.DataFrame(P.expr.flow.value, index=G.get_attr_from_edges(\"id\"), columns=[\"fluxes\"])" + "A built CORNETO problem is still editable. For example, the following constraint limits oxygen uptake to 10 mmol gDW$^{-1}$ h$^{-1}$. In this model, exchange uptake is a negative flux, so a less-negative lower limit permits less uptake." ] }, { "cell_type": "code", - "execution_count": 13, - "id": "e0771fcb", + "execution_count": null, + "id": "oxygen-constraint", "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "coa_c\n", - "\n", - "coa_c\n", - "\n", - "\n", - "\n", - "e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "acald_c\n", - "\n", - "acald_c\n", - "\n", - "\n", - "\n", - "acald_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c\n", - "\n", - "nad_c\n", - "\n", - "\n", - "\n", - "nad_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c\n", - "\n", - "accoa_c\n", - "\n", - "\n", - "\n", - "accoa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c\n", - "\n", - "nadh_c\n", - "\n", - "\n", - "\n", - "e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c\n", - "\n", - "h_c\n", - "\n", - "\n", - "\n", - "e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "acald_e\n", - "\n", - "acald_e\n", - "\n", - "\n", - "\n", - "acald_e->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "acald_e->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "ac_c\n", - "\n", - "ac_c\n", - "\n", - "\n", - "\n", - "e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c\n", - "\n", - "atp_c\n", - "\n", - "\n", - "\n", - "atp_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c\n", - "\n", - "adp_c\n", - "\n", - "\n", - "\n", - "e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "actp_c\n", - "\n", - "actp_c\n", - "\n", - "\n", - "\n", - "e_2_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_2_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cit_c\n", - "\n", - "cit_c\n", - "\n", - "\n", - "\n", - "e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "cit_c->e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c\n", - "\n", - "acon_C_c\n", - "\n", - "\n", - "\n", - "e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c\n", - "\n", - "h2o_c\n", - "\n", - "\n", - "\n", - "h2o_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->acon_C_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "icit_c\n", - "\n", - "icit_c\n", - "\n", - "\n", - "\n", - "e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "e_4_center->icit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h_e\n", - "\n", - "h_e\n", - "\n", - "\n", - "\n", - "e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_e\n", - "\n", - "ac_e\n", - "\n", - "\n", - "\n", - "ac_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "ac_e->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->ac_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "amp_c\n", - "\n", - "amp_c\n", - "\n", - "\n", - "\n", - "amp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_c\n", - "\n", - "akg_c\n", - "\n", - "\n", - "\n", - "akg_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "akg_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "succoa_c\n", - "\n", - "succoa_c\n", - "\n", - "\n", - "\n", - "co2_c\n", - "\n", - "co2_c\n", - "\n", - "\n", - "\n", - "co2_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_e\n", - "\n", - "akg_e\n", - "\n", - "\n", - "\n", - "akg_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "akg_e->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_c\n", - "\n", - "etoh_c\n", - "\n", - "\n", - "\n", - "etoh_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_c\n", - "\n", - "pi_c\n", - "\n", - "\n", - "\n", - "pi_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c\n", - "\n", - "e4p_c\n", - "\n", - "\n", - "\n", - "e4p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c\n", - "\n", - "oaa_c\n", - "\n", - "\n", - "\n", - "oaa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c\n", - "\n", - "gln__L_c\n", - "\n", - "\n", - "\n", - "gln__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c\n", - "\n", - "g6p_c\n", - "\n", - "\n", - "\n", - "f6p_c\n", - "\n", - "f6p_c\n", - "\n", - "\n", - "\n", - "g6p_c->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c\n", - "\n", - "pep_c\n", - "\n", - "\n", - "\n", - "pep_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c\n", - "\n", - "g3p_c\n", - "\n", - "\n", - "\n", - "g3p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c\n", - "\n", - "glu__L_c\n", - "\n", - "\n", - "\n", - "glu__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c\n", - "\n", - "pyr_c\n", - "\n", - "\n", - "\n", - "pyr_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c\n", - "\n", - "r5p_c\n", - "\n", - "\n", - "\n", - "r5p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "ru5p__D_c\n", - "\n", - "ru5p__D_c\n", - "\n", - "\n", - "\n", - "r5p_c->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c\n", - "\n", - "nadph_c\n", - "\n", - "\n", - "\n", - "nadph_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c\n", - "\n", - "3pg_c\n", - "\n", - "\n", - "\n", - "3pg_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c\n", - "\n", - "nadp_c\n", - "\n", - "\n", - "\n", - "nadp_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "co2_e\n", - "\n", - "co2_e\n", - "\n", - "\n", - "\n", - "co2_e->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "co2_e->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->cit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_c\n", - "\n", - "o2_c\n", - "\n", - "\n", - "\n", - "o2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c\n", - "\n", - "q8h2_c\n", - "\n", - "\n", - "\n", - "q8h2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c\n", - "\n", - "q8_c\n", - "\n", - "\n", - "\n", - "q8_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e\n", - "\n", - "lac__D_e\n", - "\n", - "\n", - "\n", - "lac__D_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e->e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_c\n", - "\n", - "lac__D_c\n", - "\n", - "\n", - "\n", - "lac__D_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->lac__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c\n", - "\n", - "2pg_c\n", - "\n", - "\n", - "\n", - "2pg_c->3pg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c->e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e\n", - "\n", - "etoh_e\n", - "\n", - "\n", - "\n", - "etoh_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e->e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->etoh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "for_e\n", - "\n", - "for_e\n", - "\n", - "\n", - "\n", - "for_e->e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "fru_e\n", - "\n", - "fru_e\n", - "\n", - "\n", - "\n", - "fru_e->e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fru_e->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "fum_e\n", - "\n", - "fum_e\n", - "\n", - "\n", - "\n", - "fum_e->e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e\n", - "\n", - "glc__D_e\n", - "\n", - "\n", - "\n", - "glc__D_e->e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e\n", - "\n", - "gln__L_e\n", - "\n", - "\n", - "\n", - "gln__L_e->e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e\n", - "\n", - "glu__L_e\n", - "\n", - "\n", - "\n", - "glu__L_e->e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e\n", - "\n", - "h2o_e\n", - "\n", - "\n", - "\n", - "h2o_e->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e->e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e\n", - "\n", - "mal__L_e\n", - "\n", - "\n", - "\n", - "mal__L_e->e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "nh4_e\n", - "\n", - "nh4_e\n", - "\n", - "\n", - "\n", - "nh4_e->e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c\n", - "\n", - "nh4_c\n", - "\n", - "\n", - "\n", - "nh4_e->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "o2_e\n", - "\n", - "o2_e\n", - "\n", - "\n", - "\n", - "o2_e->o2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_e->e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "pi_e\n", - "\n", - "pi_e\n", - "\n", - "\n", - "\n", - "pi_e->e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e\n", - "\n", - "pyr_e\n", - "\n", - "\n", - "\n", - "pyr_e->e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "succ_e\n", - "\n", - "succ_e\n", - "\n", - "\n", - "\n", - "succ_e->e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "succ_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c\n", - "\n", - "fdp_c\n", - "\n", - "\n", - "\n", - "e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "dhap_c\n", - "\n", - "dhap_c\n", - "\n", - "\n", - "\n", - "dhap_c->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->dhap_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_c\n", - "\n", - "for_c\n", - "\n", - "\n", - "\n", - "for_c->for_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_c\n", - "\n", - "fum_c\n", - "\n", - "\n", - "\n", - "fum_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "fum_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c\n", - "\n", - "succ_c\n", - "\n", - "\n", - "\n", - "succ_c->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c\n", - "\n", - "mal__L_c\n", - "\n", - "\n", - "\n", - "mal__L_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgl_c\n", - "\n", - "6pgl_c\n", - "\n", - "\n", - "\n", - "6pgl_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->6pgl_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "13dpg_c\n", - "\n", - "13dpg_c\n", - "\n", - "\n", - "\n", - "e_48_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->g6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgc_c\n", - "\n", - "6pgc_c\n", - "\n", - "\n", - "\n", - "6pgc_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c\n", - "\n", - "xu5p__D_c\n", - "\n", - "\n", - "\n", - "ru5p__D_c->xu5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glx_c\n", - "\n", - "glx_c\n", - "\n", - "\n", - "\n", - "glx_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->glx_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->fdp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->6pgc_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->amp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->succ_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "s7p_c\n", - "\n", - "s7p_c\n", - "\n", - "\n", - "\n", - "s7p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->e4p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->s7p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "G.plot(custom_edge_attr=cn.pl.flow_style(P), layout=\"fdp\")" + "oxygen_idx = reaction_index[\"EX_o2_e\"]\n", + "\n", + "oxygen_limited = MultiSampleFBA().build(\n", + " G,\n", + " objectives={biomass_id: -1},\n", + ")\n", + "oxygen_limited += oxygen_limited.expr.flow[oxygen_idx] >= -10\n", + "oxygen_limited.solve(solver=\"scipy\")\n", + "\n", + "oxygen_limited_biomass = float(oxygen_limited.expr.flow[biomass_idx].value)\n", + "assert oxygen_limited_biomass < corneto_biomass\n", + "\n", + "pd.Series(\n", + " {\n", + " \"default medium\": corneto_biomass,\n", + " \"oxygen-limited\": oxygen_limited_biomass,\n", + " },\n", + " name=\"optimal biomass flux\",\n", + ")" ] }, { "cell_type": "markdown", - "id": "custom-media-01", + "id": "multiple-media", "metadata": {}, "source": [ - "## Passing a custom media composition\n", + "## Solve multiple media conditions\n", "\n", - "Media composition is represented as sample-specific reaction bounds. In CORNETO, each sample passed to `MultiSampleFBA` can include exchange reactions with `lower_bound` and `upper_bound` values. For exchange reactions in this model, uptake is a negative flux, so a more negative lower bound allows more uptake.\n", - "\n", - "The same data object can also include the biomass objective, which lets us solve several media conditions in one FBA problem." + "`build_many` creates one flux vector per named condition. Objectives and reaction bounds use an outer mapping with the same condition names. Conditions are solved in one problem, which also makes it possible for advanced formulations to couple them." ] }, { "cell_type": "code", "execution_count": null, - "id": "custom-media-02", + "id": "build-many", "metadata": {}, "outputs": [], "source": [ - "media = {\n", + "condition_objectives = {\n", + " \"glucose_rich\": {biomass_id: -1},\n", + " \"glucose_limited\": {biomass_id: -1},\n", + "}\n", + "condition_bounds = {\n", " \"glucose_rich\": {\n", - " \"EX_glc__D_e\": {\"lower_bound\": -10.0, \"upper_bound\": 1000.0},\n", - " \"EX_o2_e\": {\"lower_bound\": -20.0, \"upper_bound\": 1000.0},\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", " },\n", " \"glucose_limited\": {\n", - " \"EX_glc__D_e\": {\"lower_bound\": -2.0, \"upper_bound\": 1000.0},\n", - " \"EX_o2_e\": {\"lower_bound\": -20.0, \"upper_bound\": 1000.0},\n", + " \"EX_glc__D_e\": (-2.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", " },\n", "}\n", "\n", - "media_data = cn.Data.from_cdict(\n", + "media_problem = MultiSampleFBA().build_many(\n", + " G,\n", + " objectives=condition_objectives,\n", + " reaction_bounds=condition_bounds,\n", + ")\n", + "media_problem.solve(solver=\"scipy\")\n", + "\n", + "condition_names = list(condition_objectives)\n", + "reported_reactions = [biomass_id, \"EX_glc__D_e\", \"EX_o2_e\"]\n", + "media_fluxes = pd.DataFrame(\n", " {\n", " condition: {\n", - " \"Biomass_Ecoli_core\": {\"role\": \"objective\"},\n", - " **bounds,\n", + " reaction_id: float(media_problem.expr.flow[reaction_index[reaction_id], column].value)\n", + " for reaction_id in reported_reactions\n", " }\n", - " for condition, bounds in media.items()\n", + " for column, condition in enumerate(condition_names)\n", " }\n", ")\n", "\n", - "media_data" + "assert media_problem.expr.flow.value.shape == (G.num_edges, len(condition_names))\n", + "assert media_fluxes.loc[biomass_id, \"glucose_limited\"] < media_fluxes.loc[biomass_id, \"glucose_rich\"]\n", + "media_fluxes" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "custom-media-03", + "cell_type": "markdown", + "id": "sparse-fba", "metadata": {}, - "outputs": [], "source": [ - "media_problem = FBA().build(G, media_data)\n", - "media_problem.solve(solver=\"scipy\");" + "## Sparse FBA\n", + "\n", + "CORNETO can associate each reaction with a binary indicator that records whether its flux is nonzero. With `lambda_reg > 0`, it penalizes the number of active reactions. Because of these indicators, sparse FBA is a mixed-integer linear program (MILP), rather than the linear program used by the standard mathematical FBA formulation.\n", + "\n", + "Here we require at least 90% of the optimal biomass and optimize biomass together with a penalty on the number of active reactions. `lambda_reg` controls that trade-off; larger values give reaction count more influence. The biomass floor prevents sparsity from being achieved by suppressing growth." ] }, { "cell_type": "code", "execution_count": null, - "id": "custom-media-04", + "id": "solve-sparse-fba", "metadata": {}, "outputs": [], "source": [ - "reaction_ids = [\"Biomass_Ecoli_core\", \"EX_glc__D_e\", \"EX_o2_e\"]\n", - "reaction_index = {rid: next(iter(G.get_edges_by_attr(\"id\", rid))) for rid in reaction_ids}\n", + "biomass_floor = 0.90 * corneto_biomass\n", + "sparse_problem = MultiSampleFBA(lambda_reg=0.1).build(\n", + " G,\n", + " objectives={biomass_id: -1},\n", + " reaction_bounds={biomass_id: (biomass_floor, None)},\n", + ")\n", + "sparse_problem.solve(solver=\"highs\")\n", + "\n", + "sparse_biomass = float(sparse_problem.expr.flow[biomass_idx].value)\n", + "standard_active = int(np.count_nonzero(np.abs(problem.expr.flow.value) > 1e-6))\n", + "sparse_active = int(np.count_nonzero(np.abs(sparse_problem.expr.flow.value) > 1e-6))\n", + "\n", + "assert sparse_biomass >= biomass_floor - 1e-7\n", + "assert sparse_active <= standard_active\n", "\n", - "pd.DataFrame(\n", + "pd.Series(\n", " {\n", - " condition: {rid: media_problem.expr.flow[reaction_index[rid], i].value for rid in reaction_ids}\n", - " for i, condition in enumerate(media_data.samples)\n", + " \"biomass floor\": biomass_floor,\n", + " \"sparse biomass\": sparse_biomass,\n", + " \"active reactions in standard solution\": standard_active,\n", + " \"active reactions in sparse solution\": sparse_active,\n", " }\n", ")" ] }, { "cell_type": "markdown", - "id": "custom-media-05", + "id": "pfba-and-next-steps", "metadata": {}, "source": [ - "The custom bounds override the default exchange bounds stored in the graph for the matching sample. Here, glucose-limited medium restricts `EX_glc__D_e` uptake and the optimal biomass flux decreases accordingly." - ] - }, - { - "cell_type": "markdown", - "id": "3f320215-867e-4882-bd9d-5dc94f629054", - "metadata": {}, - "source": [ - "## Sparse FBA" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "71523d1d-8742-493d-a07e-e56bb3821c40", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "===============================================================================\n", - " CVXPY \n", - " v1.6.4 \n", - "===============================================================================\n", - "(CVXPY) Apr 14 05:10:44 PM: Your problem has 190 variables, 453 constraints, and 1 parameters.\n", - "(CVXPY) Apr 14 05:10:44 PM: It is compliant with the following grammars: DCP, DQCP\n", - "(CVXPY) Apr 14 05:10:44 PM: CVXPY will first compile your problem; then, it will invoke a numerical solver to obtain a solution.\n", - "(CVXPY) Apr 14 05:10:44 PM: Your problem is compiled with the CPP canonicalization backend.\n", - "-------------------------------------------------------------------------------\n", - " Compilation \n", - "-------------------------------------------------------------------------------\n", - "(CVXPY) Apr 14 05:10:44 PM: Compiling problem (target solver=HIGHS).\n", - "(CVXPY) Apr 14 05:10:44 PM: Reduction chain: Dcp2Cone -> CvxAttr2Constr -> ConeMatrixStuffing -> HIGHS\n", - "(CVXPY) Apr 14 05:10:44 PM: Applying reduction Dcp2Cone\n", - "(CVXPY) Apr 14 05:10:44 PM: Applying reduction CvxAttr2Constr\n", - "(CVXPY) Apr 14 05:10:44 PM: Applying reduction ConeMatrixStuffing\n", - "(CVXPY) Apr 14 05:10:44 PM: Applying reduction HIGHS\n", - "(CVXPY) Apr 14 05:10:44 PM: Finished problem compilation (took 5.011e-03 seconds).\n", - "(CVXPY) Apr 14 05:10:44 PM: (Subsequent compilations of this problem, using the same arguments, should take less time.)\n", - "-------------------------------------------------------------------------------\n", - " Numerical solver \n", - "-------------------------------------------------------------------------------\n", - "(CVXPY) Apr 14 05:10:44 PM: Invoking solver HIGHS to obtain a solution.\n", - "Running HiGHS 1.10.0 (git hash: fd86653): Copyright (c) 2025 HiGHS under MIT licence terms\n", - "MIP has 453 rows; 190 cols; 883 nonzeros; 95 integer variables (95 binary)\n", - "Coefficient ranges:\n", - " Matrix [7e-02, 1e+03]\n", - " Cost [1e-01, 1e+00]\n", - " Bound [1e+00, 1e+00]\n", - " RHS [8e-01, 1e+03]\n", - "Presolving model\n", - "153 rows, 144 cols, 493 nonzeros 0s\n", - "123 rows, 123 cols, 415 nonzeros 0s\n", - "120 rows, 119 cols, 408 nonzeros 0s\n", - "\n", - "Solving MIP model with:\n", - " 120 rows\n", - " 119 cols (78 binary, 0 integer, 0 implied int., 41 continuous)\n", - " 408 nonzeros\n", - "\n", - "Src: B => Branching; C => Central rounding; F => Feasibility pump; H => Heuristic; L => Sub-MIP;\n", - " P => Empty MIP; R => Randomized rounding; S => Solve LP; T => Evaluate node; U => Unbounded;\n", - " z => Trivial zero; l => Trivial lower; u => Trivial upper; p => Trivial point; X => User solution\n", - "\n", - " Nodes | B&B Tree | Objective Bounds | Dynamic Constraints | Work \n", - "Src Proc. InQueue | Leaves Expl. | BestBound BestSol Gap | Cuts InLp Confl. | LpIters Time\n", - "\n", - " 0 0 0 0.00% -64.93809816 inf inf 0 0 0 0 0.0s\n", - " S 0 0 0 0.00% -64.93809816 3.685702492 1861.89% 0 0 0 0 0.0s\n", - " 0 0 0 0.00% 0.5684850774 3.685702492 84.58% 0 0 0 55 0.0s\n", - "\n", - "3.8% inactive integer columns, restarting\n", - "Model after restart has 114 rows, 116 cols (75 bin., 0 int., 0 impl., 41 cont.), and 396 nonzeros\n", - "\n", - " 0 0 0 0.00% 2.003873385 3.685702492 45.63% 40 0 0 697 0.0s\n", - " S 0 0 0 0.00% 2.003873385 3.685702492 45.63% 40 0 0 697 0.0s\n", - " R 0 0 0 0.00% 2.003921104 3.685702492 45.63% 40 39 0 748 0.1s\n", - "\n", - "Symmetry detection completed in 0.0s\n", - "Found 20 full orbitope(s) acting on 46 columns\n", - "\n", - " 64 0 32 100.00% 3.685702492 3.685702492 0.00% 2216 83 456 8185 0.3s\n", - "\n", - "Solving report\n", - " Status Optimal\n", - " Primal bound 3.68570249247\n", - " Dual bound 3.68570249247\n", - " Gap 0% (tolerance: 0.01%)\n", - " P-D integral 0.0711361691274\n", - " Solution status feasible\n", - " 3.68570249247 (objective)\n", - " 0 (bound viol.)\n", - " 0 (int. viol.)\n", - " 0 (row viol.)\n", - " Timing 0.27 (total)\n", - " 0.00 (presolve)\n", - " 0.00 (solve)\n", - " 0.00 (postsolve)\n", - " Max sub-MIP depth 3\n", - " Nodes 64\n", - " Repair LPs 0 (0 feasible; 0 iterations)\n", - " LP iterations 8185 (total)\n", - " 3720 (strong br.)\n", - " 791 (separation)\n", - " 2539 (heuristics)\n", - "-------------------------------------------------------------------------------\n", - " Summary \n", - "-------------------------------------------------------------------------------\n", - "(CVXPY) Apr 14 05:10:44 PM: Problem status: optimal\n", - "(CVXPY) Apr 14 05:10:44 PM: Optimal value: 3.686e+00\n", - "(CVXPY) Apr 14 05:10:44 PM: Compilation took 5.011e-03 seconds\n", - "(CVXPY) Apr 14 05:10:44 PM: Solver (including time spent in interface) took 2.758e-01 seconds\n" - ] - } - ], - "source": [ - "m = FBA(lambda_reg=0.1)\n", - "P = m.build(G, d)\n", - "# We add a constraint to force at least 90% of optimal flux\n", - "P += P.expr.flow[rid] >= opt_flux * 0.90\n", - "P.solve(solver=\"highs\", verbosity=1);" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "517c7e1c-b1e8-4f60-8631-46e646148315", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "coa_c\n", - "\n", - "coa_c\n", - "\n", - "\n", - "\n", - "e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "acald_c\n", - "\n", - "acald_c\n", - "\n", - "\n", - "\n", - "acald_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c\n", - "\n", - "nad_c\n", - "\n", - "\n", - "\n", - "nad_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c\n", - "\n", - "accoa_c\n", - "\n", - "\n", - "\n", - "accoa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c\n", - "\n", - "nadh_c\n", - "\n", - "\n", - "\n", - "e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c\n", - "\n", - "h_c\n", - "\n", - "\n", - "\n", - "e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "acald_e\n", - "\n", - "acald_e\n", - "\n", - "\n", - "\n", - "acald_e->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "acald_e->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "ac_c\n", - "\n", - "ac_c\n", - "\n", - "\n", - "\n", - "e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c\n", - "\n", - "atp_c\n", - "\n", - "\n", - "\n", - "atp_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c\n", - "\n", - "adp_c\n", - "\n", - "\n", - "\n", - "e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "actp_c\n", - "\n", - "actp_c\n", - "\n", - "\n", - "\n", - "e_2_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_2_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cit_c\n", - "\n", - "cit_c\n", - "\n", - "\n", - "\n", - "e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "cit_c->e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c\n", - "\n", - "acon_C_c\n", - "\n", - "\n", - "\n", - "e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c\n", - "\n", - "h2o_c\n", - "\n", - "\n", - "\n", - "h2o_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->acon_C_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "icit_c\n", - "\n", - "icit_c\n", - "\n", - "\n", - "\n", - "e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "e_4_center->icit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h_e\n", - "\n", - "h_e\n", - "\n", - "\n", - "\n", - "e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_e\n", - "\n", - "ac_e\n", - "\n", - "\n", - "\n", - "ac_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "ac_e->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->ac_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "amp_c\n", - "\n", - "amp_c\n", - "\n", - "\n", - "\n", - "amp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_c\n", - "\n", - "akg_c\n", - "\n", - "\n", - "\n", - "akg_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "akg_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "succoa_c\n", - "\n", - "succoa_c\n", - "\n", - "\n", - "\n", - "co2_c\n", - "\n", - "co2_c\n", - "\n", - "\n", - "\n", - "co2_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_e\n", - "\n", - "akg_e\n", - "\n", - "\n", - "\n", - "akg_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "akg_e->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_c\n", - "\n", - "etoh_c\n", - "\n", - "\n", - "\n", - "etoh_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_c\n", - "\n", - "pi_c\n", - "\n", - "\n", - "\n", - "pi_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c\n", - "\n", - "e4p_c\n", - "\n", - "\n", - "\n", - "e4p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c\n", - "\n", - "oaa_c\n", - "\n", - "\n", - "\n", - "oaa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c\n", - "\n", - "gln__L_c\n", - "\n", - "\n", - "\n", - "gln__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c\n", - "\n", - "g6p_c\n", - "\n", - "\n", - "\n", - "f6p_c\n", - "\n", - "f6p_c\n", - "\n", - "\n", - "\n", - "g6p_c->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c\n", - "\n", - "pep_c\n", - "\n", - "\n", - "\n", - "pep_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c\n", - "\n", - "g3p_c\n", - "\n", - "\n", - "\n", - "g3p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c\n", - "\n", - "glu__L_c\n", - "\n", - "\n", - "\n", - "glu__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c\n", - "\n", - "pyr_c\n", - "\n", - "\n", - "\n", - "pyr_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c\n", - "\n", - "r5p_c\n", - "\n", - "\n", - "\n", - "r5p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "ru5p__D_c\n", - "\n", - "ru5p__D_c\n", - "\n", - "\n", - "\n", - "r5p_c->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c\n", - "\n", - "nadph_c\n", - "\n", - "\n", - "\n", - "nadph_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c\n", - "\n", - "3pg_c\n", - "\n", - "\n", - "\n", - "3pg_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c\n", - "\n", - "nadp_c\n", - "\n", - "\n", - "\n", - "nadp_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "co2_e\n", - "\n", - "co2_e\n", - "\n", - "\n", - "\n", - "co2_e->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "co2_e->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->cit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_c\n", - "\n", - "o2_c\n", - "\n", - "\n", - "\n", - "o2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c\n", - "\n", - "q8h2_c\n", - "\n", - "\n", - "\n", - "q8h2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c\n", - "\n", - "q8_c\n", - "\n", - "\n", - "\n", - "q8_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e\n", - "\n", - "lac__D_e\n", - "\n", - "\n", - "\n", - "lac__D_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e->e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_c\n", - "\n", - "lac__D_c\n", - "\n", - "\n", - "\n", - "lac__D_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->lac__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c\n", - "\n", - "2pg_c\n", - "\n", - "\n", - "\n", - "2pg_c->3pg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c->e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e\n", - "\n", - "etoh_e\n", - "\n", - "\n", - "\n", - "etoh_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e->e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->etoh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "for_e\n", - "\n", - "for_e\n", - "\n", - "\n", - "\n", - "for_e->e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "fru_e\n", - "\n", - "fru_e\n", - "\n", - "\n", - "\n", - "fru_e->e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fru_e->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "fum_e\n", - "\n", - "fum_e\n", - "\n", - "\n", - "\n", - "fum_e->e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e\n", - "\n", - "glc__D_e\n", - "\n", - "\n", - "\n", - "glc__D_e->e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e\n", - "\n", - "gln__L_e\n", - "\n", - "\n", - "\n", - "gln__L_e->e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e\n", - "\n", - "glu__L_e\n", - "\n", - "\n", - "\n", - "glu__L_e->e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e\n", - "\n", - "h2o_e\n", - "\n", - "\n", - "\n", - "h2o_e->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e->e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e\n", - "\n", - "mal__L_e\n", - "\n", - "\n", - "\n", - "mal__L_e->e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "nh4_e\n", - "\n", - "nh4_e\n", - "\n", - "\n", - "\n", - "nh4_e->e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c\n", - "\n", - "nh4_c\n", - "\n", - "\n", - "\n", - "nh4_e->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "o2_e\n", - "\n", - "o2_e\n", - "\n", - "\n", - "\n", - "o2_e->o2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_e->e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "pi_e\n", - "\n", - "pi_e\n", - "\n", - "\n", - "\n", - "pi_e->e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e\n", - "\n", - "pyr_e\n", - "\n", - "\n", - "\n", - "pyr_e->e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "succ_e\n", - "\n", - "succ_e\n", - "\n", - "\n", - "\n", - "succ_e->e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "succ_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c\n", - "\n", - "fdp_c\n", - "\n", - "\n", - "\n", - "e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "dhap_c\n", - "\n", - "dhap_c\n", - "\n", - "\n", - "\n", - "dhap_c->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->dhap_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_c\n", - "\n", - "for_c\n", - "\n", - "\n", - "\n", - "for_c->for_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_c\n", - "\n", - "fum_c\n", - "\n", - "\n", - "\n", - "fum_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "fum_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c\n", - "\n", - "succ_c\n", - "\n", - "\n", - "\n", - "succ_c->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c\n", - "\n", - "mal__L_c\n", - "\n", - "\n", - "\n", - "mal__L_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgl_c\n", - "\n", - "6pgl_c\n", - "\n", - "\n", - "\n", - "6pgl_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->6pgl_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "13dpg_c\n", - "\n", - "13dpg_c\n", - "\n", - "\n", - "\n", - "e_48_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->g6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgc_c\n", - "\n", - "6pgc_c\n", - "\n", - "\n", - "\n", - "6pgc_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c\n", - "\n", - "xu5p__D_c\n", - "\n", - "\n", - "\n", - "ru5p__D_c->xu5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glx_c\n", - "\n", - "glx_c\n", - "\n", - "\n", - "\n", - "glx_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->glx_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->fdp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->6pgc_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->amp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->succ_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "s7p_c\n", - "\n", - "s7p_c\n", - "\n", - "\n", - "\n", - "s7p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->e4p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->s7p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G.plot(custom_edge_attr=cn.pl.flow_style(P), layout=\"fdp\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "9df7ab19-7e71-4a64-a26e-154f74a0bd5a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "45" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(P.expr.edge_has_flux.value > 0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "155b23d2-8b66-40cf-84aa-d40c402d5012", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[objective_Biomass_Ecoli_core: Expression(AFFINE, UNKNOWN, ()),\n", - " regularization_edge_has_flux: Expression(AFFINE, NONNEGATIVE, ())]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "P.objectives" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "c6a38e48-3fae-4b00-9b60-66bde46d01d0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "45.0" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "P.objectives[1].value" + "This reaction-count criterion is not the same as parsimonious FBA (pFBA), which conventionally minimizes total flux after fixing the primary objective. Sparse FBA instead penalizes how many reactions are active.\n", + "\n", + "For several conditions, CORNETO can apply structured sparsity to the union of active reactions. A reaction shared by several conditions is then counted once, encouraging compact shared metabolic programs while retaining a separate flux vector for every condition. Continue with [Multi-condition FBA](multicondition-sfba.ipynb) for the general formulation and a worked example, followed by [gene expression integration](imat.ipynb) for context-specific metabolic inference.\n", + "\n", + "The examples above use the method-specific `build` and `build_many` interfaces. The general [`Data` interface](../method-inputs.md) remains available for workflows that require custom feature metadata or already represent measurements as CORNETO data objects." ] } ], diff --git a/docs/guide/metabolism/imat.ipynb b/docs/guide/metabolism/imat.ipynb new file mode 100644 index 000000000..29afe39dd --- /dev/null +++ b/docs/guide/metabolism/imat.ipynb @@ -0,0 +1,663 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "introduction", + "metadata": {}, + "source": [ + "# Integrating gene expression into metabolic models\n", + "\n", + "The preceding [FBA](flux-balance-analysis.ipynb) and [Multi-condition FBA](multicondition-sfba.ipynb) guides inferred feasible metabolic states from stoichiometry, reaction bounds, and required phenotypes. Gene expression provides another source of information: it can help choose which of the many feasible pathways best represents a particular biological context.\n", + "\n", + "This guide introduces gene-expression integration for one condition using **iMAT**, the method currently implemented in CORNETO. We will extract an expression-consistent metabolic state from the same COBRApy *E. coli* core model used in the FBA guides." + ] + }, + { + "cell_type": "markdown", + "id": "what-imat-adds", + "metadata": {}, + "source": [ + "## One established approach: iMAT\n", + "\n", + "[iMAT was introduced by Shlomi and colleagues](https://www.nature.com/articles/nbt.1487) to infer context-specific metabolism from expression evidence. It retains the FBA feasible space:\n", + "\n", + "$$\n", + "Sv=0, \\qquad \\ell \\leq v \\leq u.\n", + "$$\n", + "\n", + "It then uses qualitative expression evidence to select a flux state:\n", + "\n", + "- reactions supported by **high** expression are encouraged to carry flux;\n", + "- reactions associated with **low** expression are encouraged to remain inactive;\n", + "- reactions with intermediate or missing evidence are decided by network feasibility and the other objectives.\n", + "\n", + "The optimization minimizes disagreement with this evidence. It does not convert transcript abundance into a flux value, and expression cannot override mass balance, reaction bounds, or a required phenotype. Because reaction activity is represented with indicators, iMAT is a mixed-integer optimization problem.\n", + "\n", + "CORNETO provides this formulation through `MultiSampleIMAT`, but the framework is not restricted to the original iMAT objective. The built problem exposes its constraints, activity variables, and objective terms, making it straightforward to add biological constraints, compose other penalties, or implement methodological variations." + ] + }, + { + "cell_type": "markdown", + "id": "from-genes-to-reactions", + "metadata": {}, + "source": [ + "## From genes to reaction evidence\n", + "\n", + "Metabolic models associate genes with reactions through gene–protein–reaction (GPR) rules. CORNETO applies these rules before building iMAT: an `and` relationship uses the least-supported required subunit, while an `or` relationship uses the best-supported alternative enzyme.\n", + "\n", + "| Normalized expression | iMAT interpretation |\n", + "|---:|---|\n", + "| At or above the high threshold | Encourage the mapped reaction to be active |\n", + "| At or below the low threshold | Encourage the mapped reaction to be inactive |\n", + "| Between thresholds or missing | Do not score the reaction |\n", + "\n", + "`eps` defines the minimum absolute flux used to call a supported reaction active. The optional `lambda_reg` adds a small reaction-count penalty, favoring a compact network when several solutions fit the expression evidence equally well." + ] + }, + { + "cell_type": "markdown", + "id": "cobrapy-relationship", + "metadata": {}, + "source": [ + "## Relationship to COBRApy\n", + "\n", + "COBRApy remains the model-management layer in this workflow: it loads the metabolic model, exposes reactions and GPR rules, and supports standard FBA and pFBA analyses. CORNETO converts that model into its graph representation and composes the FBA constraints, expression-fit terms, reaction-activity indicators, and optional regularization in one optimization problem." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "load-model", + "metadata": {}, + "outputs": [], + "source": [ + "from contextlib import redirect_stdout\n", + "from io import StringIO\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from cobra.flux_analysis import pfba\n", + "from cobra.io import load_model\n", + "\n", + "from corneto.io import cobra_model_to_graph\n", + "from corneto.methods import MultiSampleIMAT\n", + "from corneto.methods.metabolism import evaluate_gpr_expression\n", + "\n", + "with redirect_stdout(StringIO()):\n", + " model = load_model(\"textbook\")\n", + "\n", + "model.solver = \"glpk\"\n", + "G = cobra_model_to_graph(model)\n", + "\n", + "reaction_ids = list(G.get_attr_from_edges(\"id\"))\n", + "reaction_index = {reaction_id: i for i, reaction_id in enumerate(reaction_ids)}\n", + "biomass_id = \"Biomass_Ecoli_core\"\n", + "\n", + "pd.Series(\n", + " {\n", + " \"metabolites\": len(model.metabolites),\n", + " \"reactions\": len(model.reactions),\n", + " \"genes\": len(model.genes),\n", + " \"reactions with GPR rules\": sum(bool(reaction.gene_reaction_rule) for reaction in model.reactions),\n", + " },\n", + " name=\"E. coli core model\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "example-question", + "metadata": {}, + "source": [ + "## Example: selecting an anaerobic fermentation program\n", + "\n", + "We now address a small biological question:\n", + "\n", + "> At a viable anaerobic growth rate, does the expression evidence support ethanol fermentation rather than alternative lactate or acetate routes?\n", + "\n", + "Glucose uptake is limited to 10 units and oxygen uptake is blocked. We require a biomass flux of at least `0.1`, but we do not maximize growth inside iMAT: the phenotype defines what the cell must accomplish, and expression evidence helps select how it accomplishes it.\n", + "\n", + "The expression values below are deliberately simple, synthetic normalized log-expression values. They resemble the positive scale commonly obtained after transforming expression measurements, but they do not represent a particular experiment." + ] + }, + { + "cell_type": "markdown", + "id": "growth-feasibility", + "metadata": {}, + "source": [ + "### Check that the required phenotype is feasible\n", + "\n", + "Before integrating expression, standard FBA establishes the maximum anaerobic growth supported by the medium." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "maximum-growth", + "metadata": {}, + "outputs": [], + "source": [ + "anaerobic_model = model.copy()\n", + "anaerobic_model.reactions.EX_glc__D_e.lower_bound = -10.0\n", + "anaerobic_model.reactions.EX_o2_e.bounds = (0.0, 1000.0)\n", + "\n", + "maximum_growth = anaerobic_model.optimize().fluxes[biomass_id]\n", + "minimum_growth = 0.1\n", + "\n", + "assert maximum_growth > minimum_growth\n", + "\n", + "pd.Series(\n", + " {\n", + " \"maximum anaerobic biomass\": maximum_growth,\n", + " \"minimum biomass required for inference\": minimum_growth,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "expression-profile", + "metadata": {}, + "source": [ + "### Define a qualitative expression profile\n", + "\n", + "Genes linked to ethanol production have expression values around `11–12`. Genes linked to competing lactate and acetate production have values around `4–5`. Values at or above `10` are classified as high, values at or below `6` as low, and values between the thresholds would remain unclassified." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "gene-expression", + "metadata": {}, + "outputs": [], + "source": [ + "high_expression_threshold = 10.0\n", + "low_expression_threshold = 6.0\n", + "\n", + "gene_expression = {\n", + " # High expression: acetaldehyde and alcohol dehydrogenases\n", + " \"b0351\": 12.1,\n", + " \"b1241\": 11.6,\n", + " \"b0356\": 10.9,\n", + " \"b1478\": 11.4,\n", + " # Low expression: lactate dehydrogenase\n", + " \"b1380\": 4.2,\n", + " \"b2133\": 5.1,\n", + " # Low expression: phosphotransacetylase and acetate kinase\n", + " \"b2297\": 4.8,\n", + " \"b2458\": 5.3,\n", + " \"b1849\": 3.9,\n", + " \"b2296\": 4.6,\n", + " \"b3115\": 5.0,\n", + "}\n", + "\n", + "expression_modules = pd.DataFrame(\n", + " [\n", + " {\n", + " \"module\": \"ethanol formation\",\n", + " \"reactions\": \"ACALD, ALCD2x\",\n", + " \"genes\": \"b0351, b1241, b0356, b1478\",\n", + " \"expression range\": \"10.9-12.1\",\n", + " \"class\": \"high\",\n", + " },\n", + " {\n", + " \"module\": \"lactate formation\",\n", + " \"reactions\": \"LDH_D\",\n", + " \"genes\": \"b1380, b2133\",\n", + " \"expression range\": \"4.2-5.1\",\n", + " \"class\": \"low\",\n", + " },\n", + " {\n", + " \"module\": \"acetate formation\",\n", + " \"reactions\": \"PTAr, ACKr\",\n", + " \"genes\": \"b2297, b2458, b1849, b2296, b3115\",\n", + " \"expression range\": \"3.9-5.3\",\n", + " \"class\": \"low\",\n", + " },\n", + " ]\n", + ")\n", + "\n", + "expression_modules" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "gpr-rules", + "metadata": {}, + "outputs": [], + "source": [ + "scored_reactions = [\"ACALD\", \"ALCD2x\", \"LDH_D\", \"PTAr\", \"ACKr\"]\n", + "gpr_table = pd.DataFrame(\n", + " {\n", + " \"reaction\": scored_reactions,\n", + " \"GPR rule\": [\n", + " model.reactions.get_by_id(reaction_id).gene_reaction_rule\n", + " for reaction_id in scored_reactions\n", + " ],\n", + " }\n", + ")\n", + "\n", + "gpr_table" + ] + }, + { + "cell_type": "markdown", + "id": "pfba-reference", + "metadata": {}, + "source": [ + "### An expression-free reference\n", + "\n", + "For comparison, COBRApy pFBA fixes biomass at the required value and minimizes total flux without using expression. This provides one compact feasible state, not a context-specific expression fit." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "solve-pfba", + "metadata": {}, + "outputs": [], + "source": [ + "reference_model = model.copy()\n", + "reference_model.reactions.EX_glc__D_e.lower_bound = -10.0\n", + "reference_model.reactions.EX_o2_e.bounds = (0.0, 1000.0)\n", + "reference_model.reactions.get_by_id(biomass_id).bounds = (minimum_growth, minimum_growth)\n", + "\n", + "pfba_solution = pfba(reference_model)\n", + "\n", + "assert np.isclose(pfba_solution.fluxes[biomass_id], minimum_growth)\n", + "pfba_solution.fluxes[[biomass_id, \"EX_glc__D_e\", \"EX_lac__D_e\", \"EX_etoh_e\", \"EX_ac_e\"]].to_frame(\n", + " \"pFBA flux\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "build-imat", + "metadata": {}, + "source": [ + "### Build and solve iMAT\n", + "\n", + "`MultiSampleIMAT.build` accepts gene scores, reaction bounds, and optional reaction objectives directly. Here the biomass lower bound represents viability, so no biomass objective is needed.\n", + "\n", + "The small `lambda_reg` value breaks ties in favor of a compact active network. Expression disagreement remains the primary biological criterion in this example." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "solve-imat", + "metadata": {}, + "outputs": [], + "source": [ + "eps = 1e-3\n", + "imat = MultiSampleIMAT(\n", + " eps=eps,\n", + " lambda_reg=0.01,\n", + " high_expression_threshold=high_expression_threshold,\n", + " low_expression_threshold=low_expression_threshold,\n", + ")\n", + "\n", + "imat_problem = imat.build(\n", + " G,\n", + " gene_expression=gene_expression,\n", + " reaction_bounds={\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (0.0, 1000.0),\n", + " biomass_id: (minimum_growth, None),\n", + " },\n", + ")\n", + "imat_problem.solve(solver=\"highs\")\n", + "\n", + "imat_fluxes = pd.Series(\n", + " np.asarray(imat_problem.expr.flow.value),\n", + " index=reaction_ids,\n", + " name=\"iMAT flux\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "reaction-results", + "metadata": {}, + "source": [ + "### Did the inferred state agree with expression?\n", + "\n", + "For iMAT, the main interpretation is whether a scored reaction is active, not whether its flux magnitude matches its transcript abundance. Flux signs follow the direction in which each reaction is written in the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "expression-fit", + "metadata": {}, + "outputs": [], + "source": [ + "reaction_evidence = pd.Series(\n", + " {\n", + " \"ACALD\": \"high\",\n", + " \"ALCD2x\": \"high\",\n", + " \"LDH_D\": \"low\",\n", + " \"PTAr\": \"low\",\n", + " \"ACKr\": \"low\",\n", + " },\n", + " name=\"expression evidence\",\n", + ")\n", + "\n", + "expression_fit = pd.DataFrame(\n", + " {\n", + " \"expression evidence\": reaction_evidence,\n", + " \"flux\": imat_fluxes[reaction_evidence.index],\n", + " \"active\": imat_fluxes[reaction_evidence.index].abs() >= eps * (1 - eps),\n", + " }\n", + ")\n", + "\n", + "assert expression_fit.loc[[\"ACALD\", \"ALCD2x\"], \"active\"].all()\n", + "assert not expression_fit.loc[[\"LDH_D\", \"PTAr\", \"ACKr\"], \"active\"].any()\n", + "assert imat_fluxes[biomass_id] >= minimum_growth - 1e-7\n", + "\n", + "expression_fit" + ] + }, + { + "cell_type": "markdown", + "id": "product-comparison", + "metadata": {}, + "source": [ + "### Compare the selected fermentation routes\n", + "\n", + "At the same biomass value, pFBA and iMAT answer different questions. pFBA minimizes total flux and uses both lactate and ethanol routes. iMAT instead selects a state consistent with the supplied high-ethanol and low-lactate/acetate evidence.\n", + "\n", + "The bars show representative flux solutions. Their magnitudes should not be interpreted as predictions from transcript abundance; the iMAT evidence distinguishes active from inactive reactions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "compare-products", + "metadata": {}, + "outputs": [], + "source": [ + "fermentation_products = {\n", + " \"lactate\": \"EX_lac__D_e\",\n", + " \"ethanol\": \"EX_etoh_e\",\n", + " \"acetate\": \"EX_ac_e\",\n", + "}\n", + "\n", + "product_fluxes = pd.DataFrame(\n", + " {\n", + " \"pFBA (no expression)\": {\n", + " product: pfba_solution.fluxes[reaction_id]\n", + " for product, reaction_id in fermentation_products.items()\n", + " },\n", + " \"iMAT (expression integrated)\": {\n", + " product: imat_fluxes[reaction_id]\n", + " for product, reaction_id in fermentation_products.items()\n", + " },\n", + " }\n", + ")\n", + "\n", + "assert product_fluxes.loc[\"ethanol\", \"iMAT (expression integrated)\"] > eps\n", + "assert np.isclose(product_fluxes.loc[\"lactate\", \"iMAT (expression integrated)\"], 0.0, atol=1e-7)\n", + "assert product_fluxes.loc[\"lactate\", \"pFBA (no expression)\"] > eps\n", + "\n", + "product_fluxes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "plot-products", + "metadata": {}, + "outputs": [], + "source": [ + "ax = product_fluxes.plot.bar(\n", + " figsize=(7, 3.5),\n", + " color=[\"#9aa0a6\", \"#2a9d8f\"],\n", + " width=0.75,\n", + ")\n", + "ax.set_ylabel(\"exchange flux\")\n", + "ax.set_xlabel(\"\")\n", + "ax.set_title(\"Fermentation products at the same biomass requirement\")\n", + "ax.tick_params(axis=\"x\", rotation=0)\n", + "ax.spines[[\"top\", \"right\"]].set_visible(False)\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "id": "network-plot-intro", + "metadata": {}, + "source": [ + "### Visualize the contextualized metabolic network\n", + "\n", + "The graph below contains the active iMAT network plus scored reactions that were kept inactive. High-expression active reactions are green, low-expression inactive reactions are dashed red, and active reactions without expression evidence are gray.\n", + "\n", + "| Meaning | Color and style |\n", + "|---|---|\n", + "| Active and supported by high expression | Green |\n", + "| Inactive and associated with low expression | Dashed red |\n", + "| Active without supplied expression evidence | Gray |" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "plot-network", + "metadata": {}, + "outputs": [], + "source": [ + "active_reactions = imat_fluxes.abs() >= eps * (1 - eps)\n", + "scored_reaction_set = set(reaction_evidence.index)\n", + "displayed_reactions = np.array(\n", + " [\n", + " active_reactions.iloc[i] or reaction_id in scored_reaction_set\n", + " for i, reaction_id in enumerate(reaction_ids)\n", + " ]\n", + ")\n", + "\n", + "selected_indices = np.flatnonzero(displayed_reactions)\n", + "context_network = G.edge_subgraph(selected_indices)\n", + "edge_style = {}\n", + "\n", + "for displayed_index, original_index in enumerate(selected_indices):\n", + " reaction_id = reaction_ids[original_index]\n", + " evidence = reaction_evidence.get(reaction_id)\n", + "\n", + " if evidence == \"high\":\n", + " edge_style[displayed_index] = {\"color\": \"#2a9d8f\", \"penwidth\": \"4\"}\n", + " elif evidence == \"low\":\n", + " edge_style[displayed_index] = {\n", + " \"color\": \"#e76f51\",\n", + " \"penwidth\": \"3\",\n", + " \"style\": \"dashed\",\n", + " }\n", + " else:\n", + " edge_style[displayed_index] = {\"color\": \"#b0b0b0\", \"penwidth\": \"1.5\"}\n", + "\n", + "context_network.plot(\n", + " graph_attr={\"rankdir\": \"LR\"},\n", + " node_attr={\n", + " \"fixedsize\": \"false\",\n", + " \"shape\": \"box\",\n", + " \"style\": \"rounded\",\n", + " \"margin\": \"0.05,0.03\",\n", + " },\n", + " custom_edge_attr=edge_style,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "advanced-reaction-scores", + "metadata": {}, + "source": [ + "## Advanced: compute and supply reaction scores directly\n", + "\n", + "Passing `gene_expression=` is convenient because `MultiSampleIMAT` performs thresholding and GPR mapping automatically. For method development or custom preprocessing, it can be useful to inspect that transformation and pass the final reaction-level evidence through `reaction_scores=` instead.\n", + "\n", + "At this level, signed values no longer represent expression abundance. They encode the iMAT classification:\n", + "\n", + "| Reaction score | Meaning in the optimization |\n", + "|---:|---|\n", + "| `+1` | High-expression evidence: favor an active reaction |\n", + "| `−1` | Low-expression evidence: favor an inactive reaction |\n", + "| `0` or omitted | No expression-fit term for the reaction |\n", + "\n", + "First, threshold the positive expression measurements into categorical gene evidence." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "classify-gene-expression", + "metadata": {}, + "outputs": [], + "source": [ + "gene_scores = {}\n", + "\n", + "for gene_id, expression in gene_expression.items():\n", + " if expression >= high_expression_threshold:\n", + " gene_scores[gene_id] = 1.0\n", + " elif expression <= low_expression_threshold:\n", + " gene_scores[gene_id] = -1.0\n", + " else:\n", + " gene_scores[gene_id] = 0.0\n", + "\n", + "pd.DataFrame(\n", + " {\n", + " \"expression\": pd.Series(gene_expression),\n", + " \"gene score\": pd.Series(gene_scores),\n", + " }\n", + ").sort_values(\"expression\", ascending=False)" + ] + }, + { + "cell_type": "markdown", + "id": "apply-gpr-rules", + "metadata": {}, + "source": [ + "Next, CORNETO's `evaluate_gpr_expression` applies every model GPR rule to the gene scores in one call. Reactions with a final score of zero are omitted, so they remain governed by stoichiometry, bounds, and regularization rather than expression-fit terms. For several samples, the related `evaluate_gpr_rules` function evaluates the same rule list against multiple gene-score mappings." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "compute-reaction-scores", + "metadata": {}, + "outputs": [], + "source": [ + "gpr_rules = list(G.get_attr_from_edges(\"GPR\"))\n", + "reaction_score_values = evaluate_gpr_expression(gpr_rules, gene_scores)\n", + "\n", + "reaction_scores = {\n", + " reaction_id: float(score)\n", + " for reaction_id, score in zip(reaction_ids, reaction_score_values)\n", + " if not np.isclose(score, 0.0)\n", + "}\n", + "\n", + "reaction_score_table = pd.DataFrame(\n", + " {\n", + " \"GPR rule\": {\n", + " reaction_id: gpr_rules[reaction_index[reaction_id]]\n", + " for reaction_id in reaction_scores\n", + " },\n", + " \"reaction score\": reaction_scores,\n", + " }\n", + ")\n", + "\n", + "reaction_score_table" + ] + }, + { + "cell_type": "markdown", + "id": "solve-from-reaction-scores", + "metadata": {}, + "source": [ + "The reaction-score interface is closer to the optimization problem and is useful when reaction evidence comes from another mapping method or has already been curated. Threshold arguments are unnecessary because the scores already encode high and low reaction evidence." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "reaction-score-problem", + "metadata": {}, + "outputs": [], + "source": [ + "reaction_score_problem = MultiSampleIMAT(\n", + " eps=eps,\n", + " lambda_reg=0.01,\n", + ").build(\n", + " G,\n", + " reaction_scores=reaction_scores,\n", + " reaction_bounds={\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (0.0, 1000.0),\n", + " biomass_id: (minimum_growth, None),\n", + " },\n", + ")\n", + "reaction_score_problem.solve(solver=\"highs\")\n", + "\n", + "reaction_score_fluxes = pd.Series(\n", + " np.asarray(reaction_score_problem.expr.flow.value),\n", + " index=reaction_ids,\n", + ")\n", + "\n", + "interface_comparison = pd.DataFrame(\n", + " {\n", + " \"reaction score\": pd.Series(reaction_scores),\n", + " \"active from gene_expression\": (\n", + " imat_fluxes[list(reaction_scores)].abs() >= eps * (1 - eps)\n", + " ),\n", + " \"active from reaction_scores\": (\n", + " reaction_score_fluxes[list(reaction_scores)].abs() >= eps * (1 - eps)\n", + " ),\n", + " }\n", + ")\n", + "\n", + "assert (\n", + " interface_comparison[\"active from gene_expression\"]\n", + " == interface_comparison[\"active from reaction_scores\"]\n", + ").all()\n", + "\n", + "interface_comparison" + ] + }, + { + "cell_type": "markdown", + "id": "interpretation-limitations", + "metadata": {}, + "source": [ + "## Interpretation and limitations\n", + "\n", + "The inferred state is stoichiometrically feasible, satisfies the anaerobic medium and growth requirement, activates the expression-supported ethanol route, and avoids the low-expression lactate and acetate routes. This illustrates the role of iMAT: expression resolves part of the ambiguity left by FBA by ranking feasible reaction-activity patterns.\n", + "\n", + "The result remains a modeling hypothesis:\n", + "\n", + "- expression is a cue for likely activity, not an activity or flux measurement; protein abundance, post-translational modification, and metabolite-level regulation can decouple expression from flux;\n", + "- thresholds determine which genes contribute evidence and should be checked for sensitivity;\n", + "- iMAT infers reaction activity, not flux magnitude from expression;\n", + "- low-expression reactions may remain active when network constraints or the required phenotype need them;\n", + "- alternative expression-consistent optima may still exist.\n", + "\n", + "The [original iMAT paper](https://www.nature.com/articles/nbt.1487) reports a central role for post-transcriptional regulation and uses disagreements between expression and predicted activity to generate hypotheses about regulation beyond transcript abundance. They do not identify a mechanism on their own: additional protein, enzyme-activity, metabolite, or flux measurements are needed to distinguish biological regulation from data and model assumptions.\n", + "\n", + "Real analyses should inspect threshold choices, biological constraints, expression coverage, and alternative solutions. Continue with [multi-condition gene expression integration](multicondition-imat.ipynb) to learn how CORNETO couples expression-informed metabolic inference across several contexts." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/guide/metabolism/index.md b/docs/guide/metabolism/index.md index f4a2bd44d..dba7ae4da 100644 --- a/docs/guide/metabolism/index.md +++ b/docs/guide/metabolism/index.md @@ -1,11 +1,20 @@ # Metabolism -CORNETO supports flux balance analysis workflows while adding modeling flexibility to define custom constraints, objectives, and coupled formulations in a single optimization problem. For users familiar with COBRA-style modeling, this enables extension from standard FBA to explicit use cases such as multi-condition FBA and integration of omics data into metabolic networks to detect stoichiometrically consistent steady-state metabolic states. +CORNETO brings constraint-based metabolic modeling into the same optimization +framework used for other network-inference problems. It interoperates with +COBRApy models and supports standard flux balance analysis while exposing the +formulation for custom constraints, coupled conditions, shared sparsity, and +omics integration. + +Start with standard FBA and model interoperability, continue with +multi-condition FBA and shared reaction selection, and then integrate +expression evidence first in one condition and later across several conditions. ```{toctree} :maxdepth: 3 flux-balance-analysis.ipynb multicondition-sfba.ipynb +imat.ipynb multicondition-imat.ipynb ``` diff --git a/docs/guide/metabolism/multicondition-imat.ipynb b/docs/guide/metabolism/multicondition-imat.ipynb index 706a3214b..ae412eabe 100644 --- a/docs/guide/metabolism/multicondition-imat.ipynb +++ b/docs/guide/metabolism/multicondition-imat.ipynb @@ -2,1586 +2,617 @@ "cells": [ { "cell_type": "markdown", - "id": "5138cc3a", + "id": "introduction", "metadata": {}, "source": [ - "# Multi-condition iMAT\n", + "# Multi-condition gene expression integration\n", "\n", - "This tutorial shows how to use the multi-condition iMAT method.\n", + "The [single-condition expression guide](imat.ipynb) showed how iMAT converts expression evidence into reaction-level preferences, while the [Multi-condition FBA guide](multicondition-sfba.ipynb) explained why reaction selection should be performed jointly when shared and context-specific metabolism are the biological quantities of interest.\n", "\n", - "We use a branched network with weak and conflicting evidence across two\n", - "conditions to illustrate how structured regularization can align solutions\n", - "across samples.\n" + "This guide combines those ideas without repeating their derivations. Each condition receives its own reaction scores, medium bounds, phenotype constraints, and flux vector. CORNETO then fits the condition-specific expression evidence while selecting one compact reaction union across the complete experiment." + ] + }, + { + "cell_type": "markdown", + "id": "what-changes", + "metadata": {}, + "source": [ + "## What changes in the multi-condition formulation?\n", + "\n", + "`MultiSampleIMAT.build_many` accepts mappings whose first level contains condition names:\n", + "\n", + "| Input | Condition-specific information |\n", + "|---|---|\n", + "| `reaction_scores` | Reactions favored active (`+1`), favored inactive (`−1`), or unscored |\n", + "| `reaction_bounds` | Medium, perturbations, and required phenotypes |\n", + "| `objectives` | Optional reaction objectives |\n", + "\n", + "Every condition keeps a separate flux vector and a separate expression-fit objective. With `lambda_reg > 0`, a reaction active in one or several conditions contributes once to the union penalty. Reuse is therefore encouraged, but conflicting or condition-specific expression evidence can still select different pathways.\n", + "\n", + "This is the same union-level coupling introduced in Multi-condition FBA, now applied while every condition also fits its own expression evidence. The joint model does not average expression profiles and does not force equal fluxes. Reaction-level agreement must therefore be inspected alongside the inferred network: an unmatched score can reveal tension between expression, network feasibility, phenotype constraints, and shared regularization." ] }, { "cell_type": "code", - "execution_count": 1, - "id": "e7dd7a9f", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:35.458243Z", - "iopub.status.busy": "2026-02-15T11:15:35.458079Z", - "iopub.status.idle": "2026-02-15T11:15:36.890934Z", - "shell.execute_reply": "2026-02-15T11:15:36.890647Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - "
Installed version:v1.0.0b3.post1.dev0+048af53c
Available backends:CVXPY v1.8.1, PICOS v2.6.2
Default backend (corneto.opt):CVXPY
Installed solvers:CVXOPT, GLPK, GLPK_MI, HIGHS, SCIP, SCIPY
Plot backend (default):auto -> graphviz
Available plot backends:graphviz v0.20.3; networkx v3.6+mpl v3.10.8; graphviz-wasm
Installed path:/Users/pablorodriguezmier/Documents/work/projects/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
\n", - " " - ], - "text/plain": [ - "Installed version: v1.0.0b3.post1.dev0+048af53c\n", - "Available backends: CVXPY v1.8.1, PICOS v2.6.2\n", - "Default backend (corneto.opt): CVXPY\n", - "Installed solvers: CVXOPT, GLPK, GLPK_MI, HIGHS, SCIP, SCIPY\n", - "Plot backend (default): auto -> graphviz\n", - "Available plot backends: graphviz v0.20.3; networkx v3.6+mpl v3.10.8; graphviz-wasm\n", - "Installed path: /Users/pablorodriguezmier/Documents/work/projects/corneto/corneto\n", - "Repository: https://github.com/saezlab/corneto" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "load-model", + "metadata": {}, + "outputs": [], "source": [ + "from contextlib import redirect_stdout\n", + "from io import StringIO\n", + "\n", "import numpy as np\n", "import pandas as pd\n", + "from cobra.io import load_model\n", "\n", - "import corneto as cn\n", - "from corneto.methods.imat import MultiSampleIMAT\n", + "from corneto.io import cobra_model_to_graph\n", + "from corneto.methods import MultiSampleIMAT\n", "\n", - "cn.info()" + "with redirect_stdout(StringIO()):\n", + " model = load_model(\"textbook\")\n", + "\n", + "G = cobra_model_to_graph(model)\n", + "reaction_ids = list(G.get_attr_from_edges(\"id\"))\n", + "reaction_index = {reaction_id: i for i, reaction_id in enumerate(reaction_ids)}\n", + "biomass_id = \"Biomass_Ecoli_core\"" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "b4fabc4d", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.892236Z", - "iopub.status.busy": "2026-02-15T11:15:36.892070Z", - "iopub.status.idle": "2026-02-15T11:15:36.898171Z", - "shell.execute_reply": "2026-02-15T11:15:36.897863Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
edge_indexreaction_id
00EX_A
11R_AB
22R_BC
33R_AD
44R_DC
55R_CE
66R_EF
77BIOMASS
88R_BX
99R_X_sink
1010R_DY
1111R_Y_sink
\n", - "
" - ], - "text/plain": [ - " edge_index reaction_id\n", - "0 0 EX_A\n", - "1 1 R_AB\n", - "2 2 R_BC\n", - "3 3 R_AD\n", - "4 4 R_DC\n", - "5 5 R_CE\n", - "6 6 R_EF\n", - "7 7 BIOMASS\n", - "8 8 R_BX\n", - "9 9 R_X_sink\n", - "10 10 R_DY\n", - "11 11 R_Y_sink" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "cell_type": "markdown", + "id": "biological-question", + "metadata": {}, "source": [ - "G = cn.Graph()\n", + "## Example: aerobic respiration and anaerobic fermentation\n", "\n", - "# Uptake\n", - "G.add_edge((), \"A\", id=\"EX_A\", default_lb=0, default_ub=10)\n", + "We ask:\n", "\n", - "# Branch 1\n", - "G.add_edge(\"A\", \"B\", id=\"R_AB\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"B\", \"C\", id=\"R_BC\", default_lb=0, default_ub=100)\n", + "> Which reactions form a shared expression-consistent program for growth on glucose, and which distinguish aerobic respiration from anaerobic ethanol fermentation?\n", "\n", - "# Branch 2\n", - "G.add_edge(\"A\", \"D\", id=\"R_AD\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"D\", \"C\", id=\"R_DC\", default_lb=0, default_ub=100)\n", + "The example uses two synthetic expression contexts in the *E. coli* core model. Both grow on glucose. Oxygen is available only in the aerobic condition, and biomass is fixed at approximately 60% of the maximum supported by each environment. The fixed phenotypes keep the independent and joint comparisons biologically equivalent.\n", "\n", - "# Shared pathway to objective\n", - "G.add_edge(\"C\", \"E\", id=\"R_CE\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"E\", \"F\", id=\"R_EF\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"F\", (), id=\"BIOMASS\", default_lb=0, default_ub=100)\n", + "We start from reaction scores, the advanced interface introduced at the end of the single-condition guide. In a real workflow these scores could be produced from expression measurements and GPR rules with `evaluate_gpr_expression` or supplied by another curated mapping procedure." + ] + }, + { + "cell_type": "markdown", + "id": "define-evidence", + "metadata": {}, + "source": [ + "### Define condition-specific reaction evidence\n", "\n", - "# Side drains\n", - "G.add_edge(\"B\", \"X\", id=\"R_BX\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"X\", (), id=\"R_X_sink\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"D\", \"Y\", id=\"R_DY\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"Y\", (), id=\"R_Y_sink\", default_lb=0, default_ub=100)\n", + "The aerobic profile supports respiration and pyruvate oxidation while arguing against fermentation. The anaerobic profile supports ethanol formation while arguing against oxygen-dependent respiration and lactate production.\n", "\n", - "pd.DataFrame(\n", - " {\n", - " \"edge_index\": range(G.num_edges),\n", - " \"reaction_id\": [G.get_attr_edge(i).get(\"id\") for i in range(G.num_edges)],\n", - " }\n", - ")" + "To make model–data disagreement visible, the synthetic anaerobic profile deliberately classifies `PFL` as low even though pyruvate-formate lyase provides the route from pyruvate to acetyl-CoA and formate in the selected fermentative state. This controlled conflict lets us distinguish a reaction that is fitted from one that remains active despite low-expression evidence." ] }, { "cell_type": "code", - "execution_count": 3, - "id": "78790088", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.899476Z", - "iopub.status.busy": "2026-02-15T11:15:36.899391Z", - "iopub.status.idle": "2026-02-15T11:15:36.913618Z", - "shell.execute_reply": "2026-02-15T11:15:36.913277Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "digraph {\n", - "\tnode [fixedsize=true]\n", - "\te_0_source [shape=point]\n", - "\tA [shape=circle]\n", - "\tA [shape=circle]\n", - "\tB [shape=circle]\n", - "\tB [shape=circle]\n", - "\tC [shape=circle]\n", - "\tA [shape=circle]\n", - "\tD [shape=circle]\n", - "\tD [shape=circle]\n", - "\tC [shape=circle]\n", - "\tC [shape=circle]\n", - "\tE [shape=circle]\n", - "\tE [shape=circle]\n", - "\tF [shape=circle]\n", - "\te_7_target [shape=point]\n", - "\tF [shape=circle]\n", - "\tB [shape=circle]\n", - "\tX [shape=circle]\n", - "\te_9_target [shape=point]\n", - "\tX [shape=circle]\n", - "\tD [shape=circle]\n", - "\tY [shape=circle]\n", - "\te_11_target [shape=point]\n", - "\tY [shape=circle]\n", - "\te_0_source -> A [arrowhead=normal]\n", - "\tA -> B [arrowhead=normal]\n", - "\tB -> C [arrowhead=normal]\n", - "\tA -> D [arrowhead=normal]\n", - "\tD -> C [arrowhead=normal]\n", - "\tC -> E [arrowhead=normal]\n", - "\tE -> F [arrowhead=normal]\n", - "\tF -> e_7_target [arrowhead=normal]\n", - "\tB -> X [arrowhead=normal]\n", - "\tX -> e_9_target [arrowhead=normal]\n", - "\tD -> Y [arrowhead=normal]\n", - "\tY -> e_11_target [arrowhead=normal]\n", - "}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "reaction-scores", + "metadata": {}, + "outputs": [], + "source": [ + "condition_names = [\"glucose aerobic\", \"glucose anaerobic\"]\n", + "\n", + "reaction_scores = {\n", + " \"glucose aerobic\": {\n", + " \"CYTBD\": 1.0,\n", + " \"NADH16\": 1.0,\n", + " \"PDH\": 1.0,\n", + " \"CS\": 1.0,\n", + " \"ATPS4r\": 1.0,\n", + " \"PFL\": -1.0,\n", + " \"LDH_D\": -1.0,\n", + " \"ACALD\": -1.0,\n", + " \"ALCD2x\": -1.0,\n", + " },\n", + " \"glucose anaerobic\": {\n", + " \"PFL\": -1.0,\n", + " \"ACALD\": 1.0,\n", + " \"ALCD2x\": 1.0,\n", + " \"CYTBD\": -1.0,\n", + " \"NADH16\": -1.0,\n", + " \"PDH\": -1.0,\n", + " \"LDH_D\": -1.0,\n", + " },\n", + "}\n", + "\n", + "score_table = pd.DataFrame(reaction_scores).fillna(0.0)\n", + "score_table.index.name = \"reaction\"\n", + "score_table" + ] + }, + { + "cell_type": "markdown", + "id": "define-phenotypes", + "metadata": {}, "source": [ - "G.plot()" + "### Define the media and required phenotypes\n", + "\n", + "A negative exchange lower bound allows uptake. Biomass is fixed rather than maximized because expression agreement and shared reaction selection are the objectives of this analysis." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "582902c0", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.915144Z", - "iopub.status.busy": "2026-02-15T11:15:36.915031Z", - "iopub.status.idle": "2026-02-15T11:15:36.917329Z", - "shell.execute_reply": "2026-02-15T11:15:36.917081Z" - } - }, + "execution_count": null, + "id": "reaction-bounds", + "metadata": {}, "outputs": [], "source": [ - "w = 0.2\n", - "\n", - "scores_condition_1 = {\n", - " \"R_AB\": +w,\n", - " \"R_BC\": +w,\n", - " \"R_AD\": -w,\n", - " \"R_DC\": -w,\n", - " \"R_BX\": -0.1,\n", - " \"R_DY\": -0.1,\n", + "biomass_targets = {\n", + " \"glucose aerobic\": 0.50,\n", + " \"glucose anaerobic\": 0.12,\n", "}\n", "\n", - "scores_condition_2 = {\n", - " \"R_AB\": -w,\n", - " \"R_BC\": -w,\n", - " \"R_AD\": +w,\n", - " \"R_DC\": +w,\n", - " \"R_BX\": -0.1,\n", - " \"R_DY\": -0.1,\n", + "reaction_bounds = {\n", + " \"glucose aerobic\": {\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", + " biomass_id: (biomass_targets[\"glucose aerobic\"], biomass_targets[\"glucose aerobic\"]),\n", + " },\n", + " \"glucose anaerobic\": {\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (0.0, 1000.0),\n", + " biomass_id: (biomass_targets[\"glucose anaerobic\"], biomass_targets[\"glucose anaerobic\"]),\n", + " },\n", "}\n", "\n", + "pd.DataFrame(\n", + " {\n", + " \"glucose lower bound\": {condition: bounds[\"EX_glc__D_e\"][0] for condition, bounds in reaction_bounds.items()},\n", + " \"oxygen lower bound\": {condition: bounds[\"EX_o2_e\"][0] for condition, bounds in reaction_bounds.items()},\n", + " \"fixed biomass\": biomass_targets,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "scale-condition-scores", + "metadata": {}, + "source": [ + "## Balance expression evidence across conditions\n", + "\n", + "Before coupling conditions, compare their total evidence weight. Without scaling, a condition with more scored reactions or larger score magnitudes contributes more to the joint objective. The shared sparsity penalty can then overwhelm a weakly weighted condition, especially when zero flux is feasible.\n", + "\n", + "`MultiSampleIMAT(scale=True)` applies L1 normalization independently within each condition:\n", + "\n", + "$$\n", + "\\widetilde{w}_{r,c} = 100\\,\\frac{w_{r,c}}{\\sum_j |w_{j,c}|}.\n", + "$$\n", + "\n", + "The signs and relative weights within a condition are preserved, while the absolute weights sum to `100`. Each condition therefore has the same maximum expression-mismatch budget.\n", + "\n", + "The value `100` is not mathematically special: normalizing to `1` and dividing `lambda_reg` by `100` would define the same trade-off. A budget of `100` usually keeps individual objective coefficients closer to order one when tens or hundreds of reactions are scored, avoiding unnecessarily tiny coefficients in the MILP.\n", + "\n", + "Scaling and phenotype constraints solve different problems:\n", + "\n", + "- **scaling** balances the influence of expression evidence across conditions;\n", + "- **phenotype constraints** prevent biologically required conditions from collapsing to a zero or otherwise trivial flux state.\n", "\n", - "def sample_from_scores(scores):\n", - " sample = {\"BIOMASS\": {\"role\": \"objective\"}}\n", - " for rid, value in scores.items():\n", - " sample[rid] = {\"mapping\": \"edge\", \"value\": float(value)}\n", - " return sample\n", + "Use scaling when score ranges or expression coverage differ for technical reasons. Leave scores unscaled when their absolute magnitudes are already comparable and intentionally encode confidence across conditions.\n", "\n", + "After scaling, compare the objective scales explicitly. For $R$ model reactions, the expression-mismatch term is bounded by `100` per condition, while the union penalty is bounded by $\\lambda R$. If $\\lambda R$ approaches `100`, sparsity can compete with an entire condition's evidence budget. Collapse can occur earlier because an all-zero condition mismatches only its positive evidence; low-expression evidence already favors zero flux.\n", "\n", - "multi_data = cn.Data.from_cdict(\n", + "Objective scaling does not correct loose big-M constraints. iMAT activity indicators depend on reaction flux bounds, so finite, biologically meaningful bounds are also important for MILP numerical stability and performance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "score-weight-comparison", + "metadata": {}, + "outputs": [], + "source": [ + "eps = 1e-3\n", + "lambda_reg = 0.01\n", + "activity_tolerance = eps * (1 - eps)\n", + "\n", + "score_weight_comparison = pd.DataFrame(\n", " {\n", - " \"condition_1\": sample_from_scores(scores_condition_1),\n", - " \"condition_2\": sample_from_scores(scores_condition_2),\n", + " \"unscaled absolute score sum\": score_table.abs().sum(),\n", + " \"absolute score sum with scale=True\": 100.0,\n", " }\n", ")\n", + "score_weight_comparison" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "objective-scale", + "metadata": {}, + "outputs": [], + "source": [ + "pd.Series(\n", + " {\n", + " \"expression-mismatch budget per condition\": 100.0,\n", + " \"regularization cost per union reaction\": lambda_reg,\n", + " \"maximum union penalty in this model\": lambda_reg * len(reaction_ids),\n", + " },\n", + " name=\"objective scale\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "independent-reference", + "metadata": {}, + "source": [ + "## Independent iMAT as a reference\n", "\n", - "single_data_c1 = cn.Data.from_cdict({\"condition_1\": sample_from_scores(scores_condition_1)})\n", - "single_data_c2 = cn.Data.from_cdict({\"condition_2\": sample_from_scores(scores_condition_2)})" + "We first solve each condition separately with the same small reaction-count penalty used below. These runs fit each expression profile independently and provide the post-hoc union against which the joint analysis will be compared." ] }, { "cell_type": "code", - "execution_count": 5, - "id": "40470e3b", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.918357Z", - "iopub.status.busy": "2026-02-15T11:15:36.918264Z", - "iopub.status.idle": "2026-02-15T11:15:36.984038Z", - "shell.execute_reply": "2026-02-15T11:15:36.983730Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Problem(Minimize(Expression(AFFINE, UNKNOWN, ())), [Inequality(Constant(CONSTANT, ZERO, (12,))), Inequality(Variable((12,), _flow)), Equality(Expression(AFFINE, UNKNOWN, (8,)), Constant(CONSTANT, ZERO, ())), Inequality(Expression(AFFINE, ZERO, (12,))), Inequality(Variable((12,), _flow)), Inequality(Expression(AFFINE, NONNEGATIVE, (6,))), Equality(Expression(AFFINE, NONNEGATIVE, (6,)), Constant(CONSTANT, ZERO, ())), Inequality(Expression(AFFINE, NONNEGATIVE, (6,))), Inequality(Expression(AFFINE, UNKNOWN, (6,))), Inequality(Expression(AFFINE, NONNEGATIVE, (6,)))])" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "solve-independent", + "metadata": {}, + "outputs": [], "source": [ - "imat_multi_uncoupled = MultiSampleIMAT(lambda_reg=0.0, eps=1e-3)\n", - "P_multi_uncoupled = imat_multi_uncoupled.build(G, multi_data)\n", - "P_multi_uncoupled.solve(solver=\"highs\")\n", + "independent_fluxes = {}\n", "\n", - "imat_multi_coupled = MultiSampleIMAT(lambda_reg=0.5, eps=1e-3)\n", - "P_multi_coupled = imat_multi_coupled.build(G, multi_data)\n", - "P_multi_coupled.solve(solver=\"highs\")\n", + "for condition in condition_names:\n", + " problem = MultiSampleIMAT(eps=eps, lambda_reg=lambda_reg, scale=True).build(\n", + " G,\n", + " reaction_scores=reaction_scores[condition],\n", + " reaction_bounds=reaction_bounds[condition],\n", + " )\n", + " problem.solve(solver=\"highs\")\n", + " independent_fluxes[condition] = np.asarray(problem.expr.flow.value)\n", "\n", - "imat_single_c1 = MultiSampleIMAT(lambda_reg=0.5, eps=1e-3)\n", - "P_single_c1 = imat_single_c1.build(G, single_data_c1)\n", - "P_single_c1.solve(solver=\"highs\")\n", + "independent_fluxes = pd.DataFrame(independent_fluxes, index=reaction_ids)\n", + "independent_activity = independent_fluxes.abs() > activity_tolerance\n", "\n", - "imat_single_c2 = MultiSampleIMAT(lambda_reg=0.5, eps=1e-3)\n", - "P_single_c2 = imat_single_c2.build(G, single_data_c2)\n", - "P_single_c2.solve(solver=\"highs\")" + "pd.DataFrame(\n", + " {\n", + " \"biomass\": independent_fluxes.loc[biomass_id],\n", + " \"active reactions\": independent_activity.sum(),\n", + " }\n", + ")" ] }, { "cell_type": "markdown", - "id": "103264dc", + "id": "joint-analysis", "metadata": {}, "source": [ - "## Objective values\n", + "## Solve both expression contexts jointly\n", "\n", - "`P.objectives` provides the solved objective terms and values directly.\n" + "The scientific inputs have the same readable structure as the independent calls. `build_many` creates one flux column per named condition, and `lambda_reg` now penalizes their reaction union." ] }, { "cell_type": "code", - "execution_count": 6, - "id": "ad7bdf16", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.985288Z", - "iopub.status.busy": "2026-02-15T11:15:36.985211Z", - "iopub.status.idle": "2026-02-15T11:15:36.991998Z", - "shell.execute_reply": "2026-02-15T11:15:36.991688Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingterm_indexterm_namevalueweightweighted_value
0multi lambda=00objective_condition_1__BIOMASS-10.01.0-10.0
1multi lambda=01objective_condition_2__BIOMASS-10.01.0-10.0
2multi lambda=02imat_fit_pos_condition_1_00.01.00.0
3multi lambda=03imat_fit_neg_condition_1_00.01.00.0
4multi lambda=04imat_fit_pos_condition_2_10.01.00.0
5multi lambda=05imat_fit_neg_condition_2_10.01.00.0
6multi lambda=06regularization_edge_has_flux_OR10.00.00.0
7multi lambda=0.50objective_condition_1__BIOMASS-10.01.0-10.0
8multi lambda=0.51objective_condition_2__BIOMASS-10.01.0-10.0
9multi lambda=0.52imat_fit_pos_condition_1_00.01.00.0
10multi lambda=0.53imat_fit_neg_condition_1_00.01.00.0
11multi lambda=0.54imat_fit_pos_condition_2_10.41.00.4
12multi lambda=0.55imat_fit_neg_condition_2_10.41.00.4
13multi lambda=0.56regularization_edge_has_flux_OR6.00.53.0
14single c1 lambda=0.50objective_condition_1__BIOMASS-10.01.0-10.0
15single c1 lambda=0.51imat_fit_pos_condition_1_00.01.00.0
16single c1 lambda=0.52imat_fit_neg_condition_1_00.01.00.0
17single c1 lambda=0.53regularization_edge_has_flux6.00.53.0
18single c2 lambda=0.50objective_condition_2__BIOMASS-10.01.0-10.0
19single c2 lambda=0.51imat_fit_pos_condition_2_00.01.00.0
20single c2 lambda=0.52imat_fit_neg_condition_2_00.01.00.0
21single c2 lambda=0.53regularization_edge_has_flux6.00.53.0
\n", - "
" - ], - "text/plain": [ - " setting term_index term_name value \\\n", - "0 multi lambda=0 0 objective_condition_1__BIOMASS -10.0 \n", - "1 multi lambda=0 1 objective_condition_2__BIOMASS -10.0 \n", - "2 multi lambda=0 2 imat_fit_pos_condition_1_0 0.0 \n", - "3 multi lambda=0 3 imat_fit_neg_condition_1_0 0.0 \n", - "4 multi lambda=0 4 imat_fit_pos_condition_2_1 0.0 \n", - "5 multi lambda=0 5 imat_fit_neg_condition_2_1 0.0 \n", - "6 multi lambda=0 6 regularization_edge_has_flux_OR 10.0 \n", - "7 multi lambda=0.5 0 objective_condition_1__BIOMASS -10.0 \n", - "8 multi lambda=0.5 1 objective_condition_2__BIOMASS -10.0 \n", - "9 multi lambda=0.5 2 imat_fit_pos_condition_1_0 0.0 \n", - "10 multi lambda=0.5 3 imat_fit_neg_condition_1_0 0.0 \n", - "11 multi lambda=0.5 4 imat_fit_pos_condition_2_1 0.4 \n", - "12 multi lambda=0.5 5 imat_fit_neg_condition_2_1 0.4 \n", - "13 multi lambda=0.5 6 regularization_edge_has_flux_OR 6.0 \n", - "14 single c1 lambda=0.5 0 objective_condition_1__BIOMASS -10.0 \n", - "15 single c1 lambda=0.5 1 imat_fit_pos_condition_1_0 0.0 \n", - "16 single c1 lambda=0.5 2 imat_fit_neg_condition_1_0 0.0 \n", - "17 single c1 lambda=0.5 3 regularization_edge_has_flux 6.0 \n", - "18 single c2 lambda=0.5 0 objective_condition_2__BIOMASS -10.0 \n", - "19 single c2 lambda=0.5 1 imat_fit_pos_condition_2_0 0.0 \n", - "20 single c2 lambda=0.5 2 imat_fit_neg_condition_2_0 0.0 \n", - "21 single c2 lambda=0.5 3 regularization_edge_has_flux 6.0 \n", - "\n", - " weight weighted_value \n", - "0 1.0 -10.0 \n", - "1 1.0 -10.0 \n", - "2 1.0 0.0 \n", - "3 1.0 0.0 \n", - "4 1.0 0.0 \n", - "5 1.0 0.0 \n", - "6 0.0 0.0 \n", - "7 1.0 -10.0 \n", - "8 1.0 -10.0 \n", - "9 1.0 0.0 \n", - "10 1.0 0.0 \n", - "11 1.0 0.4 \n", - "12 1.0 0.4 \n", - "13 0.5 3.0 \n", - "14 1.0 -10.0 \n", - "15 1.0 0.0 \n", - "16 1.0 0.0 \n", - "17 0.5 3.0 \n", - "18 1.0 -10.0 \n", - "19 1.0 0.0 \n", - "20 1.0 0.0 \n", - "21 0.5 3.0 " - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "solve-joint", + "metadata": {}, + "outputs": [], "source": [ - "def objectives_table(problem, setting):\n", - " rows = []\n", - " for i, (obj, weight) in enumerate(zip(problem.objectives, problem.weights)):\n", - " name = obj.name if obj.name else f\"unnamed_{i}\"\n", - " w = float(weight.value) if hasattr(weight, \"value\") else float(weight)\n", - " rows.append(\n", - " {\n", - " \"setting\": setting,\n", - " \"term_index\": i,\n", - " \"term_name\": name,\n", - " \"value\": float(obj.value),\n", - " \"weight\": w,\n", - " \"weighted_value\": float(obj.value) * w,\n", - " }\n", - " )\n", - " return pd.DataFrame(rows)\n", - "\n", + "joint_problem = MultiSampleIMAT(\n", + " eps=eps,\n", + " lambda_reg=lambda_reg,\n", + " scale=True,\n", + ").build_many(\n", + " G,\n", + " reaction_scores=reaction_scores,\n", + " reaction_bounds=reaction_bounds,\n", + ")\n", + "joint_problem.solve(solver=\"highs\")\n", "\n", - "obj_table = pd.concat(\n", - " [\n", - " objectives_table(P_multi_uncoupled, \"multi lambda=0\"),\n", - " objectives_table(P_multi_coupled, \"multi lambda=0.5\"),\n", - " objectives_table(P_single_c1, \"single c1 lambda=0.5\"),\n", - " objectives_table(P_single_c2, \"single c2 lambda=0.5\"),\n", - " ],\n", - " ignore_index=True,\n", + "joint_fluxes = pd.DataFrame(\n", + " np.asarray(joint_problem.expr.flow.value),\n", + " index=reaction_ids,\n", + " columns=condition_names,\n", ")\n", + "joint_activity = joint_fluxes.abs() > activity_tolerance\n", "\n", - "obj_table" + "assert joint_problem.expr.flow.value.shape == (G.num_edges, len(condition_names))" + ] + }, + { + "cell_type": "markdown", + "id": "fit-expression", + "metadata": {}, + "source": [ + "### Inspect reaction-level expression agreement\n", + "\n", + "Each condition must reach its fixed biomass. A positive reaction score is fitted when the reaction is active; a negative score is fitted when it is inactive. In the [original iMAT formulation](https://www.nature.com/articles/nbt.1487), these agreements contribute to a discrete consistency score. They are better described as **fits and mismatches** than as continuous residuals." ] }, { "cell_type": "code", - "execution_count": 7, - "id": "8816ca3b", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.993145Z", - "iopub.status.busy": "2026-02-15T11:15:36.993067Z", - "iopub.status.idle": "2026-02-15T11:15:36.996793Z", - "shell.execute_reply": "2026-02-15T11:15:36.996529Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingcondition_1_penaltycondition_2_penalty
0multi lambda=00.00.0
1multi lambda=0.50.00.8
2single lambda=0.50.00.0
\n", - "
" - ], - "text/plain": [ - " setting condition_1_penalty condition_2_penalty\n", - "0 multi lambda=0 0.0 0.0\n", - "1 multi lambda=0.5 0.0 0.8\n", - "2 single lambda=0.5 0.0 0.0" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "fit-summary", + "metadata": {}, + "outputs": [], "source": [ - "def fit_penalty_for_sample(problem, sample_name):\n", - " sample_name = str(sample_name).replace(\" \", \"_\")\n", - " sample_marker = f\"_{sample_name}_\"\n", - " return float(\n", - " sum(\n", - " float(o.value)\n", - " for o in problem.objectives\n", - " if o.name and o.name.startswith(\"imat_fit_\") and sample_marker in o.name\n", - " )\n", + "fit_rows = []\n", + "fit_details = []\n", + "\n", + "for condition in condition_names:\n", + " scores = pd.Series(reaction_scores[condition])\n", + " joint_scored_activity = joint_activity.loc[scores.index, condition]\n", + " independent_scored_activity = independent_activity.loc[scores.index, condition]\n", + " joint_fitted = ((scores > 0) & joint_scored_activity) | ((scores < 0) & ~joint_scored_activity)\n", + " independent_fitted = ((scores > 0) & independent_scored_activity) | (\n", + " (scores < 0) & ~independent_scored_activity\n", " )\n", "\n", + " for reaction_id in scores.index:\n", + " fit_details.append(\n", + " {\n", + " \"condition\": condition,\n", + " \"reaction\": reaction_id,\n", + " \"reaction score\": scores[reaction_id],\n", + " \"expected\": \"active\" if scores[reaction_id] > 0 else \"inactive\",\n", + " \"joint flux\": joint_fluxes.loc[reaction_id, condition],\n", + " \"joint state\": \"active\" if joint_scored_activity[reaction_id] else \"inactive\",\n", + " \"fitted independently\": bool(independent_fitted[reaction_id]),\n", + " \"fitted jointly\": bool(joint_fitted[reaction_id]),\n", + " }\n", + " )\n", "\n", - "fit_table = pd.DataFrame(\n", - " [\n", - " {\n", - " \"setting\": \"multi lambda=0\",\n", - " \"condition_1_penalty\": fit_penalty_for_sample(P_multi_uncoupled, \"condition_1\"),\n", - " \"condition_2_penalty\": fit_penalty_for_sample(P_multi_uncoupled, \"condition_2\"),\n", - " },\n", + " fit_rows.append(\n", " {\n", - " \"setting\": \"multi lambda=0.5\",\n", - " \"condition_1_penalty\": fit_penalty_for_sample(P_multi_coupled, \"condition_1\"),\n", - " \"condition_2_penalty\": fit_penalty_for_sample(P_multi_coupled, \"condition_2\"),\n", - " },\n", - " {\n", - " \"setting\": \"single lambda=0.5\",\n", - " \"condition_1_penalty\": fit_penalty_for_sample(P_single_c1, \"condition_1\"),\n", - " \"condition_2_penalty\": fit_penalty_for_sample(P_single_c2, \"condition_2\"),\n", - " },\n", - " ]\n", - ")\n", + " \"condition\": condition,\n", + " \"biomass\": joint_fluxes.loc[biomass_id, condition],\n", + " \"active reactions\": int(joint_activity[condition].sum()),\n", + " \"evidence fitted\": f\"{int(joint_fitted.sum())}/{len(scores)}\",\n", + " \"not fitted\": int((~joint_fitted).sum()),\n", + " }\n", + " )\n", "\n", - "fit_table" + " assert np.isclose(joint_fluxes.loc[biomass_id, condition], biomass_targets[condition])\n", + "\n", + "fit_summary = pd.DataFrame(fit_rows).set_index(\"condition\")\n", + "fit_details = pd.DataFrame(fit_details).set_index([\"reaction\", \"condition\"])\n", + "fit_summary" ] }, { "cell_type": "markdown", - "id": "81711827", + "id": "fit-matrix-intro", "metadata": {}, "source": [ - "## Shared reactions" + "A condition-by-reaction agreement matrix is especially useful in multi-condition analyses. It separates reactions that were not scored from scored reactions that the network could or could not fit." ] }, { "cell_type": "code", - "execution_count": 8, - "id": "374ff582", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.998101Z", - "iopub.status.busy": "2026-02-15T11:15:36.998016Z", - "iopub.status.idle": "2026-02-15T11:15:37.002805Z", - "shell.execute_reply": "2026-02-15T11:15:37.002594Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingselected_branch
0multi lambda=0 (condition_1)branch_1 (A->B->C)
1multi lambda=0 (condition_2)branch_2 (A->D->C)
2multi lambda=0.5 (condition_1)branch_1 (A->B->C)
3multi lambda=0.5 (condition_2)branch_1 (A->B->C)
4single condition_1 lambda=0.5branch_1 (A->B->C)
5single condition_2 lambda=0.5branch_2 (A->D->C)
\n", - "
" - ], - "text/plain": [ - " setting selected_branch\n", - "0 multi lambda=0 (condition_1) branch_1 (A->B->C)\n", - "1 multi lambda=0 (condition_2) branch_2 (A->D->C)\n", - "2 multi lambda=0.5 (condition_1) branch_1 (A->B->C)\n", - "3 multi lambda=0.5 (condition_2) branch_1 (A->B->C)\n", - "4 single condition_1 lambda=0.5 branch_1 (A->B->C)\n", - "5 single condition_2 lambda=0.5 branch_2 (A->D->C)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "fit-matrix", + "metadata": {}, + "outputs": [], "source": [ - "idx = {rid: next(iter(G.get_edges_by_attr(\"id\", rid))) for rid in [\"R_AB\", \"R_AD\"]}\n", + "all_scored_reactions = score_table.index\n", + "fit_matrix = pd.DataFrame(\"not scored\", index=all_scored_reactions, columns=condition_names)\n", "\n", + "for (reaction_id, condition), row in fit_details.iterrows():\n", + " fit_matrix.loc[reaction_id, condition] = \"fitted\" if row[\"fitted jointly\"] else \"not fitted\"\n", "\n", - "def branch_label(ab_flux, ad_flux, tol=1e-6):\n", - " ab_on = abs(ab_flux) > tol\n", - " ad_on = abs(ad_flux) > tol\n", - " if ab_on and not ad_on:\n", - " return \"branch_1 (A->B->C)\"\n", - " if ad_on and not ab_on:\n", - " return \"branch_2 (A->D->C)\"\n", - " if ab_on and ad_on:\n", - " return \"both\"\n", - " return \"none\"\n", + "fit_matrix" + ] + }, + { + "cell_type": "markdown", + "id": "mismatch-interpretation", + "metadata": {}, + "source": [ + "The mismatch table should be examined before interpreting shared and condition-specific pathways. A reaction mismatched both independently and jointly points to expression–feasibility tension within that condition. A reaction fitted independently but mismatched only in the joint model instead points to a trade-off introduced by shared regularization.\n", "\n", + "Expression is evidence about the likelihood of reaction activity, not a measurement of activity or flux. The [original iMAT paper](https://www.nature.com/articles/nbt.1487) reports a central role for post-transcriptional regulation and uses disagreements between expression and predicted activity to generate hypotheses about regulation beyond transcript abundance. Possible mechanisms include protein translation or degradation, phosphorylation and other post-translational effects, and metabolite-level control such as substrate availability and allosteric regulation. A disagreement can also arise from expression thresholds, GPR mapping, missing or incorrect model reactions, medium composition, or an imposed phenotype. iMAT alone cannot distinguish these explanations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "mismatched-reactions", + "metadata": {}, + "outputs": [], + "source": [ + "mismatches = fit_details[~fit_details[\"fitted jointly\"]].copy()\n", "\n", - "branch_usage = pd.DataFrame(\n", - " {\n", - " \"setting\": [\n", - " \"multi lambda=0 (condition_1)\",\n", - " \"multi lambda=0 (condition_2)\",\n", - " \"multi lambda=0.5 (condition_1)\",\n", - " \"multi lambda=0.5 (condition_2)\",\n", - " \"single condition_1 lambda=0.5\",\n", - " \"single condition_2 lambda=0.5\",\n", - " ],\n", - " \"selected_branch\": [\n", - " branch_label(\n", - " P_multi_uncoupled.expr.flow[idx[\"R_AB\"], 0].value, P_multi_uncoupled.expr.flow[idx[\"R_AD\"], 0].value\n", - " ),\n", - " branch_label(\n", - " P_multi_uncoupled.expr.flow[idx[\"R_AB\"], 1].value, P_multi_uncoupled.expr.flow[idx[\"R_AD\"], 1].value\n", - " ),\n", - " branch_label(\n", - " P_multi_coupled.expr.flow[idx[\"R_AB\"], 0].value, P_multi_coupled.expr.flow[idx[\"R_AD\"], 0].value\n", - " ),\n", - " branch_label(\n", - " P_multi_coupled.expr.flow[idx[\"R_AB\"], 1].value, P_multi_coupled.expr.flow[idx[\"R_AD\"], 1].value\n", - " ),\n", - " branch_label(P_single_c1.expr.flow[idx[\"R_AB\"]].value, P_single_c1.expr.flow[idx[\"R_AD\"]].value),\n", - " branch_label(P_single_c2.expr.flow[idx[\"R_AB\"]].value, P_single_c2.expr.flow[idx[\"R_AD\"]].value),\n", - " ],\n", - " }\n", - ")\n", + "assert list(mismatches.index) == [(\"PFL\", \"glucose anaerobic\")]\n", + "assert not mismatches.iloc[0][\"fitted independently\"]\n", + "mismatches" + ] + }, + { + "cell_type": "markdown", + "id": "pfl-mismatch", + "metadata": {}, + "source": [ + "`PFL` is the only unmatched reaction. It is classified as low but remains active in both the independent and joint anaerobic solutions. This is not caused by cross-condition coupling: under the imposed anaerobic growth phenotype and high ethanol evidence, the selected network uses `PFL` to supply acetyl-CoA and formate.\n", + "\n", + "In real data, this would be a hypothesis-generating result—not proof that `PFL` is active despite low expression, and not proof of post-translational regulation. The first checks should separate two broad possibilities:\n", "\n", - "single_c1_branch = branch_usage.loc[\n", - " branch_usage[\"setting\"] == \"single condition_1 lambda=0.5\", \"selected_branch\"\n", - "].item()\n", - "single_c2_branch = branch_usage.loc[\n", - " branch_usage[\"setting\"] == \"single condition_2 lambda=0.5\", \"selected_branch\"\n", - "].item()\n", - "multi_c1_branch = branch_usage.loc[\n", - " branch_usage[\"setting\"] == \"multi lambda=0.5 (condition_1)\", \"selected_branch\"\n", - "].item()\n", - "multi_c2_branch = branch_usage.loc[\n", - " branch_usage[\"setting\"] == \"multi lambda=0.5 (condition_2)\", \"selected_branch\"\n", - "].item()\n", - "\n", - "assert single_c1_branch != single_c2_branch, \"Single-sample runs should select different branches.\"\n", - "assert multi_c1_branch == multi_c2_branch, \"Coupled multi-sample run should align branch usage.\"\n", - "\n", - "branch_usage" + "- **biology not captured by transcript abundance**, including enzyme abundance or modification and metabolite-level regulation;\n", + "- **data or model assumptions**, including thresholds, GPR rules, network completeness, medium bounds, and the required phenotype.\n", + "\n", + "Proteomics, enzyme-activity, metabolomics, or flux measurements are needed to discriminate among these explanations." ] }, { - "cell_type": "code", - "execution_count": 9, - "id": "3f066a68", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:37.003910Z", - "iopub.status.busy": "2026-02-15T11:15:37.003842Z", - "iopub.status.idle": "2026-02-15T11:15:37.007924Z", - "shell.execute_reply": "2026-02-15T11:15:37.007671Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingn_sharedsharedonly_condition_1only_condition_2
0multi lambda=0.56[BIOMASS, EX_A, R_AB, R_BC, R_CE, R_EF][][]
1single lambda=0.54[BIOMASS, EX_A, R_CE, R_EF][R_AB, R_BC][R_AD, R_DC]
\n", - "
" - ], - "text/plain": [ - " setting n_shared shared \\\n", - "0 multi lambda=0.5 6 [BIOMASS, EX_A, R_AB, R_BC, R_CE, R_EF] \n", - "1 single lambda=0.5 4 [BIOMASS, EX_A, R_CE, R_EF] \n", - "\n", - " only_condition_1 only_condition_2 \n", - "0 [] [] \n", - "1 [R_AB, R_BC] [R_AD, R_DC] " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "cell_type": "markdown", + "id": "joint-versus-independent", + "metadata": {}, "source": [ - "all_edge_ids = [G.get_attr_edge(i).get(\"id\") for i in range(G.num_edges)]\n", - "\n", - "\n", - "def active_ids(problem, condition=None, tol=1e-6):\n", - " flow = np.asarray(problem.expr.flow.value)\n", - " if condition is not None:\n", - " flow = flow[:, condition]\n", - " return {all_edge_ids[i] for i in np.where(np.abs(flow) > tol)[0]}\n", - "\n", - "\n", - "def shared_unique(active_c1, active_c2, setting):\n", - " shared = sorted(active_c1 & active_c2)\n", - " only_c1 = sorted(active_c1 - active_c2)\n", - " only_c2 = sorted(active_c2 - active_c1)\n", - " return {\n", - " \"setting\": setting,\n", - " \"n_shared\": len(shared),\n", - " \"shared\": shared,\n", - " \"only_condition_1\": only_c1,\n", - " \"only_condition_2\": only_c2,\n", - " }\n", + "### What did joint inference change?\n", "\n", + "The independent solutions are compared only after both optimizations have finished. The joint solution considers reuse while selecting the flux states, producing a smaller union and a larger internally consistent shared set." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "union-comparison", + "metadata": {}, + "outputs": [], + "source": [ + "independent_union = independent_activity.any(axis=1)\n", + "independent_shared = independent_activity.all(axis=1)\n", + "joint_union = joint_activity.any(axis=1)\n", + "joint_shared = joint_activity.all(axis=1)\n", "\n", - "shared_table = pd.DataFrame(\n", - " [\n", - " shared_unique(active_ids(P_multi_coupled, 0), active_ids(P_multi_coupled, 1), \"multi lambda=0.5\"),\n", - " shared_unique(active_ids(P_single_c1), active_ids(P_single_c2), \"single lambda=0.5\"),\n", - " ]\n", + "selection_comparison = pd.DataFrame(\n", + " {\n", + " \"shared reactions\": {\n", + " \"independent inference, compared afterward\": int(independent_shared.sum()),\n", + " \"one joint inference\": int(joint_shared.sum()),\n", + " },\n", + " \"reaction union\": {\n", + " \"independent inference, compared afterward\": int(independent_union.sum()),\n", + " \"one joint inference\": int(joint_union.sum()),\n", + " },\n", + " }\n", ")\n", "\n", - "shared_table" + "assert joint_union.sum() < independent_union.sum()\n", + "assert joint_shared.sum() > independent_shared.sum()\n", + "selection_comparison" ] }, { - "cell_type": "code", - "execution_count": 10, - "id": "0ec4a31d", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:37.008954Z", - "iopub.status.busy": "2026-02-15T11:15:37.008893Z", - "iopub.status.idle": "2026-02-15T11:15:37.020063Z", - "shell.execute_reply": "2026-02-15T11:15:37.019772Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "digraph {\n", - "\tgraph [center=1 rankdir=LR]\n", - "\tnode [fixedsize=true]\n", - "\te_0_source [shape=point]\n", - "\tA [shape=circle]\n", - "\tA [shape=circle]\n", - "\tB [shape=circle]\n", - "\tB [shape=circle]\n", - "\tC [shape=circle]\n", - "\tC [shape=circle]\n", - "\tE [shape=circle]\n", - "\tE [shape=circle]\n", - "\tF [shape=circle]\n", - "\te_5_target [shape=point]\n", - "\tF [shape=circle]\n", - "\te_0_source -> A [arrowhead=normal]\n", - "\tA -> B [arrowhead=normal]\n", - "\tB -> C [arrowhead=normal]\n", - "\tC -> E [arrowhead=normal]\n", - "\tE -> F [arrowhead=normal]\n", - "\tF -> e_5_target [arrowhead=normal]\n", - "}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "cell_type": "markdown", + "id": "usage-patterns", + "metadata": {}, "source": [ - "active_multi_c1 = np.abs(P_multi_coupled.expr.flow.value[:, 0]) > 1e-6\n", - "active_multi_c2 = np.abs(P_multi_coupled.expr.flow.value[:, 1]) > 1e-6\n", + "## Shared and condition-specific metabolism\n", "\n", - "G.edge_subgraph(active_multi_c1).plot(graph_attr={\"rankdir\": \"LR\", \"center\": \"1\"})" + "As in Multi-condition FBA, categories are derived from the joint activity matrix. With two conditions, every reaction in the union is either shared, aerobic-specific, or anaerobic-specific." ] }, { "cell_type": "code", - "execution_count": 11, - "id": "1a42f91d", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:37.021194Z", - "iopub.status.busy": "2026-02-15T11:15:37.021107Z", - "iopub.status.idle": "2026-02-15T11:15:37.031511Z", - "shell.execute_reply": "2026-02-15T11:15:37.031205Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "digraph {\n", - "\tgraph [center=1 rankdir=LR]\n", - "\tnode [fixedsize=true]\n", - "\te_0_source [shape=point]\n", - "\tA [shape=circle]\n", - "\tA [shape=circle]\n", - "\tB [shape=circle]\n", - "\tB [shape=circle]\n", - "\tC [shape=circle]\n", - "\tC [shape=circle]\n", - "\tE [shape=circle]\n", - "\tE [shape=circle]\n", - "\tF [shape=circle]\n", - "\te_5_target [shape=point]\n", - "\tF [shape=circle]\n", - "\te_0_source -> A [arrowhead=normal]\n", - "\tA -> B [arrowhead=normal]\n", - "\tB -> C [arrowhead=normal]\n", - "\tC -> E [arrowhead=normal]\n", - "\tE -> F [arrowhead=normal]\n", - "\tF -> e_5_target [arrowhead=normal]\n", - "}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "categorize-reactions", + "metadata": {}, + "outputs": [], + "source": [ + "reaction_groups = pd.Series(\"inactive\", index=reaction_ids, name=\"usage group\")\n", + "reaction_groups.loc[joint_shared] = \"shared\"\n", + "reaction_groups.loc[joint_activity[\"glucose aerobic\"] & ~joint_activity[\"glucose anaerobic\"]] = (\n", + " \"glucose aerobic only\"\n", + ")\n", + "reaction_groups.loc[~joint_activity[\"glucose aerobic\"] & joint_activity[\"glucose anaerobic\"]] = (\n", + " \"glucose anaerobic only\"\n", + ")\n", + "\n", + "group_table = (\n", + " reaction_groups[joint_union]\n", + " .groupby(reaction_groups[joint_union], sort=False)\n", + " .agg(\n", + " reactions=\"size\",\n", + " reaction_ids=lambda values: \", \".join(values.index),\n", + " )\n", + ")\n", + "\n", + "assert int(group_table[\"reactions\"].sum()) == int(joint_union.sum())\n", + "group_table" + ] + }, + { + "cell_type": "markdown", + "id": "biological-interpretation", + "metadata": {}, "source": [ - "G.edge_subgraph(active_multi_c2).plot(graph_attr={\"rankdir\": \"LR\", \"center\": \"1\"})" + "### Biological interpretation\n", + "\n", + "| Usage group | Characteristic reactions | Interpretation |\n", + "|---|---|---|\n", + "| Shared | `GLCpts`, `PFK`, `GAPD`, `ENO`, `PYK`, biomass | Central glucose utilization and precursor production required in both states |\n", + "| Glucose aerobic only | `EX_o2_e`, `O2t`, `CYTBD`, `NADH16`, `PDH` | Oxygen uptake, respiratory electron transfer, and oxidative pyruvate metabolism |\n", + "| Glucose anaerobic only | `PFL`, `FORti`, `EX_for_e`, `ACALD`, `ALCD2x`, `ETOHt2r`, `EX_etoh_e` | Pyruvate-formate cleavage followed by formate and ethanol secretion |\n", + "\n", + "Most condition-specific reactions agree with the supplied evidence; `PFL` is the explicit exception identified by the mismatch analysis. The inferred sets also include the transport and exchange reactions required to complete each biological route. That is an advantage of network inference over listing high-expression reactions alone: the output is a stoichiometrically connected hypothesis that makes conflicting evidence visible.\n", + "\n", + "As noted in the Multi-condition FBA guide, shared activity does not imply equal magnitude or direction. For example, `ATPS4r` is active in both selected states but carries flux in opposite directions in this solution." ] }, { "cell_type": "markdown", - "id": "ae1c6d9a", + "id": "network-visualization", "metadata": {}, "source": [ - "## Manual check of objectives per condition" + "### Visualize the jointly inferred network\n", + "\n", + "The plot shows the complete joint union. Shared reactions are gray, aerobic-specific reactions are blue, and anaerobic-specific reactions are red.\n", + "\n", + "| Usage group | Color |\n", + "|---|---|\n", + "| Shared | Gray |\n", + "| Glucose aerobic only | Blue |\n", + "| Glucose anaerobic only | Red |" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "3f372c79", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:37.032792Z", - "iopub.status.busy": "2026-02-15T11:15:37.032689Z", - "iopub.status.idle": "2026-02-15T11:15:37.037532Z", - "shell.execute_reply": "2026-02-15T11:15:37.037292Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingcondition_1_ratiocondition_2_ratio
0multi lambda=01.01.0
1multi lambda=0.51.00.2
2single lambda=0.51.01.0
\n", - "
" - ], - "text/plain": [ - " setting condition_1_ratio condition_2_ratio\n", - "0 multi lambda=0 1.0 1.0\n", - "1 multi lambda=0.5 1.0 0.2\n", - "2 single lambda=0.5 1.0 1.0" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "plot-joint-network", + "metadata": {}, + "outputs": [], "source": [ - "edge_index_by_id = {rid: i for i, rid in enumerate(all_edge_ids)}\n", + "group_colors = {\n", + " \"shared\": \"#b0b0b0\",\n", + " \"glucose aerobic only\": \"#277da1\",\n", + " \"glucose anaerobic only\": \"#e63946\",\n", + "}\n", + "\n", + "selected_reactions = np.flatnonzero(joint_union.to_numpy())\n", + "joint_network = G.edge_subgraph(selected_reactions)\n", + "edge_style = {}\n", "\n", + "for displayed_index, original_index in enumerate(selected_reactions):\n", + " reaction_id = reaction_ids[original_index]\n", + " group = reaction_groups[reaction_id]\n", + " edge_style[displayed_index] = {\n", + " \"color\": group_colors[group],\n", + " \"penwidth\": \"1.5\" if group == \"shared\" else \"4\",\n", + " }\n", + "\n", + "joint_network.plot(\n", + " graph_attr={\"rankdir\": \"LR\"},\n", + " node_attr={\n", + " \"fixedsize\": \"false\",\n", + " \"shape\": \"box\",\n", + " \"style\": \"rounded\",\n", + " \"margin\": \"0.05,0.03\",\n", + " },\n", + " custom_edge_attr=edge_style,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "interpretation-limitations", + "metadata": {}, + "source": [ + "## Interpretation and limitations\n", "\n", - "def manual_fit_ratio(problem, scores, condition=None, tol=1e-6):\n", - " flow = np.asarray(problem.expr.flow.value)\n", - " if condition is not None:\n", - " flow = flow[:, condition]\n", + "By fitting the conditions together, we can compare them against the same metabolic solution. The model reuses reactions when it can, but still keeps the respiratory pathway in the aerobic condition and fermentation in the anaerobic condition. This is different from averaging the expression profiles or comparing networks inferred in separate runs.\n", "\n", - " matched = 0.0\n", - " total = 0.0\n", - " for rid, score in scores.items():\n", - " i = edge_index_by_id[rid]\n", - " active = abs(float(flow[i])) > tol\n", - " weight = abs(float(score))\n", - " ok = (score > 0 and active) or (score < 0 and not active)\n", - " total += weight\n", - " if ok:\n", - " matched += weight\n", - " return matched / total if total > 0 else np.nan\n", + "The fit table is an important part of the biological interpretation. It shows where the expression data support the selected network and where the model cannot satisfy both the expression evidence and the metabolic constraints. Comparing the independent and joint fits also reveals whether a mismatch was already present in one condition or appeared when the conditions were analyzed together.\n", "\n", + "Keep in mind that RNA abundance does not directly measure enzyme activity or flux. Protein abundance, post-translational regulation, and metabolite-level control can all separate expression from metabolic activity. A mismatch is therefore something to investigate, not evidence for a particular regulatory mechanism.\n", "\n", - "manual_fit_table = pd.DataFrame(\n", - " [\n", - " {\n", - " \"setting\": \"multi lambda=0\",\n", - " \"condition_1_ratio\": manual_fit_ratio(P_multi_uncoupled, scores_condition_1, condition=0),\n", - " \"condition_2_ratio\": manual_fit_ratio(P_multi_uncoupled, scores_condition_2, condition=1),\n", - " },\n", - " {\n", - " \"setting\": \"multi lambda=0.5\",\n", - " \"condition_1_ratio\": manual_fit_ratio(P_multi_coupled, scores_condition_1, condition=0),\n", - " \"condition_2_ratio\": manual_fit_ratio(P_multi_coupled, scores_condition_2, condition=1),\n", - " },\n", - " {\n", - " \"setting\": \"single lambda=0.5\",\n", - " \"condition_1_ratio\": manual_fit_ratio(P_single_c1, scores_condition_1),\n", - " \"condition_2_ratio\": manual_fit_ratio(P_single_c2, scores_condition_2),\n", - " },\n", - " ]\n", - ")\n", + "In practice, it is worth checking different expression thresholds and comparing the joint result with the independently inferred networks. Shared reactions may still carry different fluxes—or even operate in opposite directions—and alternative solutions may exist. The choice of `lambda_reg` also matters: larger values favor more reaction reuse, but can eventually outweigh weaker expression evidence.\n", "\n", - "manual_fit_table" + "The synthetic profiles isolate the multi-condition formulation. For a workflow using measured expression data, continue with the [context-specific metabolic omics tutorial](../../tutorials/fba/context-specific-metabolic-omics.ipynb)." ] } ], "metadata": { "kernelspec": { - "display_name": "default", + "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.12" + "version": "3.11" } }, "nbformat": 4, diff --git a/docs/guide/metabolism/multicondition-sfba.ipynb b/docs/guide/metabolism/multicondition-sfba.ipynb index 93cbd34b7..44b3f30d2 100644 --- a/docs/guide/metabolism/multicondition-sfba.ipynb +++ b/docs/guide/metabolism/multicondition-sfba.ipynb @@ -2,321 +2,558 @@ "cells": [ { "cell_type": "markdown", - "id": "mc_sfba_01", + "id": "multicondition-introduction", "metadata": {}, "source": [ - "# Multi-condition sparse FBA\n", + "# Multi-condition FBA\n", "\n", - "This tutorial extends the sparse FBA workflow from `flux-balance-analysis.ipynb` to multiple conditions. We first solve standard multi-condition FBA to get each condition's optimal biomass. Then, as in single-condition sparse FBA, we constrain biomass to at least 90% of optimum and minimize the number of active reactions.\n", + "Multi-condition flux balance analysis represents several metabolic contexts in one optimization problem. Every condition has its own flux vector, reaction bounds, and objectives, so media, perturbations, or required phenotypes can differ while the underlying metabolic model remains the same.\n", "\n", - "To make the effect visible, we use a toy network where each condition has a small preference for a different branch." + "In CORNETO, `MultiSampleFBA.build_many` constructs this condition-by-reaction flux matrix directly. This supports two related uses:\n", + "\n", + "- solve and inspect several condition-specific FBA problems through one consistent interface;\n", + "- couple reaction selection across conditions to identify a compact shared program and the reactions needed by particular contexts.\n", + "\n", + "The second use is the main advantage of the multi-condition formulation: all conditions influence reaction selection before the networks are compared." + ] + }, + { + "cell_type": "markdown", + "id": "independent-and-coupled", + "metadata": {}, + "source": [ + "## Independent and coupled formulations\n", + "\n", + "Without regularization, the condition-specific flux vectors obey separate steady-state constraints and can be interpreted as several FBA problems built together. With `lambda_reg > 0`, CORNETO adds structured sparsity across the complete flux matrix.\n", + "\n", + "For each reaction, CORNETO records whether it is active in each condition and whether it is active in the union. A reaction used by one or several conditions contributes once to the union-level penalty. Reusing a reaction is therefore cheaper than introducing another alternative, while condition-specific reactions remain available when required by their bounds or phenotypes.\n", + "\n", + "Structured sparsity penalizes the union; it does not force identical fluxes and does not directly maximize the intersection. Shared and context-specific reactions are summaries derived from the jointly selected condition networks." + ] + }, + { + "cell_type": "markdown", + "id": "joint-versus-pairwise", + "metadata": {}, + "source": [ + "## Why is this different from pairwise comparisons?\n", + "\n", + "A metabolic model usually admits many equivalent or near-equivalent flux distributions. Consider an experiment with a control and two perturbed conditions, A and B. One common strategy is to run two independent optimizations:\n", + "\n", + "| Optimization | Condition-specific flux solutions | Reactions coupled by one union penalty |\n", + "|---|---|---|\n", + "| Separate analysis 1 | control and condition A | reactions used by control or A |\n", + "| Separate analysis 2 | a new control solution and condition B | reactions used by control or B |\n", + "\n", + "The media are not combined: every condition keeps its own bounds and flux vector. However, the control is solved twice, once inside each independent optimization. Its **selected control reaction set**—the reactions carrying flux in that solution—can differ between the two runs even though its bounds and required phenotype are unchanged.\n", + "\n", + "Comparing the two results afterward can therefore mix genuine biological differences with independent selection among alternative pathways. In a joint CORNETO analysis, one optimization contains one flux vector for control, one for A, and one for B, and applies a single union penalty across all three. The resulting shared and condition-dependent reaction sets are internally consistent with the complete experiment." + ] + }, + { + "cell_type": "markdown", + "id": "cobrapy-comparison", + "metadata": {}, + "source": [ + "## Relation to COBRApy\n", + "\n", + "COBRApy naturally solves FBA or pFBA independently for each medium. A user can reproduce joint selection by manually constructing a coupled mixed-integer formulation with optlang. CORNETO provides the condition-specific flux matrix and union-level structured sparsity directly through `MultiSampleFBA.build_many`." + ] + }, + { + "cell_type": "markdown", + "id": "shared-context-example", + "metadata": {}, + "source": [ + "## Example: shared and context-specific metabolism\n", + "\n", + "The [FBA guide](flux-balance-analysis.ipynb) showed how to solve several media conditions in one CORNETO problem. Here we use that interface to address a small biological question:\n", + "\n", + "> Which reactions form a compact metabolic program shared across metabolic conditions, and which reactions are required only in particular contexts?\n", + "\n", + "We will compare aerobic growth on glucose (the control), aerobic growth on acetate, and anaerobic growth on glucose in the COBRApy *E. coli* core model. The conditions are deliberately simple: they illustrate joint reaction selection rather than reproduce a particular experiment. After solving them jointly, reactions can be described as:\n", + "\n", + "- **shared core**: active in all conditions;\n", + "- **partially shared**: active in more than one condition, but not all;\n", + "- **context-specific**: active in exactly one condition;\n", + "- **union**: active in at least one condition." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_02", + "id": "load-model", "metadata": {}, "outputs": [], "source": [ + "from contextlib import redirect_stdout\n", + "from io import StringIO\n", + "\n", "import numpy as np\n", "import pandas as pd\n", + "from cobra.io import load_model\n", "\n", - "import corneto as cn\n", + "from corneto.io import cobra_model_to_graph\n", "from corneto.methods import MultiSampleFBA\n", "\n", - "cn.info()" + "with redirect_stdout(StringIO()):\n", + " cobra_model = load_model(\"textbook\")\n", + "\n", + "G = cobra_model_to_graph(cobra_model)\n", + "reaction_ids = list(G.get_attr_from_edges(\"id\"))\n", + "biomass_id = \"Biomass_Ecoli_core\"\n", + "biomass_index = reaction_ids.index(biomass_id)" + ] + }, + { + "cell_type": "markdown", + "id": "oxygen-conditions", + "metadata": {}, + "source": [ + "## Define the metabolic conditions\n", + "\n", + "The conditions change either the carbon source or oxygen availability. As in the previous guide, uptake is a negative exchange flux and `0` blocks uptake.\n", + "\n", + "| Condition | Glucose uptake | Acetate uptake | Oxygen uptake |\n", + "|---|---:|---:|---:|\n", + "| Glucose aerobic | −10 | 0 | −20 |\n", + "| Acetate aerobic | 0 | −10 | −20 |\n", + "| Glucose anaerobic | −10 | 0 | 0 |" ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_03", + "id": "condition-inputs", "metadata": {}, "outputs": [], "source": [ - "G = cn.Graph()\n", + "condition_names = [\"glucose aerobic\", \"acetate aerobic\", \"glucose anaerobic\"]\n", "\n", - "# Uptake\n", - "G.add_edge((), \"A\", id=\"EX_A\", default_lb=0, default_ub=10)\n", - "\n", - "# Two alternative branches\n", - "G.add_edge(\"A\", \"B\", id=\"R_AB\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"B\", \"C\", id=\"R_BC\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"A\", \"D\", id=\"R_AD\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"D\", \"C\", id=\"R_DC\", default_lb=0, default_ub=100)\n", - "\n", - "# Shared pathway to biomass\n", - "G.add_edge(\"C\", \"E\", id=\"R_CE\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"E\", \"F\", id=\"R_EF\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"F\", (), id=\"BIOMASS\", default_lb=0, default_ub=100)\n", + "media_bounds = {\n", + " \"glucose aerobic\": {\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_ac_e\": (0.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", + " },\n", + " \"acetate aerobic\": {\n", + " \"EX_glc__D_e\": (0.0, 1000.0),\n", + " \"EX_ac_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", + " },\n", + " \"glucose anaerobic\": {\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_ac_e\": (0.0, 1000.0),\n", + " \"EX_o2_e\": (0.0, 1000.0),\n", + " },\n", + "}\n", + "biomass_objectives = {name: {biomass_id: -1} for name in condition_names}" + ] + }, + { + "cell_type": "markdown", + "id": "maximum-biomass", + "metadata": {}, + "source": [ + "## Establish each condition's growth capacity\n", "\n", - "pd.DataFrame(\n", - " {\n", - " \"edge_index\": range(G.num_edges),\n", - " \"reaction_id\": [G.get_attr_edge(i).get(\"id\") for i in range(G.num_edges)],\n", - " }\n", - ")" + "First, standard multi-condition FBA determines the maximum biomass supported by each medium. At this stage the flux vectors share one problem object but are not coupled by sparsity." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_04", + "id": "solve-maximum-biomass", "metadata": {}, "outputs": [], "source": [ - "G.plot()" + "standard_problem = MultiSampleFBA().build_many(\n", + " G,\n", + " objectives=biomass_objectives,\n", + " reaction_bounds=media_bounds,\n", + ")\n", + "standard_problem.solve(solver=\"scipy\")\n", + "\n", + "maximum_biomass = pd.Series(\n", + " standard_problem.expr.flow.value[biomass_index, :],\n", + " index=condition_names,\n", + " name=\"maximum biomass\",\n", + ")\n", + "\n", + "assert (maximum_biomass > 0).all()\n", + "maximum_biomass.to_frame()" + ] + }, + { + "cell_type": "markdown", + "id": "sparse-setup", + "metadata": {}, + "source": [ + "## Require growth and favor a compact reaction union\n", + "\n", + "For this controlled comparison, biomass is fixed at exactly 90% of each condition's optimum. Pairwise and joint analyses therefore explain the same predefined phenotypes: network differences cannot be attributed to different achieved growth rates.\n", + "\n", + "`lambda_reg=0.1` penalizes reactions in the union of the selected condition networks. Because biomass is fixed, any positive regularization weight ranks feasible solutions by their union size instead of trading additional growth for sparsity.\n", + "\n", + "The two helpers below keep the scientific inputs visible: one builds a sparse problem for named conditions and the other labels its flux matrix." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_05", + "id": "sparse-helpers", "metadata": {}, "outputs": [], "source": [ - "def make_condition(preferred_branch):\n", - " # Main objective: maximize biomass (negative value because objectives are minimized).\n", - " sample = {\"BIOMASS\": {\"role\": \"objective\", \"value\": -1.0}}\n", - " # Small condition-specific preference for one branch.\n", - " sample[preferred_branch] = {\"role\": \"objective\", \"value\": -0.01}\n", - " return sample\n", + "biomass_fraction = 0.90\n", + "biomass_targets = biomass_fraction * maximum_biomass\n", + "activity_tolerance = 1e-6\n", "\n", "\n", - "condition_specs = {\n", - " \"condition_1\": make_condition(\"R_BC\"),\n", - " \"condition_2\": make_condition(\"R_DC\"),\n", - "}\n", + "def build_sparse_problem(names):\n", + " \"\"\"Build and solve sparse FBA for the requested conditions.\"\"\"\n", + " objectives = {name: biomass_objectives[name] for name in names}\n", + " bounds = {\n", + " name: {\n", + " **media_bounds[name],\n", + " biomass_id: (biomass_targets[name], biomass_targets[name]),\n", + " }\n", + " for name in names\n", + " }\n", + " problem = MultiSampleFBA(lambda_reg=0.1).build_many(\n", + " G,\n", + " objectives=objectives,\n", + " reaction_bounds=bounds,\n", + " )\n", + " problem.solve(solver=\"highs\")\n", + " return problem\n", + "\n", "\n", - "multi_data = cn.Data.from_cdict(condition_specs)\n", - "sample_names = list(condition_specs)" + "def labeled_fluxes(problem, names):\n", + " \"\"\"Return the solved flux matrix with reaction and condition labels.\"\"\"\n", + " return pd.DataFrame(\n", + " problem.expr.flow.value,\n", + " index=reaction_ids,\n", + " columns=names,\n", + " )" ] }, { "cell_type": "markdown", - "id": "mc_sfba_06", + "id": "separate-comparisons", "metadata": {}, "source": [ - "## Standard multi-condition FBA\n", + "## What happens in separate two-condition analyses?\n", "\n", - "We start with regular multi-condition FBA to obtain the maximal biomass in each condition. These values are later used as lower bounds for sparse FBA." + "First we build one optimization containing glucose-aerobic and acetate-aerobic flux vectors. Separately, we build another containing glucose-aerobic and glucose-anaerobic flux vectors. Each condition retains its own medium bounds; they are columns in the same optimization, not a combined medium.\n", + "\n", + "Because these are independent optimizations, glucose aerobic is solved twice. We compare the active reactions selected for that identical glucose-aerobic condition in the two results." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_07", + "id": "solve-pairs", "metadata": {}, "outputs": [], "source": [ - "idx = {rid: next(iter(G.get_edges_by_attr(\"id\", rid))) for rid in [\"BIOMASS\", \"R_AB\", \"R_AD\"]}\n", + "control_acetate_names = [\"glucose aerobic\", \"acetate aerobic\"]\n", + "control_anaerobic_names = [\"glucose aerobic\", \"glucose anaerobic\"]\n", "\n", - "P_opt = MultiSampleFBA(lambda_reg=0.0).build(G, multi_data)\n", - "P_opt.solve(solver=\"highs\")\n", + "control_acetate_problem = build_sparse_problem(control_acetate_names)\n", + "control_anaerobic_problem = build_sparse_problem(control_anaerobic_names)\n", "\n", - "biomass_opt = {name: float(P_opt.expr.flow[idx[\"BIOMASS\"], i].value) for i, name in enumerate(sample_names)}\n", + "control_acetate_fluxes = labeled_fluxes(control_acetate_problem, control_acetate_names)\n", + "control_anaerobic_fluxes = labeled_fluxes(control_anaerobic_problem, control_anaerobic_names)\n", "\n", - "pd.DataFrame(\n", + "pairwise_control_summary = pd.DataFrame(\n", " {\n", - " \"condition\": sample_names,\n", - " \"optimal_biomass\": [biomass_opt[name] for name in sample_names],\n", + " \"analyzed with acetate aerobic\": {\n", + " \"biomass\": control_acetate_fluxes.loc[biomass_id, \"glucose aerobic\"],\n", + " \"active reactions\": (\n", + " control_acetate_fluxes[\"glucose aerobic\"].abs() > activity_tolerance\n", + " ).sum(),\n", + " },\n", + " \"analyzed with glucose anaerobic\": {\n", + " \"biomass\": control_anaerobic_fluxes.loc[biomass_id, \"glucose aerobic\"],\n", + " \"active reactions\": (\n", + " control_anaerobic_fluxes[\"glucose aerobic\"].abs() > activity_tolerance\n", + " ).sum(),\n", + " },\n", " }\n", - ")" + ")\n", + "\n", + "assert np.isclose(pairwise_control_summary.loc[\"biomass\"].iloc[0], pairwise_control_summary.loc[\"biomass\"].iloc[1])\n", + "pairwise_control_summary" ] }, { - "cell_type": "markdown", - "id": "mc_sfba_08", + "cell_type": "code", + "execution_count": null, + "id": "compare-controls", "metadata": {}, + "outputs": [], "source": [ - "## Sparse FBA per condition (independent runs)\n", + "control_activity = pd.DataFrame(\n", + " {\n", + " \"analyzed with acetate aerobic\": (\n", + " control_acetate_fluxes[\"glucose aerobic\"].abs() > activity_tolerance\n", + " ),\n", + " \"analyzed with glucose anaerobic\": (\n", + " control_anaerobic_fluxes[\"glucose aerobic\"].abs() > activity_tolerance\n", + " ),\n", + " }\n", + ")\n", "\n", - "This mirrors the single-condition sparse FBA pattern from `flux-balance-analysis.ipynb`:\n", + "different_control_reactions = control_activity[\n", + " control_activity.iloc[:, 0] != control_activity.iloc[:, 1]\n", + "].copy()\n", + "different_control_reactions.insert(0, \"reaction\", different_control_reactions.index)\n", "\n", - "1. Solve standard FBA to get optimum biomass.\n", - "2. Add a biomass lower bound (90% of optimum).\n", - "3. Solve sparse FBA (`lambda_reg > 0`)." + "assert not different_control_reactions.empty\n", + "different_control_reactions.reset_index(drop=True)" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "mc_sfba_09", + "cell_type": "markdown", + "id": "pairwise-interpretation", "metadata": {}, - "outputs": [], "source": [ - "lambda_sparse = 0.15\n", - "biomass_fraction = 0.90\n", - "biomass_targets = {name: biomass_fraction * biomass_opt[name] for name in sample_names}\n", - "\n", - "single_sparse = {}\n", - "for name in sample_names:\n", - " d = cn.Data.from_cdict({name: condition_specs[name]})\n", - " P = MultiSampleFBA(lambda_reg=lambda_sparse).build(G, d)\n", - " P += P.expr.flow[idx[\"BIOMASS\"]] >= biomass_targets[name]\n", - " P.solve(solver=\"highs\")\n", - " single_sparse[name] = P" + "Both columns in the table describe the active reaction set for **glucose aerobic**, not the other condition in each analysis. Its medium and fixed biomass are identical in both runs, yet the selected reactions differ. The difference arises because each two-condition optimization can choose a different feasible pathway for glucose aerobic while minimizing its own reaction union. It is not a change in control biology. A post-hoc comparison cannot distinguish this optimization variability from genuine context specificity." ] }, { "cell_type": "markdown", - "id": "mc_sfba_10", + "id": "joint-analysis", "metadata": {}, "source": [ - "## Coupled multi-condition sparse FBA\n", + "## Solve all conditions jointly\n", "\n", - "Now we solve both conditions together with structured sparsity. The same biomass lower bounds are enforced, but regularization is applied jointly across conditions." + "We now place all three condition-specific flux vectors in one optimization. Glucose aerobic appears only once, alongside acetate aerobic and glucose anaerobic, and a single reaction-union penalty couples the three solutions." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_11", + "id": "solve-joint", "metadata": {}, "outputs": [], "source": [ - "P_multi_sparse = MultiSampleFBA(lambda_reg=lambda_sparse).build(G, multi_data)\n", - "for i, name in enumerate(sample_names):\n", - " P_multi_sparse += P_multi_sparse.expr.flow[idx[\"BIOMASS\"], i] >= biomass_targets[name]\n", - "P_multi_sparse.solve(solver=\"highs\")" + "joint_problem = build_sparse_problem(condition_names)\n", + "joint_fluxes = labeled_fluxes(joint_problem, condition_names)\n", + "joint_activity = joint_fluxes.abs() > activity_tolerance\n", + "\n", + "condition_summary = pd.DataFrame(\n", + " {\n", + " \"biomass target\": biomass_targets,\n", + " \"solved biomass\": joint_fluxes.loc[biomass_id],\n", + " \"active reactions\": joint_activity.sum(axis=0),\n", + " }\n", + ")\n", + "\n", + "assert (condition_summary[\"solved biomass\"] >= condition_summary[\"biomass target\"] - 1e-7).all()\n", + "condition_summary" ] }, { "cell_type": "markdown", - "id": "mc_sfba_12", + "id": "classify-reactions", "metadata": {}, "source": [ - "## Compare independent vs coupled sparse solutions" + "### Shared and context-specific reaction usage\n", + "\n", + "The activity matrix has one Boolean column per condition. Counting active columns assigns every reaction in the union to exactly one usage category." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_13", + "id": "reaction-usage", "metadata": {}, "outputs": [], "source": [ - "edge_ids = [G.get_attr_edge(i).get(\"id\") for i in range(G.num_edges)]\n", - "\n", - "\n", - "def active_ids(problem, condition=None, tol=1e-6):\n", - " flow = np.asarray(problem.expr.flow.value)\n", - " if condition is not None:\n", - " flow = flow[:, condition]\n", - " return {edge_ids[i] for i in np.where(np.abs(flow) > tol)[0]}\n", - "\n", - "\n", - "def branch_label(ab_flux, ad_flux, tol=1e-6):\n", - " ab_on = abs(float(ab_flux)) > tol\n", - " ad_on = abs(float(ad_flux)) > tol\n", - " if ab_on and not ad_on:\n", - " return \"branch_1 (A->B->C)\"\n", - " if ad_on and not ab_on:\n", - " return \"branch_2 (A->D->C)\"\n", - " if ab_on and ad_on:\n", - " return \"both\"\n", - " return \"none\"\n", - "\n", - "\n", - "rows = []\n", - "for i, name in enumerate(sample_names):\n", - " P_single = single_sparse[name]\n", - " rows.append(\n", - " {\n", - " \"setting\": f\"single sparse ({name})\",\n", - " \"selected_branch\": branch_label(\n", - " P_single.expr.flow[idx[\"R_AB\"]].value, P_single.expr.flow[idx[\"R_AD\"]].value\n", - " ),\n", - " \"biomass\": float(P_single.expr.flow[idx[\"BIOMASS\"]].value),\n", - " \"active_reactions\": len(active_ids(P_single)),\n", - " }\n", - " )\n", - " rows.append(\n", - " {\n", - " \"setting\": f\"multi sparse coupled ({name})\",\n", - " \"selected_branch\": branch_label(\n", - " P_multi_sparse.expr.flow[idx[\"R_AB\"], i].value, P_multi_sparse.expr.flow[idx[\"R_AD\"], i].value\n", - " ),\n", - " \"biomass\": float(P_multi_sparse.expr.flow[idx[\"BIOMASS\"], i].value),\n", - " \"active_reactions\": len(active_ids(P_multi_sparse, condition=i)),\n", - " }\n", - " )\n", + "active_condition_count = joint_activity.sum(axis=1)\n", + "joint_union = active_condition_count > 0\n", "\n", - "comparison = pd.DataFrame(rows)\n", - "comparison" + "reaction_usage = pd.DataFrame(\n", + " {\n", + " \"reaction\": joint_activity.index[joint_union],\n", + " \"active in\": [\n", + " \", \".join(joint_activity.columns[row])\n", + " for row in joint_activity.loc[joint_union].to_numpy()\n", + " ],\n", + " \"category\": np.select(\n", + " [\n", + " active_condition_count[joint_union] == len(condition_names),\n", + " active_condition_count[joint_union] == 1,\n", + " ],\n", + " [\"shared core\", \"context-specific\"],\n", + " default=\"partially shared\",\n", + " ),\n", + " }\n", + ")\n", + "\n", + "category_counts = reaction_usage[\"category\"].value_counts().rename(\"reactions\")\n", + "expected_categories = {\"shared core\", \"partially shared\", \"context-specific\"}\n", + "\n", + "assert set(reaction_usage[\"category\"]) == expected_categories\n", + "assert int(category_counts.sum()) == int(joint_union.sum())\n", + "category_counts.to_frame()" ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_14", + "id": "usage-patterns", "metadata": {}, "outputs": [], "source": [ - "single_union = set().union(*(active_ids(single_sparse[name]) for name in sample_names))\n", - "multi_union = set().union(*(active_ids(P_multi_sparse, condition=i) for i in range(len(sample_names))))\n", - "\n", - "summary = pd.DataFrame(\n", - " [\n", - " {\n", - " \"single_sparse_union\": len(single_union),\n", - " \"multi_sparse_union\": len(multi_union),\n", - " \"union_reduction\": len(single_union) - len(multi_union),\n", - " }\n", - " ]\n", + "usage_patterns = (\n", + " reaction_usage.groupby([\"category\", \"active in\"], sort=False)\n", + " .agg(\n", + " reactions=(\"reaction\", \"size\"),\n", + " examples=(\"reaction\", lambda values: \", \".join(values.iloc[:6])),\n", + " )\n", + " .reset_index()\n", ")\n", + "usage_patterns" + ] + }, + { + "cell_type": "markdown", + "id": "biological-interpretation", + "metadata": {}, + "source": [ + "### Biological interpretation\n", + "\n", + "The selected groups recover recognizable metabolic adaptations rather than isolated reactions:\n", + "\n", + "| Usage pattern | Representative selected reactions | Interpretation |\n", + "|---|---|---|\n", + "| Glucose anaerobic only | `ACALD`, `ALCD2x`, `ETOHt2r`, `EX_etoh_e` | A complete ethanol-fermentation route, from acetyl-CoA reduction to ethanol secretion, that supports redox balancing without respiration. |\n", + "| Acetate aerobic only | `ICL`, `MALS`, `FBP`, `PPCK`, `NADTRHD` | The glyoxylate shunt and gluconeogenesis conserve acetate carbon and produce biomass precursors; transhydrogenase contributes cofactor balancing. |\n", + "| Both aerobic conditions | `CYTBD`, `NADH16`, `EX_o2_e`, `AKGDH` | Oxygen uptake together with respiratory-chain and TCA-cycle activity shared by aerobic growth. |\n", "\n", - "# Expected in this setup: coupled sparse FBA uses fewer reactions in the union across conditions.\n", - "assert len(multi_union) < len(single_union)\n", + "These are interpretations of one sparse model solution, not evidence that the reactions are biologically exclusive to those conditions.\n", "\n", - "summary" + "> **Activity does not imply the same flux direction.** The categories above use `abs(flux) > activity_tolerance`. A reaction shared by two conditions may run in opposite directions or serve different roles. For example, the acetate transport and exchange reactions shared by acetate-aerobic and glucose-anaerobic solutions support acetate uptake in one context and acetate production or secretion in the other. Here, **shared** means that the same reaction is active—not that its direction, flux magnitude, or physiological role is identical." + ] + }, + { + "cell_type": "markdown", + "id": "network-visualization", + "metadata": {}, + "source": [ + "### Visualize the joint metabolic program\n", + "\n", + "The plot shows the complete reaction union. Shared-core reactions are gray and de-emphasized; colored reactions show how the core is adapted to carbon source and oxygen availability.\n", + "\n", + "| Active conditions | Color |\n", + "|---|---|\n", + "| All conditions | Gray |\n", + "| Both aerobic conditions | Blue |\n", + "| Both glucose conditions | Green |\n", + "| Acetate aerobic and glucose anaerobic | Purple |\n", + "| Acetate aerobic only | Orange |\n", + "| Glucose anaerobic only | Red |" ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_15", + "id": "plot-joint-network", "metadata": {}, "outputs": [], "source": [ - "pd.DataFrame(\n", - " {\n", - " \"single_sparse_union\": pd.Series(sorted(single_union)),\n", - " \"multi_sparse_union\": pd.Series(sorted(multi_union)),\n", + "reaction_groups = reaction_usage.set_index(\"reaction\")[\"active in\"].replace(\n", + " {\", \".join(condition_names): \"shared core\"}\n", + ")\n", + "\n", + "group_colors = {\n", + " \"shared core\": \"#b0b0b0\",\n", + " \"glucose aerobic, acetate aerobic\": \"#277da1\",\n", + " \"glucose aerobic, glucose anaerobic\": \"#43aa8b\",\n", + " \"acetate aerobic, glucose anaerobic\": \"#7b2cbf\",\n", + " \"acetate aerobic\": \"#f8961e\",\n", + " \"glucose anaerobic\": \"#e63946\",\n", + "}\n", + "\n", + "selected_reactions = np.flatnonzero(joint_union.to_numpy())\n", + "joint_network = G.edge_subgraph(selected_reactions)\n", + "edge_style = {}\n", + "\n", + "for displayed_index, original_index in enumerate(selected_reactions):\n", + " reaction_id = reaction_ids[original_index]\n", + " group = reaction_groups[reaction_id]\n", + " is_shared_core = group == \"shared core\"\n", + "\n", + " edge_style[displayed_index] = {\n", + " \"color\": group_colors[group],\n", + " \"penwidth\": \"1.5\" if is_shared_core else \"3\",\n", " }\n", + "\n", + "joint_network.plot(\n", + " graph_attr={\"rankdir\": \"LR\"},\n", + " node_attr={\n", + " \"fixedsize\": \"false\",\n", + " \"shape\": \"box\",\n", + " \"style\": \"rounded\",\n", + " \"margin\": \"0.05,0.03\",\n", + " },\n", + " custom_edge_attr=edge_style,\n", ")" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "mc_sfba_16", + "cell_type": "markdown", + "id": "compare-unions", "metadata": {}, - "outputs": [], "source": [ - "active_multi_c1 = np.abs(P_multi_sparse.expr.flow.value[:, 0]) > 1e-6\n", - "active_multi_c2 = np.abs(P_multi_sparse.expr.flow.value[:, 1]) > 1e-6\n", + "### Compare the selected unions\n", "\n", - "G.edge_subgraph(active_multi_c1).plot(graph_attr={\"rankdir\": \"LR\", \"center\": \"1\"})" + "The aggregate from the separate analyses includes every reaction selected in either two-condition optimization, including both alternative glucose-aerobic reaction sets. The joint analysis instead selects one reaction union while considering all three conditions simultaneously." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_17", + "id": "union-comparison", "metadata": {}, "outputs": [], "source": [ - "G.edge_subgraph(active_multi_c2).plot(graph_attr={\"rankdir\": \"LR\", \"center\": \"1\"})" + "pairwise_activity = pd.concat(\n", + " [\n", + " control_acetate_fluxes.abs() > activity_tolerance,\n", + " control_anaerobic_fluxes.abs() > activity_tolerance,\n", + " ],\n", + " axis=1,\n", + ")\n", + "pairwise_union = pairwise_activity.any(axis=1)\n", + "\n", + "union_comparison = pd.Series(\n", + " {\n", + " \"aggregate union from separate comparisons\": int(pairwise_union.sum()),\n", + " \"union from one joint analysis\": int(joint_union.sum()),\n", + " },\n", + " name=\"active reactions\",\n", + ")\n", + "\n", + "assert joint_union.sum() < pairwise_union.sum()\n", + "union_comparison.to_frame()" ] }, { "cell_type": "markdown", - "id": "mc_sfba_18", + "id": "interpretation-limitations", "metadata": {}, "source": [ - "In this toy example, independent sparse runs choose different branches, while the coupled multi-condition sparse run aligns branch usage and reduces the union of active reactions across conditions." + "## Interpretation and limitations\n", + "\n", + "The joint result provides one internally consistent reference across all three conditions. Reactions in the shared core support every selected state; partially shared and context-specific reactions describe how that core is adapted to carbon source and oxygen availability. Because a reused reaction contributes once to the union penalty, alternative pathways are selected consistently instead of independently in each comparison.\n", + "\n", + "These conditions are designed to illustrate joint reaction selection. The resulting shared and context-specific sets are properties of this model and formulation, not experimental evidence of pathway activity. Structured sparsity assumes that reusing reactions is preferable when several feasible explanations exist, and alternative joint optima may still exist.\n", + "\n", + "Continue with [gene expression integration](imat.ipynb) to learn how expression evidence selects a feasible metabolic state for one condition. The following [Multi-condition iMAT](multicondition-imat.ipynb) guide will extend that formulation across several contexts." ] } ], @@ -337,19 +574,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": false } }, "nbformat": 4, diff --git a/tests/methods/test_user_inputs.py b/tests/methods/test_user_inputs.py index 4093c3717..10edfde9b 100644 --- a/tests/methods/test_user_inputs.py +++ b/tests/methods/test_user_inputs.py @@ -102,13 +102,32 @@ def test_imat_separates_objectives_and_expression(backend): } gene_method = MultiSampleIMAT(backend=backend) - gene_method.build(model, gene_expression={"G1": 2}, objectives={"R1": -1}) + gene_method.build( + model, + gene_expression={"G1": 2}, + objectives={"R1": -1}, + reaction_bounds={"R1": (1, 8)}, + ) gene_feature = next( feature for feature in gene_method.processed_data.samples["condition"].features if feature.id == "R1" ) assert gene_feature.data["role"] == "objective" assert gene_feature.data["imat_score"] == 2.0 + bounded_gene_method = MultiSampleIMAT(backend=backend) + bounded_gene_method.build( + model, + gene_expression={"G1": 2}, + reaction_bounds={"R1": (1, 8)}, + ) + bounded_gene_feature = next( + feature for feature in bounded_gene_method.processed_data.samples["condition"].features if feature.id == "R1" + ) + assert bounded_gene_feature.data["role"] == "expression" + assert bounded_gene_feature.data["value"] == 2.0 + assert bounded_gene_feature.data["lower_bound"] == 1.0 + assert bounded_gene_feature.data["upper_bound"] == 8.0 + many = MultiSampleIMAT(backend=backend) many.build_many( model, From 326877db69aa4b5e2547b682c827fb270a37fa89 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Thu, 30 Jul 2026 19:27:56 +0200 Subject: [PATCH 03/13] feat(signaling): reimplement CellNOpt ILP Rebuild CellNOpt inference around vectorized Boolean propagation, shared structural flow, and acyclic connectivity. Add CORNETO-integrated model and fit plotting, renderer improvements, outcome-based tests, and an executable signaling guide. Co-authored-by: Attila Gabor <3891745+gabora@users.noreply.github.com> Co-authored-by: Martin Garrido Rodriguez-Cordoba <61513563+martingarridorc@users.noreply.github.com> --- README.md | 2 + corneto/_plotting.py | 309 +- corneto/methods/signal/cellnopt_ilp.py | 17 +- corneto/methods/signaling/__init__.py | 13 + corneto/methods/signaling/cellnopt_ilp.py | 1243 +++--- .../methods/signaling/cellnopt_plotting.py | 880 ++++ docs/api/corneto.methods.rst | 18 +- docs/guide/signaling/cellnopt_ILP.ipynb | 3769 +++++++++-------- docs/install.md | 2 + pyproject.toml | 5 + tests/graph/test_plotting.py | 86 +- tests/methods/signaling/test_cellnopt_ilp.py | 314 +- .../signaling/test_cellnopt_plotting.py | 269 ++ tests/test_deprecations.py | 5 +- 14 files changed, 4473 insertions(+), 2459 deletions(-) create mode 100644 corneto/methods/signaling/cellnopt_plotting.py create mode 100644 tests/methods/signaling/test_cellnopt_plotting.py diff --git a/README.md b/README.md index bb697839e..587dac6fb 100644 --- a/README.md +++ b/README.md @@ -61,12 +61,14 @@ pip install corneto CORNETO provides several optional dependency groups: +- **`plot`**: Graphviz, NetworkX, and Matplotlib visualization support - **`research`**: Full research stack with Gurobi, PICOS, visualization, and network tools - **`os`**: Open-source solvers (SCIP, HiGHS) with visualization and network tools - **`ml`**: Machine learning dependencies (JAX, Keras, scikit-learn) Install any combination with: ```bash +pip install corneto[plot] # Visualization without the full research stack pip install corneto[research,ml] # Multiple extras ``` diff --git a/corneto/_plotting.py b/corneto/_plotting.py index 9e4b08a2e..8bf7a7751 100644 --- a/corneto/_plotting.py +++ b/corneto/_plotting.py @@ -60,6 +60,52 @@ def _as_values(value: Any) -> Optional[np.ndarray]: return np.array(value) +def _scaled_magnitudes( + values: Any, + *, + zero_threshold: float = 1e-6, + scale: Optional[str] = "log", + clip_quantile: Optional[float] = 0.05, +) -> np.ndarray: + """Return finite edge magnitudes normalized to ``[0, 1]``. + + Zeros remain zero, including after quantile clipping. ``clip_quantile`` is + the fraction clipped from the upper tail, matching the historical plotting + option while avoiding lower-tail inflation of small or zero values. + """ + array = np.asarray(values, dtype=float) + if array.ndim != 1: + raise ValueError(f"Plot values must be one-dimensional; got shape {array.shape}.") + if not np.all(np.isfinite(array)): + raise ValueError("Plot values must be finite.") + if zero_threshold < 0: + raise ValueError("zero_threshold must be nonnegative.") + + magnitudes = np.abs(array) + magnitudes[magnitudes < zero_threshold] = 0.0 + if scale == "log": + magnitudes = np.log1p(magnitudes) + elif scale == "std": + std = float(np.std(magnitudes)) + if std > 0: + magnitudes = magnitudes / std + elif scale is not None: + raise ValueError(f"Unknown scale '{scale}'. Use None, 'log', or 'std'.") + + nonzero = magnitudes > 0 + if clip_quantile is not None: + if not 0 <= clip_quantile <= 1: + raise ValueError(f"Clipping value must be between 0 and 1, got {clip_quantile}") + if np.any(nonzero): + upper = float(np.quantile(magnitudes[nonzero], 1 - clip_quantile)) + magnitudes[nonzero] = np.minimum(magnitudes[nonzero], upper) + + maximum = float(np.max(magnitudes)) if magnitudes.size else 0.0 + if maximum <= 0: + return np.zeros_like(magnitudes) + return magnitudes / maximum + + def _processor_sign_magnitude(graph: BaseGraph, data: Dict[str, Any], theme: Theme) -> ProcessorOutput: edge_attrs: Dict[int, Dict[str, str]] = {} vertex_attrs: Dict[Union[int, str], Dict[str, str]] = {} @@ -101,28 +147,21 @@ def _processor_metabolism_flux(graph: BaseGraph, data: Dict[str, Any], theme: Th scale = data.get("scale", "log") clip_quantil = data.get("clip_quantil", 0.05) - flow = np.array(flux_values, dtype=float) - flow[np.abs(flow) < zero_flow_threshold] = 0 - if scale is not None: - if scale == "log": - flow = np.sign(flow) * np.log10(np.abs(flow) + 1.0) - elif scale == "std": - std = float(np.std(flow)) - if std > 0: - flow = flow / std - else: - raise ValueError(f"Unknown scale '{scale}'. Use None, 'log', or 'std'.") - if clip_quantil is not None: - flow = clip_quantiles(flow, float(clip_quantil)) - max_flow = max(float(np.max(np.abs(flow))), 1e-6) + flow = np.asarray(flux_values, dtype=float) + magnitudes = _scaled_magnitudes( + flow, + zero_threshold=zero_flow_threshold, + scale=scale, + clip_quantile=None if clip_quantil is None else float(clip_quantil), + ) min_w = float(theme["min_edge_width"]) max_w = float(theme["max_edge_width"]) - for i, v in enumerate(flow): + for i, (v, magnitude) in enumerate(zip(flow, magnitudes)): if scale is None: - edge_width = max_w if abs(v) > 0 else min_w + edge_width = max_w if magnitude > 0 else min_w else: - edge_width = min_w + (max_w - min_w) * abs(v / max_flow) + edge_width = min_w + (max_w - min_w) * magnitude edge_attrs[i] = {"penwidth": str(edge_width)} if v > 0: edge_attrs[i]["color"] = str(theme["positive_color"]) @@ -236,6 +275,59 @@ def _merge_solution_data( return merged +def _resolve_sample_index( + sample: Optional[Union[int, str]], + *, + feature_data: Any, + num_samples: int, +) -> Optional[int]: + if sample is None: + return None + if isinstance(sample, int): + if sample < 0 or sample >= num_samples: + raise ValueError(f"sample index {sample} out of range for {num_samples} samples.") + return sample + samples = getattr(feature_data, "samples", None) + if samples is None: + raise ValueError("A string sample requires feature_data with named samples.") + names = list(samples) + if sample not in samples: + raise ValueError(f"sample '{sample}' not found in feature_data samples.") + index = names.index(sample) + if index >= num_samples: + raise ValueError(f"sample '{sample}' maps to column {index}, but solution data has only {num_samples} columns.") + return index + + +def _select_solution_sample( + data: Dict[str, Any], + *, + sample: Optional[Union[int, str]], + feature_data: Any, +) -> Dict[str, Any]: + selected = dict(data) + for key in ("vertex_values", "edge_values", "flux_values"): + if key not in selected: + continue + values = _as_values(selected[key]) + if values is None or values.ndim <= 1: + continue + if values.ndim != 2: + raise ValueError(f"Plot data '{key}' must be a vector or matrix; got shape {values.shape}.") + if values.shape[1] == 1 and sample is None: + selected[key] = values[:, 0] + continue + index = _resolve_sample_index( + sample, + feature_data=feature_data, + num_samples=values.shape[1], + ) + if index is None: + raise ValueError(f"Plot data '{key}' contains {values.shape[1]} samples; select one with sample=.") + selected[key] = values[:, index] + return selected + + def _resolve_role_styles( preset: Optional[str], role_styles: Optional[Dict[str, Union[str, Dict[str, str]]]], @@ -348,27 +440,144 @@ def _merge_attrs( def _plot_with_networkx(graph: BaseGraph, **kwargs) -> Any: - import matplotlib.pyplot as plt - import networkx as nx - - from corneto.contrib.networkx import corneto_graph_to_networkx - - skip_unsupported_edges = bool(kwargs.get("skip_unsupported_edges", True)) - nx_graph = corneto_graph_to_networkx(graph, skip_unsupported_edges=skip_unsupported_edges) + try: + import matplotlib.colors as mcolors + import matplotlib.pyplot as plt + import networkx as nx + except ImportError as exc: + raise ImportError( + "The NetworkX renderer requires optional plotting dependencies. " + "Install CORNETO with `pip install 'corneto[plot]'`." + ) from exc + + model_keys = { + "graph_attr", + "node_attr", + "edge_attr", + "custom_edge_attr", + "custom_vertex_attr", + "edge_indexes", + "orphan_edges", + } + model = _build_plot_model(graph, **{key: kwargs[key] for key in model_keys if key in kwargs}) + nx_graph = nx.MultiDiGraph() + node_defaults = dict(model["node_defaults"] or {}) + edge_defaults = dict(model["edge_attr"] or {}) + for name, attrs in model["nodes"]: + merged = dict(node_defaults) + merged.update(attrs) + nx_graph.add_node(name, **merged) + for edge_index, (source, target, attrs) in enumerate(model["edges"]): + merged = dict(edge_defaults) + merged.update(attrs) + nx_graph.add_edge(source, target, key=edge_index, **merged) pos = kwargs.get("pos") - if pos is None: - pos = nx.spring_layout(nx_graph) + if pos is not None: + pos = {str(key): value for key, value in pos.items()} + else: + pos = nx.spring_layout(nx_graph, seed=kwargs.get("seed", 0)) ax = kwargs.get("ax") if ax is None: - fig, ax = plt.subplots(figsize=kwargs.get("figsize")) + fig, ax = plt.subplots(figsize=kwargs.get("figsize"), constrained_layout=True) else: fig = ax.figure - nx.draw_networkx(nx_graph, pos=pos, ax=ax, with_labels=kwargs.get("node_labels") is None) - if kwargs.get("node_labels") is not None: - nx.draw_networkx_labels(nx_graph, pos=pos, labels=kwargs["node_labels"], ax=ax) + graphviz_colors = { + "firebrick4": "#8b1a1a", + "dodgerblue4": "#00688b", + "olivedrab3": "#9acd32", + "orangered": "#ff4500", + } + + def mpl_color(value: Any, default: str) -> str: + color = str(value or default) + color = graphviz_colors.get(color.lower(), color) + return color if mcolors.is_color_like(color) else default + + shape_map = { + "box": "s", + "rect": "s", + "rectangle": "s", + "square": "s", + "diamond": "D", + "triangle": "^", + "point": ".", + "circle": "o", + "ellipse": "o", + } + grouped_nodes: Dict[str, List[str]] = {} + for node, attrs in nx_graph.nodes(data=True): + shape = shape_map.get(str(attrs.get("shape", "circle")).lower(), "o") + grouped_nodes.setdefault(shape, []).append(node) + for shape, nodes in grouped_nodes.items(): + attrs = [nx_graph.nodes[node] for node in nodes] + sizes = [float(attr.get("nodesize", 60 if shape == "." else 900)) for attr in attrs] + nx.draw_networkx_nodes( + nx_graph, + pos, + nodelist=nodes, + node_shape=shape, + node_size=sizes, + node_color=[ + mpl_color(attr.get("fillcolor"), "white") if "filled" in str(attr.get("style", "")) else "white" + for attr in attrs + ], + edgecolors=[mpl_color(attr.get("color"), "black") for attr in attrs], + linewidths=[float(attr.get("penwidth", 1.0)) for attr in attrs], + ax=ax, + ) + + for source, target, key, attrs in nx_graph.edges(keys=True, data=True): + style = str(attrs.get("style", "solid")).split(",")[0] + arrowhead = str(attrs.get("arrowhead", "normal")) + arrowstyle = "-[" if arrowhead == "tee" else ("-" if arrowhead == "none" else "-|>") + nx.draw_networkx_edges( + nx_graph, + pos, + edgelist=[(source, target, key)], + edge_color=mpl_color(attrs.get("color"), "black"), + width=float(attrs.get("penwidth", 1.0)), + style=style if style in {"solid", "dashed", "dotted", "dashdot"} else "solid", + arrows=arrowhead != "none", + arrowstyle=arrowstyle, + connectionstyle="arc3,rad=0.05", + ax=ax, + ) + + requested_labels = kwargs.get("node_labels") + if requested_labels is not None: + requested_labels = {str(node): label for node, label in requested_labels.items()} + labels = {} + for node, attrs in nx_graph.nodes(data=True): + if requested_labels is not None: + labels[node] = requested_labels.get(node, node) + else: + labels[node] = attrs.get("label", node) + font_colors = {mpl_color(attrs.get("fontcolor"), "black") for _, attrs in nx_graph.nodes(data=True)} + nx.draw_networkx_labels( + nx_graph, + pos, + labels=labels, + font_color=next(iter(font_colors)) if len(font_colors) == 1 else "black", + font_size=kwargs.get("font_size", 9), + ax=ax, + ) + + edge_labels = { + (source, target, key): attrs["label"] + for source, target, key, attrs in nx_graph.edges(keys=True, data=True) + if attrs.get("label") not in (None, "") + } + if edge_labels: + nx.draw_networkx_edge_labels( + nx_graph, + pos, + edge_labels=edge_labels, + font_size=kwargs.get("edge_font_size", 8), + ax=ax, + ) ax.set_axis_off() return fig @@ -410,6 +619,7 @@ def plot_graph(graph: BaseGraph, renderer: str = "auto", **kwargs) -> Any: if solution_map is not None: merged_solution_map.update(solution_map) data = _merge_solution_data(data, solution, merged_solution_map) + data = _select_solution_sample(data, sample=sample, feature_data=feature_data) if node_roles is None and feature_data is not None: node_roles = _infer_node_roles_from_feature_data(feature_data, sample=sample, role_key=role_key) @@ -613,27 +823,22 @@ def flow_style( scale: Optional[Literal["log", "std"]] = "log", clip_quantil: Optional[float] = 0.05, ): - flow = np.array(P.expr[flow_name].value) - flow[np.abs(flow) < zero_flow_threshold] = 0 - if scale is not None: - if scale == "log": - flow = np.sign(flow) * np.log10(np.abs(flow) + 1.0) - elif scale == "std": - flow = flow / np.std(flow) - else: - raise ValueError(f"Unknown normalization method: {scale}") - if clip_quantil is not None: - flow = clip_quantiles(flow, clip_quantil) - max_flow = max(np.max(np.abs(flow)), 1e-6) + flow = np.asarray(P.expr[flow_name].value, dtype=float) + magnitudes = _scaled_magnitudes( + flow, + zero_threshold=zero_flow_threshold, + scale=scale, + clip_quantile=clip_quantil, + ) edge_attrs = dict() - for i, v in enumerate(flow): + for i, (v, magnitude) in enumerate(zip(flow, magnitudes)): # Apply threshold edge width - if abs(v) > 0: + if magnitude > 0: edge_width = max_edge_width else: edge_width = min_edge_width if scale is not None: - edge_width = min_edge_width + (max_edge_width - min_edge_width) * abs(v / max_flow) + edge_width = min_edge_width + (max_edge_width - min_edge_width) * magnitude edge_attrs[i] = {"penwidth": str(edge_width)} if flow[i] > 0: edge_attrs[i]["color"] = positive_color @@ -726,6 +931,8 @@ def _build_plot_model( edges: List[Tuple[str, str, Dict[str, str]]] = [] is_hypergraph = False + included_nodes = set() + connected_nodes = {str(vertex) for source, target in graph.E for vertex in (*source, *target)} for i, e in enumerate(graph.edges()): if edge_indexes is not None and i not in edge_indexes: continue @@ -743,6 +950,7 @@ def add_node(v_name: str, default_shape: str) -> None: if v_name in custom_vertex_attr_str: attrs.update(custom_vertex_attr_str[v_name]) nodes.append((v_name, attrs)) + included_nodes.add(v_name) if len(s) == 0: v_name = f"e_{i}_source" @@ -785,6 +993,17 @@ def add_node(v_name: str, default_shape: str) -> None: attrs.update(custom_edge_attr.get(i, {})) edges.append((v_s[0], v_t[0], attrs)) + for vertex in graph.V: + vertex_name = str(vertex) + if vertex_name in included_nodes or vertex_name in connected_nodes: + continue + attrs = {} + if "shape" not in node_defaults: + attrs["shape"] = "circle" + if vertex_name in custom_vertex_attr_str: + attrs.update(custom_vertex_attr_str[vertex_name]) + nodes.append((vertex_name, attrs)) + return { "graph_attr": graph_attr, "node_defaults": node_defaults, diff --git a/corneto/methods/signal/cellnopt_ilp.py b/corneto/methods/signal/cellnopt_ilp.py index 63941b6ce..b73964a02 100644 --- a/corneto/methods/signal/cellnopt_ilp.py +++ b/corneto/methods/signal/cellnopt_ilp.py @@ -1,17 +1,8 @@ -"""Deprecated compatibility imports for the CellNOpt ILP implementation.""" +"""Deprecated import path for the CellNOpt ILP implementation.""" from corneto.methods.signaling.cellnopt_ilp import ( - cellnoptILP, - cno_style, - expand_graph_for_flows, - plot_data, - plot_fitness, + BooleanReaction, + CellNOptILP, ) -__all__ = [ - "cellnoptILP", - "cno_style", - "expand_graph_for_flows", - "plot_data", - "plot_fitness", -] +__all__ = ["BooleanReaction", "CellNOptILP"] diff --git a/corneto/methods/signaling/__init__.py b/corneto/methods/signaling/__init__.py index 1ba1a1b95..964070e6e 100644 --- a/corneto/methods/signaling/__init__.py +++ b/corneto/methods/signaling/__init__.py @@ -1 +1,14 @@ """Signaling-network inference methods.""" + +from corneto.methods.signaling.cellnopt_ilp import BooleanReaction, CellNOptILP +from corneto.methods.signaling.cellnopt_plotting import ( + plot_cellnopt_fit, + plot_cellnopt_model, +) + +__all__ = [ + "BooleanReaction", + "CellNOptILP", + "plot_cellnopt_fit", + "plot_cellnopt_model", +] diff --git a/corneto/methods/signaling/cellnopt_ilp.py b/corneto/methods/signaling/cellnopt_ilp.py index 942c66144..fbb157332 100644 --- a/corneto/methods/signaling/cellnopt_ilp.py +++ b/corneto/methods/signaling/cellnopt_ilp.py @@ -1,620 +1,691 @@ -"""CellNOpt integer-linear programming method and visualization helpers.""" +"""Flow-based Boolean network inference in the style of CellNOpt.""" + +from __future__ import annotations import re -from typing import Literal, Optional +from dataclasses import dataclass +from numbers import Real +from typing import Any, Optional import numpy as np - -__all__ = [ - "cellnoptILP", - "cno_style", - "expand_graph_for_flows", - "plot_data", - "plot_fitness", -] - -import corneto as cn -from corneto.backend._base import EXPR_NAME_FLOW - - -def clip_quantiles(arr, q): - """Clip an array to its lower and upper quantiles.""" - if q < 0 or q > 1: - raise ValueError(f"Clipping value must be between 0 and 1, got {q}") - # compute the quantiles at clipping and 1-clipping and clip the flow - q = np.quantile(arr, [q, 1 - q]) - return np.clip(arr, q[0], q[1]) - - -def cno_style( - P, - max_edge_width: float = 5, - min_edge_width: float = 0.25, - flow_name: str = EXPR_NAME_FLOW, - positive_color: str = "dodgerblue4", - negative_color: str = "firebrick4", - zero_flow_threshold: float = 1e-6, - scale: Optional[Literal["log", "std"]] = "log", - clip_quantil: Optional[float] = 0.05, - iexp=0, -): - """Return graph-plotting attributes derived from a CellNOpt solution.""" - flow = np.array(P.expr[flow_name].value)[:, iexp] - flow[np.abs(flow) < zero_flow_threshold] = 0 - if scale is not None: - if scale == "log": - flow = np.log10(np.abs(flow) + 1e-6) * np.sign(flow) - elif scale == "std": - flow = flow / np.std(flow) - else: - raise ValueError(f"Unknown normalization method: {scale}") - if clip_quantil is not None: - flow = clip_quantiles(flow, clip_quantil) - max_flow = max(np.max(np.abs(flow)), 1e-6) - edge_attrs = dict() - for i, v in enumerate(flow): - # Apply threshold edge width - if abs(v) > 0: - edge_width = max_edge_width - else: - edge_width = min_edge_width - if scale is not None: - edge_width = min_edge_width + (max_edge_width - min_edge_width) * abs(v / max_flow) - # bound = P.expr[flow_name].ub[i] if v >= 0 else P.expr[flow_name].lb[i] - edge_attrs[i] = {"penwidth": str(edge_width)} - if flow[i] > 0: - edge_attrs[i]["color"] = positive_color - elif flow[i] < 0: - edge_attrs[i]["color"] = negative_color - else: - edge_attrs[i]["color"] = "black" - return edge_attrs - - -def get_interactions(G): - """Get the sign of interactions from the graph G. I in [1, -1]""" - return np.array(G.get_attr_from_edges("interaction", 1)) - - -def get_AND_gate_nodes(G): - """Get the indices of nodes that represent AND gates in the graph G. - - Parameters: - - G (Graph): The input graph. - - Returns: - - np.array: An array containing the indices of nodes that represent AND gates. +from scipy.sparse import csr_matrix + +from corneto._constants import VarType +from corneto.backend._base import Backend, ProblemDef +from corneto.data import Data +from corneto.graph import Attr, BaseGraph, EdgeType, Graph +from corneto.methods._base import FlowMethod +from corneto.methods._input_utils import ( + DEFAULT_CONDITION, + data_from_features, + require_mapping, + validate_condition_keys, +) +from corneto.methods._network_utils import augment_with_boundaries + +__all__ = ["BooleanReaction", "CellNOptILP"] + +_AND_PATTERN = re.compile(r"^and[0-9]+$", re.IGNORECASE) +_ROLE_INPUT = "input" +_ROLE_OUTPUT = "output" +_ROLE_INPUT_OUTPUT = "input_output" + + +@dataclass(frozen=True) +class BooleanReaction: + """A normalized Boolean reaction with one product. + + Positive literals must be active and negative literals must be inactive + for the reaction to propagate in a condition. ``source_edges`` records the + PKN edges from which the reaction was compiled. """ - # find AND gates with regular expression: AND[0+9]+ - pattern = re.compile(r"^(AND|And|and)[0-9]+$") - V_is_and = [bool(pattern.match(v)) for v in G.V] - - return np.array(V_is_and) - - -def get_incidence_matrices_of_edges(G, as_dataframe=False): - """Get the mapping matrices A, At, Ah from the graph G. - Parameters: - - G: The graph object. - - as_dataframe: Whether to return the matrices as pandas DataFrames. Default is False. + positive_literals: tuple[Any, ...] + negative_literals: tuple[Any, ...] + product: Any + source_edges: tuple[int, ...] - Returns: - - At: The tail-incidence matrix. - - Ah: The head-incidence matrix. - """ - A = G.vertex_incidence_matrix().astype(int) # V x E - At = np.clip(A, 0, 1) # V x E, 1 if vertex appears as tail of edge - Ah = np.clip(-A, 0, 1) # V x E, 1 if vertex appears as head of edge + @property + def literals(self) -> tuple[Any, ...]: + """Return positive and negative literals in deterministic order.""" + return self.positive_literals + self.negative_literals - if as_dataframe: - import pandas as pd - Ah = pd.DataFrame(Ah, index=G.V, columns=G.E) - At = pd.DataFrame(At, index=G.V, columns=G.E) +@dataclass(frozen=True) +class _ReactionNetwork: + graph: Graph + reactions: tuple[BooleanReaction, ...] + dependency_reactions: np.ndarray + positive_literals: csr_matrix + negative_literals: csr_matrix + products: csr_matrix - return At, Ah +def _is_and_vertex(vertex: Any) -> bool: + return isinstance(vertex, str) and _AND_PATTERN.fullmatch(vertex) is not None -def get_egdes_with_head(G): - """Get the indices of edges with a head node. - Parameters: - G (graph): The input graph. +def _interaction(graph: BaseGraph, edge_index: int) -> int: + value = graph.get_attr_edge(edge_index).get("interaction") + if isinstance(value, bool) or not isinstance(value, Real) or value not in (-1, 1): + raise ValueError(f"CellNOptILP requires interaction +1 or -1 on edge {edge_index}; got {value!r}.") + return int(value) - Returns: - edges_with_head (array): An array containing the indices of edges with a head node. - """ - _At, Ah = get_incidence_matrices_of_edges(G) - edges_with_head = np.flatnonzero(np.sum(np.abs(Ah), axis=0) > 0) - return edges_with_head +def _compile_reactions(graph: BaseGraph) -> _ReactionNetwork: + """Compile SIF-style dummy AND vertices into reaction-level dependencies.""" + if graph.num_vertices == 0 or graph.num_edges == 0: + raise ValueError("CellNOptILP requires a non-empty directed PKN.") -def get_inhibited_nodes(G, exp_list): - """Returns an array, with shape = (len(G.V), len(exp_list)), where each column is a boolean array - indicating if the node is inhibited in the corresponding experiment. - """ - V_is_inhibited = np.full((len(G.V), len(exp_list)), False) + and_vertices = {vertex for vertex in graph.V if _is_and_vertex(vertex)} + vertex_order = {vertex: index for index, vertex in enumerate(graph.V)} + incoming_by_and = {vertex: [] for vertex in and_vertices} + outgoing_by_and = {vertex: [] for vertex in and_vertices} - for exp, iexp in zip(exp_list, range(len(exp_list))): - if "inhibition" not in exp_list[exp]: - continue - i_nodes = list(exp_list[exp]["inhibition"].keys()) - V_is_inhibited[:, iexp] = np.array([v in i_nodes for v in G.V]) - return V_is_inhibited - - -def presolve_report(G, exp_list): - At, Ah = get_incidence_matrices_of_edges(G, as_dataframe=True) - interaction = get_interactions(G) - edges_with_head = get_egdes_with_head(G) - V_is_and = get_AND_gate_nodes(G) - - print("Vertex order:") - print(G.V) - print("AND gates:") - print(V_is_and) - print("Tails of interactions:") - print(At) - print("Head of interactions:") - print(Ah) - print("Sign of interactions:") - print(interaction) - print("Edges with head:") - print(edges_with_head) - - -def expand_graph_for_flows(G, exp_list): - """Expand the graph G with the perturbations and measurements from the experiments in exp_list.""" - G1 = G.copy() - output_names = list({key for exp in exp_list.values() for key in exp["output"].keys()}) - input_names = list({key for exp in exp_list.values() for key in exp["input"].keys()}) - - output_names = list(set(output_names)) - input_names = list(set(input_names)) - - for node in output_names: - G1.add_edge(node, ()) - for node in input_names: - G1.add_edge((), node) - - return G1 - - -def check_exp_graph_consistency(G, exp_list): - """Check if the experiments are consistent with the graph G.""" - for exp in exp_list: - for node in exp_list[exp]["input"]: - if node not in G.V: - raise ValueError(f"Node {node} in experiment {exp} is not in the graph.") - for node in exp_list[exp]["output"]: - if node not in G.V: - raise ValueError(f"Node {node} in experiment {exp} is not in the graph.") - if "inhibition" in exp_list[exp]: - for node in exp_list[exp]["inhibition"]: - if node not in G.V: - raise ValueError(f"Node {node} in experiment {exp} is not in the graph.") - - -def cellnoptILP(G, exp_list, solver=None, alpha_flow=1e-3, verbose=False, backend=None): - """Create and solves the ILP model for the given graph G and the list of experiments exp_list. - - Parameters: - - G: The graph representing the network. - - exp_list: The list of experiments. - - solver: The solver to use for solving the ILP problem. Default is None. - - alpha_flow: The weight of the penalty of flow in the objective. Default is 1e-3. - - verbose: Whether to print verbose output. Default is False. - - Returns: - - P: The ILP model. - """ - if backend is None: - backend = cn.DEFAULT_BACKEND - check_exp_graph_consistency(G, exp_list) - - At, Ah = get_incidence_matrices_of_edges(G) - interaction = get_interactions(G) - edges_with_head = get_egdes_with_head(G) - edges_with_head = np.flatnonzero(np.sum(np.abs(Ah), axis=0) > 0) - V_is_and = get_AND_gate_nodes(G) - and_idx = np.flatnonzero(V_is_and) - V_is_inhibited = get_inhibited_nodes(G, exp_list) - - # let's start with acyclic flow - P = backend.AcyclicFlow(G) - - # vertex value is binary (0 and 1) - V = backend.Variable("vertex_value", (G.num_vertices, len(exp_list)), vartype=cn.VarType.BINARY) - # edge activation is also binary: - Eact = backend.Variable("edge_activates", (G.num_edges, len(exp_list)), vartype=cn.VarType.BINARY) - - M = 100 # a large number, so sum(incoming edges)/M is always less than 1 - - # Dummy variable for the linearization of the absolute deviation objective function - Z = backend.Variable("dummy", (G.num_vertices, len(exp_list)), vartype=cn.VarType.CONTINUOUS) - P += Z >= 0 - - # some basic constraints - P += V >= 0 - P += V <= 1 - - # Rule 1: Edge can be activated only if they carry flow - for exp, iexp in zip(exp_list, range(len(exp_list))): - P += Eact[:, iexp] <= P.expr.with_flow - - # Rule 2: Edges take the upstream value for a positive sign and its - # complement for a negative sign. - for exp, iexp in zip(exp_list, range(len(exp_list))): - # this should keep Eact in [0,1] interval: - - # signed value of source/head node for an edge: - V_head = (Ah.T @ V)[edges_with_head, iexp].multiply((interaction[edges_with_head] > 0).astype(int)) + ( - 1 - (Ah.T @ V)[edges_with_head, iexp] - ).multiply((interaction[edges_with_head] < 0).astype(int)) - # an edge is active if there is flow AND there head node is also active - # logical AND is translated to ILP as: - # y >= x1 + x2 - 1 ; y <= x1 ; y <= x2 - P += Eact[edges_with_head, iexp] >= P.expr.with_flow[edges_with_head] + V_head - 1 - P += Eact[edges_with_head, iexp] <= V_head - # The with-flow upper bound is already enforced by Rule 1. - - # Rule 3: propagate the active edges to the vertices - - # This is for general nodes that are not AND gates - # - for exp, iexp in zip(exp_list, range(len(exp_list))): - is_regular_node = np.logical_and(~V_is_and, ~V_is_inhibited[:, iexp]) - is_regular_node = np.flatnonzero(is_regular_node) - - P += ( - V[is_regular_node, iexp] >= ((At @ Eact) / M)[is_regular_node, iexp] - ) # when there is at least one active edge, the vertex becomes 1 (larger than someValue/M) - P += ( - V[is_regular_node, iexp] <= (At @ Eact)[is_regular_node, iexp] - ) # but it has an upper constraint, so it takes 0 when all input are 0 - if V_is_inhibited[:, iexp].any(): - inh_idx = np.flatnonzero(V_is_inhibited[:, iexp]) - P += V[inh_idx, iexp] == np.zeros(inh_idx.size) - - # AND relation expressed as follows: - # - we only define these constraints for the AND gates - # - we count the sum of flows (selected edges) and sum of activated edges - # - if flow equals incoming-edge activation, all edges are activated and so - # is the vertex; - # - a second constraint prevents activation when no flow is present. - if V_is_and.any(): - # and_idx = np.flatnonzero(V_is_and) - sum_of_flow = At[and_idx, :] @ P.expr.with_flow - sum_of_edge_activation = At[and_idx, :] @ Eact - - # (sum_of_flow - sum_of_edge_activation)/M is always less than 1 and it is 0 if all edges are activated. - for exp, iexp in zip(exp_list, range(len(exp_list))): - P += V[and_idx, iexp] <= 1 - (sum_of_flow - sum_of_edge_activation[:, iexp]) / M - P += V[and_idx, iexp] <= sum_of_flow - - P.register("sum_of_flow", sum_of_flow) - P.register("sum_of_edge_activation", sum_of_edge_activation) - - for exp, iexp in zip(exp_list, range(len(exp_list))): - # activation: - p_nodes = list(exp_list[exp]["input"].keys()) - p_values = list(exp_list[exp]["input"].values()) - p_nodes_positions = np.array([G.V.index(key) for key in p_nodes]) - - P += V[p_nodes_positions, iexp] == p_values - - # measurements: - m_nodes = list(exp_list[exp]["output"].keys()) - m_values = np.array(list(exp_list[exp]["output"].values())) - m_nodes_positions = np.array([G.V.index(key) for key in m_nodes]) - - # linearization of the ABS function: https://lpsolve.sourceforge.net/5.1/absolute.htm - P += V[m_nodes_positions, iexp] - m_values <= Z[m_nodes_positions, iexp] - P += -(V[m_nodes_positions, iexp] - m_values) <= Z[m_nodes_positions, iexp] - - P.add_objectives(sum(Z[m_nodes_positions, iexp])) - - P.add_objectives(alpha_flow * sum(P.expr.with_flow)) - - P.solve(solver=solver, verbosity=verbose) - - return P - - -def report_solution_tables(G, exp_list, P): - import pandas as pd - - for iexp in range(len(exp_list)): - print("--------- iexp: ", iexp, " ---------") - print(pd.DataFrame({"V": G.V, "value": P.expr.vertex_value.value[:, iexp]})) - print( - pd.DataFrame( - { - "E": G.E, - "flow": P.expr.with_flow.value, - "Eact": P.expr.edge_activates.value[:, iexp], - } + for edge_index, ((source, target), attributes) in enumerate(zip(graph.E, graph.get_attr_edges())): + if len(source) != 1 or len(target) != 1: + raise ValueError( + "CellNOptILP accepts simple directed PKN edges only; " + f"edge {edge_index} has {len(source)} sources and {len(target)} targets." + ) + if not attributes.has_attr(Attr.EDGE_TYPE, EdgeType.DIRECTED): + raise ValueError(f"CellNOptILP requires directed edges; edge {edge_index} is not directed.") + _interaction(graph, edge_index) + source_vertex = next(iter(source)) + target_vertex = next(iter(target)) + if source_vertex in and_vertices and target_vertex in and_vertices: + raise ValueError(f"Nested dummy AND gates are not supported (edge {edge_index}).") + if target_vertex in and_vertices: + incoming_by_and[target_vertex].append(edge_index) + if source_vertex in and_vertices: + outgoing_by_and[source_vertex].append(edge_index) + + reactions: list[BooleanReaction] = [] + reaction_keys: set[tuple[frozenset, frozenset, Any]] = set() + + def ordered(vertices): + return tuple(sorted(vertices, key=vertex_order.__getitem__)) + + def add_reaction(positive, negative, product, source_edges): + positive = set(positive) + negative = set(negative) + contradictory = positive & negative + if contradictory: + literal = min(contradictory, key=vertex_order.__getitem__) + raise ValueError(f"Reaction producing {product!r} contains both {literal!r} and !{literal!r}.") + key = (frozenset(positive), frozenset(negative), product) + if key in reaction_keys: + return + reaction_keys.add(key) + reactions.append( + BooleanReaction( + positive_literals=ordered(positive), + negative_literals=ordered(negative), + product=product, + source_edges=tuple(source_edges), ) ) - -def plot_solution_network_active_edges(G, P, iexp): - G.plot(custom_edge_attr=cno_style(P, flow_name="edge_activates", scale=None, iexp=iexp)) - - -def plot_fitness(G, exp_list, P, measured_only=False, **kwargs): - """Plot the fitness of the model simulation vs measurements. - - PARAMETERS: - - G: corneto.Graph object - - exp_list: dictionary of experiments - - P: solution of the ILP model - - measured_only: if True, plot only the measured nodes, otherwise plot all nodes - - **kwargs arguments are passed to subplots and figures of matplotlib - - TODO: there are some assumptions, like the first experiment is the reference experiment and it is called 'exp0' - """ - import matplotlib.pyplot as plt - - N_exps = len(exp_list) - - # Ensure that all experiments have the input and output variables - for exp in exp_list.values(): - if "input" not in exp: - raise ValueError("Input not found in experiment") - if "output" not in exp: - raise ValueError("Output not found in experiment") - - # Collect the input and output variables - input_matrix, input_vars = collect_field_into_matrix(exp_list, "input") - _output_matrix, _output_vars = collect_field_into_matrix(exp_list, "output") - - # Check if inhibition is present in any of the experiments - inhibition_present = any("inhibition" in exp for exp in exp_list.values()) - if inhibition_present: - inhibition_matrix, inhibition_vars = collect_field_into_matrix(exp_list, "inhibition") - perturbation_matrix = np.hstack((input_matrix, inhibition_matrix)) - perturbation_vars = input_vars + inhibition_vars - else: - perturbation_matrix = input_matrix - perturbation_vars = input_vars - - # Create the figure - # Set colors: input colors are blue, inhibition colors are red - perturbation_colors = ["blue"] * len(input_vars) - if inhibition_present: - perturbation_colors += ["red"] * len(inhibition_vars) - - N_nodes = len(G.V) - output_names = list({key for exp in exp_list.values() for key in exp["output"].keys()}) - - # depending on the flag measured_only, we can plot only the measured nodes or all nodes - if measured_only: - fig, axs = plt.subplots(N_exps - 1, len(output_names) + 1, squeeze=False, **kwargs) - else: - fig, axs = plt.subplots(N_exps - 1, N_nodes + 1, squeeze=False, **kwargs) - - fig.tight_layout(pad=0.0) - - # Adjust the space between subplots - plt.subplots_adjust(wspace=0.1, hspace=0.1) - - for exp, iexp in zip(exp_list, range(N_exps)): - if iexp == 0: + for edge_index, (source, target) in enumerate(graph.E): + source_vertex = next(iter(source)) + target_vertex = next(iter(target)) + if source_vertex in and_vertices or target_vertex in and_vertices: continue + sign = _interaction(graph, edge_index) + add_reaction( + [source_vertex] if sign > 0 else [], + [source_vertex] if sign < 0 else [], + target_vertex, + [edge_index], + ) - if measured_only: - for imarker in range(len(output_names)): - # output_names[imarker] is the name of the output node, find the position in the graph - imarker_inG = G.V.index(output_names[imarker]) - - axs[iexp - 1, imarker].plot( - [0, 10], - [ - P.expr.vertex_value.value[imarker_inG, 0], - min(P.expr.vertex_value.value[imarker_inG, iexp], 1), - ], - "bo-", - label=G.V[imarker_inG], - ) - - if G.V[imarker_inG] in exp_list[exp]["output"].keys(): - axs[iexp - 1, imarker].plot( - [0, 10], - [ - exp_list["exp0"]["output"][G.V[imarker_inG]], - exp_list[exp]["output"][G.V[imarker_inG]], - ], - "ro-", - ) - axs[iexp - 1, imarker].set_ylim([-0.05, 1.1]) - if iexp == 1: - axs[iexp - 1, imarker].set_title(output_names[imarker]) - if iexp != N_exps - 1: - axs[iexp - 1, imarker].set_xticks([]) - if imarker == 0: - axs[iexp - 1, imarker].set_ylabel(f"Exp. {iexp}") - else: - axs[iexp - 1, imarker].set_yticks([]) - else: - for imarker in range(N_nodes): - axs[iexp - 1, imarker].plot( - [0, 10], - [ - P.expr.vertex_value.value[imarker, 0], - min(P.expr.vertex_value.value[imarker, iexp], 1), - ], - "bo-", - label=G.V[imarker], - # color="blue", - # linestyle="o-", + for gate in (vertex for vertex in graph.V if vertex in and_vertices): + incoming = incoming_by_and[gate] + outgoing = outgoing_by_and[gate] + if len(incoming) < 2: + raise ValueError(f"Dummy AND gate {gate!r} must have at least two incoming edges.") + if not outgoing: + raise ValueError(f"Dummy AND gate {gate!r} must have at least one outgoing edge.") + positive = [] + negative = [] + for edge_index in incoming: + source_vertex = next(iter(graph.get_edge(edge_index)[0])) + if _interaction(graph, edge_index) > 0: + positive.append(source_vertex) + else: + negative.append(source_vertex) + for edge_index in outgoing: + if _interaction(graph, edge_index) < 0: + raise ValueError( + f"Dummy AND gate {gate!r} must activate its product; edge {edge_index} has interaction -1." ) + product = next(iter(graph.get_edge(edge_index)[1])) + add_reaction( + positive, + negative, + product, + [*incoming, edge_index], + ) - if G.V[imarker] in exp_list[exp]["output"].keys(): - axs[iexp - 1, imarker].plot( - [0, 10], - [ - exp_list["exp0"]["output"][G.V[imarker]], - exp_list[exp]["output"][G.V[imarker]], - ], - "ro-", - ) - axs[iexp - 1, imarker].set_ylim([-0.05, 1.1]) - if iexp == 1: - axs[iexp - 1, imarker].set_title(G.V[imarker]) - if iexp != N_exps - 1: - axs[iexp - 1, imarker].set_xticks([]) - if imarker == 0: - axs[iexp - 1, imarker].set_ylabel(f"Exp. {iexp}") - else: - axs[iexp - 1, imarker].set_yticks([]) - # Plot perturbation - if measured_only: - plot_location = len(output_names) - else: - plot_location = N_nodes - - axs[iexp - 1, plot_location].bar( - range(len(perturbation_vars)), - perturbation_matrix[iexp], - color=perturbation_colors, + if not reactions: + raise ValueError("CellNOptILP preprocessing produced no Boolean reactions.") + + dependency_graph = Graph() + species = [vertex for vertex in graph.V if vertex not in and_vertices] + for vertex in species: + dependency_graph.add_vertex(vertex) + + dependency_reactions = [] + for reaction_index, reaction in enumerate(reactions): + for literal in reaction.positive_literals: + dependency_graph.add_edge( + literal, + reaction.product, + interaction=1, + reaction=reaction_index, + ) + dependency_reactions.append(reaction_index) + for literal in reaction.negative_literals: + dependency_graph.add_edge( + literal, + reaction.product, + interaction=-1, + reaction=reaction_index, + ) + dependency_reactions.append(reaction_index) + + vertex_index = {vertex: index for index, vertex in enumerate(dependency_graph.V)} + num_reactions = len(reactions) + positive_rows = [] + positive_columns = [] + negative_rows = [] + negative_columns = [] + product_rows = [] + product_columns = [] + for reaction_index, reaction in enumerate(reactions): + positive_rows.extend([reaction_index] * len(reaction.positive_literals)) + positive_columns.extend(vertex_index[vertex] for vertex in reaction.positive_literals) + negative_rows.extend([reaction_index] * len(reaction.negative_literals)) + negative_columns.extend(vertex_index[vertex] for vertex in reaction.negative_literals) + product_rows.append(vertex_index[reaction.product]) + product_columns.append(reaction_index) + + literal_shape = (num_reactions, dependency_graph.num_vertices) + product_shape = (dependency_graph.num_vertices, num_reactions) + positive_literals = csr_matrix( + ( + np.ones(len(positive_rows)), + (positive_rows, positive_columns), + ), + shape=literal_shape, + ) + negative_literals = csr_matrix( + ( + np.ones(len(negative_rows)), + (negative_rows, negative_columns), + ), + shape=literal_shape, + ) + products = csr_matrix( + ( + np.ones(num_reactions), + (product_rows, product_columns), + ), + shape=product_shape, + ) + return _ReactionNetwork( + graph=dependency_graph, + reactions=tuple(reactions), + dependency_reactions=np.asarray(dependency_reactions, dtype=int), + positive_literals=positive_literals, + negative_literals=negative_literals, + products=products, + ) + + +def _bounded_number( + value: Any, + *, + argument: str, + identifier: Any, + condition: str, + binary: bool, +) -> float: + if isinstance(value, (bool, np.bool_)): + number = float(value) + elif isinstance(value, Real): + number = float(value) + else: + raise TypeError(f"{argument}[{identifier!r}] for condition {condition!r} must be numeric, got {value!r}.") + if not np.isfinite(number): + raise ValueError(f"{argument}[{identifier!r}] for condition {condition!r} must be finite.") + allowed = number in (0, 1) if binary else 0 <= number <= 1 + if not allowed: + domain = "0 or 1" if binary else "between 0 and 1" + raise ValueError(f"{argument}[{identifier!r}] for condition {condition!r} must be {domain}; got {value!r}.") + return number + + +def _cellnopt_data( + graph: BaseGraph, + *, + inputs, + measurements, + inhibitors=None, +) -> Data: + condition_names = validate_condition_keys( + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + if not condition_names: + raise ValueError("CellNOptILP requires at least one named condition.") + if inhibitors is None: + inhibitors = {condition: {} for condition in condition_names} + + graph_vertices = set(graph.V) + features_by_condition = {} + for condition in condition_names: + condition_inputs = require_mapping( + inputs[condition], + argument="inputs", + condition=condition, ) - if iexp == N_exps - 1: - axs[iexp - 1, plot_location].set_xticks(range(len(perturbation_vars))) - axs[iexp - 1, plot_location].set_xticklabels(perturbation_vars, rotation=45) - else: - # No xtick label - axs[iexp - 1, plot_location].set_xticks([]) - - axs[iexp - 1, plot_location].set_ylim([-0.01, 1.1]) - axs[iexp - 1, plot_location].set_yticks([]) - if iexp == 1: - axs[iexp - 1, plot_location].set_title("Pert.") - - plt.show() - - -def collect_field_into_matrix(experiments, field_name="input"): - """Collects the field_name values into matrix. - - Collects the field_name values (input, inhibition etc) from a dictionary - of experiments and returns them as a numpy array. - - PARAMETERS: - - experiments: dictionary of experiments containing input values - - field_name: name of the field to collect (default: 'input') - - Returns: - - input_matrix: numpy array of input values - - input_vars: list of unique input variable names - + condition_measurements = require_mapping( + measurements[condition], + argument="measurements", + condition=condition, + ) + condition_inhibitors = require_mapping( + inhibitors[condition], + argument="inhibitors", + condition=condition, + ) + if not condition_inputs and not condition_inhibitors: + raise ValueError(f"Condition {condition!r} must contain an input or active inhibitor.") + if not condition_measurements: + raise ValueError(f"measurements for condition {condition!r} must not be empty.") + + input_values = {} + measurement_values = {} + active_inhibitors = set() + for vertex, value in condition_inputs.items(): + if vertex not in graph_vertices: + raise ValueError(f"Unknown vertex {vertex!r} in inputs for condition {condition!r}.") + input_values[vertex] = _bounded_number( + value, + argument="inputs", + identifier=vertex, + condition=condition, + binary=True, + ) + for vertex, value in condition_measurements.items(): + if vertex not in graph_vertices: + raise ValueError(f"Unknown vertex {vertex!r} in measurements for condition {condition!r}.") + measurement_values[vertex] = _bounded_number( + value, + argument="measurements", + identifier=vertex, + condition=condition, + binary=False, + ) + for vertex, value in condition_inhibitors.items(): + if vertex not in graph_vertices: + raise ValueError(f"Unknown vertex {vertex!r} in inhibitors for condition {condition!r}.") + inhibitor = _bounded_number( + value, + argument="inhibitors", + identifier=vertex, + condition=condition, + binary=True, + ) + if inhibitor: + active_inhibitors.add(vertex) + + overlap = active_inhibitors & set(input_values) + if overlap: + vertex = next(vertex for vertex in graph.V if vertex in overlap) + raise ValueError( + f"Vertex {vertex!r} cannot be both an input and an active inhibitor in condition {condition!r}." + ) + for vertex in active_inhibitors: + input_values[vertex] = 0.0 + + features = [] + included = set(input_values) | set(measurement_values) + for vertex in (vertex for vertex in graph.V if vertex in included): + is_input = vertex in input_values + is_output = vertex in measurement_values + role = _ROLE_INPUT_OUTPUT if is_input and is_output else (_ROLE_INPUT if is_input else _ROLE_OUTPUT) + feature = { + "id": vertex, + "mapping": "vertex", + "role": role, + "value": (measurement_values[vertex] if is_output else input_values[vertex]), + } + if is_input: + feature["input_value"] = input_values[vertex] + if vertex in active_inhibitors: + feature["intervention"] = "inhibitor" + features.append(feature) + features_by_condition[condition] = features + return data_from_features(features_by_condition) + + +class CellNOptILP(FlowMethod): + """Infer a shared acyclic Boolean model from multiple conditions. + + The method selects reactions globally and evaluates their Boolean truth in + every condition. A single nonnegative flow has exactly the selected + reaction dependencies as its internal support. Conservation, positive + support, and acyclicity therefore require every selected dependency to lie + on a path from a controlled input or inhibitor to a measured output. + + Dummy vertices named ``AND`` are compiled into one reaction per + product. All operands of such a reaction share one selection variable and + are evaluated conjunctively. + + Args: + lambda_reg: Penalty for every selected reaction. + max_flow: Upper bound for structural flow. By default, the number of + compiled dependency edges is used. + epsilon: Minimum flow on every selected dependency edge. + backend: Optimization backend. """ - # Collect all unique input names - input_vars = set() - for exp in experiments.values(): - # ensure field_name exists - if field_name not in exp: - raise ValueError("Field name (" + field_name + ") not found in experiment") - input_vars.update(exp[field_name].keys()) - input_vars = sorted(input_vars) # Sorting to keep a consistent order - data = [] - - # Collect input values for each experiment - for exp in experiments.values(): - row = [exp[field_name].get(var, 0) for var in input_vars] - data.append(row) - - # Convert the data to a numpy array - input_matrix = np.array(data) - - return input_matrix, input_vars - - -def plot_data(exp_list): - """Plot the data. - - PARAMETERS: - - exp_list: dictionary of experiments - - """ - import matplotlib.pyplot as plt - - N_exps = len(exp_list) - - # Ensure that all experiments have the input and output variables - for exp in exp_list.values(): - if "input" not in exp: - raise ValueError("Input not found in experiment") - if "output" not in exp: - raise ValueError("Output not found in experiment") - - # Collect the input and output variables - input_matrix, input_vars = collect_field_into_matrix(exp_list, "input") - output_matrix, output_vars = collect_field_into_matrix(exp_list, "output") - - # Check if inhibition is present in any of the experiments - inhibition_present = any("inhibition" in exp for exp in exp_list.values()) - if inhibition_present: - inhibition_matrix, inhibition_vars = collect_field_into_matrix(exp_list, "inhibition") - perturbation_matrix = np.hstack((input_matrix, inhibition_matrix)) - perturbation_vars = input_vars + inhibition_vars - else: - perturbation_matrix = input_matrix - perturbation_vars = input_vars + def __init__( + self, + lambda_reg: float = 1e-3, + max_flow: Optional[float] = None, + epsilon: float = 1.0, + backend: Optional[Backend] = None, + ): + if isinstance(lambda_reg, bool) or not isinstance(lambda_reg, Real): + raise TypeError("lambda_reg must be a finite nonnegative number.") + if not np.isfinite(lambda_reg) or lambda_reg < 0: + raise ValueError("lambda_reg must be a finite nonnegative number.") + if isinstance(epsilon, bool) or not isinstance(epsilon, Real): + raise TypeError("epsilon must be a finite positive number.") + if not np.isfinite(epsilon) or epsilon <= 0: + raise ValueError("epsilon must be a finite positive number.") + if max_flow is not None: + if isinstance(max_flow, bool) or not isinstance(max_flow, Real): + raise TypeError("max_flow must be a finite positive number.") + if not np.isfinite(max_flow) or max_flow <= 0: + raise ValueError("max_flow must be a finite positive number.") + if max_flow < epsilon: + raise ValueError("max_flow must be greater than or equal to epsilon.") + + super().__init__( + lambda_reg=lambda_reg, + reg_varname="reaction_selected", + flow_lower_bound=0, + flow_upper_bound=1, + backend=backend, + ) + self.max_flow = None if max_flow is None else float(max_flow) + self.epsilon = float(epsilon) + self.reactions: tuple[BooleanReaction, ...] = () + self._condition_names: tuple[str, ...] = () + self._biological_num_edges = 0 + self._flow_max = 0.0 + self._dependency_to_reaction = csr_matrix((0, 0)) + self._positive_literals = csr_matrix((0, 0)) + self._negative_literals = csr_matrix((0, 0)) + self._products = csr_matrix((0, 0)) + self._forced_mask = np.empty((0, 0), dtype=bool) + self._forced_values = np.empty((0, 0), dtype=float) + self._measurement_mask = np.empty((0, 0), dtype=bool) + self._measurements = np.empty((0, 0), dtype=float) + + def build( + self, + pkn: BaseGraph, + *, + inputs, + measurements, + inhibitors=None, + ) -> ProblemDef: + """Build a single-condition CellNOpt problem.""" + return self.build_many( + pkn, + inputs={DEFAULT_CONDITION: inputs}, + measurements={DEFAULT_CONDITION: measurements}, + inhibitors=(None if inhibitors is None else {DEFAULT_CONDITION: inhibitors}), + ) - # Create the figure - # Set colors: input colors are blue, inhibition colors are red - perturbation_colors = ["blue"] * len(input_vars) - if inhibition_present: - perturbation_colors += ["red"] * len(inhibition_vars) + def build_many( + self, + pkn: BaseGraph, + *, + inputs, + measurements, + inhibitors=None, + ) -> ProblemDef: + """Build a problem for multiple named experimental conditions.""" + data = _cellnopt_data( + pkn, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + return self.build_from_data(pkn, data) + + def preprocess(self, graph: BaseGraph, data: Data): + """Compile reactions, validate condition data, and add flow boundaries.""" + network = _compile_reactions(graph) + if not data.samples: + raise ValueError("CellNOptILP requires at least one condition.") + + condition_names = tuple(data.samples) + if any(not isinstance(name, str) or not name for name in condition_names): + raise ValueError("CellNOptILP condition names must be non-empty strings.") + + vertex_index = {vertex: index for index, vertex in enumerate(network.graph.V)} + num_vertices = network.graph.num_vertices + num_conditions = len(condition_names) + forced_mask = np.zeros((num_vertices, num_conditions), dtype=bool) + forced_values = np.zeros((num_vertices, num_conditions), dtype=float) + measurement_mask = np.zeros((num_vertices, num_conditions), dtype=bool) + measurements = np.zeros((num_vertices, num_conditions), dtype=float) + + for condition_index, (condition, sample) in enumerate(data.samples.items()): + condition_inputs = 0 + condition_measurements = 0 + for feature in sample.features: + if feature.mapping != "vertex": + raise ValueError( + f"CellNOptILP only accepts vertex features; got mapping " + f"{feature.mapping!r} in condition {condition!r}." + ) + if feature.id not in vertex_index: + raise ValueError( + f"Unknown species {feature.id!r} in CellNOptILP data for " + f"condition {condition!r}; dummy AND vertices cannot be measured " + "or perturbed." + ) + role = feature.data.get("role") + if role not in { + _ROLE_INPUT, + _ROLE_OUTPUT, + _ROLE_INPUT_OUTPUT, + }: + raise ValueError( + f"Vertex feature {feature.id!r} for condition {condition!r} " + "must have role 'input', 'output', or 'input_output'." + ) + index = vertex_index[feature.id] + if role in {_ROLE_INPUT, _ROLE_INPUT_OUTPUT}: + input_value = feature.data.get( + "input_value", + feature.value if role == _ROLE_INPUT else None, + ) + forced_mask[index, condition_index] = True + forced_values[index, condition_index] = _bounded_number( + input_value, + argument="input_value", + identifier=feature.id, + condition=condition, + binary=True, + ) + condition_inputs += 1 + if role in {_ROLE_OUTPUT, _ROLE_INPUT_OUTPUT}: + measurement_mask[index, condition_index] = True + measurements[index, condition_index] = _bounded_number( + feature.value, + argument="measurement", + identifier=feature.id, + condition=condition, + binary=False, + ) + condition_measurements += 1 + if condition_inputs == 0: + raise ValueError(f"Condition {condition!r} must contain at least one input.") + if condition_measurements == 0: + raise ValueError(f"Condition {condition!r} must contain at least one output.") + + input_union = forced_mask.any(axis=1) + output_union = measurement_mask.any(axis=1) + layout = augment_with_boundaries( + network.graph, + inflow_vertices=(vertex for vertex, include in zip(network.graph.V, input_union) if include), + outflow_vertices=(vertex for vertex, include in zip(network.graph.V, output_union) if include), + ) + flow_graph = layout.graph + num_dependencies = network.graph.num_edges + num_reactions = len(network.reactions) + dependency_rows = np.arange(num_dependencies) + dependency_to_reaction = csr_matrix( + ( + np.ones(num_dependencies), + (dependency_rows, network.dependency_reactions), + ), + shape=(flow_graph.num_edges, num_reactions), + ) - fig, axs = plt.subplots(N_exps - 1, len(output_vars) + 1, squeeze=False) + default_max_flow = float(max(num_dependencies, 1)) + flow_max = default_max_flow if self.max_flow is None else self.max_flow + if flow_max < self.epsilon: + raise ValueError(f"max_flow ({flow_max:g}) must be greater than or equal to epsilon ({self.epsilon:g}).") + + self.reactions = network.reactions + self._condition_names = condition_names + self._biological_num_edges = num_dependencies + self._flow_max = float(flow_max) + self._dependency_to_reaction = dependency_to_reaction + self._positive_literals = network.positive_literals + self._negative_literals = network.negative_literals + self._products = network.products + self._forced_mask = forced_mask + self._forced_values = forced_values + self._measurement_mask = measurement_mask + self._measurements = measurements + return flow_graph, data.copy() + + def get_flow_bounds(self, graph: BaseGraph, data: Data): + """Return bounds for the single shared structural flow.""" + return { + "lb": 0, + "ub": self._flow_max, + "n_flows": 1, + "shared_bounds": False, + } + + def create_flow_based_problem( + self, + flow_problem: ProblemDef, + graph: BaseGraph, + data: Data, + ) -> ProblemDef: + """Add vectorized Boolean propagation and shared-flow selection.""" + problem = flow_problem + num_vertices = graph.num_vertices + num_reactions = len(self.reactions) + num_conditions = len(self._condition_names) + condition_ones = np.ones((1, num_conditions)) + + reaction_selected = self.backend.Variable( + "reaction_selected", + (num_reactions,), + vartype=VarType.BINARY, + ) + reaction_active = self.backend.Variable( + "reaction_active", + (num_reactions, num_conditions), + vartype=VarType.BINARY, + ) + vertex_value = self.backend.Variable( + "vertex_value", + (num_vertices, num_conditions), + vartype=VarType.BINARY, + ) - fig.tight_layout(pad=0.0) - # Adjust the space between subplots - plt.subplots_adjust(wspace=0.1, hspace=0.1) + dependency_selected_all = self.backend.Constant(self._dependency_to_reaction) @ reaction_selected + dependency_selected = dependency_selected_all[: self._biological_num_edges] + flow = problem.expr.flow + biological_flow = flow[: self._biological_num_edges] + # The shared flow and shared reaction selection have exactly the same + # support on biological dependencies. Boundary flow remains free to + # choose which controlled species and measurements connect that support. + problem += biological_flow >= self.epsilon * dependency_selected + problem += biological_flow <= self._flow_max * dependency_selected + + problem.register("_dependency_selected_all", dependency_selected_all) + self.backend.Acyclic( + graph, + problem, + indicator_positive_var_name="_dependency_selected_all", + ) - for exp, iexp in zip(exp_list, range(N_exps)): - if iexp == 0: - continue + positive_literals = self.backend.Constant(self._positive_literals) + negative_literals = self.backend.Constant(self._negative_literals) + products = self.backend.Constant(self._products) + negative_count = np.asarray(self._negative_literals.sum(axis=1)).reshape(-1, 1) + literal_count = np.asarray((self._positive_literals + self._negative_literals).sum(axis=1)).reshape(-1, 1) + negative_count = negative_count @ condition_ones + literal_count = literal_count @ condition_ones + # S[r, c] counts true literals of reaction r in condition c. With k + # literals, the three inequalities below impose + # Z[r, c] = Y[r] AND (S[r, c] == k[r]) without a big-M constant. + literal_satisfaction = positive_literals @ vertex_value + negative_count - negative_literals @ vertex_value + selected_by_condition = reaction_selected.reshape((num_reactions, 1)) @ condition_ones + + problem += reaction_active <= selected_by_condition + problem += reaction_active.multiply(literal_count) <= literal_satisfaction + problem += reaction_active >= selected_by_condition + literal_satisfaction - literal_count + + producing_reactions = products @ reaction_active + producer_count = np.asarray(self._products.sum(axis=1)).reshape(-1, 1) + producer_count = producer_count @ condition_ones + free_mask = (~self._forced_mask).astype(float) + # A non-intervened species is the OR of its active producing reactions. + # Interventions mask only this product relation; upstream reaction truth + # remains intact when a product is experimentally forced to zero. + problem += vertex_value.multiply(free_mask) <= producing_reactions.multiply(free_mask) + problem += producing_reactions.multiply(free_mask) <= vertex_value.multiply(producer_count * free_mask) + problem += vertex_value.multiply(self._forced_mask.astype(float)) == self._forced_values + + error_coefficients = self._measurement_mask.astype(float) * (1 - 2 * self._measurements) + error_constant = float(np.sum(self._measurement_mask * self._measurements)) + # For binary x and measurement m in [0, 1], + # |x - m| = m + (1 - 2m)x exactly. + measurement_error = vertex_value.multiply(error_coefficients).sum() + error_constant + problem.add_objective( + measurement_error, + name="measurement_error", + ) - for imarker in range(len(output_vars)): - # output_names[imarker] is the name of the output node, find the position in the graph - imarker_name = output_vars[imarker] + problem.register("dependency_selected", dependency_selected) + problem.register("literal_satisfaction", literal_satisfaction) + problem.register("dag_layer", problem.expr._dag_layer) + return problem - axs[iexp - 1, imarker].plot( - [0, 10], - [output_matrix[0, imarker], output_matrix[iexp, imarker]], - "ro-", - ) - axs[iexp - 1, imarker].set_ylim([-0.01, 1.1]) - - if iexp == 1: - axs[iexp - 1, imarker].set_title(imarker_name) - if iexp != N_exps - 1: - axs[iexp - 1, imarker].set_xticks([]) - if imarker == 0: - axs[iexp - 1, imarker].set_ylabel(f"Exp. {iexp}") - else: - axs[iexp - 1, imarker].set_yticks([]) + @staticmethod + def name() -> str: + """Return the method name.""" + return "CellNOptILP" - # Plot perturbation - axs[iexp - 1, len(output_vars)].bar( - range(len(perturbation_vars)), - perturbation_matrix[iexp], - color=perturbation_colors, - ) - if iexp == N_exps - 1: - axs[iexp - 1, len(output_vars)].set_xticks(range(len(perturbation_vars))) - axs[iexp - 1, len(output_vars)].set_xticklabels(perturbation_vars, rotation=45) - else: - # No xtick label - axs[iexp - 1, len(output_vars)].set_xticks([]) - - axs[iexp - 1, len(output_vars)].set_ylim([-0.01, 1.1]) - axs[iexp - 1, len(output_vars)].set_yticks([]) - if iexp == 1: - axs[iexp - 1, len(output_vars)].set_title("Pert.") - plt.show() + @staticmethod + def description() -> str: + """Return a short method description.""" + return "Shared acyclic Boolean-reaction inference with structural flow connectivity" diff --git a/corneto/methods/signaling/cellnopt_plotting.py b/corneto/methods/signaling/cellnopt_plotting.py new file mode 100644 index 000000000..33684f2d1 --- /dev/null +++ b/corneto/methods/signaling/cellnopt_plotting.py @@ -0,0 +1,880 @@ +"""Visualization utilities for :class:`~corneto.methods.signaling.CellNOptILP`.""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any, Literal, Optional, Sequence, Union + +import numpy as np + +from corneto._plotting import _scaled_magnitudes +from corneto.graph import Graph +from corneto.methods.signaling.cellnopt_ilp import CellNOptILP + +__all__ = ["plot_cellnopt_fit", "plot_cellnopt_model"] + +_STIMULUS_COLOR = "#9ACD32" +_MEASUREMENT_COLOR = "#ADD8E6" +_INHIBITOR_COLOR = "#FF6846" +_POSITIVE_COLOR = "#222222" +_NEGATIVE_COLOR = "#C43C39" +_INACTIVE_POSITIVE_COLOR = "#A8A8A8" +_INACTIVE_NEGATIVE_COLOR = "#E3A19F" +_UNSELECTED_POSITIVE_COLOR = "#D5D5D5" +_UNSELECTED_NEGATIVE_COLOR = "#F0CECD" + + +@dataclass(frozen=True) +class _CellNOptPlotData: + conditions: tuple[str, ...] + vertices: tuple[Any, ...] + selected: np.ndarray + active: np.ndarray + states: np.ndarray + flow_by_reaction: tuple[np.ndarray, ...] + measurement_mask: np.ndarray + measurements: np.ndarray + input_mask: np.ndarray + input_values: np.ndarray + inhibitor_mask: np.ndarray + + +@dataclass(frozen=True) +class _FitSeries: + """Observed and predicted responses on an explicit time axis. + + CellNOptILP currently infers one steady-state endpoint per condition, so + extraction produces a singleton axis labelled ``Endpoint``. Keeping time + as a real array dimension lets a future time-resolved formulation reuse + the renderer without assigning scientific meaning to series identity. + """ + + times: np.ndarray + time_labels: tuple[str, ...] + observed: np.ndarray + measured: np.ndarray + predicted: np.ndarray + + +@dataclass(frozen=True) +class _ModelPlotSpec: + graph: Graph + vertex_attributes: dict[Any, dict[str, str]] + edge_attributes: dict[int, dict[str, str]] + graph_attributes: dict[str, str] + node_attributes: dict[str, str] + + +def _expression_values(problem: Any, name: str, shape: tuple[int, ...]) -> np.ndarray: + if problem is None: + raise ValueError("CellNOptILP has not been built. Build and solve the method before plotting.") + try: + expression = problem.expr[name] + except (KeyError, TypeError, AttributeError): + try: + expression = getattr(problem.expr, name) + except AttributeError as exc: + raise ValueError(f"CellNOpt solution does not contain expression {name!r}.") from exc + value = getattr(expression, "value", None) + if value is None: + raise ValueError(f"CellNOpt expression {name!r} has no value. Solve a feasible problem before plotting.") + array = np.asarray(value, dtype=float) + try: + array = array.reshape(shape) + except ValueError as exc: + raise ValueError(f"CellNOpt expression {name!r} has shape {array.shape}; expected {shape}.") from exc + if not np.all(np.isfinite(array)): + raise ValueError(f"CellNOpt expression {name!r} contains non-finite values.") + return array + + +def _validate_binary_values(values: np.ndarray, name: str, tolerance: float = 1e-5) -> np.ndarray: + if np.any(values < -tolerance) or np.any(values > 1 + tolerance): + raise ValueError(f"CellNOpt expression {name!r} contains values outside the binary domain.") + return values >= 0.5 + + +def _extract_plot_data(method: CellNOptILP, problem: Any = None) -> _CellNOptPlotData: + if not isinstance(method, CellNOptILP): + raise TypeError("method must be a CellNOptILP instance.") + if problem is None: + problem = method.problem + conditions = tuple(method._condition_names) + vertices = tuple(method.processed_graph.V) if method.processed_graph is not None else () + if not conditions or not vertices or not method.reactions: + raise ValueError("CellNOptILP has not been built. Build and solve the method before plotting.") + + num_reactions = len(method.reactions) + num_conditions = len(conditions) + num_vertices = len(vertices) + selected_values = _expression_values(problem, "reaction_selected", (num_reactions,)) + active_values = _expression_values(problem, "reaction_active", (num_reactions, num_conditions)) + state_values = _expression_values(problem, "vertex_value", (num_vertices, num_conditions)) + flow_values = _expression_values(problem, "flow", tuple(problem.expr.flow.shape)).reshape(-1) + if flow_values.size < method._biological_num_edges: + raise ValueError("CellNOpt flow vector is shorter than the compiled biological dependency graph.") + + selected = _validate_binary_values(selected_values, "reaction_selected") + active = _validate_binary_values(active_values, "reaction_active") + states = _validate_binary_values(state_values, "vertex_value") + + dependency_flow = flow_values[: method._biological_num_edges] + flow_by_reaction = [] + cursor = 0 + for reaction in method.reactions: + next_cursor = cursor + len(reaction.literals) + flow_by_reaction.append(dependency_flow[cursor:next_cursor].copy()) + cursor = next_cursor + if cursor != method._biological_num_edges: + raise ValueError("Compiled reactions do not align with CellNOpt dependency-flow variables.") + + input_mask = np.zeros((num_vertices, num_conditions), dtype=bool) + input_values = np.zeros((num_vertices, num_conditions), dtype=float) + inhibitor_mask = np.zeros((num_vertices, num_conditions), dtype=bool) + vertex_index = {vertex: index for index, vertex in enumerate(vertices)} + for condition_index, condition in enumerate(conditions): + sample = method.processed_data.samples[condition] + for feature in sample.features: + index = vertex_index[feature.id] + role = feature.data.get("role") + if role in {"input", "input_output"}: + input_mask[index, condition_index] = True + input_values[index, condition_index] = float(feature.data.get("input_value", feature.value)) + if feature.data.get("intervention") == "inhibitor": + inhibitor_mask[index, condition_index] = True + + return _CellNOptPlotData( + conditions=conditions, + vertices=vertices, + selected=selected, + active=active, + states=states, + flow_by_reaction=tuple(flow_by_reaction), + measurement_mask=np.asarray(method._measurement_mask, dtype=bool), + measurements=np.asarray(method._measurements, dtype=float), + input_mask=input_mask, + input_values=input_values, + inhibitor_mask=inhibitor_mask, + ) + + +def _condition_index( + data: _CellNOptPlotData, + condition: Optional[Union[int, str]], +) -> Optional[int]: + if condition is None: + return None + if isinstance(condition, int): + if condition < 0 or condition >= len(data.conditions): + raise ValueError(f"condition index {condition} out of range for {len(data.conditions)} conditions.") + return condition + if condition not in data.conditions: + raise ValueError(f"Unknown condition {condition!r}; expected one of {list(data.conditions)!r}.") + return data.conditions.index(condition) + + +def _reaction_text(reaction: Any) -> str: + literals = [str(vertex) for vertex in reaction.positive_literals] + literals.extend(f"NOT {vertex}" for vertex in reaction.negative_literals) + return f"{' AND '.join(literals)} -> {reaction.product}" + + +def _node_roles( + data: _CellNOptPlotData, + condition_index: Optional[int], +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + if condition_index is None: + inputs = data.input_mask.any(axis=1) + outputs = data.measurement_mask.any(axis=1) + inhibitors = data.inhibitor_mask.any(axis=1) + else: + inputs = data.input_mask[:, condition_index] + outputs = data.measurement_mask[:, condition_index] + inhibitors = data.inhibitor_mask[:, condition_index] + return inputs, outputs, inhibitors + + +def _merge_attributes( + generated: dict[Any, dict[str, str]], + supplied: Optional[dict[Any, dict[str, str]]], +) -> dict[Any, dict[str, str]]: + merged = {key: dict(value) for key, value in generated.items()} + for key, attrs in (supplied or {}).items(): + merged.setdefault(key, {}).update({str(name): str(value) for name, value in attrs.items()}) + return merged + + +def _build_cellnopt_model_plot( + method: CellNOptILP, + problem: Any = None, + *, + condition: Optional[Union[int, str]] = None, + show_unselected: bool = False, + show_inactive: bool = True, + width_by: Literal["selection", "flow"] = "selection", +) -> _ModelPlotSpec: + if width_by not in {"selection", "flow"}: + raise ValueError("width_by must be 'selection' or 'flow'.") + data = _extract_plot_data(method, problem) + condition_index = _condition_index(data, condition) + + included_reactions = [] + segment_flows = [] + for reaction_index, reaction in enumerate(method.reactions): + selected = bool(data.selected[reaction_index]) + active = selected if condition_index is None else bool(data.active[reaction_index, condition_index]) + include = selected or show_unselected + if condition_index is not None and selected and not active and not show_inactive: + include = False + if not include: + continue + included_reactions.append((reaction_index, reaction, selected, active)) + flows = data.flow_by_reaction[reaction_index] + segment_flows.extend(flows.tolist()) + if len(reaction.literals) > 1: + segment_flows.append(float(np.sum(flows))) + + flow_scale = ( + _scaled_magnitudes( + np.asarray(segment_flows, dtype=float), + zero_threshold=1e-9, + scale="log", + clip_quantile=0.0, + ) + if width_by == "flow" + else np.empty(0) + ) + flow_scale_cursor = 0 + + graph = Graph() + included_species = set() + for _, reaction, _, _ in included_reactions: + included_species.update(reaction.literals) + included_species.add(reaction.product) + inputs, outputs, inhibitors = _node_roles(data, condition_index) + experimental_species = { + vertex for vertex, is_experimental in zip(data.vertices, inputs | outputs | inhibitors) if is_experimental + } + included_species.update(experimental_species) + for vertex in data.vertices: + if vertex in included_species: + graph.add_vertex(vertex) + + existing_names = {str(vertex) for vertex in data.vertices} + and_nodes = {} + for reaction_index, reaction, _, _ in included_reactions: + if len(reaction.literals) <= 1: + continue + candidate = f"__cellnopt_and_{reaction_index}" + while candidate in existing_names: + candidate = f"_{candidate}" + existing_names.add(candidate) + and_nodes[reaction_index] = candidate + graph.add_vertex(candidate) + + vertex_attributes: dict[Any, dict[str, str]] = {} + vertex_index = {vertex: index for index, vertex in enumerate(data.vertices)} + for vertex in included_species: + index = vertex_index[vertex] + is_input = bool(inputs[index]) + is_output = bool(outputs[index]) + is_inhibitor = bool(inhibitors[index]) + is_stimulus = is_input and not is_inhibitor + if is_inhibitor: + fillcolor = _INHIBITOR_COLOR + role = "inhibitor target" + elif is_stimulus: + fillcolor = _STIMULUS_COLOR + role = "stimulus" + elif is_output: + fillcolor = _MEASUREMENT_COLOR + role = "measurement" + else: + fillcolor = "white" + role = "internal species" + attrs = { + "shape": "box", + "style": "rounded,filled", + "fillcolor": fillcolor, + "color": "#4C4C4C", + "fontcolor": "#111111", + "label": str(vertex), + "tooltip": role, + "margin": "0.08,0.05", + } + if is_stimulus and is_output: + attrs["peripheries"] = "2" + attrs["color"] = "#4C78A8" + attrs["tooltip"] = "stimulus and measurement" + elif is_inhibitor and is_output: + attrs["peripheries"] = "2" + attrs["color"] = "#4C78A8" + attrs["tooltip"] = "inhibitor target and measurement" + if condition_index is not None: + value = int(data.states[index, condition_index]) + attrs["penwidth"] = "2.5" if value else "1.0" + attrs["tooltip"] += f"; state={value}" + vertex_attributes[str(vertex)] = attrs + for reaction_index, node in and_nodes.items(): + vertex_attributes[node] = { + "shape": "circle", + "style": "filled", + "fillcolor": "white", + "color": "#333333", + "label": "AND", + "width": "0.38", + "height": "0.38", + "fixedsize": "true", + "fontsize": "8", + "tooltip": _reaction_text(method.reactions[reaction_index]), + } + + edge_attributes: dict[int, dict[str, str]] = {} + + def state_attributes( + *, + interaction: int, + selected: bool, + active: bool, + raw_flow: float, + aggregate: bool, + reaction_text: str, + ) -> dict[str, str]: + nonlocal flow_scale_cursor + if not selected: + color = _UNSELECTED_NEGATIVE_COLOR if interaction < 0 else _UNSELECTED_POSITIVE_COLOR + style = "dotted" + width = 0.6 + elif condition_index is not None and not active: + color = _INACTIVE_NEGATIVE_COLOR if interaction < 0 else _INACTIVE_POSITIVE_COLOR + style = "dashed" + width = 1.0 + else: + color = _NEGATIVE_COLOR if interaction < 0 else _POSITIVE_COLOR + style = "solid" + width = 2.8 if condition_index is not None else 2.2 + if width_by == "flow": + magnitude = float(flow_scale[flow_scale_cursor]) + flow_scale_cursor += 1 + if selected: + width = 0.8 + 4.2 * magnitude + tooltip = ( + f"{reaction_text}; selected={int(selected)}" + + ("" if condition_index is None else f"; active={int(active)}") + + f"; {'aggregate ' if aggregate else ''}structural flow={raw_flow:.5g}" + ) + return { + "color": color, + "fontcolor": color, + "style": style, + "penwidth": f"{width:.3g}", + "arrowhead": "tee" if interaction < 0 else "normal", + "tooltip": tooltip, + } + + for reaction_index, reaction, selected, active in included_reactions: + reaction_text = _reaction_text(reaction) + flows = data.flow_by_reaction[reaction_index] + literals = [ + *((vertex, 1) for vertex in reaction.positive_literals), + *((vertex, -1) for vertex in reaction.negative_literals), + ] + if len(literals) == 1: + literal, interaction = literals[0] + edge_index = graph.add_edge( + literal, + reaction.product, + interaction=interaction, + reaction=reaction_index, + ) + edge_attributes[edge_index] = state_attributes( + interaction=interaction, + selected=selected, + active=active, + raw_flow=float(flows[0]), + aggregate=False, + reaction_text=reaction_text, + ) + continue + + and_node = and_nodes[reaction_index] + for literal_index, (literal, interaction) in enumerate(literals): + edge_index = graph.add_edge( + literal, + and_node, + interaction=interaction, + reaction=reaction_index, + ) + edge_attributes[edge_index] = state_attributes( + interaction=interaction, + selected=selected, + active=active, + raw_flow=float(flows[literal_index]), + aggregate=False, + reaction_text=reaction_text, + ) + aggregate_flow = float(np.sum(flows)) + edge_index = graph.add_edge( + and_node, + reaction.product, + interaction=1, + reaction=reaction_index, + ) + edge_attributes[edge_index] = state_attributes( + interaction=1, + selected=selected, + active=active, + raw_flow=aggregate_flow, + aggregate=True, + reaction_text=reaction_text, + ) + + return _ModelPlotSpec( + graph=graph, + vertex_attributes=vertex_attributes, + edge_attributes=edge_attributes, + graph_attributes={"rankdir": "LR", "pad": "0.2", "nodesep": "0.35", "ranksep": "0.5"}, + node_attributes={"fixedsize": "false", "fontname": "Helvetica", "fontsize": "10"}, + ) + + +def plot_cellnopt_model( + method: CellNOptILP, + problem: Any = None, + *, + condition: Optional[Union[int, str]] = None, + show_unselected: bool = False, + show_inactive: bool = True, + width_by: Literal["selection", "flow"] = "selection", + renderer: str = "auto", + **plot_kwargs: Any, +) -> Any: + """Plot a solved CellNOpt model using CORNETO's graph renderers. + + ``condition=None`` shows the shared selected structure. Selecting a + condition overlays reaction activity and predicted species states. + Structural flow may optionally control edge widths, but never edge color. + """ + spec = _build_cellnopt_model_plot( + method, + problem, + condition=condition, + show_unselected=show_unselected, + show_inactive=show_inactive, + width_by=width_by, + ) + graph_attributes = dict(spec.graph_attributes) + graph_attributes.update(plot_kwargs.pop("graph_attr", {}) or {}) + node_attributes = dict(spec.node_attributes) + node_attributes.update(plot_kwargs.pop("node_attr", {}) or {}) + edge_attributes = _merge_attributes( + spec.edge_attributes, + plot_kwargs.pop("custom_edge_attr", None), + ) + vertex_attributes = _merge_attributes( + spec.vertex_attributes, + {str(vertex): attrs for vertex, attrs in (plot_kwargs.pop("custom_vertex_attr", None) or {}).items()}, + ) + return spec.graph.plot( + renderer=renderer, + graph_attr=graph_attributes, + node_attr=node_attributes, + custom_edge_attr=edge_attributes, + custom_vertex_attr=vertex_attributes, + **plot_kwargs, + ) + + +def _selected_indices( + values: Optional[Union[Any, Sequence[Any]]], + available: Sequence[Any], + *, + argument: str, +) -> list[int]: + if values is None: + return list(range(len(available))) + if isinstance(values, (str, int)) or values in available: + values = [values] + indices = [] + for value in values: + if isinstance(value, int) and argument == "conditions": + if value < 0 or value >= len(available): + raise ValueError(f"{argument} index {value} out of range.") + indices.append(value) + else: + if value not in available: + raise ValueError(f"Unknown {argument[:-1]} {value!r}; expected one of {list(available)!r}.") + indices.append(available.index(value)) + if not indices: + raise ValueError(f"{argument} must select at least one value.") + return indices + + +def _fit_selection( + data: _CellNOptPlotData, + conditions: Optional[Union[Union[int, str], Sequence[Union[int, str]]]], + signals: Optional[Union[Any, Sequence[Any]]], +) -> tuple[list[int], list[int]]: + condition_indices = _selected_indices(conditions, data.conditions, argument="conditions") + measured_vertices = [ + vertex for vertex, measured in zip(data.vertices, data.measurement_mask.any(axis=1)) if measured + ] + selected_signals = measured_vertices if signals is None else signals + signal_indices = _selected_indices(selected_signals, data.vertices, argument="signals") + return condition_indices, signal_indices + + +def _cue_data( + data: _CellNOptPlotData, + condition_indices: Sequence[int], +) -> tuple[np.ndarray, list[str], list[str]]: + selected_inputs = data.input_mask[:, condition_indices] + selected_inhibitors = data.inhibitor_mask[:, condition_indices] + stimulus_vertices = [ + index for index in range(len(data.vertices)) if np.any(selected_inputs[index] & ~selected_inhibitors[index]) + ] + inhibitor_vertices = [index for index in range(len(data.vertices)) if np.any(selected_inhibitors[index])] + labels = [str(data.vertices[index]) for index in stimulus_vertices] + labels.extend(f"{data.vertices[index]} (inh)" for index in inhibitor_vertices) + kinds = ["stimulus"] * len(stimulus_vertices) + ["inhibitor"] * len(inhibitor_vertices) + cues = np.zeros((len(condition_indices), len(labels)), dtype=float) + for row, condition_index in enumerate(condition_indices): + for column, vertex_index in enumerate(stimulus_vertices): + if not data.inhibitor_mask[vertex_index, condition_index]: + cues[row, column] = data.input_values[vertex_index, condition_index] + offset = len(stimulus_vertices) + for column, vertex_index in enumerate(inhibitor_vertices): + cues[row, offset + column] = float(data.inhibitor_mask[vertex_index, condition_index]) + return cues, labels, kinds + + +def _import_matplotlib(): + try: + import matplotlib.colors as colors + import matplotlib.pyplot as plt + from matplotlib.lines import Line2D + except ImportError as exc: + raise ImportError( + "CellNOpt fit plots require Matplotlib. Install CORNETO with `pip install 'corneto[plot]'`." + ) from exc + return plt, colors, Line2D + + +def _endpoint_fit_series( + data: _CellNOptPlotData, + condition_indices: Sequence[int], + signal_indices: Sequence[int], +) -> _FitSeries: + """Return current steady-state results with an explicit endpoint axis.""" + observed = data.measurements[np.ix_(signal_indices, condition_indices)].T + measured = data.measurement_mask[np.ix_(signal_indices, condition_indices)].T + predicted = data.states[np.ix_(signal_indices, condition_indices)].T.astype(float) + return _FitSeries( + times=np.array([0.0]), + time_labels=("Endpoint",), + observed=observed[..., np.newaxis], + measured=measured[..., np.newaxis], + predicted=predicted[..., np.newaxis], + ) + + +def _plot_fit_grid( + data: _CellNOptPlotData, + condition_indices: Sequence[int], + signal_indices: Sequence[int], + *, + figsize: Optional[tuple[float, float]], +): + plt, colors, Line2D = _import_matplotlib() + num_conditions = len(condition_indices) + num_signals = len(signal_indices) + cues, cue_labels, cue_kinds = _cue_data(data, condition_indices) + series = _endpoint_fit_series(data, condition_indices, signal_indices) + if figsize is None: + condition_label_width = min( + 4.0, + 0.09 * max(len(data.conditions[index]) for index in condition_indices), + ) + figsize = ( + max( + 6.0, + 2.15 * num_signals + max(2.6, 0.65 * len(cue_labels)) + condition_label_width, + ), + max(3.2, 1.65 * num_conditions + 0.45), + ) + width_ratios = [1.0] * num_signals + [max(1.2, 0.35 * max(len(cue_labels), 1))] + figure = plt.figure(figsize=figsize, constrained_layout=True) + layout = figure.add_gridspec(2, 1, height_ratios=[0.12, 1]) + legend_axis = figure.add_subplot(layout[0]) + legend_axis.axis("off") + panel_layout = layout[1].subgridspec( + num_conditions, + num_signals + 1, + width_ratios=width_ratios, + ) + axes = np.empty((num_conditions, num_signals + 1), dtype=object) + for row in range(num_conditions): + for column in range(num_signals + 1): + axes[row, column] = figure.add_subplot(panel_layout[row, column]) + error_cmap = colors.LinearSegmentedColormap.from_list( + "cellnopt_absolute_error", + ["#E7F5E7", "#FFF0B3", "#F4B7B2"], + ) + error_norm = colors.Normalize(vmin=0, vmax=1) + + for row, condition_index in enumerate(condition_indices): + for column, signal_index in enumerate(signal_indices): + axis = axes[row, column] + predicted = series.predicted[row, column] + observed = series.observed[row, column] + measured = series.measured[row, column] + if np.any(measured): + error = float(np.mean(np.abs(observed[measured] - predicted[measured]))) + axis.set_facecolor(error_cmap(error_norm(error))) + for time, observed_value, predicted_value, is_measured in zip( + series.times, + observed, + predicted, + measured, + ): + if is_measured: + axis.plot( + [time, time], + [observed_value, predicted_value], + color="#777777", + linewidth=1.0, + label="_nolegend_", + zorder=1, + ) + else: + axis.set_facecolor("#F2F2F2") + axis.patch.set_hatch("//") + axis.patch.set_edgecolor("#C8C8C8") + + prediction_line = "-" if len(series.times) > 1 else "none" + axis.plot( + series.times, + predicted, + color="#2C7FB8", + marker="s", + markersize=5, + linewidth=1.5, + linestyle=prediction_line, + label="Model", + zorder=2, + ) + if np.any(measured): + observed_values = np.ma.array(observed, mask=~measured) + observation_line = "-" if np.count_nonzero(measured) > 1 else "none" + axis.plot( + series.times, + observed_values, + color=_NEGATIVE_COLOR, + marker="o", + markerfacecolor="none", + markeredgewidth=1.5, + markersize=7, + linewidth=1.2, + linestyle=observation_line, + label="Observed", + zorder=3, + ) + + if len(series.times) == 1: + axis.set_xlim(series.times[0] - 0.5, series.times[0] + 0.5) + else: + span = float(series.times[-1] - series.times[0]) + margin = max(0.03 * span, 1e-6) + axis.set_xlim(series.times[0] - margin, series.times[-1] + margin) + axis.set_ylim(-0.05, 1.05) + axis.set_yticks([0, 0.5, 1]) + if row == 0: + axis.set_title(str(data.vertices[signal_index]), fontsize=10) + if row == num_conditions - 1: + axis.set_xticks(series.times, series.time_labels) + else: + axis.set_xticks([]) + if column == 0: + axis.set_ylabel( + data.conditions[condition_index], + rotation=0, + ha="right", + va="center", + labelpad=10, + ) + else: + axis.set_yticklabels([]) + axis.grid(axis="y", color="#DDDDDD", linewidth=0.5) + + cue_axis = axes[row, -1] + if cue_labels: + colors = [_STIMULUS_COLOR if kind == "stimulus" else _INHIBITOR_COLOR for kind in cue_kinds] + cue_axis.bar( + np.arange(len(cue_labels)), + cues[row], + color=colors, + edgecolor="#555555", + linewidth=0.5, + ) + cue_axis.set_xlim(-0.6, len(cue_labels) - 0.4) + cue_axis.set_ylim(0, 1.05) + cue_axis.set_yticks([]) + if row == 0: + cue_axis.set_title("Cues", fontsize=10) + if row == num_conditions - 1: + cue_axis.set_xticks( + np.arange(len(cue_labels)), + cue_labels, + rotation=45, + ha="right", + ) + else: + cue_axis.set_xticks([]) + + legend_axis.legend( + handles=[ + Line2D( + [], + [], + color=_NEGATIVE_COLOR, + marker="o", + markerfacecolor="none", + linestyle="none", + label="Observed", + ), + Line2D([], [], color="#2C7FB8", marker="s", linestyle="none", label="Model"), + ], + loc="center", + ncols=2, + frameon=False, + ) + error_scale = plt.cm.ScalarMappable(norm=error_norm, cmap=error_cmap) + error_scale.set_array([]) + colorbar = figure.colorbar( + error_scale, + ax=axes.ravel().tolist(), + fraction=0.018, + pad=0.02, + ) + colorbar.set_label("Mean absolute error") + return figure, axes + + +def _annotate_heatmap(axis: Any, values: np.ndarray, mask: Optional[np.ndarray] = None) -> None: + if values.size > 100: + return + for row in range(values.shape[0]): + for column in range(values.shape[1]): + if mask is not None and mask[row, column]: + continue + axis.text( + column, + row, + f"{values[row, column]:.2g}", + ha="center", + va="center", + fontsize=8, + ) + + +def _plot_fit_heatmaps( + data: _CellNOptPlotData, + condition_indices: Sequence[int], + signal_indices: Sequence[int], + *, + figsize: Optional[tuple[float, float]], +): + plt, colors, _ = _import_matplotlib() + observed = data.measurements[np.ix_(signal_indices, condition_indices)].T + measured = data.measurement_mask[np.ix_(signal_indices, condition_indices)].T + predicted = data.states[np.ix_(signal_indices, condition_indices)].T.astype(float) + error = np.abs(observed - predicted) + cues, cue_labels, cue_kinds = _cue_data(data, condition_indices) + condition_labels = [data.conditions[index] for index in condition_indices] + signal_labels = [str(data.vertices[index]) for index in signal_indices] + + if figsize is None: + figsize = ( + max(9.5, 1.0 * len(signal_labels) + 0.55 * len(cue_labels)), + max(3.0, 0.52 * len(condition_labels) + 1.8), + ) + figure, axes = plt.subplots( + 1, + 4, + figsize=figsize, + squeeze=False, + constrained_layout=True, + gridspec_kw={"width_ratios": [1, 1, 1, max(0.7, len(cue_labels) / max(len(signal_labels), 1))]}, + ) + axes = axes[0] + + value_cmap = plt.get_cmap("viridis").copy() + value_cmap.set_bad("#E8E8E8") + error_cmap = plt.get_cmap("RdYlGn_r").copy() + error_cmap.set_bad("#E8E8E8") + observed_masked = np.ma.array(observed, mask=~measured) + error_masked = np.ma.array(error, mask=~measured) + matrices = [observed_masked, predicted, error_masked] + titles = ["Observed", "Model", "Absolute error"] + cmaps = [value_cmap, value_cmap, error_cmap] + for axis, matrix, title, cmap in zip(axes[:3], matrices, titles, cmaps): + image = axis.imshow(matrix, aspect="auto", vmin=0, vmax=1, cmap=cmap) + axis.set_title(title) + axis.set_xticks(np.arange(len(signal_labels)), signal_labels, rotation=45, ha="right") + axis.set_yticks(np.arange(len(condition_labels)), condition_labels) + _annotate_heatmap( + axis, + np.asarray(matrix.filled(0) if np.ma.isMaskedArray(matrix) else matrix), + np.ma.getmaskarray(matrix) if np.ma.isMaskedArray(matrix) else None, + ) + figure.colorbar(image, ax=axis, fraction=0.046, pad=0.03) + + cue_axis = axes[3] + if cue_labels: + cue_codes = np.zeros_like(cues) + for column, kind in enumerate(cue_kinds): + cue_codes[:, column] = cues[:, column] * (1 if kind == "stimulus" else 2) + cue_cmap = colors.ListedColormap(["#FFFFFF", _STIMULUS_COLOR, _INHIBITOR_COLOR]) + cue_axis.imshow(cue_codes, aspect="auto", vmin=0, vmax=2, cmap=cue_cmap) + else: + cue_axis.imshow(np.zeros((len(condition_labels), 1)), aspect="auto", vmin=0, vmax=1, cmap="Greys") + cue_labels = ["None"] + cue_axis.set_title("Cues") + cue_axis.set_xticks(np.arange(len(cue_labels)), cue_labels, rotation=45, ha="right") + cue_axis.set_yticks(np.arange(len(condition_labels)), condition_labels) + return figure, axes + + +def plot_cellnopt_fit( + method: CellNOptILP, + problem: Any = None, + *, + view: Literal["cellnopt", "heatmap"] = "cellnopt", + conditions: Optional[Union[Union[int, str], Sequence[Union[int, str]]]] = None, + signals: Optional[Union[Any, Sequence[Any]]] = None, + figsize: Optional[tuple[float, float]] = None, +): + """Compare CellNOpt measurements and predictions across conditions. + + The ``cellnopt`` view overlays observations and model predictions at the + inferred endpoint for every selected condition and signal. Unmeasured + signals show model predictions only. ``heatmap`` provides aligned matrices + for larger datasets. + """ + data = _extract_plot_data(method, problem) + condition_indices, signal_indices = _fit_selection(data, conditions, signals) + if view == "cellnopt": + return _plot_fit_grid( + data, + condition_indices, + signal_indices, + figsize=figsize, + ) + if view == "heatmap": + return _plot_fit_heatmaps( + data, + condition_indices, + signal_indices, + figsize=figsize, + ) + raise ValueError("view must be 'cellnopt' or 'heatmap'.") diff --git a/docs/api/corneto.methods.rst b/docs/api/corneto.methods.rst index fad151b0d..1c7f48cb5 100644 --- a/docs/api/corneto.methods.rst +++ b/docs/api/corneto.methods.rst @@ -15,17 +15,33 @@ and transcription-factor mappings for one condition. Their ``build_many`` methods accept named conditions. ``milp_carnival`` remains as a compatibility formulation. +``CellNOptILP.build`` accepts binary input, measurement, and optional inhibitor +mappings. ``build_many`` infers one shared connected reaction model while +evaluating its Boolean state independently in every named condition. + .. autosummary:: :toctree: generated/ CarnivalFlow CarnivalILP + signaling.CellNOptILP BidirectionalPHONEMeS PHONEMeS compute_phonemes_scores milp_carnival - signaling.cellnopt_ilp.cellnoptILP + +CellNOpt visualization +~~~~~~~~~~~~~~~~~~~~~~ + +CellNOpt plotting utilities use the standard CORNETO graph renderers for +network views and return Matplotlib figure/axes objects for data-fit views. + +.. autosummary:: + :toctree: generated/ + + signaling.plot_cellnopt_model + signaling.plot_cellnopt_fit Metabolism ---------- diff --git a/docs/guide/signaling/cellnopt_ILP.ipynb b/docs/guide/signaling/cellnopt_ILP.ipynb index 84eb8b2c1..368a7c158 100644 --- a/docs/guide/signaling/cellnopt_ILP.ipynb +++ b/docs/guide/signaling/cellnopt_ILP.ipynb @@ -2,150 +2,268 @@ "cells": [ { "cell_type": "markdown", + "id": "d0d6ea50", "metadata": {}, "source": [ - "# Acyclic boolean models of cell signaling (experimental)\n", + "# Inferring intracellular signaling models with CellNOpt\n", "\n", - "This guide shows the basics of modeling intracellular signaling using acyclic boolean models for multi-perturbation experiments. For this, we will use an extension of the CellNopt ILP method implemented with CORNETO.\n", + "Many signaling experiments follow the same design: stimulate a receptor or inhibit a signaling protein, wait until a chosen endpoint, and measure a panel of phosphoproteins or reporters. Each experimental condition is therefore a **snapshot of the cellular response to an intervention**.\n", "\n", - "- Author: Attila Gabor (Heidelberg University, SaezLab)\n", - "- Reviewers: Pablo Rodriguez Mier (Heidelberg University, SaezLab)\n", + "This method is built around one question:\n", "\n", - "> NOTE: This notebook is still experimental." + "> **What is the smallest connected feed-forward signaling logic sufficient to explain the observed endpoint responses across all interventions?**\n", + "\n", + "A prior-knowledge network (PKN) supplies the candidate biology. It collects signaling interactions reported in the literature or databases and is deliberately inclusive: it may contain alternative routes, AND gates, inhibitory effects, and feedback loops. `CellNOptILP` searches this network for a small Boolean signaling model that answers the question above across the complete experiment.\n", + "\n", + "Proteins are represented as inactive (`0`) or active (`1`), and the same pathway structure is used in every condition. The interventions change which parts of that pathway can respond. This is a simplified model of intracellular signal transmission—not a reconstruction of every molecular event between stimulation and measurement.\n", + "\n", + "The worked example develops the answer in three steps:\n", + "\n", + "1. identify which candidate signaling reactions are needed;\n", + "2. examine how the predicted pathway response changes after each stimulation or inhibition;\n", + "3. compare the predicted activities with the measured readouts.\n", + "\n", + "The main workflow explains these steps visually. The final **Under the hood** section connects the biological intuition to the Boolean and optimization formulation." + ] + }, + { + "cell_type": "markdown", + "id": "4b824f5a", + "metadata": {}, + "source": [ + "## One signaling model, several perturbation conditions\n", + "\n", + "CellNOpt learns one pathway diagram from the complete experiment. What happens on that diagram changes from one condition to another.\n", + "\n", + "| Part of the experiment | Biological meaning | Shared across conditions? |\n", + "|---|---|---|\n", + "| Selected reactions | The signaling interactions retained in the inferred pathway | Yes |\n", + "| Stimuli and inhibitors | Which proteins are experimentally forced on or off | No |\n", + "| Predicted protein activity | The model's active/inactive response after each intervention | No |\n", + "| Active reactions | The retained interactions through which signal can pass in that condition | No |\n", + "| Measured readouts | The observed endpoint response used to evaluate the prediction | No |\n", + "\n", + "A reaction may therefore belong to the inferred pathway but remain inactive in a particular condition. For example, an `A → X` reaction can be part of the shared model even when `A` was not stimulated in one experiment.\n", + "\n", + "CORNETO also checks that the retained pathway connects experimental interventions to measured responses. That computational check is explained later; it should not be interpreted as a measured biochemical flux." + ] + }, + { + "cell_type": "markdown", + "id": "5e4ca25c", + "metadata": {}, + "source": [ + "## Relationship to CellNOptR\n", + "\n", + "[CellNOptR](https://doi.org/10.1186/1752-0509-6-133) established the idea of training logic models of intracellular signaling against perturbation data. It can iteratively propagate Boolean states toward a steady state and can represent successive pseudo-steady states when several experimental times are available.\n", + "\n", + "This guide addresses the simpler case of one response snapshot per intervention. It retains the CellNOpt ideas of selecting reactions, evaluating Boolean responses in every condition, and balancing data fit against model size. CORNETO adds two restrictions for this endpoint setting: the selected model must be acyclic, and every selected reaction must belong to a connected route from an intervention to a readout. These additions are summarized in **Under the hood**." + ] + }, + { + "cell_type": "markdown", + "id": "adb8ac7f", + "metadata": {}, + "source": [ + "## Example: perturbations and two signaling readouts\n", + "\n", + "We use abstract labels so that the logic is easy to follow. `A`, `C`, and `D` play the role of experimentally controlled upstream signals; `B`, `X`, and `W` are intracellular signaling proteins; and `Y` and `Z` are measured downstream responses.\n", + "\n", + "The candidate network includes several plausible mechanisms:\n", + "\n", + "- `D → B`, so activating `D` can indirectly block `A AND NOT B → X`;\n", + "- a branch from `X` toward both readouts;\n", + "- `W AND C → Z`, representing a response that needs two signals simultaneously;\n", + "- alternative ways to activate `Y` through `X`, `C`, or the absence of `D`.\n", + "\n", + "The PKN also contains shortcuts and feedback interactions. They remain legitimate biological hypotheses. The question is whether the snapshot experiment contains enough information to retain them in the fitted endpoint model." ] }, { "cell_type": "code", "execution_count": 1, + "id": "3ec145a6", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - "
Installed version:v1.0.0.dev3 (latest stable: v1.0.0-alpha)
Available backends:CVXPY v1.6.0, PICOS v2.5.1
Default backend (corneto.opt):CVXPY
Installed solvers:CLARABEL, CVXOPT, GLPK, GLPK_MI, GUROBI, HIGHS, SCIP, SCIPY
Graphviz version:v0.20.3
Installed path:/Users/pablorodriguezmier/Documents/work/projects/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import corneto as cn\n", - "import corneto.methods.signaling.cellnopt_ilp as cno\n", + "import numpy as np\n", + "import pandas as pd\n", + "from IPython.display import display\n", "\n", - "cn.info()" + "import corneto as cn\n", + "from corneto.methods.signaling import (\n", + " CellNOptILP,\n", + " plot_cellnopt_fit,\n", + " plot_cellnopt_model,\n", + ")" ] }, { "cell_type": "markdown", + "id": "ccf4fa07", "metadata": {}, "source": [ - "# Introduction to a Boolean model\n", + "### Define the prior-knowledge network\n", + "\n", + "Positive interactions use sign `+1`; inhibitory interactions use sign `−1`. The temporary nodes `AND1` and `AND2` are the usual SIF representation of two combinatorial signaling rules:\n", "\n", - "As a first step we define start with a small network and corresponding datasets just to illustrate the concepts. \n", - "The prior knowledge network of 'G1' contains three nodes, EGF, TNFa and Ras. Edges show the potential activation of the RAS protein. " + "- `A AND NOT B → X`: `A` must be active while `B` must be inactive;\n", + "- `W AND C → Z`: both `W` and `C` must be active.\n", + "\n", + "CORNETO treats every complete AND rule as one candidate reaction. The network also includes direct routes to `Z` and the feedback candidates `Y → Z → X` and `Z → W → Z`. Thus the PKN contains cycles even though the fitted endpoint model will not." ] }, { "cell_type": "code", "execution_count": 2, + "id": "29fbd626", "metadata": {}, "outputs": [ { "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcesigntarget
0A1AND1
1B-1AND1
2AND11X
3D1B
4X1Y
5X1W
6W1AND2
7C1AND2
8AND21Z
9C1Y
10D-1Y
11W1Z
12C1Z
13Y1Z
14Z1X
15Z-1W
\n", + "
" ], "text/plain": [ - "" + " source sign target\n", + "0 A 1 AND1\n", + "1 B -1 AND1\n", + "2 AND1 1 X\n", + "3 D 1 B\n", + "4 X 1 Y\n", + "5 X 1 W\n", + "6 W 1 AND2\n", + "7 C 1 AND2\n", + "8 AND2 1 Z\n", + "9 C 1 Y\n", + "10 D -1 Y\n", + "11 W 1 Z\n", + "12 C 1 Z\n", + "13 Y 1 Z\n", + "14 Z 1 X\n", + "15 Z -1 W" ] }, "execution_count": 2, @@ -154,157 +272,225 @@ } ], "source": [ - "# Definition of the prior knowledge network\n", - "G1 = cn.Graph.from_sif_tuples(\n", - " [\n", - " (\"EGF\", 1, \"AND1\"),\n", - " (\"TNFa\", 1, \"AND1\"),\n", - " (\"AND1\", 1, \"Ras\"),\n", - " (\"EGF\", 1, \"Ras\"),\n", - " (\"TNFa\", 1, \"Ras\"),\n", - " ]\n", - ")\n", - "G1.plot()" + "pkn_edges = [\n", + " (\"A\", 1, \"AND1\"),\n", + " (\"B\", -1, \"AND1\"),\n", + " (\"AND1\", 1, \"X\"),\n", + " (\"D\", 1, \"B\"),\n", + " (\"X\", 1, \"Y\"),\n", + " (\"X\", 1, \"W\"),\n", + " (\"W\", 1, \"AND2\"),\n", + " (\"C\", 1, \"AND2\"),\n", + " (\"AND2\", 1, \"Z\"),\n", + " (\"C\", 1, \"Y\"),\n", + " (\"D\", -1, \"Y\"),\n", + " (\"W\", 1, \"Z\"),\n", + " (\"C\", 1, \"Z\"),\n", + " (\"Y\", 1, \"Z\"),\n", + " (\"Z\", 1, \"X\"),\n", + " (\"Z\", -1, \"W\"),\n", + "]\n", + "pkn = cn.Graph.from_tuples(pkn_edges)\n", + "\n", + "pd.DataFrame(pkn_edges, columns=[\"source\", \"sign\", \"target\"])" ] }, { "cell_type": "markdown", + "id": "fbad6a30", "metadata": {}, "source": [ - "Now, we organize some in-silico experimental data into a format that can be used by the CNO toolbox.\n", + "### Define the perturbation experiment\n", "\n", - "First, we define 4 conditions (exp0 ... exp3). In each condition, the activated nodes (EGF or TNFa) are set to 1 and the non-activated nodes to 0.\n", - "We also define the values of the corresponding outputs (Ras).\n", + "Each row below corresponds to one experimental condition. It records what was done to the cells and what was measured afterward:\n", "\n", - "Note that the output, Ras is only active (1.0) in the 4th condition, when both of the inputs are also activated. This corresponds to an AND relationship: RAS is active only if both EGF and TNFa are activated.\n", - "We expect that the optimization finds the correct subgraph of the above network, which contains only the 3 nodes with the AND gates, while individual edges from EGF and TNFa to RAS are removed. " + "- **input:** `1` forces an upstream signal on and `0` keeps it off, representing stimulus present or absent in this simplified experiment;\n", + "- **inhibit:** `1` applies an inhibitor and forces its target off;\n", + "- **readout:** the observed activity at the endpoint.\n", + "\n", + "`Y` and `Z` are the only measured responses. Interventions target the upstream or internal signaling proteins `A–D` and `W`, so the roles of experimental cue and downstream readout remain distinct. The interpretation column is a short label for the reader and is not used by the model.\n", + "\n", + "The informative part of the design is the contrast between rows. `C1` and `C2` receive the same upstream inputs, but only `C1` inhibits `B`; their different `Y` responses test the route `D → B` followed by the first AND gate. `C3` and `C4` test whether `C` alone is sufficient for `Z`, or whether `W` is also required. `C4` and `C6` have the same inputs, but inhibiting `W` in `C6` turns `Z` off while leaving `Y` active, directly testing the `W AND C → Z` branch." ] }, { "cell_type": "code", "execution_count": 3, + "id": "47eeb812", "metadata": {}, "outputs": [], "source": [ - "# RAS is only active iff both EGF and TNFa are active -> we need to identify the AND gate\n", - "exp_list_G1_and = {\n", - " \"exp0\": {\"input\": {\"EGF\": 0, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp1\": {\"input\": {\"EGF\": 1, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp2\": {\"input\": {\"EGF\": 0, \"TNFa\": 1}, \"output\": {\"Ras\": 0}},\n", - " \"exp3\": {\"input\": {\"EGF\": 1, \"TNFa\": 1}, \"output\": {\"Ras\": 1}},\n", + "inputs = {\n", + " \"C1\": {\"A\": 1, \"C\": 0, \"D\": 1},\n", + " \"C2\": {\"A\": 1, \"C\": 0, \"D\": 1},\n", + " \"C3\": {\"A\": 0, \"C\": 1, \"D\": 1},\n", + " \"C4\": {\"A\": 1, \"C\": 1, \"D\": 0},\n", + " \"C5\": {\"A\": 0, \"C\": 0, \"D\": 0},\n", + " \"C6\": {\"A\": 1, \"C\": 1, \"D\": 0},\n", + "}\n", + "measurements = {\n", + " \"C1\": {\"Y\": 1, \"Z\": 0},\n", + " \"C2\": {\"Y\": 0, \"Z\": 0},\n", + " \"C3\": {\"Y\": 1, \"Z\": 0},\n", + " \"C4\": {\"Y\": 1, \"Z\": 1},\n", + " \"C5\": {\"Y\": 1, \"Z\": 0},\n", + " \"C6\": {\"Y\": 1, \"Z\": 0},\n", + "}\n", + "inhibitors = {\n", + " \"C1\": {\"B\": 1},\n", + " \"C2\": {},\n", + " \"C3\": {},\n", + " \"C4\": {},\n", + " \"C5\": {},\n", + " \"C6\": {\"W\": 1},\n", + "}\n", + "behavior = {\n", + " \"C1\": \"B inhibition enables AND1\",\n", + " \"C2\": \"D activates B and blocks AND1\",\n", + " \"C3\": \"C alone\",\n", + " \"C4\": \"AND2 enabled\",\n", + " \"C5\": \"negative-literal route\",\n", + " \"C6\": \"W inhibited; Z lost\",\n", "}" ] }, { "cell_type": "code", "execution_count": 4, + "id": "426761ba", "metadata": {}, "outputs": [ { "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
interpretationinput Ainput Cinput Dinhibit Binhibit Wreadout Yreadout Z
condition
C1B inhibition enables AND11011010
C2D activates B and blocks AND11010000
C3C alone0110010
C4AND2 enabled1100011
C5negative-literal route0000010
C6W inhibited; Z lost1100110
\n", + "
" ], "text/plain": [ - "" + " interpretation input A input C input D \\\n", + "condition \n", + "C1 B inhibition enables AND1 1 0 1 \n", + "C2 D activates B and blocks AND1 1 0 1 \n", + "C3 C alone 0 1 1 \n", + "C4 AND2 enabled 1 1 0 \n", + "C5 negative-literal route 0 0 0 \n", + "C6 W inhibited; Z lost 1 1 0 \n", + "\n", + " inhibit B inhibit W readout Y readout Z \n", + "condition \n", + "C1 1 0 1 0 \n", + "C2 0 0 0 0 \n", + "C3 0 0 1 0 \n", + "C4 0 0 1 1 \n", + "C5 0 0 1 0 \n", + "C6 0 1 1 0 " ] }, "execution_count": 4, @@ -313,72 +499,216 @@ } ], "source": [ - "G1_prep = cno.expand_graph_for_flows(G1, exp_list_G1_and)\n", - "G1_prep.plot()" + "experiment_table = pd.DataFrame(index=inputs)\n", + "experiment_table.index.name = \"condition\"\n", + "experiment_table[\"interpretation\"] = pd.Series(behavior)\n", + "for species in [\"A\", \"C\", \"D\"]:\n", + " experiment_table[f\"input {species}\"] = [inputs[name][species] for name in inputs]\n", + "for species in [\"B\", \"W\"]:\n", + " experiment_table[f\"inhibit {species}\"] = [inhibitors[name].get(species, 0) for name in inputs]\n", + "for species in [\"Y\", \"Z\"]:\n", + " experiment_table[f\"readout {species}\"] = [measurements[name][species] for name in inputs]\n", + "\n", + "experiment_table" + ] + }, + { + "cell_type": "markdown", + "id": "013eca6a", + "metadata": {}, + "source": [ + "## Fit one pathway to the complete experiment\n", + "\n", + "All six conditions are fitted together because they are assumed to probe the same underlying signaling network. The model first tries to reproduce the measured `Y` and `Z` responses. Among similarly fitting explanations, it prefers the one using fewer reactions.\n", + "\n", + "`lambda_reg` controls this preference for a smaller model. Its value is deliberately low here: agreement with the experimental readouts is more important than removing one additional reaction." ] }, { "cell_type": "code", "execution_count": 5, + "id": "92d6dbf8", "metadata": {}, "outputs": [ { "data": { - "image/png": "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ffv2Ure57LLLNH/+fLVr1075+fmaPn26rr76an333Xdq1qyZXC6XZx+n7vPkZ6dKT0/X+PHjK+CIAAAAUB4+31N68ODBM3727bffnlMxZREfH6/k5GTFxMSoa9euWrp0qS6++GK9/PLL5d5namqq8vPzPUtOTk4FVgwAAICz8TmUtm3bVsuXLz+tffr06ercubNP+woJCZG/v79yc3O92nNzc894z+ip6tatq6uuuko//PCDJHm282WfdrtdQUFBXgsAAACqjs+h1OFw6Pbbb1dKSop+//137d27V927d9e0adP05ptv+rSvgIAAxcbGyul0etpKSkrkdDo9E/OfTXFxsb799luFh4dLkqKjoxUWFua1T7fbrfXr15d5nwAAAKhaPt9TOmrUKP3P//yP7r33XrVr106//PKL4uLitGXLljKf3fwjh8OhAQMGqGPHjurcubNmzpypgoICz9P4ycnJatq0qdLT0yVJEyZMUJcuXdSyZUvl5eXpmWee0c8//6zBgwdLMh+wGjFihCZNmqRWrVopOjpaY8eOVUREhJKSknyuDwAAAJWvXFNCtWzZUm3atNG7774rSerTp0+5AunJbQ8ePKi0tDS5XC7FxMQoMzPT86BSdna2/Pz+e0L3119/1ZAhQ+RyudSoUSPFxsbqiy++UOvWrT19Ro0apYKCAg0dOlR5eXm69tprlZmZedok+wAAAKgebIZhGL5ssHbtWvXv31+NGzfW66+/rrVr18rhcKhXr17KyMhQo0aNKqvWKuN2uxUcHKz8/HzuLwVQqawYb8r7nWWY6Q/nCd9+8wPl58t44/M9pTfccIP69OmjdevW6YorrtDgwYP19ddfKzs7W23bti130QAAAKi9fL58v2LFCnXt2tWrrUWLFlq7dq2efvrpCisMAAAAtYfPZ0pPDaSeHfn5aezYsedcEAAAAGqfMofSG2+8Ufn5+Z71KVOmKC8vz7N++PBhr4eNAAAAgLIqcyj9+OOPvd4PP3nyZP3yyy+e9RMnTmjHjh0VWx0AAABqhTKH0lMf0vfxoX0AAADgjHy+pxQAAACoaGUOpTabTbZTJqk7dR0AAAAojzJPCWUYhgYOHCi73S5JOnbsmO6//341aNBAkrzuNwUAAAB8UeZQOmDAAK/1/v37n9YnOTn53CsCAABArVPmUPraa69VZh0AAACoxXjQCQAA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aSspKZHT6VR8fPyfbvvOO++osLBQ/fv3P+v37NmzR4cPH1Z4ePg51wwAAICKZ/nT9w6HQ3PnztXChQv1/fffKyUlRQUFBRo0aJAkKTk5WampqadtN2/ePCUlJemiiy7yaj969Kgee+wxrVu3Tj/99JOcTqduvfVWtWzZUomJiVVyTAAAAPCN5feU9unTRwcPHlRaWppcLpdiYmKUmZnpefgpOztbfn7e2XnHjh36/PPPtWLFitP25+/vry1btmjhwoXKy8tTRESEevTooYkTJzJXKQAAQDVlMwzDsLqI6sbtdis4OFj5+fncXwqgUlkx3jDGoarZbFZXgIria2r0Zbwp8+X748ePa9SoUWrZsqU6d+582uT2ubm58vf3961SAAAAQD6E0qefflqLFi3S/fffrx49esjhcOjvf/+7Vx9OugIAAKA8ynxP6RtvvKFXX31VN910kyRp4MCB6tWrlwYNGuQ5a2rj/DwAAADKocxnSvfu3as2bdp41lu2bKnVq1friy++0L333nvGtyUBAAAAZ1PmUBoWFqZdu3Z5tTVt2lSrVq3Sl19+qYEDB1Z0bQAAAKglyhxKb7jhBr355puntUdEROiTTz7R7t27K7QwAAAA1B5lvqd07Nix2r59e6mfNW3aVGvWrNHKlSsrrDAAAADUHmUOpZdccokuueSSM34eERGhAQMGVEhRAAAAqF0sf80oAAAAQCgFAACA5QilAAAAsByhFAAAAJYjlAIAAMByFRZKBwwYoBtuuKGidgcAAIBapMxTQp1N06ZN5efHiVcAAAD4rsJC6eTJkytqVwAAAKhlzunUpmEYMgyjomoBAABALVWuUDpv3jy1adNGgYGBCgwMVJs2bfTqq69WdG0AAACoJXy+fJ+WlqYZM2Zo+PDhio+PlyRlZWVp5MiRys7O1oQJEyq8SAAAANRsPofSOXPmaO7cuerXr5+n7ZZbblG7du00fPhwQikAAAB85vPl++PHj6tjx46ntcfGxurEiRMVUhQAAABqF59D6b333qs5c+ac1v7KK6/onnvuKVcRs2fPVlRUlAIDAxUXF6cNGzacse+CBQtks9m8lsDAQK8+hmEoLS1N4eHhqlevnhISErRz585y1QYAAIDKV64poebNm6cVK1aoS5cukqT169crOztbycnJcjgcnn4zZsw4676WLFkih8OhjIwMxcXF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nj3m0/PPP2+GUYfDfLoeAACUi8+hdNSoUcrKytJnn32mdu3aqV27drLb7dqyZYv+9re/+bSvgIAAxcbGyul0etpKSkrkdDo9b4s6m+LiYn377bcKDw+XJEVHRyssLMxrn263W+vXry/zPgGPo0elZ56RoqPN4Ll/v/SXv0gvvWResn/oIXPeUQAAcE7KNSVUy5Yt1aZNG7377ruSpD59+pT7LKTD4dCAAQPUsWNHde7cWTNnzlRBQYEGDRokSUpOTlbTpk2Vnp4uSZowYYK6dOmili1bKi8vT88884x+/vlnDR48WJL51P+IESM0adIktWrVyjMlVEREhJKSkspVI2oht9u8TD9jhnT4sNkWHS2NGSMlJ0sBAdbWBwBADeNzKF27dq369++vxo0ba8uWLVq7dq2GDx+uDz/8UBkZGWrUqJFP++vTp48OHjyotLQ0uVwuxcTEKDMz0/OgUnZ2tvz8/ntC99dff9WQIUPkcrnUqFEjxcbG6osvvlDr1q09fUaNGqWCggINHTpUeXl5uvbaa5WZmckcpTi7vDzphRfMS/Unpx1r1cp8cOnuu8331AMAgArn8zyldrtdI0eO1MSJE1X3/35B79q1S/3791dOTo7nKfjzmRXzBsJihw9LM2eagdTtNtsuv1x68kmpTx+pTrkuKgBnxTylsALzlKK8qtU8pStWrFDXrl292lq0aKG1a9fq6aef9nV3gLUOHjSfnJ8927x/VJLatJHGjpVuv13y97e2PgAAagmfQ+mpgfQkPz8/jR079pwLAqqEyyVNny7NmWM+WS9JMTFSWpp0662Sn8/PAAIAgHNQ5t+8N954o/Lz8z3rU6ZM8XrV5+HDh73u6wSqpb17pYcfNh9aevZZM5B26iT961/Spk3S3/5GIAUAwAJl/u378ccfe70ffvLkyfrll1886ydOnNCOHTsqtjqgomRnSw88YM4z+sIL5iT48fHSRx9J69dLN9/MTU8AAFiozJfvT30eysfnowBr/PijlJ4uLVxovqdekv76V/My/Q03EEQBAKgmeKQYNdPOndLkydI//iEVF5tt3bubDzCd4b5oAABgnTKHUpvNJtspZ5VOXQcs9/330tNPS2+9JZWUmG09e5ph9Oqrra0NAACckU+X7wcOHCi73S5JOnbsmO6//341+L/3ff/xflOgyn37rTRpkvTOO/+dRO2m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eo6WLFkih8OhcePGadOmTWrfvr0SExN14MABq0vz2Zo1a/Tggw9q3bp1WrlypY4fP64ePXqooKDA6tLO2ZdffqmXX35Z7dq1s7qUcvv11191zTXXqG7duvroo4+0bds2Pfvss2rUqJHVpfls6tSpmjNnjmbNmqXvv/9eU6dO1bRp0/Tiiy9aXVqZFBQUqH379po9e3apn0+bNk0vvPCCMjIytH79ejVo0ECJiYk6duxYFVeKc3Xw4EGVlJTIZrNZXQpQ8xk4J507dzYefPBBz3pxcbERERFhpKenW1hVxThw4IAhyVizZo3VpZyTI0eOGK1atTJWrlxpdO3a1Xj44YetLqlcHn/8cePaa6+1uowK0bt3b+N///d/vdpuu+0245577rGoovKTZLz33nue9ZKSEiMsLMx45plnPG15eXmG3W433nrrLQsqRHl9/fXXxhVXXGF8+umnVpcC1AqcKT0HRUVF2rhxoxISEjxtfn5+SkhIUFZWloWVVYz8/HxJUuPGjS2u5Nw8+OCD6t27t9e/p/PRv/71L3Xs2FF33nmnmjRpoquuukpz5861uqxyufrqq+V0OvWf//xHkvTNN9/o888/V69evSyu7Nzt3r1bLpfL6+ctODhYcXFxNWJcqC2++eYbdenSRbfccouuu+46q8vBecr4v9s+vv32Wy1ZskT//ve/tXv3bourqr6qxWtGz1eHDh1ScXGxQkNDvdpDQ0O1fft2i6qqGCUlJRoxYoSuueYatWnTxupyym3x4sXatGmTvvzyS6tLOWc//vij5syZI4fDoTFjxujLL7/UQw89pICAAA0YMMDq8nwyevRoud1uXX755fL391dxcbGefvpp3XPPPVaXds5cLpcklTounPwM1duWLVt0zTXX6NFHH9WkSZM87ceOHVNgYKCFleF8UlxcLH9/fy1dulQjRoxQcHCwGjRooMLCQr366quKjY21usRqhzOlKNWDDz6orVu3avHixVaXUm45OTl6+OGH9cYbb9SIXyQlJSXq0KGDJk+erKuuukpDhw7VkCFDlJGRYXVpPnv77bf1xhtv6M0339SmTZu0cOFCTZ8+XQsXLrS6NNRy+/fvV0xMjO666y6vQDp+/Hg99dRTOnHihIXV4XzgdrslSf7+/lq1apWGDBmiMWPG6Ntvv9XYsWO1detW3XjjjVq7dq3FlVY/hNJzEBISIn9/f+Xm5nq15+bmKiwszKKqzt2wYcP0wQcfaNWqVWrWrJnV5ZTbxo0bdeDAAXXo0EF16tRRnTp1tGbNGr3wwguqU6eOiouLrS7RJ+Hh4WrdurVX2xVXXKHs7GyLKiq/xx57TKNHj1bfvn3Vtm1b3XvvvRo5cqTS09OtLu2cnfxvv6aNC7VF/fr1dfXVVysrK0tbt26VZD649uyzz+qvf/2r6tThAiPObNOmTWrcuLG2bdum3377Te+++64eeOAB3X///dq3b58eeOAB3X777erSpYuSkpK0ceNGq0uuVgil5yAgIECxsbFyOp2etpKSEjmdTsXHx1tYWfkYhqFhw4bpvffe0yeffKLo6GirSzon3bt317fffqvNmzd7lo4dO+qee+7R5s2b5e/vb3WJPrnmmmtOm6LrP//5jy655BKLKiq/3377TX5+3sOPv7+/SkpKLKqo4kRHRyssLMxrXHC73Vq/fv15OS7UNsHBwfroo48UHh6u22+/XSNGjNAzzzyjpUuX6sYbb7S6PFRj33zzjbp166YRI0aodevWql+/vu6991716NFDeXl5uuWWW9SzZ08tXrxYgwYN0uHDh9W5c2fuNf8jq5+0Ot8tXrzYsNvtxoIFC4xt27YZQ4cONS688ELD5XJZXZrPUlJSjODgYGP16tXG/v37Pctvv/1mdWkV5nx++n7Dhg1GnTp1jKefftrYuXOn8cYbbxj169c3Xn/9datL89mAAQOMpk2bGh988IGxe/duY+nSpUZISIgxatQoq0srkyNHjhhff/218fXXXxuSjBkzZhhff/218fPPPxuGYRhTpkwxLrzwQuP99983tmzZYtx6661GdHS08fvvv1tcOUpz8OBBY926dcamTZs8bUeOHDFuvPFGw2azGRkZGRZWh/PBli1bjHr16hljx471aj/5+3PFihVGfHy8sXv3bsMwDGPdunVG7969jYceesjYvn17VZdbbRFKK8CLL75o/OUvfzECAgKMzp07G+vWrbO6pHKRVOry2muvWV1ahTmfQ6lhGMa///1vo02bNobdbjcuv/xy45VXXrG6pHJxu93Gww8/bPzlL38xAgMDjebNmxtPPPGEUVhYaHVpZbJq1apS/1sZMGCAYRjmtFBjx441QkNDDbvdbnTv3t3YsWOHtUWjVNu2bTO6du1q3HTTTUZycrLXZ/n5+cb//M//GM2bNze++eYbiypEdZednW1cfPHFxq233urVPmPGDGPkyJFGcXGxsXjxYsPPz8/47rvvDMMwjDFjxhj9+vUzjhw5YkHF1ZfNMHhNBQCg9vn22291/fXX64EHHtCQIUP0l7/8RZK0efNmhYWFKSwsTEePHtXNN9+sn376Sf/617/Utm1bi6tGdbNlyxYlJyerefPmGjx4sG688UY988wzeuqpp/Tvf/9bN9xwg7Kzs/XAAw9o7dq1at++vb766itlZWXx83QKQikAoNbZt2+fevTooR49emjGjBme9qlTpyo1NVWjR4/WI488oosuukhHjx5VUlKSvvzyS2VlZZ32wCFqJ7fbrYCAAAUGBmrDhg0aNWqULrroIl1wwQX68MMPtWTJEt1www2e/l9//bU++eQT/fLLL0pOTtZll11mYfXVE48RAgBqnY0bNyowMFB///vfVVJSIj8/P02fPl0TJ07Uww8/rGnTpslms8nhcOiiiy7Se++9p3vuuUcBAQFWl45qYP/+/UpOTtatt96q++67T507d9bUqVP1+OOPKzMzU6NHj/YE0hMnTqhOnTq66qqrdNVVV8kwDF5bewaEUgBArbNmzRr98ssvnrNVJ06cUFhYmJYtW6aEhAR17txZ99xzj4qKijR+/Hg1bNhQ77//PmECksw3Hfr7++vNN99UYGCg7rnnHsXFxem5556Tw+HQl19+qeXLl6t3796qU6eO53988Of4JwQAqBV27tzpmaqrYcOG8vPz08GDB1VcXKw6deronnvuUUJCggzDUL9+/XTfffdp3bp1nunjCKSQpOPHj8tut+v9999Xs2bN9Morr+iNN97Q77//rquuukpTp07VkSNH9NJLL+mjjz6SJK9Ays/RmRFKAQA13ubNm9WhQwfPXL/x8fH68ccftWzZslLnLD5+/Lj8/f0VFxfHGS5Iko4cOSJJqlu3riTJbrdr0aJF+stf/qKXX37ZE0xPXsovKirS5MmTtWLFCivLPq/wXxoAoEb75ptvdM0112jYsGF64IEHJEnXX3+9Bg4cqL///e966623JP33DFZJSYnGjRunf/3rXxo6dKgnhKD2+v7779WsWTP17dtXY8aM0Y8//qh9+/YpMDBQb7zxhi6//HK99NJLev311/Xbb7+pc+fOeuqpp3ThhRfqiiuusLr88wZP3wMAaqwtW7YoPj5eI0aM0NNPP+1pX7VqlVwul5YsWaJ///vfuv/++3XNNdfol19+0bp16/Thhx/K6XTqqquusrB6VAcnTpzQokWLNHjwYIWFhSk6Olo//vijQkJC1LNnT/Xs2VOdOnXSwIED9fvvv+uOO+7Q3XffrXr16unYsWMKDAy0+hDOGzzoBACokXJyctS9e3fddNNNXoF0woQJeu211+R0OhUbG6sOHTro+eef1xtvvKHw8HDFxMTo888/Z+on6LvvvtPSpUs1YsQIHThwQE888YRefPFFhYSEaNu2bVq0aJEWL16ssLAwhYaGas2aNdqxY4fn4Se73W71IZxXuHwPAKiRiouLFR0drWPHjmnt2rWSpClTpujFF1/U7Nmz1bx5c1166aVKS0vTd999p82bN2vt2rVasGABgRT65ptv1LZtW9WpU0cNGzbU6NGj5XA4dO+992rfvn1KSUnRqlWr9M033+iuu+7SlVdeqYCAAP3222/q0qWLJB5q8hWX7wEANdbOnTv10EMPKSAgQKGhoVq2bJlef/119ejRw2u+yG3bthFE4bFt2zZ17NhRo0aN0lNPPeX12eOPP67nnntO8+fPV//+/b0++/HHH9WwYUNdfPHFVVhtzUEoBQDUaP/5z380bNgwff7555o4caIeeeQRnfzVZ7PZNHbsWC1YsEDffvutgoODObtVy23dulXdunXTxRdfrG3btkkyZ2P44wNvo0eP1owZM7Rw4UL169fPqlJrHC7fAwBqtEsvvVRz5szRddddJ6fTqc8++0w2m002m01paWmaPn26li1bpgsvvJBAWst98803iouLU5s2bZSfn6+HH35YkjkNVHFxsafflClT5HA4NGTIEL322mtWlVvjcKYUAFArnLyUbxiG0tPTtXLlSo0bN06ff/65YmNjrS4PFvvqq6909dVX64knntCTTz6pefPm6YknntDdd9+t559/XpJ5n/If57UdNmyY3nnnHe3cuVNBQUFWlV5jEEoBALXGzp075XA4tGHDBv3666/KysoikEKS9Omnn+rdd9/1BND8/HwtWbLkrMH0wIEDatKkiSU11zSEUgBArbJjxw6NGjVKkydP1pVXXml1OaiGTj4E53a7tXjx4tOC6YkTJ1SnDrNqVjRCKQCg1jn1wRXgTP4YTO+9917NmDHD6pJqLGI+AKDWIZCirIKCgtS3b1/5+flp6NChstvtSk9Pt7qsGolQCgAA8CeCgoJ05513qm7duoqPj7e6nBqLy/cAAABl8McXLqDiMU8pAABAGRBIKxehFAAAAJYjlAIAAMByhFIAAABYjlAKAAAAyxFKAQAAYDlCKQAAACxHKAUAAIDlCKUAAACwHKEUAAAAliOUAgAAwHKEUgAAAFju/wPudo4GOjvDrAAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "'optimal'" ] }, + "execution_count": 5, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "cno.plot_data(exp_list_G1_and)" + "method = CellNOptILP(lambda_reg=1e-3)\n", + "problem = method.build_many(\n", + " pkn,\n", + " inputs=inputs,\n", + " measurements=measurements,\n", + " inhibitors=inhibitors,\n", + ")\n", + "result = problem.solve(solver=\"SCIPY\")\n", + "result.status" ] }, { - "cell_type": "code", - "execution_count": 6, + "cell_type": "markdown", + "id": "28a99a87", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter Username\n", - "Set parameter LicenseID to value 2593994\n", - "Academic license - for non-commercial use only - expires 2025-12-02\n" - ] - } - ], "source": [ - "P = cno.cellnoptILP(G1_prep, exp_list_G1_and, verbose=False)" + "## Which signaling reactions are supported?\n", + "\n", + "The fitted model retains `D → B`, both AND gates, and three alternative routes to `Y`. Together, these reactions explain why different interventions can produce different combinations of `Y` and `Z` activity.\n", + "\n", + "The direct shortcuts to `Z` and the feedback reactions are not needed for these observations. They remain in the PKN as biological possibilities, but this particular endpoint experiment does not support including them in the smaller fitted model." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, + "id": "810e64c4", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAIYCAYAAABUjJWZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABmc0lEQVR4nO3df3zN9f//8fvZtDNkC3vbMZafpbxtVmNrSpR9TMk7n37ROw3fqChvOpWsdyaphuStIiQ/5lsi77fU+63Ed2+jNJbfFEvCVpxh7BwmG2ev7x/ezruTYWe2vWa7XS+X1yWv5+v5ep7HS6fnefT68XhZDMMwBAAAAJjIz+wAAAAAAJJSAAAAmI6kFAAAAKYjKQUAAIDpSEoBAABgOpJSAAAAmI6kFAAAAKYjKQUAAIDpSEoBAABgOpJSAAAAmI6kFLiAefPmyWKxeJZatWqpSZMmGjBggH755RezwwMAn/x+TgsMDNT111+vp59+Wrm5ueX2Oe+++67mzZtXbuOh5qhldgBAVffKK6+oRYsWOnXqlNatW6d58+bp66+/1o4dOxQYGGh2eADgk9/OaV9//bWmT5+uzz//XDt27FCdOnUue/x3331XISEhGjBgwOUHixqFpBS4hLvuuksdOnSQJA0aNEghISGaMGGCPvvsMz300EMmRwcAvvn9nNawYUNNnjxZn376qR5++OEyj3vy5MlySWpRc3H5HvBR586dJUl79uyRJBUVFSk5OVnR0dEKDg5W3bp11blzZ61ateq8fRcuXKjo6GjVq1dPQUFBioiI0FtvvVWp8QPAb915552SpL1790qSPvjgA0VHR6t27dpq0KCB+vbtq5ycHK99unbtqnbt2mnjxo26/fbbVadOHb344otq3ry5vvvuO61evdpzm0DXrl0r+5BwheJMKeCjffv2SZLq168vSXK5XHr//ff18MMPa/DgwTp+/Lhmz56thIQEZWZmKioqSpK0cuVKPfzww+rWrZsmTJggSdq5c6fWrl2r4cOHm3EoAOD5H+yGDRvqtdde0+jRo/XQQw9p0KBBOnz4sN555x3dfvvt2rx5s6655hrPfnl5ebrrrrvUt29f9evXT6GhoeratauGDRumq6++Wn/9618lSaGhoWYcFq5AJKXAJTidTh05ckSnTp3S+vXrNXbsWFmtVt1zzz2Szian+/btU0BAgGefwYMH64YbbtA777yj2bNnS5KWLVumoKAgffnll/L39zflWADgt3Pa2rVr9corr6h27drq0aOHWrVqpVdffVUvvviip/99992nm266Se+++65Xu8Ph0IwZM/TEE094jf/SSy8pJCRE/fr1q7RjQvVAUgpcQnx8vNd68+bN9cEHH6hp06aSJH9/f0+SWVxcrPz8fBUXF6tDhw7atGmTZ79rrrlGBQUFWrlypXr06FF5BwAAv/H7Oa1Zs2b68MMPtWTJEhUXF+uhhx7SkSNHPNttNpuuu+46rVq1yisptVqtGjhwYKXFjeqPpBS4hGnTpun666+X0+nUnDlztGbNGlmtVq8+qampevPNN7Vr1y6dPn3a096iRQvPn4cOHaqPP/5Yd911l5o0aaLu3bvroYceIkEFUKnOzWm1atVSaGio2rRpIz8/P3366acyDEPXXXddiftdddVVXutNmjTxukIEXC6SUuASYmJiPE+q9u7dW7fddpv+/Oc/KysrS1dffbU++OADDRgwQL1799bzzz+vRo0ayd/fXykpKZ57tSSpUaNG2rJli7788kt98cUX+uKLLzR37lwlJiYqNTXVrMMDUMP8dk77reLiYlksFn3xxRcl3mJ09dVXe63Xrl27wmJEzURSCvjgXLJ5xx13aOrUqRo1apT+/ve/q2XLllqyZIksFoun75gxY87bPyAgQL169VKvXr1UXFysoUOHaubMmRo9erRat25dmYcCAF5atWolwzDUokULXX/99WUe57fzIOALSkIBPuratatiYmI0ZcoUnTp1ynNGwTAMT5/169crIyPDa7+8vDyvdT8/P0VGRkqSCgsLKzhqALi4++67T/7+/ho7dqzXfCadnd9+P4ddSN26dZWfn39e++nTp7Vr1y4dPHiwPMJFNcSZUqAMnn/+eT344IOaN2+e7rnnHi1ZskT/+7//q549e2rv3r2aMWOG2rZtqxMnTnj2GTRokI4ePao777xTTZs21f79+/XOO+8oKipKN954o4lHAwDyPHmflJSkffv2qXfv3qpXr5727t2rTz75RI8//riee+65S44THR2t6dOn69VXX1Xr1q3VqFEj3Xnnnfrll1904403qn///ryGFCUiKQXK4L777lOrVq00adIkZWVlyeFwaObMmfryyy/Vtm1bffDBB1q8eLHS09M9+/Tr10/vvfee3n33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r7zyik/jLVq0SHa7XTNmzFBsbKymTJmihIQEZWVlqVGjRiXuExQUpKysLM+6xWLx2j5x4kS9/fbbSk1NVYsWLTR69GglJCTo+++/Py+BBQAAgPl8PlN6+vRpdejQ4bz26OhonTlzxucAJk+erMGDB2vgwIFq27atZsyYoTp16mjOnDkX3Mdischms3mW0NBQzzbDMDRlyhS99NJLuvfeexUZGan58+frwIEDWrp0qc/xAQAAoOL5nJQ++uijmj59+nnt7733nh555BGfxioqKtLGjRsVHx//34D8/BQfH6+MjIwL7nfixAk1a9ZM4eHhuvfee/Xdd995tu3du1cOh8NrzODgYMXGxl5wzMLCQrlcLq8FAAAAladMJaFmz56tFStW6JZbbpEkrV+/XtnZ2UpMTJTdbvf0mzx58kXHOXLkiNxut9eZTkkKDQ3Vrl27StynTZs2mjNnjiIjI+V0OjVp0iR16tRJ3333nZo2bSqHw+EZ4/djntv2eykpKRo7duzFDxoAAAAVxuekdMeOHbr55pslSXv27JEkhYSEKCQkRDt27PD0+/19nuUlLi5OcXFxnvVOnTrpxhtv1MyZMzVu3LgyjZmUlOSVTLtcLoWHh192rAAAACgdn5PSVatWlduHh4SEyN/fX7m5uV7tubm5stlspRrjqquu0k033aQff/xRkjz75ebmqnHjxl5jRkVFlTiG1WqV1WotwxEAAACgPPh8T+nhw4cvuG379u0+jRUQEKDo6GilpaV52oqLi5WWluZ1NvRi3G63tm/f7klAW7RoIZvN5jWmy+XS+vXrSz0mAAAAKpfPSWlERISWLVt2XvukSZMUExPjcwB2u12zZs1Samqqdu7cqSFDhqigoEADBw6UJCUmJiopKcnT/5VXXtGKFSv0008/adOmTerXr5/279+vQYMGSTp728CIESP06quv6rPPPtP27duVmJiosLAw9e7d2+f4AAAAUPF8vnxvt9t1//33a+DAgZo8ebKOHj2qxMREbd++XQsWLPA5gD59+ujw4cNKTk6Ww+FQVFSUli9f7nlQKTs7W35+/82djx07psGDB8vhcKh+/fqKjo7WN998o7Zt23r6jBw5UgUFBXr88ceVn5+v2267TcuXL6dGKQAAQBVlMcrw8vrNmzfr0UcfVWFhoY4eParY2FjNmTOn1PeBVnUul0vBwcFy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uRk/frwsFotGjBhhdihl9ssvv6hfv35q2LChateurYiICG3YsMHssHzmdrs1evRotWjRQrVr11arVq00btw4XSnFQNasWaNevXopLCxMFotFS5cu9dpuGIaSk5PVuHFj1a5dW/Hx8dq9e7c5waJcXCnfTeBKRlJ6mRYtWiS73a4xY8Zo06ZNat++vRISEnTo0CGzQ/PZ6tWr9dRTT2ndunVauXKlTp8+re7du6ugoMDs0C7bt99+q5kzZyoyMtLsUMrs2LFjuvXWW3XVVVfpiy++0Pfff68333xT9evXNzs0n02YMEHTp0/X1KlTtXPnTk2YMEETJ07UO++8Y3ZopVJQUKD27dtr2rRpJW6fOHGi3n77bc2YMUPr169X3bp1lZCQoFOnTlVypLhchw8fVnFxsSwWi9mhANWfgcsSExNjPPXUU551t9tthIWFGSkpKSZGVT4OHTpkSDJWr15tdiiX5fjx48Z1111nrFy50ujSpYsxfPhws0MqkxdeeMG47bbbzA6jXPTs2dP4P//n/3i13XfffcYjjzxiUkRlJ8n45JNPPOvFxcWGzWYz3njjDU9bfn6+YbVajY8++siECFFWmzdvNm688UZjzZo1ZocC1AicKb0MRUVF2rhxo+Lj4z1tfn5+io+PV0ZGhomRlQ+n0ylJatCggcmRXJ6nnnpKPXv29Pr3dCX67LPP1KFDBz344INq1KiRbrrpJs2aNcvssMqkU6dOSktL0w8//CBJ2rp1q77++mvdddddJkd2+fbu3SuHw+H1fQsODlZsbGy1mBdqiq1bt+qWW27Rn/70J3Xu3NnscHCFMv5z28f27du1aNEi/fOf/9TevXtNjqrqqmV2AFeyI0eOyO12KzQ01Ks9NDRUu3btMimq8lFcXKwRI0bo1ltvVbt27cwOp8wWLlyoTZs26dtvvzU7lMv2008/afr06bLb7XrxxRf17bff6i9/+YsCAgLUv39/s8PzyahRo+RyuXTDDTfI399fbrdbr732mh555BGzQ7tsDodDkkqcF85tQ9W2bds23XrrrXruuef06quvetpPnTqlwMBAEyPDlcTtdsvf319LlizRiBEjFBwcrLp166qwsFDvv/++oqOjzQ6xyuFMKUr01FNPaceOHVq4cKHZoZRZTk6Ohg8frg8//LBa/JAUFxfr5ptv1uuvv66bbrpJjz/+uAYPHqwZM2aYHZrPPv74Y3344YdasGCBNm3apNTUVE2aNEmpqalmh4Ya7uDBg4qKitJDDz3klZCOHTtWL7/8ss6cOWNidLgSuFwuSZK/v79WrVqlwYMH68UXX9T27ds1evRo7dixQ3fffbfWrl1rcqRVD0npZQgJCZG/v79yc3O92nNzc2Wz2UyK6vI9/fTT+te//qVVq1apadOmZodTZhs3btShQ4d08803q1atWqpVq5ZWr16tt99+W7Vq1ZLb7TY7RJ80btxYbdu29Wq78cYblZ2dbVJEZff8889r1KhR6tu3ryIiIvToo4/qmWeeUUpKitmhXbZz/+1Xt3mhpqhTp446deqkjIwM7dixQ9LZB9fefPNN3X777apViwuMuLBNmzapQYMG+v7773Xy5En94x//0NChQ/Xkk0/qwIEDGjp0qO6//37dcsst6t27tzZu3Gh2yFUKSellCAgIUHR0tNLS0jxtxcXFSktLU1xcnImRlY1hGHr66af1ySef6N///rdatGhhdkiXpVu3btq+fbu2bNniWTp06KBHHnlEW7Zskb+/v9kh+uTWW289r0TXDz/8oGbNmpkUUdmdPHlSfn7e04+/v7+Ki4tNiqj8tGjRQjabzWtecLlcWr9+/RU5L9Q0wcHB+uKLL9S4cWPdf//9GjFihN544w0tWbJEd999t9nhoQrbunWr7rjjDo0YMUJt27ZVnTp19Oijj6p79+7Kz8/Xn/70J/Xo0UMLFy7UwIEDlZeXp5iYGO41/y2zn7S60i1cuNCwWq3GvHnzjO+//954/PHHjWuuucZwOBxmh+azIUOGGMHBwUZ6erpx8OBBz3Ly5EmzQys3V/LT95mZmUatWrWM1157zdi9e7fx4YcfGnXq1DE++OADs0PzWf/+/Y0mTZoY//rXv4y9e/caS5YsMUJCQoyRI0eaHVqpHD9+3Ni8ebOxefNmQ5IxefJkY/Pmzcb+/fsNwzCM8ePHG9dcc43x6aefGtu2bTPuvfdeo0WLFsavv/5qcuQoyeHDh41169YZmzZt8rQdP37cuPvuuw2LxWLMmDHDxOhwJdi2bZtRu3ZtY/To0V7t534/V6xYYcTFxRl79+41DMMw1q1bZ/Ts2dP4y1/+Yuzatauyw62ySErLwTvvvGNce+21RkBAgBETE2OsW7fO7JDKRFKJy9y5c80OrdxcyUmpYRjGP//5T6Ndu3aG1Wo1brjhBuO9994zO6QycblcxvDhw41rr73WCAwMNFq2bGn89a9/NQoLC80OrVRWrVpV4n8r/fv3NwzjbFmo0aNHG6GhoYbVajW6detmZGVlmRs0SvT9998bXbp0Me655x4jMTHRa5vT6TT+53/+x2jZsqWxdetWkyJEVZednW384Q9/MO69916v9smTJxvPPPOM4Xa7jYULFxp+fn7Gd999ZxiGYbz44ovGww8/bBw/ftyEiKsui2HwmgoAQM2zfft2de3aVUOHDtXgwYN17bXXSpK2bNkim80mm82mEydOqFevXtq3b58+++wzRUREmBw1qppt27YpMTFRLVu21KBBg3T33XfrjTfe0Msvv6x//vOfuvPOO5Wdna2hQ4dq7dq1at++vTZs2KCMjAy+T79DUgoAqHEOHDig7t27q3v37po8ebKnfcKECUpKStKoUaP07LPPqmHDhjpx4oR69+6tb7/9VhkZGec9cIiayeVyKSAgQIGBgcrMzNTIkSPVsGFDXX311fr888+1aNEi3XnnnZ7+mzdv1r///W8dPXpUiYmJatOmjYnRV008RggAqHE2btyowMBAPfHEEyouLpafn58mTZqkcePGafjw4Zo4caIsFovsdrsaNmyoTz75RI888ogCAgLMDh1VwMGDB5WYmKh7771Xjz32mGJiYjRhwgS98MILWr58uUaNGuVJSM+cOaNatWrppptu0k033STDMHht7QWQlAIAapzVq1fr6NGjnrNVZ86ckc1m09KlSxUfH6+YmBg98sgjKioq0tixY1WvXj19+umnJBOQdPZNh/7+/lqwYIECAwP1yCOPKDY2Vn/7299kt9v17bffatmyZerZs6dq1arl+R8fXBx/QwCAGmH37t2eUl316tWTn5+fDh8+LLfbrVq1aumRRx5RfHy8DMPQww8/rMcee0zr1q3zlI8jIYUknT59WlarVZ9++qmaNm2q9957Tx9++KF+/fVX3XTTTZowYYKOHz+ud999V1988YUkeSWkfI8ujKQUAFDtbdmyRTfffLOn1m9cXJx++uknLV26tMSaxadPn5a/v79iY2M5wwVJ0vHjxyVJV111lSTJarVq/vz5uvbaazVz5kxPYnruUn5RUZFef/11rVixwsywryj8lwYAqNa2bt2qW2+9VU8//bSGDh0qSeratasGDBigJ554Qh999JGk/57BKi4u1pgxY/TZZ5/p8ccf9yQhqLl27typpk2bqm/fvnrxxRf1008/6cCBAwoMDNSHH36oG264Qe+++64++OADnTx5UjExMXr55Zd1zTXX6MYbbzQ7/CsGT98DAKqtbdu2KS4uTiNGjNBrr73maV+1apUcDocWLVqkf/7zn3ryySd166236ujRo1q3bp0+//xzpaWl6aabbjIxelQFZ86c0fz58zVo0CDZbDa1aNFCP/30k0JCQtSjRw/16NFDHTt21IABA/Trr7/qgQce0J///GfVrl1bp06dUmBgoNmHcMXgQScAQLWUk5Ojbt266Z577vFKSF955RXNnTtXaWlpio6O1s0336y33npLH374oRo3bqyoqCh9/fXXlH6CvvvuOy1ZskQjRozQoUOH9Ne//lXvvPOOQkJC9P3332v+/PlauHChbDabQkNDtXr1amVlZXkefrJarWYfwhWFy/cAgGrJ7XarRYsWOnXqlNauXStJGj9+vN555x1NmzZNLVu21PXXX6/k5GR999132rJli9auXat58+aRkEJbt25VRESEatWqpXr16mnUqFGy2+169NFHdeDAAQ0ZMkSrVq3S1q1b9dBDD+mPf/yjAgICdPLkSd1yyy2SeKjJV1y+BwBUW7t379Zf/vIXBQQEKDQ0VEuXLtUHH3yg7t27e9WL/P7770lE4fH999+rQ4cOGjlypF5++WWvbS+88IL+9re/ac6cOerXr5/Xtp9++kn16tXTH/7wh0qMtvogKQUAVGs//PCDnn76aX399dcaN26cnn32WZ376bNYLBo9erTmzZun7du3Kzg4mLNbNdyOHTt0xx136A9/+IO+//57SWerMfz2gbdRo0Zp8uTJSk1N1cMPP2xWqNUOl+8BANXa9ddfr+nTp6tz585KS0vTV199JYvFIovFouTkZE2aNElLly7VNddcQ0Jaw23dulWxsbFq166dnE6nhg8fLulsGSi32+3pN378eNntdg0ePFhz5841K9xqhzOlAIAa4dylfMMwlJKSopUrV2rMmDH6+uuvFR0dbXZ4MNmGDRvUqVMn/fWvf9VLL72k2bNn669//av+/Oc/66233pJ09j7l39a1ffrpp7V48WLt3r1bQUFBZoVebZCUAgBqjN27d8tutyszM1PHjh1TRkYGCSkkSWvWrNE//vEPTwLqdDq1aNGiSyamhw4dUqNGjUyJubohKQUA1ChZWVkaOXKkXn/9df3xj380OxxUQecegnO5XFq4cOF5iemZM2dUqxZVNcsbSSkAoMb5/YMrwIX8NjF99NFHNXnyZLNDqrZI8wEANQ4JKUorKChIffv2lZ+fnx5//HFZrValpKSYHVa1RFIKAABwEUFBQXrwwQd11VVXKS4uzuxwqi0u3wMAAJTCb1+4gPJHnVIAAIBSICGtWCSlAAAAMB1JKQAAAExHUgoAAADTkZQCAADAdCSlAAAAMB1JKQAAAExHUgoAAADTkZQCAADAdCSlAAAAMB1JKQAAAExHUgoAAADT/X/X2et+aLQhZAAAAABJRU5ErkJggg==", + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
reactionselected
0D -> B1
1X -> Y1
2X -> W1
3C -> Y1
4NOT D -> Y1
5W -> Z0
6C -> Z0
7Y -> Z0
8Z -> X0
9NOT Z -> W0
10A AND NOT B -> X1
11W AND C -> Z1
\n", + "
" + ], "text/plain": [ - "
" + " reaction selected\n", + "0 D -> B 1\n", + "1 X -> Y 1\n", + "2 X -> W 1\n", + "3 C -> Y 1\n", + "4 NOT D -> Y 1\n", + "5 W -> Z 0\n", + "6 C -> Z 0\n", + "7 Y -> Z 0\n", + "8 Z -> X 0\n", + "9 NOT Z -> W 0\n", + "10 A AND NOT B -> X 1\n", + "11 W AND C -> Z 1" ] }, + "execution_count": 6, "metadata": {}, - "output_type": "display_data" + "output_type": "execute_result" } ], "source": [ - "cno.plot_fitness(G1, exp_list_G1_and, P, measured_only=True)" + "def reaction_label(reaction):\n", + " literals = [str(node) for node in reaction.positive_literals]\n", + " literals += [f\"NOT {node}\" for node in reaction.negative_literals]\n", + " return f\"{' AND '.join(literals)} -> {reaction.product}\"\n", + "\n", + "reaction_labels = [reaction_label(reaction) for reaction in method.reactions]\n", + "selected = np.rint(problem.expr.reaction_selected.value).astype(int).reshape(-1)\n", + "pd.DataFrame({\"reaction\": reaction_labels, \"selected\": selected})" + ] + }, + { + "cell_type": "markdown", + "id": "43c08897", + "metadata": {}, + "source": [ + "### Compare the candidate network with the fitted model\n", + "\n", + "This plot shows the complete candidate network. Reactions retained in the fitted model use the main styling; alternatives that were available but not selected are pale and dotted.\n", + "\n", + "Keeping the unselected reactions visible is useful here. It shows that the feedback loops and shortcuts were offered to the model rather than silently removed from the PKN." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, + "id": "95f30c93", "metadata": {}, "outputs": [ { @@ -387,171 +717,282 @@ "\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "EGF\n", - "\n", - "EGF\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "AND1\n", - "\n", - "AND1\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "EGF->AND1\n", - "\n", - "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "Ras\n", - "\n", - "Ras\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", "\n", - "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "TNFa\n", - "\n", - "TNFa\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "TNFa->AND1\n", - "\n", - "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", "\n", - "\n", + "\n", "\n", - "e_5_target\n", - "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "Ras->e_5_target\n", - "\n", - "\n", + "W->Z\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "e_6_source\n", - "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", + "\n", "\n", - "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "e_6_source->EGF\n", - "\n", - "\n", + "C->Z\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "e_7_source\n", - "\n", "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 8, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "G1_prep.plot(custom_edge_attr=cno.cno_style(P, flow_name=\"edge_activates\", scale=None, iexp=3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Tasks: \n", - "1. modify the experiments so that it corresponds to a scenario where only EGF could activate RAS, but not TNFa. \n", - "2. modify the experiments so that it corresponds to a scenario where both TNFa or EGF could activate RAS.\n" + "plot_cellnopt_model(method, show_unselected=True)" ] }, { "cell_type": "markdown", + "id": "269f1115", "metadata": {}, "source": [ - "## Inhibition: !EGF activates RAS\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's define the same network but now we will add an inhibition of EGF on RAS. This means that if EGF is active, RAS should be inactive.\n", - "Note the difference in the definition of the prior knowledge network.\n", + "### Inspect the fitted signaling model\n", "\n", - "We also change the experiments so that the output RAS is active only when TNFa is active." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# Test graph\n", - "G2 = cn.Graph.from_sif_tuples(\n", - " [\n", - " (\"EGF\", -1, \"AND1\"),\n", - " (\"TNFa\", 1, \"AND1\"),\n", - " (\"AND1\", 1, \"Ras\"),\n", - " (\"EGF\", -1, \"Ras\"),\n", - " (\"TNFa\", 1, \"Ras\"),\n", - " ]\n", - ")\n", + "Hiding unselected reactions leaves the signaling hypothesis supported by this experiment. `D → B` controls the first AND gate, `X` branches toward `Y` and `W`, and the second AND gate combines `W` with `C` to activate `Z`. Separate routes can activate `Y` under different perturbations.\n", "\n", - "# RAS is only active iff both EGF and TNFa are active -> we need to idetify the AND gate\n", - "exp_list_G2_egf = {\n", - " \"exp0\": {\"input\": {\"EGF\": 0, \"TNFa\": 0}, \"output\": {\"Ras\": 1}},\n", - " \"exp1\": {\"input\": {\"EGF\": 1, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp2\": {\"input\": {\"EGF\": 0, \"TNFa\": 1}, \"output\": {\"Ras\": 1}},\n", - " \"exp3\": {\"input\": {\"EGF\": 1, \"TNFa\": 1}, \"output\": {\"Ras\": 0}},\n", - "}" + "This is the shared pathway diagram. The next plots show how much of it is active in each condition." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, + "id": "386f1f50", "metadata": {}, "outputs": [ { @@ -560,138 +1001,248 @@ "\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "EGF\n", - "\n", - "EGF\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "AND1\n", - "\n", - "AND1\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "Ras\n", - "\n", - "Ras\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "TNFa\n", - "\n", - "TNFa\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "TNFa->AND1\n", - "\n", - "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", "\n", - "\n", + "\n", "\n", - "e_5_target\n", - "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", "\n", - "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "e_6_source\n", - "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", "\n", - "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "e_7_source\n", - "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "e_7_source->TNFa\n", - "\n", - "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 10, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "G2_prep = cno.expand_graph_for_flows(G2, exp_list_G2_egf)\n", - "G2_prep.plot()" + "plot_cellnopt_model(method)" ] }, { - "cell_type": "code", - "execution_count": 11, + "cell_type": "markdown", + "id": "f0aa9784", "metadata": {}, - "outputs": [], "source": [ - "P2 = cno.cellnoptILP(G2_prep, exp_list_G2_egf, verbose=False)" + "## Does the model reproduce the measured responses?\n", + "\n", + "Each row is one intervention condition, and the `Y` and `Z` panels match the readout columns in the experiment table:\n", + "\n", + "- red open circles show the measured endpoint response;\n", + "- blue squares show the model prediction;\n", + "- a vertical segment would show a disagreement;\n", + "- the background color summarizes the prediction error.\n", + "\n", + "Only measured signaling responses are shown in this main fit view. Predicted activities of unmeasured internal proteins are inspected later, where they are clearly distinguished from experimental observations." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 9, + "id": "9438b958", "metadata": {}, "outputs": [ { "data": { - "image/png": "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ERER2b5qN6UffPABVq9ejZdffhmDBg2CWq3GSy+9ZDaHnwQgIiIiopqo9o1O33zzDb766is89dRTAICxY8di8ODBiI6ONr1rKuGHRoiIiIioBqr9TunZs2fh7+9vety+fXukpKRgz549GD16dJVf4UlEREREdD/VbkoVCgVOnDhhNtayZUts27YNe/fuxdixY2u7NiIiIiKyE9VuSgcOHIg1a9ZUGPf29sbvv/+OvLy8Wi2MiIiIiOxHtT9TOnPmTBw5cqTS51q2bInt27dj69attVYYEREREdmPajelbdq0QZs2bap83tvbG2PGjKmVooiIiIjIvjA8n4iIiIhEx6aUiIiIiETHppSIiIiIRMemlIiIiIhEx6aUiIiIiERXa03pmDFjMHDgwNo6HBERERHZkWpHQt1Py5YtIZXyjVciIiIislytNaUffvhhbR2KiIiIiOzMA721KQgCBEGorVqIiIiIyE7VqCldvnw5/P394eTkBCcnJ/j7++Orr76q7dqIiIiIyE5Y3JTGx8dj0qRJGDp0KNavX4/169dj6NChmDJlCuLj42tURGJiInx9feHk5ASlUomMjIwq565atQoSicRsc3JyMpsjCALi4+Ph5eUFZ2dnqFQqHDt2rEa1EREREVHds/gzpUuWLMGyZcswcuRI09iwYcPQpUsXTJw4Ee+++65Fx1u3bh3UajWWLl0KpVKJTz/9FGFhYTh69ChatGhR6T5ubm44evSo6bFEIjF7ft68efj888+RlJQEPz8/zJw5E2FhYTh06FCFBpaIiIiIxGfxO6U3btxAjx49KowHBQXh5s2bFhewYMECjB8/HtHR0ejcuTOWLl0KFxcXrFixosp9JBIJFAqFafP09DQ9JwgCPv30U7z99tsYPnw4unTpgtWrV+PcuXPYtGmTxfURERERUd2zuCkdPXo0lixZUmH8yy+/xAsvvGDRscrLy5GZmQmVSnWnIKkUKpUKqampVe5XUlKCNm3awMfHB8OHD8fBgwdNz+Xl5UGr1Zod093dHUqlsspjlpWVQa/Xm21EREREZD01ioRavnw5tmzZgl69egEA0tPTkZ+fj6ioKKjVatO8BQsW3PM4Fy9ehMFgMHunEwA8PT1x5MiRSvfp2LEjVqxYgS5dukCn02H+/Pno3bs3Dh48iFatWkGr1ZqOcfcxbz93t4SEBMyePfve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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxAAAAQWCAYAAACkB15uAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAlGJJREFUeJzs3Ql8VNXd//HfJCGTIImBAEl4WAQFBUEqoGUpAlqJYK1YVP5VEdkqYqGASEFbBarFhSJS9hahiFKeilCtVMmDghRQCwGLgCwKgpAQw2ISIJNt/q/f0UmzTJKTdTKTz/v1uiT3zrmTOzOHZL5zNofb7XYLAAAAAFgIsikEAAAAAAQIAAAAAOVCCwQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAkCt5s7NlW93J8o3/7fRfNX92uKKK66QuXPnSqDwh8eTdP6S7D+VVuKmt/ujzZs3i8PhkPPnzwfU6wUgMIX4+gIAoCRntmyWowv+KK6kpPxjzrg4af3oOInu07dan7gTJ07I9OnT5Z///KekpqZKXFycDBo0SJ566imJjo7mRfMBDQc/mf8vycrJK7FMaEiQ/OOXP5K4qPAq/dkPPfSQ/OUvf5GHH35YFi9eXOi2sWPHyqJFi2TYsGGyYsWKKv25AFAb0QIBoNaGh89/+6TUb3OlXLd4qXR/7//MV93X43p7dfnyyy+lW7ducujQIVm9erUcOXLEvGnctGmT9OjRQ86ePSu+kJubK3l5Jb95DnTnLmaXGh6U3q7lqkOLFi3kr3/9q1y69N9WjszMTFNHWrZsWS0/EwBqIwIEgFpHuylpy0PDnr2k/e+fk4hrO0pw/frmq+7r8aML5ldbd6ZHH31UQkNDZePGjdKnTx/z5nDAgAHyf//3f3Ly5El58skn88ump6fLfffdJw0aNJBmzZrJH//4x0L3pa0Yer7T6TS3jx8/Pv+2rKwsmTJlivzP//yPXHbZZfLDH/7QdGXx0E+zo6Ki5B//+Id06NDB3Mef/vQnCQsLK9bVRe9Xr9Vj+/btctNNN0l4eLh546u3X7hwIf/2lJQUueOOO8ztrVu3ltdee63Kn8dA06VLF/Navvnmm/nH9Ht9fq+//vr8Yy6XyzzfTZs2Na/Vj370I/n3v/9d6L42bNgg7dq1M89/v3795NixY8V+XlmvIQD4CgECQK2T9p9PTbelFkMfFEdQ4V9Tut/8gaHiSjplylU1bV147733TLcUfeNWUGxsrNx///2yZs0acbvd5tiLL74o1113nSQmJsq0adNk4sSJkpCQYG5744035KWXXpIlS5bI4cOHZf369dKpU6f8+xs+fLhs27bNfKr9n//8R+655x657bbbTFmPixcvyqxZs+TPf/6z7Nu3Tx544AETKtauXVuoZeJ///d/zbWpvXv3Snx8vPzsZz8z96vX+69//Ut++ctfFuqSo29a33//fXOdCxcuNKECpdPXbPny5fn7r7zyiowYMaJQGQ2F+vpolyetF1dddZV5PTwtV9o9Tl+bgQMHyp49e2TUqFEyderUQvdh8xoCgK8QIADUOllnUs3X+q3beL29fps2hcpVJX3zruGgffv2Xm/X4+fOnZNvvvnG7Pfq1cu8+dNPk8eNGyd33323CQ3q+PHjJnT8+Mc/Np9c33jjjTJ69Ghz2xdffGG6vvztb3+T3r17y5VXXimTJ082n1YXfIOanZ1t3tz37NlTrr76atNSMWTIEHn99dfzy2jXKr0mDSCeUKOtIhMmTJC2bduac+fNmycrV640XW60a5aO7dBQol2yunbtKsuWLSvUNQfeDR061LyR1/D11VdfmQCooc5DWwh0PIS+BtpqpS1H2mqkYVSfY6W3t2nTxtQTfU01+GmgK6is1xAAfIlB1ABqndDoxubrxaNfmm5LRV388stC5WqSp+VBZ8xR+ga8IN33zIyjb+j1e32zqC0L+omzdhsKCQkxn0zrfWnwKEi7vxQcpK1dqbSFoyB9w6k/59SpU6ZblHY/0vtu2LChuX3Xrl1m3EbBbkn6s3T8xNGjR02A0GvQcR4e11xzjWnZQOkaN24st99+u2ld0OdUv9djHhoMNfRpsPSoV6+eCY8HDhww+/q1e/fu+XXIWz0q6zUsKeACQE0gQACodSKv62xmWzrx6koz5qFgNyZ3Xp58vepVccY1M+WqmnY30Td2+/fvN7MuFfX555+bN+oF3zQW5XljqP3WDx48aLo06fgJ7Ralnyxv2bLFvBEMDg42bxT1a0E6nsJDP7ku+EZT6ZtRbbHQrk+PPPKIrFu3rlCrhd63zhZUcLyFh7aE6DUVvE6Uj3ZZ8nQlWrBgQakBs+BxzzFPmdKU9RoCgC8RIADUOo7gYDNVq862dOCJqWbMg3Zb0pYHDQ/ntm+Ta373rClX1fTT/1tvvdV0G9LxDAXHQSQnJ5tPhB988MH8N4MfffRRofN1Xz/N99Dzf/rTn5pNB2frbdq/XQfd6tgFHXegXZjKS7u36LU0b95cgoKCzCfhBQf76ngJDUPe6KfXOTk5snPnThNGlIaK8qxBUJdpa5IOgFc6TqEgfc611Ui7OelrpLRFQp9r7Y6ktFuTjocpqGg9Kus1BABfYgwEgFpJ13nQkHDxyy9k7yMPy8fxt5qvGiL0eHWuAzF//nzTlUjfHH744Ydm0Ou7775rgoXOmPTss8/ml9U+8C+88ILpFqSfRuuYhl/96lf5syhpv/fPPvvMTA376quvmkDRqlUr03VJuyJpGNGZfLRbis7U8/zzz5sZesqi52o3KL0WHXehs/14/PrXv5YdO3aYwKKDdHVcx1tvvWXGaCjtd69vgnU8xscff2xaQXQgb9FB47VNw/r1zDoPpdHbtVx10hYj7YakW9HWIx2joq1Cjz/+uKkz2pKlz7MOhh85cqQpM2bMGNPVadKkSSa46XiWoutHlPUaAoAv0QIBoNbSkNDoR73NbEs6YFrHPGi3pepoeShIB63qJ8Y6BasOWD5z5owZDK1dmp5++mlp1KhRftnHHnvMvAGfMWOGREREyB/+8If8T6V1TMFzzz1n3ihqa4POwPT222/nj3HQbkfPPPOMuQ+dHlaPa194Hc9gc4033HCDCR1FVyPWMRPaTUqnm9XWDe0yo12e9LF46M/W0KBTv8bExJjr+O1vfyu1mS4Op4vElbbOg4aHql5EzpvIyMgSb9PXXLsg6YBrneZXx5rozF6eMSraBUlnadIWLm3p0lag3//+94Vmc7J5DQHAVxxum86YAAAAAEAXJgAAAADlwRgIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAAABAgAAAEDVowUCAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQqDZut1t+/OMfS3x8fLHbFi5cKJdffrkcP36cVwC1yubNm8XhcJS49evXz9eXCASE5ORkGTdunLRp00acTqe0aNFC7rjjDtm0aZOvLw1AGRxufZcHVJMTJ05Ip06d5Pnnn5eHH37YHDt69Khcd9118sc//lEeeughnnvUKllZWXL27Nlix9966y0ZM2aMrFmzRu655x6fXBsQKI4dOya9evWSqKgomTFjhvmbkJ2dLe+9954sXbpUPv/8c19fIoBSECBQ7f7yl7/IL3/5S/nPf/4jV1xxhdxyyy0SGRkp69ev59mHXzhw4IB0797dfFr6zDPP+PpyAL83cOBA8zfh4MGDctlllxW67fz582Zr3bq17N69W37wgx/kH2/YsKF88MEH0rdvX3Ns//79MnnyZPnwww/N/fTv319eeuklady4sbn9jTfeMAHlyJEjUr9+fbn++uvl73//e7GfCaB86MKEajds2DATGoYPHy7z58+Xzz77zHzCBPgDfdMyaNAg6dOnj/zud7/z9eUAfk9b+N5991159NFHvb6R11YJG0lJSeb/pQaMnTt3mvs8ffq03Hvvvfm3//znP5cRI0aYDwG0e+LPfvYz070WQOWEVPJ8wIoGho4dO8rWrVvNJ0JNmzblmUOtl5eXJ/fdd58EBwfLqlWrzBgIAJWjrQH6Jv6aa66p1P0sWrRIunTpIr///e/zj73yyitmLMWhQ4ckIyNDcnJyTGho1aqVuV271AKoPFogUCM0MPziF7+Q9u3by1133cWzDr/wxBNPyI4dO0yXB+12B6DyPC0AlQ3ku3btMt2ZGjRokL95QskXX3whnTt3Nq3fGhp03NKf/vQnOXfuHC8hUAUIEKgxISEhZgP8gQ6Wnj17tvz1r3+Vtm3b+vpygICh/580PGi3opIEBX339qRgdyMdZF20hVBnbdqzZ0+h7fDhw3LTTTeZlsOEhAT55z//KR06dDATd1x99dVmIg8AlUOAAIAi9E2I9pt+7rnnvE5DDKDiGjVqZP5fLViwQC5cuOB13FGTJk3yxzEU/H9ZkHZf2rdvn5mc46qrriq0ecZWaFDR2Z50ILUOyA4NDZV169bx8gGVRIAAgAJSU1PNoGmd5eWBBx4wc9UX3L755hueL6CSdC2g3NxcufHGG2Xt2rWm1UBbJObNmyc9evSQ8PBwM/OZhnidaUlnWfrNb35T6D50ELYOyNaB0p988ol8+eWXsnHjRhP+9b4//vhjMz5CB1jrmkNvvvmm+f+rXWkBVA79SQCggHfeeUe++uors8XFxRV7bnQwps5hD6DidIrWxMREefbZZ+Wxxx4zLQ3a6tC1a1czONozIFrDQLdu3UzXoxdeeMFM0+rRrFkz2bZtm/z61782LRoul8v8/7zttttMFygdt6TBY+7cuZKWlmZu+8Mf/iADBgzgpQMqiXUgAAAAAFijCxMAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjXUgLOTl5cmpU6ckIiLCrGoJ1DS32y3p6elm3nOd39wG9Rb+UG+ppwB8/XsI5UeAsKDhoUWLFhV4eqHCg4PkhqgoiQwJkbScHPn3+fNyKTePJ6cCTpw4Ic2bN7cqS72FP9Rb6ikAX/8eQvkRICxoy4NKPJQoDSIaVOBprpvcmS7JeP1vkvnBVnFnZuYfd4SFSVi/3tLgvnvEEeb06TX6i4z0DOnSrkt+XbRBvYU/1FvPbfrHXVcOBoCqpKuQ64fA5fn7iQAMELos/Ysvvii7du2SpKQkWbdunQwaNKjUc7Zs2SKTJk2Sffv2mSasKVOmyJgxY6x/pqfbkoaHiEgqoI28zEw59dSz4jpwyOy7Y2JE4pqJnDopkpIil/6ZIHnHvpJmz02XoLAw69eiritPFzrqLfyh3npu0/BAgADgi99DqAMB4sKFC9K5c2cZPny4DB48uMzyR48elYEDB8ro0aNl1apVsm3bNhk7dqw0adLE6nxUzNnlr5nwcKFeuCzvMEg+i26r/3tFGrml45nDMnz/epEDh0y5xo+M5GkGAADwE34XIAYMGGA2W4sXL5aWLVvK3LlzzX779u1l586dMnv2bAJENcm7eEnS3ttkvjfhoXG7/97ocJj9FR0GyaOfrpa0je9Lo2H3SVD98Oq6HAAAAFShgB+OvmPHDunfv3+hY/Hx8SZEZGdnez3H5XKZPnMFN9i7mPipuC9lmm5LpuXBi73RbcXdtKm4L14y5VF51FsAAFAT/K4ForySk5MlRvvfF6D7OTk5kpqaKnFxccXOmTVrlsyYMaPYcdd5l4Tmhlbr9QaCrNPnzNe8JrHfdVvyxuGQvCZxEpySYsq7zrlq9iL9jCu97OeHegt/rLfl8cKc6XI+PUX8RVREU5kyaXrAPbbyPK5A9cdnZ8rFM9+IP6gf3UTGPfmUry8DASbgA4S3gTM6J7C34x7Tpk0zg66LjuB3RjnFGcmsQWXJjmlovgZ9kyzS1O09RLjdEvRNkvk2NKahOBvyvJYmKzirzOedegt/rLfloW+wW9/xsfiLo2//MCAfW3keV6DS8PDrS99NElLbPX/G11eAQBTwASI2Nta0QhSUkpIiISEhEh0d7fUcp9NpNlRM/S6dxREeJnL6tHSMPVx4DMT3Op05LI6UFHHUDzflUXnUWwAAUBMCfgxEjx49JCEhodCxjRs3Srdu3aRevXo+u65ApgOiI+NvMd/rbEudUg+ZFgfD7Tb7D+1bZ3Yj+9/MAGoAAAA/4nctEBkZGXLkyJFC07Tu2bNHGjVqZGZb0m4cJ0+elJUrV5rbdb2H+fPnmy5JOpWrDqpetmyZrF692oePIvA1Gn6/ZB48bKZq1dmWdMC0WQci6ZRpeVDO9u1MOQAAAPgPvwsQOntSv3798vc9YxWGDRsmK1asMIvLHT9+PP/21q1by4YNG2TixImyYMECs5DcvHnzmMK1municLpInK7zoFO16uJxZtOxJ9pC0f9mEx5YRA4AAMC/+F2A6Nu3b/4gaG80RBTVp08fSUxMrOYrQ1EaDnSROF3nQadqzUtPl6CICDPmgXUfAAAA/JPfBQj4Hw0LDX7U3deXAQAAgCoQ8IOoAQAAAFQdAgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAAgQAAACAqkcLBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1RsgkpOTZdy4cdKmTRtxOp3SokULueOOO2TTpk3m9qVLl0rfvn0lMjJSHA6HnD9/viI/BgAAAIC/B4hjx45J165d5f3335cXXnhB9u7dK++++67069dPHn30UVPm4sWLctttt8kTTzxRHdcMAAAAwF8CxNixY02rwieffCJ33323tGvXTq699lqZNGmSfPTRR6bMhAkTZOrUqdK9e/fquGZZuHChtG7dWsLCwkyY2bp1a4llN2/ebK636Pb5559Xy7UBAAAAgaxcAeLs2bOmtUFbGi677LJit0dFRUl1W7NmjQkoTz75pOzevVt69+4tAwYMkOPHj5d63sGDByUpKSl/a9u2bbVfKwAAAFCnA8SRI0fE7XbLNddcI74yZ84cGTlypIwaNUrat28vc+fONWMwFi1aVOp5TZs2ldjY2PwtODi4xq4ZAAAAqJMBQsOD0i5AvpCVlSW7du2S/v37Fzqu+9u3by/13Ouvv17i4uLklltukQ8++KDUsi6XS9LS0gptQG1HvQUAADUhpDyFtduPhocDBw7IoEGDpKalpqZKbm6uxMTEFDqu+zozlDcaGnRWKB0roW+wXn31VRMidGzETTfd5PWcWbNmyYwZM4odd513SWhuaBU9GsCeK91VZhnqLfyx3gIAAjxANGrUSOLj42XBggUyfvz4YuMgdLrWmhgHUbQFRFtGSmoVufrqq83m0aNHDzlx4oTMnj27xAAxbdo0MyjcQ1sgtJuUM8opzkhnlT0OwFZWcFaZZai38Md6CwCoA7Mw6QxI2gpw4403ytq1a+Xw4cOmRWLevHnmzbnS1oA9e/aYMRNKp3rVfR2EXRmNGzc2YxeKtjakpKQUa5Uojc4OpdddEl3bQtewKLgBtR31FgAA1MoAodOnJiYmmnUfHnvsMenYsaPceuutZhE5z0DmxYsXmzEHo0ePNvv6Sb/uv/XWW5W62NDQUNMVKSEhodBx3e/Zs6f1/ejsTdq1CQAAAEA1dmHy0Dff8+fPN5s306dPN1t10K5FQ4cOlW7dupkWDx3foFO4jhkzJr8bx8mTJ2XlypVmX2dpuuKKK8xaFToIe9WqVablRDcAAAAANRAgfGnIkCFy5swZmTlzplnPQVtANmzYIK1atTK367GCa0JoaJg8ebIJFeHh4SZIvPPOOzJw4EAfPgoAAADAP/ldgPCshq2bNytWrCi0P2XKFLMBAAAA8MEYCAAAAAB1FwECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYC7EvCgB1R97FS3Ix8VPJS0+XoIgIqd+lswTVD/f1ZQEA4HMECAAoIC8zU84uf03S3tsk7kuZ+ccd4WESGX+LNBp+vwSFhfGcAQDqLL/swrRw4UJp3bq1hIWFSdeuXWXr1q2llt+yZYspp+XbtGkjixcvrrFrBeBf4eHU1Ony7fp3THhwx8SI+wfXi7tpU7Ovx/V2LQcAQF3ldy0Qa9askQkTJpgQ0atXL1myZIkMGDBA9u/fLy1btixW/ujRozJw4EAZPXq0rFq1SrZt2yZjx46VJk2ayODBg33yGADUTtry4DpwSC7UC5flHQbJZ9FtRRwOkUZu6XjmsAzfv17kwCFTrvEjI319uQAA+ITftUDMmTNHRo4cKaNGjZL27dvL3LlzpUWLFrJo0SKv5bW1QYOFltPyet6IESNk9uzZNX7tAGr3mAfttqRMeGjc7rvwoBwOs7+iwyCzm7bxfVMeAIC6yK8CRFZWluzatUv69+9f6Ljub9++3es5O3bsKFY+Pj5edu7cKdnZ2V7PcblckpaWVmgDajvqbeXogGlPtyXT8uDF3ui233Vn+n6ANQAAdZFfdWFKTU2V3NxciYmJKXRc95OTk72eo8e9lc/JyTH3FxcXV+ycWbNmyYwZM4odd513SWhuaKUfB1BernRXmWWot5WTdfqc+ZrXJPa/LQ9FORyS1yROglNSTHnXubJfl7rMpt4CAPyPXwUID0eRP+5ut7vYsbLKezvuMW3aNJk0aVL+vrZAaDcpZ5RTnJHOSl49UH5ZwVlllqHeVk52TEPzNeibZJGmbu8hwu2WoG+SzLehMQ3F2ZDfB5WttwAA/+NXAaJx48YSHBxcrLUhJSWlWCuDR2xsrNfyISEhEh0d7fUcp9NpNsCfUG8rR9d50Kla5fRp6Rh7+LsxEEV0OnNYHCkp4qgfbsoDAFAX+dUYiNDQUDMda0JCQqHjut+zZ0+v5/To0aNY+Y0bN0q3bt2kXr161Xq9APyHLhKn6zwonW2pU+oh0+JguN1m/6F968xuZP+bWVQOAFBn+VULhNKuRUOHDjUBQMPB0qVL5fjx4zJmzJj8bhwnT56UlStXmn09Pn/+fHOeTuWqg6qXLVsmq1ev9vEjAVDb6CJxmQcPm6laH/10tRkwLXHNRJJOmZYH5WzfzpQDAKCu8rsAMWTIEDlz5ozMnDlTkpKSpGPHjrJhwwZp1aqVuV2PaaDw0AXn9PaJEyfKggULpFmzZjJv3rxyrQHhGTORkZ5RDY8IKJun7nnqog3qbcVEPjFZMl7/m2Ru3qr9Hb/bvl+JOqxvb2lw3z1yIStbRDdUut56brOZ7c6VmSWXMnL95lnX67Wdxc+fHlt5HlegynRlSVpWjviDzKC6/Xp5Hnt5/n6ibA43z2iZvv76azOIGvC1EydOSPPmza3KUm8rJzw4SG6IipLIkBBJy8mRf58/L5dy8yp5r3VTafWWegrA17+HUH4ECAt5eXly6tQpiYiIKHW2J6C6aM5PT083LWhBQXZDl6i38Id6Sz0F4OvfQyg/AgQAAAAAa0QxAAAAAAQIAAAAAFWPFggAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGAtxL5o3cVCR/A1FpKDP2IhOQC+xkJy1YMAYUFXoW7RokU1vQSAvRMnTkjz5s2tylJv4Q/1lnoKwNe/h1B+BAgLERER5mvioURpENGgAk8zUDkZ6RnSpV2X/Lpog3oLf6i3ntv0j3tkZGQNXh2AuiAtLc18CFyev58IwADx4Ycfyosvvii7du2SpKQkWbdunQwaNKjUc7Zs2SKTJk2Sffv2SbNmzWTKlCkyZswY65/pcDjMVw0PEZFUQPiOpy6Wpyz1FrW53npu0/BAgADgi99DqAODqC9cuCCdO3eW+fPnW5U/evSoDBw4UHr37i27d++WJ554QsaPHy9r166t9msFAAAAAo3ftUAMGDDAbLYWL14sLVu2lLlz55r99u3by86dO2X27NkyePBgr+e4XC6zFWz+Amo76i0AAKgJfhcgymvHjh3Sv3//Qsfi4+Nl2bJlkp2dLfXq1St2zqxZs2TGjBnFjrvOuyQ0N7RarxfwxpX+30BbEuot/LHeAgD8T8AHiOTkZImJiSl0TPdzcnIkNTVV4uLiip0zbdo0M2ai6AAcZ5RTnJHOGrluoKCs4KwynxDqLfyx3pbHC3Omy/n0FPEXURFNZcqk6QH32MrzuAAEpoAPEN4GzuicwN6OezidTrMB/oR6i0Cnb7Bb3/Gx+Iujb/8wIB9beR4XgMDkd4Ooyys2Nta0QhSUkpIiISEhEh0d7bPrAgAAAPxRwAeIHj16SEJCQqFjGzdulG7dunkd/wAAAAAggAJERkaG7Nmzx2yeaVr1++PHj+f3A3/wwQfzy+t6D1999ZUZ03DgwAF55ZVXzADqyZMn++wxAAAAAP7K78ZA6BSs/fr1y9/3DHYeNmyYrFixwiwu5wkTqnXr1rJhwwaZOHGiLFiwwCwkN2/evBKncAUAAAAQQAGib9+++YOgvdEQUVSfPn0kMTGxmq8MAAAACHx+14UJAAAAgO8QIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAQPUGiOTkZBk3bpy0adNGnE6ntGjRQu644w7ZtGmTnD171tx29dVXS/369aVly5Yyfvx4+fbbbyvyowAAAADUIiHlPeHYsWPSq1cviYqKkhdeeEGuu+46yc7Olvfee08effRReeONN+TUqVMye/Zs6dChg3z11VcyZswYc0xvAwAAAFCHAsTYsWPF4XDIJ598Ipdddln+8WuvvVZGjBhhgsXatWvzj1955ZXy7LPPygMPPCA5OTkSElLuH1nMwoUL5cUXX5SkpCTzc+fOnSu9e/f2Wnbz5s3Sr1+/YscPHDgg11xzTaWvBQAAAKhLytWFSbsnvfvuu6aloWB48NDw4I12X4qMjKyS8LBmzRqZMGGCPPnkk7J7924THAYMGCDHjx8v9byDBw+awOHZ2rZtW+lrAQAAAOqacr2jP3LkiLjd7nJ9cn/mzBn53e9+Jw8//LBUhTlz5sjIkSNl1KhRZl9bH7T71KJFi2TWrFklnte0adMSA05RLpfLbB5paWlVcOVA9aLeAgCAWhcgNDwo7cJkQ99433777WYsxNNPPy2VlZWVJbt27ZKpU6cWOt6/f3/Zvn17qedef/31kpmZaa7lN7/5jdduTR4aRGbMmFHsuOu8S0JzQyvxCICKcaX/N9CWhHoLf6y3AIAADxDa7UfDg44fGDRoUKll09PT5bbbbpMGDRrIunXrpF69epW9VklNTZXc3FyJiYkpdFz3dWYob+Li4mTp0qXStWtX8wntq6++KrfccosZG3HTTTd5PWfatGkyadKkQkFIZ5pyRjnFGems9OMAyisrOKvMMtRb+GO9BQAEeIBo1KiRxMfHy4IFC8zUrEXHQZw/f950E9I33FpOp3h96623JCwsrEovumgLiLaMlNQqotPJ6ubRo0cPOXHihJklqqQAodetG+BPqLcAAKBWrgOhMyBpK8CNN95oZls6fPiwaZGYN2+eeXOuLQ/apejChQuybNkyEya0dUA3Pa8yGjduLMHBwcVaG1JSUoq1SpSme/fu5roBAAAAlE+5p0Vq3bq1JCYmmqlZH3vsMTOjUZMmTUwXIR3IrGMUPv74Y1P2qquuKnTu0aNH5YorrpCKCg0NNT8nISFB7rrrrvzjun/nnXda34/O3qRdmwAAAACUT4XmVdU33/PnzzdbaYOtq4OOTRg6dKh069bNtHjo+AadwlUXq/P0Az958qSsXLkyf5YmDS26XoQOwl61apVpOSm4VgUAAAAAO5VfmKGGDRkyxEwNO3PmTNP60bFjR9mwYYO0atXK3K7HCq4JoaFh8uTJJlSEh4ebIPHOO+/IwIEDffgoAAAAAP/kdwHCsxq2bt6sWLGi0P6UKVPMBgAAAMAHg6gBAAAA1F0ECAAAAADWCBAAAAAArBEgAAAAAFgjQAAAAACwRoAAAAAAYI0AAQAAAMAaAQIAAACANQIEAAAAAGsECAAAAADWCBAAAAAArBEgAAAAAFgjQAAAAACwRoAAAAAAYI0AAQAAAIAAAQAAAKDq0QIBAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACshdgXBSom7+IluZj4qeSlp0tQRITU79JZguqH83SiVqPeAgDgHQEC1SYvM1POLn9N0t7bJO5LmfnHHeFhEhl/izQafr8EhYXxCqBWod4CABCAXZgWLlworVu3lrCwMOnatats3bq11PJbtmwx5bR8mzZtZPHixTV2rXX5TdipqdPl2/XvmPDgjokR9w+uF3fTpmZfj+vtWg6oLai3AAAEYAvEmjVrZMKECSZE9OrVS5YsWSIDBgyQ/fv3S8uWLYuVP3r0qAwcOFBGjx4tq1atkm3btsnYsWOlSZMmMnjwYJ88hrpAWx5cBw7JhXrhsrzDIPksuq2IwyHSyC0dzxyW4fvXixw4ZMo1fmSkry8XMKi3AAAEYAvEnDlzZOTIkTJq1Chp3769zJ07V1q0aCGLFi3yWl5bGzRYaDktr+eNGDFCZs+eXePXXpf6jmu3JWXCQ+N234UH5XCY/RUdBpndtI3vm/KAr1FvAQAIwACRlZUlu3btkv79+xc6rvvbt2/3es6OHTuKlY+Pj5edO3dKdna213NcLpekpaUV2mBPB0x7ui2Zlgcv9ka3/a470/cDrFF51NvKod4CABCAXZhSU1MlNzdXYmJiCh3X/eTkZK/n6HFv5XNycsz9xcXFFTtn1qxZMmPGjGLHXeddEpobWunHEeiyTp8zX/OaxP635aEoh0PymsRJcEqKKe8656rZi/QzrvSynx/qbeVQb31TbwEA/sevAoSHo8ibUrfbXexYWeW9HfeYNm2aTJo0KX9fWyC0m5QzyinOSGclrz7wZcc0NF+DvkkWaer2HiLcbgn6Jsl8GxrTUJwNeV5LkxWcVebzTr2tHOqtb+otAMD/+FWAaNy4sQQHBxdrbUhJSSnWyuARGxvrtXxISIhER0d7PcfpdJoNFaPrPOhUrXL6tHSMPfzdGIgiOp05LI6UFHHUDzflUXnU28qh3gIAEIBjIEJDQ810rAkJCYWO637Pnj29ntOjR49i5Tdu3CjdunWTevXqVev11lW6SJyu86B0tqVOqYdMi4Phdpv9h/atM7uR/W9mUTnUCtRbAAACsAVCadeioUOHmgCg4WDp0qVy/PhxGTNmTH43jpMnT8rKlSvNvh6fP3++OU+nctVB1cuWLZPVq1f7+JEENl0kLvPgYTNV66OfrjYDpiWumUjSKdPyoJzt25lyQG1BvQUAIAADxJAhQ+TMmTMyc+ZMSUpKko4dO8qGDRukVatW5nY9poHCQxec09snTpwoCxYskGbNmsm8efPKtQaEZ8xERnpGNTyiwBX5xGTJeP1vkrl5q/Yb+277fiXqsL69pcF998iFrGwR3VAqT93z1EUb1FvqrT/UW89tNrPduTKz5FJGrvgLvV7bWfz86bGV53EBvuapq+X5+4myOdw8o2X6+uuvzSBqVEx4cJDcEBUlkSEhkpaTI/8+f14u5ebxdFbAiRMnpHnz5lZlqbeVQ72tmXpLPQVQ2/5+omwECAt5eXly6tQpiYiIKHW2J6C6aM5PT083LWhBQXZDl6i38Id6Sz0F4OvfQyg/AgQAAAAAa0QxAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIC1EPuidRcLHcHXWEgO/oiF5AD4GgvJVQ8ChAVdhbpFixbV9BIEvvDgILkhKkoiQ0IkLSdH/n3+vFzKzfP1ZfmlEydOSPPmza3KUm/hD/WWegrA17+HUH4ECAsRERHma+KhRGkQ0aACT3Pd5M50Scbrf5PMD7aKOzMz/7gjLEzC+vWWBvfdI44wp0+v0V9kpGdIl3Zd8uuiDeot/KHeem7TP+6RkZE1eHUA6oK0tDTzIXB5/n4iAAPEhx9+KC+++KLs2rVLkpKSZN26dTJo0KBSz9myZYtMmjRJ9u3bJ82aNZMpU6bImDFjrH+mw+EwXzU8RERSAW3kZWbKqaeeFdeBQ2bfHRMjEtdM5NRJkZQUufTPBMk79pU0e266BIWFWb8WdZ2nLpanLPUWtbneem7T8ECAAOCL30OoAwHiwoUL0rlzZxk+fLgMHjy4zPJHjx6VgQMHyujRo2XVqlWybds2GTt2rDRp0sTqfFTM2eWvmfBwoV64LO8wSD6Lbqv/e0UauaXjmcMyfP96kQOHTLnGj4zkaQYAAPATfhcgBgwYYDZbixcvlpYtW8rcuXPNfvv27WXnzp0ye/ZsAkQ1ybt4SdLe22S+N+Ghcbv/3uhwmP0VHQbJo5+ulrSN70ujYfdJUP3w6rocAAAAVKGAn8Z1x44d0r9//0LH4uPjTYjIzs72eo7L5TJ95gpusHcx8VNxX8o03ZZMy4MXe6PbirtpU3FfvGTKo/KotwAAoCb4XQtEeSUnJ0uM9r8vQPdzcnIkNTVV4uLiip0za9YsmTFjRrHjrvMuCc0NrdbrDQRZp8+Zr3lNYr/rtuSNwyF5TeIkOCXFlHedc9XsRfoZV3rZzw/1Fv5Yb/GdF+ZMl/PpKX7xdERFNJUpk6bX6ccF1HUBHyC8DZzROYG9HfeYNm2aGXRddAS/M8opzkhmDSpLdkxD8zXom2SRpm7vIcLtlqBvksy3oTENxdmQ57U0WcFZZT7v1Fv4Y73Fd/RNdus7PvaLp+Po2z+Uuv64gLou4ANEbGysaYUoKCUlRUJCQiQ6OtrrOU6n02yomPpdOosjPEzk9GnpGHu48BiI73U6c1gcKSniqB9uyqPyqLcAAKAmBPwYiB49ekhCQkKhYxs3bpRu3bpJvXr1fHZdgUwHREfG32K+19mWOqUeMi0Ohttt9h/at87sRva/mQHUAAAAfsTvWiAyMjLkyJEjhaZp3bNnjzRq1MjMtqTdOE6ePCkrV640t+t6D/PnzzddknQqVx1UvWzZMlm9erUPH0XgazT8fsk8eNhM1aqzLemAabMORNIp0/KgnO3bmXIAAADwH34XIHT2pH79+uXve8YqDBs2TFasWGEWlzt+/Hj+7a1bt5YNGzbIxIkTZcGCBWYhuXnz5jGFazXTxeF0kThd50GnatXF48ymY0+0haL/zSY8sIgcAACAf/G7ANG3b9/8QdDeaIgoqk+fPpKYmFjNV4aiNBzoInG6zoNO1ZqXni5BERFmzAPrPgAAAPgnvwsQ8D8aFhr8qLuvLwMAAABVIOAHUQMAAACoOgQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABqwIcffih33HGHWZfM4XDI+vXryzxny5Yt0rVrVwkLC5M2bdrI4sWLff5aESAAAACAGnDhwgXp3LmzzJ8/36r80aNHZeDAgdK7d2/ZvXu3PPHEEzJ+/HhZu3at+BLrQAAAAAA1YMCAAWazpa0NLVu2lLlz55r99u3by86dO2X27NkyePBg8RUCBAAAAFBAZmamZGVlWT0nbrfbdEcqyOl0mq2yduzYIf379y90LD4+XpYtWybZ2dlSr149n7xuBAgAAACgQHi4olkzOX3unNVz0qBBA8nIyCh07Omnn5bp06dX+jlNTk6WmJiYQsd0PycnR1JTUyUuLs4nrxsBAgAAAPietjxoeDi48hWJqF+/1Ocl/eJFufrBEXLixAmJjIzMP14VrQ8eRVs3tMXD2/GaRIAAAAAAioi4rL5EXlZ6gJDv38NreCgYIKpKbGysaYUoKCUlRUJCQiQ6Olp8hVmYAAAAAG/hwGarRj169JCEhIRCxzZu3CjdunXz2fgHRYAAAAAAakBGRobs2bPHbJ5pWvX748ePm/1p06bJgw8+mF9+zJgx8tVXX8mkSZPkwIED8sorr5gB1JMnT/bp60UXJgAAAKAIHWJQ1jADRzlbIHQK1n79+uXvazBQw4YNkxUrVkhSUlJ+mFCtW7eWDRs2yMSJE2XBggVmAbp58+b5dApXRYAAAAAAakDfvn3zB0F7oyGiqD59+khiYqLUJgQIAAAAoCibMQ6Ouvm0MQYCAAAAgDUCBAAAAABrdGECAAAAiqILU4kIEAAAAEBRBIgS0YUJAAAAgDVaIAAAAICiaIEoES0QAAAAAKzRAgEAAAAURQtEiQgQAAAAQBHkh5IRIAAAAICiSBAlYgwEAAAAAGu0QAAAAABF0QJRIlogAAAAAFijBQIAAAAoihaIEtECAQAAAMAaLRAAAABAUbRAlIgAAQAAABRFgCgRAQIAAAAogvxQMsZAAAAAALBGCwQAAABQFE0QJaIFAgAAAIA1WiAAAACAomiBKBEtEAAAAACs0QIBAAAAFEULRIkIEAAAAEBRBIgS0YUJAAAAgDUCBAAAAABrdGECAAAASurGhGIIEAAAAEARDIGo4i5MycnJMm7cOGnTpo04nU5p0aKF3HHHHbJp0yZz+8MPPyxXXnmlhIeHS5MmTeTOO++Uzz//vCI/CgAAAPBdgihrq4PKHSCOHTsmXbt2lffff19eeOEF2bt3r7z77rvSr18/efTRR00ZvX358uVy4MABee+998Ttdkv//v0lNze3Si564cKF0rp1awkLCzM/a+vWrSWW3bx5szgcjmIbgQYAAACogS5MY8eONW/AP/nkE7nsssvyj1977bUyYsQI8/0vfvGL/ONXXHGFPPPMM9K5c2cTPrRlojLWrFkjEyZMMCGiV69esmTJEhkwYIDs379fWrZsWeJ5Bw8elMjIyPx9bRkBAAAAvKIPU9W0QJw9e9a0NmhLQ8Hw4BEVFVXs2IULF0xrhLYYaFenypozZ46MHDlSRo0aJe3bt5e5c+ea+120aFGp5zVt2lRiY2Pzt+Dg4EpfCwAAAAIUXZiqJkAcOXLEdEe65ppryiyrLQQNGjQwm4aOhIQECQ0NlcrIysqSXbt2me5QBen+9u3bSz33+uuvl7i4OLnlllvkgw8+KLWsy+WStLS0QhtQ21FvAQCo/RaWoyu+eu2110xPnvr165v3ssOHD5czZ86I33Rh0vCgtAtTWe6//3659dZbJSkpSWbPni333nuvbNu2zTxZFZWammrGUcTExBQ6rvs6sNsbfaKXLl1qXiB9g/Xqq6+aEKFjI2666Sav58yaNUtmzJhR7LjrvEtCcysXgoCKcKW7yixDvYU/1lsAqEvWlLMr/r/+9S958MEH5aWXXjITFp08eVLGjBljeuKsW7dO/CJAtG3b1oQHHRw9aNCgUstefvnlZtNzunfvLg0bNjQP9Oc//3llr7lYgNFgU1Koufrqq83m0aNHDzlx4oQJNSUFiGnTpsmkSZPy97UFQrtJOaOc4ox0Vvr6gfLKCs4qswz1Fv5YbwGgLo2BmFOgK77Srvg64ZB2xdcPAov66KOPzHji8ePHm31tudDZTnUio7Lo++Pjx4+bbvw6M6rPujA1atRI4uPjZcGCBWZsQ1Hnz58v9UFoC0BlNG7c2IxdKNrakJKSUqxVojQaaA4fPlzi7To1rQ64LrgBtR31FgAA30gr0vXd23veinTF79mzp3z99deyYcMG81769OnT8sYbb8jtt99e5jVpef0gX8/3+TSu2uSi3YhuvPFGWbt2rXkjri0S8+bNM5/uf/nllyZB6ROkqWfHjh2m+5Imn4EDB1bqYnUMhXZF0vEUBem+PsG2du/ebbo2AQAAAJUdRN2iRYv83je6eWtNqEhXfH1/q2MghgwZYt4H60RAOmnRH//4xzJftKCgIBMgqmO8RLmncdWmk8TERHn22WflscceM2McdEpUfWOvzS86xkEHg2iTzLlz58yTol2FNFlpE0pladeioUOHSrdu3Uxg0fENGlS0P5inG4f2D1u5cqXZ1+vQph+dZlaT36pVq0zw0Q0AAADwRnvHlzXs1/H97do9vmCPFe0VUBVd8XVshHZfeuqpp0wvIH3f/fjjj5v3vcuWLSvzhdOuTlpe36N37NhRfBYglH56P3/+fLN5o80s1UUTmCapmTNnmidRnwz9ea1atTK36zENFB4aGiZPnmxChbaCaJB45513Kt0aAgAAACibLu8V6YqvLRk62FpDgLruuuvMUgq9e/c266yV1aPmgQcekIsXL5pZnLQFo+hYCF2iocYChK/pYna6ebNixYpC+1OmTDEbAAAA4KtB1KEFuuLfdddd+cd1/8477/R6jr75Dwkp/Hbds5aZZ3bU0mhPnOrglwECAAAA8DeTytkVX6duHT16tOmC5OnCpNPA6ljkZs2alfnzhg0bVi2PgwABAAAA1IAh5eyK/9BDD0l6eroZNqBjj3UA9c033yzPP/+89c/Ugdvr1683kx7pWIsOHTrIT3/60/yWjIogQAAAAAA1sA5Eebviq3HjxpmtIo4cOWLG/Wqrhq6Lpt2eDh06ZGaN0jHBV155Zc1M4woAAACg9tMZnDQk6CxROouqLmWgLRw6q6pncbqKoAUCAAAAqKEWiJq0ZcsWs5q1LgbtER0dLc8995yZ3amiCBAAAABAAAYIp9NpxlAUlZGRYWaFqii6MAEAAAAB6Cc/+Yn84he/kI8//tiMf9BNWyR01icdSF1RBAgAAACgCJ2xyGarzebNm2fGQOiUsWFhYWbTrktXXXWVvPzyyxW+X7owAQAAAAHG7XbLt99+K6tXr5ZTp06ZaVz1mE7jqgGiMggQAAAAQICNgXC73dK2bVvZt2+f+VrZ0FAQXZgAAACAABMUFGSCgy5cV+X3XeX3CAAAAMDnXnjhBXn88cfls88+q9L7pQsTAAAAEGBdmNQDDzwgFy9elM6dO5tpW8PDw6Wgs2fPSkUQIAAAAIAADBBz586tlvslQAAAAAABJjs7WzZv3iy//e1vpU2bNlV634yBAAAAAEpqgShrq6Xq1asn69atq5b7JkAAAAAAAeiuu+6S9evXV/n90oUJAAAACMAxEFdddZX87ne/k+3bt0vXrl3lsssuK3T7+PHjK3S/BAgAAAAg8PKD/PnPf5aoqCjZtWuX2QpyOBwECAAAAKDKBECCOHr0aLXcL2MgAAAAgACWlZUlBw8elJycnCq5PwIEAAAA4I2fzsDkoYvIjRw5UurXry/XXnutHD9+PH/sw3PPPScVRYAAAAAAAtC0adPk008/NetBhIWF5R//8Y9/LGvWrKnw/TKIGgAAAAjAMRDr1683QaF79+5m0LRHhw4d5Isvvqjw/dICAQAAAASgb775Rpo2bVrs+IULFwoFivIiQAAAAAABthK1uuGGG+Sdd94RD09o+NOf/iQ9evSQiqILEwAAABCAZs2aJbfddpvs37/fzMD08ssvy759+2THjh2yZcuWCt8vLRAAAABAEfphvc1Wm/Xs2VO2bdtmZmO68sorZePGjRITE2MChK5MXVG0QAAAAAABqlOnTvKXv/ylSu+TAAEAAAAE4CxM1YUuTAAAAACs0QIBAAAAFEULRIlogQAAAABgjQABAAAABOA6EB5HjhyR9957Ty5dumT23W63VAYBAgAAAAhAZ86ckR//+MfSrl07GThwoCQlJZnjo0aNkscee6zC90uAAAAAAAKwBWLixIkSEhIix48fl/r16+cfHzJkiLz77rsVvl8GUQMAAAABaOPGjabrUvPmzQsdb9u2rXz11VcVvl9aIAAAAIAaaoFYuHChtG7dWsLCwsxq0Fu3bi21vMvlkieffFJatWolTqfTrCj9yiuvWP2sCxcuFGp58EhNTTX3VVEECAAAAKAG8sOaNWtkwoQJJhDs3r1bevfuLQMGDDBdjEpy7733yqZNm2TZsmVy8OBBWb16tVxzzTVWP++mm26SlStX/vcxORySl5cnL774ovTr16/CrzldmAAAAIAaWAdizpw5MnLkSDOIWc2dO9d0MVq0aJHMmjWrWHkdp7Blyxb58ssvpVGjRubYFVdcYf3zNCj07dtXdu7cKVlZWTJlyhTZt2+fnD17VrZt2yYVRQsEAAAAUIkmiLS0tEKbdjsqSt/A79q1S/r371/ouO5v377d6/P/1ltvSbdu3eSFF16Q//mf/zGzKU2ePDl/OtaydOjQQf7zn//IjTfeKLfeeqvp0vSzn/3MtH5oV6iKogUCAAAAqIQWLVoU2n/66adl+vTpxcYd5ObmSkxMTKHjup+cnOz1frXl4V//+pcZL7Fu3TpzH2PHjjUtCDbjILRrlF7bjBkzvN7WsmVLqQgCBAAAAFAJJ06ckMjIyPz90gYo6ziEgnRRt6LHPHS8gt722muvyeWXX57fDeruu++WBQsWSHh4eKnXpYO1de2Hpk2bFlsfQm/TQFMRBAgAAACgEmMgIiMjCwUIbxo3bizBwcHFWhtSUlKKtUp4xMXFma5LnvCg2rdvb0LH119/baZjLU1J4SQjI8O0alQUAQIAAACoZqGhoWba1oSEBLnrrrvyj+v+nXfe6fWcXr16yd/+9jfzhr9Bgwbm2KFDhyQoKKjY2g4FTZo0yXzV8PDb3/620FSu2urw8ccfyw9+8IMKPxYCBAAAAFADszBNmjRJhg4dagZG9+jRQ5YuXWrGIowZM8bcPm3aNDl58mT+1Kv33Xef/O53v5Phw4ebcQw6BuLxxx+XESNGlNp9SQdJe1og9u7da8KLh37fuXNnMxi7oggQAOBF3sVLcjHxU8lLT5egiAip36WzBNUvva8pAAClGTJkiBl/MHPmTDM2oWPHjrJhwwazSJzSYwXXhNBWB22hGDdunAkd0dHRZl2IZ555ptSf88EHH5ivGjxefvnlMrtXlRcBAgAKyMvMlLPLX5O09zaJ+1Jm/nFHeJhExt8ijYbfL0GV6DcKAKi7LRBKZ1HSzZsVK1YUO6aLxmmIqIjly5dLdfDLdSDKuwS4LsCh5bR8mzZtZPHixTV2rQD8Kzycmjpdvl3/jgkP7pgYcf/genE3bWr29bjeruUAAIFNxx7bbLXZzTffXOpWZ1ogPEuAa4jQgSVLliwxS4Dv37/f61y2R48elYEDB8ro0aNl1apVZtU9TX1NmjSRwYMH++QxAKidtOXBdeCQXKgXLss7DJLPott+99ehkVs6njksw/evFzlwyJRr/MhIX18uAACl0rEOBWVnZ8uePXvks88+k2HDhkmdCRDlXQJcWxs0WGg5z9RXupz37NmzCRAACo150G5LyoSHxu3+e6PDYfZXdBgkj366WtI2vi+Nht3HmAgACGTV1IWpJr300ktej+sidzqzU53owlSRJcB37NhRrHx8fLwJEZrCvNHlx4suSQ7UdtTbytEB055uS6blwYu90W2/6870/QBrAAD80QMPPGC1knVAtEBUZAlwPe6tfE5Ojrk/XaCjKG3J8Lbkt+u8S0Jz/zsNFlBTXOmuMstQbysn6/Q58zWvSWzJnVodDslrEifBKSmmvOtc2a9LXWZTbwEANU8/YK9zC8mVZwnwksp7O+6hc/B6FuBQ2gLRokULcUY5xRlZ8tLkQHXJCs4qswz1tnKyYxqar0HfJIs0dXsPEW63BH2TZL4NjWkozob8PqhsvQWAWisAujD97Gc/K/YeWKeK1Z44usBcnQgQFVkCPDY21mv5kJAQM5euN06n02yAP6HeVo6u86BTtcrp09Ix9nDhMRDf63TmsDhSUsRRP9yUBwCgNrv88ssL7esK1ldffbVZh6JoF/+ADRAVWQJcV/l7++23Cx3buHGjWYyjXr161X7NAPyDLhKn6zzoVK0625IOmNYxD6Ylwu024eGhfetM2cj+NzOAGgACXQC0QCyvpnUg/CpAVGQJcD0+f/58c55O5ap9vpYtWyarV6/28SMBUNvoInGZBw+bqVp1tiUdMC1xzUSSTpmWB+Vs386UAwDUAbU8IPhKSKAvAa4LzuntEydOlAULFkizZs1k3rx55ZrC1TNmIiO94tNdAZXhqXueumiDelsxkU9MlozX/yaZm7dqf8fvtu9Xog7r21sa3HePXMjKFtENla63ntvq+mx3rswsuZSRK/5yrbavV6A+LvgPz2tanr+f/q5hw4aljg0u6OzZsxX6GQ53XXpGK+jrr782g6gBXztx4oQ0b97cqiz1tnLCg4PkhqgoiQwJkbScHPn3+fNyKTevkvdaN5VWb6mnAHz9e8hb6NCxA98eWyORkfXLKHtRLr9iiHz77bcSGRkptcFf/vIX67IVXUzO71ogfEFbLbTiRUREWCc6oCppzk9PTzd10Rb1Fv5Qb6mnAHz9eyjQDKvECtO2CBAWdMS6bWoFamomhbJQb+EP9ZZ6CsDXv4cCXW5urqxfv14OHDhgPgjv0KGD/PSnPzUzm1YUAQIAAAAIwFmYjhw5IgMHDjQTDOn0rdoic+jQIdM1/5133pErr7yyQvcbVOVXCgAAAARKgChrq8XGjx9vQoJ2xU9MTJTdu3ebyYZ0kiG9raJogQAAAAAC0JYtW+Sjjz6SRo0a5R/ThZSfe+456dWrV4XvlwABAAAABGAfJqfTaQaRF5WRkWEWaK4oujABAAAAAegnP/mJ/OIXv5CPP/7YjH/QTVskdKFlHUhdUQQIAAAAoAi35Vab6eLJOgaiR48eEhYWZjbtunTVVVfJyy+/XOH7pQsTAAAAEIBdmKKiouTvf/+7mY1Jp3HVFgidxlUDRGUQICzk5eXJqVOnWEgOtWIhHJ033wb1Fv5Qb6mnAHz9e6guuOqqq8yma0Ls3btXzp07Jw0bNqzw/REgLGh40PlyUTHhwUFyQ1SURIaESFpOjvz7/Hm5lJvH01kBOg2b7aKG1NvKod7WTL2lngKobX8/A6kFYsKECdKpUycZOXKkCQ99+vSR7du3S/369eUf//iH9O3bt0L3S4CwEBERYb4mHkqUBhENKvRE10XuTJdkvP43yfxgq7gzM/OPO7QPXr/e0uC+e8QR5vTpNfqLjPQM6dKuS35dtEG9rRjqbc3WW89t+sc9MjKyCn86AIikpaWZD4HL8/fTw2aMg7uWP8lvvPGGPPDAA+b7t99+W7788kv5/PPPZeXKlfLkk0/Ktm3b6kaA+PDDD+XFF1+UXbt2SVJSkqxbt04GDRpU5hy4kyZNkn379pkmrClTppjR57Z02W+l4SEisvwVsC7Ky8yUU089K64Dh8y+OyZGJK6ZyKmTIikpcumfCZJ37Ctp9tx0CQoL8/Xl+g1PXSxPWeqtPeptzddbz20aHggQAGrD388iZ4o/S01NldjYWPP9hg0b5N5775V27dqZFgkdYF1RfhcgLly4IJ07d5bhw4fL4MGDyyx/9OhRs4T36NGjZdWqVSZpjR07Vpo0aWJ1Pirm7PLXTHi4UC9clncYJJ9Ft9X/vSKN3NLxzGEZvn+9yIFDplzjR0byNKNWoN4CAAJJTEyM7N+/X+Li4uTdd9+VhQsXmuMXL16U4ODgCt+v340mGTBggDzzzDPys5/9zKr84sWLpWXLljJ37lxp3769jBo1SkaMGCGzZ8+u9mutq/IuXpK09zaZ7014aNzuu/CgHA6zv6LDd61GaRvfN+UBX6PeAgC8j4Eoa6u99AN3bXXo2LGjaYW59dZbzXFdF+Kaa66pOy0Q5bVjxw7p379/oWPx8fGybNkyyc7Olnr16hU7x+Vyma1g/znYu5j4qbgvZZpuS6blwYu90W3F3bSp6c6k5Rv8qDtPcSVRbyuHegsACDTTp0834UHHmd1zzz1mZWqlrQ9Tp06t8P0GfIBITk42zTcF6X5OTo7pF6ZNOkXNmjVLZsyYUey467xLQnMrvux3XZF1+pz5mtck9r8tD0U5HJLXJE6CU1JMede5/wY2FOdKL/v5od5WDvXWN/W2PF6YM13Op6eIv4iKaCpTJk2XusyfXjNeLxTldjjMVhp3hcdW1Jy777672LFhw4ZV6j4DPkB4GzijcwJ7O+4xbdo0M+i66Ah+Z5RTnJHMGlSW7Jjv5hUO+iZZpKnbe4hwuyXomyTzbWhMQ3E25HktTVZwVpnPO/W2cqi3vqm35aFvRFvf8bH4i6Nv/1DqOn96zXi9EKg2bdokL730kllITt/7atclnd71xz/+cd0ZA1FeOvJcWyEKSklJkZCQEImOjvZ6jjbveGYEYWaQ8qvfpbM4wsPEcfq0GTDtTaczh8WRkiKO+uGmPCqPels51FsAQKCNgZg/f77cdtttZhrbX/3qVzJ+/Hjz3lYnGNLbKirgA0SPHj0kISGh0LGNGzdKt27dvI5/QOUF1Q+XyPhbzPc621Kn1EOmxcFwu83+Q/vWmd3I/jeb8oCvUW8BAIFm1qxZpvVh9erVJjzo9vrrr5tjv//97+tOF6aMjAw5cuRIoWla9+zZI40aNTKzLWk3jpMnT5oFMpSu96AJS7sk6VSuOqhaB1DrE4nq02j4/ZJ58LCZqvXRT1d/N2Ba14FIOmVaHpSzfTtTDqgtqLcAgEBaiTotLc20QBSlEwz9+te/rjstEDt37pTrr7/ebEqDgX7/1FNPmX1dXO748eP55Vu3bm0Wzti8ebP84Ac/kN/97ndm4QzWgKheujicLhJ3+aDbTTcl013p0z353Zb0OIvIobah3gIAiq5EXdZWm/30pz81iy4X9fe//13uuOOOutMC0bdv3/xB0N6sWLGi2LE+ffpIYmJiNV8ZvL0Z00XiGg27z0yRmZeeLkEREaavOd2WUFtRbwEA/mxegRWmdQ20Z5991nyQrt361UcffWQWVn7sscfqToCA/9GwwDoP8DfUWwCo66qnC9PChQvlxRdfNL1mrr32WrPYce/evcs8T9/064fiuq6Ddt8viY5vKKhhw4ZmNWrdPKKiouSVV16R3/zmN1IRBAgAAACgBqxZs8ZMoaoholevXrJkyRIZMGCAeXOvY3lL8u2338qDDz4ot9xyi5w+fbrUn6Hjg6ub342BAAAAAKqbWxxWW3nMmTNHRo4cKaNGjTLdi7T1QdcaW7RoUannPfzww3Lffffld0PyNVogAAAAgErOdlR0bSbdCsrKypJdu3bJ1KlTi82ItH37dinJ8uXL5YsvvpBVq1bJM888I+X19ddfy1tvvWUmGdJrKBpoKoIAAQAAAFRiDESLFi0KHX366adl+vTphY6lpqZKbm6uxMTEFDqu+0UXPfY4fPiwCRxbt241iyBXZBVqnYlJZyU9ePCgGT9x7NgxMyFRly5dpKIIEAAAAEAlnDhxwqzw7FG09aEgh6NwKNE380WPKQ0b2m1pxowZ0q5duwpdl66PprMtzZw506xGvXbtWmnatKncf//9XteHsEWAAAAAACrRAhEZGVkoQHjTuHFjCQ4OLtbakJKSUqxVQqWnp5v1z3bv3i2//OUvzbG8vDwTOLQ1YuPGjXLzzTeX+jMPHDiQv3iynnPp0iVp0KCBCRR33nmnPPLIIxV63RlEDQAAAFTzQnKhoaHStWtXSUhIKHRc93v27FmsvAaSvXv3milbPduYMWPk6quvNt//8Ic/LPNnXnbZZeJyucz3zZo1M2MpCnapqihaIAAAAIAaMGnSJBk6dKh069bNzKi0dOlSM7hZg4Gny9HJkydl5cqVEhQUZMYsFKTdj8LCwoodL0n37t3N+hEdOnSQ22+/3XRn0lDy5ptvmtsqigABAAAA1MBCckOGDJEzZ86YLkS6kJwGgQ0bNkirVq3M7XpMA0VV0VmWMjIyzPc6qFu/17UorrrqqmILzpUHAQIAAACooZWox44dazZvVqxYUeq5GgKKzu5UmjZt2uR/X79+fbOAXVVgDAQAAAAAa7RAAAAAAEXYDJJ219FnjQABAAAA1FAXpkBAFyYAAAAA1miBAAAAAIrS1aG9rBBdSFm3BygCBAAAAFCEWxxmK427lndhys3NNTM7bdq0yax4rStZF/T+++9X6H4JEAAAAEAA+tWvfmUChC4ip2tOOKqoxYQAAQAAAASgv/71r/K///u/MnDgwCq9XwIEAAAAEICzMIWGhppVp6saszABAAAAAeixxx6Tl19+Wdzuql2xghYIAAAAIAAHUf/rX/+SDz74QP75z3/KtddeK/Xq1St0+5tvvlmh+yVAAAAAAAEoKipK7rrrriq/XwIEAAAAEIBjIJYvX14t98sYCAAAAADWaIEAAAAAAnAMhHrjjTfMVK7Hjx+XrKwsKSgxMVEqghYIAAAAIADNmzdPhg8fLk2bNpXdu3fLjTfeKNHR0fLll1/KgAEDKny/BAgAAAAgAC1cuFCWLl0q8+fPN2tCTJkyRRISEmT8+PHy7bffVvh+CRAAAABAqQOpS9pqN+221LNnT/N9eHi4pKenm++HDh0qq1evrvD9EiAAAACAABQbGytnzpwx37dq1Uo++ugj8/3Ro0crtbgcAQIAAAAod+uDo9a3Qtx8883y9ttvm+9HjhwpEydOlFtvvVWGDBlSqfUhmIUJAAAAKEI/ny/rM3p3LX/WdPxDXl6e+X7MmDHSqFEjszr1HXfcYfYrigABAAAABOBCckFBQWbzuPfee81W6fut9D0AAAAAqJW2bt0qDzzwgPTo0UNOnjxpjr366qumJaKiCBAAAABAAI6BWLt2rcTHx5sZmHQdCJfLZY7rbEy///3vK3y/BAgAAACghDEQZW212TPPPCOLFy+WP/3pT1KvXr384zq1a0VXoVYECAAAACAAHTx4UG666aZixyMjI+X8+fMVvl8CBAAAABCAXZji4uLkyJEjxY7r+Ic2bdpU+H4JEAAAAEBRDofdVos9/PDD8qtf/Uo+/vhjcTgccurUKXnttddk8uTJMnbs2ArfL9O4AgAAAAG4DsSUKVPk22+/lX79+klmZqbpzuR0Ok2A+OUvf1nh+yVAAAAAAAG4DoR69tln5cknn5T9+/ebReU6dOggDRo0kMogQAAAAAABrH79+tKtW7cquz8CBAAAABBARowYYVXulVdeqdD9EyAAAACAAOrCtGLFCmnVqpVcf/314nZX/UgNAgQAAAAQQMaMGSN//etf5csvvzStEQ888IA0atSoyu6faVwBAACAItzisNrKa+HChdK6dWsJCwuTrl27ytatW0ss++abb8qtt94qTZo0MYu/9ejRQ9577z2rn5GUlCS//vWv5e2335YWLVrIvffea86tihaJCgWI5ORkGTdunFmAQqeC0ou64447ZNOmTYXK6QUOGDDAzDu7fv36Sl8sAAAA4K/WrFkjEyZMMLMi7d69W3r37m3eKx8/ftxr+Q8//NAEiA0bNsiuXbvMdKz6nlvPLYu+R//5z38uCQkJZgama6+91qz9oF2bMjIyarYL07Fjx6RXr14SFRUlL7zwglx33XWSnZ1tEs2jjz4qn3/+eX7ZuXPnmvAAAAAA1PUxEHPmzJGRI0fKqFGj8t8r63voRYsWyaxZs4qV19sL+v3vfy9///vfTauCjm+wpe/HddMP93Uq1xpvgdDkohfwySefyN133y3t2rUziWbSpEny0Ucf5Zf79NNPzZNU0dHdVdX0s3nz5vwnreBWMOgAAAAAFZWWllZoc7lcxcpkZWWZVoT+/fsXOq7727dvt/o5+uY/PT3dajyDXsPq1atNC8bVV18te/fulfnz55vWjsquA1GuAHH27Fl59913TUvDZZddVux2bZVQFy9eNE0mepGxsbHiy6Yfj4MHD5q+YJ6tbdu2VXpdAAAAqJtjIFq0aCGXX355/uatNSE1NVVyc3MlJiam0HHd1+EBNv7whz/IhQsXzHiGsj7wj4uLk+eff15+8pOfyNdffy1/+9vfZODAgRIUVPkh0OXqwnTkyBHT9HHNNdeUWm7ixInSs2dPufPOO6Wqlbfpx6Np06b5AQcAAACoKidOnDCDnAuOPyhJ0e79+t7apsu/tiZMnz7ddGHS97WlWbx4sbRs2dL02NmyZYvZShqkXe0BwjNqu7QH+dZbb8n7779vNbijvDxNP1OnTi1304/2E8vMzDTLd//mN78xg1BKa/Ip2PSkTVFAbUe9BQDANyIjIwsFCG8aN24swcHBxVobUlJSirVKeOuBox+gayvCj3/84zKv58EHH6zWccjlChDa7Ucv5sCBAzJo0CCvZTQ8fPHFF8U+7R88eLDpbqRjEiqqIk0/2nyzdOlSM1ZC32C9+uqrcsstt5jruOmmm7yeoy0ZM2bMKHbcdd4lobmhFb5+oKJc6cX7UhZFvYU/1lsAqCuDqENDQ837UZ0V6a677so/rvul9drRlgddy0G/3n777dYLyVWncgUIHbARHx8vCxYskPHjxxcbB3H+/HnTOuDpXuTRqVMneemll8y0U1WhPE0/OmhENw+dP1ebmWbPnl1igJg2bZoZFF6wBUL7tjmjnOKMLLlJCqguWcFZZZah3sIf6y0A1FY26zy4yzkLk76/HDp0qHTr1s28J9UPuXUcry785vlbfvLkSVm5cqXZ19CgrQkvv/yydO/ePf8D8/DwcDPWwldCKjIDko5vuPHGG2XmzJlmGtecnByTnnQcgrZOeBs47emHVRmVafopSF+AVatWlXi79lsrre8aUBtRbwEAqN2GDBkiZ86cMe+hdVKfjh07mjUedG0GpccKTgy0ZMkS8z5bJzDSzWPYsGHV3spQpQFCQ0BiYqI8++yz8thjj5kHqqvjaZOMBojqVNGmn6J0fIZ2bQIAAABq0tixY83mTdFQUJmu/7UqQCh9861TtOpmoyqWzK5o04/O0nTFFVeYtSp0ELa2PKxdu9ZsAAAAQE0tJBcoKhQg/KnpR0PD5MmTTajQ/mIaJN555x0zDy4AAACAAA8Q5W36mTJlitkAAAAAe7RABFSAAAAAAKqTdsAvqxO+u46+BAQIAAAAoChdIqCsxdgcdXMMRJCvLwAAAACA/6AFAgAAACiGMRAlIUAAAAAARTAGomQECAAAAKAYWiBKwhgIAAAAANYIEAAAAACs0YUJAAAA8MJtujGhKAIEAAAAUAxjIEpCFyYAAAAA1ggQAAAAAKzRhQkAAAAohi5MJaEFAgAAAIA1WiAAAAAALzMwlTULk7uOztJECwQAAAAAa7RAAAAAAMUwBqIktEAAAAAAsEYLBAAAAFAEYyBKRgsEAAAAAGsECAAAAADW6MIEAAAAFMMg6pIQIAAAAIAiGANRMgIEAAAAUBQNECUiQAAAAADFkCBKwiBqAAAAANYIEAAAAACs0YUJAAAAKIYuTCUhQAAAAABFuL/fSuOuo88aAQIAAAAohhaIkjAGAgAAAIA1AgQAAABQYgtEWVv5LFy4UFq3bi1hYWHStWtX2bp1a6nlt2zZYspp+TZt2sjixYvF1wgQAAAAQAljIMraymPNmjUyYcIEefLJJ2X37t3Su3dvGTBggBw/ftxr+aNHj8rAgQNNOS3/xBNPyPjx42Xt2rXiSwQIAAAAoAZaIObMmSMjR46UUaNGSfv27WXu3LnSokULWbRokdfy2trQsmVLU07L63kjRoyQ2bNn+/T1YhA1AAAAUER6erp1mbS0tELHnU6n2QrKysqSXbt2ydSpUwsd79+/v2zfvt3r/e/YscPcXlB8fLwsW7ZMsrOzpV69ej553QgQAAAAwPdCQ0MlNjZWurbravWcNGjQwLQiFPT000/L9OnTCx1LTU2V3NxciYmJKXRc95OTk73etx73Vj4nJ8fcX1xcnE9eNwIEAAAA8D0drKxjD7TFwIbb7RaHo3BXpqKtDwUVLevt/LLKeztekwgQAAAAQJEQoVtVaty4sQQHBxdrbUhJSSnWyuChLSHeyoeEhEh0dLTPXjMGUQMAAAA10DWqa9eukpCQUOi47vfs2dPrOT169ChWfuPGjdKtWzefjX9QBAgAAACgBkyaNEn+/Oc/yyuvvCIHDhyQiRMnmilcx4wZY26fNm2aPPjgg/nl9fhXX31lztPyep4OoJ48ebJPXy+6MAEAAAA1YMiQIXLmzBmZOXOmJCUlSceOHWXDhg3SqlUrc7seK7gmhC44p7dr0FiwYIE0a9ZM5s2bJ4MHD/bp60WAAAAAAGrI2LFjzebNihUrih3r06ePJCYmSm1CFyYAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAAAgsAPEwoULzby4usS4rui3devWUstv2bLFlNPybdq0kcWLF9fYtQIAAACBxO8CxJo1a2TChAny5JNPyu7du6V3794yYMCAQotuFHT06FEZOHCgKafln3jiCRk/frysXbu2xq8dAAAA8Hd+FyDmzJkjI0eOlFGjRkn79u1l7ty50qJFC1m0aJHX8tra0LJlS1NOy+t5I0aMkNmzZ9f4tQMAAAD+zq8CRFZWluzatUv69+9f6Ljub9++3es5O3bsKFY+Pj5edu7cKdnZ2V7PcblckpaWVmgDajvqLQAAqAkh4kdSU1MlNzdXYmJiCh3X/eTkZK/n6HFv5XNycsz9xcXFFTtn1qxZMmPGjGLHXeddEpobWunHAZSXK91VZhnqLfyx3gIA/I9fBQgPh8NRaN/tdhc7VlZ5b8c9pk2bJpMmTcrf1xYI7SbljHKKM9JZyasHyi8rOKvMMtRb+GO9BQD4H78KEI0bN5bg4OBirQ0pKSnFWhk8YmNjvZYPCQmR6Ohor+c4nU6zAf6EegsAAGqCX42BCA0NNdOxJiQkFDqu+z179vR6To8ePYqV37hxo3Tr1k3q1atXrdcLAAAABBq/aoFQ2rVo6NChJgBoOFi6dKmZwnXMmDH53ThOnjwpK1euNPt6fP78+ea80aNHm0HVy5Ytk9WrV1v/TE+Xp4z0jGp6VEDpPHXPUxdtUG/hD/XWc5vNZBWuzCy5lJEr/kKvt65PwuFPrxmvV2Dy/B8sz99PWHD7oQULFrhbtWrlDg0NdXfp0sW9ZcuW/NuGDRvm7tOnT6Hymzdvdl9//fWm/BVXXOFetGhRuX7eiRMntNax8Rz4vA5oXaTe+v51YKu6esvvV+oT/5+oA7Xt7yfK5tB/bIJGXZaXlyenTp2SiIiIUgdrA9VF/5ump6dLs2bNJCjIruch9Rb+UG+ppwB8/XsI5UeAAAAAAGCNKAYAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsBZiX7TuYqEj+BoLycEfsZAcAF9jIbnqQYCwoKtQt2jRoppegsAXHhwkN0RFSWRIiKTl5Mi/z5+XS7l5vr4sv3TixAlp3ry5VVnqLfyh3lJPAfj69xDKjwBhISIiwnxNPJQoDSIaVOBprpvcmS7JeP1vkvnBVnFnZuYfd4SFSVi/3tLgvnvEEeb06TX6i4z0DOnSrkt+XbRBvYU/1FvPbfrHPTIysgavDkBdkJaWZj4ELs/fTwRggPjwww/lxRdflF27dklSUpKsW7dOBg0aVOo5W7ZskUmTJsm+ffukWbNmMmXKFBkzZoz1z3Q4HOarhoeISCqgjbzMTDn11LPiOnDI7LtjYkTimomcOimSkiKX/pkgece+kmbPTZegsDDr16Ku89TF8pSl3qI211vPbRoeCBAAfPF7CHUgQFy4cEE6d+4sw4cPl8GDB5dZ/ujRozJw4EAZPXq0rFq1SrZt2yZjx46VJk2aWJ2Pijm7/DUTHi7UC5flHQbJZ9Ft9X+vSCO3dDxzWIbvXy9y4JAp1/iRkTzNAAAAfsLvAsSAAQPMZmvx4sXSsmVLmTt3rtlv37697Ny5U2bPnk2AqCZ5Fy9J2nubzPcmPDRu998bHQ6zv6LDIHn009WStvF9aTTsPgmqH15dlwMAAIAqFPDTuO7YsUP69+9f6Fh8fLwJEdnZ2V7Pcblcps9cwQ32LiZ+Ku5Lmabbkml58GJvdFtxN20q7ouXTHlUHvUWAADUBL9rgSiv5ORkidH+9wXofk5OjqSmpkpcXFyxc2bNmiUzZswodtx13iWhuaHVer2BIOv0OfM1r0nsd92WvHE4JK9JnASnpJjyrnOumr1IP+NKL/v5od7CH+stAMD/BHyA8DZwRucE9nbcY9q0aWbQddER/M4opzgjmTWoLNkxDc3XoG+SRZq6vYcIt1uCvkky34bGNBRnQ57X0mQFZ5X5vFNv4Y/1FgDgfwI+QMTGxppWiIJSUlIkJCREoqOjvZ7jdDrNhoqp36WzOMLDRE6flo6xhwuPgfhepzOHxZGSIo764aY8Ko96CwAAakLAj4Ho0aOHJCQkFDq2ceNG6datm9SrV89n1xXIdEB0ZPwt5nudbalT6iHT4mC43Wb/oX3rzG5k/5sZQA0AAOBH/K4FIiMjQ44cOVJomtY9e/ZIo0aNzGxL2o3j5MmTsnLlSnO7rvcwf/580yVJp3LVQdXLli2T1atX+/BRBL5Gw++XzIOHzVStOtuSDpg260AknTItD8rZvp0pBwAAAP/hdwFCZ0/q169f/r5nrMKwYcNkxYoVZnG548eP59/eunVr2bBhg0ycOFEWLFhgFpKbN28eU7hWM10cTheJ03UedKpWXTzObDr2RFso+t9swgOLyAEAAPgXvwsQffv2zR8E7Y2GiKL69OkjiYmJ1XxlKErDgS4Sp+s86FSteenpEhQRYcY8sO4DAACAf/K7AAH/o2GhwY+6+/oyAAAAUAUCfhA1AAAAgKpDgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANUbIJKTk2XcuHHSpk0bcTqd0qJFC7njjjtk06ZN5va+ffuKw+EotP2///f/KvKjAAAAAPhzgDh27Jh07dpV3n//fXnhhRdk79698u6770q/fv3k0UcfzS83evRoSUpKyt+WLFlSZRe9cOFCad26tYSFhZlr2bp1a4llN2/eXCzM6Pb5559X2fUAAAAAdUVIeU8YO3aseQP+ySefyGWXXZZ//Nprr5URI0bk79evX19iY2Olqq1Zs0YmTJhgQkSvXr1MMBkwYIDs379fWrZsWeJ5Bw8elMjIyPz9Jk2aVPm1AQAAAIGuXC0QZ8+eNa0N2tJQMDx4REVF5X//2muvSePGjU2wmDx5sqSnp1fJBc+ZM0dGjhwpo0aNkvbt28vcuXNNF6pFixaVel7Tpk1NoPFswcHBVXI9AAAAQF1SrhaII0eOiNvtlmuuuabUcvfff7/pYqRv1D/77DOZNm2afPrpp5KQkFCpi83KypJdu3bJ1KlTCx3v37+/bN++vdRzr7/+esnMzJQOHTrIb37zG9PlqiQul8tsHmlpaZW6bqAmUG8BAECtCxAaHpR2YSqNjn/w6Nixo7Rt21a6desmiYmJ0qVLl4peq6Smpkpubq7ExMQUOq77OrDbm7i4OFm6dKkZK6FvsF599VW55ZZbzNiIm266yes5s2bNkhkzZhQ77jrvktDc0ApfP1BRrvT/BtqSUG/hj/UWABDgAUKDgIaHAwcOyKBBg6zP09BQr149OXz4cKUChEfRAKPBpqRQc/XVV5vNo0ePHnLixAmZPXt2iQFCW0wmTZpUqAVCu0k5o5zijHRW+vqB8soKziqzDPUW/lhvAQABPgaiUaNGEh8fLwsWLJALFy4Uu/38+fNez9u3b59kZ2eb1oDK0DEVOnahaGtDSkpKsVaJ0nTv3t2EmZLo1LQ64LrgBtR21FsAAFArp3HV2Y+0G9GNN94oa9euNW/EtUVi3rx55tP9L774QmbOnCk7d+40U75u2LBB7rnnHjMGQWdNqozQ0FDTFanoWArd79mzp/X97N69u9JhBgAAAKiLyj2Nqw6O1rEMzz77rDz22GNmjQedElXf2OtMSPomXxeUe/nllyUjI8N0/bn99tvl6aefrpKZj7Rr0dChQ82YCg0sOr7h+PHjMmbMmPxuHCdPnpSVK1eafZ2l6YorrjCzQekg7FWrVpngoxsAAACAag4QSj+9nz9/vtm82bJli1SXIUOGyJkzZ0wrh4YXHaStrRytWrUyt+sxDRQeGhp0GlkNFeHh4SZIvPPOOzJw4MBqu0YAAAAgUDncnqmVUCIdRH355ZfLoaRDEhEZwTOFGpeeli7t4trJt99+az0mh3oLf6i3nnpanroNALb4HVNLxkAAAAAAqLsIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALBGgAAAAABgjQABAAAAwFqIfVEAqDvyLl6Si4mfSl56ugRFREj9Lp0lqH64ry8LAACfI0AAQAF5mZlydvlrkvbeJnFfysw/7ggPk8j4W6TR8PslKCyM5wwAUGf5ZRemhQsXSuvWrSUsLEy6du0qW7duLbX8li1bTDkt36ZNG1m8eHGNXSsA/woPp6ZOl2/Xv2PCgzsmRtw/uF7cTZuafT2ut2s5AADqKr9rgVizZo1MmDDBhIhevXrJkiVLZMCAAbJ//35p2bJlsfJHjx6VgQMHyujRo2XVqlWybds2GTt2rDRp0kQGDx7sk8cAoHbSlgfXgUNyoV64LO8wSD6LbivicIg0ckvHM4dl+P71IgcOmXKNHxnp68sFAMAn/K4FYs6cOTJy5EgZNWqUtG/fXubOnSstWrSQRYsWeS2vrQ0aLLScltfzRowYIbNnz67xawdQu8c8aLclZcJD43bfhQflcJj9FR0Gmd20je+b8gAA1EV+FSCysrJk165d0r9//0LHdX/79u1ez9mxY0ex8vHx8bJz507Jzs72eo7L5ZK0tLRCG1DbUW8rRwdMe7otmZYHL/ZGt/2uO9P3A6wBAKiL/KoLU2pqquTm5kpMTEyh47qfnJzs9Rw97q18Tk6Oub+4uLhi58yaNUtmzJhR7LjrvEtCc0Mr/TiA8nKlu8osQ72tnKzT58zXvCax/215KMrhkLwmcRKckmLKu86V/brUZTb1FgDgf/wqQHg4ivxxd7vdxY6VVd7bcY9p06bJpEmT8ve1BUK7STmjnOKMdFby6oHyywrOKrMM9bZysmMamq9B3ySLNHV7DxFutwR9k2S+DY1pKM6G/D6obL0FAPgfvwoQjRs3luDg4GKtDSkpKcVaGTxiY2O9lg8JCZHo6Giv5zidTrMB/oR6Wzm6zoNO1SqnT0vH2MPfjYEootOZw+JISRFH/XBTHgCAusivxkCEhoaa6VgTEhIKHdf9nj17ej2nR48excpv3LhRunXrJvXq1avW6wXgP3SROF3nQelsS51SD5kWB8PtNvsP7VtndiP738yicgCAOsuvWiCUdi0aOnSoCQAaDpYuXSrHjx+XMWPG5HfjOHnypKxcudLs6/H58+eb83QqVx1UvWzZMlm9erWPHwmA2kYXics8eNhM1frop6vNgGmJayaSdMq0PChn+3amHAAAdZXfBYghQ4bImTNnZObMmZKUlCQdO3aUDRs2SKtWrcztekwDhYcuOKe3T5w4URYsWCDNmjWTefPmlWsNCM+YiYz0jGp4REDZPHXPUxdtUG8rJvKJyZLx+t8kc/NW7e/43fb9StRhfXtLg/vukQtZ2SK6odL11nMbs90BqA6e3y3l+fuJsjncPKNl+vrrr80gasDXTpw4Ic2bN7cqS72tnPDgILkhKkoiQ0IkLSdH/n3+vFzKzavkvdZNpdVb6ikAX/8eQvkRICzk5eXJqVOnJCIiotTZnoDqojk/PT3dtKAFBdkNXaLewh/qLfUUgK9/D6H8CBAAAAAArBHFAAAAAFgjQAAAAACwRoAAAAAAYI0AAQAAAMAaAQIAAACANQIEAAAAAGsECAAAAADWQuyL1l0sdARfYyE5+CMWkgPgaywkVz0IEBZ0FeoWLVpU00sQ+MKDg+SGqCiJDAmRtJwc+ff583IpN8/Xl+WXTpw4Ic2bN7cqS72FP9Rb6ikAX/8eQvkRICxERESYr4mHEqVBRIMKPM11kzvTJRmv/00yP9gq7szM/OOOsDAJ69dbGtx3jzjCnD69Rn+RkZ4hXdp1ya+LNqi38Id667lN/7hHRkbW4NUBqAvS0tLMh8Dl+fuJAAwQH374obz44ouya9cuSUpKknXr1smgQYNKPWfLli0yadIk2bdvnzRr1kymTJkiY8aMsf6ZDofDfNXwEBFJBbSRl5kpp556VlwHDpl9d0yMSFwzkVMnRVJS5NI/EyTv2FfS7LnpEhQWZv1a1HWeuliestRb1OZ667lNwwMBAoAvfg+hDgSICxcuSOfOnWX48OEyePDgMssfPXpUBg4cKKNHj5ZVq1bJtm3bZOzYsdKkSROr81ExZ5e/ZsLDhXrhsrzDIPksuq3+7xVp5JaOZw7L8P3rRQ4cMuUaPzKSpxkAAMBP+F2AGDBggNlsLV68WFq2bClz5841++3bt5edO3fK7NmzCRDVJO/iJUl7b5P53oSHxu3+e6PDYfZXdBgkj366WtI2vi+Nht0nQfXDq+tyAAAAUIUCfhrXHTt2SP/+/Qsdi4+PNyEiOzvb6zkul8v0mSu4wd7FxE/FfSnTdFsyLQ9e7I1uK+6mTcV98ZIpj8qj3gIAgJrgdy0Q5ZWcnCwx2v++AN3PycmR1NRUiYuLK3bOrFmzZMaMGcWOu867JDQ3tFqvNxBknT5nvuY1if2u25I3DofkNYmT4JQUU951zlWzF+lnXOllPz/UW/hjvS2PF+ZMl/PpKeIvoiKaypRJ06Uu86fXjNdL5I/PzpSLZ74Rf1A/uomMe/IpX19GnRXwAcLbwBmdE9jbcY9p06aZQddFR/A7o5zijGTWoLJkxzQ0X4O+SRZp6vYeItxuCfomyXwbGtNQnA15XkuTFZxV5vNOvYU/1tvy0Deire/4WPzF0bd/KHWdP71mvF5iwsOvL303+Ult9/wZX19B3RbwASI2Nta0QhSUkpIiISEhEh0d7fUcp9NpNlRM/S6dxREeJnL6tHSMPVx4DMT3Op05LI6UFHHUDzflUXnUWwAAUBMCfgxEjx49JCEhodCxjRs3Srdu3aRevXo+u65ApgOiI+NvMd/rbEudUg+ZFgfD7Tb7D+1bZ3Yj+9/MAGoAAAA/4nctEBkZGXLkyJFC07Tu2bNHGjVqZGZb0m4cJ0+elJUrV5rbdb2H+fPnmy5JOpWrDqpetmyZrF692oePIvA1Gn6/ZB48bKZq1dmWdMC0WQci6ZRpeVDO9u1MOQAAAPgPvwsQOntSv3798vc9YxWGDRsmK1asMIvLHT9+PP/21q1by4YNG2TixImyYMECs5DcvHnzmMK1municLpInK7zoFO16uJxZtOxJ9pC0f9mEx5YRA4AAMC/+F2A6Nu3b/4gaG80RBTVp08fSUxMrOYrQ1EaDnSROF3nQadqzUtPl6CICDPmgXUfAAAA/JPfBQj4Hw0LDX7U3deXAQAAgCoQ8IOoAQAAAFQdAgQAAAAAAgQAAACAqkcLBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKwRIAAAAABYI0AAAAAAsEaAAAAAAGCNAAEAAADAGgECAAAAgDUCBAAAAABrBAgAAAAA1ggQAAAAAKo3QCQnJ8u4ceOkTZs24nQ6pUWLFnLHHXfIpk2b8svs2LFDbr75ZrnsssskKipK+vbtK5cuXarIjwMAAADgrwHi2LFj0rVrV3n//fflhRdekL1798q7774r/fr1k0cffTQ/PNx2223Sv39/+eSTT+Tf//63/PKXv5SgoKpp8Fi4cKG0bt1awsLCzLVs3bq1xLKbN28Wh8NRbPv888+r5FoAAACAuiSkvCeMHTvWvAHXYKCtCx7XXnutjBgxwnw/ceJEGT9+vEydOjX/9rZt21bJBa9Zs0YmTJhgQkSvXr1kyZIlMmDAANm/f7+0bNmyxPMOHjwokZGR+ftNmjSpkusBAAAA6pJyNQmcPXvWtDZoS0PB8OChXZVSUlLk448/lqZNm0rPnj0lJiZG+vTpI//617+q5ILnzJkjI0eOlFGjRkn79u1l7ty5pgvVokWLSj1Pryc2NjZ/Cw4OrpLrAQAAAOqScgWII0eOiNvtlmuuuabEMl9++aX5On36dBk9erQJHF26dJFbbrlFDh8+XKmLzcrKkl27dpmuUQXp/vbt20s99/rrr5e4uDhzHR988EGpZV0ul6SlpRXagNqOegsAAGpdFyYND0q7MJUkLy/PfH344Ydl+PDh+W/edYD1K6+8IrNmzarwxaampkpubq5p1ShI93VgtzcaGpYuXWrGSugbrFdffdWECB0bcdNNN3k9R69xxowZxY67zrskNDe0wtcPVJQr3VVmGeot/LHeAgACPEDoOAYNDwcOHJBBgwaV+IZddejQodBx7W50/PhxqQpFA4wGm5JCzdVXX202jx49esiJEydk9uzZJQaIadOmyaRJk/L3tQVCu0k5o5zijHRWyWMAyiMrOKvMMtRb+GO9BQAEeBemRo0aSXx8vCxYsEAuXLhQ7Pbz58/LFVdcIc2aNTODlgs6dOiQtGrVqlIX27hxYzN2oWhrg467KNoqUZru3buX2p1Kp6bVAdcFN6C2o94CAICaUO55VXX2I+1GdOONN8ratWvNG3FtkZg3b575dF9bAh5//HGz/8Ybb5hxE7/97W/NtKk6+LkyQkNDTVekhISEQsd1Xwds29q9e3d+SwkAAACAapzGVddfSExMlGeffVYee+wxSUpKMlOi6ht7z0xIOs1qZmammc5VZ27q3LmzeZN/5ZVXSmVp16KhQ4dKt27dTGDR8Q3aNWrMmDH53ThOnjwpK1euNPs6S5O2iug0szoIe9WqVSb46AYAAACgmgOE0k/v58+fb7aS6BoQBdeBqCpDhgyRM2fOyMyZM0146dixo2zYsCG/e5QeKzjWQkPD5MmTTagIDw83QeKdd96RgQMHVvm1AQAAAIGuQgHC13QxO928WbFiRaH9KVOmmA0AAACAD8ZAAAAAAKi7CBAAAAAArBEgAAAAAFgjQAAAAACwRoAAAAAAYI0AAQAAAMAaAQIAAACANQIEAAAAAGsECAAAAADWCBAAAAAArBEgAAAAAFgjQAAAAACwRoAAAAAAYI0AAQAAAMAaAQIAAACANQIEAAAAAGsECAAAAADWCBAAAAAArBEgAAAAAFgjQAAAAACwRoAAAAAAYI0AAQAAAMAaAQIAAACANQIEAAAAAGsECAAAAADWCBAAAAAArBEgAAAAAFgjQAAAAACwRoAAAAAAYI0AAQAAAMAaAQIAAACANQIEAAAAAGsECAAAAADWCBAAAAAArBEgAAAAAFgjQAAAAACwRoAAAAAAYI0AAQAAAIAAAQAAAKDq0QIBAAAAwBoBAgAAAIA1AgQAAAAAawQIAAAAANYIEAAAAACsESAAAAAAWCNAAAAAALAWYl8UAOqOvIuX5GLip5KXni5BERFSv0tnCaof7uvLAgDA5wgQAFBAXmamnF3+mqS9t0nclzLzjzvCwyQy/hZpNPx+CQoL4zkDANRZftmFaeHChdK6dWsJCwuTrl27ytatW0stv2XLFlNOy7dp00YWL15cY9cKwH9oeDg1dbp8u/4dEx7cMTHi/sH14m7a1Ozrcb1dywEAUFf5XQvEmjVrZMKECSZE9OrVS5YsWSIDBgyQ/fv3S8uWLYuVP3r0qAwcOFBGjx4tq1atkm3btsnYsWOlSZMmMnjwYJ88BgC1k7Y8uA4ckgv1wmV5h0HyWXRbEYdDpJFbOp45LMP3rxc5cMiUa/zISF9fLgAAPuF3LRBz5syRkSNHyqhRo6R9+/Yyd+5cadGihSxatMhreW1t0GCh5bS8njdixAiZPXt2jV87gNo95kG7LSkTHhq3+y48KIfD7K/oMMjspm1835QHAKAu8qsAkZWVJbt27ZL+/fsXOq7727dv93rOjh07ipWPj4+XnTt3SnZ2ttdzXC6XpKWlFdqA2o56Wzk6YNrTbcm0PHixN7rtd92Zvh9gDQBAXeRXXZhSU1MlNzdXYmJiCh3X/eTkZK/n6HFv5XNycsz9xcXFFTtn1qxZMmPGjGLHXeddEpobWunHAZSXK91VZhnqbeVknT5nvuY1if1vy0NRDofkNYmT4JQUU951ruzXpS6zqbcAAP/jVwHCw1Hkj7vb7S52rKzy3o57TJs2TSZNmpS/ry0Q2k3KGeUUZ6SzklcPlF9WcFaZZai3lZMd09B8DfomWaSp23uIcLsl6Jsk821oTENxNuT3QWXrLQDA//hVgGjcuLEEBwcXa21ISUkp1srgERsb67V8SEiIREdHez3H6XSaDfAn1NvK0XUedKpWOX1aOsYe/m4MRBGdzhwWR0qKOOqHm/IAANRFfjUGIjQ01EzHmpCQUOi47vfs2dPrOT169ChWfuPGjdKtWzepV69etV4vAP+hi8TpOg9KZ1vqlHrItDgYbrfZf2jfOrMb2f9mFpUDANRZftUCobRr0dChQ00A0HCwdOlSOX78uIwZMya/G8fJkydl5cqVZl+Pz58/35ynU7nqoOply5bJ6tWrffxIANQ2ukhc5sHDZqrWRz9dbQZMS1wzkaRTpuVBOdu3M+UAAKir/C5ADBkyRM6cOSMzZ86UpKQk6dixo2zYsEFatWplbtdjGig8dME5vX3ixImyYMECadasmcybN69ca0B4xkxkpGdUwyMCyuape566aIN6WzGRT0yWjNf/Jpmbt2p/x++271eiDuvbWxrcd49cyMoW0Q2Vrree22xmu3NlZsmljFy/edb1euv6LH7+9JrxeolkurIkLStH/EFmkN3/L0+Z8vz9RNkcbp7RMn399ddmEDXgaydOnJDmzZtblaXeVk54cJDcEBUlkSEhkpaTI/8+f14u5eZV8l7rptLqLfUUgK9/D6H8CBAW8vLy5NSpUxIREVHqbE8omWcmK/0PHBkZyVNVTprz09PTTQtaUJDd0CXqbeVRb6u/3vq6ngbqa8zj8i+B+nrVhsdWkb+fCMAuTL6gFY7UWjX0l0eg/XKsKZdffnm5ylNvqw71tvrqbW2pp4H6GvO4/Eugvl6+fmzl/fuJshHFAAAAAFgjQAAAAACwRoBAjS1y9vTTT7NAH/wK9TbwBeprzOPyL4H6egX6Y6vLGEQNAAAAwBotEAAAAACsESAAAAAAWCNAAAAAALBGgECV2Lx5s1kE6vz581X6jOp9rl+/vkrvE/Cg3gIAUH4EiDrooYceMm/Mi2633Xab1DZJSUkyYMAA6/IrVqyQqKioar0m+Ab1FgCA2oGVqOsoDQvLly8vdKw2TrEWGxvr60tALUK9BQLTN998I1999ZX5MKtr164SaPLy8syq60CgoDbXURoW9M15wa1hw4bmNv0F/uc//1nuuusuqV+/vrRt21beeuutQudv2LBB2rVrJ+Hh4dKvXz85duyY15YA7X6k5cLCwuTWW2+VEydOFCq3aNEiufLKKyU0NFSuvvpqefXVV0vswqQ/Q/fffPNN8zP12jp37iw7duzI744yfPhw+fbbb/NbVaZPn14tzx98g3qL8rxhg3/Yv3+/+Xvz29/+Vn7/+99Lbm6u+LuLFy/KSy+9ZP4Wut1u8/dI6ff+7NKlS7Jy5Up55513Ch3n/1sd5EadM2zYMPedd95Z4u1aLZo3b+5+/fXX3YcPH3aPHz/e3aBBA/eZM2fM7cePH3c7nU73r371K/fnn3/uXrVqlTsmJsacd+7cOVNm+fLl7nr16rm7devm3r59u3vnzp3uG2+80d2zZ8/8n/Pmm2+aMgsWLHAfPHjQ/Yc//MEdHBzsfv/99wtdy7p168z3R48eNfvXXHON+x//+Ic55+6773a3atXKnZ2d7Xa5XO65c+e6IyMj3UlJSWZLT0+vxmcSNYl6i7IcOHDAPXXqVPcXX3xhficEmgsXLri/+eYb9wcffOD++uuv3d9++63b33322WfuqKgo9xNPPOH+6quv3Lm5ue5AoH879XeW/s3r1KmTe9asWeZvlvLnx/jPf/7TPXLkSHfjxo3dQ4YMcb/44ov5t+Xl5fn02lCzCBB1kP5S0zfql112WaFt5syZ5nZ9k/6b3/wmv3xGRobb4XCYXxxq2rRp7vbt2xf6ZfHrX/+6WIDQ/Y8++qjQH3c99vHHH5t9/cU6evToQtd2zz33uAcOHFhqgPjzn/+cf/u+ffvMMb1vz8+9/PLLq/gZQ21AvUVp9AOEG264wfyuuuqqq9wTJkxwr1mzplCZnJwcv30S9c3ngw8+aD5ACQsLM2+677vvPve///1vt7/SD6V+9KMfuceNG1fouL+/ES16/dOnT3f/5Cc/cbdr1869bds2vw8Rnr/Hjz/+uPk/px8OJicn+/qSUMPowlRHaRegPXv2FNoeffTR/Nuvu+66/O8vu+wyiYiIkJSUFLN/4MAB6d69e36TrOrRo0exnxESEiLdunXL37/mmmtMtyY933M/vXr1KnSO7ntuL0nBa4uLizNfPdeGwEa9RUm0G+Q999wjf/jDH0zXyMsvv1x+8YtfyH333Sfz5883XSyCg4P9shvJf/7zH+nbt6/ptjl16lTZvXu3PPzww/LJJ5/I0KFDZdu2beKPkpOTzUQZgwcPLtQFxt+7+3iu3/OYnn76aZkxY4b5u6mv4//93/+Z8RD+2u1Hr/uKK64wj0n/r3n+dh86dCj/dgQ+AkQdpaHgqquuKrQ1atQo//Z69eoV+4Xo+aVQnl/qBUOGt2NFby/YV7QkBa+t6C9qBDbqLUpzww03mDc1+kGFjn/SDyN0bNXjjz9uPuTQNzuff/55mb9jalt40GvXWcj++Mc/yrBhw8yHMc8995w8++yzZhzapEmT5MiRI+Jv9IMrHTh90003eX1Dra+TjiXYuXOn+IuCj6HgY+rSpYvMnj1bRowYYcZ76GP3p0HVRR+X0rqnA951TGTz5s3lzjvvlOzsbHO7v4Y/2POf2otao0OHDvLRRx8VOlZ0X+Xk5BT6xX/w4EGzToT+8VPt27eXf/3rX4XO2b59uzlemU8hA2EAHqoe9Tbw6ae7o0ePlrlz50pmZqZpodQQoZ+WXnvttfK///u/5uuLL77oF29wdNKJW265RW6//XYzuFhbdfW69Xeruvfee+WRRx4xoeiDDz4wx/zhcXno66KPSSfGUN7eUL/yyivyxBNPSFZWltR2Lpcr/zHop/H6967gdTdp0sQ8Fp2a/JlnnpHU1FTxB/p/yfO4Tp8+LRkZGfm36d/b6OhoMwGKTnKhAUn5U0hHxRAg6ij9RafNxwU3219mY8aMkS+++MJ86qWh4PXXXzczTXhrKRg3bpx8/PHHkpiYaGZI0ibcG2+80dyunwrqeYsXL5bDhw/LnDlzzB+SyZMnV+oPkv5y27Rpk3k8+ukVAgf1FmX54Q9/KF9++aX5/TNq1CgzO9sbb7xh3ojq7HL6Kb6+IfeHNzj65qx169am3ns+bNHr9gQJpYHpBz/4gbz33nv5t/uLVq1aSWRkpJnVR1siPAqGIJ19Tz/lLtoqXpveXGtLkE5D65kKXbuVaR3Tv3dPPfWUnDx5Mr98y5Yt5e6775ZTp06Z7lu1NfTpbEv6f0XpLIpq5MiRphupPraZM2eaY9otUFsn/ud//sf8TdfHtHfv3lr7uFCFanrQBWrHYFR96YtuV199dbGByx46MFkHKHu8/fbbZqCizsbUu3dv9yuvvFJsELWes3btWnebNm3coaGh7ptvvtl97NixQve7cOFCc7vOxqQDzFauXFnodm+DqHfv3p1/u/48PaazkniMGTPGHR0dbY4//fTTVfrcwXeot7B10003uYOCgtzNmjVz79mzx6+fuEOHDrlvu+02d3x8vHvr1q1eB+r27dvXDKj2R/o3Qv+ODB061EyKUXDGKZ2wQ2fZ88xeVButWLHC3bZtW/cjjzziTktLc7/88svua6+91p2QkOCeOHGiu0+fPmbWQ529sCCdLOSuu+5y11Z/+tOfzExLnglVfvvb37o7dOhg/rb/4he/cHfs2NH8Ti4oNTXV3blzZ/dTTz3lo6tGTXLoP1UZSAClLQsTJkwwTbiAv6De+jfPGCrtkz1x4kR5/vnnZdCgQVZjq2ozbaEdP368eRy6VoJn8gn95Fc/ydbB4kOGDDHjI/ztsepj+NOf/iS//OUvzZpAPXv2NJ9466f22jX23Xffleuvv15q8/Xreg9r1641LUHa1Uc/odduSkq79ixbtswM6tfB/C1atMjvrquf8GsLvN5W22hLgv4+XLVqlXks2rqij0tfnwsXLshf//pXeeGFF8z4nII9EHTdJm3p08ftWVsKgYkuTACAgOB546xdXvSN3a5duwod91e6mOe8efPM4/jd736X351J36zqm1INETpWwh8fqz4GnVFKZ5Lq1KmTGVysXWA8Y+Rqe3jQ69ewqgOIdcC7vrHWwcUe2p1Ju/6kp6ebLr1Hjx41x9u0aWNeV+2OVhvp+CG97p///OeSkJAgS5YsyZ9oRSez0PE3U6ZMMTOB6QB/D520QAfFN2jQwIdXjxpRo+0dqDNYjwH+iHobOF599VWzvo1n3ZlAULA7U2Jiovv55583i3z6ezctD39aG8HThcyztoheuy6G2rJlS9NlSbvzFK2P2rVpzpw5hdYuqe1rWJw6dcr9zDPPmAVai67XoQu1Llu2zKxJsmTJkvzj2pULgY8uTACAgKNdYB544AHTlUKnmAwU2p1JJ7DQT37PnTsnO3bsMC0ugaBg96va3BVLB7d71hTRAe46dal+4q4tEjoZiHZn6ty5s8yaNatQNx5tZSm69lFtfVxKH5cOXtdJVrQblv5f+tnPfmZmBPNIS0szrUba6oC6hQABAAhIOkOOZwaZQKKz32n3EX0jp9PSwjd08dXPPvvMLLSqXZV0HIqGCB0b8NZbb5kQoa9R0bEAtTEcFbwm7ZKlAVwDhT4WHZui07fq2IbXXnvNrGOhM0+V1KULdQOvNAAgIAViePD0M9epaQkPNavgGkM6PuD/t3dnITb/YRzHn4tBhsyUZRgkJVmGG9lHImS/IYlMUpPlAjWJMchalOzr0JQLSzRcMMZYRriwjAY3CCOStUZkV+rf58nvdBzbuRj/8ztn3q+SOceYfr8T9f38vt/neTR7Izjvrzbl27dv9wW0wp2K91UToTkdse3EwxYedF/BNWlye3l5uc92UG2NCsPVCjkrK8vvWbt6KpRW0XsswkP9Es7qHQAA8FthnYuQqvSEPjjeo2NjmjmkoKAwV1tb64MqVSQd7ExonpGO92i4aXp6uoVZcF8aXKigcPbsWT/2p+tXUBg/frzvqGhQo0KE3gc4wgQAABBDnZN0nEdHdwJqa5qXl2fZ2dneJUpBQtSyXJ2yVqxY4b8rRIS1pkMBoLi42AoKCiLXpOnsCxcu9F2tsrIyH3gnatmqXRQFCO08KETo72sAYNjuC/8vjjABAADEUDtZFRJHU8G6ithVE3D16tXI+5mZmT6rY/ny5b4Toaf4YQwPcvr0aZ9DEX1NKo5WDUdNTY3vqAQ1DWrZunPnTm9TO3ToULt79y7hAY4dCAAAgJhi4Oii4M2bN9u8efP864cPH3pxsboSqahY9Q6B169f26VLl3zBHTbB3ODo4HD06FEvitZ7jx8/tvz8fC8M1+6KZlUE4Ue7MQcPHvShhYCwAwEAAPC9denIkSPtzp07kfCgp+7BsDjRwlr1Dyqc1vTvY8eORT47DVsLvk8BJCzUblbHqt6+feuvFQy0CzFx4kRbtmyZv+7QoYMf11I9x6BBgzwoKTzoPtRpKggPYbovJA4BAgAA4HtxutquVlZWRj4PFUrrdVVVlRcUByFCoUIBQkHiwIEDPy+wQtTStFGjRh4YgrCjYDBgwADbt2+f76YEIUK1DyUlJZaTk+Mdpu7du/fTfYTpvpA4/CsAAAD1XnDEp3PnznbixInI56HFtoqHFRJU9xCECM1HmD9/vo0bN84uXLgQ+vazY8eOterq6sgugu5X8yu066Chd9EhYs+ePdayZUvbtm1bgq8eYUUNBAAAwHc65tO1a1c/8lNUVBT5XLS4VlBQsXH//v29K5G8evXKWrVqFfrPT5OwVQitXYjRo0f/UBOh7lLTp0+3wsJCW7lypb+neg4dyQJ+hR0IAACA70/rMzIyfI7DyZMnf6hv0KJ68ODBdvjwYbty5Yrl5ub6+0F4CBbkYaRrGzhwoHeKUv3GjRs3fugSpQFxOs60du3aSLF4EB7CfF9IHAIEAABA1FA1PaFXMFA9QEVFReSz0aJbtQFabGtKc7QwtWqNFVybdk9Uv7F06VJvU6v3FRD0a+rUqT5NO3ZQXJjvC4nDESYAAIAYKjrWQjstLc0mTZrkU5ijdyqCsBG2OQ9/U1paart37/aOU2vWrPFi6l9JtvvC/4sdCAAAUC/86jhOUGQcSwvrdevWWadOnXyhrRoBdSX6+PFjJDxI2BbZmzZtsps3b/50b8G9T5gwwTtItWvXzoYPH+4zLm7fvv3DzyA84G/YgQAAACkvelGsGQefPn2y7t27++vooXGxVEysWRALFiywpk2b2ufPn/0Jvtq7hi08KNyowLtx48ZeNK2gE33f0V/rqJIGye3YscPbvHbs2NFWrVrlXZjCdl8IHwIEAABIadELZ3UZUiF00D1JnZWaN28e18/QtGY93VdBstqchpHubfXq1TZnzhybOXPmT2Egdnfh5cuXHibOnTvnNRKagwH8DQECAACkrOgFs+Y27N+/33bt2uXTldVtqWfPnt7G9E/+tEORKL87ZvT+/XubPHmy1dbWWnl5uWVmZoby+pHcCBAAACDlLVq0yIqLi70Fq4bFyZIlS+zLly9eC5CdnW2tW7e2Fi1aWDJR61Udydq6dasfRZInT55Yt27dfBdCdRxAXSNAAACAlHbmzBmfIK1OStHTlTVNWk/nVdegYzyah6A6gGQYDKcdCA29a9u2rddzaFp2fn6+9erVywPShg0bbOPGjb7bMmbMmERfLlIM+1kAACCl5eTk2IwZM+zWrVu2ZcsWf69fv34+E0HHfJ49e2YFBQU+30HzEZKBAoSOJ+3du9ePLCn0nDp1yo9lVVZW2rRp07yD1PHjx+3NmzeJvlykGAIEAABIaW3atPGZDhr+phqIrKwsn7SsadN6Wq9aAk1obtKkiT148MCSQVDToHDUsGFDH36nY1oKRqNGjbIjR454fYfuV5OnhanSqCsECAAAkPJU31BUVOQLbLU57du3rzVo0CCyEH/06JF3Y2rfvr2F2fr16312g2o3pEePHn4vajOrGojFixf7rkNZWZkfzfrw4YPl5eX5cSfas6KupNXZTwIAAAh5iNACW3UPOrqkJ/eFhYW+0J4yZYrvUOhJflip1qGmpsbnUFy8eNHbrmpK9uzZs626utpmzZplhw4dshEjRvjxJRWMnz9/3rp06WIZGRmJvnykEIqoAQBAvfLixQufLq1F97Bhw6y0tNSLkSsqKvzPw972tKqqyubOneuD43QEq6SkxO7fv+/1HUOGDPFi8GBatr4nPT3dv2bCNOpKeP93AAAA/MPjTOpYpDanKqZOlvAgvXv39inSatOqwXa6j8uXL/tOinYmglqHb9++ER7wT7ADAQAA6qXnz5/7BGY9sU+W8BBNQeHdu3ceJHS0SYHh+vXrHo7Ujhb4V5LnfwkAAEAdd2dK1vAgKopu1qyZT9LWlO0+ffr4+0+fPk30pSHFsQMBAACQpKKDz9evX+3atWuWm5vrr6l5wL9CgAAAAEgxybijguRBgAAAAAAQN6IpAAAAgLgRIAAAAADEjQABAAAAIG4ECAAAAABxI0AAAAAAiBsBAgAAAEDcCBAAAAAA4kaAAAAAABA3AgQAAACAuBEgAAAAAFi8/gPC7z0wp1teEQAAAABJRU5ErkJggg==", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -699,12 +1250,33 @@ } ], "source": [ - "cno.plot_fitness(G2_prep, exp_list_G2_egf, P2, measured_only=True)" + "fit_figure, fit_axes = plot_cellnopt_fit(method)" + ] + }, + { + "cell_type": "markdown", + "id": "9a672bb9", + "metadata": {}, + "source": [ + "The horizontal position is labelled **Endpoint** because these data contain one post-intervention snapshot, not a time course. The plot does not create an artificial starting value or assume that the first condition is a baseline. If future formulations model several measured time points, observed and predicted values can instead be placed at their actual sampling times." + ] + }, + { + "cell_type": "markdown", + "id": "012732df", + "metadata": {}, + "source": [ + "## A pathway reaction can be present but inactive\n", + "\n", + "It helps to separate the **pathway map** from the **response in one experiment**. A road can be present on a map even when no traffic uses it; likewise, a reaction can belong to the fitted signaling model even when its upstream requirements are not satisfied in one condition.\n", + "\n", + "`C1` and `C2` have the same upstream inputs: `A=1`, `C=0`, and `D=1`. In both conditions, `D` can activate `B`. In `C1`, however, the experimental inhibitor forces `B` off. This allows the rule `A AND NOT B → X` to transmit the signal. In `C2`, `B` remains active, the `NOT B` requirement fails, and the same pathway branch is inactive and drawn with dashed lines." ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 10, + "id": "9546c203", "metadata": {}, "outputs": [ { @@ -713,285 +1285,224 @@ "\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "EGF\n", - "\n", - "EGF\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "AND1\n", - "\n", - "AND1\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "Ras\n", - "\n", - "Ras\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "TNFa\n", - "\n", - "TNFa\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "TNFa->AND1\n", - "\n", - "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", "\n", - "\n", + "\n", "\n", - "e_5_target\n", - "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source\n", - "\n", "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "e_7_source\n", - "\n", "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", "\n", "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G2_prep.plot(custom_edge_attr=cno.cno_style(P2, flow_name=\"edge_activates\", scale=None, iexp=0))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Inhibition with AND gates" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Please remember, inhibitions are added to the incoming edge of the AND node. The outgoing edges of the AND node are always activating by convention." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "# Test graph\n", - "G2 = cn.Graph.from_sif_tuples(\n", - " [\n", - " (\"EGF\", -1, \"AND1\"),\n", - " (\"TNFa\", 1, \"AND1\"),\n", - " (\"AND1\", 1, \"Ras\"),\n", - " (\"EGF\", -1, \"Ras\"),\n", - " (\"TNFa\", 1, \"Ras\"),\n", - " ]\n", - ")\n", - "\n", - "# RAS is only active iff both EGF and TNFa are active -> we need to idetify the AND gate\n", - "exp_list_G2_and = {\n", - " \"exp0\": {\"input\": {\"EGF\": 0, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp1\": {\"input\": {\"EGF\": 1, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp2\": {\"input\": {\"EGF\": 0, \"TNFa\": 1}, \"output\": {\"Ras\": 1}},\n", - " \"exp3\": {\"input\": {\"EGF\": 1, \"TNFa\": 1}, \"output\": {\"Ras\": 0}},\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", "\n", - "\n", + "\n", "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", "\n", - "\n", - "\n", - "e_5_target\n", - "\n", "\n", - "\n", + "\n", "\n", - "Ras->e_5_target\n", - "\n", - "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "e_6_source\n", - "\n", "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "e_7_source\n", - "\n", "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 15, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "G2_prep = cno.expand_graph_for_flows(G2, exp_list_G2_and)\n", - "G2_prep.plot()" + "plot_cellnopt_model(method, condition=\"C1\")" ] }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 11, + "id": "c2a5b5cc", "metadata": {}, "outputs": [ { @@ -1000,561 +1511,479 @@ "\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "EGF\n", - "\n", - "EGF\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "AND1\n", - "\n", - "AND1\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "Ras\n", - "\n", - "Ras\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "TNFa\n", - "\n", - "TNFa\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "TNFa->AND1\n", - "\n", - "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", "\n", - "\n", + "\n", "\n", - "e_5_target\n", - "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", "\n", - "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "e_6_source\n", - "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", "\n", - "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "e_7_source\n", - "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "e_7_source->TNFa\n", - "\n", - "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 16, + "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "P2 = cno.cellnoptILP(G2_prep, exp_list_G2_and, verbose=False)\n", - "G2_prep.plot(custom_edge_attr=cno.cno_style(P2, flow_name=\"edge_activates\", scale=None, iexp=2))" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAIYCAYAAABUjJWZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABmrUlEQVR4nO3de1xVZfr38S9gbNSEVEa2KClpmY4ghUJYphU/sczRXyd0MtQntawcdZcHmsTMCjVzrDxmmvh00Jwxa8YyfRjRNJQ8aypZauBh4xG2YoJu1vOH4552orIRWAif9+u1Xrnuda97X8t2975ah2t5GYZhCAAAADCRt9kBAAAAACSlAAAAMB1JKQAAAExHUgoAAADTkZQCAADAdCSlAAAAMB1JKQAAAExHUgoAAADTkZQCAADAdCSlAAAAMB1JKXAZ8+bNk5eXl2upUaOGGjVqpL59++rgwYNmhwcAHvn9nObn56fbbrtNL7zwgnJycsrsc6ZPn6558+aV2XioPmqYHQBQ2b322msKDQ3V2bNntW7dOs2bN09r1qzRjh075OfnZ3Z4AOCR385pa9as0YwZM/TVV19px44dqlWr1jWPP336dAUGBqpv377XHiyqFZJS4CoefPBBtW3bVpLUv39/BQYGasKECfryyy/1xBNPmBwdAHjm93Na/fr1NXnyZH3xxRfq1atXqcc9c+ZMmSS1qL64fA94qEOHDpKkn3/+WZJUWFiopKQkRUZGKiAgQLVr11aHDh20cuXKS/ZdsGCBIiMjVadOHfn7+yssLEzvvPNOhcYPAL91//33S5L27dsnSfroo48UGRmpmjVrql69eurZs6eys7Pd9unUqZNat26tjRs36t5771WtWrX08ssvq2nTpvrhhx+0atUq120CnTp1quhDwnWKM6WAh/bv3y9Jqlu3riTJ4XDogw8+UK9evTRgwACdOnVKc+bMUVxcnDIyMhQRESFJWrFihXr16qUHHnhAEyZMkCTt2rVLa9eu1ZAhQ8w4FABw/Q92/fr19cYbb2j06NF64okn1L9/fx09elTvvfee7r33Xm3evFk33XSTa7/jx4/rwQcfVM+ePdW7d28FBQWpU6dOGjx4sG688Ub99a9/lSQFBQWZcVi4DpGUAleRl5enY8eO6ezZs1q/fr3Gjh0ri8Wihx9+WNKF5HT//v3y9fV17TNgwADdfvvteu+99zRnzhxJ0tKlS+Xv769vvvlGPj4+phwLAPx2Tlu7dq1ee+011axZU126dFGzZs30+uuv6+WXX3b1f+SRR3THHXdo+vTpbu12u10zZ87UM8884zb+K6+8osDAQPXu3bvCjglVA0kpcBWxsbFu602bNtVHH32kxo0bS5J8fHxcSWZRUZFyc3NVVFSktm3batOmTa79brrpJuXn52vFihXq0qVLxR0AAPzG7+e0Jk2a6OOPP9bixYtVVFSkJ554QseOHXNtt1qtuvXWW7Vy5Uq3pNRisahfv34VFjeqPpJS4CqmTZum2267TXl5eZo7d65Wr14ti8Xi1iclJUVvv/22du/erXPnzrnaQ0NDXX9+7rnn9Nlnn+nBBx9Uo0aN1LlzZz3xxBMkqAAq1MU5rUaNGgoKClKLFi3k7e2tL774QoZh6NZbby12vxtuuMFtvVGjRm5XiIBrRVIKXEVUVJTrSdUePXronnvu0Z///GdlZmbqxhtv1EcffaS+ffuqR48eGj58uBo0aCAfHx8lJye77tWSpAYNGmjLli365ptv9PXXX+vrr7/Whx9+qISEBKWkpJh1eACqmd/Oab9VVFQkLy8vff3118XeYnTjjTe6rdesWbPcYkT1RFIKeOBisnnfffdp6tSpGjVqlP7+97/rlltu0eLFi+Xl5eXqO2bMmEv29/X1Vbdu3dStWzcVFRXpueee06xZszR69Gg1b968Ig8FANw0a9ZMhmEoNDRUt912W6nH+e08CHiCklCAhzp16qSoqChNmTJFZ8+edZ1RMAzD1Wf9+vVKT0932+/48eNu697e3goPD5ckFRQUlHPUAHBljzzyiHx8fDR27Fi3+Uy6ML/9fg67nNq1ays3N/eS9nPnzmn37t06fPhwWYSLKogzpUApDB8+XI8//rjmzZunhx9+WIsXL9b//u//qmvXrtq3b59mzpypVq1a6fTp0659+vfvrxMnTuj+++9X48aN9csvv+i9995TRESEWrZsaeLRAIBcT94nJiZq//796tGjh+rUqaN9+/bp888/18CBA/XSSy9ddZzIyEjNmDFDr7/+upo3b64GDRro/vvv18GDB9WyZUv16dOH15CiWCSlQCk88sgjatasmSZNmqTMzEzZ7XbNmjVL33zzjVq1aqWPPvpIixYtUlpammuf3r176/3339f06dOVm5sr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klIAAACYjqQUAAAApiMpLQPTpk1T06ZN5efnp+joaGVkZJgdUqkkJyerXbt2qlOnjho0aKAePXooMzPT7LDKzPjx4+Xl5aWhQ4eaHUqpHTx4UL1791b9+vVVs2ZNhYWFacOGDWaH5TGn06nRo0crNDRUNWvWVLNmzTRu3DhdL8VAVq9erW7duik4OFheXl5asmSJ23bDMJSUlKSGDRuqZs2aio2N1Z49e8wJFmXievluAtczktJrtHDhQtlsNo0ZM0abNm1SmzZtFBcXpyNHjpgdmsdWrVql559/XuvWrdOKFSt07tw5de7cWfn5+WaHds2+//57zZo1S+Hh4WaHUmonT57U3XffrRtuuEFff/21du7cqbffflt169Y1OzSPTZgwQTNmzNDUqVO1a9cuTZgwQRMnTtR7771ndmglkp+frzZt2mjatGnFbp84caLeffddzZw5U+vXr1ft2rUVFxens2fPVnCkuFZHjx5VUVGRvLy8zA4FqPoMXJOoqCjj+eefd607nU4jODjYSE5ONjGqsnHkyBFDkrFq1SqzQ7kmp06dMm699VZjxYoVRseOHY0hQ4aYHVKpjBw50rjnnnvMDqNMdO3a1fg//+f/uLU98sgjxpNPPmlSRKUnyfj8889d60VFRYbVajXeeustV1tubq5hsViMTz/91IQIUVqbN282WrZsaaxevdrsUIBqgTOl16CwsFAbN25UbGysq83b21uxsbFKT083MbKykZeXJ0mqV6+eyZFcm+eff15du3Z1+/d0Pfryyy/Vtm1bPf7442rQoIHuuOMOzZ492+ywSqV9+/ZKTU3Vjz/+KEnaunWr1qxZowcffNDkyK7dvn37ZLfb3b5vAQEBio6OrhLzQnWxdetW3XXXXfrTn/6kDh06mB0OrlPGf2772L59uxYuXKh//vOf2rdvn8lRVV41zA7genbs2DE5nU4FBQW5tQcFBWn37t0mRVU2ioqKNHToUN19991q3bq12eGU2oIFC7Rp0yZ9//33Zodyzfbu3asZM2bIZrPp5Zdf1vfff6+//OUv8vX1VZ8+fcwOzyOjRo2Sw+HQ7bffLh8fHzmdTr3xxht68sknzQ7tmtntdkkqdl64uA2V27Zt23T33XfrpZde0uuvv+5qP3v2rPz8/EyMDNcTp9MpHx8fLV68WEOHDlVAQIBq166tgoICffDBB4qMjDQ7xEqHM6Uo1vPPP68dO3ZowYIFZodSatnZ2RoyZIg+/vjjKvFDUlRUpDvvvFNvvvmm7rjjDg0cOFADBgzQzJkzzQ7NY5999pk+/vhjffLJJ9q0aZNSUlI0adIkpaSkmB0aqrnDhw8rIiJCTzzxhFtCOnbsWL366qs6f/68idHheuBwOCRJPj4+WrlypQYMGKCXX35Z27dv1+jRo7Vjxw499NBDWrt2rcmRVj4kpdcgMDBQPj4+ysnJcWvPycmR1Wo1Kapr98ILL+hf//qXVq5cqcaNG5sdTqlt3LhRR44c0Z133qkaNWqoRo0aWrVqld59913VqFFDTqfT7BA90rBhQ7Vq1cqtrWXLlsrKyjIpotIbPny4Ro0apZ49eyosLExPPfWUhg0bpuTkZLNDu2YX/9uvavNCdVGrVi21b99e6enp2rFjh6QLD669/fbbuvfee1WjBhcYcXmbNm1SvXr1tHPnTp05c0b/+Mc/9Nxzz+nZZ5/VoUOH9Nxzz+nRRx/VXXfdpR49emjjxo1mh1ypkJReA19fX0VGRio1NdXVVlRUpNTUVMXExJgYWekYhqEXXnhBn3/+uf79738rNDTU7JCuyQMPPKDt27dry5YtrqVt27Z68skntWXLFvn4+JgdokfuvvvuS0p0/fjjj2rSpIlJEZXemTNn5O3tPv34+PioqKjIpIjKTmhoqKxWq9u84HA4tH79+utyXqhuAgIC9PXXX6thw4Z69NFHNXToUL311ltavHixHnroIbPDQyW2detW3XfffRo6dKhatWqlWrVq6amnnlLnzp2Vm5urP/3pT+rSpYsWLFigfv366fjx44qKiuJe898y+0mr692CBQsMi8VizJs3z9i5c6cxcOBA46abbjLsdrvZoXls0KBBRkBAgJGWlmYcPnzYtZw5c8bs0MrM9fz0fUZGhlGjRg3jjTfeMPbs2WN8/PHHRq1atYyPPvrI7NA81qdPH6NRo0bGv/71L2Pfvn3G4sWLjcDAQGPEiBFmh1Yip06dMjZv3mxs3rzZkGRMnjzZ2Lx5s/HLL78YhmEY48ePN2666Sbjiy++MLZt22Z0797dCA0NNX799VeTI0dxjh49aqxbt87YtGmTq+3UqVPGQw89ZHh5eRkzZ840MTpcD7Zt22bUrFnTGD16tFv7xd/P5cuXGzExMca+ffsMwzCMdevWGV27djX+8pe/GLt3767ocCstktIy8N577xk333yz4evra0RFRRnr1q0zO6RSkVTs8uGHH5odWpm5npNSwzCMf/7zn0br1q0Ni8Vi3H777cb7779vdkil4nA4jCFDhhg333yz4efnZ9xyyy3GX//6V6OgoMDs0Epk5cqVxf630qdPH8MwLpSFGj16tBEUFGRYLBbjgQceMDIzM80NGsXauXOn0bFjR+Phhx82EhIS3Lbl5eUZ//M//2PccsstxtatW02KEJVdVlaW8Yc//MHo3r27W/vkyZONYcOGGU6n01iwYIHh7e1t/PDDD4ZhGMbLL79s9OrVyzh16pQJEVdeXobBayoAANXP9u3b1alTJz333HMaMGCAbr75ZknSli1bZLVaZbVadfr0aXXr1k379+/Xl19+qbCwMJOjRmWzbds2JSQk6JZbblH//v310EMP6a233tKrr76qf/7zn7r//vuVlZWl5557TmvXrlWbNm20YcMGpaen8336HZJSAEC1c+jQIXXu3FmdO3fW5MmTXe0TJkxQYmKiRo0apRdffFH169fX6dOn1aNHD33//fdKT0+/5IFDVE8Oh0O+vr7y8/NTRkaGRowYofr16+vGG2/UV199pYULF+r+++939d+8ebP+/e9/68SJE0pISFCLFi1MjL5y4jFCAEC1s3HjRvn5+emZZ55RUVGRvL29NWnSJI0bN05DhgzRxIkT5eXlJZvNpvr16+vzzz/Xk08+KV9fX7NDRyVw+PBhJSQkqHv37nr66acVFRWlCRMmaOTIkVq2bJlGjRrlSkjPnz+vGjVq6I477tAdd9whwzB4be1lkJQCAKqdVatW6cSJE66zVefPn5fVatWSJUsUGxurqKgoPfnkkyosLNTYsWNVp04dffHFFyQTkHThTYc+Pj765JNP5OfnpyeffFLR0dH629/+JpvNpu+//15Lly5V165dVaNGDdf/+ODK+BsCAFQLe/bscZXqqlOnjry9vXX06FE5nU7VqFFDTz75pGJjY2UYhnr16qWnn35a69atc5WPIyGFJJ07d04Wi0VffPGFGjdurPfff18ff/yxfv31V91xxx2aMGGCTp06penTp+vrr7+WJLeElO/R5ZGUAgCqvC1btujOO+901fqNiYnR3r17tWTJkmJrFp87d04+Pj6Kjo7mDBckSadOnZIk3XDDDZIki8Wi+fPn6+abb9asWbNcienFS/mFhYV68803tXz5cjPDvq7wXxoAoErbunWr7r77br3wwgt67rnnJEmdOnVS37599cwzz+jTTz+V9N8zWEVFRRozZoy+/PJLDRw40JWEoPratWuXGjdurJ49e+rll1/W3r17dejQIfn5+enjjz/W7bffrunTp+ujjz7SmTNnFBUVpVdffVU33XSTWrZsaXb41w2evgcAVFnbtm1TTEyMhg4dqjfeeMPVvnLlStntdi1cuFD//Oc/9eyzz+ruu+/WiRMntG7dOn311VdKTU3VHXfcYWL0qAzOnz+v+fPnq3///rJarQoNDdXevXsVGBioLl26qEuXLmrXrp369u2rX3/9VY899pj+/Oc/q2bNmjp79qz8/PzMPoTrBg86AQCqpOzsbD3wwAN6+OGH3RLS1157TR9++KFSU1MVGRmpO++8U++8844+/vhjNWzYUBEREVqzZg2ln6AffvhBixcv1tChQ3XkyBH99a9/1XvvvafAwEDt3LlT8+fP14IFC2S1WhUUFKRVq1YpMzPT9fCTxWIx+xCuK1y+BwBUSU6nU6GhoTp79qzWrl0rSRo/frzee+89TZs2Tbfccotuu+02JSUl6YcfftCWLVu0du1azZs3j4QU2rp1q8LCwlSjRg3VqVNHo0aNks1m01NPPaVDhw5p0KBBWrlypbZu3aonnnhCf/zjH+Xr66szZ87orrvuksRDTZ7i8j0AoMras2eP/vKXv8jX11dBQUFasmSJPvroI3Xu3NmtXuTOnTtJROGyc+dOtW3bViNGjNCrr77qtm3kyJH629/+prlz56p3795u2/bu3as6deroD3/4QwVGW3WQlAIAqrQff/xRL7zwgtasWaNx48bpxRdf1MWfPi8vL40ePVrz5s3T9u3bFRAQwNmtam7Hjh2677779Ic//EE7d+6UdKEaw28feBs1apQmT56slJQU9erVy6xQqxwu3wMAqrTbbrtNM2bMUIcOHZSamqpvv/1WXl5e8vLyUlJSkiZNmqQlS5bopptuIiGt5rZu3aro6Gi1bt1aeXl5GjJkiKQLZaCcTqer3/jx42Wz2TRgwAB9+OGHZoVb5XCmFABQLVy8lG8YhpKTk7VixQqNGTNGa9asUWRkpNnhwWQbNmxQ+/bt9de//lWvvPKK5syZo7/+9a/685//rHfeeUfShfuUf1vX9oUXXtCiRYu0Z88e+fv7mxV6lUFSCgCoNvbs2SObzaaMjAydPHlS6enpJKSQJK1evVr/+Mc/XAloXl6eFi5ceNXE9MiRI2rQoIEpMVc1JKUAgGolMzNTI0aM0Jtvvqk//vGPZoeDSujiQ3AOh0MLFiy4JDE9f/68atSgqmZZIykFAFQ7v39wBbic3yamTz31lCZPnmx2SFUWaT4AoNohIUVJ+fv7q2fPnvL29tbAgQNlsViUnJxsdlhVEkkpAADAFfj7++vxxx/XDTfcoJiYGLPDqbK4fA8AAFACv33hAsoedUoBAABKgIS0fJGUAgAAwHQkpQAAADAdSSkAAABMR1IKAAAA05GUAgAAwHQkpQAAADAdSSkAAABMR1IKAAAA05GUAgAAwHQkpQAAADAdSSkAAABM9/8BqHpoTpEIL8sAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cno.plot_fitness(G2_prep, exp_list_G2_and, P2, measured_only=True)" + "plot_cellnopt_model(method, condition=\"C2\")" ] }, { "cell_type": "markdown", + "id": "e1299723", "metadata": {}, "source": [ - "# Complex case study with inhibition" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's look at a more realistic case study which contains a larger network and more experiments.\n", + "### An inhibitor changes its target, not the whole cell\n", "\n", - "Also note that the we define inhibition in the experimental description. This could be, for example, the effect of small molecule kinase inhibitor. \n", - "\n" + "`C4` and `C6` have the same upstream inputs. Without the inhibitor in `C4`, `X` activates `W`, the rule `W AND C → Z` is satisfied, and both readouts are active.\n", + "\n", + "In `C6`, the inhibitor specifically forces internal protein `W` off. Signaling to `Y` remains active through `X` and `C`, but the AND rule producing `Z` is no longer satisfied, matching the observed `Y=1, Z=0`. The intervention therefore blocks one branch rather than being interpreted as a shutdown of the whole pathway." ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 12, + "id": "8d1af7bd", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n", - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n" - ] - }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "EGF\n", - "\n", - "EGF\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "Ras\n", - "\n", - "Ras\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "EGF->Ras\n", - "\n", - "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "PI3K\n", - "\n", - "PI3K\n", "\n", - "\n", - "\n", - "EGF->PI3K\n", - "\n", - "\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", "\n", - "\n", - "\n", - "Raf\n", - "\n", - "Raf\n", "\n", - "\n", - "\n", - "Ras->Raf\n", - "\n", - "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "Akt\n", - "\n", - "Akt\n", "\n", - "\n", - "\n", - "PI3K->Akt\n", - "\n", - "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", "\n", - "\n", - "\n", - "TNFa->PI3K\n", - "\n", - "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TRAF6\n", - "\n", - "TRAF6\n", "\n", - "\n", - "\n", - "TNFa->TRAF6\n", - "\n", - "\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", "\n", - "\n", - "\n", - "p38\n", - "\n", - "p38\n", "\n", - "\n", - "\n", - "TRAF6->p38\n", - "\n", - "\n", + "\n", + "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "Jnk\n", - "\n", - "Jnk\n", "\n", - "\n", - "\n", - "TRAF6->Jnk\n", - "\n", - "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", "\n", - "\n", - "\n", - "NFkB\n", - "\n", - "NFkB\n", "\n", - "\n", - "\n", - "TRAF6->NFkB\n", - "\n", - "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "Hsp27\n", - "\n", - "Hsp27\n", "\n", - "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", "\n", - "p38->Hsp27\n", - "\n", - "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "cJun\n", - "\n", - "cJun\n", "\n", - "\n", - "\n", - "Jnk->cJun\n", - "\n", - "\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", "\n", - "\n", - "\n", - "Mek\n", - "\n", - "Mek\n", "\n", - "\n", - "\n", - "Akt->Mek\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "Raf->Mek\n", - "\n", - "\n", "\n", - "\n", - "\n", - "p90RSK\n", - "\n", - "p90RSK\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "Mek->p90RSK\n", - "\n", - "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", "\n", - "\n", - "\n", - "Erk\n", - "\n", - "Erk\n", "\n", - "\n", - "\n", - "Mek->Erk\n", - "\n", - "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "Erk->Hsp27\n", - "\n", - "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 18, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "G3 = cn.Graph.from_sif_tuples(\n", - " [\n", - " (\"EGF\", 1, \"Ras\"),\n", - " (\"EGF\", 1, \"PI3K\"),\n", - " (\"TNFa\", 1, \"PI3K\"),\n", - " (\"TNFa\", 1, \"TRAF6\"),\n", - " (\"TRAF6\", 1, \"p38\"),\n", - " (\"TRAF6\", 1, \"Jnk\"),\n", - " (\"TRAF6\", 1, \"NFkB\"),\n", - " (\"Jnk\", 1, \"cJun\"),\n", - " (\"p38\", 1, \"Hsp27\"),\n", - " (\"PI3K\", 1, \"Akt\"),\n", - " (\"Ras\", 1, \"Raf\"),\n", - " (\"Raf\", 1, \"Mek\"),\n", - " (\"Akt\", -1, \"Mek\"),\n", - " (\"Mek\", 1, \"p90RSK\"),\n", - " (\"Mek\", 1, \"Erk\"),\n", - " (\"Erk\", 1, \"Hsp27\"),\n", - " ]\n", - ")\n", - "# G3.add_edge((), 'EGF')\n", - "# G3.add_edge((), 'TNFa')\n", - "# G3.add_edge('Akt', ())\n", - "# G3.add_edge('cJun', ())\n", - "# G3.add_edge('Hsp27', ())\n", - "# G3.add_edge('NFkB', ())\n", - "# G3.add_edge('Erk', ())\n", - "# G3.add_edge('p90RSK', ())\n", - "# G3.add_edge('Jnk', ())\n", - "\n", - "exp_list_toy_full = {\n", - " \"exp0\": {\n", - " \"input\": {\"EGF\": 0, \"TNFa\": 0},\n", - " \"inhibition\": {},\n", - " \"output\": {\n", - " \"Akt\": 0,\n", - " \"Hsp27\": 0,\n", - " \"NFkB\": 0,\n", - " \"Erk\": 0,\n", - " \"p90RSK\": 0,\n", - " \"Jnk\": 0,\n", - " \"cJun\": 0,\n", - " },\n", - " },\n", - " \"exp1\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 0},\n", - " \"inhibition\": {},\n", - " \"output\": {\n", - " \"Akt\": 0.91,\n", - " \"Hsp27\": 0,\n", - " \"NFkB\": 0.86,\n", - " \"Erk\": 0.8,\n", - " \"p90RSK\": 0.88,\n", - " \"Jnk\": 0,\n", - " \"cJun\": 0,\n", - " },\n", - " },\n", - " \"exp2\": {\n", - " \"input\": {\"EGF\": 0, \"TNFa\": 1},\n", - " \"inhibition\": {},\n", - " \"output\": {\n", - " \"Akt\": 0.82,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp3\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 1},\n", - " \"inhibition\": {},\n", - " \"output\": {\n", - " \"Akt\": 0.91,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.8,\n", - " \"p90RSK\": 0.88,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp4\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 0},\n", - " \"inhibition\": {\"Raf\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.91,\n", - " \"Hsp27\": 0,\n", - " \"NFkB\": 0.86,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0,\n", - " \"cJun\": 0,\n", - " },\n", - " },\n", - " \"exp5\": {\n", - " \"input\": {\"EGF\": 0, \"TNFa\": 1},\n", - " \"inhibition\": {\"Raf\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.82,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp6\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 1},\n", - " \"inhibition\": {\"Raf\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.91,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp7\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 0},\n", - " \"inhibition\": {\"PI3K\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.0,\n", - " \"Hsp27\": 0,\n", - " \"NFkB\": 0.0,\n", - " \"Erk\": 0.8,\n", - " \"p90RSK\": 0.88,\n", - " \"Jnk\": 0,\n", - " \"cJun\": 0,\n", - " },\n", - " },\n", - " \"exp8\": {\n", - " \"input\": {\"EGF\": 0, \"TNFa\": 1},\n", - " \"inhibition\": {\"PI3K\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.0,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp9\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 1},\n", - " \"inhibition\": {\"PI3K\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.0,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.8,\n", - " \"p90RSK\": 0.88,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - "}\n", - "\n", + "plot_cellnopt_model(method, condition=\"C6\")" + ] + }, + { + "cell_type": "markdown", + "id": "9b4ee4e6", + "metadata": {}, + "source": [ + "## A compact view for larger signaling experiments\n", "\n", - "G3.plot()" + "When an experiment contains many perturbations or readouts, aligned heatmaps are easier to scan than one panel per response. Observed activities, predicted activities, absolute errors, and experimental cues remain aligned by condition. Unmeasured entries stay blank rather than being treated as zeros." ] }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 13, + "id": "f12e3db5", "metadata": {}, "outputs": [ { "data": { - "image/png": "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1w6hoaHo2bOnTpKaO7F0cnKCn59fnmXIDh06hI8++ggdOnTIt/zT2rVr4eLigt69e5vwG1ond3d3nTe00qVL4+nTpzrPdZS/3S+++AI//fQT5syZg0WLFul9TtmyZXXeGPV55513UKFCBfz555/w8PDQ+xwXFxed1+rUqRNq166NyMhIbN682fRfopA9evQIKSkpFivtplK1alWdc3ldr3LIfd+pVasWnJ2dcfv2bbi7u2P79u3o1asXevToAYCSorlz52LmzJla10exYsXUQ/85qear5p4OoPqgpFAocP78ecyYMQNPnz7VWyWiTp06+Omnn6BQKHDx4kX8/vvvmDt3LoYMGYIaNWpoXYt+fn4ICwvDuHHj0KdPH2zcuFGn00Quqs6MIkWKoEKFCqhbty6cnZ2xbds2CCHy7FwoWrSo1rGvr6+kahpy48VPBuzbtw+JiYlYv349ateurX706tULAHQWQXXo0AElSpTA3LlzTa7558gMzYvs1q0bhBCYM2cOlEplIbaqcBUrVgwHDx7Enj170K9fP5w9exa9e/fGW2+9le9iHUP+/fdfdO3aFQEBAdi0aZPBBSdpaWnYunUr2rdvb31zjiQw5U3GUf52a9asib59+2Lp0qVITEws0Gv16NEDN27cMGoxaE6VK1dG3bp1cfDgwQL9fGuXV09qXn/PeV2vQgiztcmccv9+DRo0wPnz53H+/HkcOnQI9+7dw+DBg/H48WOtnvFKlSrpvfZU53LPf1Z9UOrQoQNGjx6NNWvW4JdffsnzgxVAsWzYsCEiIyOxdetWALrv1wAwduxYjB07Flu3bsXgwYOtJtbBwcFo37492rRpA39/f3XnhFKphJOTE3bu3Indu3frPL7//nut1zH03mrNuMfUgLVr16J8+fL49ttvdb62ZcsWbN26FUuWLFGfa9GiBYYOHYouXbrgvffew9atW7USAXMN+TiS7t274+2330b//v3h6emJmJgYuZtkMc7OzmjXrh3atWuH6OhozJo1CxMnTkRsbKzWJ/1r165pfZ8QAtevX0dgYKDW+Rs3buC///0vypcvjx07duTZq6Xy66+/IjU11eYXPUmR39+uPfniiy+wZs0afPnllwV6nXnz5qFIkSLqxToffPCB0d+bnZ2N58+fF+jnF5Zy5crBy8sL58+fN+n7SpcurbOIE6AKBrbo2rVr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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8EAAAH3CAYAAACb9F2ZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXddJREFUeJzt3Ql8FOX5wPFncwdCoMghyGGicitoFAWqgFbOUrW0qPUslqogeKD9F9R6IpVSq8jhSa3V2kPUakWQooIWKnJWbTiUU4EiIgQCuef/ed5k1k0IYTdks7Pz/r5+RnZmZzczu/vMzDPvFXAcxxEAAAAAACyQEOsNAAAAAACgvpAEAwAAAACsQRIMAAAAALAGSTAAAAAAwBokwQAAAAAAa5AEAwAAAACsQRIMAAAAALAGSTAAAAAAwBokwQAAAAAAa1iZBP/73/+WH//4x9KqVStJSUmR448/Xn70ox/J0qVLK6137733SiAQkN27d4ttTjzxRLn22mtjvRmIc88995yJIZ3ee++9w553HEdOPvlk83y/fv3q7O/q+2n8Rmrz5s3mtbrdsNe0adPM76Bbt241/k6mTp1ar9vlnpNq47///a95vW47ANSl//znP/LTn/5UsrKyJC0tTTIyMuSMM86QKVOmyJ49e/iw4UnWJcGPP/649OnTR7744gsTnP/85z/NhcyXX34p3/3ud2X69Omx3kTAdxo1aiTPPvvsYcsXLVokn3/+uXke8IrZs2ebfz/99FP58MMPxQ80Cb7vvvtIggHUqaefflpycnLko48+kjvuuEPmzZsnr776qilseuKJJ+S6667jE4cnJYlF/vWvf8ktt9wiQ4YMMQGalPTt7l922WVyySWXyM033yynn366SZS95NChQ5Kenh7rzQBq5dJLL5UXX3xRZsyYIZmZmcHlmhj36tVL8vLy+GThCcuXL5c1a9bI0KFD5c033zS/0bPPPjvWm+VLWhOkoKCg2nObnvO0RKm2Jd/q4MGD0qBBg2PcSgBHojUob7zxRrnwwgvltddek9TU1OBzumz8+PEmKQa8yKqS4MmTJ5sT6qxZsyolwErnZ86caZ7/9a9/Xem5bdu2yQ9/+ENz8d64cWO58sor5auvvqq0zjvvvGOqcx533HHmhN6uXTsZPny4OQm7ioqK5MEHH5ROnTqZA0Xz5s1N9ZGq76VVkb///e/LK6+8YhJyvRDQO/j6+Nxzzz1sv0pLS+WEE04w2xjp3youLpZf/OIXpkq4XixoafiyZctq+QkD1bv88svNvy+99FJw2b59+2TOnDkycuTIw9bX6lOjR482v2ttspCdnS133nmnFBYWVlpPk+dRo0aZuNPqV4MGDZL169dXuw0bNmyQn/zkJ9KiRQsTE507dzZJORDKrbGg54HevXvLn//850rH8VBlZWUyadIkc7zX4/SZZ54pCxcurLSOHnN//vOfS9u2bYPHYr3JqrWQqpY+d+/e3bxP06ZNzU3Z3NzcWlf9D23SotX7tVRG9e/fP9hEIbTav27PBRdcYM5zei7Qbay6L0eicXj77bebqpAarxq3esM5Pz//sG296aabTOmQxp9+Hn/4wx+CzSbefvttczzQz0i3QeNdP2OtteWeyzR+r776alObK5Sef7X6+uLFi833pq+v7tgCoO489NBDJnafeuqpSgmwS48HP/jBD8I+Vrl27twp119/vbRp08a8hx5b9Dq4pKSk0np6Pa/HTT3/a40yPU5MnDiRrxjhcSxRUlLiNGjQwDn77LNrXK9nz55mPV3/nnvucfQjat++vXPHHXc48+fPdx555BGnYcOGzumnn+4UFRWZ12zatMlJS0tzLrzwQue1115z3nvvPefFF190rrrqKuebb74x65SWljqDBg0yr73vvvucBQsWOM8884xzwgknOF26dHEOHjwY3Ab9e61atXKys7Od2bNnO++++66zbNky57HHHjPbs379+krbPHfuXLP89ddfj/hvXXPNNU4gEDD79/bbb5v90/UyMzPNc8Cx+P3vf29+mx999JGJB40v16xZs8xvNC8vz+natavTt29fs/zQoUPOaaedZp6bOnWq+V3efffdTlJSkjNkyJDg68vKypz+/fs7qampzqRJk8x6GrMaN/o39bHr008/dRo3buyceuqpzvPPP2/WHT9+vJOQkODce++9wfU0lvW1ut2wjx4b9Xdy1llnmXk9burv4bnnnqu0nvs7adu2rfPd737XmTNnjvO3v/3NvC45OdlZsmRJcN2BAwc6zZs3d5566ilzbtBzxK9+9Svnz3/+c3Cdhx56yLzf5Zdf7rz55pvmN6q/Y92W0OO9e04KVfW3HnoecY/hu3btCv6NGTNmOEuXLjWTLld//OMfzXng4osvdl555RXn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", "text/plain": [ - "
" + "
" ] }, "metadata": {}, @@ -1562,697 +1991,581 @@ } ], "source": [ - "cno.plot_data(exp_list_toy_full)" + "heatmap_figure, heatmap_axes = plot_cellnopt_fit(method, view=\"heatmap\")" + ] + }, + { + "cell_type": "markdown", + "id": "f4d57529", + "metadata": {}, + "source": [ + "## Under the hood\n", + "\n", + "The biological workflow above rests on a few modeling assumptions. This section states only the assumptions needed to interpret the result and separates the CellNOpt core from the acyclicity and connectivity requirements added by CORNETO." + ] + }, + { + "cell_type": "markdown", + "id": "499bc91f", + "metadata": {}, + "source": [ + "### Endpoint Boolean assumptions\n", + "\n", + "One reaction set is selected for the whole experiment, while protein and reaction activities are predicted separately for each condition.\n", + "\n", + "For every condition:\n", + "\n", + "- a selected reaction is active only when all its positive inputs are active and all its negative inputs are inactive;\n", + "- several active reactions producing the same protein act as OR alternatives;\n", + "- a stimulus or inhibitor overrides the usual production rule by fixing its target on or off;\n", + "- internal activities are predictions at the measured endpoint, not simulated intermediate time steps.\n", + "\n", + "CORNETO represents these rules with vectorized binary variables: $Y_r$ for shared reaction selection, $Z_{rc}$ for condition-specific reaction activity, and $X_{vc}$ for condition-specific protein activity. The implementation uses exact linear constraints for AND, OR, and negative literals, but those linearization details do not change the biological assumptions above." + ] + }, + { + "cell_type": "markdown", + "id": "6b6b6971", + "metadata": {}, + "source": [ + "### Fit and model size\n", + "\n", + "The model prioritizes agreement with observed readouts and uses a smaller penalty to prefer compact signaling explanations:\n", + "\n", + "$$\n", + "\\min\\; \\sum_{(v,c)\\,\\mathrm{observed}} |X_{vc}-m_{vc}| + \\lambda\\sum_r Y_r.\n", + "$$\n", + "\n", + "Only measured entries contribute to the first term. Unmeasured proteins are not treated as zero. The second term counts selected Boolean reactions, so an AND gate is penalized once rather than once per input leg." + ] + }, + { + "cell_type": "markdown", + "id": "180b830e", + "metadata": {}, + "source": [ + "### What CORNETO adds\n", + "\n", + "| Modeling element | Role in this formulation |\n", + "|---|---|\n", + "| Shared reaction selection across conditions | CellNOpt core |\n", + "| Condition-specific Boolean AND, OR, and inhibitory logic | CellNOpt core |\n", + "| Readout mismatch plus a model-size penalty | CellNOpt core |\n", + "| Acyclic selected reaction dependencies | CORNETO endpoint restriction |\n", + "| One shared structural flow connecting interventions to readouts | CORNETO connectivity extension |\n", + "\n", + "Acyclicity is imposed on the **selected model**, not on the PKN. CORNETO assigns an ordering level $h_v$ to every protein and requires each selected dependency $u\\rightarrow v$ to point forward:\n", + "\n", + "$$\n", + "Y_r=1 \\;\\Longrightarrow\\; h_u < h_v\n", + "\\qquad\\text{for every dependency }u\\rightarrow v\\text{ in reaction }r.\n", + "$$\n", + "\n", + "This makes the endpoint response evaluable from the experimental inputs without choosing an update order or allowing a selected feedback loop to support itself.\n", + "\n", + "Connectivity is a separate requirement. CORNETO sends an artificial bookkeeping flow from controlled proteins, through every selected dependency, to measured readouts. Selected dependencies must carry positive flow, unselected dependencies carry none, and flow is conserved at internal proteins. The resulting flow is a structural certificate that the selected model contains no disconnected or dangling reactions." + ] + }, + { + "cell_type": "markdown", + "id": "e7f13c08", + "metadata": {}, + "source": [ + "### Inspecting the inferred states\n", + "\n", + "The tables below contain only selected reactions and the internal or measured proteins needed to interpret the example. Reaction activity and protein activity vary by condition; neither table contains additional experimental measurements. `Y` and `Z` are observed readouts, whereas `B`, `X`, and `W` are model predictions." ] }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 14, + "id": "39c46bc9", "metadata": {}, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n", - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
C1C2C3C4C5C6
D -> B111000
X -> Y100101
X -> W100101
C -> Y001101
NOT D -> Y000111
A AND NOT B -> X100101
W AND C -> Z000100
\n", + "
" + ], + "text/plain": [ + " C1 C2 C3 C4 C5 C6\n", + "D -> B 1 1 1 0 0 0\n", + "X -> Y 1 0 0 1 0 1\n", + "X -> W 1 0 0 1 0 1\n", + "C -> Y 0 0 1 1 0 1\n", + "NOT D -> Y 0 0 0 1 1 1\n", + "A AND NOT B -> X 1 0 0 1 0 1\n", + "W AND C -> Z 0 0 0 1 0 0" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "PI3K\n", - "\n", - "PI3K\n", - "\n", - "\n", - "\n", - "EGF->PI3K\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf\n", - "\n", - "Raf\n", - "\n", - "\n", - "\n", - "Ras->Raf\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Akt\n", - "\n", - "Akt\n", - "\n", - "\n", - "\n", - "PI3K->Akt\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->PI3K\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TRAF6\n", - "\n", - "TRAF6\n", - "\n", - "\n", - "\n", - "TNFa->TRAF6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "p38\n", - "\n", - "p38\n", - "\n", - "\n", - "\n", - "TRAF6->p38\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Jnk\n", - "\n", - "Jnk\n", - "\n", - "\n", - "\n", - "TRAF6->Jnk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "NFkB\n", - "\n", - "NFkB\n", - "\n", - "\n", - "\n", - "TRAF6->NFkB\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Hsp27\n", - "\n", - "Hsp27\n", - "\n", - "\n", - "\n", - "p38->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cJun\n", - "\n", - "cJun\n", - "\n", - "\n", - "\n", - "Jnk->cJun\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "Jnk->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "NFkB->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "cJun->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_target\n", - "\n", - "\n", - "\n", - "\n", - "Hsp27->e_16_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Mek\n", - "\n", - "Mek\n", - "\n", - "\n", - "\n", - "Akt->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "Akt->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "p90RSK\n", - "\n", - "p90RSK\n", - "\n", - "\n", - "\n", - "Mek->p90RSK\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk\n", - "\n", - "Erk\n", - "\n", - "\n", - "\n", - "Mek->Erk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_target\n", - "\n", - "\n", - "\n", - "\n", - "p90RSK->e_17_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_target\n", - "\n", - "\n", - "\n", - "\n", - "Erk->e_18_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_23_source\n", - "\n", - "\n", - "\n", - "\n", - "e_23_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_source\n", - "\n", - "\n", - "\n", - "\n", - "e_24_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
C1C2C3C4C5C6
B011000
X100101
W100100
Y101111
Z000100
\n", + "
" ], "text/plain": [ - "" + " C1 C2 C3 C4 C5 C6\n", + "B 0 1 1 0 0 0\n", + "X 1 0 0 1 0 1\n", + "W 1 0 0 1 0 0\n", + "Y 1 0 1 1 1 1\n", + "Z 0 0 0 1 0 0" ] }, - "execution_count": 20, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "G3_prep = cno.expand_graph_for_flows(G3, exp_list_toy_full)\n", - "G3_prep.plot()" + "condition_names = list(inputs)\n", + "selected_mask = selected.astype(bool)\n", + "reaction_activity = pd.DataFrame(\n", + " np.rint(problem.expr.reaction_active.value).astype(int),\n", + " index=reaction_labels,\n", + " columns=condition_names,\n", + ").loc[selected_mask]\n", + "species_states = pd.DataFrame(\n", + " np.rint(problem.expr.vertex_value.value).astype(int),\n", + " index=method.processed_graph.V,\n", + " columns=condition_names,\n", + ").loc[[\"B\", \"X\", \"W\", \"Y\", \"Z\"]]\n", + "\n", + "display(reaction_activity, species_states)" ] }, { - "cell_type": "code", - "execution_count": 21, + "cell_type": "markdown", + "id": "362e287c", "metadata": {}, - "outputs": [], "source": [ - "P_G3 = cno.cellnoptILP(G3_prep, exp_list_toy_full, verbose=False)" + "### Structural connectivity diagnostic\n", + "\n", + "The following plot visualizes the artificial structural flow by edge width. It is useful for checking that selected reactions are connected to experimental inputs and measured outputs, and for finding an incorrectly mapped, disconnected, or dangling reaction.\n", + "\n", + "This is a debugging view. Flow is shared across all conditions and records neither whether a reaction is active in one condition nor how strongly a biochemical signal passes through it." ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 15, + "id": "fb593712", "metadata": {}, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n", - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n" - ] - }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "EGF\n", - "\n", - "EGF\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "Ras\n", - "\n", - "Ras\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "EGF->Ras\n", - "\n", - "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", "\n", - "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "PI3K\n", - "\n", - "PI3K\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "EGF->PI3K\n", - "\n", - "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "Raf\n", - "\n", - "Raf\n", "\n", - "\n", - "\n", - "Ras->Raf\n", - "\n", - "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", "\n", - "\n", - "\n", - "Akt\n", - "\n", - "Akt\n", "\n", - "\n", - "\n", - "PI3K->Akt\n", - "\n", - "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", "\n", - "\n", - "\n", - "TNFa->PI3K\n", - "\n", - "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", "\n", - "\n", - "\n", - "TRAF6\n", - "\n", - "TRAF6\n", "\n", - "\n", - "\n", - "TNFa->TRAF6\n", - "\n", - "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", "\n", - "p38\n", - "\n", - "p38\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", "\n", - "\n", - "\n", - "TRAF6->p38\n", - "\n", - "\n", "\n", - "\n", - "\n", - "Jnk\n", - "\n", - "Jnk\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TRAF6->Jnk\n", - "\n", - "\n", "\n", - "\n", - "\n", - "NFkB\n", - "\n", - "NFkB\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "TRAF6->NFkB\n", - "\n", - "\n", "\n", - "\n", - "\n", - "Hsp27\n", - "\n", - "Hsp27\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", "\n", - "\n", - "\n", - "p38->Hsp27\n", - "\n", - "\n", "\n", - "\n", - "\n", - "cJun\n", - "\n", - "cJun\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", + "\n", + "\n", "\n", - "Jnk->cJun\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "Jnk->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "NFkB->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "cJun->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_target\n", - "\n", - "\n", - "\n", - "\n", - "Hsp27->e_16_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Mek\n", - "\n", - "Mek\n", - "\n", - "\n", - "\n", - "Akt->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "Akt->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf->Mek\n", - "\n", - "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", "\n", - "\n", - "\n", - "p90RSK\n", - "\n", - "p90RSK\n", "\n", - "\n", - "\n", - "Mek->p90RSK\n", - "\n", - "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", "\n", - "\n", - "\n", - "Erk\n", - "\n", - "Erk\n", "\n", - "\n", - "\n", - "Mek->Erk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_target\n", - "\n", - "\n", - "\n", - "\n", - "p90RSK->e_17_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_target\n", - "\n", - "\n", - "\n", - "\n", - "Erk->e_18_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_23_source\n", - "\n", - "\n", - "\n", - "\n", - "e_23_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_source\n", - "\n", - "\n", - "\n", - "\n", - "e_24_source->TNFa\n", - "\n", - "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 22, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "G3_prep.plot(custom_edge_attr=cno.cno_style(P_G3, flow_name=\"edge_activates\", scale=None, iexp=3))" + "plot_cellnopt_model(method, width_by=\"flow\")" ] }, { - "cell_type": "code", - "execution_count": 23, + "cell_type": "markdown", + "id": "96461460", "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ - "cno.plot_fitness(G3_prep, exp_list_toy_full, P_G3)" + "All selected dependency legs happen to carry structural flow `1` in this solution, so they receive the same width. That equality does **not** mean the reactions have equal biological strength or importance. It only means that this particular bookkeeping flow can certify every selected dependency with the minimum required amount.\n", + "\n", + "Structural-flow values are generally non-unique and solver-dependent; a different feasible certificate can assign different widths without changing the selected signaling model. The values are unrelated to protein activity, signal strength, reaction rate, confidence, or causal importance. Use the plot only to verify selected-model connectivity." + ] + }, + { + "cell_type": "markdown", + "id": "7c0e516e", + "metadata": {}, + "source": [ + "## Biological interpretation and limitations\n", + "\n", + "This method is designed for intracellular signaling experiments in which cells are stimulated or inhibited and measured once at a chosen endpoint. The result is one compact pathway structure whose predicted activity changes across intervention conditions.\n", + "\n", + "The fitted model answers the question posed at the beginning: it is a connected feed-forward signaling logic sufficient to explain these observed snapshots. “Sufficient” does not mean unique, dynamically complete, or necessarily identical to the pathway operating in the cell.\n", + "\n", + "Feedback remains biologically plausible. A snapshot with both `Y` and `Z` active usually cannot reveal whether `Y` activated `Z`, `Z` activated `Y`, an upstream protein activated both, or a loop maintained them. The acyclic restriction therefore reflects what this experiment can identify; it is not evidence that the biological network contains no feedback. Feedback candidates remain visible in the PKN as hypotheses that were available but not established by this endpoint analysis.\n", + "\n", + "A dynamic model is more appropriate when measurements cover activation and relaxation over time, proteins inside a proposed loop are directly perturbed, or the data show adaptation, oscillation, or dependence on initial state. Such analyses must state how time and updates are represented.\n", + "\n", + "Other limitations remain: Boolean states simplify graded and stochastic signaling; inference is restricted to the supplied PKN; alternative models may fit equally well; and unmeasured internal activities remain predictions. Structural flow certifies connectivity only—it does not quantify signaling strength." ] } ], @@ -2272,9 +2585,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.11.14" } }, "nbformat": 4, - "nbformat_minor": 4 + "nbformat_minor": 5 } diff --git a/docs/install.md b/docs/install.md index defa01b62..deed8eccc 100644 --- a/docs/install.md +++ b/docs/install.md @@ -38,6 +38,7 @@ pip install corneto CORNETO provides several optional dependency groups: +- **`plot`**: Graphviz, NetworkX, and Matplotlib visualization support - **`research`**: Full research stack with Gurobi, PICOS, visualization, and network tools - **`os`**: Open-source solvers (SCIP, HiGHS) with visualization and network tools - **`ml`**: Machine learning dependencies (JAX, Keras, scikit-learn) @@ -45,6 +46,7 @@ CORNETO provides several optional dependency groups: Install any combination with: ```bash +pip install corneto[plot] # Visualization without the full research stack pip install corneto[research,ml] # Multiple extras ``` diff --git a/pyproject.toml b/pyproject.toml index 8202eb7de..441233dec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,11 @@ repository = "https://github.com/saezlab/corneto/" release = "corneto.release:main" [project.optional-dependencies] +plot = [ + "networkx>=3.2.1", + "matplotlib>=3.5.2", + "graphviz>=0.20.1", +] annnet = [ "annnet[polars]>=0.2.0,<0.3" ] diff --git a/tests/graph/test_plotting.py b/tests/graph/test_plotting.py index 764d66ece..a663b91f9 100644 --- a/tests/graph/test_plotting.py +++ b/tests/graph/test_plotting.py @@ -1,9 +1,10 @@ import sys from types import ModuleType +import numpy as np import pytest -from corneto._plotting import to_dot_source +from corneto._plotting import _scaled_magnitudes, _select_solution_sample, to_dot_source from corneto._util import supports_html from corneto.contrib._util import ( DEFAULT_WASM_GRAPHVIZ_JS_URL, @@ -55,6 +56,64 @@ def test_to_dot_source_honors_global_biological_node_shape(): assert '"e_0_source" [shape="point"]' in src +def test_to_dot_source_includes_isolated_vertices(): + g = Graph() + g.add_vertex("isolated") + + src = to_dot_source( + g, + custom_vertex_attr={"isolated": {"shape": "box", "label": "Cue"}}, + ) + + assert '"isolated" [shape="box", label="Cue"]' in src + + +def test_scaled_magnitudes_preserve_zero_and_handle_constant_values(): + assert np.allclose(_scaled_magnitudes(np.zeros(3)), np.zeros(3)) + assert np.allclose( + _scaled_magnitudes(np.array([2.0, 2.0, 0.0]), scale="log", clip_quantile=0.05), + [1.0, 1.0, 0.0], + ) + scaled = _scaled_magnitudes( + np.array([0.0, 1.0, 10.0, 1e6]), + scale="log", + clip_quantile=0.25, + ) + assert np.all(np.isfinite(scaled)) + assert scaled[0] == 0 + assert np.all(np.diff(scaled) >= 0) + assert scaled[-1] == 1 + + +def test_solution_sample_selection_supports_named_samples(): + data = Data.from_cdict( + { + "first": {}, + "second": {}, + } + ) + selected = _select_solution_sample( + { + "vertex_values": np.array([[1.0, -1.0], [0.0, 2.0]]), + "edge_values": np.array([[3.0, 4.0]]), + }, + sample="second", + feature_data=data, + ) + + assert np.allclose(selected["vertex_values"], [-1.0, 2.0]) + assert np.allclose(selected["edge_values"], [4.0]) + + +def test_solution_sample_selection_requires_sample_for_matrix(): + with pytest.raises(ValueError, match="select one with sample"): + _select_solution_sample( + {"vertex_values": np.ones((2, 2))}, + sample=None, + feature_data=None, + ) + + def test_dot_wasm_html_accepts_raw_dot_source(): html = dot_wasm_html('digraph {"A" -> "B";}') assert DEFAULT_WASM_GRAPHVIZ_JS_URL in html @@ -178,6 +237,31 @@ def _fake_plot_with_networkx(graph, **kwargs): assert obj is sentinel_fig +def test_networkx_renderer_uses_filtered_shared_plot_model(): + pytest.importorskip("matplotlib") + pytest.importorskip("networkx") + g = Graph() + g.add_edge("A", "B") + g.add_edge("B", "C") + + figure = g.plot( + renderer="networkx", + edge_indexes=[1], + custom_vertex_attr={ + "B": {"shape": "box", "fillcolor": "#9ACD32", "style": "filled"}, + "C": {"shape": "diamond", "label": "Output"}, + }, + custom_edge_attr={1: {"color": "#C43C39", "penwidth": "3", "arrowhead": "tee"}}, + ) + + axis = figure.axes[0] + labels = {text.get_text() for text in axis.texts} + assert "A" not in labels + assert "B" in labels + assert "Output" in labels + assert len(axis.patches) == 1 + + def test_plot_values_uses_plot_renderer_path(monkeypatch): g = Graph() g.add_edge("A", "B") diff --git a/tests/methods/signaling/test_cellnopt_ilp.py b/tests/methods/signaling/test_cellnopt_ilp.py index 32e11ffaa..6887af4a2 100644 --- a/tests/methods/signaling/test_cellnopt_ilp.py +++ b/tests/methods/signaling/test_cellnopt_ilp.py @@ -1,116 +1,266 @@ import numpy as np -import pytest -import corneto as cn -from corneto.backend import Backend, CvxpyBackend, PicosBackend -from corneto.methods.signaling.cellnopt_ilp import cellnoptILP +from corneto.backend import PicosBackend +from corneto.graph import Graph +from corneto.methods.signaling.cellnopt_ilp import CellNOptILP -# PICOS does not work -@pytest.fixture(params=[CvxpyBackend, PicosBackend]) -def backend(request): - opt: Backend = request.param() - if isinstance(opt, CvxpyBackend): - opt._default_solver = "SCIPY" - elif isinstance(opt, PicosBackend): - opt._default_solver = "glpk" - return opt +def _vertex_values(method, problem, vertex): + index = method.processed_graph.V.index(vertex) + values = np.asarray(problem.expr.vertex_value.value, dtype=float) + return values.reshape(problem.expr.vertex_value.shape)[index].reshape(-1) -def get_test_graph_1(): - G1 = cn.Graph.from_tuples( +def _flat_values(expression): + return np.asarray(expression.value, dtype=float).reshape(expression.shape).reshape(-1) + + +def _assert_infeasible(problem, backend): + if isinstance(backend, PicosBackend): + result = problem.solve(primals=None) + else: + result = problem.solve() + assert result.status == "infeasible" + + +def _solve(method, graph, *, inputs, measurements, inhibitors=None): + problem = method.build_many( + graph, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + result = problem.solve() + assert result.status == "optimal" + return problem + + +def test_and_gate_is_one_reaction_with_conjunctive_truth(backend): + graph = Graph.from_tuples( [ - ("EGF", 1, "AND1"), - ("TNFa", 1, "AND1"), - ("AND1", 1, "Ras"), - ("EGF", 1, "Ras"), - ("TNFa", 1, "Ras"), + ("A", 1, "AND1"), + ("B", 1, "AND1"), + ("AND1", 1, "Y"), ] ) - G1.add_edge((), "EGF") - G1.add_edge((), "TNFa") - G1.add_edge("Ras", ()) + inputs = { + "neither": {"A": 0, "B": 0}, + "a_only": {"A": 1, "B": 0}, + "b_only": {"A": 0, "B": 1}, + "both": {"A": 1, "B": 1}, + } + measurements = { + "neither": {"Y": 0}, + "a_only": {"Y": 0}, + "b_only": {"Y": 0}, + "both": {"Y": 1}, + } - return G1 + method = CellNOptILP(lambda_reg=1e-3, backend=backend) + problem = _solve( + method, + graph, + inputs=inputs, + measurements=measurements, + ) + assert len(method.reactions) == 1 + assert method.reactions[0].positive_literals == ("A", "B") + assert np.allclose(_flat_values(problem.expr.reaction_selected), [1]) + assert np.allclose( + np.asarray(problem.expr.reaction_active.value).reshape(1, -1), + [[0, 0, 0, 1]], + ) + assert np.allclose(_vertex_values(method, problem, "Y"), [0, 0, 0, 1]) + assert np.all(np.asarray(problem.expr.flow.value)[:2] >= method.epsilon) -@pytest.mark.skip(reason="Error with PICOS solvers") -def test_cellnoptILP_AND(backend): - G1 = get_test_graph_1() - # RAS is only active iff both EGF and TNFa are active -> we need to identify the AND gate - exp_list_G1_and = { - "exp0": {"input": {"EGF": 0, "TNFa": 0}, "output": {"Ras": 0}}, - "exp1": {"input": {"EGF": 1, "TNFa": 0}, "output": {"Ras": 0}}, - "exp2": {"input": {"EGF": 0, "TNFa": 1}, "output": {"Ras": 0}}, - "exp3": {"input": {"EGF": 1, "TNFa": 1}, "output": {"Ras": 1}}, +def test_or_is_induced_by_multiple_active_producing_reactions(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "Y"), + ("B", 1, "Y"), + ] + ) + inputs = { + "neither": {"A": 0, "B": 0}, + "a_only": {"A": 1, "B": 0}, + "b_only": {"A": 0, "B": 1}, + "both": {"A": 1, "B": 1}, + } + measurements = { + "neither": {"Y": 0}, + "a_only": {"Y": 1}, + "b_only": {"Y": 1}, + "both": {"Y": 1}, } - P = cellnoptILP(G1, exp_list_G1_and, verbose=True, alpha_flow=0.001, backend=backend) - expected_edge_values = np.array( + method = CellNOptILP(lambda_reg=1e-3, backend=backend) + problem = _solve( + method, + graph, + inputs=inputs, + measurements=measurements, + ) + + assert np.allclose(_flat_values(problem.expr.reaction_selected), [1, 1]) + assert np.allclose( + np.asarray(problem.expr.reaction_active.value), + [[0, 1, 0, 1], [0, 0, 1, 1]], + ) + assert np.allclose(_vertex_values(method, problem, "Y"), [0, 1, 1, 1]) + + +def test_positive_and_negative_alternatives_fit_complementary_conditions(backend): + graph = Graph.from_tuples( [ - [0.0, 1.0, 0.0, 1.0], - [0.0, 0.0, 1.0, 1.0], - [-0.0, -0.0, -0.0, 1.0], - [0.0, -0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, -0.0], - [0.0, 1.0, 0.0, 1.0], - [0.0, 0.0, 1.0, 1.0], - [0.0, 0.0, 0.0, 1.0], + ("A", 1, "Y"), + ("A", -1, "Y"), ] ) + method = CellNOptILP(lambda_reg=1e-3, backend=backend) + problem = _solve( + method, + graph, + inputs={"off": {"A": 0}, "on": {"A": 1}}, + measurements={"off": {"Y": 1}, "on": {"Y": 1}}, + ) + + assert np.allclose(_flat_values(problem.expr.reaction_selected), [1, 1]) + assert np.allclose( + np.asarray(problem.expr.reaction_active.value), + [[0, 1], [1, 0]], + ) + assert np.allclose(_vertex_values(method, problem, "Y"), [1, 1]) + + +def test_same_inputs_with_conflicting_measurements_cannot_both_be_fit(backend): + graph = Graph.from_tuples([("A", 1, "Y")]) + method = CellNOptILP(lambda_reg=0, backend=backend) + problem = _solve( + method, + graph, + inputs={"first": {"A": 1}, "second": {"A": 1}}, + measurements={"first": {"Y": 0}, "second": {"Y": 1}}, + ) + + assert np.isclose(problem.objectives[0].value, 1) + predictions = _vertex_values(method, problem, "Y") + assert np.allclose(predictions, [0, 0]) or np.allclose(predictions, [1, 1]) - # vertices do not have a specific order (set of vertices is a list, but the order is not fixed) - expected_vertex_values = np.array( + +def test_irrelevant_active_input_does_not_force_a_disconnected_branch(backend): + graph = Graph.from_tuples( [ - [-0.0, -0.0, -0.0, 1.0], - [-0.0, 1.0, -0.0, 1.0], - [-0.0, -0.0, 1.0, 1.0], - [0.0, -0.0, -0.0, 1.0], + ("A", 1, "B"), + ("C", 1, "D"), ] ) - sum([o.value for o in P.objectives]) - assert np.isclose(sum([o.value for o in P.objectives]), 0.006) - assert np.isclose(P.expr.edge_activates.value, expected_edge_values).all() - assert np.isclose(np.sum(P.expr.vertex_value.value, axis=0), expected_vertex_values.sum(axis=0)).all() + method = CellNOptILP(lambda_reg=1e-3, backend=backend) + problem = _solve( + method, + graph, + inputs={"condition": {"A": 1, "C": 1}}, + measurements={"condition": {"B": 1}}, + ) + assert np.allclose(_flat_values(problem.expr.reaction_selected), [1, 0]) + assert np.allclose(_vertex_values(method, problem, "C"), [1]) + assert np.allclose(_vertex_values(method, problem, "D"), [0]) -# @pytest.mark.skip(reason="not compatible with picos") -def test_cellnoptILP_OR(backend): - G1 = get_test_graph_1() - # RAS is only active iff both EGF and TNFa are active -> we need to identify the AND gate - exp_list_G1_or = { - "exp0": {"input": {"EGF": 0, "TNFa": 0}, "output": {"Ras": 0}}, - "exp1": {"input": {"EGF": 1, "TNFa": 0}, "output": {"Ras": 1}}, - "exp2": {"input": {"EGF": 0, "TNFa": 1}, "output": {"Ras": 1}}, - "exp3": {"input": {"EGF": 1, "TNFa": 1}, "output": {"Ras": 1}}, - } +def test_flow_rejects_a_selected_component_without_experimental_boundaries(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "B"), + ("C", 1, "D"), + ] + ) + method = CellNOptILP(lambda_reg=0, backend=backend) + problem = method.build( + graph, + inputs={"A": 1}, + measurements={"B": 1}, + ) + problem += problem.expr.reaction_selected[1] == 1 + + _assert_infeasible(problem, backend) - P = cellnoptILP(G1, exp_list_G1_or, verbose=True, alpha_flow=0.001, backend=backend) - expected_edge_values = np.array( + +def test_flow_rejects_a_selected_dangling_branch(backend): + graph = Graph.from_tuples( [ - [0.0, -0.0, 0.0, -0.0], - [0.0, 0.0, -0.0, -0.0], - [-0.0, -0.0, -0.0, -0.0], - [0.0, 1.0, 0.0, 1.0], - [0.0, 0.0, 1.0, 1.0], - [0.0, 1.0, 0.0, 1.0], - [0.0, 0.0, 1.0, 1.0], - [0.0, 1.0, 1.0, 1.0], + ("A", 1, "B"), + ("A", 1, "C"), ] ) + method = CellNOptILP(lambda_reg=0, backend=backend) + problem = method.build( + graph, + inputs={"A": 1}, + measurements={"B": 1}, + ) + problem += problem.expr.reaction_selected[1] == 1 + + _assert_infeasible(problem, backend) - # vertices do not have a specific order (set of vertices is a list, but the order is not fixed) - expected_vertex_values = np.array( + +def test_inhibition_overrides_product_without_disabling_reaction_truth(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + method = CellNOptILP(lambda_reg=0, backend=backend) + problem = method.build( + graph, + inputs={"A": 1}, + inhibitors={"B": 1}, + measurements={"B": 0}, + ) + problem += problem.expr.reaction_selected[0] == 1 + + result = problem.solve() + + assert result.status == "optimal" + assert np.allclose(problem.expr.reaction_active.value, [[1]]) + assert np.allclose(_vertex_values(method, problem, "B"), [0]) + + +def test_acyclicity_rejects_a_selected_feedback_cycle(backend): + graph = Graph.from_tuples( [ - [-0.0, -0.0, -0.0, -0.0], - [-0.0, 1.0, -0.0, 1.0], - [-0.0, -0.0, 1.0, 1.0], - [0.0, 1.0, 1.0, 1.0], + ("A", 1, "B"), + ("B", 1, "A"), ] ) + method = CellNOptILP(lambda_reg=0, backend=backend) + problem = method.build( + graph, + inputs={"A": 1}, + measurements={"B": 1}, + ) + problem += problem.expr.reaction_selected == 1 + + _assert_infeasible(problem, backend) + + +def test_constraint_blocks_are_vectorized_over_reactions_and_conditions(backend): + small_graph = Graph.from_tuples([("A", 1, "B")]) + large_graph = Graph.from_tuples([(f"v{i}", 1, f"v{i + 1}") for i in range(30)]) + small = CellNOptILP(lambda_reg=0, backend=backend).build( + small_graph, + inputs={"A": 1}, + measurements={"B": 1}, + ) + large = CellNOptILP(lambda_reg=0, backend=backend).build_many( + large_graph, + inputs={ + "one": {"v0": 1}, + "two": {"v0": 1}, + "three": {"v0": 1}, + }, + measurements={ + "one": {"v30": 1}, + "two": {"v30": 1}, + "three": {"v30": 1}, + }, + ) - assert np.isclose(sum([o.value for o in P.objectives]), 0.005) - assert np.isclose(P.expr.edge_activates.value, expected_edge_values).all() - assert np.isclose(np.sum(P.expr.vertex_value.value, axis=0), expected_vertex_values.sum(axis=0)).all() + assert len(small.constraints) == len(large.constraints) diff --git a/tests/methods/signaling/test_cellnopt_plotting.py b/tests/methods/signaling/test_cellnopt_plotting.py new file mode 100644 index 000000000..4a06b7a0c --- /dev/null +++ b/tests/methods/signaling/test_cellnopt_plotting.py @@ -0,0 +1,269 @@ +from pathlib import Path + +import nbformat +import numpy as np +import pytest +from nbclient import NotebookClient + +from corneto._plotting import to_dot_source +from corneto.graph import Graph +from corneto.methods.signaling import ( + CellNOptILP, + plot_cellnopt_fit, + plot_cellnopt_model, +) +from corneto.methods.signaling.cellnopt_plotting import ( + _build_cellnopt_model_plot, +) + + +def _solve(backend, graph, *, inputs, measurements, inhibitors=None, lambda_reg=1e-3): + method = CellNOptILP(lambda_reg=lambda_reg, backend=backend) + problem = method.build_many( + graph, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + result = problem.solve() + assert result.status == "optimal" + return method, problem + + +def test_model_plot_expands_and_preserves_or_and_inhibition(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "AND1"), + ("B", -1, "AND1"), + ("AND1", 1, "Y"), + ("C", 1, "Y"), + ] + ) + method, problem = _solve( + backend, + graph, + inputs={ + "and_route": {"A": 1, "B": 0, "C": 0}, + "or_route": {"A": 0, "B": 0, "C": 1}, + }, + measurements={ + "and_route": {"Y": 1}, + "or_route": {"Y": 1}, + }, + ) + + spec = _build_cellnopt_model_plot(method, problem, width_by="flow") + and_nodes = [vertex for vertex in spec.graph.V if str(vertex).startswith("__cellnopt_and_")] + assert len(and_nodes) == 1 + and_node = and_nodes[0] + assert any(source == frozenset({"C"}) and target == frozenset({"Y"}) for source, target in spec.graph.E) + assert any(source == frozenset({"A"}) and target == frozenset({and_node}) for source, target in spec.graph.E) + assert any(source == frozenset({and_node}) and target == frozenset({"Y"}) for source, target in spec.graph.E) + + negative_edges = [ + index for index, attrs in enumerate(spec.graph.get_attr_edges()) if attrs.get("interaction") == -1 + ] + assert len(negative_edges) == 1 + assert spec.edge_attributes[negative_edges[0]]["arrowhead"] == "tee" + assert spec.edge_attributes[negative_edges[0]]["color"] == "#C43C39" + aggregate_edges = [ + attrs for attrs in spec.edge_attributes.values() if "aggregate structural flow" in attrs["tooltip"] + ] + assert len(aggregate_edges) == 1 + assert np.isfinite(float(aggregate_edges[0]["penwidth"])) + + dot = to_dot_source( + spec.graph, + graph_attr=spec.graph_attributes, + node_attr=spec.node_attributes, + custom_edge_attr=spec.edge_attributes, + custom_vertex_attr=spec.vertex_attributes, + ) + assert 'label="AND"' in dot + assert 'arrowhead="tee"' in dot + assert dot.count('-> "Y"') == 2 + + +def test_condition_plot_distinguishes_active_and_selected_inactive_reactions(backend): + graph = Graph.from_tuples([("A", 1, "Y")]) + method, problem = _solve( + backend, + graph, + inputs={"off": {"A": 0}, "on": {"A": 1}}, + measurements={"off": {"Y": 0}, "on": {"Y": 1}}, + ) + + off = _build_cellnopt_model_plot(method, problem, condition="off") + on = _build_cellnopt_model_plot(method, problem, condition="on") + hidden = _build_cellnopt_model_plot( + method, + problem, + condition="off", + show_inactive=False, + ) + + assert off.edge_attributes[0]["style"] == "dashed" + assert "active=0" in off.edge_attributes[0]["tooltip"] + assert on.edge_attributes[0]["style"] == "solid" + assert "active=1" in on.edge_attributes[0]["tooltip"] + assert hidden.graph.num_edges == 0 + assert set(hidden.graph.V) == {"A", "Y"} + + +def test_model_plot_can_reveal_unselected_reactions(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "Y"), + ("C", 1, "D"), + ] + ) + method, problem = _solve( + backend, + graph, + inputs={"condition": {"A": 1, "C": 1}}, + measurements={"condition": {"Y": 1}}, + ) + + selected = _build_cellnopt_model_plot(method, problem) + complete = _build_cellnopt_model_plot(method, problem, show_unselected=True) + + assert selected.graph.num_edges == 1 + assert complete.graph.num_edges == 2 + unselected = [attrs for attrs in complete.edge_attributes.values() if "selected=0" in attrs["tooltip"]] + assert len(unselected) == 1 + assert unselected[0]["style"] == "dotted" + + +def test_fit_views_support_uneven_measurements_and_named_subsets(backend): + pytest.importorskip("matplotlib") + graph = Graph.from_tuples( + [ + ("A", 1, "Y"), + ("A", 1, "Z"), + ] + ) + method, problem = _solve( + backend, + graph, + inputs={ + "very_long_enabled_condition": {"A": 1}, + "blocked": {"A": 1}, + }, + inhibitors={ + "very_long_enabled_condition": {}, + "blocked": {"Y": 1}, + }, + measurements={ + "very_long_enabled_condition": {"Y": 0.8}, + "blocked": {"Z": 1}, + }, + ) + + grid_figure, grid_axes = plot_cellnopt_fit(method, problem) + inferred_figure, inferred_axes = plot_cellnopt_fit( + method, + problem, + signals=["A"], + ) + heatmap_figure, heatmap_axes = plot_cellnopt_fit( + method, + problem, + view="heatmap", + conditions=["blocked"], + signals=["Z"], + ) + + assert grid_axes.shape == (2, 3) + assert inferred_axes.shape == (2, 2) + assert heatmap_axes.shape == (4,) + assert grid_figure is grid_axes[0, 0].figure + assert inferred_figure is inferred_axes[0, 0].figure + assert heatmap_figure is heatmap_axes[0].figure + + measured_axis = grid_axes[0, 0] + assert [line.get_label() for line in measured_axis.lines] == [ + "_nolegend_", + "Model", + "Observed", + ] + assert all(np.allclose(line.get_xdata(), 0) for line in measured_axis.lines) + assert np.allclose(measured_axis.lines[-2].get_ydata(), [1]) + assert np.allclose(measured_axis.lines[-1].get_ydata(), [0.8]) + assert [tick.get_text() for tick in grid_axes[-1, 0].get_xticklabels()] == ["Endpoint"] + + prediction_only_axis = grid_axes[0, 1] + assert [line.get_label() for line in prediction_only_axis.lines] == ["Model"] + assert all([line.get_label() for line in inferred_axes[row, 0].lines] == ["Model"] for row in range(2)) + assert grid_axes[1, 0].patch.get_hatch() == "//" + assert prediction_only_axis.patch.get_hatch() == "//" + + +def test_fit_grid_handles_one_condition_and_one_signal(backend): + pytest.importorskip("matplotlib") + method, problem = _solve( + backend, + Graph.from_tuples([("A", 1, "Y")]), + inputs={"single_endpoint": {"A": 1}}, + measurements={"single_endpoint": {"Y": 0.2}}, + ) + + figure, axes = plot_cellnopt_fit(method, problem) + + assert axes.shape == (1, 2) + assert figure is axes[0, 0].figure + assert [tick.get_text() for tick in axes[0, 0].get_xticklabels()] == ["Endpoint"] + assert [line.get_label() for line in axes[0, 0].lines] == [ + "_nolegend_", + "Model", + "Observed", + ] + assert np.allclose(axes[0, 0].lines[-2].get_ydata(), [0]) + assert np.allclose(axes[0, 0].lines[-1].get_ydata(), [0.2]) + + +def test_networkx_model_plot_returns_real_figure(backend): + pytest.importorskip("matplotlib") + pytest.importorskip("networkx") + method, problem = _solve( + backend, + Graph.from_tuples([("A", -1, "Y")]), + inputs={"condition": {"A": 0}}, + measurements={"condition": {"Y": 1}}, + ) + + figure = plot_cellnopt_model(method, problem, renderer="networkx") + + assert len(figure.axes) == 1 + assert {"A", "Y"} <= {text.get_text() for text in figure.axes[0].texts} + assert len(figure.axes[0].patches) == 1 + + +def test_plotting_requires_a_solved_problem(): + method = CellNOptILP(lambda_reg=0) + method.build( + Graph.from_tuples([("A", 1, "Y")]), + inputs={"A": 1}, + measurements={"Y": 1}, + ) + + with pytest.raises(ValueError, match="Solve a feasible problem"): + plot_cellnopt_model(method, renderer="networkx") + with pytest.raises(ValueError, match="Solve a feasible problem"): + plot_cellnopt_fit(method) + + +def test_cellnopt_worked_notebook_executes_every_cell(): + notebook_path = Path(__file__).parents[3] / "docs/guide/signaling/cellnopt_ILP.ipynb" + notebook = nbformat.read(notebook_path, as_version=4) + + executed = NotebookClient( + notebook, + timeout=300, + kernel_name="python3", + resources={"metadata": {"path": str(notebook_path.parent)}}, + ).execute() + + errors = [ + output for cell in executed.cells for output in cell.get("outputs", []) if output.get("output_type") == "error" + ] + assert errors == [] diff --git a/tests/test_deprecations.py b/tests/test_deprecations.py index d41ab62e8..d7f846c0c 100644 --- a/tests/test_deprecations.py +++ b/tests/test_deprecations.py @@ -27,11 +27,10 @@ def test_undocumented_backend_compatibility_apis_are_removed(): def test_signal_package_warns_and_reexports_canonical_cellnopt(): - """The old CellNOpt path warns and preserves function identity.""" + """The old CellNOpt path warns and preserves class identity.""" canonical = importlib.import_module("corneto.methods.signaling.cellnopt_ilp") with pytest.warns(FutureWarning, match=r"corneto\.methods\.signal is deprecated"): legacy = importlib.import_module("corneto.methods.signal.cellnopt_ilp") - assert legacy.cellnoptILP is canonical.cellnoptILP - assert legacy.expand_graph_for_flows is canonical.expand_graph_for_flows + assert legacy.CellNOptILP is canonical.CellNOptILP From ccd5728a61910726a4dececee39bf9af8dbbef41 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Thu, 30 Jul 2026 20:04:24 +0200 Subject: [PATCH 04/13] refactor(signaling): rename CellNOptILP to CellNOptDAG --- corneto/methods/signal/__init__.py | 11 ---- corneto/methods/signal/cellnopt_ilp.py | 8 --- corneto/methods/signaling/__init__.py | 4 +- .../{cellnopt_ilp.py => cellnopt_dag.py} | 26 ++++---- .../methods/signaling/cellnopt_plotting.py | 22 +++---- docs/api/corneto.methods.rst | 4 +- ...{cellnopt_ILP.ipynb => cellnopt_dag.ipynb} | 64 +++++++++++++++++-- docs/guide/signaling/index.md | 2 +- docs/releases/migration-1.0.md | 8 +-- ...t_cellnopt_ilp.py => test_cellnopt_dag.py} | 24 +++---- .../signaling/test_cellnopt_plotting.py | 8 +-- tests/test_deprecations.py | 12 ---- 12 files changed, 109 insertions(+), 84 deletions(-) delete mode 100644 corneto/methods/signal/__init__.py delete mode 100644 corneto/methods/signal/cellnopt_ilp.py rename corneto/methods/signaling/{cellnopt_ilp.py => cellnopt_dag.py} (97%) rename docs/guide/signaling/{cellnopt_ILP.ipynb => cellnopt_dag.ipynb} (98%) rename tests/methods/signaling/{test_cellnopt_ilp.py => test_cellnopt_dag.py} (90%) diff --git a/corneto/methods/signal/__init__.py b/corneto/methods/signal/__init__.py deleted file mode 100644 index 21c233edc..000000000 --- a/corneto/methods/signal/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -"""Deprecated compatibility namespace for signaling methods.""" - -import warnings - -warnings.warn( - "corneto.methods.signal is deprecated since CORNETO 1.0.0rc1; use " - "corneto.methods.signaling instead. The compatibility package will be " - "removed in CORNETO 2.0.", - FutureWarning, - stacklevel=2, -) diff --git a/corneto/methods/signal/cellnopt_ilp.py b/corneto/methods/signal/cellnopt_ilp.py deleted file mode 100644 index b73964a02..000000000 --- a/corneto/methods/signal/cellnopt_ilp.py +++ /dev/null @@ -1,8 +0,0 @@ -"""Deprecated import path for the CellNOpt ILP implementation.""" - -from corneto.methods.signaling.cellnopt_ilp import ( - BooleanReaction, - CellNOptILP, -) - -__all__ = ["BooleanReaction", "CellNOptILP"] diff --git a/corneto/methods/signaling/__init__.py b/corneto/methods/signaling/__init__.py index 964070e6e..e49c705e4 100644 --- a/corneto/methods/signaling/__init__.py +++ b/corneto/methods/signaling/__init__.py @@ -1,6 +1,6 @@ """Signaling-network inference methods.""" -from corneto.methods.signaling.cellnopt_ilp import BooleanReaction, CellNOptILP +from corneto.methods.signaling.cellnopt_dag import BooleanReaction, CellNOptDAG from corneto.methods.signaling.cellnopt_plotting import ( plot_cellnopt_fit, plot_cellnopt_model, @@ -8,7 +8,7 @@ __all__ = [ "BooleanReaction", - "CellNOptILP", + "CellNOptDAG", "plot_cellnopt_fit", "plot_cellnopt_model", ] diff --git a/corneto/methods/signaling/cellnopt_ilp.py b/corneto/methods/signaling/cellnopt_dag.py similarity index 97% rename from corneto/methods/signaling/cellnopt_ilp.py rename to corneto/methods/signaling/cellnopt_dag.py index fbb157332..b7a6e9cdb 100644 --- a/corneto/methods/signaling/cellnopt_ilp.py +++ b/corneto/methods/signaling/cellnopt_dag.py @@ -23,7 +23,7 @@ ) from corneto.methods._network_utils import augment_with_boundaries -__all__ = ["BooleanReaction", "CellNOptILP"] +__all__ = ["BooleanReaction", "CellNOptDAG"] _AND_PATTERN = re.compile(r"^and[0-9]+$", re.IGNORECASE) _ROLE_INPUT = "input" @@ -68,14 +68,14 @@ def _is_and_vertex(vertex: Any) -> bool: def _interaction(graph: BaseGraph, edge_index: int) -> int: value = graph.get_attr_edge(edge_index).get("interaction") if isinstance(value, bool) or not isinstance(value, Real) or value not in (-1, 1): - raise ValueError(f"CellNOptILP requires interaction +1 or -1 on edge {edge_index}; got {value!r}.") + raise ValueError(f"CellNOptDAG requires interaction +1 or -1 on edge {edge_index}; got {value!r}.") return int(value) def _compile_reactions(graph: BaseGraph) -> _ReactionNetwork: """Compile SIF-style dummy AND vertices into reaction-level dependencies.""" if graph.num_vertices == 0 or graph.num_edges == 0: - raise ValueError("CellNOptILP requires a non-empty directed PKN.") + raise ValueError("CellNOptDAG requires a non-empty directed PKN.") and_vertices = {vertex for vertex in graph.V if _is_and_vertex(vertex)} vertex_order = {vertex: index for index, vertex in enumerate(graph.V)} @@ -85,11 +85,11 @@ def _compile_reactions(graph: BaseGraph) -> _ReactionNetwork: for edge_index, ((source, target), attributes) in enumerate(zip(graph.E, graph.get_attr_edges())): if len(source) != 1 or len(target) != 1: raise ValueError( - "CellNOptILP accepts simple directed PKN edges only; " + "CellNOptDAG accepts simple directed PKN edges only; " f"edge {edge_index} has {len(source)} sources and {len(target)} targets." ) if not attributes.has_attr(Attr.EDGE_TYPE, EdgeType.DIRECTED): - raise ValueError(f"CellNOptILP requires directed edges; edge {edge_index} is not directed.") + raise ValueError(f"CellNOptDAG requires directed edges; edge {edge_index} is not directed.") _interaction(graph, edge_index) source_vertex = next(iter(source)) target_vertex = next(iter(target)) @@ -168,7 +168,7 @@ def add_reaction(positive, negative, product, source_edges): ) if not reactions: - raise ValueError("CellNOptILP preprocessing produced no Boolean reactions.") + raise ValueError("CellNOptDAG preprocessing produced no Boolean reactions.") dependency_graph = Graph() species = [vertex for vertex in graph.V if vertex not in and_vertices] @@ -279,7 +279,7 @@ def _cellnopt_data( inhibitors=inhibitors, ) if not condition_names: - raise ValueError("CellNOptILP requires at least one named condition.") + raise ValueError("CellNOptDAG requires at least one named condition.") if inhibitors is None: inhibitors = {condition: {} for condition in condition_names} @@ -372,7 +372,7 @@ def _cellnopt_data( return data_from_features(features_by_condition) -class CellNOptILP(FlowMethod): +class CellNOptDAG(FlowMethod): """Infer a shared acyclic Boolean model from multiple conditions. The method selects reactions globally and evaluates their Boolean truth in @@ -475,11 +475,11 @@ def preprocess(self, graph: BaseGraph, data: Data): """Compile reactions, validate condition data, and add flow boundaries.""" network = _compile_reactions(graph) if not data.samples: - raise ValueError("CellNOptILP requires at least one condition.") + raise ValueError("CellNOptDAG requires at least one condition.") condition_names = tuple(data.samples) if any(not isinstance(name, str) or not name for name in condition_names): - raise ValueError("CellNOptILP condition names must be non-empty strings.") + raise ValueError("CellNOptDAG condition names must be non-empty strings.") vertex_index = {vertex: index for index, vertex in enumerate(network.graph.V)} num_vertices = network.graph.num_vertices @@ -495,12 +495,12 @@ def preprocess(self, graph: BaseGraph, data: Data): for feature in sample.features: if feature.mapping != "vertex": raise ValueError( - f"CellNOptILP only accepts vertex features; got mapping " + f"CellNOptDAG only accepts vertex features; got mapping " f"{feature.mapping!r} in condition {condition!r}." ) if feature.id not in vertex_index: raise ValueError( - f"Unknown species {feature.id!r} in CellNOptILP data for " + f"Unknown species {feature.id!r} in CellNOptDAG data for " f"condition {condition!r}; dummy AND vertices cannot be measured " "or perturbed." ) @@ -683,7 +683,7 @@ def create_flow_based_problem( @staticmethod def name() -> str: """Return the method name.""" - return "CellNOptILP" + return "CellNOptDAG" @staticmethod def description() -> str: diff --git a/corneto/methods/signaling/cellnopt_plotting.py b/corneto/methods/signaling/cellnopt_plotting.py index 33684f2d1..ca2df369e 100644 --- a/corneto/methods/signaling/cellnopt_plotting.py +++ b/corneto/methods/signaling/cellnopt_plotting.py @@ -1,4 +1,4 @@ -"""Visualization utilities for :class:`~corneto.methods.signaling.CellNOptILP`.""" +"""Visualization utilities for :class:`~corneto.methods.signaling.CellNOptDAG`.""" from __future__ import annotations @@ -9,7 +9,7 @@ from corneto._plotting import _scaled_magnitudes from corneto.graph import Graph -from corneto.methods.signaling.cellnopt_ilp import CellNOptILP +from corneto.methods.signaling.cellnopt_dag import CellNOptDAG __all__ = ["plot_cellnopt_fit", "plot_cellnopt_model"] @@ -43,7 +43,7 @@ class _CellNOptPlotData: class _FitSeries: """Observed and predicted responses on an explicit time axis. - CellNOptILP currently infers one steady-state endpoint per condition, so + CellNOptDAG currently infers one steady-state endpoint per condition, so extraction produces a singleton axis labelled ``Endpoint``. Keeping time as a real array dimension lets a future time-resolved formulation reuse the renderer without assigning scientific meaning to series identity. @@ -67,7 +67,7 @@ class _ModelPlotSpec: def _expression_values(problem: Any, name: str, shape: tuple[int, ...]) -> np.ndarray: if problem is None: - raise ValueError("CellNOptILP has not been built. Build and solve the method before plotting.") + raise ValueError("CellNOptDAG has not been built. Build and solve the method before plotting.") try: expression = problem.expr[name] except (KeyError, TypeError, AttributeError): @@ -94,15 +94,15 @@ def _validate_binary_values(values: np.ndarray, name: str, tolerance: float = 1e return values >= 0.5 -def _extract_plot_data(method: CellNOptILP, problem: Any = None) -> _CellNOptPlotData: - if not isinstance(method, CellNOptILP): - raise TypeError("method must be a CellNOptILP instance.") +def _extract_plot_data(method: CellNOptDAG, problem: Any = None) -> _CellNOptPlotData: + if not isinstance(method, CellNOptDAG): + raise TypeError("method must be a CellNOptDAG instance.") if problem is None: problem = method.problem conditions = tuple(method._condition_names) vertices = tuple(method.processed_graph.V) if method.processed_graph is not None else () if not conditions or not vertices or not method.reactions: - raise ValueError("CellNOptILP has not been built. Build and solve the method before plotting.") + raise ValueError("CellNOptDAG has not been built. Build and solve the method before plotting.") num_reactions = len(method.reactions) num_conditions = len(conditions) @@ -205,7 +205,7 @@ def _merge_attributes( def _build_cellnopt_model_plot( - method: CellNOptILP, + method: CellNOptDAG, problem: Any = None, *, condition: Optional[Union[int, str]] = None, @@ -439,7 +439,7 @@ def state_attributes( def plot_cellnopt_model( - method: CellNOptILP, + method: CellNOptDAG, problem: Any = None, *, condition: Optional[Union[int, str]] = None, @@ -846,7 +846,7 @@ def _plot_fit_heatmaps( def plot_cellnopt_fit( - method: CellNOptILP, + method: CellNOptDAG, problem: Any = None, *, view: Literal["cellnopt", "heatmap"] = "cellnopt", diff --git a/docs/api/corneto.methods.rst b/docs/api/corneto.methods.rst index 1c7f48cb5..e981e17ac 100644 --- a/docs/api/corneto.methods.rst +++ b/docs/api/corneto.methods.rst @@ -15,7 +15,7 @@ and transcription-factor mappings for one condition. Their ``build_many`` methods accept named conditions. ``milp_carnival`` remains as a compatibility formulation. -``CellNOptILP.build`` accepts binary input, measurement, and optional inhibitor +``CellNOptDAG.build`` accepts binary input, measurement, and optional inhibitor mappings. ``build_many`` infers one shared connected reaction model while evaluating its Boolean state independently in every named condition. @@ -25,7 +25,7 @@ evaluating its Boolean state independently in every named condition. CarnivalFlow CarnivalILP - signaling.CellNOptILP + signaling.CellNOptDAG BidirectionalPHONEMeS PHONEMeS compute_phonemes_scores diff --git a/docs/guide/signaling/cellnopt_ILP.ipynb b/docs/guide/signaling/cellnopt_dag.ipynb similarity index 98% rename from docs/guide/signaling/cellnopt_ILP.ipynb rename to docs/guide/signaling/cellnopt_dag.ipynb index 368a7c158..13537612f 100644 --- a/docs/guide/signaling/cellnopt_ILP.ipynb +++ b/docs/guide/signaling/cellnopt_dag.ipynb @@ -5,7 +5,7 @@ "id": "d0d6ea50", "metadata": {}, "source": [ - "# Inferring intracellular signaling models with CellNOpt\n", + "# Inferring intracellular signaling models with CellNOptDAG\n", "\n", "Many signaling experiments follow the same design: stimulate a receptor or inhibit a signaling protein, wait until a chosen endpoint, and measure a panel of phosphoproteins or reporters. Each experimental condition is therefore a **snapshot of the cellular response to an intervention**.\n", "\n", @@ -13,7 +13,7 @@ "\n", "> **What is the smallest connected feed-forward signaling logic sufficient to explain the observed endpoint responses across all interventions?**\n", "\n", - "A prior-knowledge network (PKN) supplies the candidate biology. It collects signaling interactions reported in the literature or databases and is deliberately inclusive: it may contain alternative routes, AND gates, inhibitory effects, and feedback loops. `CellNOptILP` searches this network for a small Boolean signaling model that answers the question above across the complete experiment.\n", + "A prior-knowledge network (PKN) supplies the candidate biology. It collects signaling interactions reported in the literature or databases and is deliberately inclusive: it may contain alternative routes, AND gates, inhibitory effects, and feedback loops. `CellNOptDAG` searches this network for a small Boolean signaling model that answers the question above across the complete experiment.\n", "\n", "Proteins are represented as inactive (`0`) or active (`1`), and the same pathway structure is used in every condition. The interventions change which parts of that pathway can respond. This is a simplified model of intracellular signal transmission—not a reconstruction of every molecular event between stimulation and measurement.\n", "\n", @@ -92,7 +92,7 @@ "\n", "import corneto as cn\n", "from corneto.methods.signaling import (\n", - " CellNOptILP,\n", + " CellNOptDAG,\n", " plot_cellnopt_fit,\n", " plot_cellnopt_model,\n", ")" @@ -542,7 +542,7 @@ } ], "source": [ - "method = CellNOptILP(lambda_reg=1e-3)\n", + "method = CellNOptDAG(lambda_reg=1e-3)\n", "problem = method.build_many(\n", " pkn,\n", " inputs=inputs,\n", @@ -2567,6 +2567,62 @@ "\n", "Other limitations remain: Boolean states simplify graded and stochastic signaling; inference is restricted to the supplied PKN; alternative models may fit equally well; and unmeasured internal activities remain predictions. Structural flow certifies connectivity only—it does not quantify signaling strength." ] + }, + { + "cell_type": "markdown", + "id": "causal-structure-bridge", + "metadata": {}, + "source": [ + "## Connection to causal structure learning\n", + "\n", + "For readers coming from mathematics or causal inference, `CellNOptDAG` can be viewed as **interventional Boolean causal structure learning over a restricted hypothesis space**.\n", + "\n", + "The variables are the binary protein activities $X_v$. The PKN acts as a causal *superstructure*: it specifies the allowed variables, directions, signs, and multi-input clauses. The optimization does not invent interactions outside that superstructure. Instead, it chooses which candidate reactions are needed to explain all intervention conditions.\n", + "\n", + "Let $Y_r$ indicate whether candidate reaction $r$ is selected. If $P_r$ and $N_r$ are its positive and negative inputs, its condition-specific truth value is\n", + "\n", + "$$\n", + "Z_{rc}=Y_r\\land\\bigwedge_{u\\in P_r}X_{uc}\\land\\bigwedge_{w\\in N_r}\\neg X_{wc}.\n", + "$$\n", + "\n", + "For a protein that is not experimentally fixed, alternative selected reactions producing that protein act as OR alternatives:\n", + "\n", + "$$\n", + "X_{vc}=\\bigvee_{r:\\,\\operatorname{product}(r)=v} Z_{rc}.\n", + "$$\n", + "\n", + "The inferred equation for each protein is therefore a signed Boolean expression in disjunctive normal form. For example, selecting `A AND NOT B → X` and `C → X` gives\n", + "\n", + "$$\n", + "X=(A\\land\\neg B)\\lor C.\n", + "$$\n", + "\n", + "The selection variables $Y_r$ are shared across conditions: this is the assumption that the underlying causal mechanisms remain invariant throughout the experiment. The state variables $X_{vc}$ and reaction activities $Z_{rc}$ vary because each condition applies different experimental manipulations.\n", + "\n", + "A stimulus or inhibitor overrides the usual equation for its target and fixes that variable to `1` or `0`. In structural-causal notation, this plays the role of a hard intervention such as $\\operatorname{do}(X_v=1)$ or $\\operatorname{do}(X_v=0)$. CellNOptDAG then searches for a shared model that predicts the measured outcomes of these interventions:\n", + "\n", + "$$\n", + "\\min_Y\\;\\sum_{(v,c)\\,\\mathrm{observed}}|X_{vc}-m_{vc}|+\\lambda\\sum_rY_r.\n", + "$$\n", + "\n", + "The first term is interventional prediction error and the second is a sparsity penalty on structural mechanisms. Because CORNETO also requires the selected dependencies to be acyclic, the fitted equations form a recursive Boolean structural causal model with a well-defined evaluation order.\n", + "\n", + "| CellNOpt term | Causal or mathematical interpretation |\n", + "|---|---|\n", + "| Protein activity | Binary endogenous variable |\n", + "| PKN | Causal superstructure or hypothesis space |\n", + "| Selected reaction | Selected structural mechanism or Boolean clause |\n", + "| Stimulus or inhibitor | Hard intervention |\n", + "| Shared reaction selection | Invariant causal structure |\n", + "| Readout mismatch | Interventional prediction loss |\n", + "| Model-size penalty | Sparsity regularization |\n", + "| Acyclicity | Recursive structural causal model |\n", + "| Structural flow | Connectivity certificate, not a causal-effect estimate |\n", + "\n", + "The phrase **causal discovery** needs one qualification here. This is not unrestricted discovery of a causal graph from data alone: the PKN already supplies the possible mechanisms, including the available AND clauses. The method selects among those mechanisms, while OR relationships arise from selecting several reactions with the same product. It is therefore more precise to call the task **PKN-constrained interventional Boolean causal structure learning**.\n", + "\n", + "As in other causal-learning problems, the fitted structure need not be identifiable. Two candidate subnetworks may make exactly the same predictions under the available interventions. The size penalty can prefer a compact representative, but it cannot turn experimentally indistinguishable models into a uniquely established causal explanation." + ] } ], "metadata": { diff --git a/docs/guide/signaling/index.md b/docs/guide/signaling/index.md index 8b67a5cc9..9855bd1e8 100644 --- a/docs/guide/signaling/index.md +++ b/docs/guide/signaling/index.md @@ -9,5 +9,5 @@ carnival.ipynb multisample-carnival.ipynb phonemes.ipynb bidirectional-phonemes.ipynb -cellnopt_ILP.ipynb +cellnopt_dag.ipynb ``` diff --git a/docs/releases/migration-1.0.md b/docs/releases/migration-1.0.md index 8e6f219b4..5cad33060 100644 --- a/docs/releases/migration-1.0.md +++ b/docs/releases/migration-1.0.md @@ -14,13 +14,12 @@ were removed instead of being carried as permanent compatibility aliases. | `corneto.methods.future.MultiSampleIMAT` | `corneto.methods.MultiSampleIMAT` | | `corneto.methods.future.PrizeCollectingSteinerTree` | `corneto.methods.PrizeCollectingSteinerTree` | | `corneto.methods.future.SteinerTreeFlow` | `corneto.methods.SteinerTreeFlow` | -| `corneto.methods.signal.cellnopt_ilp` | `corneto.methods.signaling.cellnopt_ilp` | | `corneto.K` or `corneto.ops` | `corneto.opt` | | `corneto._ml.build_dagnn` | `corneto.ml.build_dagnn` | | `corneto.methods.shortest_path.create_multisample_shortest_path` | `corneto.methods.create_multisample_shortest_path` | | module-level graph serialization | `Graph.save` and `Graph.load` | -The old `future`, `signal`, `K`, and `ops` paths in this table remain warning +The old `future`, `K`, and `ops` paths in this table remain warning compatibility paths throughout 1.x. The private `_ml` path and duplicate graph serialization functions do not have shims. @@ -34,8 +33,9 @@ serialization functions do not have shims. modules (`corneto._graph`, `corneto._data`, `corneto._io`, `corneto._nx`, `corneto._core`, and `corneto._legacy`). - The British-spelling `corneto.methods.signalling` implementation and the old - module-shaped `corneto.methods.signaling`; signaling methods now live in the - `corneto.methods.signaling` package. + module-shaped `corneto.methods.signaling`, as well as the singular + `corneto.methods.signal` compatibility namespace; signaling methods now live + in the `corneto.methods.signaling` package. - Duplicate module-level graph serialization helpers from `corneto.io`. ## Multi-condition convention diff --git a/tests/methods/signaling/test_cellnopt_ilp.py b/tests/methods/signaling/test_cellnopt_dag.py similarity index 90% rename from tests/methods/signaling/test_cellnopt_ilp.py rename to tests/methods/signaling/test_cellnopt_dag.py index 6887af4a2..15e2bb6f6 100644 --- a/tests/methods/signaling/test_cellnopt_ilp.py +++ b/tests/methods/signaling/test_cellnopt_dag.py @@ -2,7 +2,7 @@ from corneto.backend import PicosBackend from corneto.graph import Graph -from corneto.methods.signaling.cellnopt_ilp import CellNOptILP +from corneto.methods.signaling.cellnopt_dag import CellNOptDAG def _vertex_values(method, problem, vertex): @@ -56,7 +56,7 @@ def test_and_gate_is_one_reaction_with_conjunctive_truth(backend): "both": {"Y": 1}, } - method = CellNOptILP(lambda_reg=1e-3, backend=backend) + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) problem = _solve( method, graph, @@ -95,7 +95,7 @@ def test_or_is_induced_by_multiple_active_producing_reactions(backend): "both": {"Y": 1}, } - method = CellNOptILP(lambda_reg=1e-3, backend=backend) + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) problem = _solve( method, graph, @@ -118,7 +118,7 @@ def test_positive_and_negative_alternatives_fit_complementary_conditions(backend ("A", -1, "Y"), ] ) - method = CellNOptILP(lambda_reg=1e-3, backend=backend) + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) problem = _solve( method, graph, @@ -136,7 +136,7 @@ def test_positive_and_negative_alternatives_fit_complementary_conditions(backend def test_same_inputs_with_conflicting_measurements_cannot_both_be_fit(backend): graph = Graph.from_tuples([("A", 1, "Y")]) - method = CellNOptILP(lambda_reg=0, backend=backend) + method = CellNOptDAG(lambda_reg=0, backend=backend) problem = _solve( method, graph, @@ -156,7 +156,7 @@ def test_irrelevant_active_input_does_not_force_a_disconnected_branch(backend): ("C", 1, "D"), ] ) - method = CellNOptILP(lambda_reg=1e-3, backend=backend) + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) problem = _solve( method, graph, @@ -176,7 +176,7 @@ def test_flow_rejects_a_selected_component_without_experimental_boundaries(backe ("C", 1, "D"), ] ) - method = CellNOptILP(lambda_reg=0, backend=backend) + method = CellNOptDAG(lambda_reg=0, backend=backend) problem = method.build( graph, inputs={"A": 1}, @@ -194,7 +194,7 @@ def test_flow_rejects_a_selected_dangling_branch(backend): ("A", 1, "C"), ] ) - method = CellNOptILP(lambda_reg=0, backend=backend) + method = CellNOptDAG(lambda_reg=0, backend=backend) problem = method.build( graph, inputs={"A": 1}, @@ -207,7 +207,7 @@ def test_flow_rejects_a_selected_dangling_branch(backend): def test_inhibition_overrides_product_without_disabling_reaction_truth(backend): graph = Graph.from_tuples([("A", 1, "B")]) - method = CellNOptILP(lambda_reg=0, backend=backend) + method = CellNOptDAG(lambda_reg=0, backend=backend) problem = method.build( graph, inputs={"A": 1}, @@ -230,7 +230,7 @@ def test_acyclicity_rejects_a_selected_feedback_cycle(backend): ("B", 1, "A"), ] ) - method = CellNOptILP(lambda_reg=0, backend=backend) + method = CellNOptDAG(lambda_reg=0, backend=backend) problem = method.build( graph, inputs={"A": 1}, @@ -244,12 +244,12 @@ def test_acyclicity_rejects_a_selected_feedback_cycle(backend): def test_constraint_blocks_are_vectorized_over_reactions_and_conditions(backend): small_graph = Graph.from_tuples([("A", 1, "B")]) large_graph = Graph.from_tuples([(f"v{i}", 1, f"v{i + 1}") for i in range(30)]) - small = CellNOptILP(lambda_reg=0, backend=backend).build( + small = CellNOptDAG(lambda_reg=0, backend=backend).build( small_graph, inputs={"A": 1}, measurements={"B": 1}, ) - large = CellNOptILP(lambda_reg=0, backend=backend).build_many( + large = CellNOptDAG(lambda_reg=0, backend=backend).build_many( large_graph, inputs={ "one": {"v0": 1}, diff --git a/tests/methods/signaling/test_cellnopt_plotting.py b/tests/methods/signaling/test_cellnopt_plotting.py index 4a06b7a0c..ecfe0004a 100644 --- a/tests/methods/signaling/test_cellnopt_plotting.py +++ b/tests/methods/signaling/test_cellnopt_plotting.py @@ -8,7 +8,7 @@ from corneto._plotting import to_dot_source from corneto.graph import Graph from corneto.methods.signaling import ( - CellNOptILP, + CellNOptDAG, plot_cellnopt_fit, plot_cellnopt_model, ) @@ -18,7 +18,7 @@ def _solve(backend, graph, *, inputs, measurements, inhibitors=None, lambda_reg=1e-3): - method = CellNOptILP(lambda_reg=lambda_reg, backend=backend) + method = CellNOptDAG(lambda_reg=lambda_reg, backend=backend) problem = method.build_many( graph, inputs=inputs, @@ -239,7 +239,7 @@ def test_networkx_model_plot_returns_real_figure(backend): def test_plotting_requires_a_solved_problem(): - method = CellNOptILP(lambda_reg=0) + method = CellNOptDAG(lambda_reg=0) method.build( Graph.from_tuples([("A", 1, "Y")]), inputs={"A": 1}, @@ -253,7 +253,7 @@ def test_plotting_requires_a_solved_problem(): def test_cellnopt_worked_notebook_executes_every_cell(): - notebook_path = Path(__file__).parents[3] / "docs/guide/signaling/cellnopt_ILP.ipynb" + notebook_path = Path(__file__).parents[3] / "docs/guide/signaling/cellnopt_dag.ipynb" notebook = nbformat.read(notebook_path, as_version=4) executed = NotebookClient( diff --git a/tests/test_deprecations.py b/tests/test_deprecations.py index d7f846c0c..b9cf74472 100644 --- a/tests/test_deprecations.py +++ b/tests/test_deprecations.py @@ -1,7 +1,5 @@ """Tests for compatibility APIs retained during the CORNETO 1.x line.""" -import importlib - import pytest import corneto as cn @@ -24,13 +22,3 @@ def test_undocumented_backend_compatibility_apis_are_removed(): with pytest.raises(TypeError, match="unexpected keyword argument 'graph'"): ProblemDef(graph=object()) - - -def test_signal_package_warns_and_reexports_canonical_cellnopt(): - """The old CellNOpt path warns and preserves class identity.""" - canonical = importlib.import_module("corneto.methods.signaling.cellnopt_ilp") - - with pytest.warns(FutureWarning, match=r"corneto\.methods\.signal is deprecated"): - legacy = importlib.import_module("corneto.methods.signal.cellnopt_ilp") - - assert legacy.CellNOptILP is canonical.CellNOptILP From 06b883c523f0c494f22894efdc896d40c2670ca2 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Thu, 30 Jul 2026 20:10:30 +0200 Subject: [PATCH 05/13] docs(signaling): clarify acyclicity interpretation --- docs/guide/signaling/cellnopt_dag.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guide/signaling/cellnopt_dag.ipynb b/docs/guide/signaling/cellnopt_dag.ipynb index 13537612f..a1de429e1 100644 --- a/docs/guide/signaling/cellnopt_dag.ipynb +++ b/docs/guide/signaling/cellnopt_dag.ipynb @@ -2605,7 +2605,7 @@ "\\min_Y\\;\\sum_{(v,c)\\,\\mathrm{observed}}|X_{vc}-m_{vc}|+\\lambda\\sum_rY_r.\n", "$$\n", "\n", - "The first term is interventional prediction error and the second is a sparsity penalty on structural mechanisms. Because CORNETO also requires the selected dependencies to be acyclic, the fitted equations form a recursive Boolean structural causal model with a well-defined evaluation order.\n", + "The first term is interventional prediction error and the second is a sparsity penalty on structural mechanisms. Because CORNETO also requires the selected dependencies to be acyclic, the fitted Boolean structural equations can be evaluated in topological order without specifying feedback dynamics.\n", "\n", "| CellNOpt term | Causal or mathematical interpretation |\n", "|---|---|\n", @@ -2616,7 +2616,7 @@ "| Shared reaction selection | Invariant causal structure |\n", "| Readout mismatch | Interventional prediction loss |\n", "| Model-size penalty | Sparsity regularization |\n", - "| Acyclicity | Recursive structural causal model |\n", + "| Acyclicity | Topological evaluation of the structural equations; feedback is excluded |\n", "| Structural flow | Connectivity certificate, not a causal-effect estimate |\n", "\n", "The phrase **causal discovery** needs one qualification here. This is not unrestricted discovery of a causal graph from data alone: the PKN already supplies the possible mechanisms, including the available AND clauses. The method selects among those mechanisms, while OR relationships arise from selecting several reactions with the same product. It is therefore more precise to call the task **PKN-constrained interventional Boolean causal structure learning**.\n", From c87b16c96d1549c63901e933c535550e92ef427f Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Fri, 31 Jul 2026 09:20:29 +0200 Subject: [PATCH 06/13] docs(release): prepare CORNETO 1.0 rc3 --- docs/releases/index.md | 1 + docs/releases/v1.0.0-rc.1.md | 8 +++++--- docs/releases/v1.0.0-rc.3.md | 27 +++++++++++++++++++++++++++ tests/test_api_contract.py | 6 ++++++ 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 docs/releases/v1.0.0-rc.3.md diff --git a/docs/releases/index.md b/docs/releases/index.md index 838bf19d7..49e315d35 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -7,6 +7,7 @@ This section contains detailed release notes for CORNETO versions, documenting n ```{toctree} :maxdepth: 1 +v1.0.0-rc.3 v1.0.0-rc.1 migration-1.0 v1.0.0-beta.2 diff --git a/docs/releases/v1.0.0-rc.1.md b/docs/releases/v1.0.0-rc.1.md index 758a8336a..90e83984c 100644 --- a/docs/releases/v1.0.0-rc.1.md +++ b/docs/releases/v1.0.0-rc.1.md @@ -20,9 +20,11 @@ It requires Python 3.11 or newer and is tested on Python 3.11, 3.12, and 3.13. ## Compatibility window -Imports through `corneto.methods.future`, `corneto.methods.signal`, and the root -`corneto.K` and `corneto.ops` aliases continue to work with `FutureWarning` -through the CORNETO 1.x line. They are scheduled for removal in CORNETO 2.0. +Imports through `corneto.methods.future` and the root `corneto.K` and +`corneto.ops` aliases continue to work with `FutureWarning` through the CORNETO +1.x line. They are scheduled for removal in CORNETO 2.0. The experimental +`corneto.methods.signal` namespace and `cellnoptILP` function are outside this +compatibility window and are removed before the final 1.0 release. See the [1.0 migration guide](migration-1.0.md) for canonical mappings and intentional removals. diff --git a/docs/releases/v1.0.0-rc.3.md b/docs/releases/v1.0.0-rc.3.md new file mode 100644 index 000000000..fbd7b7bc6 --- /dev/null +++ b/docs/releases/v1.0.0-rc.3.md @@ -0,0 +1,27 @@ +# CORNETO 1.0.0 RC3 + +CORNETO 1.0.0 RC3 expands the candidate 1.0 signaling and metabolism workflows +and moves publication to a public-`main` release gate. + +## Highlights + +- `CellNOptDAG` provides class-based Boolean signaling-model inference, + including dedicated model and fit visualizations. +- The FBA and iMAT guides have been overhauled, including a new standalone iMAT + guide and refreshed multi-condition examples. +- Public releases now use one pull request directly into public `main`; that PR + runs the Python 3.11–3.13 tests, quality checks, warning-free documentation + build, and package smoke test before a release tag is created. + +## Experimental API cleanup + +The experimental `cellnoptILP` function and `corneto.methods.signal` namespace +have been removed without compatibility shims. Use the supported class-based +API instead: + +```python +from corneto.methods.signaling import CellNOptDAG +``` + +See the [1.0 migration guide](migration-1.0.md) for the complete supported +surface and intentional removals. diff --git a/tests/test_api_contract.py b/tests/test_api_contract.py index 21fc32036..900fc0092 100644 --- a/tests/test_api_contract.py +++ b/tests/test_api_contract.py @@ -79,6 +79,12 @@ def test_methods_api_surface_and_identity(): assert methods.create_multisample_shortest_path is create_multisample_shortest_path +def test_experimental_cellnopt_ilp_surface_is_removed(): + """The superseded experimental CellNOpt ILP modules have no shims.""" + assert importlib.util.find_spec("corneto.methods.signal") is None + assert importlib.util.find_spec("corneto.methods.signaling.cellnopt_ilp") is None + + def test_ml_api_replaces_private_module(): """KPNN helpers live in the public ML module without a private-path shim.""" assert ml.__all__ == [ From df74e2ec80681c490cae919e5be02ea866c8da70 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Sun, 2 Aug 2026 12:51:28 +0200 Subject: [PATCH 07/13] feat(signaling): integrate CellNOptDAG with AnnNet --- corneto/methods/signaling/__init__.py | 8 + corneto/methods/signaling/annnet.py | 363 +++ docs/api/corneto.methods.rst | 13 + .../annnet-cellnopt-dag.ipynb | 2081 +++++++++++++++++ docs/tutorials/annnet-signaling/pixi.toml | 16 + docs/tutorials/index.md | 1 + .../methods/signaling/test_cellnopt_annnet.py | 48 + 7 files changed, 2530 insertions(+) create mode 100644 corneto/methods/signaling/annnet.py create mode 100644 docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb create mode 100644 docs/tutorials/annnet-signaling/pixi.toml create mode 100644 tests/methods/signaling/test_cellnopt_annnet.py diff --git a/corneto/methods/signaling/__init__.py b/corneto/methods/signaling/__init__.py index e49c705e4..baf83ee5f 100644 --- a/corneto/methods/signaling/__init__.py +++ b/corneto/methods/signaling/__init__.py @@ -1,5 +1,10 @@ """Signaling-network inference methods.""" +from corneto.methods.signaling.annnet import ( + add_cellnopt_conditions, + add_cellnopt_results, + build_cellnopt_from_annnet, +) from corneto.methods.signaling.cellnopt_dag import BooleanReaction, CellNOptDAG from corneto.methods.signaling.cellnopt_plotting import ( plot_cellnopt_fit, @@ -9,6 +14,9 @@ __all__ = [ "BooleanReaction", "CellNOptDAG", + "add_cellnopt_conditions", + "add_cellnopt_results", + "build_cellnopt_from_annnet", "plot_cellnopt_fit", "plot_cellnopt_model", ] diff --git a/corneto/methods/signaling/annnet.py b/corneto/methods/signaling/annnet.py new file mode 100644 index 000000000..0f209a5ca --- /dev/null +++ b/corneto/methods/signaling/annnet.py @@ -0,0 +1,363 @@ +"""AnnNet integration for CellNOptDAG signaling analyses.""" + +import warnings +from copy import deepcopy +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Mapping + +import numpy as np + +from corneto.contrib.annnet import from_annnet +from corneto.utils import import_optional_module + +if TYPE_CHECKING: + from annnet import AnnNet + + from corneto.backend._base import ProblemDef + from corneto.methods.signaling import CellNOptDAG + + +@dataclass(frozen=True) +class _CellNOptAnnNetContext: + condition_layers: dict[str, tuple[str, ...]] + source_edge_ids: tuple[str, ...] + source_edges: dict[str, tuple[str, str, int]] + + +def _matching_condition_keys(**collections: Mapping[str, Any]) -> tuple[str, ...]: + names: tuple[str, ...] | None = None + for argument, values in collections.items(): + if not isinstance(values, Mapping): + raise TypeError(f"{argument} must be a mapping from condition names to protein values.") + current = tuple(values) + if names is None: + names = current + elif set(current) != set(names): + raise ValueError(f"{argument} must contain the same conditions as inputs.") + return names or () + + +def _condition_layer_map( + graph: "AnnNet", + *, + condition_aspect: str, + condition_layers: Mapping[str, tuple[str, ...]] | None, +) -> dict[str, tuple[str, ...]]: + aspects = tuple(graph.layers.list_aspects()) + if condition_layers is not None: + result = {str(name): tuple(layer) for name, layer in condition_layers.items()} + if not result: + raise ValueError("condition_layers must contain at least one condition.") + if any(len(layer) != len(aspects) for layer in result.values()): + raise ValueError("Each condition layer must provide one value for every AnnNet layer aspect.") + return result + + if aspects != (condition_aspect,): + raise ValueError( + f"Automatic condition discovery requires one AnnNet layer aspect named {condition_aspect!r}. " + "Pass condition_layers explicitly when the network uses several aspects." + ) + names = graph.layers.list_layers(aspect=condition_aspect) + if not names: + raise ValueError(f"The AnnNet object has no layers for the {condition_aspect!r} aspect.") + return {str(name): (str(name),) for name in names} + + +def add_cellnopt_conditions( + graph: "AnnNet", + *, + inputs: Mapping[str, Mapping[str, Any]], + measurements: Mapping[str, Mapping[str, Any]], + inhibitors: Mapping[str, Mapping[str, Any]] | None = None, + condition_aspect: str = "condition", + input_attr: str = "input", + inhibitor_attr: str = "inhibited", + measurement_attr: str = "observed", +) -> dict[str, tuple[str, ...]]: + """Add CellNOpt perturbations and measurements as AnnNet condition layers. + + Every condition receives a copy of the graph's existing vertices. Input, + inhibitor, and measurement values are stored as vertex-layer attributes. + The returned mapping can be passed to :func:`build_cellnopt_from_annnet` + when a caller wants to name or select layers explicitly. + """ + import_optional_module("annnet") + if inhibitors is None: + inhibitors = {condition: {} for condition in inputs} + condition_names = _matching_condition_keys( + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + if not condition_names: + raise ValueError("At least one experimental condition is required.") + + aspects = tuple(graph.layers.list_aspects()) + if aspects and aspects != (condition_aspect,): + raise ValueError( + "add_cellnopt_conditions can initialize an unlayered AnnNet object or reuse its single " + f"{condition_aspect!r} aspect. Use AnnNet directly for experiments with several layer aspects." + ) + if not aspects: + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="Declared aspects") + graph.layers.set_aspects( + [condition_aspect], + {condition_aspect: list(condition_names)}, + ) + + known_vertices = set(graph.vertices()) + base_vertices = list(graph.vertices()) + layers = {condition: (condition,) for condition in condition_names} + for condition, layer in layers.items(): + graph.add_vertices(base_vertices, layer=layer) + values_by_role = ( + (inputs[condition], input_attr), + (inhibitors[condition], inhibitor_attr), + (measurements[condition], measurement_attr), + ) + for values, attribute in values_by_role: + if not isinstance(values, Mapping): + raise TypeError(f"Values for condition {condition!r} must be mappings keyed by protein.") + unknown = set(values) - known_vertices + if unknown: + protein = sorted(unknown, key=str)[0] + raise ValueError(f"Unknown protein {protein!r} in condition {condition!r}.") + for protein, value in values.items(): + graph.layers.set_vertex_layer_attrs(str(protein), layer, **{attribute: value}) + return layers + + +def _cellnopt_source_graph(graph: "AnnNet", network_slice: str | None): + selected = set(graph.edges()) if network_slice is None else set(graph.slices.edges(network_slice)) + edge_ids = [edge_id for edge_id in graph.edges() if edge_id in selected] + directed_edge_ids = set(graph.get_edges_by_direction(True)) + source = graph.__class__(directed=None) + + def biological_id(vertex): + if isinstance(vertex, tuple) and len(vertex) == 2 and isinstance(vertex[1], tuple): + return str(vertex[0]) + return str(vertex) + + for edge_id in edge_ids: + edge_source, edge_target = graph.get_edge(edge_id) + sources = [biological_id(vertex) for vertex in edge_source] + targets = [biological_id(vertex) for vertex in edge_target] + if len(sources) != 1 or len(targets) != 1: + raise ValueError( + "CellNOptDAG requires signed interactions with one source and one target; " + f"AnnNet edge {edge_id!r} has {len(sources)} sources and {len(targets)} targets." + ) + source.add_edges( + sources[0], + targets[0], + edge_id=edge_id, + directed=edge_id in directed_edge_ids, + parallel="parallel", + ) + attributes = dict(graph.attrs.get_edge_attrs(edge_id)) + attributes.pop("edge_id", None) + if attributes: + source.attrs.set_edge_attrs(edge_id, **deepcopy(attributes)) + + source.uns.update(deepcopy(dict(graph.uns))) + return source + + +def build_cellnopt_from_annnet( + method: "CellNOptDAG", + graph: "AnnNet", + *, + network_slice: str | None = None, + condition_aspect: str = "condition", + condition_layers: Mapping[str, tuple[str, ...]] | None = None, + input_attr: str = "input", + inhibitor_attr: str = "inhibited", + measurement_attr: str = "observed", +) -> "ProblemDef": + """Build a CellNOptDAG problem from a signed network and data in AnnNet. + + The signed interactions are read from ``network_slice`` when supplied. + Inputs, inhibitors, and measurements are read from vertex attributes in + the condition layers. Internal graph preparation is kept inside this + integration function so that AnnNet remains the user-facing graph object. + """ + from corneto.methods.signaling import CellNOptDAG + + if not isinstance(method, CellNOptDAG): + raise TypeError("method must be a CellNOptDAG instance.") + layers = _condition_layer_map( + graph, + condition_aspect=condition_aspect, + condition_layers=condition_layers, + ) + source = _cellnopt_source_graph(graph, network_slice) + pkn = from_annnet(source) + + inputs: dict[str, dict[str, Any]] = {} + inhibitors: dict[str, dict[str, Any]] = {} + measurements: dict[str, dict[str, Any]] = {} + for condition, layer in layers.items(): + inputs[condition] = {} + inhibitors[condition] = {} + measurements[condition] = {} + for protein in graph.layers.layer_vertex_set(layer): + protein_id = str(protein[0]) if isinstance(protein, tuple) else str(protein) + attributes = graph.layers.get_vertex_layer_attrs(protein_id, layer) + if input_attr in attributes: + inputs[condition][protein_id] = attributes[input_attr] + if attributes.get(inhibitor_attr): + inhibitors[condition][protein_id] = 1 + if measurement_attr in attributes: + measurements[condition][protein_id] = attributes[measurement_attr] + + source_edge_ids = tuple(source.edges()) + source_edges = {} + for edge_id in source_edge_ids: + edge_source, edge_target = source.get_edge(edge_id) + if len(edge_source) != 1 or len(edge_target) != 1: + continue + attributes = source.attrs.get_edge_attrs(edge_id) + source_edges[edge_id] = ( + str(next(iter(edge_source))), + str(next(iter(edge_target))), + int(attributes.get("interaction", 1)), + ) + + problem = method.build_many( + pkn, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + problem._annnet_cellnopt_context = _CellNOptAnnNetContext( + condition_layers=layers, + source_edge_ids=source_edge_ids, + source_edges=source_edges, + ) + return problem + + +def _reaction_text(reaction) -> str: + literals = [str(node) for node in reaction.positive_literals] + literals.extend(f"NOT {node}" for node in reaction.negative_literals) + return f"{' AND '.join(literals)} -> {reaction.product}" + + +def add_cellnopt_results( + graph: "AnnNet", + method: "CellNOptDAG", + problem: "ProblemDef", + *, + solution: Any = None, + model_slice: str = "cellnopt_selected", + prediction_attr: str = "predicted", + activity_attr: str = "active", + measurement_attr: str = "observed", + error_attr: str = "absolute_error", +) -> dict[str, Any]: + """Add a solved CellNOptDAG model and its condition results to AnnNet. + + The selected interactions are added to ``model_slice``. Predictions are + stored on protein-layer pairs, while copies of selected interactions in + each condition layer record whether their reaction is active. + """ + context = getattr(problem, "_annnet_cellnopt_context", None) + if context is None: + raise ValueError("Build the problem with build_cellnopt_from_annnet before adding its results.") + required = ("reaction_selected", "reaction_active", "vertex_value") + missing = [name for name in required if getattr(problem.expr, name).value is None] + if missing: + raise ValueError("Solve the CellNOptDAG problem before adding results to AnnNet.") + if graph.slices.exists(model_slice): + raise ValueError(f"AnnNet slice {model_slice!r} already exists.") + + selected = np.rint(np.asarray(problem.expr.reaction_selected.value)).astype(int).reshape(-1) + activity = np.rint(np.asarray(problem.expr.reaction_active.value)).astype(int) + predictions = np.rint(np.asarray(problem.expr.vertex_value.value)).astype(int) + selected_indices = np.flatnonzero(selected) + condition_names = tuple(context.condition_layers) + vertices = [str(vertex) for vertex in method.processed_graph.V] + + graph.slices.add(model_slice, role="inferred_model", method="CellNOptDAG") + selected_source_edges = { + context.source_edge_ids[edge_index] + for reaction_index in selected_indices + for edge_index in method.reactions[reaction_index].source_edges + } + for edge_id in selected_source_edges: + graph.slices.add_edge_to_slice(model_slice, edge_id) + + result_edge_ids = [] + condition_errors = {} + for condition_index, condition in enumerate(condition_names): + layer = context.condition_layers[condition] + graph.add_vertices(vertices, layer=layer) + endpoint_error = 0.0 + for vertex_index, protein in enumerate(vertices): + predicted = float(predictions[vertex_index, condition_index]) + attributes = {prediction_attr: predicted} + existing = graph.layers.get_vertex_layer_attrs(protein, layer) + if measurement_attr in existing: + error = abs(predicted - float(existing[measurement_attr])) + attributes[error_attr] = error + endpoint_error += error + graph.layers.set_vertex_layer_attrs(protein, layer, **attributes) + + condition_edges = [] + for reaction_index in selected_indices: + reaction = method.reactions[reaction_index] + is_active = bool(activity[reaction_index, condition_index]) + for source_edge_index in reaction.source_edges: + prior_edge_id = context.source_edge_ids[source_edge_index] + source, target, interaction = context.source_edges[prior_edge_id] + condition_edges.append( + { + "source": (source, layer), + "target": (target, layer), + "edge_id": ( + f"{model_slice}__condition_{condition_index}__reaction_{reaction_index}" + f"__edge_{source_edge_index}" + ), + "interaction": interaction, + "prior_edge_id": prior_edge_id, + "reaction_index": int(reaction_index), + "reaction": _reaction_text(reaction), + "selected": True, + activity_attr: is_active, + "source_method": "CellNOptDAG", + } + ) + result_edge_ids.extend( + graph.add_edges( + condition_edges, + slice=model_slice, + default_edge_directed=True, + ) + ) + + active_count = int(activity[selected_indices, condition_index].sum()) + layer_attributes = { + "endpoint_absolute_error": float(endpoint_error), + "selected_reactions": len(selected_indices), + "active_reactions": active_count, + } + if solution is not None and getattr(solution, "status", None) is not None: + layer_attributes["solver_status"] = str(solution.status) + graph.layers.set_layer_attrs(layer, **layer_attributes) + condition_errors[condition] = endpoint_error + + graph.history.snapshot("cellnopt_results_added") + return { + "selected_reactions": len(selected_indices), + "selected_prior_edges": len(selected_source_edges), + "condition_edges": len(result_edge_ids), + "condition_errors": condition_errors, + } + + +__all__ = [ + "add_cellnopt_conditions", + "add_cellnopt_results", + "build_cellnopt_from_annnet", +] diff --git a/docs/api/corneto.methods.rst b/docs/api/corneto.methods.rst index e981e17ac..07047a2ef 100644 --- a/docs/api/corneto.methods.rst +++ b/docs/api/corneto.methods.rst @@ -43,6 +43,19 @@ network views and return Matplotlib figure/axes objects for data-fit views. signaling.plot_cellnopt_model signaling.plot_cellnopt_fit +CellNOpt and AnnNet +~~~~~~~~~~~~~~~~~~~ + +These helpers keep the signed network, perturbation conditions, and fitted +CellNOptDAG results in one AnnNet object. + +.. autosummary:: + :toctree: generated/ + + signaling.add_cellnopt_conditions + signaling.build_cellnopt_from_annnet + signaling.add_cellnopt_results + Metabolism ---------- diff --git a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb new file mode 100644 index 000000000..5846ab81c --- /dev/null +++ b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb @@ -0,0 +1,2081 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "intro", + "metadata": { + "tags": [] + }, + "source": [ + "# Fitting a multi-condition signaling network stored in AnnNet\n", + "\n", + "A signaling analysis contains more than a pathway diagram. We also need to know which proteins were stimulated or inhibited, what was measured in each condition, which interactions were selected by the model, and what the model predicts.\n", + "\n", + "In this tutorial, one AnnNet object keeps all of this information together. CORNETO provides the optimization method that fits the network.\n", + "\n", + "We will use AnnNet to hold:\n", + "\n", + "- a signed prior-knowledge network;\n", + "- nine perturbation experiments;\n", + "- the network selected by `CellNOptDAG`; and\n", + "- predicted protein and reaction activities for every condition.\n", + "\n", + "The biological question is:\n", + "\n", + "> Which routes through the candidate network are needed to explain the responses to TGFA, IGF1, and several kinase inhibitors?\n", + "\n", + "The complete analysis can be saved as one `.annnet` file and explored later without rerunning the optimization." + ] + }, + { + "cell_type": "markdown", + "id": "data-scope", + "metadata": { + "tags": [] + }, + "source": [ + "## What data are used?\n", + "\n", + "The protein names and candidate interactions come from a small part of the prior-knowledge network distributed with the [DREAM4 Predictive Signaling Network Challenge](https://pmc.ncbi.nlm.nih.gov/articles/PMC3465072/). The original challenge studied signaling responses in HepG2 cells after stimulation with ligands and treatment with kinase inhibitors.\n", + "\n", + "To keep the model easy to understand, we use a small **synthetic perturbation experiment**. Stimuli and inhibitors are binary, while the responses are normalized values between `0` and `1`. We deliberately include experimental variation, so a Boolean model is not expected to reproduce every value exactly. The example uses real pathway names, but the measurements are illustrative and are not taken from the original DREAM dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "imports", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import annnet as an\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from annnet.utils import plot as plot_annnet\n", + "from IPython.display import display\n", + "\n", + "from corneto.methods.signaling import (\n", + " CellNOptDAG,\n", + " add_cellnopt_conditions,\n", + " add_cellnopt_results,\n", + " build_cellnopt_from_annnet,\n", + " plot_cellnopt_fit,\n", + " plot_cellnopt_model,\n", + ")\n", + "\n", + "plt.rcParams.update({\"figure.dpi\": 120, \"axes.spines.top\": False, \"axes.spines.right\": False})" + ] + }, + { + "cell_type": "markdown", + "id": "network-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 1. Create the signaling network in AnnNet\n", + "\n", + "We begin with the biological network that will remain with us throughout the analysis. Each interaction has a sign: `+1` for activation and `−1` for inhibition.\n", + "\n", + "The network contains two familiar branches:\n", + "\n", + "- TGFA activates EGFR and can signal toward ERK1/2 and HSP27;\n", + "- IGF1 activates IGFR and can signal toward PI3K and AKT.\n", + "\n", + "We also include several possible shortcuts and alternative routes. They are candidates that CORNETO may select if they help explain the experiments.\n", + "\n", + "The interactions are placed in an AnnNet slice called `prior`. A slice is a named selection within a network. Later, another slice will identify the interactions selected by CellNOptDAG, while the original candidate network remains available." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "create-network", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AnnNet contains 21 proteins and 25 signed interactions\n" + ] + } + ], + "source": [ + "display_name = {\n", + " \"tgfa\": \"TGFA\", \"egfr\": \"EGFR\", \"grb2\": \"GRB2\", \"shc\": \"SHC\",\n", + " \"sos\": \"SOS\", \"ras\": \"RAS\", \"raf1\": \"RAF1\", \"mek12\": \"MEK1/2\",\n", + " \"erk12\": \"ERK1/2\", \"prak\": \"PRAK\", \"hsp27\": \"HSP27\", \"pi3k\": \"PI3K\",\n", + " \"pip3\": \"PIP3\", \"pdk1\": \"PDK1\", \"akt\": \"AKT\", \"igf1\": \"IGF1\",\n", + " \"igfr\": \"IGFR\", \"irs1\": \"IRS1\", \"map3k1\": \"MAP3K1\", \"mkk4\": \"MKK4\",\n", + " \"p38\": \"p38\",\n", + "}\n", + "\n", + "pkn_edges = [\n", + " (\"tgfa\", 1, \"egfr\"), (\"egfr\", 1, \"grb2\"), (\"egfr\", 1, \"shc\"),\n", + " (\"shc\", 1, \"grb2\"), (\"grb2\", 1, \"sos\"), (\"sos\", 1, \"ras\"),\n", + " (\"ras\", 1, \"raf1\"), (\"raf1\", 1, \"mek12\"), (\"mek12\", 1, \"erk12\"),\n", + " (\"erk12\", 1, \"prak\"), (\"prak\", 1, \"hsp27\"), (\"egfr\", 1, \"pi3k\"),\n", + " (\"ras\", 1, \"pi3k\"), (\"pi3k\", 1, \"pip3\"), (\"pip3\", 1, \"pdk1\"),\n", + " (\"pdk1\", 1, \"akt\"), (\"igf1\", 1, \"igfr\"), (\"igfr\", 1, \"irs1\"),\n", + " (\"irs1\", 1, \"pi3k\"), (\"igfr\", 1, \"shc\"), (\"ras\", 1, \"map3k1\"),\n", + " (\"map3k1\", 1, \"mkk4\"), (\"mkk4\", 1, \"p38\"), (\"p38\", 1, \"prak\"),\n", + " (\"akt\", -1, \"raf1\"),\n", + "]\n", + "\n", + "signaling = an.AnnNet(directed=True)\n", + "signaling.history.enable(True)\n", + "signaling.slices.add(\"prior\", role=\"prior_knowledge\")\n", + "signaling.add_vertices(sorted(display_name))\n", + "\n", + "for protein, label in display_name.items():\n", + " signaling.attrs.set_vertex_attrs(protein, label=label, entity_type=\"protein\")\n", + "\n", + "prior_edge_ids = []\n", + "for index, (source, sign, target) in enumerate(pkn_edges):\n", + " edge_id = f\"liverdream_{index:02d}\"\n", + " signaling.add_edges(\n", + " source,\n", + " target,\n", + " edge_id=edge_id,\n", + " slice=\"prior\",\n", + " directed=True,\n", + " parallel=\"parallel\",\n", + " )\n", + " signaling.attrs.set_edge_attrs(\n", + " edge_id,\n", + " interaction=sign,\n", + " source_dataset=\"LiverDREAM\",\n", + " )\n", + " prior_edge_ids.append(edge_id)\n", + "\n", + "signaling.uns.update(\n", + " {\n", + " \"title\": \"LiverDREAM-derived signaling example\",\n", + " \"pkn_source\": \"DREAM4 Predictive Signaling Network Challenge\",\n", + " \"data_scope\": \"Synthetic normalized signaling responses for software demonstration\",\n", + " }\n", + ")\n", + "signaling.history.snapshot(\"prior_loaded\")\n", + "\n", + "print(f\"AnnNet contains {signaling.nv} proteins and {signaling.ne} signed interactions\")" + ] + }, + { + "cell_type": "markdown", + "id": "network-plot-text", + "metadata": { + "tags": [] + }, + "source": [ + "### Inspect the candidate network\n", + "\n", + "AnnNet draws the signed network directly. Arrowheads show activation, while a bar indicates inhibition." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "network-plot", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt\n", + "\n", + "AKT\n", + "\n", + "\n", + "\n", + "raf1\n", + "\n", + "RAF1\n", + "\n", + "\n", + "\n", + "akt->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr\n", + "\n", + "EGFR\n", + "\n", + "\n", + "\n", + "grb2\n", + "\n", + "GRB2\n", + "\n", + "\n", + "\n", + "egfr->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k\n", + "\n", + "PI3K\n", + "\n", + "\n", + "\n", + "egfr->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc\n", + "\n", + "SHC\n", + "\n", + "\n", + "\n", + "egfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12\n", + "\n", + "ERK1/2\n", + "\n", + "\n", + "\n", + "prak\n", + "\n", + "PRAK\n", + "\n", + "\n", + "\n", + "erk12->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos\n", + "\n", + "SOS\n", + "\n", + "\n", + "\n", + "grb2->sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hsp27\n", + "\n", + "HSP27\n", + "\n", + "\n", + "\n", + "igf1\n", + "\n", + "IGF1\n", + "\n", + "\n", + "\n", + "igfr\n", + "\n", + "IGFR\n", + "\n", + "\n", + "\n", + "igf1->igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1\n", + "\n", + "IRS1\n", + "\n", + "\n", + "\n", + "igfr->irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1\n", + "\n", + "MAP3K1\n", + "\n", + "\n", + "\n", + "mkk4\n", + "\n", + "MKK4\n", + "\n", + "\n", + "\n", + "map3k1->mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12\n", + "\n", + "MEK1/2\n", + "\n", + "\n", + "\n", + "mek12->erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38\n", + "\n", + "p38\n", + "\n", + "\n", + "\n", + "mkk4->p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1\n", + "\n", + "PDK1\n", + "\n", + "\n", + "\n", + "pdk1->akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3\n", + "\n", + "PIP3\n", + "\n", + "\n", + "\n", + "pi3k->pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3->pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak->hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1->mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras\n", + "\n", + "RAS\n", + "\n", + "\n", + "\n", + "ras->map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos->ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa\n", + "\n", + "TGFA\n", + "\n", + "\n", + "\n", + "tgfa->egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_annnet(\n", + " signaling,\n", + " backend=\"graphviz\",\n", + " layout=\"dot\",\n", + " vertex_label_key=\"label\",\n", + " use_weight_style=False,\n", + " graph_attr={\"rankdir\": \"LR\", \"size\": \"12,7\"},\n", + " node_attr={\"shape\": \"ellipse\", \"style\": \"filled\", \"fillcolor\": \"#eef4fb\"},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "conditions-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 2. Add the perturbation experiments to AnnNet\n", + "\n", + "Each condition records which ligands are present, which internal proteins are inhibited, and the measured activity of ERK1/2, AKT, and HSP27.\n", + "\n", + "The conditions were chosen to distinguish alternative explanations:\n", + "\n", + "- **TGFA with RAS inhibition** tests whether TGFA reaches PI3K through RAS or through the shorter candidate edge from EGFR to PI3K.\n", + "- **TGFA with MEK inhibition** blocks the ERK1/2–HSP27 branch while leaving the route to AKT available.\n", + "- **IGF1 alone** supports the route from IGFR through IRS1 to PI3K and AKT.\n", + "- **IGF1 with PI3K inhibition** tests whether the AKT response depends on PI3K, PIP3, and PDK1.\n", + "\n", + "We store every condition as an AnnNet layer. Inputs, inhibitors, and measurements become attributes of the corresponding protein in that layer." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "condition-data", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Condition layers: ['Basal', 'TGFA', 'TGFA + EGFRi', 'TGFA + RASi', 'TGFA + MEKi', 'IGF1', 'IGF1 + PI3Ki', 'TGFA + IGF1', 'Dual + MEKi']\n" + ] + } + ], + "source": [ + "inputs = {\n", + " \"Basal\": {\"tgfa\": 0, \"igf1\": 0},\n", + " \"TGFA\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + EGFRi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + RASi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + MEKi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"IGF1\": {\"tgfa\": 0, \"igf1\": 1},\n", + " \"IGF1 + PI3Ki\": {\"tgfa\": 0, \"igf1\": 1},\n", + " \"TGFA + IGF1\": {\"tgfa\": 1, \"igf1\": 1},\n", + " \"Dual + MEKi\": {\"tgfa\": 1, \"igf1\": 1},\n", + "}\n", + "measurements = {\n", + " \"Basal\": {\"erk12\": 0.05, \"akt\": 0.08, \"hsp27\": 0.04},\n", + " \"TGFA\": {\"erk12\": 0.90, \"akt\": 0.85, \"hsp27\": 0.80},\n", + " \"TGFA + EGFRi\": {\"erk12\": 0.10, \"akt\": 0.15, \"hsp27\": 0.08},\n", + " \"TGFA + RASi\": {\"erk12\": 0.15, \"akt\": 0.25, \"hsp27\": 0.12},\n", + " \"TGFA + MEKi\": {\"erk12\": 0.20, \"akt\": 0.75, \"hsp27\": 0.18},\n", + " \"IGF1\": {\"erk12\": 0.12, \"akt\": 0.88, \"hsp27\": 0.10},\n", + " \"IGF1 + PI3Ki\": {\"erk12\": 0.10, \"akt\": 0.20, \"hsp27\": 0.10},\n", + " \"TGFA + IGF1\": {\"erk12\": 0.92, \"akt\": 0.90, \"hsp27\": 0.85},\n", + " \"Dual + MEKi\": {\"erk12\": 0.20, \"akt\": 0.82, \"hsp27\": 0.15},\n", + "}\n", + "inhibitors = {condition: {} for condition in inputs}\n", + "inhibitors[\"TGFA + EGFRi\"] = {\"egfr\": 1}\n", + "inhibitors[\"TGFA + RASi\"] = {\"ras\": 1}\n", + "inhibitors[\"TGFA + MEKi\"] = {\"mek12\": 1}\n", + "inhibitors[\"IGF1 + PI3Ki\"] = {\"pi3k\": 1}\n", + "inhibitors[\"Dual + MEKi\"] = {\"mek12\": 1}\n", + "\n", + "condition_layers = add_cellnopt_conditions(\n", + " signaling,\n", + " inputs=inputs,\n", + " inhibitors=inhibitors,\n", + " measurements=measurements,\n", + ")\n", + "signaling.history.snapshot(\"conditions_added\")\n", + "\n", + "print(\"Condition layers:\", list(condition_layers))" + ] + }, + { + "cell_type": "markdown", + "id": "condition-inspect", + "metadata": { + "tags": [] + }, + "source": [ + "The AnnNet object now contains both the pathway and the experiment. The following small display helper reads selected protein attributes across its condition layers. It is independent of CellNOptDAG and is used only to make compact tables in this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "layer-table-helper", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def vertex_layer_table(network, layers, columns):\n", + " \"\"\"Return selected vertex-layer attributes as a pandas table.\"\"\"\n", + " rows = {}\n", + " for condition, layer in layers.items():\n", + " rows[condition] = {\n", + " label: network.layers.get_vertex_layer_attrs(protein, layer).get(attribute, np.nan)\n", + " for label, (protein, attribute) in columns.items()\n", + " }\n", + " return pd.DataFrame.from_dict(rows, orient=\"index\").rename_axis(\"condition\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "experiment-table", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TGFAIGF1EGFR inhibitedRAS inhibitedMEK inhibitedPI3K inhibitedERK1/2 observedAKT observedHSP27 observed
condition
Basal000.00.00.00.00.050.080.04
TGFA100.00.00.00.00.900.850.80
TGFA + EGFRi101.00.00.00.00.100.150.08
TGFA + RASi100.01.00.00.00.150.250.12
TGFA + MEKi100.00.01.00.00.200.750.18
IGF1010.00.00.00.00.120.880.10
IGF1 + PI3Ki010.00.00.01.00.100.200.10
TGFA + IGF1110.00.00.00.00.920.900.85
Dual + MEKi110.00.01.00.00.200.820.15
\n", + "
" + ], + "text/plain": [ + " TGFA IGF1 EGFR inhibited RAS inhibited MEK inhibited \\\n", + "condition \n", + "Basal 0 0 0.0 0.0 0.0 \n", + "TGFA 1 0 0.0 0.0 0.0 \n", + "TGFA + EGFRi 1 0 1.0 0.0 0.0 \n", + "TGFA + RASi 1 0 0.0 1.0 0.0 \n", + "TGFA + MEKi 1 0 0.0 0.0 1.0 \n", + "IGF1 0 1 0.0 0.0 0.0 \n", + "IGF1 + PI3Ki 0 1 0.0 0.0 0.0 \n", + "TGFA + IGF1 1 1 0.0 0.0 0.0 \n", + "Dual + MEKi 1 1 0.0 0.0 1.0 \n", + "\n", + " PI3K inhibited ERK1/2 observed AKT observed HSP27 observed \n", + "condition \n", + "Basal 0.0 0.05 0.08 0.04 \n", + "TGFA 0.0 0.90 0.85 0.80 \n", + "TGFA + EGFRi 0.0 0.10 0.15 0.08 \n", + "TGFA + RASi 0.0 0.15 0.25 0.12 \n", + "TGFA + MEKi 0.0 0.20 0.75 0.18 \n", + "IGF1 0.0 0.12 0.88 0.10 \n", + "IGF1 + PI3Ki 1.0 0.10 0.20 0.10 \n", + "TGFA + IGF1 0.0 0.92 0.90 0.85 \n", + "Dual + MEKi 0.0 0.20 0.82 0.15 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "experiment_columns = {\n", + " \"TGFA\": (\"tgfa\", \"input\"),\n", + " \"IGF1\": (\"igf1\", \"input\"),\n", + " \"EGFR inhibited\": (\"egfr\", \"inhibited\"),\n", + " \"RAS inhibited\": (\"ras\", \"inhibited\"),\n", + " \"MEK inhibited\": (\"mek12\", \"inhibited\"),\n", + " \"PI3K inhibited\": (\"pi3k\", \"inhibited\"),\n", + " \"ERK1/2 observed\": (\"erk12\", \"observed\"),\n", + " \"AKT observed\": (\"akt\", \"observed\"),\n", + " \"HSP27 observed\": (\"hsp27\", \"observed\"),\n", + "}\n", + "experiment = vertex_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", + "experiment" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "experiment-plot", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 4.8))\n", + "matrix = experiment.to_numpy(dtype=float)\n", + "ax.imshow(matrix, cmap=\"Blues\", vmin=0, vmax=1, aspect=\"auto\")\n", + "ax.set_xticks(range(experiment.shape[1]), experiment.columns, rotation=45, ha=\"right\")\n", + "ax.set_yticks(range(experiment.shape[0]), experiment.index)\n", + "for row, column in np.ndindex(matrix.shape):\n", + " ax.text(column, row, f\"{matrix[row, column]:.2g}\", ha=\"center\", va=\"center\", fontsize=8)\n", + "ax.set_title(\"Perturbations and measurements stored in the AnnNet condition layers\")\n", + "ax.set_xlabel(\"Experimental variable\")\n", + "ax.set_ylabel(\"Condition\")\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "fit-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 3. Fit the network with CORNETO\n", + "\n", + "CORNETO reads the signed interactions and experimental conditions stored in AnnNet. CellNOptDAG searches for one set of reactions that explains all nine experiments. The selected reactions are shared across the experiment, although their activity can change from one condition to another.\n", + "\n", + "CellNOptDAG predicts an inactive or active state for each protein, whereas the synthetic measurements vary continuously between `0` and `1`. It therefore searches for the binary response pattern that is closest to the observations rather than expecting a perfect numerical match.\n", + "\n", + "We use a small value of `lambda_reg`. Reducing disagreement with the measurements is the first priority; when two models perform equally well, this value favors the model with fewer reactions." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fit-model", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Solver status: optimal\n", + "Total absolute error: 3.70\n", + "Mean absolute error per measurement: 0.14\n" + ] + } + ], + "source": [ + "method = CellNOptDAG(lambda_reg=1e-3)\n", + "problem = build_cellnopt_from_annnet(\n", + " method,\n", + " signaling,\n", + " network_slice=\"prior\",\n", + " condition_layers=condition_layers,\n", + ")\n", + "solution = problem.solve(solver=\"SCIPY\")\n", + "\n", + "total_error = float(problem.objectives[0].value)\n", + "number_of_measurements = sum(len(values) for values in measurements.values())\n", + "\n", + "print(\"Solver status:\", solution.status)\n", + "print(f\"Total absolute error: {total_error:.2f}\")\n", + "print(f\"Mean absolute error per measurement: {total_error / number_of_measurements:.2f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "fit-result-text", + "metadata": { + "tags": [] + }, + "source": [ + "### Which routes were selected?\n", + "\n", + "The fitted network keeps both stimulus-to-readout branches. It also keeps `RAS → PI3K`, which helps explain why TGFA produces a strong AKT response while RAS inhibition strongly reduces it.\n", + "\n", + "The direct shortcut `EGFR → PI3K` is not selected. If it were present, PI3K could remain active after RAS inhibition, making the low AKT measurement harder to explain. The candidate routes from IGFR to ERK1/2 and from RAS through p38 to HSP27 are also unnecessary for this fit.\n", + "\n", + "An interaction that is not selected should not be interpreted as biologically false. It was available in the candidate network, but this experiment can be explained without it." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fit-plots", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa\n", + "\n", + "\n", + "tgfa\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr\n", + "\n", + "\n", + "egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa->egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "grb2\n", + "\n", + "\n", + "grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc\n", + "\n", + "\n", + "shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k\n", + "\n", + "\n", + "pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos\n", + "\n", + "\n", + "sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "grb2->sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras\n", + "\n", + "\n", + "ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos->ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1\n", + "\n", + "\n", + "raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1\n", + "\n", + "\n", + "map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12\n", + "\n", + "\n", + "mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1->mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12\n", + "\n", + "\n", + "erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12->erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak\n", + "\n", + "\n", + "prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hsp27\n", + "\n", + "\n", + "hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak->hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3\n", + "\n", + "\n", + "pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k->pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1\n", + "\n", + "\n", + "pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3->pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt\n", + "\n", + "\n", + "akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1->akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igf1\n", + "\n", + "\n", + "igf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr\n", + "\n", + "\n", + "igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igf1->igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1\n", + "\n", + "\n", + "irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mkk4\n", + "\n", + "\n", + "mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1->mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38\n", + "\n", + "\n", + "p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mkk4->p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "(
,\n", + " array([,\n", + " ,\n", + " ,\n", + " ], dtype=object))" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Lhg19OLQgeoP1eWSSy6xcfFf//qX/cJXk5lXsbCw0B6zv8tJAzjwunfvbuOsSayYypu6ktpm6O0pp5zivzhmLpibob01+zEm1vmG49Z222232TZMvA1VPWkS2b75xnyxNVTsDBXn0Uj7uboYIohZKvm2226zS/WZ5ZB//vOfe++8807vrbfe6h09erTdn5iY6H3rrbdCLgc4fvx4+7jzzjvP+7vf/c576qmn2v1ZWVkBy4s+/vjjdgnZsWPH2qWfzbGXXnqpXe45KirK+/bbbwec/6GHHrLHJyUlec8991zvHXfcYZcnNec3y6uapaIbulxrTd99951/uVpz++6774Y8rqCgwC73bo7p06eP94orrvD+9re/9f7f//2f99BDD7X7ay4PbZamPv300+3+Xr162ff0pptu8nbo0MG/nyXigYYvEb83oZaIN2bOnGmXNzZxxSxXamKNWY7U/G72m/trL0fas2dPe64jjzzSfs7NEtJmmXffZ7f2Uqlm2XoTF8x9Zkn4a6+91sbNiy++2Dt48GC7f8aMGf7jWSIe4cy3ZLBZArw+Zgl283fb/N3zLdnuWx7YfJZMX8J8tsxnzHzWzP7u3bvbJd19brnlFtunMMuXX3fddfZY078wn8f4+Hjv9OnT/cdWVFT4zzNo0CDbT/jVr37lbdu2rd1nPpO1n1+oJeJN+2Y5d3Of6WPcfvvt9vmafsI555wTMs6Y52X2H3300d4//OEP3gceeMA7ceJE//1ffvmljTfm/TjhhBPs6zL9KnO+jh072tfSUE3dH9rb/U8++aR9beb5m/6aea1miXqzr3///t7du3eHXCIewMHp/vvvt30g8zk94ogjvDfffLP37rvvtp9vX19m1KhR/uP/+Mc/2n0mVpmYamKx6SeZeGv2hYofN9xwg//730UXXeS96667vNdcc42Nf3FxcfYcPqbflJ6e7j3jjDNsbDQxzbecvTl3bm5us703rQ2RGI32ww8/2ASH6ZCZzpbpWJhO1W9+8xv7hae2ml9qPvroI5swMR0U86E2X7iWL18ecPySJUtsB2jkyJHenJwcGxDMB910iKZNm1ZnwsZ0/kyH0nTGzONM4DDnmT179j4lgYzevXv7A5XpRNbF3Pevf/3Ldn5Msso85y5duthAZZJau3btCjreBNoePXr4X58JsuXl5SSBgGZKAhnLli3z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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(plot_cellnopt_model(method, show_unselected=True))\n", + "plot_cellnopt_fit(method, view=\"heatmap\")" + ] + }, + { + "cell_type": "markdown", + "id": "annotate-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 4. Add the fitted model to AnnNet\n", + "\n", + "The optimization is complete, but the AnnNet object does not yet contain the inferred results. One signaling-specific CORNETO helper adds them:\n", + "\n", + "- selected interactions are added to a slice called `cellnopt_selected`;\n", + "- predicted protein activities are added to each condition layer;\n", + "- selected reactions are marked as active or inactive in each condition; and\n", + "- fitting summaries are attached to the corresponding layers.\n", + "\n", + "This helper works from CellNOptDAG variables and standard AnnNet attributes. It does not contain any LiverDREAM-specific proteins or conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "annotate-results", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "selected reactions 16.0\n", + "selected prior interactions 16.0\n", + "condition-specific interaction records 144.0\n", + "total absolute error 3.7\n", + "Name: stored CellNOptDAG results, dtype: float64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result_summary = add_cellnopt_results(\n", + " signaling,\n", + " method,\n", + " problem,\n", + " solution=solution,\n", + ")\n", + "\n", + "pd.Series(\n", + " {\n", + " \"selected reactions\": result_summary[\"selected_reactions\"],\n", + " \"selected prior interactions\": result_summary[\"selected_prior_edges\"],\n", + " \"condition-specific interaction records\": result_summary[\"condition_edges\"],\n", + " \"total absolute error\": sum(result_summary[\"condition_errors\"].values()),\n", + " },\n", + " name=\"stored CellNOptDAG results\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "questions-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 5. Explore the complete analysis in AnnNet\n", + "\n", + "AnnNet now contains the candidate pathway, all experimental conditions, and the fitted results. We can answer biological questions from this object instead of combining solver variables with separate dictionaries.\n", + "\n", + "### Which candidate interactions belong to the fitted model?\n", + "\n", + "The `prior` and `cellnopt_selected` slices can be compared without losing either version of the pathway." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "selected-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcesigntarget
0TGFAactivatesEGFR
1EGFRactivatesGRB2
2GRB2activatesSOS
3SOSactivatesRAS
4RASactivatesRAF1
5RAF1activatesMEK1/2
6MEK1/2activatesERK1/2
7ERK1/2activatesPRAK
8PRAKactivatesHSP27
9RASactivatesPI3K
10PI3KactivatesPIP3
11PIP3activatesPDK1
12PDK1activatesAKT
13IGF1activatesIGFR
14IGFRactivatesIRS1
15IRS1activatesPI3K
\n", + "
" + ], + "text/plain": [ + " source sign target\n", + "0 TGFA activates EGFR\n", + "1 EGFR activates GRB2\n", + "2 GRB2 activates SOS\n", + "3 SOS activates RAS\n", + "4 RAS activates RAF1\n", + "5 RAF1 activates MEK1/2\n", + "6 MEK1/2 activates ERK1/2\n", + "7 ERK1/2 activates PRAK\n", + "8 PRAK activates HSP27\n", + "9 RAS activates PI3K\n", + "10 PI3K activates PIP3\n", + "11 PIP3 activates PDK1\n", + "12 PDK1 activates AKT\n", + "13 IGF1 activates IGFR\n", + "14 IGFR activates IRS1\n", + "15 IRS1 activates PI3K" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selected_prior_ids = set(prior_edge_ids) & set(signaling.slices.edges(\"cellnopt_selected\"))\n", + "selected_rows = []\n", + "for edge_id in prior_edge_ids:\n", + " if edge_id not in selected_prior_ids:\n", + " continue\n", + " sources, targets = signaling.get_edge(edge_id)\n", + " source_node = next(iter(sources))\n", + " target_node = next(iter(targets))\n", + " source = source_node[0] if isinstance(source_node, tuple) else source_node\n", + " target = target_node[0] if isinstance(target_node, tuple) else target_node\n", + " sign = signaling.attrs.get_edge_attrs(edge_id)[\"interaction\"]\n", + " selected_rows.append(\n", + " {\n", + " \"source\": display_name[source],\n", + " \"sign\": \"activates\" if sign == 1 else \"inhibits\",\n", + " \"target\": display_name[target],\n", + " }\n", + " )\n", + "\n", + "pd.DataFrame(selected_rows)" + ] + }, + { + "cell_type": "markdown", + "id": "akt-question", + "metadata": { + "tags": [] + }, + "source": [ + "### How does AKT respond across the experiment?\n", + "\n", + "Observed and predicted AKT values are attributes of the same protein in different AnnNet layers. Reading them side by side shows both the perturbation response and the quality of the fit." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "akt-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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lStX2kcffeSCg/r7tNP+71pTel9f82fPnu22mV5f3Xm0jlesWOH+1smQqM6M1+1T68ArgOzdZ9T6V3aD3pf2OQVpFExatGiRe021KeE+4unfv7/bt7SPKViq/UpB37Vr17rHB3r//ffd/qoTa91r3/ryyy/tiiuucEHG9Ljllltc+xRAypkzp1unOtH/7rvv3DYODGSIjhUFMnQirhN7vWcF0EQnuNpWOgnVSbpOahUIev311932//bbb4OOLe0zClToRFrPpUDNjz/+6PaHBg0apPo96PHarxWo02vqGNWx7R3zV111lTt579u3r9sXPv/8c+vUqVOa6tUoS0SBJ+1Xen69f2WHarq2nwIYWn+B9NmhbapAnPZT1cjT62tf0T6mfdOjz1EF7RTE076g19m2bZv9/PPPbr327t071W3VfqJglHdseMGSzP4sy8htqnWjdiuQrKCUF4BMGIh87rnn3LrX+1KA0Qvi6vjVdte61+u2a9fONm3aZO+9957NnTvXZsyYETILKaM+11Ki11FQV8eLgnz6jurTp4+98cYbrgt7UrTN9Dmubat9XNvi6aefdvtKqACTgkAKHuozQ8e49jvtH127dnXt1XEQigJkWveqEalgnALfKRk6dKjbblpW66948eJu/1VXfrVT37tqs447LffCCy+4x+m49NANH0CW4gMAZAlPPfWULuX7hg8f7p920UUX+bJly+b7448/Ei0/ceJEt3zTpk19tWrVcn/37NnTd/z48RRfq1OnTm55PUda/fXXX+6xuj355JNB84YOHeqmFypUyNerVy/fiRMn/PPefPNNN69v375Bjxk8eLCbfvfddwe1XX937drVzZs1a1bQY9auXZuoXUeOHPE1aNDAlyNHDt/mzZv901988UX3HC+88EKix+zfv9938ODBRG1ZvHhxku9b6y7UuixVqpTvzz//TPS4unXrum04bdq0oOn//fefr2bNmr48efL4tm7dmmi7Zs+e3bdkyRL/dK3LRo0a+dfvlClTgp4vqXV1Kq+/YMGCoMc89NBDbt7IkSNDrgOto4TSsv6TE2qba5107NjRPf+3334bsk1lypTxbdiwwT/92LFjvquvvtrNW7ZsmX/6vn37fIULF3b7z4oVK4KeS/ust8+Heo+haL1r+fPOO8+3a9cu//RDhw75Lr/8cjdPx0Qg7zVuv/12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bQkAAAAAAABiXrqHvLv//vutffv2Ied16NDB+vXrdyrtAgAAAAAAQAxKdzDqww8/dDWkQtH02bNnn0q7AAAAAAAAEIPSHYzasmWLnXPOOSHnlStXzjZv3nwq7QIAAAAAAEAMSncwKl++fLZp06aQ8zZu3Gh58uQ5lXYBAAAAAAAgBqU7GKVR9Z577jk7duxY0HT9f9SoUVanTp2MaB8AAAAAAABiSLpH03v00UftmmuusWrVqlm3bt2sdOnSrmveG2+8YRs2bLBXXnklY1sKAAAAAACA+A1G1a5d2xUxv+uuu+yhhx7yTz/33HPd9Msuuyyj2ggAAAAAAIB4D0ZJkyZNbO3atfbHH3/Y9u3brVixYnbeeedlXOsAAAAAAAAQU04pGOVRAIogFAAAAAAAADI9GLVq1Sr79ddf7dChQ4nmdezY8VSfHgAAAAAAADEk3cGogwcP2o033miLFi2ybNmymc/nc9P1t4dgFAAAAAAAAAKdZun0xBNP2Pr16+3zzz93gaiZM2fa/PnzrXXr1q7L3g8//JCu592/f7/17dvXSpUqZXny5LFatWrZ9OnTU/342bNnW926de3MM8+0fPnyWdWqVe3VV19NV1sAAAAAAACQRYJRCvoMGDDA6tSp4/5ftmxZa9iwob333nt20UUX2bhx49L1vApmTZ482QYPHmwff/yxXXrppdauXTubOnVqio8dMWKEe3y1atXs3XffdaP69e7d244ePZqutgAAAAAAACCLdNNTVlTlypUte/bsrmueuu152rdvb926dbNXXnklTc85b948l12lwJMCUFK/fn3bsGGD9evXz9q2beteL5Tvv//eBg4caE899ZT179/fP10BMgAAAAAAAER5ZlTBggXtwIED7u/ixYvbH3/84Z937Ngx/7y0+OCDDyx//vzWpk2boOldunSxv//+25YtW5bkY19++WXLnTu33XPPPWl+XQAAAAAAAGTxYFT16tXt999/92cvDR8+3L788ktbvny5DR061GrWrJmukfmqVKliOXIEJ2zVqFHDPz8pS5cudY+dMWOGVapUyWVQnX322fbQQw/RTQ8AAAAAACDau+mpG56XDTVs2DC76qqrXOFwL2tKXe7SaufOnVahQoVE0wsXLuyfn5QtW7bY9u3brU+fPq64+gUXXGALFy50daQ2bdpkb7/9drKvvW3bNvf4QGvXrk3zewAAAAAAAEAmBKNuueUW/9/ly5d3WVKLFi1y9aNU1NwLIKWVHp+eeSdPnrR9+/bZtGnT7NZbb/VnbKm74AsvvGCPP/64VaxYMcnHjx071i0DAAAAAACALNhNL6F8+fJZ8+bN7YYbbkh3IKpIkSIhs5927drl7pN7Xj1WmjRpEjS9WbNm7v6HH35I9rU16p66AQbeZs2ala73AQAAAAAAgAzOjMoMqkOlzKbjx48H1Y1auXKlu69WrVqSj1Vdqa1btyaa7vP53P1ppyUfd1MRdt0AAAAAAAAQBZlRGaFVq1a2f/9+V4Q80OTJk61UqVJWu3btJB970003ufuPP/44aLpqVykQdemll2ZSqwEAAAAAABCVmVHqUte4cWO78847be/eva7GkzKlPvnkE5syZYobIc8rnq4A1bp166xcuXJuWpcuXWz8+PGuu92OHTtcAfMFCxbYmDFj3DRvOQAAAAAAAEROlgpGycyZM23gwIE2aNAgVyuqcuXKQUXJ5cSJE+7mdcGTnDlz2vz58+2RRx6x4cOHu8eqsLpG07v//vsj9G4AAAAAAACQpYNR+fPnt9GjR7tbUiZNmuRuCanA+SuvvOJuAAAAAAAAyHqyVM0oAAAAAAAAxLZ0B6OOHTtmTz75pKvNlC9fPlfPKfAWOBoeAAAAAAAAIOmOGD388MM2atQoV3S8ZcuWljt3btYoAAAAAAAAMicY9e6777oi44MHD07vUwAAAAAAACDOpLub3n///WfXXHNNxrYGAAAAAAAAMS3dwSgFon788ceMbQ0AAAAAAABiWrqDUS+++KJNmDDBZs6caUePHs3YVgEAAAAAACAmpbtmVK1atdyIem3atLFs2bJZ3rx5g+Zr2p49ezKijQAAAAAAAIj3YNRNN93kAk4AAAAAAABApgejJk2alN6HAgAAAAAAIE6lu2YUAAAAAAAAELbMKM+qVavs119/tUOHDiWa17Fjx1N9egAAAAAAAMSQdAejDh48aDfeeKMtWrTI1Y7y+XxuemAdKYJRAAAAAAAAyJBuek888YStX7/ePv/8cxeImjlzps2fP99at25t5513nv3www/pfWoAAAAAAADEqHQHo2bPnm0DBgywOnXquP+XLVvWGjZsaO+9955ddNFFNm7cuIxsJwAAAAAAAOI5GKWsqMqVK1v27Nld1zx12/O0b9/eZs2alVFtBAAAAAAAQLwHowoWLGgHDhxwfxcvXtz++OMP/7xjx4755wEAAAAAAACnHIyqXr26/f777+7v+vXr2/Dhw+3LL7+05cuX29ChQ61mzZrpfWoAAAAAAADEqHSPptetWzd/NtSwYcPsqquusrp16/qzpubNm5dxrQQAAAAAAEB8B6NuueUW/9/ly5d3WVKLFi1y9aNU1Lxw4cIZ1UYAAAAAAADEezAqoXz58lnz5s0z6ukAAAAAAAAQg9JdM0qOHDli48ePt3bt2lnjxo393fZmz55tf/75Z0a1EQAAAAAAAPGeGbVjxw5XuPyXX36xkiVL2r///mv79u1z82bNmmWffvqpjR07NiPbCgAAAAAAgHjNjOrfv7/t3r3bvvvuO9u4caP5fD7/PAWpPv/884xqIwAAAAAAAOI9M2rOnDk2cuRIu+iii+zEiRNB884++2zbvHlzRrQPAAAAAAAAMSTdmVF79+61cuXKhZx37NgxO378+Km0CwAAAAAAADEo3cGo8uXL2zfffBNy3vLly61SpUqn0i4AAAAAAADEoHQHo9q3b++66WnkPK9eVLZs2WzFihU2evRou/322zOynQAAAAAAAIjnmlEDBgywr776ylq1amWFChVy05o0aWI7d+60pk2b2r333puR7QQAAAAAAEA8B6Ny5sxp8+bNs3feecfmzp1r//77rxUtWtRuuOEGu/XWW+2009KddAUAAAAAAIAYdUoRI3XLU+Dprbfess8++8ymTp1qt9122ykFovbv3299+/a1UqVKWZ48eaxWrVo2ffr0ND/Po48+6tpXrVq1dLcFAAAAAAAAWSQzKrO0bt3a1Z0aMWKEnX/++S7A1a5dOzt58qQLdKXGjz/+aM8++6yVKFEi09sLAAAAAACATApGNWjQINXLKitp4cKFaXl61+1v/vz5/gCU1K9f3zZs2GD9+vWztm3bWvbs2ZN9juPHj1uXLl2sV69e9tNPP9mOHTvS1AYAAAAAAABknjT1p1N2kkbOS81Ny6bVBx98YPnz57c2bdoETVdw6e+//7Zly5al+BzKqNq1a5cNGzYsza8PAAAAAACALJQZtWTJksxriZmtWrXKqlSpYjlyBDerRo0a/vl16tRJ8vGrV6+2J5980mbOnOmCWgAAAAAAAMhaslTNqJ07d1qFChUSTS9cuLB/flKUidW1a1dX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aIXopJPVCRMm2LRp06xu3bp2991327XXXmszZ84kEBVj+vbta7/++muKy6kIrgajQPS6/PLL3TH85ZdfWtWqVV0gqnPnzlz8jREaYODIkSORbgbCTOfSqvn29ttvW5UqVWzhwoVusCgkj2AUbO3ate6LUaOvia7SeIUWlVXx6quvspaikEbp2Llzp///Gq1DmW4rV64MWk6R++effz4CLURGSqoQJgUyY0vDhg3tueees40bN7qAk47d7Nmzu+GFA6l4qgJXiH66yqqCxhoxsXHjxvbhhx+6YcMBRBdlq3o3BRVffPFFd9HwxhtvdAGp//77L2gZRG/2208//eT/vy4YdezY0Q02gthSo0aNoNsnn3ziputYVsZ64LyaNWtGurlZUugxCBFXvKEoddJ65pln2ubNm/3zNDy8hhJHbAg10gNip0uPF1BO2PUjcLqO8z179oS5dcjIK28avaV8+fJuuyrIrFGXEgae3nnnHbvqqqtY8VFKWcmhAsnKpND3ciCO6dgwb948d8zqdxhik47dUMe1Asy6JaTPd0T/b+2TJ0/alClTXPZjuXLlItYuZLzChQsnOqaVxYzUIxgFly2jmjNy6aWX2muvvea6BuhER1lRqk8AIOvy6skg9qmWn7Ke9NmsK+dXXHGFG1I4kGrCXXnlldahQ4eItROn5qabbiKrMc40b97cdbu97LLL/Cew9erVc9009TsN0W/QoEEc10AMWbJkSaSbEPUIRsF171i6dKk7oVXdqCZNmrj6M8qYUjFNFTgHkHVRPyS+lC5d2h5//PEk56tO2EsvvWTHjx8Pa7uQcTTQBOI7m0L/VyacBilAbBgyZEikmwAAWQrBKLgrNZ4GDRrY119/7YqlKjPq+uuvd91/EL0Re6/bpa6yKpV08eLFtn79+kTLtm7dOgItBJAZxVOVTaEimsqSAgAA4ROqOyY1PGPPm2++6c6VixQp4p/2999/W4kSJVw9T49K3mikzKFDh0aopVlXNh9FZICYFKp+UFL0BUltguilbh3KpLjgggv80xYtWmS1a9e2fPnyRbRtCA9lseoigoJQK1ascFkVGphCFxcQffSDtXv37laqVCn/NG3LWrVqWd68eYNGSFW2hX4QI/q/szXCrddNT9/JOXPmtO+++84uuuiiSDcPGUgXBNX7QN2uPbNnz7bff//dKlas6C+Vgeik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Eu5qqn7Mqmi9ul9qWysQ1aJFC7vnnnsSbXsAWdPVV1/tMmNScs455zCSXhTjezo+rV271i6//HLXHVeOHj3q7pUV9cADD9irr74a4RZmTQSjACBGqZB1+/btXRcfnbT+888/7sQWsYUMmfg5kVXR+q1bt9orr7xilStXdldia9WqFemmAUiFvn372q+//pricrpopMEpEDv4no59OXLk8Gc2qnan6r55ihYtalu2bIlg67IuglEAEEPUreeJJ55wtSkaN25s06dPtyNHjtgzzzxjGzdudF19AGRtdPMAACB6KEtdv8Hl0ksvdbXhVEJBGezKilLGIxIjGAUAUU5fdu+9956rJaMg1ODBg92VmSFDhrj6FLoid8kll/iv2gDI2ujmAcQeDUigkfIAxJ7rrrvOli5d6v5W3Sj1TihYsKAVLlzYZsyYQc+EJHBmAgBRrlSpUrZr1y7LkyePG4FHI25pSHivXhRiy5IlS/zp3ydPnnSBx8WLF9v69esTLdu6desItBCZgW4eQPQPTPDNN9/YZZdd5v/8rlevnhs5U1kViB18T8cfjaDn0W/wr7/+2vVO0G+066+/3urXrx/R9mVV2Xz8ugGAqKZiifqy05fffffdZ82aNfOPxqNgVKFChdwPo2uuuSbSTcUp8gpjpob2AYYGj97trFERvZNWbcecOXPad999ZxdddFGkmwcgHTiu4wPf00DqkRkFAFFu9uzZ7sqqugAoLVgFyzt37uwypIoUKRLp5iEDKQMKAABkTXxPA6lHMAoAYiD1X7d///3XjbalUXhUqPypp55ymRXKkCEJNjbUrVs30k1AmNDNAwCiD9/T8al8+fL+XgmhaN66devC2qZoQDc9AIhBX3zxhcuWUiHkgwcPumFmb7/9duvZs6dVr1490s0DkAy6eQCxeVwvW7bMjbQV2P32+++/twsvvDDSzQNwCtQjIWEwaseOHa52lH6Dqz6cLhYjGMEoAIhh+/fvt6lTp9obb7xhy5cvp45QlFPB28mTJ7tRE72rr8p6a9GiRdByBQoUcMulJaiBrOPzzz9P0/JciQeyPn0e582bN+hzWd/RCaeJTmoZgCQ68T2NQDt37rTGjRvbI488YjfffDMrJwGCUQAQ5W655RbXJe/cc8/1T/vzzz+tTJky7qqrZ9WqVS4o9fzzz0eopThVH330kd100032ww8/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SwAQjGAUAMSAyy+/3BVRfPXVV23BggX+EXqqV69ujRs3tu7du7vMKQDRgW4eAAAgltFNDwCi3NKlS12h0/z580e6KQAyAN08AABArEt5bGgAQJYfQnj16tWRbgYAAAAApArBKACIcoxDAQAAACCaUDMKAAAgCzl58mSkmwAAAJCpyIwCgBiQLVu2SDcBAAAAAFKFAuYAEAPFjvPmzevuUxO02rNnT1jaBQAAAACh0E0PAGJAvXr1rFixYpFuBgAAAACkiMwoAIhyDAMPAAAAIJpQMwoAAAAAAABhQzAKAAAAAAAAYUMwCgAAAAAAAGFDzSgAAAAAAACEDZlRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAABRol69eu7mWb9+vWXLls0mTZrkn/b111/bkCFDbPfu3Sk+HgAAIBJyRORVAQAAcMrOOuss++abb+zcc88NCkY9/vjj1rlzZytYsGDQ8mPHjmWtAwCAiCMYBQAAEKVy585tl19+eaqXv+CCCzK1PQAAAKlBNz0AAIAU/Pbbb9auXTsrUaKECwCVLVvWOnbsaEeOHHHzV61aZS1atLBChQpZnjx5rFatWjZ58uSg51iyZInrUjdt2jQbOHCglSpVys4880xr1KiRrVmzJmhZn89nTz/9tJUrV84930UXXWQff/xxonYl7Kan7nn9+vVzf5cvX97N002vnVQ3vV27dlnv3r2tdOnSlitXLqtQoYJrn/fePHqeu+++29566y2rUqWK5c2b12rWrGlz5sxh/wEAAGlCZhQAAEAyfvrpJ7vqqqusaNGiNnToUDvvvPPsn3/+sQ8//NCOHj3qAkJ16tSx4sWL24svvmhFihSxKVOmuG5y//77r/Xv3z/o+R555BG78sor7fXXX7e9e/fagAEDrHnz5vbrr79a9uzZ3TLqZqdbt27d7Oabb7ZNmzZZjx497MSJE1apUqUk29q9e3cXXHrppZds5syZrhtfchlRhw8ftvr169u6devc69WoUcO++OILe+qpp+zHH3+0uXPnBi2v/69YscKth/z587uAWatWrVwwTUEsAACA1CAYBQAAkIz777/fcuTIYcuXL7dixYr5p7dv396fjaSg1OLFi61MmTJu2nXXXecKiCvA06tXLytQoID/cQoMKVjlUQDqlltucUEedbnT40aOHOmCPApYeapWreqCWMkFo84++2yXtSUXXnihnXPOOcluW2Vv/fzzz/buu+9amzZt3LTGjRu7QJOCZPPnz3f/9xw6dMgWLFhgZ5xxhvu/MraU4aXHP/TQQ+xHAAAgVeimBwAAkISDBw/a559/7oJFgYGoQIsWLbKGDRv6A1EeZUbp8SowHujGG28M+r+ykWTDhg3uXssrY8kLdnmUfaVuexlJbc+XL5/LvkrYdlm4cGHQdGVReYEoUbdFZYR5bQcAAEgNglEAAABJ+O+//1zXOGUcJWXnzp3+7nCBlDHkzQ+kbnyBVIPKyzoKXL5kyZKJnjPUtFOh19Jzqh5UIAWYlA2WUtu99nttBwAASA2CUQAAAEkoXLiw60a3efPmJNeRAjSqIZXQ33//7e5VayotvIDP1q1bE80LNe1U6LVU10oF0wNt27bNjh8/nua2AwAApAbBKAAAgCScfvrpVrduXXvvvfdsx44dIZdRFz11d/OCT54333zTjTinOlBpoeU1gt7bb78dNP3rr79OVXe4hJlWyVHb9+/fb7NmzUrUdm8+AABARiMYBQAAkIznn3/ejh07ZrVr17bXXnvNFSqfPn263XbbbbZv3z4bPHiw5cyZ09VTUgDp448/tg4dOriR51TcPLB4eWoUKlTIHnzwQfvggw/c6HiffvqpK2SuulWp6aZXvXp1dz969GhXf+q7775z7QylY8eOrmZVp06dbNSoUa44udqsEf9UhL1Ro0bsGwAAIMMxmh4AAEAyatas6UbSU9Dp4YcfdoEdBYUaNGhguXLlcqPbKWtJAZy77rrLZSRVqVLFJk6c6C8EnlZDhw51hcXHjh1rb731llWuXNleeeUVe/bZZ1N8bL169Vw7NVKegmcnT550ATRNT0gZWJo3cOBAe+aZZ2z79u1WunRpFwzT+wUAAMgM2XwJiwQAAAAAAAAAmYRuegAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAACwcPl/cJycenVI9TYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Observed AKTPredicted AKT
condition
Basal0.080.0
TGFA0.851.0
TGFA + EGFRi0.150.0
TGFA + RASi0.250.0
TGFA + MEKi0.751.0
IGF10.881.0
IGF1 + PI3Ki0.200.0
TGFA + IGF10.901.0
Dual + MEKi0.821.0
\n", + "
" + ], + "text/plain": [ + " Observed AKT Predicted AKT\n", + "condition \n", + "Basal 0.08 0.0\n", + "TGFA 0.85 1.0\n", + "TGFA + EGFRi 0.15 0.0\n", + "TGFA + RASi 0.25 0.0\n", + "TGFA + MEKi 0.75 1.0\n", + "IGF1 0.88 1.0\n", + "IGF1 + PI3Ki 0.20 0.0\n", + "TGFA + IGF1 0.90 1.0\n", + "Dual + MEKi 0.82 1.0" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "akt_response = vertex_layer_table(\n", + " signaling,\n", + " condition_layers,\n", + " {\n", + " \"Observed AKT\": (\"akt\", \"observed\"),\n", + " \"Predicted AKT\": (\"akt\", \"predicted\"),\n", + " },\n", + ")\n", + "\n", + "ax = akt_response.plot.bar(figsize=(10, 3.8), color=[\"#9ecae1\", \"#2166ac\"])\n", + "ax.set_ylim(0, 1.15)\n", + "ax.set_ylabel(\"Boolean activity\")\n", + "ax.set_title(\"AKT measurements and predictions read from AnnNet\")\n", + "ax.legend(frameon=False, ncol=2)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "akt_response" + ] + }, + { + "cell_type": "markdown", + "id": "reaction-question", + "metadata": { + "tags": [] + }, + "source": [ + "### Which reactions are active after a perturbation?\n", + "\n", + "A reaction may belong to the fitted network but be inactive in a particular condition. The result layers preserve this distinction. For example, MEK inhibition removes activity from the ERK1/2 branch while leaving the route to AKT available." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "reaction-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 egfr -> grb2\n", + "1 grb2 -> sos\n", + "2 pdk1 -> akt\n", + "3 pi3k -> pip3\n", + "4 pip3 -> pdk1\n", + "5 raf1 -> mek12\n", + "6 ras -> pi3k\n", + "7 ras -> raf1\n", + "8 sos -> ras\n", + "9 tgfa -> egfr\n", + "Name: TGFA + MEKi, dtype: object" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def active_reactions_in(network, layer):\n", + " \"\"\"Return the distinct CellNOpt reactions active in one AnnNet layer.\"\"\"\n", + " reactions = set()\n", + " for edge_id in network.layers.layer_edge_set(layer):\n", + " attributes = network.attrs.get_edge_attrs(edge_id)\n", + " if attributes.get(\"selected\") and attributes.get(\"active\"):\n", + " reactions.add(attributes[\"reaction\"])\n", + " return sorted(reactions)\n", + "\n", + "\n", + "condition = \"TGFA + MEKi\"\n", + "pd.Series(active_reactions_in(signaling, condition_layers[condition]), name=condition)" + ] + }, + { + "cell_type": "markdown", + "id": "save-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 6. Save the analysis and use it again\n", + "\n", + "AnnNet's native format preserves the network, annotations, slices, condition layers, and fitting results. To demonstrate that the saved object is useful on its own, we reopen it and read the AKT result again without using the CORNETO model or its solver variables." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "save-reload", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved analysis: build/annnet-cellnopt-liverdream.annnet\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Observed AKTPredicted AKT
condition
Basal0.080.0
TGFA0.851.0
TGFA + EGFRi0.150.0
TGFA + RASi0.250.0
TGFA + MEKi0.751.0
IGF10.881.0
IGF1 + PI3Ki0.200.0
TGFA + IGF10.901.0
Dual + MEKi0.821.0
\n", + "
" + ], + "text/plain": [ + " Observed AKT Predicted AKT\n", + "condition \n", + "Basal 0.08 0.0\n", + "TGFA 0.85 1.0\n", + "TGFA + EGFRi 0.15 0.0\n", + "TGFA + RASi 0.25 0.0\n", + "TGFA + MEKi 0.75 1.0\n", + "IGF1 0.88 1.0\n", + "IGF1 + PI3Ki 0.20 0.0\n", + "TGFA + IGF1 0.90 1.0\n", + "Dual + MEKi 0.82 1.0" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output_dir = Path(\"build\")\n", + "output_dir.mkdir(exist_ok=True)\n", + "analysis_path = output_dir / \"annnet-cellnopt-liverdream.annnet\"\n", + "\n", + "an.io.write(signaling, analysis_path, overwrite=True)\n", + "restored = an.io.read(analysis_path)\n", + "\n", + "restored_akt = vertex_layer_table(\n", + " restored,\n", + " condition_layers,\n", + " {\n", + " \"Observed AKT\": (\"akt\", \"observed\"),\n", + " \"Predicted AKT\": (\"akt\", \"predicted\"),\n", + " },\n", + ")\n", + "\n", + "assert restored_akt.equals(akt_response)\n", + "print(\"Saved analysis:\", analysis_path)\n", + "restored_akt" + ] + }, + { + "cell_type": "markdown", + "id": "why-annnet", + "metadata": { + "tags": [] + }, + "source": [ + "## What does AnnNet add?\n", + "\n", + "AnnNet is the central graph object for the analysis. It provides a common place for the biological network, experimental data, and inferred results:\n", + "\n", + "- **Proteins keep the same identity across conditions.** AKT is one protein with different measurements and predictions in different layers.\n", + "- **The candidate and fitted networks coexist.** Slices make them easy to compare without overwriting the original pathway.\n", + "- **Results remain connected to the biology.** Predictions and reaction activities are attached to the proteins, interactions, and conditions they describe.\n", + "- **The analysis can be exchanged and extended.** Another researcher can reopen the file, inspect a condition, or add annotations without reconstructing the work from notebook variables.\n", + "- **CORNETO methods can share the same graph object.** CORNETO supplies optimization methods; AnnNet supplies the annotated network that those methods read and enrich.\n", + "\n", + "For a small one-off calculation, separate edge lists and tables may be sufficient. AnnNet becomes particularly useful when an analysis contains many conditions, annotations, or results from several methods and needs to remain reusable beyond the notebook that created it." + ] + }, + { + "cell_type": "markdown", + "id": "limitations", + "metadata": { + "tags": [] + }, + "source": [ + "## Limitations of this example\n", + "\n", + "The normalized measurements are synthetic, so the selected pathway is not a new biological result. Their variation illustrates an imperfect fit, but it is not an estimate of experimental noise in HepG2 cells. Different perturbations, measurements, or regularization choices could support a different model.\n", + "\n", + "CellNOptDAG uses the signed protein interactions and condition data needed for this analysis. AnnNet can contain additional annotations and layers that are not used by this particular optimization method; they remain available for other analyses.\n", + "\n", + "CellNOptDAG requires the selected model to have no feedback loops. A feedback interaction can still be biologically plausible even when it is not included in this fitted model. CORNETO also checks that selected reactions connect experimental inputs to measured outputs. This is a mathematical connectivity requirement, not a biochemical flux or a measure of interaction strength.\n", + "\n", + "### Further reading\n", + "\n", + "- Rodriguez-Mier *et al.* [Unifying multi-sample network inference from prior knowledge and omics data with CORNETO](https://doi.org/10.1038/s42256-025-01069-9), *Nature Machine Intelligence* (2025).\n", + "- Prill *et al.* [Crowdsourcing Network Inference: The DREAM Predictive Signaling Network Challenge](https://pmc.ncbi.nlm.nih.gov/articles/PMC3465072/).\n", + "- AnnNet documentation: [layers](https://saezlab.github.io/annnet/reference/core/layers/), [slices](https://saezlab.github.io/annnet/reference/core/slices/), and [native storage](https://saezlab.github.io/annnet/explanations/io-annnet/)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/tutorials/annnet-signaling/pixi.toml b/docs/tutorials/annnet-signaling/pixi.toml new file mode 100644 index 000000000..5de94efe9 --- /dev/null +++ b/docs/tutorials/annnet-signaling/pixi.toml @@ -0,0 +1,16 @@ +[workspace] +name = "annnet-signaling" +channels = ["conda-forge"] +platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] + +[dependencies] +python = "3.11.*" +matplotlib = "==3.10.3" +networkx = "==3.5" +pandas = "==2.3.3" +graphviz = "*" +pip = "*" + +[pypi-dependencies] +corneto = { path = "../../..", editable = true, extras = ["plot"] } +annnet = { git = "https://github.com/saezlab/annnet.git", rev = "e37ab0069c2882154582354ed0ba2b01dd9b1c37", extras = ["polars", "networkx", "zarr_io"] } diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index e6083add0..7fdd19c9e 100755 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -10,6 +10,7 @@ :maxdepth: 1 fba/context-specific-metabolic-omics.ipynb +annnet-signaling/annnet-cellnopt-dag.ipynb carnival/single-sample-carnival-transcriptomics.ipynb carnival/multi-receptor-integration.ipynb carnival/network-sampler.ipynb diff --git a/tests/methods/signaling/test_cellnopt_annnet.py b/tests/methods/signaling/test_cellnopt_annnet.py new file mode 100644 index 000000000..0dd81f0b2 --- /dev/null +++ b/tests/methods/signaling/test_cellnopt_annnet.py @@ -0,0 +1,48 @@ +import pytest + +from corneto.methods.signaling import CellNOptDAG +from corneto.methods.signaling.annnet import ( + add_cellnopt_conditions, + add_cellnopt_results, + build_cellnopt_from_annnet, +) + +annnet = pytest.importorskip("annnet") + + +def test_cellnopt_reads_conditions_and_adds_results_to_annnet(backend): + graph = annnet.AnnNet(directed=True) + graph.history.enable(True) + graph.slices.add("prior") + graph.add_edges( + [ + {"source": "L", "target": "A", "edge_id": "e0"}, + {"source": "A", "target": "Y", "edge_id": "e1"}, + {"source": "L", "target": "Y", "edge_id": "shortcut"}, + ], + slice="prior", + default_edge_directed=True, + ) + for edge_id in graph.edges(): + graph.attrs.set_edge_attrs(edge_id, interaction=1) + layers = add_cellnopt_conditions( + graph, + inputs={"off": {"L": 0}, "on": {"L": 1}, "blocked": {"L": 1}}, + inhibitors={"off": {}, "on": {}, "blocked": {"A": 1}}, + measurements={"off": {"Y": 0}, "on": {"Y": 1}, "blocked": {"Y": 0}}, + ) + + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) + problem = build_cellnopt_from_annnet(method, graph, network_slice="prior") + solution = problem.solve() + summary = add_cellnopt_results(graph, method, problem, solution=solution) + + assert solution.status == "optimal" + assert layers == {"off": ("off",), "on": ("on",), "blocked": ("blocked",)} + assert graph.layers.get_vertex_layer_attrs("L", ("on",))["input"] == 1 + assert graph.layers.get_vertex_layer_attrs("A", ("blocked",))["inhibited"] == 1 + assert graph.layers.get_vertex_layer_attrs("Y", ("on",))["predicted"] == 1 + assert graph.layers.get_layer_attrs(("blocked",))["endpoint_absolute_error"] == 0 + assert graph.slices.exists("cellnopt_selected") + assert summary["selected_reactions"] == 2 + assert summary["condition_errors"] == {"off": 0.0, "on": 0.0, "blocked": 0.0} From 90843da65d11723f8712aebf9bdd5d1da43ca7e8 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Mon, 3 Aug 2026 09:31:45 +0200 Subject: [PATCH 08/13] docs: unify method data guidance --- docs/guide/index.md | 1 - docs/guide/intro/data.ipynb | 524 ++++-------------- .../metabolism/flux-balance-analysis.ipynb | 2 +- docs/guide/method-inputs.md | 118 +--- 4 files changed, 116 insertions(+), 529 deletions(-) diff --git a/docs/guide/index.md b/docs/guide/index.md index 53197bb1c..141ed38f7 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -15,7 +15,6 @@ The library is designed with minimal dependencies and is easily extendable, maki ```{toctree} :maxdepth: 3 -method-inputs intro/index networks/index metabolism/index diff --git a/docs/guide/intro/data.ipynb b/docs/guide/intro/data.ipynb index 04e3c0b75..4a595f6c7 100644 --- a/docs/guide/intro/data.ipynb +++ b/docs/guide/intro/data.ipynb @@ -2,532 +2,226 @@ "cells": [ { "cell_type": "markdown", - "id": "0a2cb032", + "id": "working-with-data", "metadata": {}, "source": [ + "(guide-working-with-data)=\n", "# Working with data\n", "\n", - "CORNETO provides a flexible way to work with data in a convenient way for network problems. You can use the `Data` class to create a new dataset, or you can load an existing dataset from a file. The `Data` class provides methods for querying a given dataset. The main goal of this class is to provide a simple interface for working with datasets that are typically sparse and can be stored in memory, while still allowing for complex queries and transformations." + "A CORNETO analysis brings together a biological network and experimental observations. The network describes what can interact; the observations describe what was measured in one or more samples or experimental conditions.\n", + "\n", + "CORNETO represents these observations with the `Data` class. A `Data` object keeps related measurements together, records which sample they belong to, and provides a common data model for CORNETO methods." ] }, { "cell_type": "code", - "execution_count": 2, - "id": "56be29e1", + "execution_count": null, + "id": "import-corneto", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - "
Installed version:v1.0.0.dev5 (latest stable: v1.0.0-alpha)
Available backends:CVXPY v1.6.4, PICOS v2.6.0
Default backend (corneto.opt):CVXPY
Installed solvers:CVXOPT, GLPK, GLPK_MI, HIGHS, SCIP, SCIPY
Graphviz version:v0.20.3
Installed path:/Users/pablorodriguezmier/Documents/work/repos/pablormier/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import corneto as cn\n", - "\n", - "cn.info()" + "import corneto as cn" ] }, { "cell_type": "markdown", - "id": "ff4ef0e0", + "id": "data-model", "metadata": {}, "source": [ - "## Creating a new dataset from a dictionary\n", + "## Samples and features\n", "\n", - "Most of the network inference approaches in CORNETO require some type of measurements to be mapped to prior knowledge networks. For convenience, datasets used in CORNETO are represented as dictionaries with features (any measurement that is mapped, or will be mapped to a prior knowledge network), and samples, which are collections of features. The simplest way to create a dataset is to define a dictionary where keys are sample names (e.g. conditions like different perturbed cells). Each sample has features, which are lists of dictionaries containing information about the feature. Every feature has at least an id (e.g., gene name, protein name, metabolite name, etc), a value for that sample, and a mapping attribute which indicates if this feature maps to a vertex, edge, or none (for features that are not mapped to the network, or needs pre-processing to determine the mapping values). Every method may require additional attributes, which are described in the documentation of each method. The following example shows how to create a simple dataset:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3b913364", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 3])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# A simple dataset with two samples, and three features per sample.\n", + "A `Data` object contains named samples. Each sample contains features, such as measured proteins, genes, metabolites, or phenotypes. Every feature has three common fields:\n", "\n", - "samples = {\n", - " \"sample1\": {\n", - " \"features\": [\n", - " {\"id\": \"receptor1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"input\"},\n", - " {\"id\": \"tf1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " {\"id\": \"tf2\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " ]\n", - " },\n", - " \"sample2\": {\n", - " \"features\": [\n", - " {\"id\": \"receptor2\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"input\"},\n", - " {\"id\": \"tf1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " {\"id\": \"tf2\", \"value\": -1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " ]\n", - " },\n", - "}\n", + "- `id` identifies the measured entity.\n", + "- `value` stores its observed value.\n", + "- `mapping` says whether the feature corresponds to a network `vertex`, a network `edge`, or is currently mapped to `none`.\n", "\n", - "data = cn.Data.from_dict(samples)\n", - "data" + "Features can also carry information such as the assay, units, or a biological role. These additional fields are kept with the feature. Their meaning depends on the method that uses the data, so each method documents the fields it requires." ] }, { "cell_type": "markdown", - "id": "e3d71dbb", + "id": "create-data", "metadata": {}, "source": [ - "For convenience, data can be imported from a more compacted dictionary definition where features are also indexed by id." + "## Creating a dataset\n", + "\n", + "Here we record measurements from untreated cells and cells stimulated with EGF. Protein measurements map to vertices in a network. Cell viability is retained as part of the experiment but is not mapped to the network." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "f4a41dd9", + "execution_count": null, + "id": "create-data-code", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 4])" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "samples = {\n", - " \"sample1\": {\n", - " \"receptor1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"input\",\n", - " },\n", - " \"tf1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf2\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", + "observations = {\n", + " \"untreated\": {\n", + " \"EGFR\": {\"value\": 0.18, \"mapping\": \"vertex\"},\n", + " \"MAPK1\": {\"value\": 0.22, \"mapping\": \"vertex\"},\n", + " \"cell_viability\": {\n", + " \"value\": 0.96, \"mapping\": \"none\", \"assay\": \"phenotype\"\n", " },\n", " },\n", - " \"sample2\": {\n", - " \"receptor2\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"input\",\n", - " },\n", - " \"tf1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf3\": {\n", - " \"value\": -1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf4\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", + " \"EGF\": {\n", + " \"EGFR\": {\"value\": 0.91, \"mapping\": \"vertex\"},\n", + " \"MAPK1\": {\"value\": 0.84, \"mapping\": \"vertex\"},\n", + " \"cell_viability\": {\n", + " \"value\": 0.94, \"mapping\": \"none\", \"assay\": \"phenotype\"\n", " },\n", " },\n", "}\n", "\n", - "data = cn.Data.from_cdict(samples)\n", + "data = cn.Data.from_cdict(observations)\n", "data" ] }, - { - "cell_type": "code", - "execution_count": 5, - "id": "6eaae82b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf2, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Samples are just lists of features\n", - "data.samples[\"sample1\"].features" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "6d261bde", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'receptor1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'input'},\n", - " {'id': 'tf1', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'receptor2',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'input'},\n", - " {'id': 'tf1', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We can add a new feature to a sample. These are stored as lists.\n", - "data.samples[\"sample1\"].features.append(cn.Feature(id=\"tf3\", value=1, mapping=\"vertex\", role=\"output\"))\n", - "data.to_dict()" - ] - }, { "cell_type": "markdown", - "id": "a9f7a259", + "id": "inspect-data", "metadata": {}, "source": [ - "## Querying features\n", - "\n", - "To inspect or obtain features from a dataset, you can use the `query` method. This method allows you to filter features based on their attributes. For example, you can find all features that are mapped to a specific vertex in the network, or all features that have a specific value." + "The sample names are preserved, and each sample contains its own feature values." ] }, { "cell_type": "code", - "execution_count": 7, - "id": "c454e1aa", + "execution_count": null, + "id": "inspect-samples", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Sample(n_feats=3)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.samples[\"sample1\"].query.filter(lambda f: f.id.startswith(\"tf\")).collect()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f218854b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'tf1', 'tf2', 'tf3'}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# We can get all the unique ids from the samples\n", - "data.samples[\"sample1\"].query.filter(lambda f: f.id.startswith(\"tf\")).pluck()" + "list(data.samples)" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "67f27401", + "execution_count": null, + "id": "inspect-features", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf2, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf3, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Get features with unique ids\n", - "data.samples[\"sample1\"].query.unique().to_list()" + "data.samples[\"EGF\"].features" ] }, { "cell_type": "markdown", - "id": "8ed64112", + "id": "query-data", "metadata": {}, "source": [ - "The `unique()` method can use different keys to determine uniqueness. By default, it uses the feature's `id` field, but you can specify other fields like `mapping`, `role`, or any combination of keys." + "## Querying measurements\n", + "\n", + "Queries make it possible to select features without changing the original dataset. For example, we can retain only measurements that map to network vertices." ] }, { "cell_type": "code", - "execution_count": 10, - "id": "84746f4f", + "execution_count": null, + "id": "query-vertices", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Get features with unique roles\n", - "data.samples[\"sample1\"].query.unique([\"role\"]).to_list()" + "network_measurements = (\n", + " data.query.filter_features(\n", + " lambda feature: feature.mapping == \"vertex\"\n", + " ).collect()\n", + ")\n", + "network_measurements" ] }, { "cell_type": "markdown", - "id": "7fe04517", + "id": "copy-data", "metadata": {}, "source": [ - "## Working across multiple samples\n", + "## Copying and extending data\n", "\n", - "The `Data` class also provides a query interface that works across all samples. This allows you to perform operations on all features in all samples at once." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "ed2d114e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'receptor1', 'receptor2', 'tf1', 'tf2', 'tf3', 'tf4'}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Get all unique feature IDs across all samples\n", - "data.query.pluck()" + "Use `copy()` when you want to modify a dataset while keeping the original unchanged. Features can then be added to an individual sample." ] }, { "cell_type": "code", - "execution_count": 12, - "id": "9e540bbc", + "execution_count": null, + "id": "copy-data-code", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'tf1', 'tf2', 'tf3', 'tf4'}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Get features with unique IDs across all samples\n", - "data.query.filter_features(lambda f: f.id.startswith(\"tf\")).unique().pluck()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "351775a7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 3])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Filter features across all samples\n", - "dataq = data.query.filter_features(lambda f: f.id.startswith(\"tf\")).collect()\n", + "extended_data = data.copy()\n", + "extended_data.samples[\"EGF\"].add(\n", + " cn.Feature(\n", + " id=\"AKT1\",\n", + " value=0.73,\n", + " mapping=\"vertex\",\n", + " assay=\"phosphoproteomics\",\n", + " )\n", + ")\n", "\n", - "dataq" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "dd79a300", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataq.to_dict()" + "len(data.samples[\"EGF\"].features), len(extended_data.samples[\"EGF\"].features)" ] }, { "cell_type": "markdown", - "id": "d47b7938", + "id": "save-data", "metadata": {}, "source": [ - "## Saving and loading datasets" + "## Saving and loading data\n", + "\n", + "A `Data` object can be saved and loaded without losing sample names, feature values, mappings, or additional annotations." ] }, { "cell_type": "code", - "execution_count": 20, - "id": "475e808b", + "execution_count": null, + "id": "save-data-code", "metadata": {}, "outputs": [], "source": [ - "import tempfile\n", + "from pathlib import Path\n", + "from tempfile import TemporaryDirectory\n", "\n", - "file = tempfile.NamedTemporaryFile(delete=False).name\n", - "dataq.save(file, compression=\"xz\")" + "with TemporaryDirectory() as directory:\n", + " data_path = Path(directory) / \"experiment.json.xz\"\n", + " data.save(data_path)\n", + " restored_data = cn.Data.load(data_path)\n", + "\n", + "restored_data.to_dict() == data.to_dict()" ] }, { - "cell_type": "code", - "execution_count": 22, - "id": "2386db6a", + "cell_type": "markdown", + "id": "using-data-with-methods", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "dataq.load(file, compression=\"xz\").to_dict()" + "(guide-data-methods)=\n", + "## Using data with methods\n", + "\n", + "`Data` is the general representation used by CORNETO methods. If your observations are already stored as a `Data` object, pass them to the method through `build_from_data`: \n", + "\n", + "```python\n", + "problem = method.build_from_data(network, data)\n", + "```\n", + "\n", + "For common analyses, methods also provide shorter interfaces. `build` accepts the scientific inputs for one condition, while `build_many` accepts inputs for several named conditions:\n", + "\n", + "```python\n", + "problem = method.build(network, ...)\n", + "problem = method.build_many(network, ...)\n", + "```\n", + "\n", + "These convenience methods validate their inputs, create the corresponding `Data` object, and then build the optimization problem. The biological meaning and names of the inputs differ between methods, so they are explained in each method's guide." ] } ], "metadata": { "kernelspec": { - "display_name": "corneto-hVfbzgbT-py3.12", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12" } }, "nbformat": 4, diff --git a/docs/guide/metabolism/flux-balance-analysis.ipynb b/docs/guide/metabolism/flux-balance-analysis.ipynb index 9a4f3f05d..3f15dab00 100644 --- a/docs/guide/metabolism/flux-balance-analysis.ipynb +++ b/docs/guide/metabolism/flux-balance-analysis.ipynb @@ -295,7 +295,7 @@ "\n", "For several conditions, CORNETO can apply structured sparsity to the union of active reactions. A reaction shared by several conditions is then counted once, encouraging compact shared metabolic programs while retaining a separate flux vector for every condition. Continue with [Multi-condition FBA](multicondition-sfba.ipynb) for the general formulation and a worked example, followed by [gene expression integration](imat.ipynb) for context-specific metabolic inference.\n", "\n", - "The examples above use the method-specific `build` and `build_many` interfaces. The general [`Data` interface](../method-inputs.md) remains available for workflows that require custom feature metadata or already represent measurements as CORNETO data objects." + "The examples above use the method-specific `build` and `build_many` interfaces. The general {ref}`Data interface ` remains available for workflows that require custom feature metadata or already represent measurements as CORNETO data objects." ] } ], diff --git a/docs/guide/method-inputs.md b/docs/guide/method-inputs.md index 77ba2e618..673b651eb 100644 --- a/docs/guide/method-inputs.md +++ b/docs/guide/method-inputs.md @@ -1,114 +1,8 @@ -# Building method problems from explicit inputs +--- +orphan: true +--- -CORNETO methods accept ordinary Python mappings and collections for their -common scientific inputs. You do not need to construct `Data`, `Sample`, or -`Feature` objects for standard workflows. +# Building method problems from data -## One condition - -Use `build` with a positional network and keyword-only scientific inputs: - -```python -from corneto.methods import CarnivalILP - -problem = CarnivalILP().build( - pkn, - perturbations={"EGFR": 1}, - transcription_factors={"JUN": 1, "FOXO3": -1}, -) -``` - -Metabolic and network methods expose inputs using their domain terminology: - -```python -from corneto.methods import MultiSampleFBA, SteinerTreeFlow - -fba_problem = MultiSampleFBA().build( - model, - objectives={"BIOMASS": -1}, - reaction_bounds={"EX_glc": (-10, 0)}, -) - -tree_problem = SteinerTreeFlow().build( - graph, - terminals=["EGFR", "JUN"], - edge_costs={0: 1.5, 4: 0.8}, -) -``` - -PHONEMeS uses perturbation targets and signed phosphosite scores. Because the -method minimizes its objective, negative scores favor including a site and -positive scores discourage it; zero-valued keys still identify measured sites: - -```python -from corneto.methods import PHONEMeS - -phonemes_problem = PHONEMeS().build( - pkn, - perturbations=["EGFR"], - phosphosite_scores={"ERK1_S123": -2.4, "AKT1_S473": 0.0}, -) -``` - -See the [PHONEMeS guide](signaling/phonemes.ipynb) for score interpretation, edge -costs, computing scores from differential results, optional pandas inputs, and -extracting the inferred subnetwork. - -When the starting points are activity-derived regulated kinases rather than -known experimental perturbations, use `BidirectionalPHONEMeS`. It optimizes -upstream and downstream explanations together: - -```python -from corneto.methods import BidirectionalPHONEMeS - -bidirectional_problem = BidirectionalPHONEMeS().build( - pkn, - regulated_kinases=["AKT1", "MTOR"], - phosphosite_scores={"AKT1_S473": -2.4, "RPS6_S235": -3.1}, -) -``` - -See the -[global bidirectional PHONEMeS guide](signaling/bidirectional-phonemes.ipynb) for -anchor policies, directional results, and the distinction from the original -post-hoc upside-down union. - -## Multiple named conditions - -Use `build_many` and add one outer mapping keyed by condition name: - -```python -problem = CarnivalILP().build_many( - pkn, - perturbations={ - "control": {"EGFR": 1}, - "treated": {"EGFR": -1}, - }, - transcription_factors={ - "control": {"JUN": 1}, - "treated": {"JUN": -1}, - }, -) -``` - -All per-condition arguments must contain the same condition names. CORNETO -validates condition names, graph identifiers, numeric values, bounds, and edge -indices before constructing the optimization problem. - -PHONEMeS also uses named mappings for `perturbations` and -`phosphosite_scores`. It infers one subnetwork per condition but charges edge -costs over their combined network: an interaction used by one or several -conditions is charged once. For this reason, `edge_costs` is one global mapping -rather than a mapping per condition. - -## Advanced data interface - -Use `build_from_data(graph, data)` when custom feature metadata or arbitrary -measurement roles require the general `Data` representation: - -```python -problem = CarnivalILP().build_from_data(pkn, data) -``` - -Passing `Data` as the second positional argument to `build` remains temporarily -supported with a deprecation warning. +This documentation has moved to {ref}`guide-data-methods` in the +{ref}`guide-working-with-data` guide. From 1d9b5d43089eb8e071c201a58dd7a24febbd5a17 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Mon, 3 Aug 2026 09:32:03 +0200 Subject: [PATCH 09/13] docs(release): prepare CORNETO 1.0 rc4 --- docs/releases/index.md | 1 + docs/releases/v1.0.0-rc.4.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 docs/releases/v1.0.0-rc.4.md diff --git a/docs/releases/index.md b/docs/releases/index.md index 49e315d35..b2b800f72 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -7,6 +7,7 @@ This section contains detailed release notes for CORNETO versions, documenting n ```{toctree} :maxdepth: 1 +v1.0.0-rc.4 v1.0.0-rc.3 v1.0.0-rc.1 migration-1.0 diff --git a/docs/releases/v1.0.0-rc.4.md b/docs/releases/v1.0.0-rc.4.md new file mode 100644 index 000000000..e229fd742 --- /dev/null +++ b/docs/releases/v1.0.0-rc.4.md @@ -0,0 +1,31 @@ +# CORNETO 1.0.0 RC4 + +CORNETO 1.0.0 RC4 adds an AnnNet-centered signaling workflow and clarifies how +experimental data are represented across CORNETO methods. + +## AnnNet and CellNOptDAG + +- New signaling helpers read signed interactions and multi-condition + perturbation data from AnnNet, build a `CellNOptDAG` optimization problem, + and add the fitted model and condition-specific predictions back to the same + AnnNet object. +- A new tutorial uses proteins from the LiverDREAM signaling network to show + how AnnNet can keep the candidate pathway, experimental conditions, selected + interactions, predictions, and reaction activities together. +- The tutorial uses normalized synthetic measurements with experimental + variation, making the difference between observed values and Boolean model + predictions visible. + +Install the optional AnnNet integration with: + +```bash +pip install "corneto[annnet]" +``` + +## Data documentation + +The Getting Started guide now presents `Data` as CORNETO's general +representation of samples and measured features. Method-specific `build` and +`build_many` functions are explained as convenient ways to create this data +for common analyses, while `build_from_data` remains the general interface for +annotated or reusable datasets. From 88d4614ade23d1abb4bb5f9f0a23610cf60a5c8e Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Mon, 3 Aug 2026 11:29:51 +0200 Subject: [PATCH 10/13] fix(release): enforce release note structure --- .github/workflows/build-and-publish.yml | 5 +++ RELEASE.md | 35 +++++++++++++++- corneto/release.py | 23 +++++++++++ docs/releases/v1.0.0-rc.4.md | 18 ++++----- tests/test_release.py | 54 +++++++++++++++++++++++++ 5 files changed, 125 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml index 7b52beecc..a2d68678f 100644 --- a/.github/workflows/build-and-publish.yml +++ b/.github/workflows/build-and-publish.yml @@ -82,6 +82,11 @@ jobs: ;; esac + - name: Validate committed release notes + if: steps.validate_tag.outputs.should_publish == 'true' + run: | + poetry run python -c "from corneto.release import _ensure_release_notes; _ensure_release_notes('${{ steps.validate_tag.outputs.version }}')" + # 7. Build source & wheel (only if should publish) - name: Build package if: steps.validate_tag.outputs.should_publish == 'true' diff --git a/RELEASE.md b/RELEASE.md index 941140b18..ad53f294e 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -38,7 +38,40 @@ poetry run release v1.2.3 Pre-release tags use the same flow, for example `v1.2.3-alpha.0`, `v1.2.3-beta.0`, or `v1.2.3-rc.0`. The helper confirms that the tree is clean, the checkout is on and matches the selected remote's `main`, and the tag does -not already exist. +not already exist. It also validates the committed release page before a tag +can be created. + +## Preparing release notes + +Add `docs/releases/.md` and include it in `docs/releases/index.md` before +opening the public release pull request. Use the tag exactly as written; do not +rewrite `v1.0.0-rc.4` as `CORNETO 1.0.0 RC4`. Pre-releases include the same +badge used by the documentation release synchronizer: + +```markdown +# Release v1.0.0-rc.4 {bdg-warning}`Pre-release` + +One or two sentences describing the purpose of the release. + +## Highlights + +- The most important user-facing change. +- Another important change. + +## Additional context + +Optional installation, migration, compatibility, or method-specific details. +``` + +For a stable release, omit the pre-release badge: + +```markdown +# Release v1.0.0 +``` + +The release helper and tag publication workflow both enforce the canonical +title and the `## Highlights` section. This keeps manually prepared pages +consistent with pages produced by `scripts/sync_releases.py`. Useful options: diff --git a/corneto/release.py b/corneto/release.py index caddfddbc..71736591b 100644 --- a/corneto/release.py +++ b/corneto/release.py @@ -6,6 +6,7 @@ import re import subprocess import sys +from pathlib import Path from typing import Sequence VERSION_RE = re.compile(r"^v\d+\.\d+\.\d+(?:-(?:alpha|beta|rc)\.\d+)?$") @@ -72,6 +73,27 @@ def _ensure_tag_does_not_exist(version: str, remote: str) -> None: raise ReleaseError(f"Tag already exists on {remote}: {version}") +def _expected_release_heading(version: str) -> str: + heading = f"# Release {version}" + if re.search(r"-(?:alpha|beta|rc)\.\d+$", version): + heading += " {bdg-warning}`Pre-release`" + return heading + + +def _ensure_release_notes(version: str, *, root: Path = Path(".")) -> None: + notes_path = root / "docs" / "releases" / f"{version}.md" + if not notes_path.is_file(): + raise ReleaseError(f"Missing release notes: {notes_path}") + + content = notes_path.read_text(encoding="utf-8") + first_line = next((line.strip() for line in content.splitlines() if line.strip()), "") + expected_heading = _expected_release_heading(version) + if first_line != expected_heading: + raise ReleaseError(f"Release notes must start with {expected_heading!r}; found {first_line!r} in {notes_path}.") + if not re.search(r"^## Highlights\s*$", content, flags=re.MULTILINE): + raise ReleaseError(f"Release notes must contain a '## Highlights' section: {notes_path}") + + def _create_and_push_tag(version: str, remote: str) -> None: _run(["git", "tag", "-a", version, "-m", version], check=True) _run(["git", "push", remote, version], check=True) @@ -114,6 +136,7 @@ def main(argv: Sequence[str] | None = None) -> int: _ensure_on_main() _ensure_up_to_date_with_remote_main(args.remote) _ensure_tag_does_not_exist(version, args.remote) + _ensure_release_notes(version) if args.dry_run: print(f"[dry-run] All checks passed. Would create and push tag: {version}") diff --git a/docs/releases/v1.0.0-rc.4.md b/docs/releases/v1.0.0-rc.4.md index e229fd742..0c880a406 100644 --- a/docs/releases/v1.0.0-rc.4.md +++ b/docs/releases/v1.0.0-rc.4.md @@ -1,9 +1,9 @@ -# CORNETO 1.0.0 RC4 +# Release v1.0.0-rc.4 {bdg-warning}`Pre-release` CORNETO 1.0.0 RC4 adds an AnnNet-centered signaling workflow and clarifies how experimental data are represented across CORNETO methods. -## AnnNet and CellNOptDAG +## Highlights - New signaling helpers read signed interactions and multi-condition perturbation data from AnnNet, build a `CellNOptDAG` optimization problem, @@ -15,6 +15,11 @@ experimental data are represented across CORNETO methods. - The tutorial uses normalized synthetic measurements with experimental variation, making the difference between observed values and Boolean model predictions visible. +- The Getting Started guide now presents `Data` as CORNETO's general + representation of samples and measured features, while method-specific + `build` and `build_many` functions are explained as convenience interfaces. + +## AnnNet and CellNOptDAG Install the optional AnnNet integration with: @@ -22,10 +27,5 @@ Install the optional AnnNet integration with: pip install "corneto[annnet]" ``` -## Data documentation - -The Getting Started guide now presents `Data` as CORNETO's general -representation of samples and measured features. Method-specific `build` and -`build_many` functions are explained as convenient ways to create this data -for common analyses, while `build_from_data` remains the general interface for -annotated or reusable datasets. +The general `build_from_data` method interface remains available for annotated +or reusable CORNETO datasets. diff --git a/tests/test_release.py b/tests/test_release.py index 69b76d2ed..136429240 100644 --- a/tests/test_release.py +++ b/tests/test_release.py @@ -22,6 +22,11 @@ def test_dry_run_uses_selected_remote(monkeypatch, capsys): "_ensure_tag_does_not_exist", lambda version, remote: calls.append((version, remote)), ) + monkeypatch.setattr( + release, + "_ensure_release_notes", + lambda version: calls.append(("notes", version)), + ) result = release.main(["v1.0.0-beta.8", "--remote", "public", "--dry-run"]) @@ -30,6 +35,7 @@ def test_dry_run_uses_selected_remote(monkeypatch, capsys): "public", "public", ("v1.0.0-beta.8", "public"), + ("notes", "v1.0.0-beta.8"), ] assert "Would create and push tag: v1.0.0-beta.8" in capsys.readouterr().out @@ -59,3 +65,51 @@ def test_remote_name_cannot_be_an_option(): assert "Invalid remote name" in str(exc) else: raise AssertionError("Expected an invalid remote name to be rejected") + + +def test_release_notes_require_canonical_prerelease_heading_and_highlights(tmp_path): + """Pre-release notes use the same title and badge as generated documentation.""" + notes_dir = tmp_path / "docs" / "releases" + notes_dir.mkdir(parents=True) + notes = notes_dir / "v1.2.3-rc.4.md" + notes.write_text( + "# Release v1.2.3-rc.4 {bdg-warning}`Pre-release`\n\n## Highlights\n\n- A release highlight.\n", + encoding="utf-8", + ) + + release._ensure_release_notes("v1.2.3-rc.4", root=tmp_path) + + +def test_release_notes_reject_inconsistent_title(tmp_path): + """A manually reformatted release name cannot pass the release guard.""" + notes_dir = tmp_path / "docs" / "releases" + notes_dir.mkdir(parents=True) + (notes_dir / "v1.2.3-rc.4.md").write_text( + "# CORNETO 1.2.3 RC4\n\n## Highlights\n", + encoding="utf-8", + ) + + try: + release._ensure_release_notes("v1.2.3-rc.4", root=tmp_path) + except release.ReleaseError as exc: + assert "must start with" in str(exc) + assert "Pre-release" in str(exc) + else: + raise AssertionError("Expected an inconsistent release-note title to be rejected") + + +def test_release_notes_require_highlights(tmp_path): + """Every manually prepared release page retains the shared highlights section.""" + notes_dir = tmp_path / "docs" / "releases" + notes_dir.mkdir(parents=True) + (notes_dir / "v1.2.3.md").write_text( + "# Release v1.2.3\n\n## Details\n", + encoding="utf-8", + ) + + try: + release._ensure_release_notes("v1.2.3", root=tmp_path) + except release.ReleaseError as exc: + assert "## Highlights" in str(exc) + else: + raise AssertionError("Expected missing highlights to be rejected") From c25fa7669bbe4b1a8667283ca9b7bc64b7d1a71b Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Tue, 4 Aug 2026 19:21:08 +0200 Subject: [PATCH 11/13] docs: make Pages deployment self-contained --- .github/workflows/deploy-docs.yml | 94 +- docs/custom-index.html | 431 ------- docs/landing/assets/carnival-schematic.png | Bin 0 -> 56709 bytes docs/landing/assets/corneto-abstract.jpg | Bin 0 -> 288855 bytes docs/landing/assets/corneto-logo-512px.png | Bin 0 -> 27003 bytes docs/landing/assets/decider-eu-logo.png | Bin 0 -> 38554 bytes docs/landing/assets/embl-ebi-logo.png | Bin 0 -> 11838 bytes docs/landing/assets/favicon.ico | Bin 0 -> 15406 bytes docs/landing/assets/fba-schematic.png | Bin 0 -> 68896 bytes docs/landing/assets/feasible-space.png | Bin 0 -> 269707 bytes docs/landing/assets/permedcoe-eu-logo.png | Bin 0 -> 6481 bytes docs/landing/assets/saezlab-logo.png | Bin 0 -> 24461 bytes docs/landing/assets/ukhd-logo.jpg | Bin 0 -> 309749 bytes docs/landing/index.html | 1295 ++++++++++++++++++++ docs/releases/index.md | 1 + docs/releases/v1.0.0-rc.5.md | 23 + scripts/build_all_docs_local.sh | 4 +- scripts/prepare_docs_pages.py | 209 ++++ scripts/publish_docs_tag.sh | 31 +- tests/test_prepare_docs_pages.py | 173 +++ 20 files changed, 1757 insertions(+), 504 deletions(-) delete mode 100644 docs/custom-index.html create mode 100644 docs/landing/assets/carnival-schematic.png create mode 100644 docs/landing/assets/corneto-abstract.jpg create mode 100644 docs/landing/assets/corneto-logo-512px.png create mode 100644 docs/landing/assets/decider-eu-logo.png create mode 100644 docs/landing/assets/embl-ebi-logo.png create mode 100644 docs/landing/assets/favicon.ico create mode 100644 docs/landing/assets/fba-schematic.png create mode 100644 docs/landing/assets/feasible-space.png create mode 100644 docs/landing/assets/permedcoe-eu-logo.png create mode 100644 docs/landing/assets/saezlab-logo.png create mode 100644 docs/landing/assets/ukhd-logo.jpg create mode 100644 docs/landing/index.html create mode 100644 docs/releases/v1.0.0-rc.5.md create mode 100644 scripts/prepare_docs_pages.py create mode 100644 tests/test_prepare_docs_pages.py diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index f9b78f005..c05ecaec4 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -13,6 +13,13 @@ on: workflows: ["Publish Python Package"] types: [completed] +permissions: + contents: write + +concurrency: + group: docs-pages + cancel-in-progress: false + jobs: build-and-deploy: runs-on: ubuntu-latest @@ -83,9 +90,7 @@ jobs: - name: Sync GitHub Releases to Docs env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - sleep 30 - python scripts/sync_releases.py --repo saezlab/corneto --docs-dir docs + run: python scripts/sync_releases.py --repo saezlab/corneto --docs-dir docs - name: Build Docs env: @@ -93,57 +98,46 @@ jobs: DOCS_BASE_URL: https://corneto.org run: poetry run sphinx-build -W --keep-going -b html docs docs/_build/html - - name: Deploy “stable” docs - if: ${{ steps.set_version.outputs.version_folder == 'stable' }} - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/_build/html - destination_dir: stable - keep_files: true - - - name: Deploy versioned docs for release tag - if: ${{ steps.set_version.outputs.version_folder != 'stable' }} - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/_build/html - destination_dir: ${{ steps.set_version.outputs.version_folder }} - keep_files: true - - - name: Prepare root redirect + - name: Check out gh-pages run: | - mkdir -p temp_root - touch temp_root/.nojekyll - cp docs/custom-index.html temp_root/index.html - - name: Generate switcher.json + set -euo pipefail + git fetch origin gh-pages:refs/remotes/origin/gh-pages + git worktree add --detach gh-pages-worktree refs/remotes/origin/gh-pages + + - name: Prepare Pages tree env: DOCS_BASE_URL: https://corneto.org run: | - python scripts/generate_switcher.py --output temp_root/switcher.json - - - name: Deploy root redirect - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: temp_root - destination_dir: ./ - keep_files: true - - - name: Patch switcher URL in published HTML + set -euo pipefail + root_args=() + if [ "${{ steps.set_version.outputs.version_folder }}" = "stable" ]; then + root_args+=(--update-root) + fi + poetry run python scripts/prepare_docs_pages.py \ + --pages-dir gh-pages-worktree \ + --build-dir docs/_build/html \ + --landing-dir docs/landing \ + --version-folder "${{ steps.set_version.outputs.version_folder }}" \ + --base-url "${DOCS_BASE_URL}" \ + "${root_args[@]}" + + - name: Commit and deploy Pages tree + env: + VERSION_FOLDER: ${{ steps.set_version.outputs.version_folder }} run: | - git fetch origin gh-pages - git worktree add gh-pages-worktree gh-pages - python scripts/patch_switcher_urls.py \ - --root gh-pages-worktree \ - --new-url https://corneto.org/switcher.json + set -euo pipefail cd gh-pages-worktree - if [ -n "$(git status --porcelain)" ]; then - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add -A - git commit -m "chore: update switcher json url" - git push origin gh-pages - else - echo "No switcher URL changes detected." + if [ -z "$(git status --porcelain)" ]; then + echo "No Pages changes to deploy." + exit 0 + fi + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add -A + git commit -m "docs: deploy ${VERSION_FOLDER}" + git fetch origin gh-pages + if ! git merge --ff-only origin/gh-pages; then + echo "gh-pages advanced during deployment; refusing to overwrite it." >&2 + exit 1 fi + git push origin HEAD:gh-pages diff --git a/docs/custom-index.html b/docs/custom-index.html deleted file mode 100644 index dfb0fc1b0..000000000 --- a/docs/custom-index.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - CORNETO: Unified network inference from omics data - - - - - - - - - - - - - - - - - -
- -
- Corneto Logo -

CORNETO

-

Unified knowledge-driven network inference from omics data

-
- -
- - -
- -

- Support us with a ⭐ on GitHub and help grow the community! -

- - ★ Star (…) - -
-
- - - - - - - - - - - - - - - - diff --git a/docs/landing/assets/carnival-schematic.png b/docs/landing/assets/carnival-schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d304567de0b96659f922d88224dc678f395194 GIT binary patch literal 56709 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 literal 0 HcmV?d00001 diff --git a/docs/landing/assets/corneto-abstract.jpg b/docs/landing/assets/corneto-abstract.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1eb2117bb260604b29f6c2a457b16e0093a79b2c GIT binary patch literal 288855 zcmdpebzD@>+W1+JQc6^$K@m_&y2~O2L{LgPS6I525=B6y1f)|^>FyE~kcJhOMnGa& zLRebB-&xH2-tWEld*AoJ-@}KQ=R7sf%$YMY=b72_ZTQr7hO510rRfl~kk{Ko+ZjZ7Tv zl<&#j2mU2&4}r2EAh@u${-xMoGe}I$98CZK!UVEqOza$-K->_-gM;Fk8vCj1R!E0Z<0+0!)B0;0#y*R)7=0 z1?Dy&#Su^g`Pcu2KFzWIT~Nyy)Up6fK#iM#Enp289qR+wdjQIS@Vjjt&H4F`Nf6@e z0Dw37?Hh�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%0D$T6h{nIvoY;Xb_Ffs1+auN<31KC$^d=cCP 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℞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 literal 0 HcmV?d00001 diff --git a/docs/landing/assets/decider-eu-logo.png b/docs/landing/assets/decider-eu-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5899d9dfa00ad94684d0e3b33ae869306498da2b GIT binary patch literal 38554 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 aU!*ZyZWPy$YL#Cky1u04%N3Yu1^ypaHbbKT literal 0 HcmV?d00001 diff --git a/docs/landing/assets/fba-schematic.png b/docs/landing/assets/fba-schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb1fd51311e92d14d173cd1b8ff890c01b71895 GIT binary patch literal 68896 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 C!#D~6 literal 0 HcmV?d00001 diff --git a/docs/landing/assets/feasible-space.png b/docs/landing/assets/feasible-space.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1f7b63477f3a31579d5827a7856d2bf42f92de GIT binary patch literal 269707 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

rmtzh*8-)v!YjPBJh`nVwU7N+ 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 Ul{-Mhjg_B}@D<9mDe z)=e&c%)32XZs#UueOLln9nt(MtZPZnPwD3m?9-HsuY6Tqy6P|Q_A*HW_(y&MR(c?|5gwV>*`kM2-hLQqK^&hPCHRpzC=m6`u_X`nT zoBl7Ak1Wf`U7cOsMv?CNj2I5r+jVCMWj0F|OSaxf3yD>BK=0YdWb0~1+5v)B-qtbpShXW*w%OKY2|9nS_y0W%cqyCjzA^dRD!`H$7rCz9Jdq~g z;LW-vY!VbJg!h}$uPtiKF?NrSRM(P0*I-4Bmr3`Bajg*L1e$PInfJx>awlbBZO>q< z$(jbU`DvF9!@IYUKLVtkOsjAd6qKXQmyfUEW=-dvnu{0PCq|b$B@vYaCT=Fp+2L_d z!jYi#K+|pi)vISF1H2y>ZVh8qd57Lg;~WZFxobRAo%d@H<~a&N5`~ ziRSUX+qgCb8xkXZ-9R?uwr`;m0@V%9slnJ+?c&11nj_*Br|wi=qfp0|Wkf=))mA5e z#XDk792YdHBH3R|i4kx^&|GiS-3+Bc%Wrr=mM|x|e$P{!)`&j+dQsF5HeGb(KY)V) zDdk5*AxTm`+f5^^+Arz_Y>_XU_uHK(!Q%XSw--T83NyN@kC)Z!xbBu{K;@@ztlSZ$ zatJTQ=GGrFikp!)V$i~>=3@NnKie?%=-s~~%IDb|{M)ubJcfKv!A2x&$v0EmH+7gv z_%p`>+#CEDf;TYla1t-J(>8Uj;^7&~PxKn+I#v75G)9@2`j4;-?PtV-W&Rk|Eb2-+ zx%K(;h`*M#Kg$ZpPcr0#O=wpAB~R*0kV2=c?X*hfb`bSEi!{K)a%kI_L?pH;ou1ct z!g*ARkM#(fk=)eBij(6~To>Y9$EzM{@$P%4|7V%1x-ur^mwg$7^QSg_!d!^{aqM!? zjh6WSVa(XwiN95cxOW zx8tjAO5;J^1W~3P+PNWbTpd8R2*;(dk;qKxqt#~r95|#)wMoeVI{UV10GFWLA%4XD zL^X9kTE;Z)kME}eI)A0lfPwYXXQffd;0{7F=nlT~K4=NNc)Om(vEieU`)jTK|Il@o zVNJjBzaJu?bW2D#NGTy*(jwj6IYy2cB?wAOOZVt*CLjWi25A_h8%8(C@9clhvvZyE zY)|&+yIuG9^SR&e*NcAlBXnzNy7gtN^v36%Vm-tk+?SqH2cxPw@r<_r4yKk|X<_j@ zJ1e|h>M@g1g7uZeRP#pURm7%7zwnlxJ@y3nVU5*5Ct8+8);d|O#wx38%9^3y^`rUK zz5v2}wFH~$cBE!P$3nXv9_ku%qvy>H&o*5j3zvM*6(8{N3IbUXHG~R+k{vfb{0Cr| z3BLKs)icE7g@CcB>zwwI+rBjAeBex1o?(4)o`!C>0%^?$TAI(7*;mPs3?vxVY|kQ%wOCH6Zb;4x#3U$!wm7U_4 zC$|TPlkLq{lgUs4Zo+o>e`9jeJjnAVZ=|!gz_Nk3pE$ zn+<|n`36V|O){E%BVSp`rCSlH%I=6>qVK?Q24u3XOizNZmjB@>t_FOQ*0gaB{aZM; z3vuRby)v+wP^OLPN1PN> zPtG3Sznzvn6XRReyc@MWZk1*Fjn?%(+1-Wwo%#}0JfrUE3>W5h%H%+5;qmq!Xd40R zG?Z9?IRs}swswEqf$(@;waU1-=j<#U#C-*$V$7%WN8L0=cmN?Z50it^eRzU93^ zF*6%z)A=07nc}Alf?og1&MG!j?L^wiO@dhP?ET74bl6zWDNYX z=wVi%)lH+W;{?|i)~ctgk#&y4$gNt=tyBE_-u+u|(C`u8IMR~&?c#@Hjcmh4Kg8rQ zU(zppu%+$EKKf6@X?IMm8?wcH;Ort$%=9Q`Yn-;f3Dnecw6|{?>R7QPv<#OpWjHcZ zNqVX+s-|R88Ban+&dO8GR>@2JgM0p41=>9vp@i?4{YTvtOt+#<9N2zH&a`$CSAzd!8{|_zk2@DZYxO8dbw)%wlb(O5T7oauZt%|gZbKwQ zi5x-gEsdYIhNu+s-m@AGPSVF7g_JCMm;T$J=;&D5Y_|!z5)(}RiQ}|>eF=NAkNPM0 z_~%U-TA;mc{Etud;PFOs^`MP@+6(@e8eseHe-J8$WTmgyH4Aq^moUeFrc#z={p0J4 zbeNCT;_o^jv~SzZ)8;LyME>kAi;+EfNrte1ly#h)hzG;#-lgS6(hy|6S1=h_p0?%O-$GTz%Y04B)yk@8R`eU+~h(eWgE^iA{= z{C2U?TLMxeqO@Pqzb%q}wF0?dl1pEP^?6wFXvhuQT)P={a=!rz+i7S>K{T}Vzi5$Z zRQ;&CrpxeXM3mUWV0LG$CVJd@VP&Vus^S@{g$0L@IzH5LU-#0=aqBwj$k)jbP}~%k z{Gt#rITnZr?3vCcy6XDuLg4(n>`_WZmO>vV zUVP*P399>_`J4P3H8m0L@XhX?rsym5X?9J2Efx6pAoq!KJlFQ|cW5SD@lQCuv|qrb zQiR~I{{WuI zFR}?#(J}MU7_K@zlb9KrlNXlaKmb6P|3) zuZz-hHypB|{0B9;lTtX7rt@qwU8UzKp_@^fGI=O7oaNBKR`9^D5lW>(!3C?+y1e8h zFAR8QWyMAo1v?m`%;~i=Z`*MpJYs%q_##;uNRzBh^{jJGmwbo~UVtxGp?G~U{(7kW z7-IQGnGU)Ll2Byp@0j`J_v3Um7WY{eiMhJAYBp)g9s13cU+Q7jI59M2oDN(eGg!SVZ{G{6QJ#@P3OXK6U^hZwp2e8i5Ca)`C z3hR0{XoOXHz)eJq<$}R@De&l1jvhW`#;SId)%D(-qE^$pv}bz+S{)i*lQ&D0+24ut zw>7N4z|%F?*H!#lowiAzifejd2T28WdVT8ai1nmh&}7TL(HqP%F!d_~JR{93;hvw# zM)7#JT;$!gIqSLxlUgv<+Pd6&GvP!#6Ly{!3c>LTVT73fG-vQQ0m~*gtnD&~o<~^b zYAU^SMDglhOy(2y+Aj3|28BM^%Z$LbE;MkHm-#-&(nWC3LY6@-yY6cY+|Zz;I?4AJRMY3x!dE3NR*aR{yA*5bk~$7nqg2f zdY#bsx7WXqUTEIzY~Z~I8(ycMa-YntmXtZYNdbH|bX2+4^E+>d8dSxz2{cyKTJrwI zT8!8i-EFRS*?~cJA+q`#LtoT8W9ga&ym49uhsYHUMc~}BnBu zv;G0PccLyeE)0^Z`}7%3QOPN^X_Aw(x;v~9pN*~oBuH(}!)%INf}ZXUfDbL;%gZa0 zsZSj_Pm6<-8$T)DhAeZOlqAmi10Le9v%gih0c#J|g%v1fK5iyjc^KKUPz+A!7(CeW ztv4UHrcXI_Bv0AJofS6{L%-s{G+%37)t15Y8lNn4gCDD(Bp++hGe2LDH1}r_Dr;UB88(7#^LME($18AIeEg{qtoK8Ue3TxW_R^c#w$CMPi(?t0VS4M z1B{DbpY7L<4162jr{PTNT)~>mlP-Ml2I1CWL8!fSgGkU#I7V6Pa_svzQfkO8@bJV$ z>&<8ZFkWMcV?T)cKgyl-#0iITOEU!FFEcPm5UnMGFLwtme)sM^NdrIC4Z1%yAWZX$ z@>@hAvH$(j(X+V`5h=Faa$&0(VAK5mJ0mNz*q-(GIG@#$Xos8VvGps;o4Gm=tujw{ z^!wt;No*6Vh+Jc_z3zjFD+5PIO^x8;R#*z&F0k*R~m zh;DL>U(uft1*L8c5=GoojMaI9afw(BSkO|nJN=4Iqq?O24<73bowsGygEnz+@z@lL z$SE)PRbOZC_9N34R9Ev~>;z7;+c(36>A36pR|JCP7-5A<81m=_1jE)>pHQB}@E5u8 z^rhU2bD6D`{@Y?CU0>r=aL_To59o_JkA9AnZBYgFX$ey!0 zQ4_98KnZmJkwa&`-IE#Of$An0`w$}XF_k~SaBKr3M#_T$JVZ+B% zO64VO4@cP))!~#x$N$161RM2y$$09jo{a z!TPfi9u=a9HFmWoKnZ4;L_!+DhtTt~yI@3@V$?oE1cPwrZqQZK5fY)4{Vzr8KR|bp zs_R2+wZQw~%6pB71@DceGU_HsQw=zh70)!WBG9k0%;+CIB)IPRmI zcSY%~ZK`fNjb4TDjK3b437LkM2%3>&ONeX$Y58Mq8noDcW+sNH3Ks`rD#%kt021?u z8}-JH^LLDq)E$b1y8fX8gmb-io+|rv*gOQY63R{}^A_Qc$3>uy+WzTim)!A4S3E%L zwedLCX4^KfR)AU;WK8*GOD)84EVWBfnpda*v-B~mC?KHDJME+W4TroWJo1FYCQ3@it}vALqXYc{Lpe$Gs=%P_)AV7|5aL=oj-GiycU6aIffE> zt=wP*G+8`etS_srYh~sBiO)Rt{%6AB>+`;v!Eys=kxz=;wn-R9WnKdRxyh69U3Fc5 zLe(8%4||B#<;uoU$S){Ltkuv6Oeldp@M7*tk5;V-6_yyXe%Lq!wTmXW~IO<&&$V?CjNh;vub)+fHp6(-@h zJOzJ0cUhF$K@69zATCMR5`{6%P9;{zB3BC@Eivv^d@JqP@yhXbGw>SMoek6nef@>y zD+CMY%!v=(YV#YPzo8A~N1CG6)H^Ne+rE*>2f0xKLUCORZ+-V>;l;?aU1)1Qd_4JJ zJZ(`=TMHG^vMAwgzfPK$>x_TdE@?(SWjL!yI#AihWsp3pH$2RmSLB$i4r^fQ8omb( zKS4$+@Ro<~f86J65n>)uy~YOYX|$lOAIx(^3>v<)#yb^H1{y{`d{Uht`wM<@=sMFq z>sjj=lAie!ctbB*a}M!#`cRTd3%Qn@=>j&gy(oEC%6Ev=YkL1WHM-^qp5D6N2{JHn z?Z*Q@H3%$@@5lCurC4ac? z4)hrC+b191dPiqEolWM5`m~ftmz_Z@(kjCcMoqB3(6lLdNnu=l^%?<%8djLtF#z%Z z1n|;`Byq($?Hqd|OPAXm+7gV>9J8=Y(oQ|xTyFWuQWsUB&3-9~W3%ibn0@zbOEf)| zoQHADA9zQsGh;p9Sa}7W*$n0+MSVB=s#KitcWAG@HJzxkN?IfS+Y zEzFu;aVm`#>E0{O%BoBUFlXg~kO_q<;s8#3J~3|us?r%)cNcT27ANzu&`?fWN43q~ zN>OEcE9h~kCLm)ucZ!Om9?iuCF_y)>CJ$WGR{YakhFPUOz-575cNcoSI^Nxj41II) zA3#!ombOZ;%dw+1;r9|PQC$U=Mc)9F-z79ebo{Cx6nGGqZtFj_<0MMY_i`(+f~$fZ zn)h5~g=>=Jg7@p21@>v+aGQ>qf8}{b${S3PAL*T1F~mDraut}2yw6`ZgpSUqcoWPE z|86~W8Ny{IrTm7Utg6=H`z+N)6ZE|bGv)5>W|bG3W-UtOzg=F{aL1qeAAspe;V~sD zuLV~PeEo#t?Nw-SQ49G@XYd=baA(cq>tBNZe)>4)X@v4L+eF~)f=M4H$&QY2-K|Dw zsV=;%14A8UXqs)PwCVR|jp5cd{a;jg>N&vIeg9sugCRCl6aE0Nw<^VYuUq)5E}vvx z267nu|JO}*J=FRBH}!vA8-^Sr|K}U}*^d+VWWnHkIbCpuN->(rcMI!03uU|~V|rdg zp%JpPa5h6XHh-=`Lv7c04ec!-vO1{X->gip1gsV?*wkt*uQwod<}O1!VWm#&CX@c4 z-o$&usXnU0!RMDGy9Bix53b2OgG4LoaU9>az7M5qYwFENJN$s_^*s(1OoopzCzY?^W@*hAcb(f-b_;_X|mB9s|h#V3)@bib<7@`zCim86$U=vvQvQG~Q^ zH|#rV;%&ceDt>VrP%B|-wpQ}g-v`)kg35pqz(s(q<*-Ub2L9`>_(cgtihUG3B`pGq zN-y@tL%HexE|_0Db_811Kgpg{*SWhN?;#}0WMJnKtr3)pirArI8GX~Jbp=he_W9rN z&!sW>sHJzWt5~8gTfbY5gHKU8vk+HDcixp%6|Jv{I7D)4B1%dgk_UkjTOGA^cMijw zo=L|vJ~j#j3KTkNHmX#T{xdN;xjLd3ES2LyhPQ&}*>~WR&Rkki0^@oKoOSH&@tLvR zm0%LS+ibzkz?i63&Gwic-$&1p`r@dUtO-THChbIDC6erf4g*fnW2;3m=r1B#b-WfT z5;N{J(!fSdwJctWtkOyi7CumWzU_9c&DJ5b5*)q zMp*tKD8evcxFiyOi3{DFUd{E9%$J)e%Ri%^Er)Ki$?R8vcJX{=eSxRn-+NWtUVkhu z#yEc)B?%*`D&whOmW6`)j>bS#8 zWu`e6W=?4mpcj+a5Sp)KIN7x5%_4}$a2%^hWcHN_w?^tEoNUl&Ei$-IQr`r)DIFn8G*Zug%l4k?xv}u zM`rzo2A^|$o25TPJR|i>ZO4lgCC`aj{OG2Hk5Z3XzX|-~+e!UiIm|7N_s4BECH7FoZ)8gu@lR20`XsHt10BVV5Abbofv+vk&38ncY}@hC%Sv;oK( z4j*|>;C#uU_U&W6l-Q36g_38hM2njOiA z*3Xk8spX+;NGdU?X+*V2I8>>+_s^ZOn8~e2POmpsVx`4YJD7wMu$|u0p;;%{=eAW6 zctzcSP(i{Plu5hS!#z=U4^^AU=CDF;hL@@$;q8IcJj|0y^_?%d5K&qN=U+t@*23#DaOAc_Dlb87${0_)3!rx9H%2WA4hdi+SN!^#G@s2n;eGPE#W5WS2a53 z{~*19Jaa=R^9!f=>@fdrZAvQari^tS{ zFAa`_8}P%h1K6B1ZJF~ivGrI!zo;pTNwNfkj@$1r>cQO?C+#w+mLt#zqR4^G5M{8V z3n)J>xJl^!uqszY0cyPdH|kCL!O$)zt%>1Z+e2Gumga@PH+Ak(${Pvut=87JAdydX zEL0y{J&ARAfbzM#7McW8su~p+~_+Z$eEs`-#=$JLv&WqK-QH#P{FHB$A z$x1+g5G-Np3U*I8j|Qz%UOGDJ7zFpzMW2aUpNKo3&{8{#`t>`%8&Ea+ zsq=0|9ef#1yKlvNbo{hf^RHpKW`*&&;ae>2cybtCc}{w%F#t~N8bf?NE6{#p34$39 zy`mJ9Aj|y(R25o>Ruj@I!!JCwSws>uv$F=ixMAW-cX_yxgsKa77l+|A z!+6NX%wp6CYOA+-lv!8;6ERaJLiUSgair#0ss0q0;_&Lr%LZbtR zI@(8XnT;pX=D}_fGPLM9z&eJf%#~CvpJrzv_8b!G$#A?Almohs3Y!e#-Oi(L8T0o^ zbg`x!X{FS<7xTJ~>}IUu98kno-PGih4t@bUv~l})n6NqmYu#b-iQ_n@zdgz8?Y79| zK?~Na4V{nU;-wAASRE27zjCLgdJLxwaI5kZ7%<7<_Zz;_QU_kn$CD>tunw^fHgA0x9IV}g$KCB4M}ZL6W#dMJ&G zDSrdyNQXv8O>9^7j=!i9Nmt{(ReJB@hu-M;O}3b+Z>HMfQ8|$}htHQtH~gXD@h$QR z96;4duUC3}1>!2rvlaRkauHep!MxkuxsI`n_9D1njpGpCY~7+pOV5denXtL z1Cv!-<@L*#-o_HyjHmljbBiEf`c1mpqxp<*Vo9U5IaN8R@LLTb`5a;zJKj& zJ=-xo{-fG`ru@Q2G6mbJ-_u_7 zKL8QPs{>TCZ7{tu(V-Re_yIiy8J4NuwYxO#+|yrc)Ym_etT)Jj2opK_dSu2>iKp<* zD4Onkrn8id45KS_#qUm0SB1XK72M;eZN1k-XMJ{T(o2Le?3?W{p+F*Hp6zf{#Zs#? zhtsKq{-6#(k2jDNnw}nqjx?(=NvcFNI-vH=sQRB+IcStx4uEBQQY;H@ySM?mQN^kz zkmlJK<^0>L5Q$4+zEo4=l%=F;_QdfYK%!=#Cj@fM(YJEBgwQ2Pbe|qWM+8*oufT}m zt*RUBje+CJBhK2@j+|ChHbZ287PpAk%*>bOQLHq*Lr~!LK5vH!A_QSSC&^E#)z6;B zO)bR6Jy3MN^Y`%J<{{IRS(9hSfg&n{5bg}_27fJ6Olk|4EDlyguW%Kx0lE1>DAT?w{pKSepaBj5Xzqz zmu5-PE#USEwoIX!addRJ4HNz8_wkCkyUOq8tDT|9?h&$={bOX{f~ADa;?#kbE`#bb zvozKeZ}!~>1SD&N0?(G_OXT}6@z_5G{ImGUVj64!&p9QwgR4;z;>zzReORqb>A2XO(**yYfz(`d z5^?A*Gmp+abUoZy9AtHCDCOcj{*|Wm>!Q_Ej<^$Ud|+AcahOrl7o6S^B)_8G83GEbiYLf zZ8y5xeI{5|nthDwl3TABQ>Q7XSM=X4G8A=tJii?~KisbC14UU-Uy zEB#347O?cMrBx=+RPv4`x@mG5drNcUgrj98HF3j|z^t#(xE0C|jSOhX@iN%mV&w+8 zVnol`om-@c)6Y4I=~7J2Pug( zEC!{oA|JBdwe1AzM}+Y6MAF$(W^7HD;MpBA8MQTk`WoI1k;mR2!S$WwtZHj23%_yJ z5Enk5Noa!%=b%O@r{G-|3}49yuf8aiDypTKtJva|6xDk*X2m?i7>?LZbXosufWG5H zhikg#O}h!U)z4M~H(Esp(G>j_!C3{OAA5x3b;al#zGUjk9A)AC=%t5426~++=0^V< z*9L~Y8KmxY3~k!M!MG@TZVcJW>kEx&!5!l*FH@qJMn$FCZ;-F>4Rvs?o{ zk~QK!OEwUDUH*QW*I1|dq}2OU>#KhI@}?g-V4HAsT!k*FxOnidf$kuEGBnFy2b$HG zr#QObBhF7g~e^kvEj4aUW ztOx=k*DIUNvbArj$B7>L>^0f+_R+*`5#Jtwvl^> z`SO)-O}V^aOcN^*u7Jw|pH@P=7r?<6Hsfc`GQYSr^b$##ktHNix}Ub!xD`bl7VpxL z5PqQJN(4tFu&>RNnk8{$I_veHH(L$OzB?&gYQxYBHn}%riEMgj6i4f4!&cYARx(Z(2Q-ypVeWy2T* z;=*4$X!;iQVMpkkE(;D1GUos18}Bm?>DeW+seVbR(UU& zIUy0mEgi3YMrihxY})@k0BWFkkKQQ`RVbWhzB)l2_%r%ed^DWUq>l zkZ+7C80Ohb_EX7q5DbGO7-mOu^M)sWSgjsKE{Ur(_@{Y7zv9K@pf{gH1{Q7+ke?YD zyW2JWM#FZWw@$g}Xo^a&JPL;jN_nn5pR}_lyip;r!1UW z-qFJc_(8KX5YxAXjFUN`*v3Fv0i#1XCYstP;nUsRi`|aK)gxxTre#J$CRaIWNxiyE z9M+AJQ#!*W$2>gKC)1yqD<`1bO#>Gffs{)2Qcj%j)HKd1vx+xBl6{5@Wb|1L8LG9F z?5_He^DeV~G0j?~ewDkiSpw1^K-@p zR~eSApGH&)vTip|@IpXtB6j>&~h6>%2D zLo;n1NU;)(^;A@xcU}|+8sAo7*%V}i?zrs`7KB8<}0>;qyf?hIc3WbyJqv1 z4DdCHoA&@1pu z;t%)#=9dY^`B&RWOyr)wt>zvu_+Z7e;F3D4@4%RMkbp+P+i$x(xd$z*bh(C?s#Qpw z++`dyBxh&)sxk`sC&pTi1pc_9|6TW)lD}yB^B4|Z4;Mm z@Aq&F>sfT~S;9@}9p-5%EH6cheh$TuVBR*B+cR~CBp%ZGm!ZC31gugGE93hxoBEJ} z)#17ig&J52&t`VvEHEHC9NcYOdBqDm!;Q9|ul-@+P1q8Z{I11;OnssS=gR%m5Wf)evPy4at4%*}`nS9c*-gcCJQ56QO{ zYnq;-RLkpOmd(8vWKy`7_tt&EE~^?7jFP%zt*3LQfUk*0s$6iD>ERcU<(Ho|`nB{=0U5<&2+vTSUq;U8sZA zi|YoNxbpMRm^7_!8=~cg8MbLnsj{$Fs!dN`@~?vJR^O00L(&rlVkkdg{^Y8l4~Ir| z7k}RSg#vce-&@vtWE;BwwGq)Y^BqT{t2dq12NHh+k#((tMR}ZYS2~rtQ=4a(fhAea zyoJWdr?MryX!kaWeZG>+?VovS_XltMv7VK^23$;xlujx*wk|1v04hMMgz&1<%0!VG ztoO-*WtIuPzA~eJyKj1g=CVqHG;cGo4-Zzq8LL&R#aa4Z8?5U_9uq$No-o-^i*IV< z+LM97LaaX(SvgiH8{=^kwmE6?cu#$V!5}*pe1kcg=BWmj7V`NoX$M6OP04kOiT+y)}P@_({tNp zAgD9B>F~~1l|hmRXBd?89{^t(Z)0f4jW;3}{X{sN_e&^#tR9Q%XN?+axc!?|`c`#K zJKcO>16DP%M6G*NWBnU6YhUdU3x({6Y0!TVnIw_|Dkb$kg-ywpc^XjADJ?I24c;NN z*e*|C$&={ldhRJWS;j&t;51b6w_GG8;VW<5<8(K-eYcGt|8LZ64>$zALT8-3@Sy3w zV)XTd(w-HYeVLjLRUbTR?RK>+Z%|`a(>(lLE&qBlT?@d?=u z?a~W*{IhaZGiXRMV4+jjFzTg=Y}dak9*= zTOw#`NF7u3+s+v#v$gYY@T$ig$tPObM%nOgA~UI+-v3gy=QV zGKki58FWKUnQW%P`o*AmZnW2Rw}hDI<8;^_sMR>+1X1m#5M^ZZ0Xwxq5zxXD|A7=I z%|9=yxjV@Nqm3~b<1s;|YO#o&5W1BhruqO0(! zZuO&Mo6B`|uhVIT?vkB8YUX_^AUP0>I!Q#HJl2SyJ1ch{kDkjtoSnKqUE0XI^8Z3E z0u;Y51>2h|M*p$d96xFsni(*$Im&S`sl^|lP|(!Wxm|LI|2&g-=-7#RT=k}y5OSxy zHjQkm`^sG$g(g}QQ{abwEa0A@QTM2j5({o}H_HThf`(0f=38HV9&LbO8#Px}2u747 zl9h}PH!d6Xj?l^V=4M}29nlVV^8Kk=bA>(<(HsNm3xdKtQI(ZHC_63SR zy4#XyD@$)J8rzL@;p)k;{y351>1EF(6}Hw-K)5X*iz-?}TFp&VRSh}K$+0zjxCzL) zYW1>6B4lf>Hv@>6N7^JW7LTtpxR*kkd<|Tpre?fKl3mqa(@e%JmR%GqnCkkWlm9=l zACc|t7Z00t;4(N8-Xa?1T>UBYXTZ^Khj}Mlm_bWyqUOm%{ORB?Ye6 z>vL1@N*vR`&No_J-|ipD*@QC+1EyQAeV>f9l$mK_FE#{qIA?{Voa2 zAJ+`o%NVs1f9Md!K4_}#E1)$)2T(uj5Xby2B8&0;0|uo4O_?+L{_R+_f-|&wD`fD+ ze*g}-%d+FWa`dO~jiIyKPZq&c6W;~KM5dk`1p0Txpid^D#Ou*e?-${fLHL3Syh4L` z1)qQMFyE(x$`~P>&CUcTZ#q>dvzreqzXArgQsUO52RyHRY}+fJP&;3ze4lpO0EV&T zu^Kov&iVY>e*>10`ezDT6N9Vi!4(Ukd~G=JWdp>WR8wVOij7Ys`_gjozGY8fRZ-^! zNhc&0Q?5-g^J#DC93*)(>q`E9*uTQ%X~?l0YvY@|HP*^iGYUe`y4nc$gs@eyPEA;1 zeMwfmcc^aI=Paip(=PPUDbuzeUu|-S)S@e&D^GK+rxsBORB0c3H=+cliiu_`-l*`X zHNF2%$E_$76u0Qlo11hLpWXJbSr03#?EKS2w-js{c49)X{&fY?20F>zR(<8U<%#5o zFN%Hj?|3mlJS%S8o5zw)T9+rjAghIVil5Rr9PM*{#>+_Ao2VPHmV3%Zi>sT!bQ%QAWu1@7IU;Q~Vm`GN_7Qp%7;YnxP!#FFugF?s zbmxg(lvcji5Gwk6f5vi5#-yisC$Tp`>+Rcg)u*>}{t<7inpmP`@!emzt}f`44dLhaKQ8WwPA`=wNF?jMzW}8|kqOAM^T-1!octp=$t-M5f#BvbsusFi?)Nb$ z!9eL&KY=?#OYaq0rPX>(zKk6_`JI=q52U z`BgAmOrn;!R3=@=E8R!CCpYSUv3gh8kcv+A>Ynt84|dNgHO&zGH3GTzS*5)ywhVse z*~cq0wUrg*eTqtI%4>~bCF~m;yFOd%oOnX>UdOt11v6uGA@by`nBPm~j#+&;?v1Li zSA6}^^id%8s{8B)zAJf{?pT?pj-a-7+!asTeQOUvL+FoXT9Zi5o!j5}BXvPGjLGCl zx?*X)9IT=C*>RyK`)zyQMiqyCp$Ad|lp- zYewEe&ctVKk;O^qM9J`%-OuGSDvzBlM6sdI(0x47HdjAFv;~j->VW=WbRE`IaVn8m zF7n9~;;RG-wPhJUS;EJ$Rad#{(1^|-lj2i;slezRc|NB3aRd{K5jmZCBZlI={sYV6 zvMq7fF{WTAvEe5nzfK!dDGfRR09>2TYmxYEhR(QVOUni-X+^PS?D8hE$?vO_T$*)+ zIpLXal%B}^d>KY2c8Sj6?IK9Yv@Y#Q83qwJJfvZyMj5&JuD)+U;wvvq)PmcnNR5m0 zome$Fx|>?)v{hPW5VsGqv9LwdiV&(UUGE>`SuRgp5fWhFUn-fA$rkYPd4}`GK?CK-Lven4 z`)L+zS7>KbW2Y#OswJMHHr^G;7!(YPQk{}z)76Y9QjsSmguPM3t=vT(|u5mUD*7*6lJ>Mj`lUI6yhyh<>`G zONK4B0JizSd0RF2@uR)+x$xbul?oCCM3acEkjp@tagrG3A^5t^O9{Ag5b;%DiRn&I zi7~|Xk-<@=^`gukF+ujvw1;K9r#4sdB=kG2a=916)XsrZ$rK!v@}yx&CC*XHSUt!- zzqsG&2eLbcKXG;4T)E1{FB*NM9D4A(<8&0|Ba5Nrc`G%>ltw;6L&bd9zebmW|yI$hUwhzCZ58fZ+{Nc1%lmo zkAMXN3oCJV3g<8>KHX9gM{i+%olB6-jIX1@yp5<|u=P1@jK;t@QKRRYywL~RSCyK2 zOXT`(RBMoZ-Zv$rPmx_3{q;{J4b+Y_R#rq&Vd-vnkwZA8WWZ$2%PC9u7yHm11MC&* zZ!y%8R8-VD%>kT+svL|dvU;@frDxYon}&Z*a{pPI<_+zhH_Hr9Y}B5Nt6OR&6elud zqWH#98V{W!JCv{W1a!351p_406s6wS&INyr_>N&dwaN!og>GxiqHeO={9R(f|4i(r1uEZPx^6f=%lJ>vv7c1?$}< z586X=(>kXE48xm?VK*$rF7ug#R2Y)1k!?{Z1H>Cbw;#?%iuRs3gIrO#-KhtIFjJ2! zbXb~qqNlR+&`H$F;2L`m(QMq+*XaezY)E$4T)ul9rKFrC_uff;FHwz?{ z&mq~0ND@nd)~w zNxwty&FCmD6z)>NH@|zn1@I?T{d{QhakK5bVGBL&ZbvBNz`Utr?$yBIjp0@P$J|HN z-z!6j$^}_JLcyeJl@4?pt2Rimv`Nbj-Mxg-S_|8An>r@k!p~ZS$v6a7hC+i<3fZiP z>)CE^#kt;*M6WUM-*m86IgKWHu40B(Ij&kOpg@Q_5Y}BkbPU>&yAX9gF<*@-L@%M> zYi2((5*cJW#9GU2f-W=Mbf!S}mE4)TCg#0gZhMT)&Ex-!5od9>VSQ}8V^-$$1m^Njpz9KL) zF04~TNv``5S1axN733x1mlt8&<@#D-1cH@|`Z!b9T0fs~+Rv*yHsFam`j|S!m=#?2 zhT%U$Qid4TfS#Twzc4=c)y(81&GSS4&#jGxG+J_7i+)l5D-qH4#0b_P{1xtvKw5xr zAeX@!te#y4GHv&UoY@Z!!Z;bK4{=o+9B^k=SBlQiW~pc~O)vAdpr(KWw`0{PG-U-Z zrRDIB_?JiJ`b22^<`7{F#$@#2$?@{uYEQVAb+mKw|K)7jBsvT(Ze#f*3o=M^{A$KNmG%c7IP}4 z_3DE5$qLf5J>X{_yB%;RXZ?0BTMDlF8Td&?RS^cgFlh7OffMe6#^)^Dh*c$I=M62^~3?*h^$*W z)t`RSh7OM%eIV8A3Bzkb>vszL3Uc#*Hz0ywVb@9R7Orty<`j|3`%IRqx2h_n!Y`?G zy;klbAl)Ihl=+(?_)t}1Tuz4qR#MexorGDFb{k!IBFMyyYg*B5r&_tTo;jUYtnX$4 z9z8(e{Ev5+c~82?;?7of4m2_$uZkS6PC^7f=XsKX-VD3HB6 zw4)|G+f7e*!_@?X)d!@ZNnXuv^ZCiUB^*@~kPnJbn)Ux2^ZDD3HuM8a0@OYLOWD^b z0jFd++S}8b;)HW`c*+7eCdX7ks?5Ysi#=FW#jVrT449@fd&l!J>{%UoLj%WDZ^Y7E zJ=1z>aHwe8>xXB0+P;N?9*pR0#!R?Yyj$b<^#h!d=}NAXYWfE>>x;FmXLO}`Dd6A5 zDSV4wCqwu`qPlgA!ogK)>R+VtCoZRuPrk>9LQmlk9tkQF;HE0Ml6;s!_IG?8#hmM$ z)s`jHt428GjWe}+!0Sj-bN2@zj4t6o@m+sGLzJ8e z(%B^UIpHY|B3|5Gy;?%K4wi3&8Xq`7?YD`J!;w_OLC}@u2ite*xdU4jyEKo@X$`Os zJIrc>$T0@!*9Tn}jis;An)mP9bv1xJNHT=s2-x=#Aa_|~MmsIA6Z zGJENn;skCvl*I`vsWUbCDY{E{e)0O|!uCC0yW(1KtAp0JX@^jkIogvU?rVq77>NP* z%jcwedef&$!)3Yv*`KFq_`u1v1t^Y)bjp%YpPUsj7Vbmwj2k*rn-5UsCijOcakHvfRL?*{%WAC+yB@Z*QG&zb}xpMQKRWxZKfP zeiEgB`sHT1V|ohPt{oDq>6(=pwJfZ>X9-d6IL+j3Fz0(%oY6NgJKHGsv3e(D_ zhY=a3|9Vl$Wc-Uu&G%Wsi=uBD!`c6fu(t|o>kr#@p%f@y+}+*X-Q9|}xVu{@w79zz zclQLR6!+p1AjLIMpakc?^Umy}Z@=H{({&P=HEVwBxv%HC-(~}L3tr2@91RzqZ6(jp zTlEOgs7jWzbw?18mMmg}hHZ8@?W({%zYM<`Sw5T)EMy9M;nFmrWJ{pI@B6~0hm1Nv zp4RBjI%CS^iCFPo%;$saoA1dnl4<9~ndHU73CX4VgE>R0iMG9Ov8f1d9yZ+WrNk1= z0^0erB73MVzofHV9*;|yyK}4*XIAgy|1ifmdn%7o4hhmYV8~liDT|zer9S&wjp7_B zFF}aJaeBpX+k%x+!oJwd`7u(hU6^830{Othf(m!7$_9A~Ij#m*9Lh=g=_VEN0m-B` z-(zoZJ|`u^%{hlINf3{gO}gG>Q3Ow8v+pFxzG<>A3I^zrp*<8=VE?sQB5|VAu)b** ziL}gw;Z!z(<}^K7R88zul_o`(WCcx1B1$6_uSLxhlfKOUs?8Q)}e1sMACETotMeh@_ zSNhH;ItE>L2K0=tlt_&q^Otq5Q6q5gxo)u^dY{+>jjeh|t~I^IHL|Z`0wb(dm`Bi^ z9e;iGN!NCGVb-?ey4en^-(30RWvsYVD7;Ed?SFZ}GqK#+TOA5R{qpktlEV$lrLNIU zi^bgngd$UG$5-bhCSe!*x|mhg*$!TJ3Oc~&5v)PO^im*StYeoy)(Q0Wfl6rl_=NS8 z@yox~FuwytswF#Hnp@#XnX36SDwwK3yg zo`mlGA9I|*LJ#ZFP8+}0v`Pv5L~kg6>Ri9{0C5gM%l}^K|EDj`O8MP*M)_${TH%%; zf5#voZ3n!MPxP`AM3J~?8Js^8eY|C;r*&y6PtRjB-eM)V-Fe0Dk={SnVY0<266l4G zhpS-+XNg{Jgbt?dS`Qo3FvXC-<&)=4U-o#Up~X}`M6k04c?PWg)`sT>MlK8YqjHCvyGYo7LTxOOj^)^_fG_bW23ZIXy|^lH#1P8*vr<(smF2qe|1q$>d_zeMj}getU?O}1>m?x4X8m-gyf@zB{W zxFE^--zH|>v;~})TM0r2xxJ5qyoLJ)X$QyLiHgWQvEKU<(g5!J_0i0q3?{R{dXNtLx6zzGi*>=n%^=bYz++NE`6#7+@o6C*LspOHvzL9{M|Vk?G!mM zv{QzEPaBKL-Y>~wuISeVmZs=t2OX%C8>g+PH4e+SKOWNi^TB4_MzsfQWe%~&6WC48HaPYIRq z+BJ$)Z4>luooJ&k5Oyef0m`a8hZw(7iH6K}B!bp$m#) zu3li7Xuc^DxHn#`Fy*?y;V}GA*SY@mv~1d4$%p)HCIC4!!8@!4Dp>kM!vZ%yC*g?vU3Ik|BV`1-$S%vOuR)B$HxAv3$>&cNrRsHid71=!}g!GyL3Dx z2{L|txJkzbV(r2-7gx`JU2}T3Gkpjwz*Ck_KCB^pG1bmdFduIp?}r)-d9WtSD<#X0 ziRSQj(F+)r3d|K6>_^hC4KhiYhSojUZT0IflQ!1Ef6y$_{+tc+isU#bfN#$lY-Zeg z{TOQDW^_5GYj^$JOr3gexw-DULaNzsK%0-^oSiI+18(PuymH+XDtsD)-HHdTz2t7|o2tCSq`DJoW4!-RAs|k>|W1eew?9vsR+088uB&=^V ztk#XbZW&*u#`b_$F;C%WFtJtL>rJy=_BzCQSRd$(_&(8;nfW{0>{E$t`toP=2yNYF zAt=QSSaAO8p`l5xjkidwVIhJ)0;NXvCjqkRve!y2Kv?X|Jm!X{skXdGwASURcW-OC zom`}*DmW=gf{zrTjZ=ZWPWpQP_JVX06Sa$H2GIUgkn;Efh)I#>3PpW&J4m#aMXtVG zc&qy-Q+fAdy(wn83)q$Log05fPYnQBsM2>cu$?M0#_b|76yR9Hbx-L(ilv-Aj`0zH zTWCKwCt^#l7`*9YCn`^nWtD9f&kU%(Tt~fh3@{i(E=XvyE&TbcN?(~9UsF}{gI*uv`(YnO|2Nlpk4qP4PkN)wN}0)< zKQf}E0(5Qm54)S<)ZN0=W9HFda6t-h&Q)Ld;`mkL&<0o?dDTy_e__#&vV3J@>b1Nx z_}1+utEP18pEzDKxxPNteI&YbE7>o^Ac-=^dva3O{hhI{sSR-~+@6VFq`nz-s+Jo+ zIk(;usx2?;eO&-vX0N4RXtQ;v!>Y|&GWC7XQ_&mfPBrQ4(nK(2&3S9zU$5uF9PIDl zEYx#f_{D|P@arP}E}ocbWZ*k9^(C$JoJ{wDE7SfF=R>$u^(Cq9UF`%}ZH z8D`U3diRGo)3-Sy#q_ZoVtM4;fkFmsd9$`U!|&7YYN<+;q7BIG7k%>6hg~P7Hbi_l z!6ph53k?b0iQ}MCZ}n6~wQkyS%(5goqOg!n>EWLF$2`ARD)w5&>MNXNa7cSV6155- zs9vnRA;hKrS(+@se{wTO;@?u0TydCerunQQ6CYsL%tp|Ji!YU+TI{2`4dqB*j*s^} zhGgY$l~5gmY4Uo)AcQ?@HX<2VQWEz{V^^ebGbPjg`UV=C=f7V1UVm&O)}lL+{*@H~v6;2| zg_J3yy+FoL?ug32n~zn__Q^V&G%%DMR|ha)O>F1Tan=jpVMgLealX(n=J@x22=;^R zTQNXmqB)GpzWVX6Dnvqe)!yOrpfc3!`m&Q2X^Fu+>03&uid|Ht6!DeR=~k|(e|i-~ zc)$V5*00so{cLoRg*A3*!!I{()Jb;&q8g2Ojaw>3Bjf`Y8LmI7r-{BRfLeckAB-fz zXdDaV8OQ$f2{S^*#&NSUCG2R>R zM!W|d1nDo_C`dV`o~ZnnEnpEMqU3nDw5>ji?;6XGIG_$rL^uZ<<^Vc-8pYgW2OHsGVlSW+o}UNd$a$_8$97)m^L0mNd5x6|ZXab}bS+nqcHV}YtRc0vd5 zB**N*#u*In-wJy)q(#-yga4k~x&q06y#0|g8eo9pyy~I@3b5-_&~6jB2g9-aVn#L7 zdih?%dc=CmoP?_9n*Jph*4n|x@r6#>T%!|TN@8d=35Dbbp3hP+n1~&1_H&n&bxl_) z4NFqi%e2g+m-0OBYiaOJRYTtBvIu(8Vy)K&KPuK$*2;)1qksJ6!*Fj7a_eB&AzW#! z{4dl$7kNAvDkGh=p-C$`&Jhd79`f(;d! zyQVG?QHDiK05-RX(z3;Eog&xX;4D&zhUdr;3Q=dVQA=m@(UW~TtpQTcNW2|2+ErAY z0gk;Ao2HDSoouRyLO~BhahnAA29O1HRg2#E5$IEBtCEMea%W2g=$U~>am*sI7<5|U z3>c3%8BmHJ2DsFc#SuN~!_3EYidzDM2d0w0&gT6NO3r}q=kV>`rtj9X2&MSBLjOYm zKbz4@xMt>&HNcI?mu#B*lKAkMVEAKYb7XKx6iTJghe^N2?zexi{5=HiBqs)yoeDI1 zBq+g`Vsl?Z>;kDt2S-M-pN0DZj1D69=)|lLkfd1KHD^pP($~Tb>APw7kM^v?&&ID)OM^Z z%0;QUWEEnsRhlf&$gWjCLku)Bubu6I5QlWcM;+;EDi?}tgy9 ztToNrNdEDrUCjG*+v>k(xG1FWv8wNXY_+l<4#PtHQ?=b2%+`JSqo$9Yj%bal*}h

B!OdWgI&p$i*8pu!+?Vv~6E+E*Je{YD-fr_D(T0wkq_A z?fKl<-}3hb)@atn_V@G)XnXg7^uMY%$e zTjlDEWl4z{Q9Gx6a%=_9NRofNVs%yBr5TaqitbzE%L%zUsUFl%+SRdcu1&^UqlevK zq1IVPtDv)RM1NS8f9uoJ4|aJ8lD=?u zVs=GEZ9aj4mG@EpVE=+fkp2+Bi$D=OOQn%MApKau2BUV5<>yM>>)bJ1yV1VodQZIi zJpB-07OJPxwBnzC+A)qn$~NQM5WAPJQSk)*AS>csjRz^47ea+uce~KyK@% zc5%5gv2ft@*9vPe2YYLDSC~o?X<2`kQ9JCVb&C}JFQI{fzP`edFow6P3tC4H7{s}p zq^B}N;OUZ(&8&s`MA?IT^WKxe*YidKnA5AZ^R3Tw;YWTNaz3*CJPzLJoo79dO)9VL zAS2tHKHAHK^9V|j^WdTOUmtqi_vykrOOjegP>M!HL524;$>rq8rgh05$P~LlEvxI( zcM`243?l&{XK(;d|Mo<&J4vW-67`AhLWt(^fFBOcYv&XzYCmR!U(w;yw<6X55W)j) z8utrsR~~oApY~tB|A#QXG06TO!lZI`n4i1VotGHvF%G;W39#r^eCPTvTzcF^?#G0lQ;;-Od8#h~j*y*;}Qpn-XK59ozO{=uSv2?Gl znJ&dghPL1j?yImRmt*LD;I?1Y8uHB4C(KsIiIT^Ahb6*Fm)});bLajCoKg0zY#vph zxJ+Yo0wnztHs15%_KJ*9`1;Owgib0Uihx_3)3EAzxc`keFsU2pZ;3-4@oS%j*ClaW zchTuAvnbH7}jk#@&pMOC6_#_S&AR2T8@F4B@|(39ETMz#t(D zxt5!ifjp9r>)^R|0fZ5+NLhK4!DI-lCwKX-R z?6Qgrdf0V{;?3}*e!%E<+Hz(XsmUfa3kaa6yKvyOLXIT4eT)k9PPIET1+jGZIecUk5^O-;*GSezGkS*(|KhfRkt zw|4h#xdZpq9i5huCmh#KnCjQ%RigMBfCb23J$EhYmg7Y;B!ZGZ^vaqef<(5w_wC+^F zHxZrr_W8}`)v#F)d#T67gNWCiNJGQz(euQ;zO1q-x-1>YP*<5RO{pj-H!eWPGZ8JM zTAnV1r!W;}6@7r~l44i)F0GWs#lmD5`+ey6Q~N@iMQ|r0GD{$({0#1CKJJRLJK#_? z;T-z>11^;N3ZZ?L|1)>C9YprhbiWD4OOI*^#`m{v(-TzmcdjoD7=d@bUX)Y_qu$j zkVfi9nC46+cJy_{79szSbCo0RhTzWqtHVLKZ9aW?yxK%7G75cVx|(sKhE00Z%xM#w zdOzxI3^P=`jK8rS?#`(bOwl5G0e zur?#S%P@7VZ=pwSx`b49B5wB9%A*g|wV7aIk2;ik%Bwz7i-1RvpH=g-gseteQGN@p zTW@vA@yKG}@Nz%yoWXj4K}9Z3QSDKOTHmOq5mEn<{bg@J0^Y}?IsCg&zx8^-R|>T; zT*l8K#l%bU9|MEipx9+EKwS$>43qio5$Z@=L#v?B^}f3jEv-)q!T_=uv!mgfG(>*DanV*QctyRrch9gx_At2nUt9+U^} z-KQ>#?#>6UAz`Fzd6-Op;>%K@uSx5Vvn%c4^84qs_K={3oh8sUgjRQ z3E~uAr<%g2^bj6Pn*rIbsc+ktH*5qkvV5nL|A+`hU{g;@COs= zOxr9f4<>HqMhD*iBpp2e$&#a<_}Y2Vxl;2Z(s&ZG)5-vVvpC;sns`_E*Fer`JR}D~ zeHzdt?K<8gE?E7)F>o1NqZeyzV6?ET()I9F?o>S`4i)2qaQ0$ zkHLbgIjyqCuQ&C!ZcR|YI0lCY2z|`MJ>mfx-17f^cZn`t~f5F~mT#=9<`xckQSCOdpbFoi$Vvl|& z^hmQ8utOI=YZ@W|`m2ydgGOa&?I=@eV?dWDWM}E}E2RBz2gpNbK6m*}uYegmP68vI%g=faz+TC5`(wJ3vtb52Gs4 zgXJkSLK^>0xr{=;m)NtA_51#eKv1eHNQ$u!t8$hEanv}L;@x6LrR?q5Knq>eA>=k@ zJMZ+fXn5C~nFTM(*qFr4!zs&vc4%Uz-949FS}6+p2zXmRs%m^D-PzH_>bqP~DH835 zDAfv?rf_fO%#5OQs~j@XfN5e@&5*e-**B*D5axYm1O=Ox@W$$#l=7WhodGg5dJ^$b z$68He?>iDI)fgPqXlRu1#~oj65t`!5Ry&7Yo)M91<6BDf4XbnM@?QH@WX^2((baw> zy@UT}M)T~YhuN5kVKv9|)(~pO-6{8ed;^9IWlGM{Ks{9k$pPHS zX94n=*ulYo4^x|X?0p|aT@4fbl5cg67(o8Zx}JT z=hRfBjbYYSGBv8wCc#XH&#tb7!1baBSq_KK37PUm^s`y(3qd6LRKKMZ^r(c;>#?=Px5fRBM3EGZM(kRIb9<_*{`gEeq1wYozjv;m$jiy-_X#2VY5~}QbVav8XLB+RzRbx3#$icPTh1*CQuWo~$(lf$)M(FjTkZtv-9FKcyoju!6tZxSY zP`8Ft=kI1(@`DQ{Q#xjtSv%?%McJ(D;?-o@#`Wl6B8QD*J8zJu=E1E8BYl9KB;rRk zG?uXnL~>r*8)Vap2$Kl%JfZWX0l>L3H#iWaOT7{!m@k2XA*1StKsZ!m`P;-$_4wg+ z=hg6LsREYb<=14I;D5pS8k?hMP@z;6Sw_!@@&`;_j-}JcBrN{DDc%{gN~%oK%Yc5I z?)2chuw>7u(O$Yo#jilylG$|VzZ+BLLa+mkfLa&8s?bdIM3hu3D zUh8z;B$jb2*moPOgH2h&4_t}aee(luyi@1aSB&ispXoUSujw)9aWIif)Fuo<<&Ct} z!l7GXBin23-UU7_A;z8u1vYwzd>hnxl3yZDXR@cpLe)o?0Vq3OFOd(2#_P}A-7g~0 zT}ezol3=mT{J10R(ZbgyS71x_>KPNLgO`+n#qEf%(E%DHsJ7pi=lz%JsT}jquL*JJ;l)kV`*4GM%$xafo7kc&8fgmo1yEl1GFyBJ{--X`? zgo=*NEWn1T)2pjCVr#;wXOdZ+_sJ*V=MZl_sN_P=;do+`n5ijio3E0i-Ss#LTt%Cy_sbF_K0oOND`s65G z9l0po2$|B8Kdze1agvBH+xOz`u^~AAevonPm~BIo{<*ag=t&-kDg&AQz za4nq2VqlwHR!w#Hp$}oVBIV`}b~S)6xqIU|;~?iY4H^nW$)WEP1EIdO&~F5(W#cI) zx~+XZtMyLT*Gsj3qcui(N3!E_Zz$nftV|E4sQ2;022ZZ)O4~xr&BKydU*LX%e;#wd zj~y>dy`qi3ILpv+f5LgUBq`hz)#hd$p*7>scrauRwIiG_lug5bd&Et1Gz;?3&5tjr zHS%yy9r%xGu@p*mI&5vesPt&EKO-nbO{m=<=`GX797pn9*f>OSjb`AqFA{{;_EQl6 z{B-EA@)m?DBEaD+#?;Za^Z6LOU7lU3>zuM5pQx}T7klG5isZQ)fxuK~888tZxh_uc z7|QVWDa=qiJ*`&9SPzsgP@XC~6{b4Ml z^@qphkE`x)GZ44oTxS|19uC;=NlwjC)*5(e_p|r_8(JHZ1S$&sSZi_{eBY zr)#S7VZ}E^4mHORf5*(nJv8JoVaG!8MmXr=viZR)7m_!BBn{%(DC|$yXrAKwT^*f5 zPpvH9Rl65M`eVp%(DieTcUFk2q?THjkd%niW_FVk4VfE$KWxY;47AbkV@z&6?*oFF z9NHI__xYmGhA4`_Llt_j&IAt#s2*$X3~@R$s8301?FL-9i?v*sdz zqo`x6(Btn_9VFD+#q;^Tb+BJ@Wsucd?aS0~uXuHkeJ@^F3aeTgOL_B{wa>rI_TewP z*+j|HRX=fO+lQp?y=lU9!F4j#NqQtJf=2zDxxC9F>1Ki_VUwQy1H<4venbOHzz6n%wr#Vs}GKE#UAcooZFr3#h+`#8Sbmit`L>YjJ4ZC@NH(h zTXJ95H0kBFDcYcg=Pf)d_)Eil+Jc<=Y;6UZ5}i9=+BP2LeH_14q4vfr(CauJu*fXw zs4mXw>?N{z2IE+`Lc6Z|b~{}h%k$Yy=sv5wDq!iEenZBo5P2j1$>2xU9`qkVd!gd0 zZ%4NV&X~v1=-*}`a1{00b^@iQ*rCtAhs__vHf|zyY;=_c9pOCpbMN@+4q#g=P{sEh zS$qP1zRgHGA{Fc5O+gAdp$R>qj5vOw6?Dbb9M~aQT@kXSzZR<89!$$B{3)J0ZD}7& zG-YLerr?S0*Y0h)998SPbYn}0_%~1C9Pvj#lCOz|_s`v-j!+lALOOel{br?%Vw#@W zL;R|?z#9##RKPMaXGyS}6Up*tesl>t+epW`3JblY@ug1}=BW`v$A?MNv{G& zq7&jnMc;o;HPab=|HYPhD<~ls3JSr+7zJ5sw4}ZMC?X;II*9;lEtNn(iDBB`CmP)> zKn)A6$Z`36(z0;%AHst+juMRNq_QH8Ho4dLNNi8!o=Ja{aOv{?eb+-BJK2rgPb_I(Q|HB&696%E>w)U2Lbi~7uhZn4Qr?+G;Lk_H_0BMS>@Xs>T$@zaAD8Z!E0tJystQf6NPG~F z+@xNgZ~a_a@Qw`$%g8;FtZ}F!`(eHpa|Jk2O&9~C`=el__W`d~H)Cm$Qml?=U2jY? z**mZCvVt9Q>JD)MH$djAuh5Zv%QbxSV!t^Af6#W;zEA%^cunOhUMh3KJ+^f(gHf~V zCf%*E8FOjh#j^Nvu?mfJCGw2Fr9XNW;3xjz*qcZ6TFuUvXDA=fhwQ+nf*kTLBSKc{ z7-X@X3lcfN@uONI*K%ezbKu3#uXSU?@xqj?L7hf9_<5nhY<*AV(%&O)eJ7}G4IQZ8 zdAMwa4rEZ7(*+% zgbG5*?T-bw8;tS3(sV`3IW%f;{#COme}+N&o}D9qN{Fxl5~T_!b)RxaHva)@q2WKfw93 z(75GsTTob~aeIhMomXe4MPp}6`=vzG^6J$OqUFi`R=OgwNvpA2g46a-qlA^O+ZRSa zGvBt}iDsIlgWz)%Qk0SrSW30i*T#1T*qQ2m+wB(6)oeX;E69dIJw?PUhZFAg$A^Uy zlka4e_P8PlSZ-=*>hP){Z)nluL*dJ?xV+<{!*#A$gY*q#Gpnm`B|ZkHn>Qq**?%s? z_40?1F{QF`YI$~5g7+AmHZb4W9ydo-jS!Y%y?N!|f0e^=xlUxlorBW%!DB;7A6Bdr zY%xRLSadx7G9Tdlja?o{mUiZ(JyA=YgP07gcr*QHko4DhFDyh?zY*|+eBNWD&nd~_ zXZhi}))*7dK<-8*bJCDKe5|Zis2=H#7e{FDCHDST6ty9oOi$AJ4?(IbSsV4Kvn@vO z%R9JGyZF|Z_T|^3&6+fhm3xN-a*8wfC@9y`Hb~lOp-VmN}rA{L4P(59>JPK4* zSGD)_cD~Z4s|HFd0wFf8``gZZV?xv;w~Mp7y#6YXjd}hn|9gOD8&u)#Py2|%wf|f# zd5oVQvcLlx-PaRzQ7ij=xb*e129?($e^Tp1akSw6CQACRj%8$LqpG=|)Jw1TcQD)& zhqZ9{F3J7>NtK-q|BtO2E{&EF@Q}JW>u+5TV>OeHd=$RU3DOG)81K7tT_G^=Gi%1s zhIPM271fu&J_pc^>gWnT; zw^sp|-Kj{>)yZd5sZp$a#X|7p*1vgP`@1y$6EpFEFn5qETT(&-n50MYdm@;89%(Qj z{AOJ5Pf3i+J`hM3C2p9p<+ou@$wqQ^RuP};#b~IYrXI0f%A~0oB@_x8=xcT?Ac4nR04f5+d>MrJf3%_zaCZ_^J+B zxTF0Ob;Fw(K!`ho(&5MYw(%|XfwJn}6QuDpU(D?`>dY-Kq3PTl?IJsA| zTBG-?R!TuuP*d{cFj`M!3-&?StT89UKVhEiZEn@V-Lv5!>QDX;WC@ouf&={$%lZC! zpy_4bVV@~UV*p0iPg%W*2p&uxb{(A5Mhv~^evICpdd9!RA(OYydzk6>#5aE*amO~!@b4+iDD23W5Bqx#~*lyFTlMQD|R#d&m`bv9${EFD{E@Ov-1TgKAE##1`b zQ2|*jQ%1t$t3-7i!3bx*0j}7!;-h|l`$Ncn-uoBreX2PX;@eL|ZE3~9j=463P$808$#4rc%tV5=6|~Z`vcX&j zrF*8ii@ByZYiUBB74fCs0dZ*G>hy(WO0r>e!U5_y$D0z?P#?^Qe-vrC+14$;hH(;F zE1QO8CSgfx>!_0yWbD#tblGoSx=sEkFJRf#`;^7ul zZKrlg6xPm&#s^MPs3C9zg^DLE`@lia+Nk1I ze?z914bmT$x@`EqzQ&X8Ra0=hNuk3eGnG?OB!xY$)~KQEId)sHv15xnNG+tv^aw+r zX@lO`4xygj82{&=+D6t$83rd$@vo{rU%t$Ff^VsYL^NlK;zv8#Ir-mT7s`EG{-T8q zPd8*FWp4s(LVcet3SZz6dUg?WolhoDht=tRg%~~|1VDcOodUVMZcDXWXa}FM?+MD# z;v<_?>O4f+o3*IiIon}zS?3;PQxIM)y)nrSpRCA*{)bTU(cp729Rvb=mN5(WI=FtP z|NLneU-q#CRg?E;>zvHV(H*f9Tp7`vDspDtY;qWmae0s??Lx@~KBHhdE@Q0|u4?${ z{v@GvI=VVcv-sCwahT5>@9QT#YV+kn%)djco8+Y3&2D#Hl?Et->@ZN6IvYoeu$X#) z>WkCNt?&J~xrO9cPHywNY_X5=GOgLJ2Dl^0UEOA{XvaI{+o0|(I(K5Nae`|*!8eCD z?t1MG@7ErQB+w>}dB(1M%4Wwr=A*AkNb$k^P26m{rIRR$WUOcfD|b7CT`DkBGNYBH{kaSXnza42S7wVX!(g@1nY=Lf+?%`Kwnaw6h8ZyubCInVtNrZ! zPdB93TWC2RDj7K?61$)5K+R7fn~QU*gB@=RVGNghY5%q>of9*(ZsLTCT|0&*_y#fnf^a}F-kQTXSy1N{PZu2YJ? zWCzQ1vBt40b$M7nGKHYsx9@llEs~5>S=H+|-z)C<))=MBYamrLsvtY^5bob&tHDK1b)Z!>E|rA7aWr14r6Th0*FaK*^Z zwo);zN}u*eOR_DGNAJbB$DufX8OhSK31O@ag>@E_(q+E(42?*%w+D(8LNp zrhRDm_6|P!>wbTGy0%Gb?TVpZEiwhSL{)xt5y><^J3nG~LP*%NcmB!GRn2{QN@S6wQbn zd_EK4z}_Ypbf)~!n;!t{cksd_h6vwOoaU##SFy^$+(Fh};{#$RTR=|n&#lF3ciS3@ zmy}0*O@dA{;XQzr!2^mOS>h;fU>oIbcdMT!5e_~+N7ubacd@(zrp;`ET|2m;{HV#! z)U^1X3QSf_Kl^nTcRX7$v}NJ#wa>yG#CKE8(JCBStm{?C6E(t0VMpzbjp}cp2M&;Q$Wml#qMByPd;zNm<#P3ya~F1G@_eN@0i9e9Y+cnJZC8hlE!yn1J{4iojW$ zu^y+K!B@Q3wr9lvK%a&A#;xV92LY^2)S%{qk*AJ8FHOni1P#>~Ppy|-vuJVkDjham z8NJ6cEL9wfQdMQG4NJ$StB6qKK{)yFX4nsE?WqpBhumzHLAtgdHLo)Q-O--pL;KZN z20#00nbCEMLI*Rp2yrMv+S|o^T5bp*+@^JvFd1?+Gb?&DgT|(gJ>iRs{pE}IYORwW z-Un*M3QX|+oyqi@q(RhE|JA;AtJV8EWhz|BAHmX3 zC!LG)i)!+515$w0EF3dJ)dDV5jk_?#+}VGOk>3)S-Ar03@S>kQf`xOtD1RGu;30jz z=VUP8nPHq9j;rLK0P%gaJao5hJM15D0aMuo3_6mGyC@-OJuEA-K3O-OtWSuXN(E;R|kzhen2oxaYJp3D(zDKEU0o3rJ@ z+vnR7ZqFrQ@``G`m@}5Z44>kM59}4!L&jK(g>$?!;&+3rL&VSZaO@FFjzB7%HcnIS z2XE?co}UQOrhY*Jndj=52ETvNsYI52Gr(19tz$9Ntyb$IA|j$b4@pr;OKc;)w6UyE zSru7i(bf8f5I*=SXv$^P3&pZKI&sQwJ`+n8ez$Scosz`n~n;Utv z2wUkLa0#{F?55nk9&W$IbN49t4}sKwl*3J5)`<0e_k8xNzRU#>@}QxJCSH%KMf^M~ z7io)Oh?8fF)pmpJ+?Haqb%@bj<^(KEHjlDG?u-3mXnKIh;)l>k4cVBSTB{BM8xF#6 zvXGkW3MC%QI%E|znb``m_(!rjq{ju=l|=yL#uI9}d8WA?2cZn=XYDDL27|^G3!_t9LdIf5uGa{vak&ow>Hj%5t+I2G@W>A0y z_gKo|=|X?ydI(WUh+Bg_z|*=1($OLS|0|sL80)f}*23Ie1jal$!;Fdsh;Nf29qecWJx8}2kcg4`*8 zP2j&JlWajO!#~7bNDn1`$4-6#8#j*!o$$l5onC$4KOvC=ZjiO0U|?z4I7|@5n7^x? z+^8J2T`qXv?E zii{L35aDYUw7OewG=u=SCR>EBg!=4#Cs@kpa)d16S$e8}(_SIPzS~wT&0i>=G3wW6 zA$qM`9)eoNOR2eO^-HM146g6ifvRafV^cSIJ?ges7x-0j;M$!yIhNNbCr-%qU4uHF zrH=cii8&Pk7+MZ}nHr1Z&7JCX&VGmyghMuI#owrkw_*M9KbC=Q4Z5Q?IFV^n1}ooO zcMX%+MzCa+aet)A-Gl!__$YRZbgSJaR^9k!=htk0p&_h%;da*-a@*?@sJUd^)h?cb zCEIoe+gT~y5D-|O*>Ry%HeJ-y9mUhse6KLeO2bd~>2l4O9INx-rQ_BjaLKGfr=o5O zi5TyU!Dgx=HBcu%Lc7a#_3!O_p#RoLE10oQFVDd)^Wy})<5UgDy0vm{r79AmhqAox zQW*Zte+X59-jCTM1c&&J-%JzZE7vpxxS&Ibp)>J4r$#)$-)h z;QwMXVP6Jcop3j62$?MwvNGG$ejl-k60c9*w)$xq`R}Arsh*2|G<90{dND0o+VJ1nJ3N*0!LD|@aHqvkP}3pVriNa-anx#>N2 zhYmbmq$KtOdZbf41}@K@`gXJuFure_m4_~@*`5f&+*psMcfAZ+(P(M{{qQF{H%8k{ zy_2T4N4r&y0y613oIKA6t?32HSQ_(D7{3crGPn2;9`4*qi)=JjWb@L3J|$%3{ZZmr z;?6>(?}!{R(5>ld(C!2jSpAGo&W_=agY;SrR6!|R10_orMbI_u<$e9D_&m(BFb zk^7T{-TpYW+lLYIU9vi!uLT+pDAxhBK8%)g$~k8|txLXb2p?#Q+!ZH;7xg2*ACsYs+r= zmNV;xjTYaFoYA$0&gz^=ZiC!=wgpK=R)v2Zm6uHJ9p(}gIp$TwAz#s4`Ganhr;ePU z6&w_(i)R(@YP(;o$k6JDXdSJaD%o|hRek6 zmGT;|GH_GO&61y+Do<<;QeIt(&t4iFAySpeMSo+R%P{4oXDS`vNRl+{eh%+%CBFo> z{{*AuD5aZ?I}yK&?s*5qwh?G#3;Y-OMgb6%PAF#YSrcCmlBgoDct*AR!g|&#Yz-sY z1^>18Zz7q_PS0RZ*;?!*l={2TCdE~|T9z-EUS#Na97&3fhV*>Ta3xMS;-99-I9u^8 zP>-$?yUswzFf-B-O>&qv**6Y|9kdR5c5)~l?(9uUNup>|VwpD8t*bkesi8-Bks&jx z4v9JJq7 z0fk`N-Uok5NB_`Alf}01N-0$pnk0>ryN^8EuMOU`ZAug*0>@PC(07dt5a04t$q@ez zkqvQpW9WUAc}{*LI_(}I{r)W_#KW?QwCF72`n*m8c*xjRf9G> zH;2q>_W-v8uBCeC0qpZx;>=C_zgHL)v3J4G_|DLY4Dr~p89ynp7A!&S^&_OrJY@nbb_g z6`AmHLx?@yKfCe&VeG7;+6n_LjkiF77A;=fwYa+$cc-`oCs2ZwA}#K;P~6=K5TwQ3 zJp`8`f#L+~({em ztL(7aS<*S94U@$Fdx_kL9iALrHQ_m3u(EVNDYJFB#rl2tl#`Ji>QViymdAw0{Z8Xi zDmSK(&p>-XU+L-|B-!3)j(x_R>YH-#J6uTnnDr$(WSf_t*Z4pJ8!sCgKmC4yq$TI` zYEiRuX%4Ms6#w&2uOmnLD!EaK!+u|a>$LCq9jW{4gME)>M;ob>ES{m<>l*`ZArsKQ z1}CqsOc>X*S+{{v*Q;g;`LnYgoe=_)gPfodYIF5{SJ6-hBUj0VAs%y>Thr?L5CoN- zu)08wkGmw`+(I7Jc{SfRW>TcOaG%oH|N9x&{wjHqpHY0}>1Uk``QklQIcxz&zB*;} z-7=7$`)tu!)@A4Ub>0TS9>;lJ!CzxoQO@Av(!Mwg$m7m4Hlnb!v_h7`CVygpS!;5s zq(rqOIo*#?wh1om-PclyOi|-mToR$d61^z>EhsS7q39qSv1q2H8?O$Z;I&pv$)hpi_1WAu4TR60>KvB+UE6A{#h*97exnj={*9F$DgWj} zJdfc*dCJRz8Z_Fh`6o%FqKG`i_d3-0l)6+1E^QUc>9?v+ObNzK9d_7@ws%*9ZKN4Q zm70#%`d!4#?J=r1j&N6?g-g~hFZs5^L__ZP7Y2G&+g#~|sVvZpwDSvNaBz}!U3_Lj z-&5BvIqX-7o3+I^aj!O14#&&HsOv_RL6|!UhOZmW2Bni>TIXg6lOVs-gyXg52Q6E8 zNciz+R?LrCips|f%{p>*EEdejAzcQ;eK4~R9Xk^>O!XxHUW|7_~+ zmHw!`2`g0HuF2hx`VFhH6>tpS!ZswWI>+WRK;j6qT=z5~25sKU6L+?CGJyGe{ z&aHON+#U;0Kk!VQWj$zuoeubtmO>j-&uv9|Tl01_$3__#LARi2<}VBv41qf)b~U-I z^VWw+goOV|lIepV|T^WiLezzu~DE2qY(z@f5sVoB&&%k=X`q z0D?s24PPcGsQvP%p(ydhD)q#{EUa|pK$L!`F;TH+(NGF}S)YtT=R>7_qh!wa zhgK~WjGz@EJDY}5lck^yv;WeW_|FfDMhp5Xv^T@ajXjUc9#?uWgda9KP_{ zygY1tKh}DAK7r5hY2cMw)(4V{W4ao8K;u6Yv(_rfpTdznEAL!&jSG_A2}b3IX{Kw3 zZ3eiwu=Wo^OFDlRbeW%-ngU|(<+!!kJmU@s(+bKtr)s~n4J%@^qsFaTjb-;?2@f zN-vPq&zq8hP6VYPZod^ngORSQb7{l}^~6)!WGHv6*T=tC*+mVPAa~PB^7`ga2g*D9Yv#FkV$A3kcHRyy4%pC3lK@`1#O8kjVu7i}p^Niy?Ji zzA)dZ&uLJfA9eTq5{P^B^PYvAptE63*pPa1X&QY*75XY{$k9ENue)vHhDXJ(>=#es zf;8hZ4>HD&-+nj~oau7ST&2`1%?sLZJu&m}v902${~jFMu}VB_SF-k&oq$=F)lk)r zebmNt{;?()0D!nl^o6uOH2bpBC_1Jk{>eBeKoLYYC>JP`V{LC7RCVKQ_xE@YXLtz3 zCn_P8>5yR;V6!kt(v9Bw{h}6}H*os!Y)-l4c{_D+v+99d-lG+kvTXA7ult2V5%a;M zba+AGo5`{?=_QGmB+cv^-+Ucx2`=hu>pgQs+|3r}e7cz3k|zj7p2r!-@MgbkSrRS_ zmYXCay$3HnWkeXUs#@$<>O^&qZ^1lraO;04t1Boy*}bE9n4oa&Id=A!`VDn4v;rNt z`|iD&Am7rfXda!|^oHyu``w*Xg6_aGZ<%s_O4~rVSP`isdRk#Q7i|SaR(_SBL}NbJ z30v32&0#%^bH z)oG~6X!{$SYB+Az({|}8NxmiW%+8(^{oefYB*&$PFz1!(mNuS9*8Nq0+;G1@SO=;a zp)^2x?8Z;u;_R{6WgAX)Fp?PlG>~%VbwTN)&tzq-9`;+d?cNB&6kcjtY`JkHcJM(; zi+fIk?!%z;Nh4n~(vziXWlUx4<9ROvT(<$=!&@-lSau|ZD#;kiplm4zeXXhG$%BUwI~fOG+t}MdB27%BJR`l4A*T48Lz(X}_Ob zWn8H(&Fwc*iP^(&6s5DXm&3;RY1mR;r;sVW1QwoCfesWZ23##J3Dr>T{yp{8Oa5%( zSMoj~%Dwv8)M~_WSCgH3?0m!RdNL$RC8f}G{VRfcWnE0oSsmrN4PLXt+f9ca8?YOL zRu(2rvyzwH^=qYhD9A3VTUYjViO8X!n(+9Mbf!9>T{=m4fN;4y`2{Whwukigt6hS0 zl)Am?=r-w8$BUX3&LDXLI0d?8a#$alQ&B)Oj|6U=q{f$Oc%u~R z7JNhTR&M^XM&rFkc?kC)RsA{pjrfBqt>lYn#JzrS*KSQ`z@>56S8OT9CKB||%qbX8 zMTLD0Qb>Uwd+t{lUaNG*M&FwM$oh40MJBa|>N!WzVUwV-P>IRAlq%ruaG2V`4QYGwRtqhb8H$^0e-ds)oh!F@JKK zJ&U%Z2u6J=p^w}#jxXZ+0Gyx(XdBt3R75U}byuY#f_2qZ681V+`%~kE!j`^9b^J^~ z?`IGt-kPasKES({9&(`ci-=E;iT6~LqW&~XP?^r~S#R%SC`mWjqvxG-W2KP4-1UvH zn|yj@G)t$jfnCb}ZTIt(LLe22QP^&m;3GCe>9nJCcLPm$4nLFl^oj9%&OKG+5`>(P!O7xvl<_fkW|2(@nM6YV@M;ab{ z)PS5y3BvN54X5Tk5v84p*PM`8=5hc!PKDs?5|h?1d|x`T3MGO0E@iUpy<6dNs3ZH@ zTcK;fdkc~pB}$DhCG(itLOu(bGS@ULU1QQ;MJ6&h~ux{ohT@30^VFn}Z9* z!|_uOZ{WdD?Ja`#9K6eYR6b>Y`PAMdZtLs7ew$$HIl-`ZEZj=i#DzLB4%hA*(lSte zrNEuufy)OtW!|D9gu08{*R0RTNMOYiiiB@s{GGRrH)ugWFwIS~c<^df^`m-lhYObe zooyoT6G%~^h>Q)0Q}kvX$**|#C86rrKS=!ccWl%Q@U*YmsJM`xP1N=nwb><<%A)#o zqg3%Qii>z{%++2_EIi&KyxQ)??N4%Z4ud3Vt`VshQib4;zNEd#eXw%AA6_yOZ6I;b z=m%BB#V0=nGrF`&ubrF>F?-AsI@?K;6@W0d`)$teWYLi6j4Z{=0^&ISn4`e3`C;NR zFVjTPXiyuJ>!kJgEqQy?(KlkdaD(qOw=Xam-lg=DFyh=q<&XW1-F8^Mi=5M!1j#2? zz#gDJyT=a%9pcLTkzi$yTjn$Dq!XF}nBMUCwIAYSCKQbSD(&uW^K;JVdt$TaYoD%D zT+b_Y)@e@GW^5{(4qJn_Z%;Y-Crq=neI3WL1-nPAxpd+(PxlV|86m>~JwV^T22?1e zs4PX<1pyLkR@vDX9@kwHJ+yNxY$!RF!7s5;X)JthyZp zWB6+G-`>r@&qBLIS38L}QrBv{9$GvMi{G(yOS=>@;-z4P45oP}PXwFq;?|F5!q9x~ zTHv96*s=v0WMlWzA1@Gren&?9+9@txgE=m@k4rrn(tdFKWW<})J05i*P?`7+Pt?Z7 zyKY83nRH*@>>l@hC!Z$Z+29Ekt`futxVSi*)%lE%ZThN0_v-3GjUm#3Mr;288>~_A zDQWg*L2batasxodTBP{7VWsQRVy&x67T+V#wqZMwr(Jkb zDjQWts|k#?U7_ljn>Ir1sm@s_c&=QmD*T{%E40UnJEeiHqVzTQrG%m4)>bQS<8~ts zAMqWgGnhz&0+a)@rGJ?Wi7ppb)|g_={hA_{RBe3BwW}OS3Ygm}n!Vu!jcY!PAsbM@nG)iRJ=1)ASM+ZW-w$!7QIY; zPcGn#W_CdXesFjjG^bp(BRMM_RYkX7w>aj!ZfhdY^UNtkFvxfL3A+b`i+FSON~HFA z^ky_H2k=oTs{2cNm z%r%$G-Df&uOljP_8Fz>kf1rkEKrSG7^bnWrFyq{6Y5DNUy>%(kIQyvB#t#kDs79eZ zTm0Hf2~(bDOyX>SAR6)y#nsIc*%JDPLgoA(Gz75rXI`u552`tFgG)IS@hGYr>4XnO ztTvmV=KP*8P4jE!(j+?5i6fj>(lyj+RBk())_m}2^SPnm0~v3VJoXuO%GTi+MpNtg zW&-xAs?_m@px?ht3epdKVvLBHPW>6Eo0q9zyBlQ*K*+?O?;yNyd3q)EWFrQF3GW>| zYNt0~&YktkA9g>*_oQwhFEu`Iw)uxC2YB0ei(@pgi z(q({I6P3uGq%c_{DNB4zJ1}9ku>TK*By!;Dfh&bq-FTqdQ3WG+drO6Y$tt$WHDAox zgst7mx?yjtebw0POn6m&O=WJ3^7d7vB2!wJ6Z@M1LEX~u%o4=hV|#wCy!3_f-R-L+ z*ODsJ#5C$M4bJzo4ay~1YB><9;d7Chl5GO2OhX+66^+@(yKh16pf>#%1{xibf(`}E zDNX^qs9_?$XqL`i!Y@OJCp-@bnHg<3t6yh^1zxNl)ux7O3I)wVY?HUk5|}58e@d>j=HCsPQ+s`&`7(u4L;0@=w?|K zY8Y6ULX?tFU&-c=*Y2<91S9_gp=v?j4yR%^_@o4{wMNEUweVJYs5?OW+U40gp6T}aD{V_#@Rq%vTM6|k2^9`0ngESp()nD@28h0O-y7Y`iR zGnrB5X7B`%P#hZH3%akhn&SR#W6n(%Po+<;O{b(lveHENObTnxQP!zSVc>jN96!1o zTb8t0&okwNEpk_+wgK@gG!=iL>iOx+t#xtKwlQa7`OQgJPekwTpPOfvMy!7*6~ntt z?eRUGO@fK)@rr|7+7(gC={*2b!vcvZp9z0)T%RqKX`_MH`B-7C^x7z5PHV1mcp|g6 zEExb%-KFnC^qg7ytgkgVvL0O3v>PpG~AM(xU7jj?cxnZ%3^nl?7Mw z{@m8LMh{A77%Xd6z$k@cOxQeO6_AUk%mxT^c(c&fuzF-!brJLmp~A89Ma`Bj+lGy& zJ;Bl(b{h-24&N|Um27;k-&(2yqY)yZKG3o56rf=$^12FYUK?lz_y892`clMQQ}e^{ zsJ{$e3lzq`DyGn1%;)pdB-;$JMfiAlWFUBU5$ZkO7Oq|OX5@{avMzAx?x2T+5|U~X zUKMX@btvzh*OiSJWB;8V^NLvKY0r;-wx1z618)QG>QW<*2j9;M-`KAzSj<3RF}a+h zd|E%Xsw2GRo$vbeV;2kSx{ulg`%!`(dG)y8XBj*9do>ziI!7}#2u7dqCoO{NjVGwP2uT6SC)w!vB6vEeh2d6ZjvIx*7Co71A+QISdBc27$u z-{$y5bXm|0Ojwmzk`)t`o15G4!~XqDMY7BzcszUXV1mH8;MStc&T#&m{!g-#p%Mxv z9R0IkK5>~mK44GN1S;w+e)uugc|#y^E@5A-(}1qXs6xQT^{<}J>_Ua4o|f8awUx!m z{dmu)$DSZmn&&oG8a1LMvH2mp0pjDJb8-q))<&ixc6h2h#zOV?TpGq+4N}c1|lk)!^elUL{0_Y#;$dXP!!3=wZp{I!u1pNbaG!s4|M!P z`9>lwP!XCOI`l(KF4lj+S~|9841dr(M+uiq`_2XSq!mT!q(2W}_1U=tsg^GZ{Qg$r zq@20YNj-Ht=cYAfB=2c$o>&x7F6IJ~*A<#&SM;#bff8K7hk?73us$l4mKd7gN2Su5-7_ zE>JhOTN6>7`QNpF(-V$o($-J0~R-jzmvTZZ2 zg*uPCSzTLmek1ZpP(+ulK$8j|BgNBesHVOr)9B*)-IXf&j^95C)vuy&j9$6*?>8#(`mej2C6cO+tP5lx!#xnUR63N`FVCcRx8`%z(e!CHu8kyB z;{{kP6su9@7rFa!Nqs&7rB5W!>injVy#4>Z1s$K%aw50BnIvgAE7S1!dhq$k=v^&= z<@QSnF?A2>yjK57=)?(p?@Rw_d`$=6Cr;8(kApwX7XfkIv^)u-xOIzqG2VzE|v zHex{NEs%Xp3)J3$S0%zUk`=4Kr5$ni#mV5v1XHLJ+0iM_=FG#nrd*{!)^%K|!d_s5d z;6O@Yf??n67RTR!ngVJX)Pw4%Pi(F`!&g(*%-g6Nb0;L!2m8SpFMet{KBiNjVHBQQ znTm(YFhx}|S^^ACw1zaL9Dnz(!{96SD)Y?~_C%!@l(KUa9dzyS_}PcKZR~wIwIf1N zk|JCB#_~-;`4R^~?^`ERswE85D$H{-MEEUpsOPoP;|cBF<>Q=K`cXXuOs%LF0S%r~ zH3~0CQ27fhYp8JXq4vLEsmYIKOkup5)9<|Ej&#Y7yHm-4Y;YP^3wz48d#4Ru!9b}h zEDu5-D}^dfm30dm3tQa7S8p_3*RQjnEzRI9YFmeCAtnU!cj^tfmx9;nO`2FsKaB(TwwsZ`B!g^X3Wk)B^?I=xP zuOvrb&B_`ZCEKe>{LaKR3eAX}#RISuic0tn!iKM?$h2J?B~Xil#(FMxU1^2kF>V=O zj^IZ#=lT2<<#t^?+!&s-%#n`i8;AL5z!2&FFRCx2u%bo+Az)=Y;c(5tdG0<8= z_D~vE@S{)e*{2QS<@bR^+BQDjx?e_U48PD(KDkkhV;V}Fj~f;bF%7ph(Z^Hwely4v z(4E*Q*54GAG8eLHHxl8Os)m{6;k9*} z2Yp6xT?R(GrU+$P1x25j#^veT2DuQXRIx3ALQ-GEz)aYE83lf@RKx%o$8dusYuXOF zMm`4I#CMFjJ8Un`RJ$n;$IQL0d(Hdu@Rh`8>q`drhk=_NimZtCw2q}QRKsS`f^tTO zF4K$|WWT!3Q{<_s;ihzT1>%ZFOnf(v5ACyQeI_E;`VcM_Q0^rX6R1X^@C`GK(FKJH zgt-P=vw(~R3nVg7Ww1ctf{f3>c-1FxK%trX+hlr6T*3(Sr*f1~?y~(`ZYb3FD6V^R zYMa+M=4JOjgeA4EbZF<0NI z2&`wiYL*=fNi2)>9v`Rw5cnCT*es{9zvwJfCs@tT1ftI zQg|2mYuSP$IxFwJ?B9b*;p%LHon89)R94$Fi+?EJhjrXTHb-@{oPxgpaVZ)QsOOO1 zjn5JiY=qe~aCrN)wan;V8T) zUhzj5z$A4H?b2JK$H6OV;(cpw$?S#~>}Oa}am?%jjQYx;PknK~v%FzxVdAl*`6*X1 zwJ%Ce?k*BrZc4tgILegjyx?eUs^=7BkPG`Xwm8GWt}ye%Ato||cgHIFZ3!<vT1Y|je7E`Yr?>DSf! zK@y|iKR>6WH}d8M(l67)dfMM_%GJxSs}Qoe-Z08%P*-qeFNks_um%7ocr0(Lmc9qf z>TLUosi8lAqn4dTNGRu!dmB{}L#^0DEFO7QU=xqkkdEk9artiBqsOFYE9!;$<`#0U zF{nsoyUQOT=Rgk$-G9PGAu6` zER;+2lkB;84vn@VyKnM-j480#x$yUg=cG4z26HUvG4H}8!RyxnoEBLA&ey@jhw4IV zUmkuTOBF_9EmC4%^k<14bcWHPtymkkkgb*@jaq8WITe9o9sOjTEKzgJx^z{Xx8JZH zK#A6?LUZj3br60|=U2-5DZ?_aPzMWiUFHk7v%XRMc*cEHJkcm=_s<;5%V>8~`im%n z1^nTIQ3Ldd4Xis`@+{ z-1xq>zQwO4b}rtuPswf1zpPOq#%bQ`iaH{%_3wJtK@NvYVbfyhY$q!o6x&pLJ8RKT zIE0J}Xx$T7c%qv+*ArMPuPH>D|YQz2n^C|CXNk zF9ZKQ|EB*RY4m^O*PcnFx}?8yQ6)Y<3*8HLw@T0k(ietJU!RSYd(Zta8vMg#i1w_G z8!+*kyUf^it-xwl^%1l@r=bWMvhb+uF`Ze-En)Y9N|>XW8bI7v$nznfjRLNUrbE(#vvlm`zU6TUIw9 zvck)thbDv)8MSOAwY&eii(Yvhlz*oVgT(sCu284`WwyM7y~T^S$m`eEP^Cc}s<&uP z!|}_9aIh`I-Bin+ib}8w1*2HaW5Ha=3((C!ltNf_cgoGAh`%Kp{VYiqmy`p>&l10 zy_?L^p1o}$wav*%d{1ShN0py$+ggW?NkkO5K%$*Y?5Ph!?a{-0)rpuvfD2 zUN7w8eEC4=8?(+|DspwSw3c%;s$Nk8a5F@X-!{|Z@Rb(`8X964kw|kc)v3cX`uwPL z#=JnBNJX_kavCx6NE=B^G@wmSsLp>Rcm%1p*mx{@es{aR2Pa5Jc%)ogy}xInR&VBe za=fr93idY)bzOo7xdp%*tmaoDN~@0U?=F_b0#)l*Mpv_3Qk4Zrbe}qFs=sBsA6VSF z#LPL8TD7@r+I_8dC~4C7rroY!($1CY2*e)f@Rs`B-U(gH>{)z^JuVf$I6v#!=g@5cr4!eKa`#M2U|ZoqAK7(u%addcHEjp zcKqra_zEM8grvDXz}00Dqda!_gPb8It>8nb4|w&LkT{;JBcRqfLy>^3FsmBC+#s(@ zjHj%v&8C@t5!wcX=1h#N`={x5<|&Y#y=H!6BxY(Cr_dXLr|^?Y-RtN8#Db)igy5WT z&Fj2!FEfG$#!!ji__=nfjSn6j5`}efc6pMEqFgOZA!^^tJ(ye;c+yDech_DxPCWj` za0d8I@BwMxY2fGL#U;3zJc5%HS29)fXSMMO z>0!x~-vZ;OxQHGvsw6RT65DTM$`pAnscU#`8yfzYyO7}dViyloDl`%F;;NPqDsT>) zT%a|`ryZBLId_%1cLtSJ0;pvA4+XzoJ8)Bb+9BU}C+}ImX%8s0a18i|@|X6Y)Yjod z>||fw5nhw|I4mabx7m8_z7tD}AIcOqaF#Qp;*9U`%I?i*tQMt0h0_Uj*z^IVT_>o2 z1K2}yM4s*OUB&fRN*Wh}@P%1wI!{T{J!OI=Oe)98K=&S1l62lLt31I`M zE;IQk<__5szH}b(n_OKpiC_4#EXtD=`kG;N89vY!vhFsh^isNqIj3ycK#xhDLGLSl zx!HgRV^$iANXN!R+wrsn$O&cH%tr1?^WtF-i|^St1*JS`m<*gt&DjML=)=y;T~kkjj))7R=E z^&u$itYhPhn}XuVO*5p&Ad9(Uxi$| zS|#5w?XoheR6R&w%d$$i71{#NHa7iQ&AD8`wk;5SP$d_^*{v@qI8q{pgnGz&w#2iE zc5V(d4lORpdiceog77r4N~@~*AXY_3OurV}f@*np>+3p%sr1{;*cYa#?F`lx2?UK7GibXruwi>kM{m=VaTJM* z^dAaR^%1GTWbQV}RHll~D_cy0VK{f0Css2r6wg`Zj>O;W^ylu>*w`s@!)tn5B(x4< zQ$@+)?x!>FoQ}g`{;lbe= zIQ(lGkkHo$IN??XIXImsod&})*C}1m)$s|4lqDMP*fbOs%}47a6&$meTA$Z_h`pvj z5LuG0IC&i@P5>QRaaehO9Qt7TCc6`k^Hbm67`PRBW0u*r<`~S1BgPK#0A;qabrN%gA;5dV!d7frk`ZY_5w>SP2 zgGHy$T5nU2=sGtobkb2RSmiX%nj$Z$s0!UCvN=_4u?AYxFbWXP{A!J3qLWZ=KMX%nyrR{xRp4hx3 z!2JD??q=@eJzXm$bfZ9&V>`=;oIcAHp`Y947@9=eSJT%B%(HZ-nMT;A9iMgwML^J< zcco-c*=|l3+*(YA_svLDoKu+G(w+E48=O?7(855|w+x>WOt=dh8r6SD(bE^$URtj< z9Gd^#N~qy!&E{O(9(9H8x5^15z6OTLiW#Jp*RcJalPc{ZT<`ls@HL0)f}!>vykj_b zTDLEFsa)KkZ*19k#0@>g8|x91-(IK5d#{uJ>l7JGk+T)9iW884FAc5@1c<9s_FY_x z6zt=RBD=ok!$cDv+#wyX^(m*7TC#2xTQ)A3?49;8(DqRcQ~8G_syKu?ywAHa)(s3< z2Sc5|D*osjaA-llev7G~6HbzV??jPR1Kpnb#aTMGaj^GdjAoz)!Gt{LDC=mbLcAMB zlow&N;6?|rZynHlp*J66SF?dJ+BVsI65fv9zsQ+0n3A_{UaX5Ia|1FRRsfcBHd^!x z89vA2=t|c(*kx$rXos|Joehje%E23D2?rrbMksf@ftt0u?lQs!PtCcI_ z+PI_O6z*gwXutVpi=gSXm#4^EnI0_0ZycftA9_MMB@2&SeduN}S9-SpBmd0&Z}ZRp zO=lRF$Zan&I=iEy5Dk2mwhGCASFss*ZK9H_shn9STjq2v)O%_X-`=s&)S65C=>)J9 zn}^p9T=dR7^D=P@mV4flG!R@EHjxR~i%$tC)}Cpsf3cd)F;>$Ea*f5!NH8|7{Iy?9 zLRY12@R=@c!Pq)nOg^}E*&R5yVrj~;isa)wMKRudsKP@1g7(syT;&~2MH6Z_BpM-S ze<=3QUgfXl8_LbzvBGvkHjL9U?5;U>7c6h2-P0#_31MxxYWbwGH77FS_z=W>@{O@_ zQ14Gkoe?fB>$)qT=jXJAaWSxSu&A3NBHa4LV4PFKNL(~~^u%wbucV@9?Qh~hX=i?8 zBG@cG6WDdVJDleSF)r4s>}ka|%MjWQ;PcuauJa9$Sk;@(zaWoFu$Gf`)wzK!TlCu7 zpQMY!r=~bDIFDxf$`;=yhm@j3^Bpb~-}x>a-rzMh@U*Y4z>4Uc!@EFgHBPQoTOV^5 z-_l1Hv`lVkR9@VSEcEuP>Ct6HYe>pUe+!CNHeC+_BepJhxaL9$Lw{I~j$KVCYhTy) zts*3Q7X6@Af+jq}S}7KY2HTbFDpz>55;Ure2crv*S*=pBfA`TqP}hdxz0XT6jgv<-wq~SpOVU z+!iuq!KOXP&s+UFE$ZFtK$%DKwU$sEVaw~Igu}a{4k^u0{`I8+JJ2cK)?E8j%}Q77 zH_0-UztlxgDA>!6@7jv!l2XYnBW66=w|9PaG$Eb;LpOa@Xv{`PGq@897HrvdRsEn& zTz>R9<;#_=Os@|Uwsi<0>-+`xUPk*eV_WlDt6}?rYg?y=7r#VuaSUtI7@gi5IaeKB z`JhO*x}7@Lpo6;~OAnzn&koy78=McRO_eM)hwe>(eo`A=o>(-sq%a3hDZ_H+I+yJH zxR?oC=M8>;K)6MHn9>u-V$*P%j$nhpfA(~0Nj~?9wlu`bjbB76)@4Q$k|nq3eKik? z4b#w@1QHA) zEmuaDnJ$}N&BFrUhHYb?)K3VCS&#zmxYDX27=8xC({t(J;O^bXsj6_ zRam@({1#Btu>q_q8v1iJphZt%Q>|uK{)2=v@uqJ%3Ict$RBGngj}o7$Y$6D7Ck@-8 z9ptC>SU0<@Vay5hSU2Z!u&HDiY7R5*yKRgBt$e-t0Y~8MD+JVm-?n)2_jg1}$MzAT zN&FsAo+`_@ToXx71Ay$d*a^OH%s(E}$v%c5P?wbVtS$o+O|_8Ygyt8KC}W9;hB;?k z5}~UaeM=k4XSL^ikl&4^k^%nO=BcDqf?gRi)C&1M$I;{S*Scz?LhsQ(2{}tuf;u7P zx3l!}SvgeXalg{s|Kj2gULoBMkKN&kg;~o?rt0n%6&9g5{j0S{}25i%6)?Eq?ZT znh`Ji7*u}OaQ@zHirh>799-`2@8^++McO0P9BXKeg0|s6J5^L;+=k~+O>xj@$R3vJoytOxDBz^KEW?syA!#{W_cmM zq~|B#M;T(R(mWpreFKI^pRfAEuyAZ<*0XTI z*@D~)6yrnUE!jjK?&xfkRlEA8w&j|_SdV0vBH2WYpNHr=HQ1*Q0TkDDEW>qaJ^1%} zh|Hiy+6gO{y<1HVg4T{kt4MvbKKnfoL0$QMV->azHzGK_aVwz=6YI|!x6V&{M>g}^pB*7k;f|VkdudWY_R$q_0-%0?LH=r zX)I*}$kt_>kCqBVDZ|na}}rjda(?7txin2L`3h+%FqSsMCko?R5jd z4POF!y1;E23oUo`;G-(KSAuOQ)Dp4`ZE>U$2Hrga-Ufp^LPL&Vb7;+~v+;i27y9Hp zJXIF@7IYc~)Zb0pK=GCk&c}QN(POdGeKshl;qHf-ML3Mo$ZPxdLx8~D%G}dn`ogE2 zqGd=TlaaCp9yd+#2d^vrg``uQEp!8&A%>|^VgC_MVR*t^P6;GtC}7s0h@+y`&Xmp0 zVEAzfW%sq9A3WJ#GB&tpx41s#(%#mJm{%Vhe?zBGP{j05iv)pm7bk0m`jYm zEKZrm`T6PyUFWAdxj|k0`y&3tni}B z=P#c^dF%FW3lkguLK6{@k0wJnfu=Nl%f_axNHKFaDS2r)YNwE*xZWmYKbu-E8Jj;~ zVaS1r{bF8W=jvN0joE%M^E5ZCOHftU*`@y<3T_Cx>CGliSpM!6nbCfTF((hMyEsJ{ z`YTvDO+yy8M7iI4>-qAnkD-*$c0oP}+m^}QKc_QLP@}1uL#7v88uAu?-EdUoSX$Zd z(e*9alxw5WJ85BXc-pS~5cU;Qkb{k`X2}|MW4*|rNu$yfNV zFQ4JJ{Pr*>4Ka6Tp-f&ji%R4&(NRoYUE!pvk;K$c@V;{?KlsLC_*(Jf5EyxK?pnPc zL=Jy;C9I;5D=;Q7Rq~m8GQ9XKi4r{Cp^e(-LR zvsJ=SLB%k;xnBeWUT|J=JwjXuaet6s{}2>3xOV15!SR-uQeNw7kpJY+bScce+}F++ zsn-{Y_VTL2PzF~!MWviR?d?%=2$5ZgKOpp{AQaRtWe(g>do;UyT6-9c^?=i+A*iCQ z0Ns~IcqNcyU=0>+jj+`9XS?;9@PQI8zmK`CdN+*>oN;g0mG+hQ9^xZ%n(WjkR-Kdp zGpdnSyTf`AyyFy?ms|6IvDk6#v$Qqg(x%nz?>%=Tc0_U%X$l{U^}W!(2-X=DJZ_51 zyL^;R&l}}B)X%?00`Yy&TZJN)D`5~5wH0|LcXzRJ3Q^Ns z`>2Z-(Wc+$l7SCD+Uwj}GjPTzn}+elZ7|E{3s7dG(in!nCK zYN2l@6{N=dM$Ka>4_}*!JmqzY#qRZ7klmfPic>b0vjf3uHx7<14ShaKi@NrIRhQC4 zwYIWTsZE#+1cRv{xvegWDFqg6Y|F|j4FX3-y6h!IT=LqUzr<*@d1a|F#SacP#-FaK$wqQYpjVU( zWX+*jPh`IUWwRn7-M@A_#)AD8b)Cx_AF_iD_A46AzzkgV zHt$WutWpLynkgl_3x!s_r-i@%^4s~B-Mwc)4W855M7LG2`xf4X>389eE_65&%)}U^ z$oar}j*j&k)DQScLr& zwd5n@*$F_K^aWjG#cXHC$O4$BKYbmARaJE>$l^0AZ`28fvUBNURWoH@T|V%&Z%4+K7=U_i8_lzO>U*kzGuq>x{B112!tLnB8VQ zhSRC`Qi*@4R-Oq@BnGt%JsKE@(UYYd_;F}#a_Y}nIxKS~TfM08E)m(J+2In_(LV!3 z=l0(k7#^1odBpcwrLSBs|GD)uM8}NIa8{CY=DYIsc1pm=Syuw3-i+0)wPq*$21oVW zr&9GFG)4?oa#$WAtkb7ZaH){gyK?8LxH2znZK$~`IpC2ZVsSt``)>{=9!D0DmYDhA z4x;6JXD9JjeA5Nw;Wiy^nFs~()E#<3FJHOx|HwJiNE-jxipTA&$2e=}%1^SARVV4D z+oT!4i*?%lo7a1N3*sa3K;@;3H#b3NZwr0NI_WAC@Rvp*YtvUa^@mVSYR1R)@!7Q% zdZo{o+iJbv`p7W|*Nr6t{0!bd_S{)K9)VcguZbH%Qs+LGOrmxac^ z>E&ccFbu=fE#A#1yqhg}Gj0x<0uuq`23u#8?9+>FN_k6Mi@(GiY5To?|0^bm_VMI! zDuI#`jLgb1h&JmCPvB!;4+%0r{@@4ji*t}u-^xP~z^_?VUIkJXJO}u30gdEMPZTBg zGhuIyhnW-zOVsXl_4#LwW$o>YmnDFzh^V-{bg;dtL8v&W7+(~JAFJlf7B}jlFmHG! zCtS{W_79nv-#N1dlZK^^;nY<^aDZR)jg*&;vX=hvId*=6!o%0nvVg60Lmg^`|3Th+ zM>W~KYr;XAQbd#@9Rx(02uhI_K4ygS#c4Cl+Jf&O+6wub8Kx1NbpX}Po=0}3GEWnB3P}Qyw5ehD9Pq+0V#5#iCz95YSL%O=!?WbiN5Gw z=b*|CMYE>oD7~n#(V78O`ViX`L8r6>$>v5RvUilEH?&Dn{B2ANS-d5`jJUk&y*nf_ z9F$1xK<)l+$ccODUiLFmWj3O}UWfer@`Ab(0I9ssqhLXf?P&jQ5yL-uy^b?qq4X3C z!Y%b~aND3^3#tBjg-efy-*E?R6CamTCv;~!g(Mt`N%dc3$bB_3*fO%N&G5uG^&FdEm zSdG2ipxQsJq2Y59j^a%zyJ+j@8@_k9hT$5*X0A{lq;pMTYNWR-{d`LDv_V{95loh( zq|g?Re<)y4G`y|sYFGIw_k4*xl^f{p?I)7$;u&EK>O=MW6$~y-qc8qSsV1vtS&wUI zEPTnuNUZRN6xz0N11bwlK6CkRBl-UOE?cDW;@6jq39gVn%vif!zd^b6SRP+5EnP;h z{@c^{yUuyM>;zLU$;<+UrC+g_scKgNX+$Gc1F|WUm)^5}ZTk&{=<$fEIA}nOopRC^ z-5jUIGY5^iN$pouGBQ5ZqX#*(@KLL3h6Nriw~XrcL1C7XO9omY8*DD#v(} zo%}khLE%q=@lyONM`8A89-}Czd&MCGL8<$YV&D7|;W=eCZ;%0o&b%al+L3qHt0=@J z@)CxvYX2eXurB&|vgqIj^cl=4LUbJK?E~xe7at$Lj#g{7Kboo~Pwzk5@?lJx${L2= zv3+0fGnXqkEn7Hm5GSj%z4Ef}8y}Wm%i=&m=uu*=DwU)1zR^@zOu3x)8=YE0af+d# zw78LrofmR0sNKDMBkVfMo zor$=-W1+F0+$vtgdC~66N3F`3ca!zb<5FcSE^DPUxg^Oy74kgw-!Z@aQA2_k;ngt# z;}rSq?E~pAEA6rtn%y7k%>an2+#7eF-`DDI91eq8BYbNgTQI089rAP1hBPU?7!2P? zBC4RN@VNom!yvT_zH|x#IYRur^EAaUw%8-=6~uMPrJl5Puye&wM4jDj3d!ksJO3vI z3lBX&4%62{TL*^u_LybOWT-T?M_DjP#0oF_`O_P1=4N&JI9U}QnV8q*-OB0gJV3xT61)11hsh@)`ECm=C!j|$=o^~oPvs5|FHBZJ4>6UqgX zpmMx|uT$kPd&qp?dm4++V&++)TNOBBywqbHXy)m-KQ71Y$#RyZ81QU zCG7^JB$3kY3X~gvZF@506@{dys0=#nuqOS?)g`139=(JsCO1Av;@^zjMY1xpi-)tQ z5;|T+A5Cg$D+F+x3*U8CwPU^>Tbvl;nw(Q#rZ4`67i??&^ZjLyJzfX=7d%Jj2o>}J zJ9BxpA|heEb$90y7$n*+V(M#dg5)-N7W-$nJEM>TIRiEYb;}T+4PV^gqDgT@-q3^= z{|C!yEyuj~Tl&}I^pviL75fZ-1rX--Ki$@k=8Vg;RQ6J2<-bip1d5^R;T=DprVxT) zJP$8YCyhGS6(b&6Y04OQ-_p@E^g%@H0!Rk3v0bp__F-ZGKbLn2b+Q6(e|y-rb->e9 z8hV^u?$iEitrFpky!0&%>h5-xntZ&NotHbjUZp|M_$G3MO85Jqqg$S$oh_+vbYznC zHhJ^Ax;hglr9zJ3NvVe*6E&kEJS{m{f)J%u3gz>3#E;ZOQS#+oNKsQ!&@=ZF!VQrLs!(U^x$q=1Jb1)-by#c@XG0c9y!vx zexfI+Nzz)Kw5T%{zR=iR+NY->)bsVVoMnvMi{i~@rcj^dQr3hdeWp4j_v23)cD7$R zQe-B(wf~wlNOB|>e>Ggsa6VV9;mPv6rT)CCk8GY@k9Ymai|MGTk4l>M8n<{SQqePK zZ2+l<5TJ+g3BKk1E{Bo3*s;E7*g}JN+hqSiI&9udr|}|5C^X1b3Kg=~?~}tc*--TS z#kj7X&H$CW%(~e43tpPQw)W`ykuICM`npe>#~D0NtTmZ5d zxn@O{Hj!nVlwb5!5V{^9d=|1&(w8zyx0;I7WU@RDqS1OlGXwgQFPFCsqHnW}*tgU` z4ahIe4!jAsXNB13<`%QJ|J(lMhKJ!^E-NWj+m;KoAuUTYZCl4Rw zxcc!prbZ}T^80qW%ZwE6$_w(l@$ED8`^=Xt2}u@1h0o(59F3cMw>K>(f8{-T??@>a zt+5r6iyipmiB_F%?y3+U@~{z4Ae}h9$Rnml1sbFxgPQw%XyEySI!cMrQ3Ggp)7}TP zjWo15{t;XbPokEgRP!Hfs_k29>zX1+=jSAlV!5=4NGPdU#m(eA!Tq zGtI5^YLm3L>Xrf9lUe%92i@+wRmnL)Di`P5m#0fG2>_)p_Dieav7OK4#pSG-U(@lz zXCJ2PdV5|$2?z!~k7_6_uRe#EuUVGAbY@M8- zU)wHH6Y?7KSwHMb|}3@Mr0G@VKb^ey)IfWK0hSbkMaawN>ZEENbUnGH6Qj)EVh>F9CA z63QLN3hTxx@hzIx*YEornR>dc_;%MRIZ1>FlfR+(LlT!V6*1YMlfSvedwu1Xxv|IZ zU`GBP@rFls!mH3?hLwo%nM02IVCEGL$6}UyBETi7zy#0gEL*wN|H2J)+o%?z6 zTU!>>1bGq1tPQj3>Ye<=UI_@|^}|J%XS#YmI_$(3ZEu^Gjc<3B(A+cVh!9lDA@0Xh z^TItIqu0*QIY>=*u5*{_kIP$pjNcnCdlk=2&Gnaq=?--nk22`YzYsdid4Rqa#aFVr z#|Mvxz4;!lU_-l+w97EG^sQ}PF#M~;O`&d&9%~0|KFd4_@_$Xzxjv7 z&BT8o+4K*xx#`aU?LoGlBGo6#af?Yd5?5ijdO4TO9E-0(b&LUp>?F3_GhZI(cagP= zvmBkt1StY6ijXKM+XaDH`s2kB6mbw@!*QRuKj^Q;2Pj1^goguhM26$YT5yD5bD@kD zUCyZN*IfH+X<^Vkj`_xNzj^le_YKROQ`f`1@4v5_38C2uTV<6A}SZGoqUtEy$nvFJL!pW$=uZr7#>HK z*cHxmGc}Xf9;j)f*tX(5anlgdl5MNELFojBnye9n7Nb`ry`b1=1aX2ur0TG5U z)1oIb9&LZbS7KDo!)s3J8LsS1O8r?Q*-=v<=DxaE&`Z6yRtGA4H|5aPpBmGGgIG|i z8$6g<+GMfB3h(QC_0)Bs!Elqv!as#Y+_51Ud{9fh4!s%S%ejpxekom}1giBOMfN%V zu}6pHRLQAtDlF!o6x#n(zJtoO{VNx}#sJTvP6nS~l$r9@$VXRvdV`-@+kaf^`D2AY z)CiY0<7)p7?lddM4jZh;Xt?+&8g5=SmjtK^w)#$!`;;R7+8>E)IC}BW_`31qpi3c- zgLZbM{jDF}9em4b@^QMDkx4FPGo-6S91cIzAHJqz={_NmRJnLo zjHiVxUoqiC#uHvb1 z`;9>!HH$5(epYpLlu8|iJi0F}Ce@77!}FAKU&GjppZ}3=UU|7ZuzR?0o}>2o2d()geSSFtFQ;tR#Ldepg8?1lb-b@h;2^=;}emQP53yqN+ebi^{wB=!>PaUY+q#;neo z9HKKIEL-@^=Z}YWVBgV$jPITcXw09b(ier6RHCm3j3PRf8=YXpG?UIj{Dp5PNqJ~u zWCJW_7reH3or=v3>o&7qEVM0uvn;U5;>}IytsQZ{tdjjhX*Z<6(B_t!sx4MGG7!v} zf9I&t`wVoH=brabGb5tCGZ22Pv!*ymk>CgWI5OKV`X|7b9FBQV=I@KBH-WfJ%2vco z`Z}h4ev3_8fkI}S!bfIQPE^0*9-SSeH~wYXk*8Z}+2U<&__@HT zG1^!7HB;m)13TK&TgoDYK0R?Fu>p66=1&NrGcL+gL`J1Q7AW(f(mNLV75k-kW=0<2 zb0XgK^aP~!XtnX4ppT_`Gd`!PJ9($DEPIQ30{qx1XkuN_f zMA{7J>QV;oEAuaW@E9CE=~pCoUFuEz)fvl4l$$;qFNSr`e#Em|MKFQKip$_r#xBf} za}d=QG5=-x==P_U zeN*Rcy~mJ)nyJZs_4PSnlmu<#6*4czr#QQCb_rG=1ovFy-Z>$g6sApbyt6brq`~Ub zxI8@^(AGcf47ptkW_%;u$143MtU;3eiN@W~g)#mEiPgyf%B!yd9IvvKj(b=(yWO+; zNBudxzC*Tt95rV3SnUC1y2H)6g@xVEo^B1l71!C!_?@Gin_?WXG^d-mXkMrig%cpK=sG3ahTHMrfM^PwVI ziA32Xmr=I(J}09i({Na*a%L6}ct>^B_X9u>=Z3Nfy6`<|M3=TX6oDu5Nc~)zkTFYU zky`xTF4_nTg`E$F>eNzWqg(CV9cb`|J6e1=ifZD0VO~5auJ`?n>A+hD7v`OszLx#) zgL|~7$ahGqtz3U-z##hU{s&|3zv?n|!!==d`nd=i z;*@8|?Pd3ODZ(E@gVVVeBo5bO`bR#Lpq1xPXC?{0KD5r~gq+OR$iPVh(O^eku$4`w zF`39>r_Kg*5nrHq&zk}h<#<2ycXwSGx;$wRgk^ir4;DTXQTCL57rd>}t-DNnfq{^K?q++#=lao$UoBj1)hoMF2_8@Dgq zZ2PKy!@_gBc~A|}@Vqgw7S?m9Ha4fLz3G#5(1{EzO&gxDb&r>f)6%E2y|1H28c%0P zBe4~D>dLrK>*^z#hp?-Uz+iz?gxIFAW6Y8!&-<8j7|)Zb#%D?V7G=A1)=dxuNKm z)+*0?6(I+2@+L;KEw>ghaPrnd2Z!RUWCjBr{2Jta1wH-)U=;nSIr0O78U4=q&?ePQ z;eNROCq~|SyPnsa3G5MQ-Mb01o>ED3gH_H3N0$tXJ|5*Ctv@uegH$65_(0bBjE=l9 z(G(|%OZWin1s8MH;F&ou?ILEc-2d}?gC6)dx(4@Z8w?SQ7q%#zO4QD#UG}Uwq&Dq! zc9ymvU*%G__MJPTFHJbdBvm0m_CfXC;r)_NN}xwPw1pkFyQk3j7Rd^Wu^%cuo-TMh zvCNp|J{^wu)&3!7gg$ELSLb9yu*wv3LC*HJ74|V&b;?2*r{hc!Z?arp6R;#s%Qg*W zuz!3I-N=iSZkab!D^Be=U(uReHE~4-4#gDZraPQyznHxuGIQ7UARS zTm8$WG_y$|?Y+_c=S@!@$)PyHq=I)+9Eb~=Qy_l6?loKdTSIOQS3}`0X>x7C_zKh< z4tPXZqyy`FV^!~;3sQ)_UUOEXwch!*PKc7hbEnO z^$VIR4>L~Riw?_S0KI^zxz49WAi8AK98#5*uKflgAoCA40QV$8cj7 z>edIb0hfDW@%4S=Qa%#ykP<0r)WPjPMp21ghLXl_*iAULwZEFblpC_YBOu}$GOOQ4 zMsK{f(`{MfKKaqkg=2~=bUeW`5Q!Y4<=uxoccZ1HN7Nf1v8j}lNXe0`w^2?KJ(uP+v+a^s)Wu;j>o5Er@w9#d8B8Vsj2c(G%xAt z1rOCVS?^35H5QHbK5!XK(H)XX=B;q-&np5jboyhyR$y$a|;+SarAZjRfVk~$epj-pB@~^r7{{4!<@_$Jecr*DQjk*6e#a_C?Wdg3wLCFAi?@Gn{m{tH~ zui^Xnr!NH1SjiiZIaC@Y^9;1NY>7tobuVJD}mM<8vwJbuQXmm z>0lFX!cuYMjj;|qV5)EN+0rM<8?f}1e!$S+hWagq>e7oE*3tVt@?cj~KPnUo>5!bM zDmg!?QW3kS#D2>3xUsgrog(&e zTe(AU?-{u`v06W4-G!649pibj<9w*h$U`!Do?Bmku+ThDIo`Qrbfk(7MrFv+-+*G< zhs!;;|77Mo>_3L_i-XH0+QkKnHESs~bzXQ$#wRSA^~?n@BsD@=Pk3@_G7 zk`vy5o@6?PmXU_DQ~%^$+jQiecZ!PeJBv5h-}?TJqW;uR&|yN`>HP|5irk9>eypb~ zCfp;g?vhc8b2Vf8y5x7AUJckA+P9mcdB)CLXM>h?_1bDw7=`&a++!>{xi0v<*>< zp8LXo^_(we>ZdBP-aCv^AO0@+htPQoL7e=Q_u>ucF*sq{^nBT_us(?ay6>_*y&`sn zaNIm<#PYupCT58pdUuXnSr%Lsntn!9(yPp?3Gb!kijI04vD9Q1>)?=TzimN8Cquz_ zKB2;}rSM74;iJ9MsM3p_y9lRYhBVE-HV^SdwTCVO)QeiohhNB@hpF5Ds(eVr8a!SE z&{z-4v7PT=e~Lyb>Hfuia*FU>xI;0XQRJ8901W+tBH~AbGE_j@E8AmO$`me8cm^AZbCeih&+3HoA}i;s6!~;?Y=P`Q z*x+4dO?B6!5o*=-y1Og=HrNXFtlxc)`foRgo}UG9aT!lAv)-o9d6uX26aF2qiFcJs__>1{aB6AiAM)V`P}Ex>*0i zrUGW2f=?-FixlOEk#>*irkw?}99IIB-$uMSc>xny4;~d&9&zIHX@lgKDch>9X)8P? zp+~Q7y(SFgFn&gjBFZ6ZH4RR z3lCaPUP|Rt%f`*s%Ew0W3fhvWUDtb$nfAC<$rFsvbxsw8h#}Vg3#&f|KUH%2&vK)E&%8; z9mvnN(B%Rt@r%UU#0PtyL-^TLZsq(b-DSyehSP2@&k}W!K?UaEVM5RRZ%aTCHy{fNfXeagK3WcpQ)(>egKGV>Bl#lI;a6je*qJnYDWAI#AHr zW`ZBC&9}dh=JgGF{E7YHWpg!x8Cvd3Fy7syO|rP6386dQQU*;-@>99&a_nAVju#v6 zZ^S;ZYN*xPBwO1#eXJ?V!kV+cJ5YOys&S$+?Sgpb2dCU>|9bT0ExMWI2VzoRHSh)` z!beslLAvVOwet0ujxt?-*)HU(-8(&wOx~25?u)va!U%SVDxcn$ZJBE7^K9NA<@g6@ z4Cib1B~E#ILV-2Uc%m|>9%VS0^C^3d#hLE3Y%Vn&aS?^LJde{j^W_tqSBOI27f-C0 zeuLeb^P1yfq&@K(Sk)0Q()l*jRgF`{8ueIv{1Bf~+O47{jV;KFWHZvNV2$^K4|ae! zB8`fp^OKSNR~Z3Mb1qA_6PVNYxli+11Y^D#yQcM6W>A;cOOwPfGmTV{`4eioPreA; z#Qx%O;wYSJA3)f-45z<#QTGgJ-dO1^(RJ_P$To48$Mn;zWx_7Q} z+S-asc||*X8@YV)#A#Fd#9ix&hM9teD)b*w>_rQh$L788E5pO{Zi&n&iU!-9`< zIbZLV2KwrSGG^asE0u^qyQLzl+n#GGMS$Y@VlFT)E3=JaT$-|42C8qN0}XIgXtHy5 z-rQgu2a4FV%$5Lcd1W0+a^>y4S!TItW4Da%w5BtDFVbI`iGSrxYA0MY6PC!H6`Kc6 zRP4ZgU)*UwUJ{Jie>$%6y{LTx=4JaleQfq|DW_wo1@p#!N!UhwM8)VPYP?jCEHJli z+tp^#%HG25-h7B!?#(I1)4`Xh;HI z5a#1eN9bry$YimG2}e`jf0pT>EBjNA%1BSXo#qPqxgxtjQ!a}6(+4N>pYP*4*UxDh zITEgwA8#ZacI(ypp^B_N#=%>(;#}Bw$!|cSEOHc6l$W@S{X5Ko#*G9UsD$Mv_`fNt z{0DxxnfhOG1^=n}_aF6`zkNeDZVw0=2a9v^ybgq`dutl(@6GjUnBBg7gr#&c*}<(G zAHK^Uh1nTrqPPzBSU#pMEAT+Ps}d`(g58vu|5)jl<$F-Xi2(!l=Ec^vPo#}*KosWo zq)#+A@XpwDv={zp?yQ!tVydzWvXk%+_H1}bC}GK_EiQc}krbI%(DLiRMNL1u(py~v zP&u2#}+K+Vj>|CMVGs zrQ&VEI%sJ1bg$$UV*Sd$5jz{`0-zw6#0LFtBC(-}+k5>kOTQhswa0D04GW-*6nPzp z)-w16m97&be|7Giu=MZYfcZkX$fdKQm-y&1g>v`NTH>NogYJpO$c}7#LFE8MCtySM`C-)tteze<;0y@T$=d` zEC?IBITM~)s<<6fQ7czi31aD)1!Z^kYM@wQsB84As-)Wvn-XMi!2E=THnCS|^1K~!S@85b#i018J{HnwTahhMemYRCTdWEun zV^`KPP>`29lSyM{wO4fBdVs2L4b{@qR_ymiw!D)OCsMLgZFnd(8w_{vX*LVaXUN zdnVOFIwg$%MuL+QA)$JzcwMGziOCTk)kp9wrc_=fM#}KBMHC(ywUYexb|vev`^cvO ziw=up#7c3TMku^ggj-ezPFSd5W?=UCT)Zc`tqzeIP-&pgqY0}9*MAZ}vh4muFu4hb zy0ZX<^&3!X1uu^OyJUZ}E60q$jE-k*3dRP^8C)&J6VO&}lU4Z8`l%Y%GS!R-Y@> z()kW(8Q#8q{ka`zPDgphG(LcwuR`lZE|B$ba>bq86`(YC_U_RQXdl#gkz;J>jjTlX zVHfIuv#@SNE>ftK@gMr#fC5{CfNd-fr#(i&7g=lPpF#7#LVKjHqBkG>y}uP~pLFkw zUo7_FiojRj+pdA_3}aPNAdyAEfCar19Fx^MsG9xec3phEZ=RW z0HpqTi!X0U&?+DyP>sFADMy;4c^Duc0ouDHcM6%5h_3;$2@_%!UI9;0>rK7MCaRFLFBdk1y*3j8>?uWJu7(r}@aE!;sQ`;hPp23~Nz-7b zQ;3gP;R%yHJ)-1Y79MNO2k6Kza$MeOjMR>ylo#)PvER_@nLmj2Hy^6uZGRsmr$7ux zy9}f|{^h_3__s?AF8~y4;2n9f5_ulHI&|!;y_H*^S_dBMkVVw${`}O1*x(AGL~x(( z%j3bIP;4Nk(F0Mv3EP|r<)!C$+S!@Wb=&-i8wti`#+`u?hgJ<7mZ+u}>M_%Qs=He| zyjX}#xFk*hhz}ZQ>$lD?b_Jy}b+%_Bc~;X<<6jFnlT~65o`b+$r|vlE>lo(104$R= zwbp%EuUo&u;5$w$f4pMkTmR@D=WjUSAVZ}zbRF1Z40s6Mw&rZ2E3fOwq4G47wDN7P z1O8GBcj(`T!mq|vVxWKDx(v5!e5FLJ9>(d_mSc+-EW(8i{2kv^tHb)aYEWg78J z+jA<`XV2{4Sa9gSZWav5jH8>7k@QdokvlkeUIi91`&k)WZj9*CW6izG6UB5&EVnG&URI3- zwpLUvlRcB?)-fFa!W#F6#P7pZi^c}tsl-O#uvF{`E&qvVjbnfSXVpd0c<({s_B;mc zl4f>Skuo`>=*gtx+R^XP>Q?dloC>TzJ2o&et)sI(fnj^Lk&bnO>>?OcctsFFdlvDg3y9sv0? z69pvAMbV|$>pv9fK%#f@TJ?m!+8(tvGHO}qgSFLHf4@`1&~!PI=deRy-&Am_JgC$`16%GyC}rlG+=lUOu%XN+;7`t<3k zb-nA>laR8HS`1&vh`WMwL+*@i$COm#9-N*QZ(0n0=o=t`#4{D^%xO8B`kIc_t`{sw zfFV!$FR0b`!y3XxdTA**w)DC=yMw2w8y;;0kOZU;F%b1OKRBS#xLdKdJ3aV`Lq`jR z*#6x%uRfH~!5sedWe#P*K=c^63f!dWwf!PTk440S)ZO)XX=i|19|B(&X}K2L0VW zZxQn-_Ic8`jp_wYuK4fM27?EfcxpzTPxxt}8)Yh+Bk-hsUtSD#lHIgv)$h-?CyyHN z_pw)ft^wOI*7J=qK&sT21#ln0f7}NOgbG>iv1&f(iiPQYZy$Sr&ZZ7e*nDTattsa} znctbtO2quCDkQ;kq+PlPe_>R;7_XWnMrr~I%M1vJ9v!@wVcoHY6Sz~p2?t+(5ZL+Grw@btAx1cZo@UJq_SW1E4fo$L5|6ug{!0|Ki7vq@m_Nu2)k8<5R7G_{;! z`!jaJl>#F?CvklnxN=F#$zl(R)El^HN40F=SOEKo(1yZ_f$O*=;5dB^jOgbwz=#5k zm|NleYJ8BBE}r5|`S{m+=06fU2aSccUixT7Ik3bk1N85RLx+R0C(4q7=>Rd_wy$)*6#QPG`8_+@D45j~`u<|n#5)OS_xY6msUl*@OY@eRW5hI) zL%)WhXo7^31>P=7%&XmdgLSNRQfE39d)OF~7~NvrwjeZ+-|qQNI529TQ)SD>_el4 zivURv7Dz)OMuZ2roq*Pp>7UowPx&5G033ObCk8w+ovj-_&8Xl^%0{g6Rd484OuJ71 zI{f@DzIId7lp_@jPXz4f_>cX5&yO5>6S?0oGb3P3>IPH^AEgk$9zs*7rR@aBSa?pf zvTcPbzO3)v%~oQKVQf>Of1jO_V>k5t75R%N;hR>!ILl-RHs6>po%nuoWq9`pLhkM8 zgE%jyJU>FM`*(+3aHV@ioA!pQOug5Fbvqs3#iz=jmB}+{Upoe;$cI9!O%g%)H=q}j z`MBU30LFMFv5=_p?HTdH=Y=*+9u4H%{A)?r_MXKapcHG+5I>GhuHS z_DKRd!8zg!+`|=_alm7lwM>2ppPHghV`!BU*6%Hxk0pOy#3vd4g!mXz#5?BnQhgWv z+brjkxE*C?q!iq@$R3M6dw zpq`o%ghWv*FSnXK(qR6pbY!qn2brEqRST^fI-h$8xI1DeCH@h87yvc2K1op3uX6D8 zHTfGCSym7QAI*pcUJL<>ZJ+sY|00%(VKXj7U;K4wlaO-eqr|*t9-h4!Cj8FVYqj-l z3*D{<=?!iG0F)~U{f9gX_k-bdA}7Kh01v@Ne*e11Y*9o@kV06tw6>v*7yBvlNfMpq z*A8*&G4lP-PdwN>xxe%YV|r1wP1+@akt z(hSCdb#V19#&jfsibnQshW=iv(C-%xkmdMG{*%XLQ_x zbRX0ot3-%TW%qYzDe77#Oy}7zK~UOK87I@}ZENi=NupYGY>AzTYub*WG644SH#9}S zZlR88^lC;XL7vVP4W*IV$7t0J-Pv=+D!5N`Z-!O#3@Klj;UvE~w+?wb} zJeBGv*0Ezb6#Ml#LH|@C-bt2vab(T=F3&PSUR8_Z&0tJ1PZwL%H>m2|FA+%wPvl_4 z!Na$DGrZ>pQo_7K9G~by?HwuK&|AmC@{`Lg#1;=v8*uizjo2lA@St<9=A#(1^sO%C&A4=0{M%&X@Q;SH@+!qkN_zmCe2 z4PoF$#@(uiRx4+$aYbZWm6OH>Jj6YxRESA1R$Aaxp}8C|_kpjHbY{$CIEb}02^4L@ zBx84=5DHhcR03{fZI8oZi~*h9#pf|_lHvaa5x-7S zRp$c_tud=91?M`T9mT`Z-a1GDF$FDHfSvUY z0eFkmdN{Tp;6$SZuc@v)Ixj=~TEiLalSj{C=<;&2#$44a`=?vw*Q$(LeCAT@A?l$b^=$+i3@}d>ugzcvwTa}g9BVf z5>?HmJ~69*UW(=!P%2mZJl>?n#0B7Ue#F!lEq#})eXWd@rlQv@(4rGp6}}!}o;!&Z zI5d&(LGD;G>;6dK!>Rm5b`MM`eA=U->D#!tGR)ZC)L~n_TqC?K^Q7!y4j z3ZAjjeOhAD?T(JXEuvPi(zK^aWWTVbgP~_msB-n#{YBuQ3^JO@Wv2LzlfnSUAD9K1 z8Kl8>1H#*Twdm^OIQe~67eCc7jN&f)wRvCwj)el9>wW`zX_3&-+KyoGx?qo;f;Jiu zUqgZbi5b-x!{oCZ{_UJX0pD~A+W!xM>qD-As(XpNq=V8h%E8eBHi_!=-~ zWBuH_Il$S)k8Qr8wY18k;YvPh{`Na;2@$B;5cAjd;5?s?)VzdQ9XZYN zJuAfZa%D*ZGf-_B*R`gJ2CZnocs(;>fK0>&}ou@d=Jh&{niAX!x1aQ=eyy3u@H-a|dl z{4T(&SWY3$Y-VjBemeI2;KNwcoC~HgY*bXwVp5sME5vPeQklbgeLd(k+26A8RR+8d zx0Rx~LX~Tfh7faIqXF|+w~h_C4=ugmx-TBemQgpf>ir*1M>Sjy4a++dQNds2p)sC!ylyoQAEXpPsb>9+}p<# z(OFhbk4hm4f?Fe!ksRMkyJn;eXr$dr9x95jp7)A0NlWI!afS3Zq{yKA^&<;SN(FigAb-g0Yho%eHR(Ja@r2W#;v zRv{^=tn?2SN6x>>+!_g8j{Jjt(iro*HS@)Bj%L+;HOJi=Q~gkt%%5T@NehPs63{Y< zNy~$_solVZh!qBWzxBdu28icdp7^qmrg%+l!;-p`n6{9g%=AS@(>xAEl#AJWhYP6dtc6d@NKOVlVE=BY*IrTh9zZRHz7MOar zFLTElH)TWdBlE2MZY>X*^9DpBhyFRAXvCA7+`i^PAX|g7L&1pUF zC-PPpeU9KvC5$BQe2#f7G9aB`DZSAhoK3rwXss7os_SIC&538r?L;kV`3HH{EsrSI{x`}QE#5B**xWlb`gaNs%gAasmBEV7Kkc+T!7r}-7F(y61poNySs z%<_UL^dx=5Rz@HXz;%Z%0?4P3RmCbxl_!XXA4&GPNvS^5>-Edxm6`?jrnC=--@VO^ z3PyW9x*#L}Vs#piw%V>T%eX}m-&+*uRP?NbyEl>bh&86wWlVC?*_-Q`88LGiGRXQ> zB~eZ+#J)c(-=Oel5=Yh1$Ub82^LYf>)TO`bxE2$PvCFGKX&E4#(lf(I(g)x_$kJs7 z*LkM;Q91~&@OAI&B8QIKm0Re87yia-A(zb$EJ$R3%9Mlpz_zaf+X9ta+7I!2_?(7m zD8D2+Ai5niiByxl<0|2gs=jESjP602QU*_mV|Je_=o3)lpou)US!1L$ zXnd2JqjN=PbV`!qNs74(*f()ytY_@pWcU3{HO*JWkB$0K&-u8 z1xAV-!_IgiM~mKdR@cN=%WGri`N98q(GDHlJB>@gC;y$l+ycLTb_2S-TYjAe+tIkB zun>lBTSG5B%fGE?T(%wXLjN?+C%3c2`k5STV+)%hSRescTt34QkO)K>i5FLf?YqN) zreG|mCr+B;J9zR^gOF!Ejp@<_tV~t z$NhEs7#nJ|j!RU=?i+b#n#2M_}2wD8Uz`U!Ban7?punbMaRBwBX^ zh!`zQ_FW1a>h_lcn%pJcRjKT61-)_c^3xw&^{mk2aLXKDjo|0f&z}EAu!tEkspmI5 zcre?+K=&hf=3xjG#hR_~h?B+B@&h>cf#f8#ZNXxM)x_;D2g|VBlnZJA=z=Iv(S#oQ z`vuET6@XLjgXToB#?3FhnIBaY-IG(qK;2`n4m?G%S@X~qApdJ}l?a^)NG!G}XfDUX zEv_cv&@-~blS9Py(1*Ai(0FN0$xC2yhAXcyr>Rw6_~4k`G4N9s7kH>R@$$#<=dv~?FZH3z<7wf5l%GI8in{K>C@KmfHbA9B1x30@lNu2fK`GL!Q2~+Od$}qK3PLDS1R*HWI|`vk zq=eof^iUHagce#VbA4yt@A=I)^JktXH|5@Q_E~$awfDCEjs7?Zs4g! z7j3kqc&oiErAs!B9zb4`aYS&L^DdJP(>1c>=dkVJKbcZr*rAjUw_qf6%pz2mA?=IDl{%_wyn5Yj&|rMhNZzat=eC*^HXPQLGf)DuI=W zog@K}J?c!a3<00X2xf)20_#yN-i{zLR3es{Y70C2XvrUf8=PHq{@@6iWaS7oHe#dA zO*YmOdGZS#-)G$^Ed)irYjYf%=R}H;U5+dQs|+WGkX1^v-I2 z)so45QKzaZVw(|2_K&A^@f>*%`$V#$pWn##?C+f;y!DQ(NHka3Ud~rf*_C`=fxjTw zFkusK4N2mAsszQ*L~lo{h1>->NU622ldnaU{zw;n<&;-(zQgp9 zvAW?o6*;3sqb>2c_IFuVj%pnVYEwLGmXoA-Xqe-8_KgRyF{0?4|I4=*uQ;|n$aHEE zNb|$c19@Yaus2Jfrwu)398?dRES-RLjOH*~YbpHp7sKHmNw6$1yT)bkh#5lrL!CqL zEA-pMBfSq<8RkT1=#m>fHuPd}=l-K%*ySL%Yt#Mfq*dD3OTlrFzjJ+7wI9J+PfoMs z{&k^qIw1{ghV`+z<>f71ymq>?Y?i3FSPye|y+q>zVNdrOriRzuH=!t1o2SW-a6Z^LG0KNOF)2bRH+9 zj$Wv&N*0Lg#1(1rpa^5nXf@p}hn-2VnU@EUV#bNI@m^CK1FW+qyllpi9k#!xE)aMC zN!0iPBYXiRiL6pkwOP*RIe_>!2f>-f%OOjD=p4JK{lI3sl4_^F$jzC?BKUFGYINgu z2C$l1%S#Lb&yBnZGbwCPrbswXn$B5e5lApc|1fXsRo%V|%85WwPRgv0@qd&Yr zsl2}&w|$wsE-%q>+Ol8r`)17AMdOQ%hG&(XCnQ~s;&h}ii(qrPgyL*;B6Le{A0V5~ z!Jh`dCaog;4A-N3(pTA3-YLVtk-IEzf9foQ2xS-0W#8JJKdqT?rN+O1^rc{F$Lc-1 zn|q&f(3@^$)?08=)y;_uS;pB$$d4KxM}TDVisPc5D+NfQIJr(sl}K?rXqARH-9IGw zo|6KTEXrcONoQKqff~1Xc{6%*t(kUsL*ZskstU7p(fobUrRUsIGAeIMr+aQ(3seeS7O7=)?6z?ZF&PMjbv) zTc~`p(A&K)!B$K3ep7+&u^!9KoxQlH12)MhPRc55$5pbtbViS2RwUBA%t{Y*EexY*2WzgB zrs1UX0(om}r#Dv%8XIuRCFWJSz7ei3zjwIQniZ6nH|kx9>>2{V`o-gkCr>SnKfKK1 zp{cgMS6|aLxMm`DC`Fs6+6bSkxDAc%Q|EN6VwbeV-j?7BN<2Zb5<3smJq zG0(y1wO}v9(vI_H^Y4u{ok;<*ZztAWWutMBvnUP$>7GCKu;h>wfQKR^DFJL3|8iATuST1l zhUwA%@k-Xcwy;gM|NCMrdekWqF$*HfZSX`N$q5$Nml*;M1!7>s(}Kngj`AgoxG%k( z?djxd>B;14r)H-vtUeHJOpUAxJM<<-+`!;j{`LbKdy|uocxfzd_01vO3SvIhM>ka@ zZXaPgtd~y~&gV&{__-~0L9@$*b(~TI5B*hT)l|Bp@-$tZ=2uyqGjVCcS)8@ve)iSe zliq;A9pPx81KR_m3@5?yh%M6lk~)Ix8R9*sQ>bzKK_Sy6%s@t!!L&|D;V(@URW{sIFZ z=4TeX)(9Z^(8-@m>&ES%^930%Yb-k?LH}1KFxvQ*30BsTx#>EVU^0*5|no4 z?bW2^E*Ht}$@1=ruI$ib{B=LcXFnW2WcN7t61u0d$jFR_M*FXzOm=^oVU>=()tm$a zmGC6Cgpsy{34c(Ly2aaR9IQDk_SlB7%Sd+=CbP`jJJYYN>vZ)`qjl~x7FyMHQYS6L zBf8y#aQ2I~d0}Vjsz_G(yn_ow+wX~@S4Ar@rYFm8pNw8}8COV0rK~=yFCXErGc{8& z{v3Drkcz`omE$W%aPq2{B)2tjsr1JMK|0d6ZgM<{xy;Yne)_(SQayTKC!+f?zL~;O z(+G8aOwuCuPBjzu&=xO*bX1LoA^(6G!V#ry)WH~q+<+^V{5)VU!p(fnVae@fA0&|Ac z+qxdwI&EDz8Pp}!=!f6xFj?F?wa`7RC6r(^(sfNo_5AsE<5%){r7Lrp*X1VfwV}y-rTu$3*YhV&jBmGw+WGqk zc}7%O=H8st462`!E18;2Ji_l>@G2)oP@juWI?iI)IjS6(Q^j?0I=)!`D`PEP6LhLE z^}H5}n@Wo5%cO#wnl45WipQ97W|(1baIA|$9cf! zXF5>5#U<^0YVNnD`Kj({Y0YbTVLWk#8MkPbz6SjU#TxUD$9=bI-mC~}TuBQEN|VoU zsCx2p(N*a|_U&)v5`U9lf*-bLFUP!GBn>4>j+dHLFty!^0)oMzqQ*UJ z?f;bS|LIqI)0wb+y0uNg4(0oeTZr>k?4K20p4^mebyY#T zk@#I+|9oI{=9cAORq(_tJ2JtXd#f(T27A8ZbzAn72)U0;M2iEP<6v$CC6X~TD0pZ( z!k!b2Ve74o^yhhTk8e37YHc>WE|*wVi#@c68k!k4PA=m^2ogs>lHAP%h9V8Su%&6j zh)X3lFaH*MO40Zpk_3*}4M=l(YMkIPlK9k2*?Yww8g=bWChUYSkCI zJp^iMhTjMkQ-0{}B#=zP6Fpg|nmh}e%$mK!6yO)X?TI<&B)uURMAyhLE~di)IOv2FfX<7%6a2UfXw47&J6tMDpgEx@cpZ9r& z-bex{NVvpjk^aEa5}(4Ku<$2!1SPBGp^HAO+EEP7ZM9~#t+T$2{3%F=G9yu}zi`}I ztbxq7vMxU`#05^Yu&fA&!}D+3qw~V3eXKE@^}$%4F3`5xfNP~kSnY7`IDlZuD1>HZ z9f%;(Yg>9F-SXL2DyS*(OU_)*w~y*Iu-+X$&qy~rCRkm`ngdHV|HkYG?d(51kCL3; z6fC89QTCp-Bo)18q=WWW4Tx$mvp4OhFY}_cyB-B>_n?PaRlrV0ZJzoyr9?Sn0<@B^ zVCXH1P~r|#IhMe13#d+{`p`gwHme!e{*PSn$E+;uY=flgyInZ*QembVa?^{1WKbvT zn1VAmX=xy-8BSt;`44-fHvAv<2mzNtfLxE$g`$ge@YNitEGkqy$+{+_sgCB)f|Pk^dWk|8C&nE?*U zXh6`&dlw-IbWVxB?W^GhxOKIK6kzH-O_QP&k7t5Np%7ad*XzcVq(y{*+mxGt!jiw_ zqiB8g)6f%r$!22v$)tZw^}PegB3l|b>f^J322SCyNT3C(3pBKwUPkq6HZEJt4wwTj^i;5blF9_ zlRiVcK35>E4}uv=HiM{;YRs?6A=Aj|I@+1 zb_%xXPzv%7+6d~xfk?Pbqa4wzq$;g79g4{Qm zTVPp0L9BMUw=v71>T`I&{?M)u`71L3Om3)zMN{%IoMKE_`wMcKVTru%pOpvGW2yDQ z`_V&RC(gQ_oLTO8?zLTcuF3pEi=6_?!qt+aVO^TSA7t$=EJ;<-T-vamqh(gw6X`$F z)Q^?pUqjO%yo-)XEu~&4W&WYmb^N>i$f)yj0^VFO!D)K_zz!Js{&=gcOd*Bpk{9p& zGEgrM>?=kVKX307dX4pEePOq$cmSC*^7uSt;La*iNRBcU64Fq(vGG-`;EIF3=M2G!i3sjM^iY4;BxqHA-@JGso_)=@cH zhaOP?_Z0R3wm|j#5WCyF(f^U@NL;gLLu(I=dON?|2o1B3KZ+BD+JSnRMMB?HUp(S?p8hk6%Hk zp%P5;I`={n_kBo$I-b+q^4oBOgC`Cjyq)|iv}D;{-`?nl)o2Y!+~WSx`a||trln5vEz0S z_B6-^snOAenf62RU&XL*@}Lex{5SgY0fe*+l>$$tlm$09U5_d^j?`-{UKbCk|HlP_ zAOKHbSS1&!?XiGRYMtq%u+M603L+^(`65awKxZX}xVgfF*^4<3R*gXW~CxG_KxqUE)*S!dT?IG^T$?Ov&Hzt@97e$zIo>M z_peGr?nJG=eWMsdyJ5eG)?mBS>}Y9*O=ICtDPFX)t=7(;?;mZRYo|`zm zi>u}#TvkQ$oItJ3fdRrK9YXWo1NyQA(ru6pYDdz-d(WWT3|NIn-AClOP5)yZ%jeiBWb@oDe^-u>8MhU>cSbhbfszQW zUDH#qnK)wdSNV(QUwlVjKD0nV_Nf^Ym)~uP-a!cG^vAX&ZMWZ1l8ZVmw;8HBZ+3L* zC{t?j{7#DOU@HO=L01h1cO#O}@faBh+?3eF4%d9xQid+Xh+V`gJEkVIzYX=h;~tFA!Yu}D7_yQzmRiguoBja2%NY?Zvoua%;ac2m z>smvP<>!D}+{?vT4cdNw#rd;~72A&|L^HD@PdxZ|Q583(`-~SVrF9;@X1#FXujcXP z1k49mk|y74T-8+hF-G?jEft%;E(tBjf$S|lj^Kt{&^MQNwyl5UL}ncS9wU42lY{Yn zwn&~q*{D+xZs^=PPmES8tNDw$ZT?D)J0FFbH%6+B^ed9V70aJ^&o|tew{;WRAg2jsZY5Nz( zCeI_b>AuE&Jq;}_-Ot;>H0G|+pj`#z^z-y0pUi_;%iJCP^cJ+w2kmgZu( zNNBxp%ps?1a6`7kRQyG8*3si8Bke*GpQNgy>-=A3*H6sH-_sE@zHsc_C&O-&dVhlO z_eqYKJ$rM(@+sSBTeeG|bi5r0W&Wfh4&Nqx^9H0jGg{b#$0-kAAFWVu#+QVTqPQ;S zF_Y;*4+7lmN_|@$IeS6;EBJU5^WbC8*Uo|?yrhAs&IB%~+QfpYADF8^$qP)f+Y*l; za=**G)D()?$^gcK_IBKC4j@?|fdxhjmlYR5y3llcA$mp#-hRT z&6tVq=-@z`n*70&5ivk%LyXxt-+Knei8*rocJB!o3L9aRkXD1#*sq%&K)flM2=|E9 z>tk32id!y(u0QRW4sh8V3u<;>Z@?k*-)1S+?pb>+%G6v8cF-vlu{>k8Qty7R3~{L> z@slO}@oXjPXJyQv3G5$~_Ul8=MoIHJ{s{zntx#=U#@dP{EegTCyliks<@}ANHV8{` z5ilo)+}sHM4c!4VV^}E#coB#mRhz^4qszyDA-w|#zitlBu6iB0ECB-Yp3z0&?HHFP z0^{TV%Ao+{Tg1MPR2*k^6bEYHu%bBI3EpDq-RrYu!(2t0gc)O+E9;K3v*(ye0+j6W z7m(Uwq`y$8S zHDU_2CoHscOEZfDj$X5%u!xv0zI8S`W6T`4t1A-pnH)8w6w{-WQY+7_^Rj2iCLBO|wP1fG!R+J|g5FvR{JS1$F-ME z<`iu%&s=D+Pj}dn^(@2O7%ZzQ_8msezE$1#Ocr|>|84xmA#Xx6T!yFzw!KVO%rdTF zfZOg|;iu?DF}xGDKLKovn7%X)urMXoXZ}om3Bfg>>~%;d@k>+V%Yu2Gc+W3vf=^WK z>>l6Id?LuoVpj7^QcH-|%5?lyS&o;OAMCwZwb|R534yS`mS$S*B!12I@(SuoQ(c;> zB_thvDJK-~sT-(7LGM>$$!=R9-Wp>z2VH@G@V?^8AN-*ZHcyGA1L!b8=H&jG24bhL zeliBBTfG%U=YIyD5B%ptDMVoVL0W3uZQrrv^}qbCuL{^BuB`!+;J>cQo?0W!t zjNWkx1nDtgNq3@g8~_tcpAje?p60}| zu>e^cO081r)O(fB&@RJJWe*@b-aA1v3ynXR{~X?Va+hx=s%6JYpOpOO<}|tNejh`a zNy>VX>zV~_i4KYQbO!K!L`HR;l8gk^&gNbIaR zFB$$kYf(@rY_#-4*c=w`8nTpowVmu4-cu+psNz2tiC7d_9u**yYBhURTF%_LJ9qp- z!Dr1}lCVl}J+-EEUwdY;m`S5|Pdvxp?kH2`s?9_g4_<0gBexkVPGj)1D6*k(p~H9Qg2 z3cNG8vmYCq5{PT;5ejUBQLx@cyPG8)w;a0JATuj*jerXDC zx~k&$*dkx#7M*o`%i%SUwbGXXy+t*(c^-(%Z`9j^Svsq*jGjC-IH8<;QT=smcV|3HPL_<7f(jtOFVa&`toY4bJs&v2e&?Q%38# zKB%s04qsMh7Sk*asOKbm=Xs&!Ps0|qRAKl+Bn7le2~xo4CvCGsL2X^;kUZfs7b&P^ zaDf~-_qqYCK=oR;`5a)B2(7s~59`NbSBX8n^s$0&#Yj((7z=HO5!ODjwj%I4WTJ0y z+WrViL8|*Hb4nTTq$m6hsjS}JHT9Yom8JxrBH*g0B<;@`pZWIwM}%;+c+9ugmPu6d zYF6OVQ}YPdsq0~OpB^X0*T#mO{Pru=Af;(;0N>QhH>9?XYW8Z>9bNZ1>3p)pkuO?f zzV-eCm|A08tn{mIFI*qrNnq$C5jH7%k%S{VNrJCes?lk!=(%5NE>>`+2eINdG>m@M z61vNZd=UyR_r$tqU|GutFnUiPsUb3rPuXJV4}kr@M7*3a)e(Tz@i1Ox?_D$9_@t>6gSiG) z%AR>e9i&^ZS$eCfwt?)pj zpwXM&@|O`8LkvYyl&8{N%B8t3I({&gqtQ|gP4EH;VSexL06R9yP)I#KA- zc6(;{5f2j4)pCibMGsQ_CYbR#?@99_=PQ~69H}K0kelK*M-58HYnd9q>cyy8S>y^- zvJB;*KUiNJuqKZ0laMnw;VR8mQif=`kyCu{YIJk$*2NLW56_)L`K7mqX=08GHa~>a zG^Ndts{zENAre{Bap|tD{`P!lQM^CT*%`H0^8G z-u7|_M&wkOH#j;T4erRySJ72Vf}Rdl*!FA9h#%*Fv`OaD(8T(Gb+pYR%Z_Z~3sKpw zFOG{k`Sk{QwDmC-d)7jvdn8=w2KNLX8jCEv=Q+2RKIu85AeJ`W9{TM&LgI2L|JB!r zkfQNgLh*X$Z@~GPu3acg63twIZSRu(6So$#;Z%x#KO00uH(Ht+0th0PSHOv0yQTwJ z3t`~TH`r<=Rf&$=H5FB)|5L&z$@~A5aGjZHeRq;}BN12LfvQ_UyY#sKCgs&9#gkscqeCWxDvHM+#H$1*KeW5@ z`OG!A*|=+LLp1&AwW`e4hv%<($`JH)1@7q&<>k6HPWeWqpd_li_%Y!|H(#7{}~gZ=YqiLazIY62hJvO^F4@H>(LjYTH8%mr$4-KE;=N< zrB`$C$)5R`vVFhzR+QP$yqXqV>KRN%M>_ z{P&XhUbhB_J$Jvw!h{!ICUS=S7Nkzrzs3FSW9o*(7We3bfeRF;K3plfwmH=I1ZjQS z*(2V$ph*1Yd~fTIY1zs+Y;#J|3G0GM_bUc5&Ni;%{u+J3Up#s^QF4`A58{sTH?x?e z4u9H&69(7aC=DZJDd6vp3yn8lh7l-VN|mu<4lrHcHiDL-_m5pPUKdB@Hj29z z6!&jDyaE4-%8_DypIw|J4-Tntkl(qkT_~b{$mNCflSg@zqq#_@)rRysnPW9mnAf*w zS%`NW{Rh8t3h?vbf(9<2;w0o>poE^)U1HgN;zZO&po&c!@6$h$fW(G|n!380JsH>N zy;{*5-HA7cF0M>H9n6&buWqyMOL@Zpy7V@tITr;73Wzg)`S zT&gNMJ28g;Q7#eoCN9z@?@<759Yv%?6TB0H-49nn4jHjQUfaxdEMy4nRKV%in`e9R z9bjHS>1p)c(S_N$FzQmrLZI^M0w-i>VG6f@;FO0rbnhxJcvO$^^6>Slc=kQf7d&#W zXYIzG;g`9X_Eq1Xi2S7QM&~a>^ouXxi!|eAIpex3Ny6fKs)U_LC(kNJo+cZ8T|PDG zKi?Atf<>ikq8*oW5?j;mU3+L(J;J$mtY0_22}@o(X02VGCmXm)GeOQ`%ug;#Cw9&P z8R$9U5_GFe&afubDERA?TTssoG8Bfc*ZJxr%Ogt46bj+gSfDL%D-ms%Os!J zv7X9%VdX9oe^r%5Mo+H~s?gR*GN=`~=~g}ZlrZRSQ?LY2%s*DUIk%$baqTYnvb*CA zn60~L7W3OjdT&(qwoHtCE`QjPmYLVrJIipz&{dmeHoAN2NbaWFNyGXfML0ZpC3yGc zQJq}hP;u92y)T&p0CIeJw6Ce%sQj9Dw9fMO*jYD*t3Ms-!IoOa8Xh;?t|ON^%fb}M zhf=`8`WK~h)h7D{!t>l8hl)RU9X?Y_5kvu|YNyy}9IUrM`; z|?HL{ehC z+GGEI2OH;_HJk1}*|IpxL0=x3R~Z@9=g8gJi{C*_d;BI*-mmGe>S*13ph9LM4oJu*~X{B-9Qj)Yz^0vn*5k3OSf=4rZ#skSmmae>1& zc5aKjJ1BZUZ8dI@WkY!$(XA7; z#VfcamM#!Rv0vCFxtQ2{ynyqn$G6xziRNcUu_t3nk_)mPh);Z^a)P+7hTc)P z>X&5WTqpgbd}Ws7#)N~R1(lvZ97fWUT%9Bp6V}=9kj_4E)ar}0#dPV$s0B7!JKuxF zVYiyD66V*YUQEUNMZB;|2>J=2tJ(+&Yq!*9yyO3<^zT4=5j?)mu1d?1=8+{C}zw$lMH1X8byx|#l!x#pvm!Y zDrb=)AXvKePVfbqr)uR^xR2fR^xGx#Lq6MGwbQ)AN7obuwx__ljd%KM>)MDv8R%<7 zo5|2ekrkR1H{3at7uBAAY6%?}jRAUOa;P{E!S%snRUZvox=J9iG)-lcp(|;{Vxn_Q zTFdgMJkugyMD*6Vk>LWh2aWcJrne)?RD#+wbf;WVPpyAWxe1NPgqOhHM{ZIE>!mFM ze4^>3O7qqFt{T#)hrxxrXEKxqo_^lSc7Q9H7LI^YK?#6qBC{|@RBuUv4Vf5G7#jNl zq@EVT_&@48ew2bV3-Eu?EK*Gi{~wwKjSRa5$VtVv9yevKd&|cg$*1|Gvxla=9!1sX z?=Jaxz8uexy3DA6QEFQdULCq#(~FQxnmlw5B`$O<>Q8A5Ag64z$UQ_kQ*nJJB_tXf zq^wZoFgtb8rQteEFm+l=J?`ts3(Ubt{>bQ%R??C-Nx0DDwFoI&-F2 zIfoi$>#b?Ay7rwIY&g4n{r7L1-Ck^~ma*Z}ZL?3#S1*|fR8^Q46xbRIk@u_v3rf7p}I z=Ag&u)5|vQ#KrsOpjE#+0#xcj{-h7w2{ls@g^Y;$DZM@Zp!)CskevCSp%>iWIay=9n0opW*cY@layg{#ZEtrLaKGc!&QG@?zPR8L*RM2)Y zGBmOt6hlq;j}zvLOaPmeiLziqkxzIO^pUEa_nLFr(9oTs4iS~9tKd*dQ2+D|=LxVe z;*!M8VIFtMdT6Rt$j8PZrIJgN;o`WAhG_)l8d-1=75Jh+M|XTxV4!E1r1I(A<)R5* z>+r$xi;9UX4YC1zk~bgbaTQ%ur%t`(5g(VIE_0c*9ZS7^LI^nXZAj0+N1uAg!n8;n z-+b6oyR~fRy^cUT#eT|1cK$X>mqKi; zZZp#UR8clIW>q!Y-pXdF{YP+GHjpy63Of=M8M4s8q1N>bsC?K}wq1Olb20FXYGQ?3 z_KY8Nn>+R@(t<64jvRHeC3XgSTVrJY}^z|l3PsEu#Arn2}OI-9HYHYzj_IU=U2d4S8 ztZS7yy*nC`6~07;x~>ZOzrdMG;^FX15qs~TdDNgi>Y|rh;(jUh9te}3x;X`agBL6N zk*aRY(9dbg6n=2Ys-b6;9|0~;;|epUm3jPJNaQNdbH2wYr4}4Ll@%UKWna!cGEYy+ z`1Xo8ueo_!y8M2%{BC#SoR{tBo_t^R;fj_46;~#_PGFXEV6Vqs84A05kq?H4@uouZQR#LxlBy{uWrBci( zk$2!5c6MIugH(yF%ccUz7x&6}E5In)@}>2Pc+jZ5M+ZOV|3$3W{FhkK`Cr5e$fD+; zqrlP0M!@LDfCI>LQhTHHkl_L31tU1x&ln7?bx5sC;cGM8PKVF`6Z>ILDC|KX;VOT* zbVyS}1AIrJO%Ye^r$>IWkAp0}qse~7jbNPtC~xemZ=q-X%>6X|c8o(;R#kTAS5s9= z%oW-Qf100g&#X#xM6~Uf?_0g+kQEb9i;-0@=*d~6g(=d$)`Z#P9g4+Ey)`c&-hNuq z*SoYar+P%OQ^nPr24%^A;|+f~`@^u413~FMab2gKT5QQj&vPzm3c z6xGbK&5BY*4kzfhBy6pfk`_i&aoxz->zmA{&?~%oWX0W?AYrdrT!@eBb|ADOSq^1W zkl%`ZLXiH8wAZTJ?Xi7yOj|VIdTyMkgT1wg{u$vIBYY`QvTw)kZYLsp*rSi7;OlY9 z$<&t-MS%oKBWC_uhjXQe=;2T9upc6Z8^|wtTni)fz#mt&&~-LzGJHe1ob2$u)c ztKHzGU2ogH>?yT&qBnIY{{V6!*FpsNlL_)&l~h@G7=g!rAqKV}{<4P33|Tb&1>Y)l z1y6>L|MeDtPA_iUBz#jEY*mr=or|8*DC$Uoyy0Wt zQ9$_}hrDYDjo}GGS3~T7q91Ojz1juq)Gz*?Ee{pgYX#?-$(4U!|oZq-n@ z2%=dhzO-A#_)BMpSj8>5P~E`Dn&6SMXIZ4npu{PO+BH;NYu^a&QGuIGf9b37qN+!- z5co91m=4;yVv@e0u6itQj<*GMh9f?j~mQaXsHRK z>qlqmJnWw7B=VN{K8nhF?rwD|^zF=6*JO`oLKPSNx}x5s7Q9Gt?|dG)pk zV%xqLEWorxUj@Ass(Lof1I8hKkAzJ*Y9#+60fOg+)-6{M5Ja3!`4)}Ab|`K>Cj_ux zHr7`Zzq4B!iZ9MeG8kXm*-wy$NIuLK^}@vXdn1zrH2v{8)iEvCu0rBRz7;zd+;+$C zZD#(R-s7YT?@``(<1E%ghq?`Sj*(kdRgQ)dx?D(z8m}7F0rPjwt=FEu%;JnLZknI( zFxI!34MbF#zZ<%GtF36)K+9<@LegqFJ3nApPWjhiQ5{GQtX)aDVYl>)vx~sW!^_v4 zj5lw1klR<{6AbgCFFkw_)tOpSATq%2-*O6{*{UbQ4$)YyuBl`oJ`~h{(tWQwKC9|P zuyWs7QGED)^NFmC@|zzr=S-NFPKzvCY=ZMzCoL%tfopE>kwR3zVl`u5VMkXr+T$;8 zAMfcj9pP1Y=}aQM^Hz>3MGbGe$uCaJRVzhA<71RQ*>ZWW^Ku0SJg7Fz2q61Ttp6Ba zy(}NO{N#EW{{Azz+LBm7*7qm8!iLvLpsmR{sP&!Y$Rg46TV#syNyiw@-#z(Jk@~|& z7e?nMom}VSbIx6?+8u>*z5YF$Cn9YYEP3f|^2Ny3g}i6lfl4Ps<-xyYj0OAKMMCJCNYl=a)MR zxMa7oPTLInOJu!ORY#^d@$jH{cBjq2TFh*rV~|4`jaKmPu>6W?Ve;e>2996O%JrwA z0$l4~#?8M~MUDHwaXLTlTs~a*v8&ay{;VDgA|R@ZCkiNc#(I?9l&gP;iAj!rWs27- z%~tx8;rJ`5IYl8&GcrEvqxF4AB!^dY_J%_c!$AuCWmU)E4oeO}{Ckgmd@4sM z%eOX079Pw@QW7nEK73d-*XDoZ0kovIs}Srvll+oURTbK{KF{<;W{+PEx7)eMRhoW7 z>>TZ52hUe*kd2R>&&j9foquSRDjqqlFQAwwn|+9@&uAVtcM~qxvE$d*T85%Z=)Gid zTS1L+U(@Ul4b8yxtnIdEBB%XsGb4e~nXJ}bw;+3C>)y^>rW4T5e+Hca?;tO7Zc$f? ze@=#=#;0ZKH!MplZZhnmTYc!X-*{7*)HeHDzeZ$Qt9?t@Ql1E15I$v~d1cDO^{vvgXC3#N{tct5>aF6S zQ-K`LkzhEi5j&P&i{b-vRH)RtAs~(M7*}K1by|;pJXH0{{fK@bqF&bH!PYFSY1I9J zY$jBOd2Sf#z1;iXrd-7T-I4#F?Y>6v%{DmIMrvo_zf8-U|Fn((5yq(#WR`f?Kc)pb z#GrG{Y|%c0O`S}}HV+`DL7E^&%FMDCwpHbZCXeDk6S*Dd{v$DXNvH`(Ur4Y0Ay9#8 zKEi%zNJ}UgOY{XOnZU~IiuJB0qisf-`QC-e8&lN<&)nmn?kJzC1N&W%UhMfE1lltJ z>Ur7#9R}k6<3ybe*ci}+?J=c{O)~k2ONuoIkSHct#Re~x{{|&7mfTRttsED$Eqcd? z3g-37HA8{93lBl~bX#x*TpD8auFw>PYOw#YJ)#NB+EyP4z^*f!)WE-B2WA;LNTwoG z1Mz>lI9Nd!2WElcwRRLVa=lV&KiAAaQ35F)089XuifH#O7p)8WRx&z|``h`!D(*MB zzHk>;mr(T!%JcCG{T%|n5d&J_Z}Fs|-s&7O)5Je4iQap9f?y>>=blf>`+@)LU!C;~MzfaUeaD_Mqo zrp0dz)wOpztSwD4ympy`d^DDr1c{TvGq+*6Yxr@laT^xd=D zuLT`?U<&TG@P)IKH$n*Zo2%EfoQIjDMt0%+E2;9|^c$4$LB|}l^c#jQjABlM%@Qmb z9lPLtwi3Wjw?KCVk^Y!9H+l(gl?s+wTx$NDq^qdlD9q&jcU56Y9_l@sPs44K(fpiQ zz6X_RWn%M>(^)`PSQvg~l~AZ!&7~n7+-o3rMQcZGsl#HC{qn+!vnm0i#B2Fn`)FxT zzB*+H!TGf8ZelFND<83V`=6l#4yw`nx?u%?IOBs^;?^!E_~GlRKusG{3}&D8F6{SP zn7}4t`o1*z{h*xO{*!>PCfN+=O-=IL=o8xArW(o4u)_}ZANGF?-=-F_&|{oN)&dNv z6S&z>B$nakF&+3>dIk1s8GR+CZGJA}dt+^CB-^W(`FW{1wz-j)0{v4RKhBs(wv`S2 z$zJsI{{GhN&Dy45&(&5o?zj&Sh>n&l#IUzISLcze{yp-e%VwXA;$J~_R2^06e-9w( zGcBFY*3+A?xwZ|Rk=W^96{I!n8sn#RZ0_%88)%=$<2q@hb&>DCBfJSH4slNd+byF| zXCDD2`&Z zb)|9r(H1(NYWvJYh2@*hjYXz}(DJ^n&!N20=CQP&6@D3`#FE-cA6jz2I)8K2gr$bd zv;0Ao7`Sp$s_5gV!u%)IZF2Gh%;dsTU!5^uveVbAsa?ZQx>g3Iq0WqJJg~n#&*_Rp zKrZPU@&&$i$*i7QJ3BfkAGEA)bVp6l!bqAl@95~yg11TuNNAc646~ZMPrgf zsyiK{ubg1U2H)N)Jx3sp+IyB@c%+<@cwbx-GW(212JF9AzudoZIc|BN0SDdu>naUU zJYGt|pc{vCW;#F#z>|jrUHnURTZJ6RD) zk&^BlLPbFs0RaVJ=%E{i9+WQWj-hL47zU>9cY8n2?|I{o@A&>gJlHdP?`vJ_TI*cr zI+ta0P^?HTnX6u^C9S6(NDsA*taIqPfM_r743}DT@Y6e7mH#g`K?hL=uU^~+CnCFa zOI#lB5Tc9d!CS8W;c`t^2_0|`_diS(GGGmIF_)>ut{t%;@Y!vON3OyENT1M0BnH&4 z{Sd;pWZVKa3kZQdrCOPj)GxSp|KRXWRc3ETJc`9LA(ThGRIl`Yu-&Y5GtCB96HHIq@3?x?0gZLGqY=RdXv1^yb zcTF4f4+Ze%Ujecc3q_L^z;?qd7}V@zFOcYlm_P?Bz@t~kiekDbYEm12yle%{0u@3PIjZcpQx#Ysa>(Y;zN5s-s)T3upkgB!z|FU*sV2Ol12?A^^z%THCeaTo{yie6XJ zT^nC3-&cM)8cyLy>@ro@VvqL%d1Exz*)j`CI z@sFr6h%;1hsp(y5lc1KAozB|Tjm3I(ckh9NV%!k?ycoWQ*xlsX9gN|UJenIe=v&recIyfS6nkHP zRYgEv8s8&*%3plWzyL$e*b1-hb*@la)~v%n>pAsf)Gc zeMN6*-{5I-7_j-o;V>Xh@W(}OeNYD9)FoS1R)8NIjj19iWc|n%Z;ueb-^2hj*<{g0 zD}T@9rh-AR_5m3V$2M;_2mZTh@2G@)+(@V3I4}$ewVbrtfAOn2)UO08g!Omd&JDe$ zO<^B`)~e7_NtS_4|IJiGE(j}18W)|@ApszI6r838IrDN&exK>XwC`MgW#$!nv+r%u zb7ZAMutLmv-O7RqAtdMMZM!Z?|9L2#p6yq%0m3A3?<%w#>8Hn==fkxoPkX$*4PN5i z3P7iv8eV`_l05Iza9;kh3srN|J{klD_HTR_|7iA^+C@iC;^p{IC^a6Wq^PN|$SvJI z=zeY}73c%fydyX(`$nZRF<4cPLZp3BCrD#Me)QY--g^P$F=6YGaB4s_GYF``hj_DA}sZb@k5aA$2^VZYw~$G+C&vnRn1x@b%SY% zHC2Rx--X+5qOn)(r|#x+A)4zq=(bOHUNg5mqFH*$h+H zy?gjM%UQRVTE*r18C#gO0vl{Qc;ybym&8Z#jbjY&*tRrDo_z@Rn27(gW*hS@phn;m z5P?H&%TDTK$j{aoG3LfKfa0-Kqm$K8@rVkn}0Tjl3XEWqMi*-|0}r-{D#5 zc~@@KFVtUBI1Y}nkU?BFd`eaRU3lqZ!DrmFK+S$$tERQ0g3xP0CPnLKg_EJ!KToxj zO@N6UbOMR-gFi|Pqw^0|DU2&W#waAb(5I#@aU$~vCGS8#v7ArN1Eq?p(Z`snA54bU zNA!A1pXLL7MY7;N?@HQ4pZBl|xi4Eg`ll}hNaudErCg?XG27DP(ErS$bJSN%;LS^6 z+T~oOu+AE6x9Ek}BWzQ+#+FxeCCF6Kr*rI4`O5}}N=KPs`^P_|@R~%9^DSVLZ9oid z8tD*7-j1(%;j!>Q??1sKk-^^UF7n-H!9Aa#%*#iezmsa8j2RvZCDFcCyPw_Sv5x7( z>A%_&{}NR!AHv;Apb` zQjFNC^xh0Ntg4Jamn>;B*#u)5a^eN@QfP>sYFu!8`?tUhmAd;h$y)j+gTi z5oJ1-zY#dJ5Qwum6vQ7%ztWkWT~<`X($ze#oxI`-I@X#cO0YP8M=9(vW4C=VC}3Xa z>wJI_&PBWhK;-)SmQJUzgV@4s$ z5xPq=2MQg!M&h6Rl~wGf8;!Q?0^*vBa*M7)rxC@WGT>Qga@o(a7{-9MDCs> zr5CNN!1}b~ptp`@Q>6|^tB)+Kk{9ZFU%uTc$mm=;8eX$^9|z_=!E*eL4a9z5%+7C& z;kbRj;3Qr)+SfVSW&XVnA+0>lik^BmV^gHYH88!$*VntY*T(1}6>23moK$SR16)6@5L~Ycm;7#DA9DfeL zkXfV8;lKu$g499Fi2k#z6U~F5R_8tRSURv}vUL#C6*q(CMu(12jm6HGhBA}&q7Sju2OyE*K>d1!?_GyLe}Ti zR(xMm!3E?{?`=vJpb2mUjMrLl z%hAzF`;Yz~%WgZ8WQd)Sej4iFOX4T$UEWenGW;F+chTXE54&w;ah$K9_5I%`z$=S= z3;$5)T(m^SUtW#dm$*aff>a6}c!!1JWTCnLl|rM4T(w>2hCxuaIp$=iFp}i1^W1e* zJ|Jrp*<_8AARCd;yAXVBv#oCp1VB6>$G+rJu(1XBCX&bi!ZRoA$w59rbGH?Nz#8-# zD31df^ja)b+WUF$^p|>J)K~r}Pk#qd@@O_hy9m?KynYC|74&c;V{}pta{*f|_||aI zJUEey1W8uq%K`%d)xhAFd4JgULezf$MEjH|{drKc_-xK>qbEDfV-0u1QhmO!rk*AZ z`23aL@wg|tY!;f(o_dD0J|@z`W(v;=;N|U&K}O~WG0eXBahFqNfBtq3lX00_-z_$EQ~m3S zUZsd~@j2f#q}_)-+~@rFEYhL0)KqfJk~-8!EW))rjj`w6ETz+LTrAY+brd`FJh_rW z1Rpgy{M;8I=Aq)ry=MYarNrb;{K<8U6EvoM@< zu^0-JWD|1M&w$Wc$pf-Qq!SJd_RA>5|F;U@Z)r!@9ka5yJqzQrKYnU+;!6YD)Fgu+ zR}hvV;j0ilVPKpkFYR^e?Mt#OrE%o9AStpWw&iL;fZZyCtF8CmgcMJCpku1bZqNro zk+V*tB8hJ%g-`2JdVBP$#7t!sZtT$K^77YGNI`pNZ(wAQ#*Kb~$!9TqudcJ7Ub*o; z&`#p`;;1uAV$6B$IA88_g@XJf*)9%)grlXQ3LrUGA`V^r8e+1?KuO6kJgBCDQllg(c z0;sY^A&#S5&zdVb=RplP{G#Vu@O%+apyu4Nngo7mpC_$L;4GJqz&tpPu?Mlgru+({ z#AcYdWlm}cQAx4IEcZF>jAD&w{OJP4c4TwwR$YuWto0q4RVj}LlV1n~|6b2)G<2RW zco_ol{3FV8u2cWuahR$tapwzn4Ho|rHu!jwNa!#cknVHiHVML)qSp7Vh(J$+<74zr zvyUn}<`08BB~ab=2cFyd@4Tb`v#;U&-@XQ*DdBGk9(&B@ZRDS<7v1~CG@Fy%Fb6TQ zt}%W8$w*e0A!)5CK#a$y!;BSxSh-B>Uxw=5tIwipNu(yun~(>|E~tJ_E9dJK6}7M) zQd`tas>J1wvu2Q+;;{qi{3=4oxIPZX?<4cHCc^ zn;(W#Z$isZP(6QRa*QG{tB}PN$jJffx0maAd$WrMF*ZaAr`j|4{_Ck-kZa+eU+8$B zTJrDfzf2XBm2}R&$oN4jGLzsSZB4ZnN`u9xS#wXCyX(V(+h%tFb_heQ&ZXUcHTfk) z6~CZg+aaebUZ@3s=e_;)r`pR;IAUaO2(QJ85(1FLi?v*wPFIJ=s!aQChAil{!7~l< zP{?bOiwOw4YUas?0YCa7(2u2>S`fZxF^Ivt%&)3ndShF=)e}EMiRZqDKXmm+I%^|7 zC1n6%3&1A2Y9Ycow!?s^3z=5iT=6nK<~;v(h$uZw(;TrNq)!Dy-xu{5Sl5m}UYPZ_ zFK|4rXZ+b>Q1aI99w5zY%U8G>-|NQ(vm)&2t&v7Ha3A*mxPT^rSjI@wIJ+73Q!2u~ z67F2S5OgWCn^^| zkuJm+pVhAs=rfyet~a5#k{lL?x}_6hk}rz562%zHo--+f9Z2TARUi5u@=KFTsyF;1 z^!ti#Y*BAkUX_rA4EB!Es)rQg56=9gycaupDur3bA}?)!Y!vj48;y^@u*gkZi}yFd zjCGRR!)`zGsxTowd;W*^MtG%~U0pn0BYUNn`wu{W8T_095=u4$&f?#J&?E-p*5#)t z5jh3tpRr?TvpyH~TD;SnjV;@Zxm3?LZ&wfnb7m;7CEmqYgo~Z8`L`bJ*z5#NWkL4t zQDB%8dnjpO(Sc2m5okn4!N| zxIvNaSiYYlEziAc)EPiA(6A721}K(awyjw+%^tX=D-lS7G>OFraBQ|dK!rpr&_=}d zR6>T(4Y!98Bayd&!bT)e$oSjGp(^ZrvUFlYmgU)gkLOyw=T3aHBer`Z5?w>`M;YIX zYb{;uTH*1CSO3tDjD8ps5EQQc;=(#TbhwQ-t{YX)?ln^^;Ux7AcZsNG5jJ{ia|(=# z95b!ioBcT8dvOU_7yHISx@Gv(ZF3K{p+p=E7C*PDQyd$i(o=Z=4!L+uV(0rj|Xat+eH*Mmm01zvqP{S0;MNGSN-oK_&`myFJV z8`GV;F)`n=0pgC^s6PCct1pI9#{c09q&&$k(D9ytwm~;1lJf!$ zco;&YE-D2Qp~8o+P^lLeVdq_asj*jW0{KJb^5#IN3oC04?2cV1T2&AQSJn|5u6Y{$ zq7&Y|*BI0-<}i6D-~}bGT<_s|@b~lB{eg(4fYE@xz4D!RoR-ukKu*NTrSS7ciUXp57wO%;YEsqnILcww`dGGNbgsq3?0N^%j581I)fM);yLv*> ze~cNwQvB_-DwWB5CgELkz@GSqrZ$82iAYxrCFrZ{yXR6)+gA{}Z^+Ybt$?=A8``;Sp3z@9^_X61TI`H5mBO17$&MDvVhZixL`nCjuB z<=2&c@j+>Og0szVYM(f(c{P?Dhdcg0bb6jjN$=u-wrt!X}n{blT< zf>%fSMx4r`!xfbj!QIA2x|U`nu^pb1`t}T+aHqBiDvyjY{YYKF6OVsG89R7#jZc2z z7}Hr9ym0MK1ZKSc9qLSn>ljep?RFO<6;$}t8LaCiknwe%LMZ8}0;I6KD;%)TjH+DhKp5wd!g=a1FWpnqB6tF$? zit(XgPUsm7ovYNV8RaCti+A!A;*GuU4;X%?1<_^ed^rK)w7GP*##jx1-{(=Z83N2| zUqo7;hRWN_j6KTu>ZWbzpv}6DPK}l1v6?fR^w}$J=cAE*w1)H9nUiYDRnN|~&;Dd9 z@pyBt25UV$ib`?}pVTs&s*lMLpGlc(tIfz1IAHW28>wcN&!JlO1A#05ep3JupYq{H&rbiTSd=s2uj-u75^ zeV3=ci1v?hc=6)v*r~)VU4^YzAqFcJ?FHZXxeHD5nHie9QQI6OjbPVvRGomlu6#9X znl?87V$FpcRRpBv|Iykpj9vj`GyWq2?Hy}7&QylgCqb7l0pNMy@DbPKNORyP_O(-Q zjo=RAM?kC_?e7zNzB^B-A&8gx`3SD`?4|X|(mKA~%+DRL&2vndF4$s>dK=E;xaxa# z)mCwWLFev`o#wuEi`t22d{QeW209_|uS*+RAi?a}{deaOx5mKPZk9X__-?S@xiQ#P zg|K9Ibau9Jz)sg(4reWIMBIU)r(cGcxj$Z?_fAdsFLHlkFg)A`@bE+d3cyF+E`c_N z^7U4_H)i`HF2o*gxc4`a*t=Z-P}MdRk$i6acJ0$kCIe3Wbtkgb@Y=`UPbfJACRT3- zbCgNf+jMaqV^0j{Z7`qj@3&EMv=K)11* zYkqRG(#BX`3(%nXr*0u4|fL1d68z1CGFo1G}K!<=h zC+s)bG#QB#s;OJ0JE=(p>Y0EF0o06u#%~>KgZ}$6ps@#@uu1zt4t@^27e((i;N)Kg zR_9W>RDzw)?`o~$7pDvM!iNlrDyWKy@EvW$I9U!yZU~ymHS4H7h)jwEo(q^T4stk` zYLaLF`7(&81UXv+CmW3(`mR7sh$>qanL{kkRKI6nnj;zXSWp^i{o3%JP7%}Mq~-3E zFC{PCHS|VppB{rZ4Rt1{VXtEbz3LZS5p#moewBI+3YHYt#^7u+c;;Ou!mQ1w zKJ#g67JcR#y1{Y4LML_-H!(b>r?GlC)_%~l>>I0jyC9}l{Q(^ljmv!xFzb+GoSOZM z&y*J&>F&81$jPZ^KJ&iU_uUda=5j6?{X_AXcIQ6*rbE@v1QUJyF2UnwRL~I=EVL^9 z#6yXxIzmmtZ!hPGa=iEv^)JR$l4}|Dv}40$o35hga7)rt+PBh*x5%JltTH|1;3q(% z%7qvko5>CAs-zTV<&~#ETjFf6@`MrGVFP2Q+gM=1lV_FQraQwur!rP3?V+yrv1xBjjw_ZaBLiZOBQ?{)VBkmtbn@`n`nbR}n< zEx{J(<20BLV+ZGFCo2v+-*6_zq6gPzUAmP#9UNGoZ8Lmu52->j`>lDZa4=ON9G4{q z6&@i#oX=nMYSa54+s1;A-b`s2Y_SzIqF>acT8iR@U|z&KM@Iw{V1L! zUMpNI?v~@z7M}G%*HTo6hSwulD*)0-Tl7_vq-2!AI2Zk@ZI*=}^AI$OaVO6J`+J}D z#B*b^;a#r{&(U}MoUL9`Zdq=A&QFW5!!eGEny5JJZMX}cgBWvw%kv5DfUI6P&=zzw zTAE)_2)FZT)G#(SgaD9+hLo+Yt|{MuFr{#>Yr){eM!Gtl00MbSA$m2SxX<9thhwhf z>bcAfW&k%&Aiu}Z{_AGcP=LcAnVX+ZxU2@#0L|{?B%C)+JH;NX_g{Wy99B)t&;Z>C zNdHTuQ1sr%(_TG)3-Gb;%`C)q5p9dn%pu@z(mu)S96>sFg>Uu%)pltde)K5Pb!#vd zRM18io&+>QKM6>>v%j))?AvRW&sapMA1gOLo1U-Z20e4?kPa>!R%LVa?opuX1|c%Yb@p zPQk{!El%mjTlwONF{v{S?0Nn6Fu}NYsA3pPF#?}~{t!Oe#%6p{U{sMBLFrsC)fUIG z;=MV%Zu(AYywi@eP@l43nf^9?WjV8>JKYskvQX&Bj~{kiwoN^xug*UJZ6Z{h`o za=*o1;#K2&2SCG^I@jW<%PW##Uv1n#PRW;0+IzdtxZQMpO;cv+# z!wr@6TAaM*Q$aQ0dV)-)T8e;>DOp{BPEoJ(jE#0AAe0Hk)0IF=z}z~N%qO%YAYf7S zwujy#KRm(xj?LHlvDxI~`JiIdZC&C??wsjNOqb>KyN%fzugHgbalP!md76AVG=>!J zI}e-peN)%=Cm{|J{1luD)YUpVw;jSTT{7BA0?}3#YZ#Tv@(F?M7h_|qV`D?c9HVOr ztzNcI@4AnTYG^$9)+TzpeQ-7I9m@;hqvyX3JW9Qu9=(Ue$|mx>@#F=K-DS^K`CuDU zGHd*?S0USB1$I`N-`hyOlS`~V@~)|=c_vY_mijQR=gk}NmZ$hF&R$~!Ti)?II|?Rp zN144m{B6b@gs(O@k(A}|iCb>zcSD|wN$QKb9_Vk3c?;FZz{NT`+P|tVcY8dCrwfxq zvVcJelF&Yh1XBNQU@QQfYWVlf;-Rf_!F95u>#;~+2{QY86~+$WEWL8k&S1TJQbsr)B(0PJ zCC&G%Q2y%IAe+-fMStq*J3izUwKr^LxK~$9Hej0+hjn0h0PE(liIB$kj-YTcFmDA$ zdspIdy7$B$W++wVE@A2m20T{`Jt|I55p0IINL1j@btm1Iq1s?zZn0w zluxv6V}l{v^G4eJur<{~rVV53-Ik&KrpM!}m4m|XmN|upWf%d_*VvisldPLd zTCBUCd$I-)gYWsoZifEMMKq5PeVz~m7VM{7EwZPNxApLZQrHM|EG9Wt`Ne4agd z4jf>{te>G1+25{fM@WhyP9yqu6s7n7jlG(HR#KswX0Y~IpZ_08q9qIiG_xQE!25kc zKcyi;J`-*td>cS6AfO{C>x#ze$`f4^pNFl1z zNQ1@O%dJT#IFBLi`78AX^9l~aW!Kr$js9c}{|3pYVJ`y=Qrx*diw!F7Mkd#`m?Ong z&6TaCdP*I%z^_@DUZ=-jy~p5&d+V&WSaOo;K#8i9OFGqh(a?~QeG7)nE`0i7JaHf( z9~=kjCM?1L--Nc2+`41u z64gSVe?$sW?rr=ul8)BE@Ju(Xn_@L#Qx^PdxJ<|+eX>u{9Vt3v{zW8S7$U%CotIdq ziX%(x$PU5ti!*^HlDXNqf?H!x+yV5AO7$#oN>mK zhx$cyJ^oto4Ji9xeHSO)4afu9SzykC30@5m6*PADN;#?D>cMgh^)@eE#mC{n+0#BJ z`owQvQ%x{APj3f)wn=0^ypt}qGQ{M6x}Suc?ZL79mWrACHfE$qIg)wr!p&#$`K?@{ z1zdTqu|U7E(9*q**tu!a{OEo19I%sY4Gda%Gki{$3ObEO-|)Q6?pYQQrPI9YAN1Hd z#X`(remL6j;<1D65ql; zSfak}-tD|jca7QG)%~i&<91<6ifb>XuVaNNDlRbHrim=~2+xn+*cjUH$9waUBAc;$ znHr2QQ#e0Kms@2fnqQZXz8e1JfjTbBlv#2+vJLV6UNy0y2$}%usXB)eb4uZEu3Del zomsZ@9Bm60<~8)WO!i)FH#Ghzs*2miGI@GVs%;pP5ZW^RFt|Yjc-HSH{g)VLmaJKn^e);xIX8RAzhxqSVAD7!OJFcLnz?lO5+Uc<` zDPr10`;&{w)0%P9uh8!Gtl8yZTk>9`8vuDt{~h>DW4}GOlr2I@f=Bt11MM74Y@is(9 z7bQpc`v`;>7JZd%I&2f z%5h9@BwS|<9PZ^s`4xb#-oMA%`fO0tm4K1hk6BjFIEu-y2qP!TzYG{@$vNCsm_AoZ z_V=gVi%FM!OBO5miXWe<+8C*3Rm$!xWSF3!;HO}qfXahed!%mxs^5KE`}3~!@Y3k_)@O?;xgU{lH}3O1xAg#fil8n>B6^}EZ=w<*}DR3A^Sp!3BTjxnz(GUdB0zFkCH3Y=KWg|}@6pM`n^l#6y* zUdi61K%Kdhn^9%W=L!0jHLu(-<%M8sbQNY|J2(Ivc>>yP#v>-n4DeVC-6nW85UX8g zS%AfqTqWlOyPkl|OyH;Nun>BBwx8I-gqPSUieQ?S2oe$nRCUvwCO^?ekU_wRt-m); zTPi2I68%;E!cl9y_BEFf1Uk9eLC;}glke3P?6mTuc5|q9*M(bMqv5jK;i29QDU*Yx zU+gC@utGB*bz$6XexWuNwiZCZ(12%7+Hy_#h5Q+mfwKqT2~gPn3#vu$J$m+1BhXOb zympxxaEB9r!#%kgeaxgX?O8MsrKvXSLf?C5@JxntCBP)k|hALEf{B#N3dfK9y_h25+Brl){pLz5O^z*NtD zZ@Fd{#AK<00R<2QXrHo@fbT2(e_q_MAy@|t+Gi%rs~uxh5dGMR4`lcdKxfu>gHEDQ z2Ke-5xc(#?MKcNv3Bb&|+Yh63P@|-kggXGC>8DS)FJs0}fF=F^_ptWbSawX&CRmp|Nn|31wBYn78csh{Fv>UY zTMf#7QIk|kXjh8a!u9|K2AgR#Wh|vX1 z*T%S(gP!}OPyi;_eFWKzDrsG0ftbNExzMq00XPd$`&KHH_J}GClr>(;ELM^jc+i@$ zG}*AS_$f6Jpc~b5@ZF>tyRA5NL*Qf`4GAn*nfNr`Rca+K!5j>g@o-TGX`qkyEt_3S zElHCNODmAvVwz$~wyVMXauJyQ*P|s73fh8Ax0LJf(9avuo+LkV%ZZ1R{+=R&44k=0QevYly^(T57Br5H_?SIxNf;P zawxL5(uxPzXb_x=laOt?lVIld{hq3-eW;w+xYeJ`5L?L~y{HqS(FWewxEb4Kz) zxt}8d{EPfGvZN0JS+HWbicLw2GVq1WAA-#J(Xpp1japhQCe#Ph;}F!m@<_ zp`gTy<7Z>Fo1@^0au)Ay&(X-u0lheK`c|8xfm8LB@ZU#*!Ovk`%}%dIMX{L9tnjpX zk0VfC{PmQ%=-VjBArf^*oeKW`9Q)3IB4DlfABqC-K58oPG?S=wiq(V+yH1k_Eu6sH z+Jt?;`$D#ab}@k0$v{_;(i@)Mgeu6~adB~W&8UG*;t5kd%hd!w?_H<$5`a~i-c(5| zZpI|6KREImI38#va3%Jd^uJ_Hj1qZOO@n94{`*+SbAh442M_q^e?IVe7!1EeOmu9YB20fhoG6Bw8!5?>l(`C=L4Y?G+ zZ?(_CZId-!Z6@QBZw;ybp%}#khSHF8zRGUiZmaeUVD|Q=`Jl`**@W8VtasY1a-g^^ zX4%ew9D*!#1mP!5=_7c{>#k*n$}rsuQC%dUEius*W~Sce$FBJl!SYD1dDC&Vi#0Ml z6Rl<65hnfZCJw75yCJR}9VOTcgoO;z?F+_h<64;o)#UFdD}Prg`D?o39ECasz~W)3 zoass>2haSJl^&@?wR#?RSz!MAonjzcbhDE+Kx+-kjvyQOKSls>XVjstmXoB5e~n|; zj-(C{V##d_7}8&xft)a%LaQcg;J;I6fy1}Ed9wz5n~Xk{KCmMGYaZD`E9x91aC?N! z88IYy=cZpdsoAd?Osx-eD%zF4pR6nAFu`kfCe`bE&~nfrnx9>26{K5Buf1e5qb$9$ zE>UjyxL1Bc$pk4uBhLUqfGuUu#LIIp(v?aN+v?E|Frt!oF^|-kztWx>qNaq|pv8W; zrjNWq4fPj-(*U<@LBM84KV!0_Pt7YOyg z5Xk_RMECEx_8(IB{}k)~zyIT(vH#ocM!l_Mbv{`?WsmEwV~-{W6WAjS-7aMt!3Fc} zXov?sdA{cnqd_#VmGy(jXJ+#cT+(Et<*>7WL}}r#9tgdqgPX7}=@9YwLz>O8qkZ>= z?(m)()MYIqkyhmTnADTcUiNJEuj$&&V(1PINzE#{galWxco`pgo$d1%%ZKh3uj3B3 zj@Zu{T1;$@3Y$wxMZZFeJ4(ohdlK8)e_iw5UmssA^7T<5`Xp(o8m%^ttyr7|h$i92 z>@Y)Hqq_lH+tJ8-#}zYyzUPsu2b6efzw!0F-5s$0jeauTc}keiIPv$&Q_OeGI-XZG z`3`1WHV=MkaA*YbkgJ@c$v4fD zjGg1c?)X_gt|@R89IDIDWSOEB6{Eu5s-Y2Q*W>dfORV7k%0tm68?F(1Lj0Fd$;r=` z30-0n=X)cOTvKMguYc7(d9b5}E+mw+DJK<2H3ZC+$eM_LJ6z_VvH7Ut@IaL!Nf*TD zF*i3^FOFt8K$@&LJg83EePv8hc1R}&vQyA_{_?nLol!i$?EjrM}Nz3vFM={vQx0?E<-YVX!jeg z_*hf+dx*kM>{IG@r2jat5?Tz?g*g_)61FdM^5|7_+|pCXykPvPM3Rwnb(%JfBhv1c3yJ3suY}KYeSvBSWRmE^W6=@F}mc!LQ9;k)547j{` z^0?683JfV%|4a5RXzc^B?*QHpbM#r*_=SD!S!lCevJx>vf49DQAZo7i?OOj5=Roj| zi1ii^4cE-03vc4oo#i9kereaYeVa`z<&P_CN9%lPbr{Xzp+eocu>!%R-(@>d?)ka= zbICQ>gFooOLvJI-8iR5UyB7x_SJn~+m1<+qwl^h7{vMKzK+72F@ZvpO?H3hE&$ z?eX{-P#jpfb6`}JDdDr(XX~5%^4;)Mb?T_A&7r}luVi~OtGXM#fu^af+;xv_X8-Xu z-iZ;4$BMI3H-h_;-k?$b7bsZ@vg%%pZBNiGEg|wpeQ{I*sXuJiGHZU&=X}0AskN1_ zLz#1!f1Gj5UQ}C9oFo&3eKK0}e7H@d;E!v})&!Sq zgT%y0zs?GQ*0ENFQJ~%;wo{e4$gsZB4`7_-*smtB>&m=` z&@bz@9fL^X zm-D!F?zV*I_uiimuiU0sSf4wDx__b&xy~Um3pq;9ed0(-&7zKTLH_Gz|GGRX$U{Qo zTcXESNdF!QP$lFP9KpzDexLsl8U1*NJ%{v!()j_<_qEoCfsL%MkwTsvl2oBuQtT{yb zVq@9MY6XRS_JU{O3xQ70lr`h#64&8Q&fYm4Z8ZAEwwpXfyg{E!9=?*gtto)e8BO(P z_Nb|8oZBnnKiVD%6CKJ+^B-#^Dvhpf$QyHeF0L09ELY8>a6h_Y8ogauXZ?-FAj&~f zOs>U(6`TeYbcbGQk=zG;oi0g8M%R%t4a37u*O`RA{5G7>Nbl8K&P+U#dY+PUCBUw5 z{NZJG6F0;*wM=~_>WNEjs_WQhT+M31Ytd{8N=3f_BL2>?98t>Eu6{mgAWxaPMorJL zmHDfKLPA8Cy!7M}z~wa{S%0xfT~;}Z%02}~BWkT+W<1D>ODuBBQBsUjGH)(kvbhkF z<#HjDTs2yt9DGDS7S@^n-6vjN_K(ajR#jRSWz~f~_k5Pmzg|sZmpdr94o0f2V&xJs z$s`)HaU_bs^K7Ku1ls9{iAEDur)Ge8YdCUMGBY@&4WOf@k|Qt>%&Zd}_Z)qyOLyLY zA%~Z2W9ZJ?(>C0KA%`gq8(U=1sswn)831Rc+~GKXI^vQmo~{g9W?KrLXM#>Y2d`tY z0TyP_cBfU*vgMIkq9Mu~TTXgcs3D@4sUy^L4>Yl`lRnU|b{*A8dt%K_e5zjvZcg&z z_xGQUq+aQCz#J5@meHL%5ec)v>~x!~V_7sZ0LL|X_r74~T(ggxzretUd5^I%=k1ru z0jtY>uYc<{8G8Nr)cjChotm4U!iLEcA_NwM%GAtFjJl+3xeriT5D9QMYucgJ&#*UhNSNYUR2&yBwI znr)l>(@x37SkjRnY+U`8?KLar_^mMz^an(mhJ!hF)4_n zN%)cX(!Tfi*EiZYwR473f^!YRj!O8}hVf^=fTgEBV>+Uh_%xG>a^Ita1tR$$ksr{y z+7uiHstSlbA0FkuKS26Y+`U_U(8G&~uYDo;JHDg(ct@l$(5|29ji-i7+<@zSj-mIC zbjlu=!NV5M&#Byp%HHC%lO#+9GSYIx_Y|qZAB^4E?!H7lo)RS)e=(q`*Zc#Et&E{p zqOifp;B9T1mx7hQL~n-cMid=plG#?Xp-5GEKZN1DKE?!^ouYh7r?8hlkCOvuwyT9DcIKW~q)Uu}f_ zinRpeFqNhWFX)XW+mC`Qf zpmEW+zJ2d-uK!{$AnpDn3WO?9BK5ku#-KqqFcJc4j5NVab ziepERVVN0ykokGRA!6Nf{8{5lm*eh2YgP^-FIhMyJ3l{b&dkOClXlfyYCsF`yB0y^ zZ{M*pDztHGs!mrs&Hi*Wywl@1%T0Z*eX+1o0&jY=+L=5K(<|-iX9D^r?`YPb`CHu| z7(q^k>rC&FDq(}!)-eSN6(C(3ECUC$b_KRA8&~8=58$%d%iIpbEMzN?s5_KePTDR+ zajo_Sq|)B)!Fr!g=dt;Z1Ykn<{XBq4-*gtVeEPN#Tp+}tWAPx1}pCI@3{7x zb(D@Fsf6wr`=l9+5DG%f!MiNHud^&K0ZRj=ThEjiTF6D<%$WY9z=bqFC~<; zFG$yoJ3M&tyx9B6n9<7YPek9XW5b=KO3P1%@;!*bvvlD#BILC!=Z2gMbMD(@RTrm^ z?4cZPh^+eKlcSUEWauXEpHiTNIIX_m!wx$euy7BYi;g>eP63_dnu`F=CxCMozXLx0 zjM|jThGBQBfkp}@;LraaHf8uLRYmVYi7ytyqPZ(^s^(IhQ&}{SYE|oj4gmZH*&#?O zOsgCMd}=0#qW9^{;qn3HxYF_e#n^jBHQ7enq9`I(u+XGM1w@(%Qlupy(xo@4QR%&g z4nYu=8j65|5RhI&?+~Q--n(=N9Rh@u@4kNL?7hd{_ntHE&x9o7C3)WGS!>R@=FFx4 z;A*G73!J$RNq&?+SX`aXbrlTdo0Le8oMyZ%dw4@doXUR;FZ%M_vj(URo4x~-odaMGJUWb@v~0;Scl8?W44+6vBB@X+8;CxW z?t{^^b=>vv&Bo#RdIfS#88E)n!K5?j_nL>teBs^Kp1R7bdcWR$7K~%lrjP_Ao^f9H zph6)J6=KX%4W=J0ioUM~Z&nSgRBO>)S%dVAU)6lz& z><-Oqw;7TmRHBm*T5y56CuiXf4h_`?9-`1yF7r8-_qDE5b5&0G(m2*z@_U{7AA*L> zo#SDLDsOi0jNjV)C4Hro-l%^r(YwdBx!;-dv$T8H)o5#1q4A1nfmgQHitXHA;&3ZY z>r;CfQA58a4SlbV$@#UCk>5Cc=n;DXMGRk-y3cf8i-cVqhwh2r<~nI@w4&dM2$u>4T9PlGYc4fS{fXYY4NoYdp ze6MfCW-Dgpdxj-F9@omesy5eH9cMn3IbY4U_tHAd4|1#YO4OzJZg7pU&eim7?pgoA zFTRWKW=?mblwgW7{_o{3EolSr(OQ|UMbxg)(X(>P3m(kVR|+NyqJV)vBo_Hd)0E+XZ(QdKo)RBR-OjoLIyGT zT%bWtE;Ox0UF=NDpws^dusn8H{Kb~(DtX~2M&49pb z94wDhaT4$$q&7O#-atXU&~?P%_ywg(U|1gO>d@Gc%p{>3yg2`2TIc&lI+BTQy|b_K z&gh$w%T3~SZfjqR-TVRL?j|df{dYAV-*(*bwv~^$q$KC2*!2+SvoxB^W>3WQ#OxRk zI|*p?t(tGaZzq)`nPK%Ml~A`1E_eygaW>;XIe5Wj=Gm#YI^w6dntot;K&$J1v~jAp z^DF4u8P)LIw;0kIs~x53K1-KwewKi)T>kYHvv7&^PXFH7PqUUw=-kiwBrUF`<_maW zkYrsi7`kXL_QfICy)2EL5j%^&$)U0mqp#KfhYSTjuvqUx6TWy zd35*@9g{ID-;QQC{HW3%dOXzlZ?F{0KV&5DSwf07C4s}2WFgw8CIi_*ng=Aq2X8{Q zxhZxO=ugGYf{6oDT>p?g1-?;zYR&yJ_>uZLH8eMzRD`W8hbKdEmhf5N=L*ArQ70dp z^J1+KBAHJB_;H9xNJWCw=z+~wfxIi5(>|deuCZTw2XFT6+I#yCS&o@IWNl)DAP9?O z2GqprdZQ%YD!{#9$KUCrTIT5Eyo*O*)Ch(XKvpC9NQ(<%_k<}3D(Y(!DtQ#JfUBTC z7+K`G24%;5D-h@+-;FaHAA`;tL)>-Wopta_g@-0EgZ#049?y!axn5-QP%z`{t<&-h zVNb{7RfICDa#)X4W>sfcFz@3mn#3a*6O_Xy7L=pyHsr7Pg+Rg?I`>kC`T37;8SO39 z>A6O-TmzvP$O6H3nS^dg>%=)pc3_77Pwb`HrN=viol7VXt<96UN7qzn|D`XWXPKTV06 zFPw(o?tgk^nCH%I>yyl2V!>s~Y12rl{T)fgcs1Yt(@HCpeK7GV7KPh0$ z@&3z62Ck7961cxVS?#N8JjZPnIA5+%^j z`1XoL+Jd`rv^u_VJ}L$j{D;>{4eGr9UGRDr z?1w1$eZm~*(9T5jiPsjVW=?;>X`qxijju^r_IPiJi8vy!fmHxUNv?>$9O$;*nS z0B&B#J=b0@jELJqsx*wrXcWgKclWX3t2f(w-(J3rsKeXa^v`|>oI!jQ=oElZW1UfY zXENW8EDmi0+v!=09_Ny*r1bwGBXE*uTtLggOrG*)Wj?_LzBfe?IMqhyliHL+AVk4q zjjL3sQD!vW{k+cb=PA=81J$UY>^d8|cxL%HRko=g)TNNR#Of-h`A>HiOgb2cuV4D% zwhT!J+#gq3QYid?&Fu1v`MMj`+j(;uZA2O>#&>DNEa!X$IT=yI%ixDOgKUMJO^N4%DNAi z3Q8t2GV9u|melb17s?98G!yV8i=rR3M0uh~(Bgl{PUuyeTFcGUhOH@6bIpWLvS{3S z?ZFLGQZ^Cxl*T(I=_StEx`Q#u`(;&4H*G&yb`9JUPns^Rhl8Rr#I7d@-&546ze1KO zl{mLxYFe-4%^UlifuBt*+sl@d)tzu*L{U_kRH#?V&3ORShHGkp=%46Qc{J}OBIk;} z-{-4scS#YRlynb+#7-T0Ax9=Nkc~3xi<(B-V`@UdY!~Dx6hbr#s1yVAiCr*#{nLbX zTwuzNi4^~-(htv5ZVBAo?~kkUOkPP!^U#_EOPx_YY2q~;uatZu7oy$0Vxm99CxEZ? zt})2&75+Bb!q9)v*V^sZE~UP^O?~P(=v0pk2;07vl4hiN5fgeXUs=GE`6XhI#i0#J zP2#3uY!dYIXv%*0_nSYNM?elSL72H3=3J2DQkO+}@#4b2QJtq`=Uc(9NZ-OQ zhIaU4fV+brH8BB@T9L z+a6`i@2$8rhyENT2~Q-yn|e#@kT4t_tnmQ>v2xOpBlM#GKvEt|nRqwgjs7@}{n~!E z)-tjxdTG0ly&th1)$KywZ4{h6i`7z*o%Ft_drwj@h@?3OoP|E6CQoie$*=Ldc`810 z*zv@z)RcJK7@=iMWGPf!kx#c>kI$174;QPS=`Y?M!8lL7Pgr!;9m~D`bWEy;!uGmh z2sv#UnY%Iik2s|7h2NT|p52my^V+fZ)TZ-;qRC+#-)~Jmd0*T1idcr~N$qv+0$Wqt zBwl02f`d(ZLK3%OSI95xd-t7SIKvqUFYiPL>FA!BCz>*{B*HP-y;sN|%+@}Kk{E|EOH@Jy$? z#-fZuQX@Ml+u~M`EOaMGaLlZ(>7CXZIuUfFe?ET5Y34v2on?Aqb(YvgNaYSgc{w@k zerb2&LsgW;w#7~CE)+Mf3$RgFl`?cs$q}TrB2s)G#jiy^uvxz328Hb5$5+EGU@kWA zGC%2l$ol4NHR7gu5Je7#J&|4GcdSZ@?KX0&_`DDEc~PEgp?vT*I9TpM|4TwHMW2>~ zRDrB?jn8fL*Iyl9!=8vIKajaC>2jIvrn>rVaRnObsUV7wrqt##b@q|aC*LJgGdJ=s z^SphJXbobydvS}O+BA%^Yj6#HP`~zMws3a7{P3*U^+nH-szQSZX`ypx?{}-dcn#@M z=%R!glDc*)=hjSwlg>%mbJn++Nlh=^9TYq|doit40#%-c!RLZHwWv58DSSWDW>J7XQ(fKu zzM2~qn_`=3kWa^Mu%?)LC02uXFIq`hwk2Zjlc1P}Ltaz%l@B)sE(g`H26qL>vY3lM z`=(pu(m94h_HE?z1Fna3@j%MW(9VZ8Ta&Y~5XbaJfYNn3-lkB$f{$)Qp|GuvnOHq;xNWpgtRtU8@nmaVWz^fw zxTo(4zgZ|2caQ{aG%=39(DC z+PalN1Xc(1%RgkacM3xf6IWV#uav6a=TwBnHn@#;aRiw|<{ebn)wlIn)4Z>MJb>>s z474B$Jx&2S5}+t{u?ObvV)-f|>p$Tql(MEPvu~wF1ABJ;PI*{<%uYu*ID+^9tCg(6 z4)an2MulHR9jn&1X$d!yZq#wHKKSrHec3hhZf99dR+5N(Xb)phL`{~I6j&i^;E{Rk zUB(85%5Q-R>n~wxIlbV>-G9hdZ3w?l6FpAsVdd`GOa11@M6)yPwMVnw#Z9O#-jt7r z7|&IU*fQmxQFNaR6~5-CDp}e(m7wVJnuB+aI#y zV-eW}8ex3{RwdN9P!`5bpGokoI91Jw;BL-z1%2s*zb5=KvFCQE)5~@Dd_iCV}QkQU7|NLjf1s_jGihc_E&_4SsKS_;vG4xHxHtbH9cP|*l{+il!n^U&1{2&X*^*2XI;br zsoU+=RHN!hN*?7ik+goXF;qUAs^MrjOVPjTbC#U0kGf!0rLpSLYRV3N2=lrd5Rgzp zN2xEluyKJ${ALICA5czjZyvJ^dl@6*2%9)xxA^~4M)6nN@t1Xk|IZXWy5a@;8qQIm z+z94xL_mOYH8@|Cx)1)Pi0qV}*yjHU2)dbHoFpZT*EAtl;AaSLeo>;h7ci2lPfvjP zwAVu~d^<@ATJX-e3lnRRr(64Ak2oZ!VxJR;wjKV94`hSa>yX zvzZKI@Wb$xya|Fp!1sM1Fg|WU7zwE^%wVQ8-1-YLC;}V%#f%>a&lQk&6+nOgcutOD z&d)gUKu^RY0UzW=AMa~I8sJ9-ZPe8Hf46B)LMe$8i|XfJg-x1JOrHoez3@z3XNYY6 zzRf+?(KGK(MATC)E*Lr5R#b>Z&>E)SU|_7XOiGgd6Hja$kmz4;-@85V=R>>68^c_i zJfTNkgWb(5Z|+dv5m)c_rA0o+yI562`OKW?)p)Y7O`%e@Ul=5>v-)dswjyF07YR{K z9!{nqI0{x(aVO!Lt;3X31w;lLWy0*Sw*Vfr3hv2L+~&q?=9M1tcBJ0T|MjI`2Anhl zyVKS1yV3!?Y_GAGY(~A{z?wPuJEt}s926La(_p3D7Fi=MdYn$e6K&_sIBo9P`1$$N z>%EUyjqvLd!vxG1)jqFpb^Id=p6$|F_t;zRSSkO`J0Vgmp3mFF$$15KA|~l?D3VkN zv!H$L+Wt_)dd>*p)z9vTdaQIeN~8VlT{Q-hzXh+WEU$|a^Do7(6pDi&?t?9Zy+(;~ zXSm2eWOxsNgA9icM$Runx3WQJ$PZDSW?t7&wPM~3V(yFfmd?s06O05 zfJEqr$}!cV`pIA^2@O3z>o18YRI3sLTg~c$0wl)X;KX=J~ND;xcc!;U|7Q+jNXu1`LXQN?b7U@qBD4$dmaqx zMFg|tgteL3y0V0h3kj!mPLz(S@W zEe!PcdH8hEO@e?c*m@fVI!lv`;sFL#nwEDU=vvF&yGk|HM04`<=sSMsPt`XVaX8o; z$ia6+f^IfgILo@VRY<8Y4*CDJ*C8%^v>Z9HV z@R_f<-SY7D&W&Na)M_9In3%6{^B7c!*K?RRYB!#|x zE0H`N8~FV&BPdBUDZf~uMkk2d+?yel3>t8^mragY$)G^$93!XvCoGV*oOymc_htyxn2>Dd%!cd{l{)jj_wGu!F1LGnBmXsRm|Orj^`32o>`! zN#Bk1vdvN`&_hGgPq|}LgQ8Nyk{E3MWPZNk9&{&^`TDKvG#Z&M6j2;usX{jb$qL@R zJd3!c(q#dU?1o6DmX*@C$c4bm<;Vg|p(Rv#$t0RfK-f>)J`Xicd1?~9K_q@3%)x`q z&<>C_$65IL2GPhd&=kPSdXRO*7{JSFbrX;Qwm=~}U-1nf6kfy^(1ET1c?@=$yH11T zn4PoveH{Pp0`fH)>#7#q)C=!H*TV;Wfu(o9D8avN{!Kg!AZHy{K$!xD7K)UlGG2V5fhIu9DqVeZIWOd;NP1HXh&*h>1RdH@8^0>Lw3(viA>OoYJQ_6 z&Mnp@i*x-Q(9$*>lUNViOP`q2t~D~Id5kH%zpAc^&Le<2Cl?z95J%ovy`E|msLvb@ zZt|6Sz)J++)f)^sUy9O)$qDB>^Jrcgk%Q6QqP3s%UM5%-#!hp*vLBs%9#V0bv7Jaq zItn8AL#qZ7y&`s>wgJ%f%kc~#C+!`?>21yjxtuzI%50;v`Wr57Wwdd`^-RA!Qx^a0 zv?{ODe_v@%BtLx5kpSG!Q@$OSrMVY$F+5(B;0#nMVsI`?p#!v$SnDfV{(PL4$;pur z2=v>Y3Gs{PO|AX!M8@?GeG~`dw-1f%JB0*8v=(8q?AAB4k=_!$cUT5zyQ=U?Ul39a zd5D(R#ZLpwt#$^#7jwI@kv7h#*6nJ(hCF*8M-<(9l#61#udcj;N_)~iKWpZ{>vwf; zdb-bYV`et)E~0-)^y=lh)cV`sTPK?)F@FN8A#6%nR{43P5yAn{l9A35~t&R#okgn!56?x_y}vu?7pf2*kr-)Le< z4$#$fenVp|)iTsQ;A<*#@KHGc12)@w0c^bhFjWmhGXtV1ig|rfB8l_U1^i1T7#K_K z>7^$e122TQ4_3fP`IYcBZs-B0(PiI=i*G)EiHz9UUXs+$GvK|qib{dG$Lsvn?@2Qt zz*<}wa;o(YSteu+BR6>d<_j@l@%gpJZt|#QC!#aHdwXQn^2X?dabZp$r@ah zBcW|K#e8-XXkC_eSp|w~n8DKGJ^?{wKE^D=L>&v}qpxjH<57C{V6R&kbEp;xeNqf3;_3oh5As z{$w$cxuu8BlY%0>R(0Ci&D$mOn*BNrB%cqkPuu0}Q4K)?K1UEO+@cKiy+S$S4!j$UE~dkzT=j z(Go{D%Z}iEkkxn=%kAbBQBymfv0!&`J>C6<#RrRx^HQC0mPrOYTU85M;$NR8nOo%b z^^N8bjK&&%>?sHv?N%xE_`X5s_Zs|!r*}5Lk}OaIhxvpzmaIMSlt|pTy?uYC?bT;= z9)}x`UqMSvF3PAt`{|w6WEw)j7Ps;*iPz|1pRyCFA(L~L5k)YqzyrJ_V*SO0Y~-sX zgeP)#3+KG8P>=nu@r?f$N%wzz0{uVJj_6Q?-eV_qB2Ck&B&n4|l{*I!AhA}EPw4?9 z3ZevlUSCgI{4?-p6-dcgSx^DWQneJwmOkh|YiY>Q2>cumL-*6;!r&JnUl6C1#Qg;! z*f-)EkPHd9xqSfQU@`!p5r1ovYygjspU9I(XM6c`)P~d^k?2i!+h@1Y(_J%(&~5-~ zem0FJeDnT0i@?DP-UIopN);~+K)j0~GdV_wau-0QouJf-r}moiBQ2DD zb;g*epKHHEA6?93FU1@|^Sb^avw{4s?!*I0LbZ??C!E17$=d<|y?sK701O^)%8%O$ zCk1T!0T2l(1ITOIyefW@tx|KNDt#qN{UopM#=YwC)yt=Bo7YKAy~Ke_xN7&Ppq!S$ zR5sIy#v<~Ixaya-F9k=BV=z%=a53cCj|kl22y~Gp_-p4V;rrIbjUG~YZ!fbz)$Z@m zM84GRzImM_{d2Vy>s#NzT90#jtu47|#wn6l!M2jMaN5Q>^j?|eW%bR}%RuD0bqDf} z;T@mqnuecZNJo0QuS_l>*EI<`15poI49G)n>agZjNp|K&hCZF)Xu>a3Hv^jekV%bB)X%^+tnT5&C9;P=+VJgR&y{^MzizSFUzC=d!L&<$+1 zY4fvNOY!25E}|W_PPtYKkM-IS=h4VNo1B9{)XF{%U>bHwYIz9Ky+!~@PF@EA3ohF~ zW^jchX|RtaIZpEl5#V=z(`j{H@2o0$l5&kzqBik`OQrc&|vcQhwZa zl%zIf1U^U||JBIq*o>3}zU_ks;SG87vCX0U4Oi zIy!C&#wc~06CsRzNYL~A7-U&R4pd4#&d837kPi82LT|YnAz2eu+U~(CHCgIBHA&85 zFeH^HY)bFDlP?#iA6gals{BQG&S#bLiEHMJ@fl`uzHdSYj3aqpM4!FB##mE0!^50X zk)F%zzEof%^`Ytb3gOG(^7`{$%VG|i!A%L97+bHA3fd((1*i;5R*lPSxzjGO|4W{7 zpC0_aOk(G_EW6g|paN8ZMVCFg>r-Kjs=8pE_`TvxreuWIDEmF5UP-m5+pBlHhE*Xy z1`U*Gh6isKwLG_ok)in`Zz5B0YIeM(yO$z0&Iy-7B-wv@&Lg9z6 zrhY?dF4h_i?nRlzzFfO}df4`=!FtLmdRQ}6Y)}{Imal(14_B%ZN0yVIj`nW7-*=fa zQ_LoGh2M^U=0CA2dy++h)Eth!DUwia@Z7nl-Md{Kel5i7+nnm&!Vb9Faf)vtrtQke zjo^#eGz-c;FY9*er&PsP4sQ5D%6Rpdq6mj6u5mO9FQY^rePu0PD&+*fC6~~DMPvJT zA^Vo%jhig&c8}nEcEAj2%chdB6N2sNXxoA3RhzaF87Tn1x(yU`$a6}Z*_oI4_e#rl z-D{d^+4EDC8ZgssrBd=Sg`542UEpbe2z9tJ1foAZS6AOq3uN7d1GRT-Wt#d$U22LZ z;z*uk3!w$y@-yFADBFM2vDfLC(tAYhdP*mVbaXKMxl8U4QEdb(p6?vwbJu>{%Cj!g zZXCdWoS`r>(Gb2z{nW|0y=EHfkWiPdVjgkW>lLfB1mef)=eEv9xlW6jS(q46^-vK0bNWUtK;`(Nv?n= zNTVVegX)3q&mwSb@Xcoc0hksBPqg@gPucZdj3Gr?)rHUOl2#p@uqZ$&4DE;P*E`{Q z0n!n>kDXlOKilmjEJIG{0r{#XD;jWtUtqG6CMKYlGgfYqgH-*3%!84X#Z7QT86PYyiWbrK8LvK0BIwKN<;faJLaA z-1nL6`ROxPCq{gH^mO&(X5)^!=xrxwKE>8M*O)1MkROE}5Yr}cW~Z;Gr-wIRrb+SOeb0j znnnZ;yKUPi9l9-%926FBvSJmpEHnXt$E~8FRH$U&vq|OL3+_>^J7iE2azevM%zaE!w?Kxf?d10jfH5ADtn)hs<`P@S*zxGhv> zJ0n$8<;D^-B>cxVbMpIieZ7-@5qL;>+Uj9zWVaUk$a7)m`cGT}^SgfOgUx#aY2L|F zv0iRB4##p%NIiMS>D}8jvuCERr$@HeLipRms+&E;}M!4k}Tf8tAqTa#PW{ zS)FEJC4%dsuWf_&NGJGkt7pd%H&c1k)z4hHL7ANFxGqBAT>@43g!O!q%`?>C-?>@m ztKb^Rvpbtjc_sb^vZOASfzT4Do}+bjdS9vmkQK2MNB&L~y>t0}{}XVn-^ATd&J*r4gmHPo>2mz@Ny=1{RV)ozcy|8g14zczjkfJws9yVLXGK;rY+*w33T z06al`X%Kiz3_eB*1=N(Cj)VW#eicIErG~wQtDkXxS^~W0cGZDZcT@%-iIT(c!TA@v zAVPjo7(7yibOrNH-36(I_=}Z~71Gt2SkV;aR-TKmB(fV%`TL)*2jXC9 zWbC7yMee}q=Xuoe51D0R9@A=~y2GLF;=EWO%D8y3eWcx3PwK1zJhGQW_Vw|)I8=B=HI)D zUex1nbl4*8?3!6Vy!<96jE?+5`4W$ecI!(PGH7=&uGKyX9XY#^1AeKU?@~pYX z=@#qxoUpK_o)ggMUlqUhIHllLyqH?+^r#9IUv7pCkDx~73+=+F@~szV3iGeuz}uXL7nS?ealxwF%&DXcOLCXF+CT0-wBmjl zq^fSeLkal#K%nbVF@t+=&z{U|vXo2QDwoEN>!ipHxz~~tZdz;Tb(Hfi+v-IEIA<2~-O5ZlX9YV4)~|Q1 z$%@IESCE4Uq>2ULj3R>rMt{`DkcX#(%4BIdfaLQ3!(ib5*kk^ucJ!a2|1K3}%r)ht zYitI(0j-u+fTnnwm(zt+5V}G{{=rDId{!V{`S|(L7r=k{dhF8Em^*tfe34!60P2R? zn;Yw7d*}Ht5(WhMsBmtB^SfxTu>sXb=?l$sZ5?*Oe?tdSbusX|hki5w6BGXyfNe}W z5ndxcJ@3a#Pe2&zGZbL`;Q4pdm6rZc>Al-ZLdz*S9SuSJOYB^eP<#r|?Cctdhi0UK zXQR<|;h#X8XLco8@bMc#L$d_o0Ed0{B8HsGLdDJ@Zuo%0V|2WiH#R&`f%M@bm$rBv z=p$^=OPGLb=r?fWj2avO`bIY@ReFm2qTe)J zdQ0Mkqsjn|;kH<->%aL+cEgF4w$x7?%-26dFY1UUIwjX1!(63Y>bBKqof&3F+M)|- zYao+Imo1HE%pk5Vrir;2GEOpOvDpGp&}*c(Vz*2@v^M}hu@41ivE)>;tB&Lpw|Wia zo`@tx-LmpD(`UJs6g^bL_$Op1s- zyI4OFQmXBjAu{etNr5DH{?nBdwsond4W|a5y@atMHPaW-E98CAE?b!4Zjyt!=+P`L zqE(SHL)2z@qV}yLfNV~4vR4(`P9X>lxx~*Y*Syz}xKgJUmQjP_%bv%T(0b*33#QgV>}bCjcfO z`S5|S_6qA1P9m^#blh<;>OtPsKjAI=`U%^B9)ORE(tYR^8#`UwnqE-tkB^7itr9>` z+(>7o(Wv3RYI)De=bdNB=VhIF-$n;D@`)8I#LuC zGmm-=sR!34LXZQqb)rrKkaeT-CJvZ~9`D}$LeD3&0F7K>v$=Nk;r*UkPtp&()eCOH z_Tp+Y4dEw(m3wkRQ{8tNk{8*fntY<5>+Q;xxurs!p?)Z1}H-_H{fn^CMN2Z~gkJpuaDS+;!}#_G?I z%A%EX{0|uiJVDe;bX3){&F-epiQ|sZmL%)#+EdBXA@cruXB7Sn{H4Vf)P-gB&B}ER z*wk6|f+8^-3hRLP=y!As=&1i(_gG9Im$A7IF{L1lma7e%IUeTXVvEkP5 zF9r+C&vzu<@m7$KtXOfsf%U?lU57%MHH;OJ;8l=IZ8dz2xZxCRjXp>hQB)i$nqO8* zU9vf)%0M`X$tKn!tmpPT?Lc&}CKr=867C!{Lt&$nr)C8}mGt>KNyivIz`KI-jU&ZL zz+>P!1o+}1E5KA?`!|pmQV3itHSy9|45{*GxH|4p7!Yft1m6S$P|~gYgj`_P`1!W; zEs^r#4M4*x0V%@&04khze>~C68$&|CvGSk`@*{b{*;-IXXR;(Lvq);mYh>fO$_`?R=*$9 z4bULZ&2tFP6!b(77gs#h{B$t4=v7bDh7e}hs=3@=z4sn-Vs9oaxfy@1%V+S!#=9~F zv&HxHSrz26U*~i#c*jdwlD%8+DA7NbI2$<_>e}*YSWf!SK_DdY)o!_M$@DH;*=$jp zM~^LqQung0lGMW{w?$$cG=Yv85ovNHL;3`ZS~@LHfUnk9zz5AiSQj6qKIjo@A9CFN zSK!*@hwRl(gM3%_9Y1Y@T*h;{!p1G9JM67?LJ$1oASUVwUxaWgm2_pI4IzYqz%@azPlFC(nzt!^d&?8;S_v1yz7DqxcI$kUM zMKVg4BX*0##2soqQ_$uW@wzHc-$vh8d*~5X9c|3G!g6^ZRXZ_p;gIOI&Qs}O{%XYd zxyIX(9HEhyrAw4|T*jyT%mM7U-@KY?t@D(+k3Y7eeuXJI7Ri+`LzKJvs;aa z_{AJk(l2K8wE0ITHq8%yqw;GR`H_XBmHCzVuebC?lAp{RKHt6dRw3)#a%sp18#Tts zQy80lz@T!R(YzzRLQuOVpDS9tWYF6pUAR><#1CO)bON}uVv(<41GC!!Y131xA(Qp; zF}cr~pqCW6N-K1ZbW{M7a;w;1#l>aCo=Ly5y*cvoQf3S?W92QMk7IY&*IcB=3F}6o zFH3>u;o!}#x52q#Al`sQ)BL+Iy7##_{fGXkDKFNlChkkgX+{owIGm1vnOib81So$_ zstd}d(^m+yRqopOteBzVpFN=9~?KiU^ zbz*OR={{&Rm{5uDNaT8^u=05d)7Tr6VEerqsj9nrfpRu0$mVF;i$&UxkM1gm#>(d1 zL(yxKv3;xj&FIkd$IWzR*k;~5Rfy)Mz#)Z{FzW%hlV5 zF(2yh0X2J=CQ#oo_{EUE`Nspyg300l`RaZ%Y4g{4`?0b=wnjXIg=GL~4^M4hm6@BF1Ea2jP&qu4uVZxiouEoW}ZqIPB2! zsL=YLw1uzq3@bPhsUkETmH~7Dp-5n|Op>yOeXbHnvk9GXF;engN|2h`dooR9} z8Ga?G7rg$M;e3r=Ps^!G)Pkq;f`pBkyZsa*zWfQqHi0PSIR>WW1dcEpp#(gb6^m}? z|8d8{CqIez+2Fo^f#!6jk;o09gh?~M`=c7n}bG_%ExXC+s6sg!kVLF z>vmhIGFwVEv${q5PdqNqE>^b8>s0cxNBGV0gaGc*G^kwETU686Q+{{$hWM6F?4e?3 z*ON?3Cv9mr^*8#cGzym2TCXCRzGytq9N8)Ux}x$~L#HszG1Iwu&bQ-(d|Fe30AjYa zFiVe7MW38#{1Pi>q)~$wy$GV7ytqS+zD!MRikkeM_$&ABsP@^X**LteA$w{>H!)d4S4;3c8vdD+1H$^i^c`+$y^MgRp*!9b zQTI}xYv4~=FLkI`DjXpi&&I*(An(lr5tNSoPSoVgk6a7Uh?TNwfAp;_f! zq0GCCi^tTblavd>*tpgrclaMwpn&*{o0$XdNyl9D`QLWo%z%Yk%fM|I)i#MsCg!$PvVXv<~bdi?#kS0LWFj**k;A zX^RY=jKIeyw|5v!q*v#qmlwyKuq#`8VD^t8D7=*77z%mu<&8lfU?;uo>czV*_=V?7 z@6g1Gt5;#XkZ#RfB!$1^H<-KdNgR*?DqfbL7v*J4n;>fbPAA&ouCF)kA6Is59VcN3 z|KOK5-SBkvmD_+QA%5A00&-1{Q;R~OOwu(@A95bqM+HHfMv^5{}eE>kr2ZpeLQ`579H&03sf)P ztbmRBL~f@nzGQK{=KK&ojy@Hi83u}WenL6qgtO+|ft2c(j~H3#x{}kyHGQi9$_tzG z7uy7)i0&8AHhS5A)sqKcY|Co_#?}aV&^;mKh9pX+r$FG#RKYF^b~2M z!A(-#;8_FZ^w>TC0bM0lP8#V~`Rsecs?OSEQ)ZYp94xD{*V@%SD`KAi*zr4WhY9#>wN#6~2t*YL5re?C-4^xf_9SMFMu4G0wG!|9~x&QQX4dy|u$nr*P z?R1q&Ri=}`$8DLbImTLyW`l}g>1Z3-iEW5zlLpYs;?co|fQOy=dyR@^H` z9qwXdVQo7pH9fS=#tYlUSvhVW*g{j~8Fjw~*7{l{dM}FX*2-`_Nnj;?)gq z_a%=>Jn64)09AuX(gxXIsb2 z3g@7n`;FX->W?j8tLNEXFNmB$a|O4k^2yfS=N>d6@9Kq(3;7n+w*tq)PC{4#$IA5w z@;Ylqm$w0z0spHWRe<6A!VZ5Z3K455v(lN`S_-OWv<`t-Jx_=5bME4CCn z6tx$Joe+S*fF7P9;)_(pyB}srYa0WUST`Dk`G>3xG&XqnExRkp3Ss z?kV66op`(eQvDR%nK}dSnXmE(PWGy8@RrQM_V>mK5nIepl>PW9Xzr<-OcDLwO!M_lX38>+ z>sqos!Z=q`+s4PHNDIp(D4p*A%v!@^%WI#C;6H1$m#2rgm#j$J%HGnyTGMB-XT_c) z;Bed9iq=!*-2hjlo!S~MiA;aw6P560A-n~Ulm58yh#JW{S6W~S`{me;Y0x!Mf8!Y0 z`?k!&a}tpMw(RJ^d!;n+TS4#f_4jWFR;dT!czatb)G5hr^TzJBtg zwDCkrKEd!gMmojTgh~L+L#qk_VzUj8o0S#>?TdgN}f#4C6k;Ho%hZT z-4{W8?-=5o`L^Eqw^3d}sAV_H+-Utsi%E>37Nxr|T?qoG0h~59M z)&RhSwdwL2T!S72%|YuUdh@p#aM*4Wqm$$V>LKFo&XbL;{RL?pYt=ROp-BR$y7=cd zRK-S=u4Xk}lqWO%h;k*_AF!m3U@g4%fGv0JPEg%5e`DI3^5hb3xt{WXx4uK>u?0Eg zMNeaN^Y~dSrh&5hwYy&X?{%<{=lcBz6j$*JgzV5Q_pFV(@6>{7SRCDIPK)J6Z-~^ju;JB;*rA{#V z_d0HiE=`&%niQeI$B99=KYnq+W6w3ia&yGoQ7+J@W# zUoVax>K9?@OUJE=;_$~Kw6Mt!Yj{|DC@Peo;@=D1;DEyKmwTYY399M*xRbwQCM{%r zm!OyqW(UR2++8+u7xgSFbJeU}uWN)~6-dd<-(+{)fF_x1Yi46GVW;sBg9N(NRq`qI z(hvU`s{VhD>A8qvE4VYGx(8&B(JM@k+oC#bf{cb9f6bO3AnNsLc-r)wm zSyIf_5t`Ov6k0iaz*K~=vG%3_QK^XNsybEV59&EN$N*dvL!b4x>6LW`sy)Wtbdc2s zHSVWj5&HuEI>Vat12VmC_KxCHp%a=>;EZQ3B?Vl5AElQ!^g1JFQypnz99rKNee=BN z9CO#)Fnje8v_6j8keF?gKv)FWVHi6FjJVgChI=f$IuWBzUp_qO=vbt83yZu--jVR* zKmr>aCHd<$oJQJ_=0)6KoTG^F!m^6RM|Q9qf4L;wWu2-SFg!t zlavK^ph-r(8bYmB_@tz%i_<#$6e5Q156V zIC^<4r_;yo4bjMqY%MsXq-C};H5Zmf26nfT-!6N2qvKTgPQ|U(vH@8|>#J*Jx@=54 zr;Hto>0WS4&bx-Qy$sx(g~5br73y; z^dFH`)G9SQm%u6j>||Bl54H+GYLkSYdZoOC9`a5Z*dfyfr7dj3#u>Bm7fu6ohX6PY ziYx_Vfb!v#Km|0xomzoPe-u}QCJ#Rc0p$as>KJy8ocC^loisa{SwYVo{e)0e1nrKx zeSpmk)3XBC{UN#vsEha$d9rv80t;Wkd84YgvI-MAZnT!$W<=e>+tRkhN18UlQ#osIF~t0u7#Y(I+`p>vLsPSRjE*iVo3sBm=_CqFI`#Y;8V18(;jR0tOrZ|C28{Ayy-a|F@|WrI ziC8jtdu}lc;|T;^fR(8v4&?aL4d>YZO3DoX2Pt#MyTh}y`Xz+uP7}E`IIQ74X#eF6 zbnY!%4R>RFCcw~Zt*>^Ie7>ueb)g0R;fsP=c=8WB#=WT5zT7NLD7^%;$ZGQPDUzQz z9_u`;tXg!*WwcsHWztpM=Q);A%s3VNLIKTA;SbtLAAR4Y4lm<&@i9ng1Sc?2tVNzKv98rp{* z9u64Gi0{}`O6OF6n!ku@iT$AUVkp(Gv3O`Ak>`uOCENbhZWx=JM;k4=-BgXn(ni2& z=ButqEH)%@a>Hyim%<(C)3hI&%(E6tlC2H~?I+qsP^R8CEb6}_)m^w`_Ot4@(&dwt zn||RXZq)Sfb!2$e#n7gp#veSr4XR&{W{lzvsFBi` zme8;KXu6pdv+z4>FN|*n*7IUAi%eDLST;t?YHEPVYY463*u4WT;J&Gtu!K?j&X%!! zS^|J}GyLH(Ug->+Wf5t+f3{_uPjfX0#9s%fnf-@sydsmVREq%pLxkE3IwrupYxc;d zvJOp!V&I~H4h%{XHA~Q4s+$04G`fi5%OyI%A_{GIdjgDY&7c8ayd-^$V>u*Z+LJLl zwBjO>BnGK_WEF3x=!|6Y0oxOlWwU%linmz!LxhZi?yP5!;lE~YERE@b4S|~S&UtMN zP_n>*)wH7p;5&rhUp${8t9&6i_bfsI&_IB8SXS9o{($Y@1Nb%iS%hdA{A}I!j6$H? z8aCF4IfT5z2?}02RPVxP_~+)FrW5)R8{q_Qy+G(;%_7sNxD7$A4T3|-0w2UQLOlFG z4K=}zk{&rupGsn(#25Ghyk3*-3f`QU7R?6?p{@a1NdCARQ{sCWQh}$l>QzOT2WF|e z?!tJMMGDwWd?=0)f{fS^F@B?S-AQ)Z<%Us6qfA51YyJx)R{ye$lT}Z^1&qYO2B-Du zbktcHWS}fS;*?MU$k{e^tFIi{tVfR#%z=J0SE;D!*phTa%;H1CAsPniF^^FnUq!{w z?6PXq5Jgcjo7ryGIt3|5HMMvlEq$$NS)%?JXWwKB>-mC>iv0k!;x!Hiup&Js>gp@@zbR63!5F zTSkjG4MLqM$X56G;n$;~0==D}Z`XpO0!SVNO5W9i$IQcXB=2)SBR%ixs+2JfXr1JX z!5{;MF7i$X8%3eRgqG4iPj#m)!<(7k@^j#o-bJVea;-JdP1J5+4-JJxRrQhYm$!mb z>s(xRHra!!ClDo6%1xWNeK^0fafgj)kKgN~M_ilrDb1m#Qk2f6aq`F+nJhQoQ1eau zElk*0=i*3CoNXoFxLhcy3N;V+%Xp$nufmIglf$*y!N64YPKjIfPZ@(hW`<=JR>p@F z?W0A>4qh&ENzXRe5fI?US|;UuZNuWnR9DypyQmHr7E$W6Z=3A{7gk<0WXq^SwW0{fZ@-5fmy zl}NDv9_E91pC3&1&z>W-YVt~QN|z-My=OGxb0(pD!iwD6qDgGr_iqcIPm>6!MdqfJ z{2<90vx;GL5XEKHI^9RCj{CDU2F$9y;G%7p@i}LawxpDFztVm5%)0X zFy2z-M&-NQP+`V~Dx-k_o$cG+08K4=No?H557r4kcj`i?Il zWof+B3zAsO>4aS>`q42)ok+gZ7E>p8BG%MFtub?e9pp<|9yf=YLj~scI7E~&2z(@) z`GC*R0pmE@2um4rKz%ssIpx&^I@LG=X%VVr`ebH-uHb~KjyM9Fb~evgggIl*?@$s9`2wN818DqzXBZp zEL>}vv1fNtH#9#u=u(eB;O0_E|25nWiTmVJ*Pi(+p zuuSc{00=7P$TMLH+w{)@p&J;u`$Kf?4^ghsN(``kY)qx!Z3FzF2w>fOy*M6aDdMU+ z{}r|JjhS+|1&Q_V=YOY+pKS*&jWTcp`1O&8l(-~OGt36~cyrfvG-?F}$)F#_O;A(- zNPQKWp41<(wYlm9&?0pfVaQwvwiypeSHi_Nu3$ESx`iF6TTCAOpVck@;)*kA_yd$f z`-jN67dE#7Q~x7bWeFF3|0#sdPh~-fuRxtVcZ>|7>gn0eB$j*bC#`833iL?*r;d=dskx? zy>50a^IIqn1rc#{nJDFkCl1#Mex1=UVY1XxdubYWHg#hL#3Ohqf9;Kuz>l-$sMXX3 zhzk9WoMfSwANlix?foAxIiY4f$`K##_>^-QWb>@-f0B>uLVkkBZLxk!I*1+$S#fMn z@78)wYhI>0TTfdd1+Vbi(8N_ivkv>OD^45)?JqsZs54>@sb~}0NOpE#dz7D|I>@Vg z|Lt4!M|GDbVwuH~D~rL0DkDq_j?R@mj$ukbtXHC5E%-^!e#$7u&*opyS`z(-$SaK_ zoy_?A3z4-FQtQN3d3f353k85W-@fhiZFsefYQyO~2G(Rs(VD{YX?Ks2+=;Y^d0?$< zp-zvw8-l!NR|6k6rdlwZ#JKD zy>gM=G8>c`*LNJI**x@LGcMD6X}{X{j&m`e);Y!H*Nx&`YrmUx5_GDDhIDp*hFr=P zMR|FJUt}Q=h&r7-xrnqxzAZI%O}2iLHjjN5$?|V6Z@kjC8ATBp8}Q!ojzyHFF2^c$ zl!Amey0U6o3o2F>f{(&=bqcKdX_cW(hvwTp(;(6%tGNUbJ1R`R51_qDyeBkP^$(bCI{YuYK|=)kKUMYR^1=E934C zJRx_m733rrR2Euac5U0>o=FqptZ`M*f!y7A?uyK0YJfkN@n3HiZ|%0s=WbI-_qIbt z^NalwjHV z!JNuvvRs>9wTZ-zJDp-*Q3efXj-RN1L3N-tFMjHT5Ep%AlDV)^!0FaNXN&FqbXsvW zP+$X4Pwn&%Y<2p!a$lgw-Kjc)H!Z9Ie<%Bh$pgMIGXRt$FSPI1oi z*E0*2>n>+acNspAGiObC+%nzx)La94MSVG&;didg!boM7`G<(QI!ic+15F8EEa}tG zJ9I45M@UL0hgBLnmd!o0r4p%W5*~<&%x%g3evo$4wn+c(dUDF(9o>6(Ain-SDV9rn z-W>DY5vPS8l9-*MIx3X`YR-no$LiCimgq7s^)Kzr~?wKYq zB~Z_cWwcEJfW3r!{pBB`2CTimr?ct7j>&1WmuX)LbU1U-z_A5Fq4sWdA#kv!Mt>)& zPOB{^I*(VKyBAHZN#|ND&dqhWylb$ucUe#n)zIJ3qH!njlkKzHc2C$6dF*93roh$y zO3jY`eF$h9#2V!_qUPhw>Gg2px`1YT=*^=Fsn$g~;jvPf3D?!psaPV`Oi1Z0n#>dI znE>b-7=xmr*>9k1E3ssN-C(;9)iltv5rRad&u+qg1bx52&$flyJ33Cb*?aYx(AxVl z)c&$fxtf+Y_|pCr6@AKp-8+CUJ{_87{aMm3HXfnP!e!A1jcd2fYaRv@b(?w zfMSJ!u28!?AY$ORf*n7#U4t1C=ApZ008cL41Dpy1pQdFf0i70SUj#n<@)+>CB(zEa z^_-%84Ehsv*BQu63}qbGF0r$yLEs^F8&LU!4n^EOJXI@UEYNw+j_&DTQJR$!e44C1 zSBZ7Jzdf0sZv5H*2(6ZsG$C6vWMF^H`rs0*K?sm2^H&%y|9I`vzA`slyJvqDWCVOI zF3PZs@gw`S&ea{$lf8B_d#53!gVX+{e6!cGny1wkXSMHM5Jg(}UDos-nok2-gDQM{ zwl`U=?;?LCxV;JTSm9~;?5;K_NqK|j`h|wZbln1+^{HXxFXEmO_xMJ&14G0@k4I;; zeX__^wYZND=n}PpMc_(m>ky+2fA^fWyfPP&dLP{ATTdlR2L@9mu5;U%>_KPgqIkpw zcIZQW;2Gdt#{x`FY_=i*8Zm~3;56(qkTym#u;HBee8kB{OfnDb46Z-hA*?1 zByF5td^X@)i^vra{&4X%-PIK-?Ou^08dbo%&m`njPEktnNRb0lbje86(Yo%~lW4VU zdSWksensnhRh%Ufh4DRyYTja>$~21a?JS3~ALFIrH#sO5pgmLHo)K@)r~&4tTaON3 zrObhuvFSl)vo@=+7ze&yL<7RoZH-p;%E_Ajq}qUj)>`6(6$etMxFAEjo<GbZF z=E^w#Ppzp~Rx?2YNx)moXv3q04ovm$pL%aR)f&8)N$M`^=GtW5yr>mLESq!( z>Rii>_Sq@sQpWH2@?4jh!=!j`?0!tK>)=2}y6RpkRVDdM25(6YF;vvMGu)!xwXF!q zc)ATVFyC7Rv`$|(0FhDz%;^X7)H$RK2jV4aM5Wj|x$TyE+X;PHdD}GsZf;rCmf<|L zWJHw#(`ON-MNO7iP+tmH?NUmczs}hk#!H8!CoUpB9^A-d3ifr*-69ENzA1N2Py{e~jpLgVAY(^_92(dc-}uyRwK z@=G`~jI*UjNHON9zh)9XEBPH5C?j9uorIyc-B8A}hYA09J(Oz)0^ z?m7%RDl$Z5YL!=r+L(ISdeaN_9q z%$LwnZ4qIbree*U~sY@6Cd%Y7q(rn=|F%g?_Aip^;j zX8GN#1Po7Qjw#mOQja4FYWsAye@HgCK=ZE#nc2KNVdq(Ps~i?xYF?Co(z7J|zQBiC z;cRUV%H{b^=DRex-(QiHuVUm^Ql(z0hCO5nGi+5&d+V#A8fjhRGe~{=0TF2GIiQ|S z3FGE*iXPOVpsczHO)o5nDloXKPtvdCP0`R#&;TsI%V2+qQdas+<`E`23yezb)#9DS zLwj__irBc0I&s&1mB>dSDkZG;M2k%=@|i7!(X>W{{VjU~ z7N2E_om*-4GA{sk1PnH!g%VJJ(OD|&Y{{I;PupJA&8=sg2J!fsW6o=}IcRz#T5296 zm5Ci_?w^&OUa)7m`ZCuwx=rCjOFURUXc&c3UHYZ|N5AOaCj-yL*OTcy?KJXfuEbKu zE6Ly?66bk^*>^J=rU|VEYGd`d-qI&bsF5L{ZER#yUn!X(j{Ym zD)Cb7@7H__wzVoMf8pizx|KfU`s0`DPJXo;_Vkyw6{%_F3JOx)15-*jG1{5AnL+E) zlj;2BP7Vj-QjaNA&S~)VmlB_sb>FZ>lxXt^|rB@g0YMpSm1B zIdtxAUW@6X#oFSakf775EW_*q&X}XX3}7_a?dosE8eT8rfj2w`pGgd2&c)D&#+36j zNpkOrpPjP;thh?K>xp-YOFSn%h#&CJbSDo1En@g`F{i3$>utaX`L`SoP;-j0##5eO zIU&dIDv!JhvMHl_ed8gc+gN^xLO=GN3dIk=2P8+-5$kn~m* zN8e~#k9(uuaZvQpZzk@wZNh9wY5enziXgxO0d$U^y6KzQG|T^=d|o3}SlysvVhn~| z_~+wP?3)3tsgU~bBzniR;nf{(Q2yz5WiE7Q>i&UsM!-D#O4mMsEotu5U ztDVj4vK#XeyfAw4kRb;CtD(86BlAGohvO!-3*%e#!M|C%O$UqNVn(q9piNVV^{D^v%!Z`yf*3Wo@nAsh1FvL%TT7&Z3br;SYautx>KA($v z-T?HD?x}!{qE%pI+j!}@v=B-|qMKS1St%yh$L{z7^c`LHo$H&(xKV&%FS=djJLKScIe z%Am)vM%WG}pxLwZc3>jV^BP6M%R7Oq**C5TOn=BjjR*?m+JH?R%kdey`kmb~EQYXL zui&x1HWqhj3qRc*q~n+%qiveP1F8_^WUcRsvUhFR>S-<|e%t=ydC)_f(=Q|344z^X zV?wC_!x0kGS7i(R)*pQ#$&m|jlEVTBfq5g-nS$+WsO@f$=jkqt&X|!|{|?bFa23Ofu;fS%(Hx;{4FG#UJph{r7Rt z=GrhI4I$H5kABXQ9vIYlru{SrxC542=VURx!vHhOpFYMP7jC+0{O$aZZW%{V+7Yd3 zqU|W>g`c5wbKYOEtYSDH1@_ZFyNds9#Q5I_nSV7Q`Jcap36;eeJKh;sG@kB%eUF>W zE~;Rjwt!7ZfXn$adgPL2;J*glTki9_x1)V z%QDfpogGI^Xo6qi7Cb***Bs;=nP-}6_co%ZOH2PPx1-$haJuDEat}IPUzx`vZ1$zC zj7Nnn#^YssPi@0CBE|K~a>Q*vcN6om3fouD*5q6$6^B_3h~A3nDtL-w%S_?;nA*%} zKP2!8{yLNF=00Bsln7yZ`66-+hm3<-MJ=SzsHu968v%!w?yMa zzd7BY8tZibGeddn`$sYFge#u2#30AN=2jN;PfX5?zigmR(ooWb2pZ>C4@I!Px!ig4dqdd9-!1>~Ih3Ab7_;GSGRDiJr!E(J0zH)uA{6m9=suoJ9`e zu#kN)5{9c2)3Krs@3dOjbPMKg8tL9sPyeD5cXs2+08(_APvUxLpuvU?DB&EnPFOm9 z+bW#Z`Y;ws3WV+f{j7~ijmxBgQ`PFmgHOnTnHL17_d%1>U(ap)Jr2DbTOF6C0&{Bo z*&U|J+6_8VTA#KhFz7tsX)P7d@#MZGH$)Sf#O3pt@ZEdnew#xs`S%HB>&Nw;Tt0fo z#2Z<4IiAtTrUQ+Nz7=nVvCOLvo~=Q8%%lQ4ZjrnjV19}-!ruG7s?+)9M-W+krj_qm zV|$Q^o1Sh%)z1CnZyE9FZPkRXDpmOFj zZ`PPzy!x|S_%i*=yN)IGP_h~$9Ot|8WUHROVQuYFdpI9)t@V8LBJ{c4UnK~12R@4f)N4uf3s+Iy|aDC zO2^@r1}H<8KcU!NiK@mp_*4#@3O6M*yR`_@@7I9Y$qJ$e36^G8+V1nJhs=X`{YYJ{ zxw&YQQ$W%CCfVoiQvx?@6t1)=FD=c@` zk3zJg*|$j8@o$M|i3S0l0i2o&1`q=Xvn50Q1kW~G1RXoaxZS<0amo_TZ=~azIm2I5 z&S%ZT^QPV=aCB8wD1ceI2uejX<~tAEfNb8PkS=;>r=ALuf*Ab7V1~sn#OuH*b44=-&HdZrmk&%?p!Deejd00cj{cs7tlvY)xNIR z)Y_iZLliDGDy=!)kL$T#mcfEK)0@RqLU}hEv(kX1qyO=*=(&abK;_44kL*KavdpZJ z37CA>IX)PY9-5vD7%p+!;8%d;Zv?1bz^0&KcZ_p7@u}Wg1ltU-<|=^Y#MT8mAse9%>pEZu7jMJckQ_FjL83_OB*hfy|8 z&KV7}8PLYnkO0ELlCPbE=q(x=b!}?xVFNSmZEEY>+QMgXP_6#e=d6f@GBx_a%a0AU z4e>@HH*QAikGVd(_C5fs=Iw85NxHafqD0gBrLI~Nbu&(D>#E8LS@!4rP6yme%%f&O zBcmLGoF~}9iAP3wQ}C-Jpb**?!=e;Hb7w+S)$V1W_T53g(U5#nMWsqLgSZ-DA7}Kab zN#a*~yBX+7ckrOBydX;Cyeu3*XJ;Tl7VOHGy?_JKU;qNgOYgMYLe7-IH^!|FA*nE$ zPNDT9eN)0=XUz^z=O$cl!;2sm*xr`kUYI z`NpN1gSK{S_11xc=e8QpM~hsUOlVdP(@keN!U)Hfv4y2~;EnZ_#Ha8oMJm$fr)_zZ zpBL%9*%ea1TNjrI>X%oF=1Tm${qd@&ppNGB#B|r_?J;ew{>t+Fkn1S@o$R8InQ_(g501~Zui(x~{oG4xbLnDScg;vKhaZ+{N0T)MoKAxYCeBv%U&7X>W zKzs|2Qt%X5-8ROxt`vU84TJG=J%lqT({WRIKBL;d%db{8{X>3r^~u>>kOBWW*6uzw z@EN*Lm}VN1WjdN-C|*w7)hhT{|7@4OV~h84c{xE48W{=gh&%%1dN9}}`$`SI-UWf; z>(>z9DOIq5e0S+%WkL#?cfJU6 z;7}Z`ehMqdb?)qQSg@P2ioBji*PeeQtReL-Vf6ZJLJJ=<_2Bb0PD?8OPrqzhi&XV! z9=WI8rdq#FmEpTNnp7dh9E|2nY8Mfi)G071Nh6obEX;OcwdbDz_zA##ir8uABD@vA z9_ml&)$-PhIX^8U&{RpE->E53SMDl}Wk`k=BYYe-1?*&1zqQA|)=1STPne!kVh!53 zB)r*hcK$^lG;0TPCB0erCH(lIQL}c{%`j(XqW&;crQznG%Vr?l2ljNX=3?&N2kq^< z%#*-^zM;dQQbF8)PzqcwAjb1A|8V#B`$mpX9IuuD?@kB6v%&(?oytcCYV!%uyPW-~yQ?zW%3gDLHJj&pv zpBNvN^u8e&i4YCiIaO#6QDHZ*JiVPmhO?pozm*P@(DL2~bB#V!c3j{Lh^!L;oyKM1 z03nhA@Os`U6yyGO9m9R(-t6sc{l=>f$}rH`4VM`>aD=JHRE88j6h!dT7$q!p)HS}j zQQH1`a&naSS)2{LLm&>{FR9eb&@rsZH$9{q+hv-)OP3v=J*h=^eMv#bNHsXLI5V%} z6ft7CA$K{-yEH5amlM8Ir=+SISt_M1r5~V}$aT%HA!~yeci;-+E31Lh6VwJi&96M3 ziI%NHJ8&ulBLb)D>0TFR#!$S_zVxoO{8C^0+cvQ~HjL9cUtg8Z?FO>)xg>*Q+g=%q zWAu-0*5>Gt>% zQIJ$rUD~{MA<1pKH_Ma%w4oV$`Pn0Y&jmnsc8rKhxC9g7uh|k`e1UJ#M6kpQ11vlG zcpuQ(VW5A-Q}8#vQ^P}w^+R0I3I0OUtfjbw6aCmT#sVpEHpA4t&-Xp$(QO(dQfr;@ zTwM#%KHAFE68l|FYo&pfO!1o&N~H#C2!aN}p>bxj(_%bFcKo+i_m{}YAJ;PA?}eFt zZOZ-8w=$aO_kXw*@wHuJmw&Ls7Vl7Q{&iM#TTS5JqZcxKRC*?Llo6R zXQAJ{ph+F-RO6GL*HC>zkDwj-2M3EnaOSHo8v76Fc62;p`PbircKvU`51`__wgDgX z9_4%?j4YWsB{SZpUm&Q)zVj!^ze!Tt>^%4cx}4NGQrff;gJT1T@>tc8?-weIzF$!O zPIXo;88!1f9!a)#^dno` zS7_?}VMFJ*vz0;QhGOqtP;c3fNgEDu2Yn2sp8C8AL!0G&^q|s$=fmr?j@`9oU+Ryv ztV)YS5=S+!M;fMiM{<+_67++XHVi$ruQG){&`v_Gsm5|L-Z*^77V=euMr2#5seNfk z$;Zif<&C#;@XbBSsOvP~G7U)|V#9B^Vy~0?%q~jXQUq}8_@C ze68Y9p?A#Pm4uz-wD>%9&D4^&7RgUL<}{s%7rpOa7aQ&5$GAi5IPV4?_x!L{{PfY$ z^XI@;m#^h$@%`mO88BbpcTKANuB2NyO-$@7ZnIa(AYk}%RUAfhiC7DlNAr2N$;eyO zWfV+iIL`TgGo@*@PPi-kb=gRZzFAQCqSY?5sH!}i@ya~;o$_fawH(DF)>!VA%d!r~ z6!fK^0fIXEw`?DTZ8G!V+0G@n-iU3Z!4ZAfY#g5ag#Fhk4FQxT-vWfPR-7D>8LabV zdI&FCnu`xYwCJ(lTXlg7#rvRPy^Rac&MY61p_GeIcQI#g3AKnjIrIe!ahrutq4t1x zUiKR5jK(V*_awZC`$$LQobo5dXgBf)dsjzBEs6=%rOsb`)obozxq4*01gvM6`ZF|; z+@6Nk^k|s}5So2fuXiNLfseKVQcTLG{MpPQePIPhvH8##^zSmzLNF(4TUsYZ2bW4P z2ld0&qd+gc4XwSM)dx+K;s(!q6}@1RGm?k4+B$G~wzI8{>Gb^gCdbV!PBwlKx=2f2 zD_cn1M`gNeVr@1&mmli}TO0>h&59*dgMTY!-WM;^o}JQ|zR|r!Y1`&5)_6H3`RaFH zV9lrUx6xsQq!ua87=f2z!%9Z$XGn)V)6-q@I7EhRM$uwAeYGe7?7m+<{FH<1xP=4v ziHmau{jQd}j;yGxF!qM6-S6c4#B1gPeW*U9V_W9Wec@4h4J_SQh_pQCZOX6AnDYcL z`j3^{wpY);rB$pyIH!K1Eag^yv-*TNx>Sik&FOsMK(WEY^44U0(m^LXEdPB+LtVF3 zw3XWz5r77ERp%2{040nXfz2{joy%1`sQ@@OD!}ya7-;EUPeK!$VqPc>7|8=&-(m#r z?=&ZLV>^p2^TCHKHvg9I^0&1Yl2xOcyyBnT6PbQ^c8w+J`PFjiub0)zo9}D|>)%Z9 zk^Zc;JQ3e&S`a;MF`|cVIVfT65Qd6>-PJ6b&4^g4Lvj5y?@Z% zjbdcdtID#I|C;_NtatP1*m9>}S<=Q!Lq%Rh)a}i9?-jva?Z;{)51#y7>~;T{QUSGa zsuS-^7GaPjXm1$}8&_Elr@yNKhJ>lvZ|8FYX2Jk>mJKRXdK>!PMCQ>EB@~w?O53z} zmUYhdhv<|&s2%9-`!fMtST+oNs{&>ZuyRa@U^99az+ha|D9(})yhEWxpt^cQ2#GE% zXj@xv?@MFLoY3)z?0uwQecXWc*X+#FxI$}6%!Ei-+CTApH(bzsTgP6Hzy*Mxqop7l z(Ps~>Oup|WPEAP&6ewq4{;MzUPXf50tsa)`|YFQKp`UuIMR46ij=sdlmTXME5}>+!9)3r^(88bqcJ zI>z^h=+5{w9EwYpu!>fb!n5vPx^-b4@DjAYzCUA**`aI&t|$dc8LV_Q2q0x=x4QWA z*1UhdSSiagE^UvKc4+woSNha9X36ZG#&uJ|@7+d zl0d(&YhM(D^}@9ns)`eAtaN{!L_Vl?qomctWmQcs3FfQ};-f1m3U5;QO=c0OS5HQA zVVsj7axWddl~IM)l36u1_3G-nwd=-zh`h0Rj=EYg%~V!-s^9uv*{S4ljZbN+Y9}e8 zB`;;`xPner_(HF6u#oA-vWVC+6-C|bBWAenJO~QhT%q$`K+!Ar3^VjuB8qo(CPGhV zuph}~K{BPtwP`(jC_Ck**+i|^xjF^NX#+KC+}kN6@Fo{-;g&(Uk~r7hY#$x@j1i)9 z_>Rf1%b9)Id`bR+ehIA;SZOpMgUgUMc}u9jqOv~u@y|QKaAQRPOT2RPj2c1jx-R3| zWIrQMWqZ4uB&;bd(Huf9SbSyXtA)l@KP<=iw1SojMDKQ-+U+AHK^0Qo7g{fR`ol6N zBOY@tg|C@v_Rf02G4H@1cC2`2>8m%!!*`HyHpAGCJm{%3$7;;-d^JqH4k%R>pII!JQ5jJ zvfKfFI%`ywhs^b$^8uPddX#R~#x7IG=9KsFryHu2ML}1P%}|*}^hFmyZmT^XU%r$%k0hUV=E98(;n>3PE5}!U`Q_est6dY`>cQm&-d*6 z1Cvl~UWO}s&}HfMs1>|~4H(dSKRwiM0zwMJ7x4A6VaEkxS2AP%t!O;^+brpuoYA5v zh{*;XLp%Iujs5|xxT5kf^4EPWDjc-eiMl_#3&6dFLOQVT zE0AM!Y|uD#fa#Fn2f2`d^ZV{zexD`y0;gbE1keO@{zJsXHu8t4$LKE?P-+Tf=E698 znZS<)I+8bbA34Gn-`Q`0yCjrwp$CEK$7_ZD>}~!eEv{|ga#Xavw+)v=VXmsNI`_+Z z;OxG{I8?~NRg`EVGHY`=;JnUGj+cRb$Yuk5L%y<-d~LHN^#}N1J4ioMf>X*2!gR&I z*;F)L-_pi8Gw!{#iZJQ^?u(U;%Q62;%+MdAr}*O~C@X8#PX}IDEF9(SV!2w{|BYPd z{t|@D_>6X?Om&XEZ$I*-8*|CspX}5gb;dmBk9GPFY!@rUNt3kRF4VXb~>-?Vl` z)rD&P_+rUuX~XT?8B3I|a1@c|;luT~1$C_& z+Xo4Tv+PkpP@&9PzbjFex15444M{j(63aqPv<3@A05JZ1a_O(&ZL!YvN<$$k(d=PQ z3GJtHG;<*j1R8?xgQtv^XU#kxXbo1}d&)Tz2OdRZ0=kbwYf;W4(CD!#2l5J7)4}8L zpw|vfW#83nB-5r-_bcYo9bJFMnwOwmd-~arcy6eC&A-Pl()}8W8ccn)YY$ieeSytC zf9Z)+RldhQG?DcV^!SzdWzNsT2DAB7w#f)5>mvkK@Qx|xQ-LINl~qmoF7jk>lFiUL zX5g5#(%+v`D^faKuEB`A;aI=Lkx8f;H5Qr0&;S0TouSEq@)^d5rAGf=TUYt-r+u8r zSH@B;L$jzz*zZ=FTxb3CpPe4&+L&KV1q9_y(xHI1rh}JjI}d7A$yVc~?m#EWd1PLK zS@vOq4|#NlmL5t;u{l(VktJ95ez&w8IzRKlMy5Uc&dFMzq)dj)vMAQ^MEe0NcmGm? z>g7;%XB?qY`kgo~jHT-!YqK@=;Cu1C!|Ps$P^XU8=~KXrX4Xq5pf6M+U~*}<4B9I0 zFs%DIOyOezp&K2axuL?t@U_NJr{WKh0v9->L>?1Kx@%e!ig-kg+nHF>FrKjGu*DZJ z#AUsDoJxJRyY=L{P87BNRU(d#Jt8_H@IoyDd)cRnG}9t5)qbV>2!2GMr~{aoy9{Cd z>Rs!%l6b_K4c;SFfIc21Cu_pLUv({)gn}oqMxlf<^BS0v>f~$I6(ylx!!~ zH+&r0esBz-g7BXQjieyAz_Xx3%OyW(#WUEdE^xg5ruhh4ft}Eyfos8NPmtLJq6D~c z6I?q<0E0EeI;4F4_tObA=e0IKAi8{`&_s{jwKV&oRPe% zxsV!N<7AfX1FJMSdb#M=os4;aJKD$DyRiVgx- zKOi~{ZpUgmnsh6KEuLLmEGFy}EvDX19Lky(0hB=O0ueQ8L2vIXch$#f;A`Sxzp_C# zD)^js`)EU~C}W(OChFM~*}5HMfqU!_D7q+^0YN;%26Lb{|Es&(Z)^V$6?A+Rj#X~C z5(H>GS2++dtTa$Q1$1hPwq}dVXO#Zm6}LmNLp)e4IUfXK`Q;HH@4jbke!48p}M1}=`nnkn&G`k|7RwlG|(MDgV{E&OXFzwA?D4psVDlHfHxhQoM*BX_Wnj zX+;%*8g|Sky*(c2f70Z*#?2+hu5PUd48y`T^Pu;38Beg+^Z!`k-{6V{Lq$-K+t?Ej_ zrz+t6h$^LB%tKrU6hPFkiPD1IHpBE9B!rY8hZj3+5oMd<&RtoHxACSa{9HCD(0tx2 zg^jB0@)jP->d|I@{sWT}Z%t*st|SWemq~oj%z4sk)^A2rZ|UrJ0!K7v&?U$D__Lg) zg()#bBKu6XYo$6wPi2pMDtJZ|Ah^MCN*zp`sB_(4E8Bh(@&p=SBtYo&H@+8+rQ9DO z+W~4`m@V*|3CeUrId4bUUj*tNPT+@8+On$SMGy+X1^&$dJKorJj`;#Yy}~~PG^^69 z{t%%PdlC4x#k+xojb(r<>kYgRQ&C0=L51EM2k>crZTX`T@?`$sXIuY-3I0`3kglZu z`zA_sLYil>j)Q@}6euMe56#CyH%#lFGtc5pvqk}5u zS7K3tpQqP{eFeik`tp-Lo|B?mt^t92wsb7EdLV)^?Q5%h6_ppE# zL6E&sfW5kJUoLo-{*G*LSwzt9$J!@QqI)*Oqe+}1@g#2(1wW{o+a%y6Ey-B-^;rnu z9k%7Rn~7)hz{V>C?R!x6?z|s20m-XMI6+(yfKkz=+#usoc$yZm$iJ3LhBrpWJ*KD? zY+Q3TonIlwg{? zeboPWQuRpjL4v{%V{ekxvLfy&D877~RR?T%9tFMutRf_Yp*4S7eLqU)6@c7;GMHgn ztt?1dnH&$FHvYWMggpB2<*(sx8w65=>)X@Sh%R;fP~Ui21j zO6Gm|=Kbhp^^&~_tK(7K#5Rc$mtpa0{3q^MA}3GEC;p?eTVNorQ1qiI^VK_?dS+`kCHB*?O&j)&l=B|s z`FHc7f!NeV-hQrk zgyz!rcsM|Rj7v6TP>(a}fdAStmK*toHvrg@lEBJt%Rk6r8Ux-qGAv@gcu zda?68MOHg%P(w8U)YSN`3Lat&CmSY*9*n${E@=dYh^G^uGs*)V-(^|ZzFa=P`EiW) z-I$4vE!(8hl9zU!S z_*y(erBZj9-`VYghUR@n_1Yh|oYDJQZ?v2RO{me^(w)C}YwEPUUCwKh%97D-(9WLM z#u2xc$c?@;`jd%#H*5T@wg+QDS5I`>ea3sL_opCFBCeMmS3UAhbBNjG$gwFN3wA^3FBN1R>aVqmN|J#$wPc0BK*FJ}CPc@s( zZDz2gly~Wn=b&oKO2RqI?ccE{4*~{d4|Lez!5X2YBjTgMzk4kd*)P4ge5n{3_5P<; zoc@P0Ho3@Urh8u-BLk}g*1u5l-WoT!&G%gL?ur=W;U(3}xC^08)*gVXTR$=F;}5~) zSfrV!z(!*szU};rSG>R(}xD(Ttb{Sp36MnpG*rF8UDDlwhgCN!ASF!ilqF6~5w zj2_Qdf$fBrO!vX0x9w|=d^$B#q3O7yrlJE;?W^^j6U#B0SH*I-6;?Y3UtIWj?mb)b zv>TeKTkOtXyu1Pur7)!4cw>&<2Ff7vTQIyhwKpNuJga!VN^O%M=-SykdIwfdoS(ed zgiR)V0`DMB&RP@z=NBQh-*)eaRV9jGJZB2>aJjh^AeKlyUS@`9AGf#e4lhBmroRD8 zltjFUPwE0I*02irzrYR1DiG6qeSrc7UiSPo3lPeY&t)=+{DB^$SW0cyJhTw;>~Hn@ z4jfzTKpfIODZ#fp0yx8sG63m090^mw2{H8zV_A=qUL!3-*Bn~%j;oXt&$Iu{!x#K- z#Vh#ej`l@cyT?pk-oNQQyIQgVogKBQ;y;w0g#e}JmL`B^g9I#`{<6+pnt>}9!M>FC z_)X8MfYKn9BW`wZON)U`hIfz|3KBJDG z1*|h%4y$^+2lw&M=s;Sz+}=qTtF8GOKGBi-;5%Irz38FEwMfp!(*kQvxSiW#*B$d- zJvhxn`l_f3+6Xnb7bf(T3Oa&yaA_AO|JmoK5G@Z$n@qP;_x{CJK4Jd%)3?XR-T7VX z1(J&NIy(+%b&h8A=c+!xr+IT#k%SWdI@PtKe(@o=>}E8`up}8vqXTHh7rOOz35>e6 zFKh~&pesm~zgORMG^v>TDeNv!WRTSz;5(@S6fG9&un8Zh|3(t|zY6^^R^S2Hpi>)I z%t(d=(^Unzt8aJy#UD4e0VzgSG%IkC*>DfMF9KKf&Sq1_c%9mDZ`X2f&}MUJVh>IK z%!L=r{-vNIzqBf?Gm+bxR@u*EN^V^)dKEOex1N4-x-6@+z@cvxZ=%~5uRRy=8g*O3 zMatjGOQ;cL9(g6zs>OxWLIxqNXtp_2u(vZ>0F)STe9Y@Od3#rm%v>2 zxAeM(y;NDvgUNuK2Lj63XAYu3olJc(JBA?GOAG-InmZ$K=R7WMR*m904%T$riFUr& zO?0)tKhF0L3FIkszkAsNI%<;wN9#alI$*>)^R0ZQwY$VvK!zR)856R42ssb|iqGUx z+#$?g7UDr5upU{30p3#<6|DO)&mr9^#{~Iy;JAIr(i-?ch#1xe`2`%tFNEfMDOBdu zG{@8&BmZUfC49N5;cNQ`#*EctIUFHSd{QCn=ABYer%QL`ZGfOjZRTMQ>$)y;4B$s^ zBFV8afSH$UA7D|mVS#V=??2u{;+U!=kgl(SpTVnxkUj_G&!ZV=(mT6jiu&!hY78X{ zG}E9%^)<7aTxqJcB#n)^f-2cXBX>e3?awr<@89q|tZ+V-_c06W9wW_`vP7kqBrL4H z7C|*~7D1w>0&51L>$4M^P$r}P1veMc#%fKEEhbteH|*vzH_+raizIGKoNJo~y1RJX zyVgL8&vBsyB4ciZ_6g}xP|*n!hqXICC=>}~1}`hYQN!eekm43+kLTF66j){hy_iJ|5V z*oTYMqt#Z*RsU%d;~L9|xpw?cN8iAVD36L_jYPWL^M*Tz%2zpOhNm?6&sOyN8E>y9PU(!<`YmGo==mR+K6U!!i-v^1|SBPjahLyCk4dhoS$ z`kOOSIBC|4k=H)sSKr2-PB@k#c_X{An2y`XymMi^IpIwHX!KjwcH(20uz4)2`G=ol zI(A2acWsNHeYT}#C`Z1n!mGAlstU_Yop!d_^^~9O7!X4jBvK@fXzB+j4KpbUUyGHE zjOh0 zswz{+53=0SPb%n(n7B0b>Q@{WDJ7{`w6b$X z?=a6^$yh1h7rs>KOR9@kdsF)QxYsGSas^OrNxZmgMSxX%D0kGa0ZPIqRV~nW)$$*I zmG$|z-EI{*Uy!m!6+$FV(;rMRgT%aGWO?41b^Mi_n0q#Q)?{}tr!dZrj)GnUg}0+p zB(II~9qB%}Tj^{7N%GMR5+c&w00?A-Ex{E*sV*V5DA}J&D9gq<1T|@P)xy$8j8yiW z@$b4TNB103?=^FCbK-W)I6`%wmHse^P^oJjb!!wrcrG6F68hsge#8xvS6rL>aYDtiVSdsac6w zEJXAts(*S{KKp#Tp)q6q$7DObxP!INrj0uR73D;4jr%4i?k&;uNOk8f9qwDGDup{3 zbimr!R$!;*?*D;Z`_be>>IFJR!nD?zQO`cJPw`_|~50_=>q*)dI7&Tryh-jjiTmd)F%l{wxby zP&pl+oZw^M%KRwTvmow5wjibc#)r;`{t_Aa;l6jj4riMQ)(4g$*R%|4?~+^1*0>?| z&Q?nBna>fUezfReSE4*jv-72Aus>~F=Zfd~?lT5z70vkG-$(TZCngsZZWK2(6_pj$ z)N3Zk$0w8-zj^k3p`qgqCu?F^4}6}Ys`jZ?O-xMQzD?VdhC;WK?sd-_Yh8tFB&1^$ zRAv4|I!?eo&|)+=2qvTz#_ulUVTVK$py!D;a98-c#{#M^Ws~Rz*4=DrAQrpJ%^ltE z$1iI|XrF6x5n5*@05D^dGq^twMKp#%*1~>-E&#A{E|_L8ohAgmPl<s zAiMy5*?fR~M=aAD%Dk zsIYqcACfA_@6c82Bi8={W8Zedd$wMgV9;UU71Znsmtt*Ny97avwg=)%ugf`R8*k=i zT7g-!f}v9QIe4}^xX91Y*}!$t=%NQ7f=Czj)-YF7oXye98rru+A|uMLZxoaI+LzX* zcFOu2_w=gKv|b)b4QZ#7%^AGu>tkxV>J+a)_i46968rG$=8xMvW)vnH8XuZRb1i4) zb;?!mU%5T~hA|E=yOa|pdF=}n1lyUH@wi&sSViXO_RUU^&3&)!nas_I-m#t<-PP*z z1xd%6DY}8OySFAL^uJQchX?nS6@LD0TIGKC)0&?>*9Z2gydSx>5z9<2Cifd*U%Qe^ zFQ?^S4i8h%FOsb?6DKeFz+9QO!@8hD*=cV{c8+s=v%xDJP>mN9gH+(K=yn# zd)q3NpoZ4}_O-mv(C>YIpFR3@1&26on{;j_OA_jNbD2526w7R*aHUcVd6}f9?HztC z#bDEx%G1dvFU;Ijj8=N*OahahUVb=09Jwt#BOTn(AUNN?fTmC={Y1w=l1OF1rdTPW z6t2+gxa8(}XuLMFg!Mf#E|%H!nCUeXKb-$Keh7)R+AWK{iKBe@I~rUL3I z%R@>Z$=?ll1KAs2_>>el!&gYl1O;rY`Q1fReQT=m!5o}Le5mnNy?AY{`V=5O>HH!2 zfj@`$LC?EbVB4$2AOe6SDB}jecJQ^VCi}eAf3^iy$3_Sl7b1rcKExN+-$#w(3X21t zOwCzf3I1%yMiO{pPtLAb0tJ^p9Bm31UG$f&+5*Uq{1UJmkxG=51`!IkCjUG6@BbpE z$5`>vDy1W9Nr5X`AN#w9I@l8Mf}-FKRXGnDGcP;IJJ)03oeM__2fun_sAA9o_Itz+ zjJq6RR}xF6!sOO+06Ne|1C!TxV!$a0HO>RnnB|PG`TJgweq<$dD&_JEDahH`)2^dMt+h0jy;lXwCD6E1W>i?ZJwFNJ3QF|9+Db3{Z#2F_QxC zz*9F5!wRXxE|v3QSb|l5=abGPupXB2C8p*vD{ywN_P;Eyed=CQn46*S;2$Si*R4R<8^pZyzN0gu7e6aJiOe9IZp|6XD#bkTyQAjtDKQg=2PlW?TX?^uR zSt;amot%G2;CJzf4xqg~ZMQary9Ui6=lkfF&a$fU_rjJa-h!xjjatm!c8u7EvRGCC=wosDbmg{?n^Dsp=HPKrUfIzLxX@^&fx|lSTM*I0kPDrM<%v7r z#CHTw@?Cqb?@pXR_%5-|>MF4Z#k4OiH2ug$qQ4)NnfZ3QeMuc`s~Z1WNtM*QL?101 z+c4bhEf&N6s-c+4J3fHz%K>WE5T8%-Sx*+>+H2Uqxasv{QT*XzIu>g zfmt|@`c$~n9}?p2=?Sqpi`Zi;xbsn}%7jTV!l^Ng{hcy&?W$>-n!r^f z8?W+AP%?*jY|3?AWSe=6*w0Z|FNg7W5t=+{-r2F!1~NvPG3xnXMl<);!WunohEDyR zg68)nWjr`Qh2B1H`3Gf3p_icc7JSkIAS+?cZbV-(c)jEMrGK=lXZ&_Kv-3-J=;>#q z1>4RH9WXjbh6896$x1TtM4bM5b3`0B=@q? zBt`c7O>E&aBx$U9N3eEB=6gT$v@K!!Ih^t6U$}sidwy_T%$bj?z~Bs_tnLvL%6dQB z?U}@Dx14T87Wc<&8e)9i4^lYBWyPH1Ld0&h80fd>a;X@;tm@lv;d@_P2O)p*((v6a z7qbgb%>fS>g`YhRC%QCwoET>fsWeI- z1iHyj&S7Y$WJRV=h{TM9JYUSI*_XDBub(yBy>yi=tf?*%KE-~N(U zd`x!iJeEdqH8%648({aga|u^Flf?1=Wc@fbAo_;#D&?~;ym5!a)I*>8b%fgAGn%*0M^(&{-7{7kjqQk;-&3`U9vJg^@Cbs8Yq2* z+SB2&Fw^PrH6Z*mWsMOZPc;nn7OfL1M`CcmcCCVNip;WTVVyFHx zzLcBS)#sLI8Ts&*;+B$f&XZ7xJZ5fQIBChLp{DAaFQ=%t5c` z(l*~ohWt{>01%SSeGe!;WJ!kDO%z!kJ_Vl+6OCEwQxiUaG!mx$7r{mK zzQfxxOH3|53$6gpx&|c04}-weE9;xh={us)4WOH(0diu+@PAMcdT@Qczro-`Od4xE zahyn1i-Q~ORKc?{hYiky4-*@M$tcqjBCGw4_%Se3rJ5ehq=(!_Wn3(eHdC_4e&bb? z20Uo-!Dbyzvp3^>;Gm2y~u0D(28*t+dO`n;FAbdHUa9UY zSCEY9yiBM#I~#`6~+vrIkICuPn+no8^14QakYdWmU_HZ0szI> z;N7eoqb}D*t*aTc%L?HJHy3Z_c{*JDL|?ZdK6WYD3zLUL?(Ud^FvsJ%=D|72Yk4QE z7BD<7!!O#Z)amv!n^C+;qt1%=tI$m%`oLj+gz)Ct#uTI-Ya2#w*-mVK(a@vlMGd;K zPDGBrd%}QCg~&i6S!IaqeiHrXK?kj#Os$XRG`nXJF?9@e*7*no!gYPy%Oo!DxWCzj zclFJ0)3TzY-pZBIbayeUxx_R=$A+clGXI$r<5Ve^38!)lja9e-pvQK+B|Ji0KOPlv zl|bkwtPMCGCFdJ@=oM!4*6)RuMMnrCraD6~|rNQGatKGku(J=C!K{`|d{Hwo-jjj6%7HH`q zf+d^xcS;U1g(Z02Xyi6Pl-MV`xU~m2-XzKsiXhO7yuh2gFnp>%1*9hp;OFGl%q~N* zd~WFgSV@~nlx=rAI*KF?A`8Grv;ZoJV+ATf@G_y30lsf>fS-Y!AMFIrgVz#akP&v^ zaH@B3C+Wxko!r!a5q66BN|b1TD~Cenf@_ahbkDf$b-?}27-vWb^lo2F45B`y%7%#}d)?#2{oNf(Uk?3}xF!gt{Mb9IOm9b} zL7!Tj68j+j+t+juZ#hL2`zXc0N<}Xl&jrq%=N^k))Xp7O=s9f_ukn*!;juKh1IMLZ{C z7%eB}=`YjL@ODYZsGGqV5C-MhpX!#a*q4E&1q?5;##nS^ouEK<8WB5Zvs z(2WrEJX%T0dgkW{JZfLfYp#^#OOZ7er@gXLKVUg>S%+wZwC(&L^Y95f?B5Tq`&bfr zohK{M!Q$_h>NV$4ShH9#d0(z0 zu0xLpP1(KXOnIH{TiQIVy%kay1DLNQ)!W)$uu6_HKC09T8;Z1yJ9HNeU_~XK#Rdy( ztyb-Wfj+#_0~oB4g(l7+7|Q*sejy35t>ULc^Ek`M^MsYftSlbwciq-o-Ta<%_Ues} z+}n(%bG#MKfu`wnx4$#&xd{q6BuorFJQHDby2rJttsr}DQwa0Vm=Q-WFE?of7`3#8 zqX}(b`Feir_Hit5zjG2tsM@x)ZM2kphJ{(C_Lxwdg1jz;%c+jYPk3&wk7=Y! z;T$$Z$9@P1wSBeeU%OERP=*4ZRQErekBm1qM@)GPxQJBaq0`!+@4q6+D-41NAAuQ( z^8P`8Kf!=#Vc$e7Ai&!(`}wvmJX_lirRAT2oet|1r;_BZZ?F5J){|0P??_J7u!oa0 zuOh>}-xI-tZdCJpS3h&P(kKA-lH zlBUej;cI;yO7_7H?Yh)XYiy`y)hnCkL$qu2^BY_?gK6olc?UMtTz+zUa>Lo_xx<5y zx`Y~)PgUkw*wrpXIN$5#%gkZ7o6)_`3i@(FDauw&e#hG|8tVF#Oe%?omstynmLryh zvyY@ud{ZPOq%2MVOhpdsfW9}b1_RB0(jwrogVJ@^J^^hU*z>J=vla<}SJ9X&!Q=gz zHJcIy8s`-aR`~nDb|3Ggcl{0 zXdzb@rO_p2GpYL^MuigPS-cqhc+bV^7fgYYwRp)tmYMa)fZ-2`4a5#P3j%uN0t^zr z=7BzOAv|CAxDW>NW}6VUIQh-OW0=)J&YUu(=D-QnUnQHBgB_0W*GaK=hKp zUd*j68?hdDH9+x`R%qW&cslGDpg#NJCC|^lg-3B!)~IN(ev!{B&H^%d4L%r&>Hh4b z4+k3LpU(iT6EkA*F_e1I4~~w9i~!}dXb^zW;tSweTGXK!7SXxTsOY6E{g$AONE+I2 zD&Jslr|<4zW`~^3RLfUxb$;r)rPd&9%wcjQ=QX_qll2lkJ!3PRN)|By&<~RHj>YKG z70>k1cC!3mxg8NK9`IAR)2`f?xmGUjPdNqc zjr*+Ldp`>8)MsBk{&+4Dun>LSM1@apD&MDlLSZP7Z27T;xrW{A(^PT|<|yrjM?piu zF7Ms*86HVGnn{;|tm~m>c95=;17aTWk;x(uT=wTzmKWU#Wge%%blH2ec8#*`HT&w0 zK2bWT9{_SHaFee0sn4ja&Mz>q(LR#yRroUtZTyfs91q1Gf9!brG1h94Hki0!nRxCE z?8+tTHx9?={X1=dg@xMq4+$x-dkDN!p?^U_D?Bx>A7F0+OhGv23ZxMLyt#l67C1m8 z?SF+d#{cjf@PC!=y932{UodLXIq7=2e>W$1>_AADGV-TrtUl!v+9mEYQo5)oTrNp0 zF%$NMsGk{1;JNjvI?J{@<_hL?L+W>bv>q%Z)GbcoM6GM-T61$Vs@+Y6D-tAI>Uht0 z8lrf3rS3D~24t4{T|o1d5ib-m#p5?Fztq0U1uBs1Xkf8%tD05SSXWFxy8GCxcELFD&m(R+tX*?7h9{M zqZ=#ye{Yr)d>edK<2%-w7UXED6!-l-fLO44k2c6eBW>yzmF1QSpH>0RI%L1Fc`vAQ z0LM=MZ$cja+_nvkElC2^#Gjn9FKAE0uWCKICcPN>N`FMH4wxPq=s%TZg51;=eSDc+ z?Mt67Tg97`*IT}j#3qsTx0#P6SJc4uxg`iYVMNcnc(QXc4Pk5fJWIE|H$=-cAL9-) zywcXeXF1)J9ni@FU2v+0VN+$V-7RIc7V$7I4nDQ!M*G0+9f$9mTix`x%iFw_4k!ls zMPyyw>JI#I^b;1Qn$P1^!^lb~mA=-Om3*wazLgm=Cr-4k3uZbmzb*%3atji51V$ft zLpUtOX1RyX?hL2cOxV(k7O=fK$KQVh9xmzwR=}c|@!Q*92uoOrBME1B<`Mp+Cz#Y# z8PWpSlksP!rjI3q+T6GL^=)576!t2s(Ye|Do^acf?U+42-7*R-@!~BZoT5bXPKruZ zHufypio`p1(VU2KMA(9vq2<*#jjs}WM61CmLfTm{BHjA2d5FH+n=RzKU@&z{NrI#k zuLRW&GBis-OjEt3@I!ddUVJ#$CzE#uV$ZKLN(l<6hJHZ^B*wP7r>aJZ#@_~?AEjc$ zmSI9|t?grv_L!asw^E773=&E51j9|_fp=WmW0N$uYg1ln+WjYVJ0`nbQi)sAF$teTfrjHGURZpgV1ug-;kgx1&sm^}A=DnAl9lowc zx@*l%MimS3!o3+iyUDpSE)ZS*+0a`3<;2&bwjEyQkSLx8q2n{6Dd8%^tM zNUBZHGJzt2O(6c8+Wo4&HR0*xK}th013eMx7J56bgwUOPxyuTu=zCXu)n2KM6@DVC zR0<0OY8hWx-_laU(mcLJf?Yu>XMj<(wyZd^YoaDecomOpxjn z`$s_pf;ypSiRQh|8$;Po;efw`6s!Jl?$fmdJ75=JVZV(b$>933NciEovy*;Gz5e)B zm>iHH1l~sa)Qfxz;51n@csXgd&9Bg_85VlC4E{?$CrXTLUI)+B&FNd#ALE28@SfHo zkG=J4tL&nYJf`}GAnkqe;bPeB2rgJ+%KSKXP+) z?e=d&G3?AW($mjaP|T)H$S~2DbtH^AQwQUr<=*~jI;;G~%E+shOjp~WGe^5ehG~16 zoP5=-6(P0-X65%@rMFG-q8n;*R^((dN7b&7p2L!lB2$z&JZMgDJ@`)~Uk^ z>O#-L%CbT~Skb(G>w(EmhAH0Z})oJQ{>S%*Cu8}|nmg7bnl zcg`gAHLfi!FhSUwz0<45{VeCcRX7TN1gzsnDLF(bMQh8=MBgu>cRlx(rrR^c_Rb{q zo>X(E6m3cNt>|PMm6YNZTZ6NH8s$z*vpan@nY*e9xl|P@yon7wp@Ve!`f*;M;BT7w zuL0x!;0o)F4J`E{R`oErpEM28oE%?K(W#g= zSVayHf^2S#DHgfDvix?F?HGF!xezQf3^LEXdA?>kf{>iP_d?W@it9sp-Z03*Dz9m? zO!@Dubz7pTCoyKY&~ZZQYii$nmYmrBhqtc0iuJrOT7FR&ki(Ca|b#{$7SHuRNeuun&XYa+9tT)(Jj)3m4nvX+n_JK zkJAaGOQfpnZu?O)UIKy6GVHTH(RR zvC4orAVZ|r*jYUH2)p~hyn@Au7shL-Jw;&33pjOLc$-ZR?9C3~@92^Bz;{pR{PS!} zv@i^Ierf0Y9qWnKu1lRQUl9m@28+y5hmEdPuJWR88*c9V<&_nKcIB(;0n=>mwymbh zw;KEA4+MY1j+DNLmPvwaQ;%2CE0493+$HjqZN%o@Hgv^Z>e*y*QpV?XfXyDt|n8!LMSMHP&9jm&F|KdbD{#EfMVAQ&HCKmMv%L zAlD?_4bf1ESUL|Pr|=P@Pd9AZ-LY}`dQ_O_@;p6(WTs~@cLsfXx3y>HOyrFd?`M~; z4_=o}?pA8?DIV_ttf7o(biFCk{Au~`ndj$$HaGHp>Cm(JF>xe4fhWLz+}jJkJTE&U z$663+%LS_XRO|OSBFCblu>!XI^QYV69MnknSztU=Eg@ut^0vJ_BK@YJnrx}r;IGZ; z?y!xyJyg3na!(>z?dq6)<}(9T63XuLgs_Fr4n^{_miq$L8n4<+)icGP8;X@t4D{v% zT-Z|cIOry%jvBAh-`>NgZ2vFXg#$5)DFywP4=z4@@I zSIKUjJ6{lz8!^<%V})si1c=QQN11iYi2un zapHiNLbM*z1EU+I0%Y{BmwzHI2@X9JI_H|B&c%9UoVv)EHoCy?Sf7B)K@kZ7)YU!` zYw`{oZl}ZxfeUJK?lecxO)Ak!CK69(m%gvzzBN}kiP}4i{e;4BISD)hMeJX+j58~W z*S;`=^kVp?vU9~yV3_p(lob2lUEcq(So@zDfKGM3f2^gqa>;`xweJoxT!08VGZRd@_E|st*R*=X0=i-kyz*-*F=%Hg zc$vOr_R9(9?$N=&OFO z^i0HrW>Xv5P5BD5Z3MUiI#|L*{VEPx1~GLB6Bg2UCED z!PhTMFRx#i5ae(P*8zsABqmzjkz;Z#Mq*+iQ!m1>K7Fb%w!lfesRjl@IF5feqNj&~ zSRG2%XG*z;pM$_)*lgjcm4jQ{5!vJL9=n*TDA!_bFUZ^o&$8%7?ZxSgmi zG(Up}>d{zyBF&_)J1s*}Ns!qPZ&0}tvl@rkbKR-Q)^G*Ck}}i#)7DQ&9&fhzvg3b8Eh-!kb~2Y{u_Z3;4(r+_f>M zB|BA+bx!plXXmh?v6KD@gku0PM^u8QP-imgscc)jw3+_uHjhm-_x%L!{5uKUvrlxx z-00LC3mEVu0(&yLs8UiQ)KX49U#Oc1MTc3a9dVWazW5;Er3KB$yge9$K%g8Ox+6eH{6%AxLr&D*t8FK8 z1YSOOM_1G3MN&YX5a#tt$VG#eyh7ptFi;2hOz)@6QLh!-M@HaRme(NfTCu4cL6z5% zI+Uw~$R+PXH;pNV6j#&jUJeA{gU9K`&^yzT@;Nr@CdmyXYughyM`XVhY;QTSTNfsl z-C^MWsjUz%-M2jma` zgV*-m>G#70NUecsj_MVYZM&C4{TB(L*kBhW$Ya1}sgm#6B?Yoc))iF!n_DK%vSpY- z{(=d9fpvd?jKCU1e#s^qKYHua|2{^i{ zg4lsWzDEkpfk$TR6Z7`ug7<9xkYpjTvxdM_F%;M1k-5vdfm%=*Jnqdh=6?exr6SrTSi{$oS^ zucg61AE5sgi}CP(RkZ#84(|WO%EE|jhYWDY_)psv|0y@@L*^hrnx%yRNh9bx;VA*o p^Z5Vy8~^1;|BwFSU!|M=ufEv-Ef@E%Dh&Tye&qk^lm40ie*i7RL7V^p literal 0 HcmV?d00001 diff --git a/docs/landing/index.html b/docs/landing/index.html new file mode 100644 index 000000000..1db704a0d --- /dev/null +++ b/docs/landing/index.html @@ -0,0 +1,1295 @@ + + + + + + + CORNETO | Network optimization for biology + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ + +
+

Network optimization, for biology.

+ +

+ An open-source Python framework for expressing and solving biological network optimization problems, + from network inference to general-purpose graph-based modeling. +

+ +
+ —GitHub stars + Nat. Mach. Intell.2025 + BSD-3-Clause open source +
+
+
+ +
+
+ + +
+
+

For computational biology

+

Infer mechanistic networks from your omics data.

+

+ Move from gene expression, phosphoproteomics, or + metabolomics to condition-specific signaling and + metabolic networks, using biological knowledge. +

+
    +
  • Intracellular signaling from transcriptomics
  • +
  • Context-specific metabolic networks from omics
  • +
  • Multi-condition network inference
  • +
  • Compatible with Decoupler, Omnipath, COBRApy, and more.
  • +
+
+
+

For optimization & modeling

+

A composable API for optimization on graphs.

+

+ Build network optimization problems with modular formulations + for flows, paths, trees, and acyclic networks, then solve them + with the backend and solver of your choice. +

+
    +
  • Reusable constraint & objective building blocks
  • +
  • Backend-agnostic (CVXPY / PICOS; +20 solvers)
  • +
  • Supports directed, undirected and mixed (hyper)graphs
  • +
  • Graphviz and WebAssembly plotting support
  • +
+
+
+
+
+ +
+ + + +
+ +
+
+ + +
+
+

NetworkCommons

+

CORNETO is part of NetworkCommons.

+

+ NetworkCommons helps you build context-specific biological networks by combining omics data, prior + knowledge, and network inference methods in one platform. It makes it easier to access data, run + different methods, and compare results across workflows. Many of its optimization-based methods are + powered by CORNETO, the underlying engine for flexible network inference. +

+

+ Paton V, Türei D, Ivanova O, et al. + NetworkCommons: bridging data, knowledge, and methods to + build and evaluate context-specific biological networks. + Bioinformatics, 2025. +

+ +
+
+
+ NetworkCommons graphical abstract +
+
+
+
+
+ +
+ + +
+
+

Nature Machine Intelligence  ·  2025

+

Unifying multi-sample network inference from prior knowledge and omics data with CORNETO.

+

+ Rodriguez-Mier, P., Garrido-Rodriguez, M., Gabor, A., & Saez-Rodriguez, J. +

+ + Read on nature.com → + +
+ +
+
+ BibTeX + +
+
@article{rodriguez-mier2025,
+  title   = {Unifying multi-sample network inference from prior knowledge
+             and omics data with CORNETO},
+  author  = {Rodriguez-Mier, Pablo and Garrido-Rodriguez, Martin
+             and Gabor, Attila and Saez-Rodriguez, Julio},
+  journal = {Nature Machine Intelligence},
+  year    = {2025},
+  doi     = {10.1038/s42256-025-01069-9},
+  url     = {https://www.nature.com/articles/s42256-025-01069-9}
+}
+
+
+
+ + + + + + + + + + + diff --git a/docs/releases/index.md b/docs/releases/index.md index b2b800f72..758934fa3 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -7,6 +7,7 @@ This section contains detailed release notes for CORNETO versions, documenting n ```{toctree} :maxdepth: 1 +v1.0.0-rc.5 v1.0.0-rc.4 v1.0.0-rc.3 v1.0.0-rc.1 diff --git a/docs/releases/v1.0.0-rc.5.md b/docs/releases/v1.0.0-rc.5.md new file mode 100644 index 000000000..9cc24dc1b --- /dev/null +++ b/docs/releases/v1.0.0-rc.5.md @@ -0,0 +1,23 @@ +# Release v1.0.0-rc.5 {bdg-warning}`Pre-release` + +CORNETO 1.0.0 RC5 refreshes the project website and strengthens the release and +documentation publication safeguards ahead of the final 1.0 release. + +## Highlights + +- A new self-contained landing page presents CORNETO's biological network + inference and graph optimization capabilities without depending on assets + from a particular documentation version. +- Documentation publishing now prepares and validates the complete Pages tree + before making a single serialized update, preserving historical versions and + preventing release tags from overwriting the homepage. +- Every generated documentation build is checked for the canonical + `corneto.org/switcher.json` URL and the correct version match before it can be + deployed. +- The release helper and package publication workflow now require canonical, + committed release notes before creating or publishing a tag. + +## Compatibility + +This release does not change the CORNETO Python API. The landing-page language +and links target the supported 1.0 documentation and interfaces. diff --git a/scripts/build_all_docs_local.sh b/scripts/build_all_docs_local.sh index 39c246270..d8a2899a0 100755 --- a/scripts/build_all_docs_local.sh +++ b/scripts/build_all_docs_local.sh @@ -133,7 +133,9 @@ for tag in $(git tag -l "v*" --sort=v:refname); do done echo "==> Updating root index and switcher" -cp "${repo_root}/docs/custom-index.html" "${pages_wt}/index.html" +cp "${repo_root}/docs/landing/index.html" "${pages_wt}/index.html" +mkdir -p "${pages_wt}/assets" +rsync -a --delete "${repo_root}/docs/landing/assets/" "${pages_wt}/assets/" touch "${pages_wt}/.nojekyll" "${poetry_bin}" run python "${repo_root}/scripts/generate_switcher.py" \ --output "${pages_wt}/switcher.json" \ diff --git a/scripts/prepare_docs_pages.py b/scripts/prepare_docs_pages.py new file mode 100644 index 000000000..5fac3e389 --- /dev/null +++ b/scripts/prepare_docs_pages.py @@ -0,0 +1,209 @@ +#!/usr/bin/env python3 +"""Prepare a checked-out gh-pages tree for one documentation deployment.""" + +from __future__ import annotations + +import argparse +import json +import re +import shutil +from html.parser import HTMLParser +from pathlib import Path +from urllib.parse import unquote, urlparse + +try: + from .generate_switcher import build_entries +except ImportError: # pragma: no cover - direct script execution + from generate_switcher import build_entries + + +VERSION_FOLDER_RE = re.compile(r"^(?:stable|v[0-9A-Za-z][0-9A-Za-z._-]*)$") +CSS_URL_RE = re.compile(r"url\(\s*(['\"]?)(.*?)\1\s*\)", re.IGNORECASE) +SWITCHER_URL_RE = re.compile(r"DOCUMENTATION_OPTIONS\.theme_switcher_json_url\s*=\s*(['\"])(?P.*?)\1") +SWITCHER_VERSION_RE = re.compile(r"DOCUMENTATION_OPTIONS\.theme_switcher_version_match\s*=\s*(['\"])(?P.*?)\1") +ASSET_ATTRIBUTES = {"src", "poster"} +LANDING_HOST = "corneto.org" + + +class _LandingReferenceParser(HTMLParser): + def __init__(self) -> None: + super().__init__() + self.asset_references: list[str] = [] + + def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None: + attributes = dict(attrs) + if tag == "meta" and attributes.get("property") == "og:image" and attributes.get("content"): + self.asset_references.append(attributes["content"]) + if tag == "meta" and attributes.get("name") == "twitter:image" and attributes.get("content"): + self.asset_references.append(attributes["content"]) + for name, value in attrs: + if not value: + continue + if name in ASSET_ATTRIBUTES: + self.asset_references.append(value) + elif name == "srcset": + self.asset_references.extend(item.strip().split()[0] for item in value.split(",") if item.strip()) + elif name == "href" and _is_landing_asset_reference(value): + self.asset_references.append(value) + + +def _asset_relative_path(reference: str) -> Path | None: + parsed = urlparse(reference) + if parsed.scheme in {"data", "mailto", "javascript"}: + return None + if parsed.scheme or parsed.netloc: + if parsed.scheme not in {"http", "https"} or parsed.netloc != LANDING_HOST: + return None + path = unquote(parsed.path).lstrip("/") + else: + path = unquote(parsed.path).lstrip("/") + if not path.startswith("assets/"): + return None + return Path(path) + + +def _is_landing_asset_reference(reference: str) -> bool: + return _asset_relative_path(reference) is not None + + +def validate_landing_bundle(landing_dir: Path) -> list[Path]: + """Validate local asset references and return their bundle-relative paths.""" + landing_dir = landing_dir.resolve() + index_path = landing_dir / "index.html" + assets_dir = landing_dir / "assets" + if not index_path.is_file(): + raise ValueError(f"Landing page is missing: {index_path}") + if not assets_dir.is_dir(): + raise ValueError(f"Landing assets directory is missing: {assets_dir}") + + html = index_path.read_text(encoding="utf-8") + parser = _LandingReferenceParser() + parser.feed(html) + parser.asset_references.extend(match.group(2) for match in CSS_URL_RE.finditer(html)) + + resolved_references: list[Path] = [] + missing: list[str] = [] + invalid: list[str] = [] + for reference in parser.asset_references: + relative_path = _asset_relative_path(reference) + if relative_path is None: + parsed = urlparse(reference) + if not (parsed.scheme or parsed.netloc) and reference not in {"", "/"}: + invalid.append(reference) + continue + candidate = (landing_dir / relative_path).resolve() + try: + candidate.relative_to(assets_dir.resolve()) + except ValueError: + invalid.append(reference) + continue + if not candidate.is_file(): + missing.append(reference) + continue + resolved_references.append(relative_path) + + if invalid: + raise ValueError(f"Landing asset references must use assets/: {sorted(set(invalid))}") + if missing: + raise ValueError(f"Landing assets are missing: {sorted(set(missing))}") + if not resolved_references: + raise ValueError("Landing page does not reference any local assets") + return sorted(set(resolved_references)) + + +def _validate_version_folder(version_folder: str) -> None: + if not VERSION_FOLDER_RE.fullmatch(version_folder): + raise ValueError(f"Unsafe documentation destination: {version_folder!r}") + + +def _validate_nonempty_directory(path: Path, label: str) -> None: + if not path.is_dir() or not any(item.is_file() for item in path.rglob("*")): + raise ValueError(f"{label} is missing or empty: {path}") + + +def validate_built_switcher(build_dir: Path, version_folder: str, base_url: str) -> None: + """Require the generated docs to target the global switcher correctly.""" + index_path = build_dir / "index.html" + if not index_path.is_file(): + raise ValueError(f"Generated documentation index is missing: {index_path}") + html = index_path.read_text(encoding="utf-8") + url_match = SWITCHER_URL_RE.search(html) + version_match = SWITCHER_VERSION_RE.search(html) + if not url_match or not version_match: + raise ValueError("Generated documentation is missing the theme switcher configuration") + + expected_url = f"{base_url.rstrip('/')}/switcher.json" + actual_url = url_match.group("value") + if actual_url != expected_url and not actual_url.startswith(f"{expected_url}?"): + raise ValueError(f"Unexpected switcher URL: expected {expected_url!r}, found {actual_url!r}") + actual_version = version_match.group("value") + if actual_version != version_folder: + raise ValueError(f"Unexpected switcher version match: expected {version_folder!r}, found {actual_version!r}") + + +def _replace_tree(source: Path, destination: Path) -> None: + if destination.is_symlink(): + raise ValueError(f"Refusing to replace symlinked destination: {destination}") + if destination.exists(): + shutil.rmtree(destination) + shutil.copytree(source, destination) + + +def prepare_pages_tree( + *, + pages_dir: Path, + build_dir: Path, + landing_dir: Path, + version_folder: str, + base_url: str, + update_root: bool, +) -> None: + """Update one version and the global Pages files in an existing checkout.""" + _validate_version_folder(version_folder) + if update_root and version_folder != "stable": + raise ValueError("Only the stable deployment may update the root landing page") + pages_dir = pages_dir.resolve() + build_dir = build_dir.resolve() + landing_dir = landing_dir.resolve() + if not pages_dir.is_dir(): + raise ValueError(f"Pages checkout is missing: {pages_dir}") + _validate_nonempty_directory(build_dir, "Sphinx build") + validate_built_switcher(build_dir, version_folder, base_url) + if update_root: + validate_landing_bundle(landing_dir) + + _replace_tree(build_dir, pages_dir / version_folder) + + if update_root: + shutil.copy2(landing_dir / "index.html", pages_dir / "index.html") + _replace_tree(landing_dir / "assets", pages_dir / "assets") + (pages_dir / ".nojekyll").touch() + + switcher_path = pages_dir / "switcher.json" + entries = build_entries(base_url.rstrip("/")) + switcher_path.write_text(json.dumps(entries, indent=2) + "\n", encoding="utf-8") + + +def main() -> int: + """Run the deployment preparation command.""" + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--pages-dir", required=True, type=Path) + parser.add_argument("--build-dir", required=True, type=Path) + parser.add_argument("--landing-dir", required=True, type=Path) + parser.add_argument("--version-folder", required=True) + parser.add_argument("--base-url", required=True) + parser.add_argument("--update-root", action="store_true") + args = parser.parse_args() + prepare_pages_tree( + pages_dir=args.pages_dir, + build_dir=args.build_dir, + landing_dir=args.landing_dir, + version_folder=args.version_folder, + base_url=args.base_url, + update_root=args.update_root, + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/publish_docs_tag.sh b/scripts/publish_docs_tag.sh index ed199e60d..39f418a6e 100755 --- a/scripts/publish_docs_tag.sh +++ b/scripts/publish_docs_tag.sh @@ -4,14 +4,13 @@ set -euo pipefail usage() { cat <<'EOF' Usage: - scripts/publish_docs_tag.sh --tag vX.Y.Z[-suffix] [--base-url URL] [--remote origin] [--python /path/to/python] [--poetry /path/to/poetry] [--update-root] [--keep-temp] [--dry-run] + scripts/publish_docs_tag.sh --tag vX.Y.Z[-suffix] [--base-url URL] [--remote origin] [--python /path/to/python] [--poetry /path/to/poetry] [--keep-temp] [--dry-run] Examples: scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 --base-url https://corneto.org scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 --python /opt/homebrew/bin/python3.11 scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 --poetry /opt/homebrew/bin/poetry - scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 --update-root EOF } @@ -20,7 +19,6 @@ base_url="https://corneto.org" remote="origin" python_bin="" poetry_bin="" -update_root=0 keep_temp=0 dry_run=0 @@ -46,10 +44,6 @@ while [[ $# -gt 0 ]]; do poetry_bin="${2:-}" shift 2 ;; - --update-root) - update_root=1 - shift - ;; --keep-temp) keep_temp=1 shift @@ -153,20 +147,13 @@ fi mkdir -p "${pages_wt}/${tag}" rsync -a --delete "${tag_wt}/docs/_build/html/" "${pages_wt}/${tag}/" -if [[ "${update_root}" -eq 1 ]]; then - echo "==> Updating root index and switcher" - mkdir -p "${pages_wt}" - cp "${tag_wt}/docs/custom-index.html" "${pages_wt}/index.html" - touch "${pages_wt}/.nojekyll" - "${poetry_bin}" run python "${repo_root}/scripts/generate_switcher.py" \ - --output "${pages_wt}/switcher.json" \ - --base-url "${base_url}" - "${poetry_bin}" run python "${repo_root}/scripts/patch_switcher_urls.py" \ - --root "${pages_wt}" \ - --new-url "${base_url}/switcher.json" -else - echo "==> Skipping root index/switcher update (use --update-root to enable)" -fi +echo "==> Updating switcher" +"${poetry_bin}" run python "${repo_root}/scripts/generate_switcher.py" \ + --output "${pages_wt}/switcher.json" \ + --base-url "${base_url}" +"${poetry_bin}" run python "${repo_root}/scripts/patch_switcher_urls.py" \ + --root "${pages_wt}" \ + --new-url "${base_url}/switcher.json" echo "==> Committing and pushing gh-pages changes" cd "${pages_wt}" @@ -179,7 +166,7 @@ if [[ -n "$(git status --porcelain)" ]]; then fi git fetch "${remote}" gh-pages >/dev/null 2>&1 || true if ! git merge --ff-only "${remote}/gh-pages" >/dev/null 2>&1; then - echo "Remote gh-pages moved. Refusing to overwrite. Re-run after updating, or use --update-root with a manual merge." >&2 + echo "Remote gh-pages moved. Refusing to overwrite; re-run after updating." >&2 exit 1 fi git push "${remote}" gh-pages diff --git a/tests/test_prepare_docs_pages.py b/tests/test_prepare_docs_pages.py new file mode 100644 index 000000000..2a2c41b1e --- /dev/null +++ b/tests/test_prepare_docs_pages.py @@ -0,0 +1,173 @@ +"""Tests for assembling the multi-version GitHub Pages tree.""" + +from pathlib import Path + +import pytest + +from scripts.prepare_docs_pages import prepare_pages_tree, validate_built_switcher, validate_landing_bundle + + +def _write(path: Path, content: str = "content") -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content, encoding="utf-8") + + +def _landing_bundle(root: Path) -> Path: + landing = root / "landing" + _write( + landing / "index.html", + """ + + + +Docs +""", + ) + _write(landing / "assets" / "favicon.ico") + _write(landing / "assets" / "social.jpg") + _write(landing / "assets" / "logo.png") + return landing + + +def _sphinx_build(root: Path, version: str) -> Path: + build = root / f"build-{version}" + _write( + build / "index.html", + f""" +""", + ) + return build + + +def test_main_deployment_updates_root_and_exactly_replaces_stable(tmp_path): + pages = tmp_path / "pages" + build = _sphinx_build(tmp_path, "stable") + landing = _landing_bundle(tmp_path) + _write(pages / "stable" / "stale.html") + _write(pages / "v0.9.0" / "keep.html") + _write(pages / "assets" / "stale.png") + _write(pages / "index.html", "old landing") + _write(pages / "CNAME", "corneto.org") + + prepare_pages_tree( + pages_dir=pages, + build_dir=build, + landing_dir=landing, + version_folder="stable", + base_url="https://corneto.org", + update_root=True, + ) + + assert (pages / "stable" / "index.html").read_text(encoding="utf-8") == (build / "index.html").read_text( + encoding="utf-8" + ) + assert not (pages / "stable" / "stale.html").exists() + assert (pages / "v0.9.0" / "keep.html").is_file() + assert (pages / "CNAME").read_text(encoding="utf-8") == "corneto.org" + assert (pages / "index.html").read_text(encoding="utf-8") == (landing / "index.html").read_text(encoding="utf-8") + assert sorted(path.name for path in (pages / "assets").iterdir()) == ["favicon.ico", "logo.png", "social.jpg"] + assert (pages / ".nojekyll").is_file() + assert (pages / "switcher.json").is_file() + + +def test_tag_deployment_preserves_root_landing_and_assets(tmp_path): + pages = tmp_path / "pages" + build = _sphinx_build(tmp_path, "v1.0.0") + _write(pages / "index.html", "current landing") + _write(pages / "assets" / "current.png") + _write(pages / "v1.0.0" / "stale.html") + + prepare_pages_tree( + pages_dir=pages, + build_dir=build, + landing_dir=tmp_path / "unused-landing", + version_folder="v1.0.0", + base_url="https://corneto.org", + update_root=False, + ) + + assert (pages / "index.html").read_text(encoding="utf-8") == "current landing" + assert (pages / "assets" / "current.png").is_file() + assert (pages / "v1.0.0" / "index.html").read_text(encoding="utf-8") == (build / "index.html").read_text( + encoding="utf-8" + ) + assert not (pages / "v1.0.0" / "stale.html").exists() + assert (pages / "switcher.json").is_file() + + +def test_landing_validation_reports_missing_asset(tmp_path): + landing = _landing_bundle(tmp_path) + (landing / "assets" / "logo.png").unlink() + + with pytest.raises(ValueError, match="Landing assets are missing"): + validate_landing_bundle(landing) + + +def test_landing_validation_checks_same_site_social_image(tmp_path): + landing = _landing_bundle(tmp_path) + (landing / "assets" / "social.jpg").unlink() + + with pytest.raises(ValueError, match=r"https://corneto\.org/assets/social\.jpg"): + validate_landing_bundle(landing) + + +def test_built_switcher_rejects_wrong_url(tmp_path): + build = _sphinx_build(tmp_path, "stable") + index = build / "index.html" + index.write_text(index.read_text(encoding="utf-8").replace("corneto.org", "example.org"), encoding="utf-8") + + with pytest.raises(ValueError, match="Unexpected switcher URL"): + validate_built_switcher(build, "stable", "https://corneto.org") + + +def test_built_switcher_rejects_wrong_version(tmp_path): + build = _sphinx_build(tmp_path, "latest") + + with pytest.raises(ValueError, match="Unexpected switcher version match"): + validate_built_switcher(build, "stable", "https://corneto.org") + + +def test_built_switcher_rejects_missing_configuration(tmp_path): + build = tmp_path / "build" + _write(build / "index.html", "") + + with pytest.raises(ValueError, match="missing the theme switcher configuration"): + validate_built_switcher(build, "stable", "https://corneto.org") + + +@pytest.mark.parametrize("version_folder", ["latest", "../stable", "v1/escape", "/stable", ""]) +def test_unsafe_version_folder_is_rejected(tmp_path, version_folder): + pages = tmp_path / "pages" + build = tmp_path / "build" + pages.mkdir() + _write(build / "index.html") + + with pytest.raises(ValueError, match="Unsafe documentation destination"): + prepare_pages_tree( + pages_dir=pages, + build_dir=build, + landing_dir=tmp_path / "unused-landing", + version_folder=version_folder, + base_url="https://corneto.org", + update_root=False, + ) + + +def test_tag_cannot_update_root_landing(tmp_path): + pages = tmp_path / "pages" + build = tmp_path / "build" + pages.mkdir() + _write(build / "index.html") + + with pytest.raises(ValueError, match="Only the stable deployment"): + prepare_pages_tree( + pages_dir=pages, + build_dir=build, + landing_dir=_landing_bundle(tmp_path), + version_folder="v1.0.0", + base_url="https://corneto.org", + update_root=True, + ) From 9125b2848e6cc1666b98d0040ee04715183c80ce Mon Sep 17 00:00:00 2001 From: deeenes Date: Fri, 7 Aug 2026 23:03:38 +0200 Subject: [PATCH 12/13] fix(annnet): follow the node rename in the AnnNet bridges AnnNet renamed "vertex" to "node" across its public surface with no alias, so both bridges raise against a current AnnNet. add_cellnopt_conditions fails on its first statement, and from_annnet on the matrix and the positional lookup. corneto/contrib/annnet.py graph.vertices() -> graph.nodes() result.add_vertices(...) -> result.add_nodes(...) attrs.get_vertex_attrs(...) -> attrs.get_node_attrs(...) graph.X() -> graph.S graph.get_vertex(i) -> graph.N[i] the reserved key "vertex_id" -> "node_id" corneto/methods/signaling/annnet.py graph.vertices() -> graph.nodes() graph.add_vertices(...) -> graph.add_nodes(...) layers.set_vertex_layer_attrs -> layers.set_node_attrs layers.get_vertex_layer_attrs -> layers.node_attrs layers.layer_vertex_set -> layers.layer_node_set layers.set_layer_attrs -> layers.set_attrs CORNETO keeps its own word everywhere it owns the call: graph.V, get_attr_vertex, add_vertex, vertex_incidence_matrix and problem.expr.vertex_value are untouched. The two AnnNet test modules and the CellNOptDAG tutorial follow, and the interoperability guide says "node" for the AnnNet side of the conversion. --- corneto/contrib/annnet.py | 40 +++++++++---------- corneto/methods/signaling/annnet.py | 22 +++++----- docs/guide/interoperability/annnet.md | 6 +-- .../annnet-cellnopt-dag.ipynb | 18 ++++----- tests/contrib/test_annnet.py | 12 +++--- .../methods/signaling/test_cellnopt_annnet.py | 8 ++-- 6 files changed, 53 insertions(+), 53 deletions(-) diff --git a/corneto/contrib/annnet.py b/corneto/contrib/annnet.py index 110950348..b6c6d0239 100644 --- a/corneto/contrib/annnet.py +++ b/corneto/contrib/annnet.py @@ -18,7 +18,7 @@ from annnet import AnnNet -_ANNNET_VERTEX_RESERVED = {"layer", "slice", "vertex_id"} +_ANNNET_NODE_RESERVED = {"layer", "slice", "node_id"} _ANNNET_EDGE_RESERVED = { "as_entity", "default_edge_directed", @@ -102,22 +102,22 @@ def to_annnet(graph: BaseGraph, *, copy_attributes: bool = True) -> "AnnNet": annnet = import_optional_module("annnet") result = annnet.AnnNet(directed=None) - vertex_ids = {} + node_ids = {} used_ids = set() for vertex in graph.V: - vertex_id = str(vertex) - if vertex_id in used_ids: - raise ValueError(f"Multiple CORNETO vertices map to AnnNet vertex {vertex_id!r}.") - used_ids.add(vertex_id) - vertex_ids[vertex] = vertex_id + node_id = str(vertex) + if node_id in used_ids: + raise ValueError(f"Multiple CORNETO vertices map to AnnNet node {node_id!r}.") + used_ids.add(node_id) + node_ids[vertex] = node_id attributes = {} if copy_attributes: attributes = _copy_supported_attributes( graph.get_attr_vertex(vertex), - _ANNNET_VERTEX_RESERVED, - "vertex", + _ANNNET_NODE_RESERVED, + "node", ) - result.add_vertices(vertex_id, **attributes) + result.add_nodes(node_id, **attributes) if copy_attributes: result.uns.update(deepcopy(dict(graph.get_graph_attributes()))) @@ -143,8 +143,8 @@ def to_annnet(graph: BaseGraph, *, copy_attributes: bool = True) -> "AnnNet": "edge", ) - annnet_source = [vertex_ids[v] for v in source] - annnet_target = [vertex_ids[v] for v in target] + annnet_source = [node_ids[v] for v in source] + annnet_target = [node_ids[v] for v in target] uniform_weight = _uniform_magnitude(source, target, edge_attributes) if not directed: @@ -174,8 +174,8 @@ def to_annnet(graph: BaseGraph, *, copy_attributes: bool = True) -> "AnnNet": source_arg = annnet_source[0] if len(annnet_source) == 1 else annnet_source target_arg = annnet_target[0] if len(annnet_target) == 1 else annnet_target else: - source_arg = {vertex_ids[v]: -_endpoint_magnitude(edge_attributes, Attr.SOURCE_ATTR, v) for v in source} - target_arg = {vertex_ids[v]: _endpoint_magnitude(edge_attributes, Attr.TARGET_ATTR, v) for v in target} + source_arg = {node_ids[v]: -_endpoint_magnitude(edge_attributes, Attr.SOURCE_ATTR, v) for v in source} + target_arg = {node_ids[v]: _endpoint_magnitude(edge_attributes, Attr.TARGET_ATTR, v) for v in target} result.add_edges( source_arg, @@ -219,18 +219,18 @@ def from_annnet(graph: "AnnNet", *, copy_attributes: bool = True) -> Graph: result = Graph() result.get_graph_attributes().update(graph_attributes) - vertices = list(graph.vertices()) - for vertex in vertices: + nodes = list(graph.nodes()) + for vertex in nodes: attributes = {} if copy_attributes: - attributes = dict(graph.attrs.get_vertex_attrs(vertex)) - attributes.pop("vertex_id", None) + attributes = dict(graph.attrs.get_node_attrs(vertex)) + attributes.pop("node_id", None) result.add_vertex(vertex, **deepcopy(attributes)) edge_ids = list(graph.edges()) directed_edge_ids = set(graph.get_edges_by_direction(True)) - matrix = graph.X() - row_by_vertex = {graph.get_vertex(i): i for i in range(graph.nv)} + matrix = graph.S + row_by_vertex = {graph.N[i]: i for i in range(graph.nv)} for edge_index, edge_id in enumerate(edge_ids): edge = graph.get_edge(edge_id) diff --git a/corneto/methods/signaling/annnet.py b/corneto/methods/signaling/annnet.py index 0f209a5ca..2eb7db91e 100644 --- a/corneto/methods/signaling/annnet.py +++ b/corneto/methods/signaling/annnet.py @@ -106,11 +106,11 @@ def add_cellnopt_conditions( {condition_aspect: list(condition_names)}, ) - known_vertices = set(graph.vertices()) - base_vertices = list(graph.vertices()) + known_nodes = set(graph.nodes()) + base_nodes = list(graph.nodes()) layers = {condition: (condition,) for condition in condition_names} for condition, layer in layers.items(): - graph.add_vertices(base_vertices, layer=layer) + graph.add_nodes(base_nodes, layer=layer) values_by_role = ( (inputs[condition], input_attr), (inhibitors[condition], inhibitor_attr), @@ -119,12 +119,12 @@ def add_cellnopt_conditions( for values, attribute in values_by_role: if not isinstance(values, Mapping): raise TypeError(f"Values for condition {condition!r} must be mappings keyed by protein.") - unknown = set(values) - known_vertices + unknown = set(values) - known_nodes if unknown: protein = sorted(unknown, key=str)[0] raise ValueError(f"Unknown protein {protein!r} in condition {condition!r}.") for protein, value in values.items(): - graph.layers.set_vertex_layer_attrs(str(protein), layer, **{attribute: value}) + graph.layers.set_node_attrs(str(protein), layer, **{attribute: value}) return layers @@ -201,9 +201,9 @@ def build_cellnopt_from_annnet( inputs[condition] = {} inhibitors[condition] = {} measurements[condition] = {} - for protein in graph.layers.layer_vertex_set(layer): + for protein in graph.layers.layer_node_set(layer): protein_id = str(protein[0]) if isinstance(protein, tuple) else str(protein) - attributes = graph.layers.get_vertex_layer_attrs(protein_id, layer) + attributes = graph.layers.node_attrs(protein_id, layer) if input_attr in attributes: inputs[condition][protein_id] = attributes[input_attr] if attributes.get(inhibitor_attr): @@ -292,17 +292,17 @@ def add_cellnopt_results( condition_errors = {} for condition_index, condition in enumerate(condition_names): layer = context.condition_layers[condition] - graph.add_vertices(vertices, layer=layer) + graph.add_nodes(vertices, layer=layer) endpoint_error = 0.0 for vertex_index, protein in enumerate(vertices): predicted = float(predictions[vertex_index, condition_index]) attributes = {prediction_attr: predicted} - existing = graph.layers.get_vertex_layer_attrs(protein, layer) + existing = graph.layers.node_attrs(protein, layer) if measurement_attr in existing: error = abs(predicted - float(existing[measurement_attr])) attributes[error_attr] = error endpoint_error += error - graph.layers.set_vertex_layer_attrs(protein, layer, **attributes) + graph.layers.set_node_attrs(protein, layer, **attributes) condition_edges = [] for reaction_index in selected_indices: @@ -344,7 +344,7 @@ def add_cellnopt_results( } if solution is not None and getattr(solution, "status", None) is not None: layer_attributes["solver_status"] = str(solution.status) - graph.layers.set_layer_attrs(layer, **layer_attributes) + graph.layers.set_attrs(layer, **layer_attributes) condition_errors[condition] = endpoint_error graph.history.snapshot("cellnopt_results_added") diff --git a/docs/guide/interoperability/annnet.md b/docs/guide/interoperability/annnet.md index 22211535d..3b1c7794f 100644 --- a/docs/guide/interoperability/annnet.md +++ b/docs/guide/interoperability/annnet.md @@ -34,7 +34,7 @@ restored = from_annnet(annotated) ``` Directed binary edges and hyperedges, parallel edges, endpoint coefficients, -and ordinary graph, vertex, and edge attributes are preserved. CORNETO edge +and ordinary graph, node, and edge attributes are preserved. CORNETO edge indices become AnnNet IDs such as `corneto_edge_0`. When converting in the other direction, the original AnnNet ID is stored as the CORNETO edge attribute `_annnet_edge_id`. @@ -46,8 +46,8 @@ hypergraphs normally used by CORNETO: - AnnNet layers, slice membership, edge-entities, and flexible direction policies are not reproduced in CORNETO. -- Vertex identifiers are converted to strings for AnnNet. A collision after - conversion raises an error. +- A CORNETO vertex identifier becomes an AnnNet node id, as a string. A + collision after conversion raises an error. - CORNETO edges with an empty source or target set are not supported. - An undirected hyperedge is converted as one member set. Its original CORNETO source/target partition cannot be recovered; converting it back uses diff --git a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb index 5846ab81c..5f63de35c 100644 --- a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb +++ b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb @@ -133,10 +133,10 @@ "signaling = an.AnnNet(directed=True)\n", "signaling.history.enable(True)\n", "signaling.slices.add(\"prior\", role=\"prior_knowledge\")\n", - "signaling.add_vertices(sorted(display_name))\n", + "signaling.add_nodes(sorted(display_name))\n", "\n", "for protein, label in display_name.items():\n", - " signaling.attrs.set_vertex_attrs(protein, label=label, entity_type=\"protein\")\n", + " signaling.attrs.set_node_attrs(protein, label=label, entity_type=\"protein\")\n", "\n", "prior_edge_ids = []\n", "for index, (source, sign, target) in enumerate(pkn_edges):\n", @@ -495,7 +495,7 @@ " signaling,\n", " backend=\"graphviz\",\n", " layout=\"dot\",\n", - " vertex_label_key=\"label\",\n", + " node_label_key=\"label\",\n", " use_weight_style=False,\n", " graph_attr={\"rankdir\": \"LR\", \"size\": \"12,7\"},\n", " node_attr={\"shape\": \"ellipse\", \"style\": \"filled\", \"fillcolor\": \"#eef4fb\"},\n", @@ -599,12 +599,12 @@ }, "outputs": [], "source": [ - "def vertex_layer_table(network, layers, columns):\n", - " \"\"\"Return selected vertex-layer attributes as a pandas table.\"\"\"\n", + "def node_layer_table(network, layers, columns):\n", + " \"\"\"Return selected node-layer attributes as a pandas table.\"\"\"\n", " rows = {}\n", " for condition, layer in layers.items():\n", " rows[condition] = {\n", - " label: network.layers.get_vertex_layer_attrs(protein, layer).get(attribute, np.nan)\n", + " label: network.layers.node_attrs(protein, layer).get(attribute, np.nan)\n", " for label, (protein, attribute) in columns.items()\n", " }\n", " return pd.DataFrame.from_dict(rows, orient=\"index\").rename_axis(\"condition\")" @@ -818,7 +818,7 @@ " \"AKT observed\": (\"akt\", \"observed\"),\n", " \"HSP27 observed\": (\"hsp27\", \"observed\"),\n", "}\n", - "experiment = vertex_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", + "experiment = node_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", "experiment" ] }, @@ -1790,7 +1790,7 @@ } ], "source": [ - "akt_response = vertex_layer_table(\n", + "akt_response = node_layer_table(\n", " signaling,\n", " condition_layers,\n", " {\n", @@ -2000,7 +2000,7 @@ "an.io.write(signaling, analysis_path, overwrite=True)\n", "restored = an.io.read(analysis_path)\n", "\n", - "restored_akt = vertex_layer_table(\n", + "restored_akt = node_layer_table(\n", " restored,\n", " condition_layers,\n", " {\n", diff --git a/tests/contrib/test_annnet.py b/tests/contrib/test_annnet.py index de31e116f..322bd8524 100644 --- a/tests/contrib/test_annnet.py +++ b/tests/contrib/test_annnet.py @@ -20,13 +20,13 @@ def test_directed_hypergraph_roundtrip(): converted = to_annnet(graph) - assert converted.vertices() == ["A", "B", "C"] + assert converted.nodes() == ["A", "B", "C"] assert converted.get_edge("corneto_edge_0") == ( frozenset({"A", "B"}), frozenset({"C"}), ) assert converted.get_edges_by_direction(True) == ["corneto_edge_0"] - assert converted.attrs.get_vertex_attrs("A")["kind"] == "gene" + assert converted.attrs.get_node_attrs("A")["kind"] == "gene" assert converted.attrs.get_edge_attrs("corneto_edge_0")["relation"] == "reaction" assert converted.uns["name"] == "example" @@ -77,23 +77,23 @@ def test_undirected_hyperedge_is_canonicalized_to_member_set(): assert restored.get_attr_edge(0).get_attr(Attr.EDGE_TYPE) == EdgeType.UNDIRECTED.value -def test_non_string_vertex_ids_are_converted_to_strings(): +def test_non_string_node_ids_are_converted_to_strings(): """CORNETO vertex identifiers are stringified for AnnNet.""" graph = Graph() graph.add_edge(1, 2) converted = to_annnet(graph) - assert converted.vertices() == ["1", "2"] + assert converted.nodes() == ["1", "2"] -def test_string_conversion_rejects_vertex_id_collisions(): +def test_string_conversion_rejects_node_id_collisions(): """Stringification cannot silently merge distinct CORNETO vertices.""" graph = Graph() graph.add_vertex(1) graph.add_vertex("1") - with pytest.raises(ValueError, match="map to AnnNet vertex"): + with pytest.raises(ValueError, match="map to AnnNet node"): to_annnet(graph) diff --git a/tests/methods/signaling/test_cellnopt_annnet.py b/tests/methods/signaling/test_cellnopt_annnet.py index 0dd81f0b2..d3f246e57 100644 --- a/tests/methods/signaling/test_cellnopt_annnet.py +++ b/tests/methods/signaling/test_cellnopt_annnet.py @@ -39,10 +39,10 @@ def test_cellnopt_reads_conditions_and_adds_results_to_annnet(backend): assert solution.status == "optimal" assert layers == {"off": ("off",), "on": ("on",), "blocked": ("blocked",)} - assert graph.layers.get_vertex_layer_attrs("L", ("on",))["input"] == 1 - assert graph.layers.get_vertex_layer_attrs("A", ("blocked",))["inhibited"] == 1 - assert graph.layers.get_vertex_layer_attrs("Y", ("on",))["predicted"] == 1 - assert graph.layers.get_layer_attrs(("blocked",))["endpoint_absolute_error"] == 0 + assert graph.layers.node_attrs("L", ("on",))["input"] == 1 + assert graph.layers.node_attrs("A", ("blocked",))["inhibited"] == 1 + assert graph.layers.node_attrs("Y", ("on",))["predicted"] == 1 + assert graph.layers.attrs(("blocked",))["endpoint_absolute_error"] == 0 assert graph.slices.exists("cellnopt_selected") assert summary["selected_reactions"] == 2 assert summary["condition_errors"] == {"off": 0.0, "on": 0.0, "blocked": 0.0} From b51f917bbcb34df219ef1f45ca3145646e19a68d Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Wed, 23 Sep 2026 15:22:18 +0200 Subject: [PATCH 13/13] fix(annnet): carry PR #60 node API into dev --- corneto/methods/signaling/annnet.py | 22 +++++++++---------- .../annnet-cellnopt-dag.ipynb | 18 +++++++-------- .../methods/signaling/test_cellnopt_annnet.py | 8 +++---- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/corneto/methods/signaling/annnet.py b/corneto/methods/signaling/annnet.py index 0f209a5ca..2eb7db91e 100644 --- a/corneto/methods/signaling/annnet.py +++ b/corneto/methods/signaling/annnet.py @@ -106,11 +106,11 @@ def add_cellnopt_conditions( {condition_aspect: list(condition_names)}, ) - known_vertices = set(graph.vertices()) - base_vertices = list(graph.vertices()) + known_nodes = set(graph.nodes()) + base_nodes = list(graph.nodes()) layers = {condition: (condition,) for condition in condition_names} for condition, layer in layers.items(): - graph.add_vertices(base_vertices, layer=layer) + graph.add_nodes(base_nodes, layer=layer) values_by_role = ( (inputs[condition], input_attr), (inhibitors[condition], inhibitor_attr), @@ -119,12 +119,12 @@ def add_cellnopt_conditions( for values, attribute in values_by_role: if not isinstance(values, Mapping): raise TypeError(f"Values for condition {condition!r} must be mappings keyed by protein.") - unknown = set(values) - known_vertices + unknown = set(values) - known_nodes if unknown: protein = sorted(unknown, key=str)[0] raise ValueError(f"Unknown protein {protein!r} in condition {condition!r}.") for protein, value in values.items(): - graph.layers.set_vertex_layer_attrs(str(protein), layer, **{attribute: value}) + graph.layers.set_node_attrs(str(protein), layer, **{attribute: value}) return layers @@ -201,9 +201,9 @@ def build_cellnopt_from_annnet( inputs[condition] = {} inhibitors[condition] = {} measurements[condition] = {} - for protein in graph.layers.layer_vertex_set(layer): + for protein in graph.layers.layer_node_set(layer): protein_id = str(protein[0]) if isinstance(protein, tuple) else str(protein) - attributes = graph.layers.get_vertex_layer_attrs(protein_id, layer) + attributes = graph.layers.node_attrs(protein_id, layer) if input_attr in attributes: inputs[condition][protein_id] = attributes[input_attr] if attributes.get(inhibitor_attr): @@ -292,17 +292,17 @@ def add_cellnopt_results( condition_errors = {} for condition_index, condition in enumerate(condition_names): layer = context.condition_layers[condition] - graph.add_vertices(vertices, layer=layer) + graph.add_nodes(vertices, layer=layer) endpoint_error = 0.0 for vertex_index, protein in enumerate(vertices): predicted = float(predictions[vertex_index, condition_index]) attributes = {prediction_attr: predicted} - existing = graph.layers.get_vertex_layer_attrs(protein, layer) + existing = graph.layers.node_attrs(protein, layer) if measurement_attr in existing: error = abs(predicted - float(existing[measurement_attr])) attributes[error_attr] = error endpoint_error += error - graph.layers.set_vertex_layer_attrs(protein, layer, **attributes) + graph.layers.set_node_attrs(protein, layer, **attributes) condition_edges = [] for reaction_index in selected_indices: @@ -344,7 +344,7 @@ def add_cellnopt_results( } if solution is not None and getattr(solution, "status", None) is not None: layer_attributes["solver_status"] = str(solution.status) - graph.layers.set_layer_attrs(layer, **layer_attributes) + graph.layers.set_attrs(layer, **layer_attributes) condition_errors[condition] = endpoint_error graph.history.snapshot("cellnopt_results_added") diff --git a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb index af0ffb265..208fb7bea 100644 --- a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb +++ b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb @@ -133,10 +133,10 @@ "signaling = an.AnnNet(directed=True)\n", "signaling.history.enable(True)\n", "signaling.slices.add(\"prior\", role=\"prior_knowledge\")\n", - "signaling.add_vertices(sorted(display_name))\n", + "signaling.add_nodes(sorted(display_name))\n", "\n", "for protein, label in display_name.items():\n", - " signaling.attrs.set_vertex_attrs(protein, label=label, entity_type=\"protein\")\n", + " signaling.attrs.set_node_attrs(protein, label=label, entity_type=\"protein\")\n", "\n", "prior_edge_ids = []\n", "for index, (source, sign, target) in enumerate(pkn_edges):\n", @@ -495,7 +495,7 @@ " signaling,\n", " backend=\"graphviz\",\n", " layout=\"dot\",\n", - " vertex_label_key=\"label\",\n", + " node_label_key=\"label\",\n", " use_weight_style=False,\n", " graph_attr={\"rankdir\": \"LR\", \"size\": \"12,7\"},\n", " node_attr={\"shape\": \"ellipse\", \"style\": \"filled\", \"fillcolor\": \"#eef4fb\"},\n", @@ -599,12 +599,12 @@ }, "outputs": [], "source": [ - "def vertex_layer_table(network, layers, columns):\n", - " \"\"\"Return selected vertex-layer attributes as a pandas table.\"\"\"\n", + "def node_layer_table(network, layers, columns):\n", + " \"\"\"Return selected node-layer attributes as a pandas table.\"\"\"\n", " rows = {}\n", " for condition, layer in layers.items():\n", " rows[condition] = {\n", - " label: network.layers.get_vertex_layer_attrs(protein, layer).get(attribute, np.nan)\n", + " label: network.layers.node_attrs(protein, layer).get(attribute, np.nan)\n", " for label, (protein, attribute) in columns.items()\n", " }\n", " return pd.DataFrame.from_dict(rows, orient=\"index\").rename_axis(\"condition\")" @@ -818,7 +818,7 @@ " \"AKT observed\": (\"akt\", \"observed\"),\n", " \"HSP27 observed\": (\"hsp27\", \"observed\"),\n", "}\n", - "experiment = vertex_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", + "experiment = node_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", "experiment" ] }, @@ -1797,7 +1797,7 @@ } ], "source": [ - "akt_response = vertex_layer_table(\n", + "akt_response = node_layer_table(\n", " signaling,\n", " condition_layers,\n", " {\n", @@ -2007,7 +2007,7 @@ "an.io.write(signaling, analysis_path, overwrite=True)\n", "restored = an.io.read(analysis_path)\n", "\n", - "restored_akt = vertex_layer_table(\n", + "restored_akt = node_layer_table(\n", " restored,\n", " condition_layers,\n", " {\n", diff --git a/tests/methods/signaling/test_cellnopt_annnet.py b/tests/methods/signaling/test_cellnopt_annnet.py index 0dd81f0b2..d3f246e57 100644 --- a/tests/methods/signaling/test_cellnopt_annnet.py +++ b/tests/methods/signaling/test_cellnopt_annnet.py @@ -39,10 +39,10 @@ def test_cellnopt_reads_conditions_and_adds_results_to_annnet(backend): assert solution.status == "optimal" assert layers == {"off": ("off",), "on": ("on",), "blocked": ("blocked",)} - assert graph.layers.get_vertex_layer_attrs("L", ("on",))["input"] == 1 - assert graph.layers.get_vertex_layer_attrs("A", ("blocked",))["inhibited"] == 1 - assert graph.layers.get_vertex_layer_attrs("Y", ("on",))["predicted"] == 1 - assert graph.layers.get_layer_attrs(("blocked",))["endpoint_absolute_error"] == 0 + assert graph.layers.node_attrs("L", ("on",))["input"] == 1 + assert graph.layers.node_attrs("A", ("blocked",))["inhibited"] == 1 + assert graph.layers.node_attrs("Y", ("on",))["predicted"] == 1 + assert graph.layers.attrs(("blocked",))["endpoint_absolute_error"] == 0 assert graph.slices.exists("cellnopt_selected") assert summary["selected_reactions"] == 2 assert summary["condition_errors"] == {"off": 0.0, "on": 0.0, "blocked": 0.0}