From 824a83fb8667b54deea5f8d7c99f844c0ea351cb Mon Sep 17 00:00:00 2001 From: jnsbck-uni Date: Fri, 22 Nov 2024 14:59:53 +0100 Subject: [PATCH] wip: new baselines --- .github/workflows/regression_tests.yml | 39 + .github/workflows/run_tutorials.yml | 42 + .github/workflows/tests.yml | 14 +- .../workflows/update_regression_baseline.yml | 90 + .gitignore | 2 + docs/advanced_tutorials.rst | 1 + docs/index.rst | 12 +- docs/reference/jaxley.connect.rst | 2 +- docs/reference/jaxley.utils.rst | 2 - docs/tutorials.rst | 1 - docs/tutorials/00_jaxley_api.ipynb | 2233 +++++++++++++++++ docs/tutorials/01_morph_neurons.ipynb | 833 +++++- docs/tutorials/02_small_network.ipynb | 455 +++- docs/tutorials/03_setting_parameters.ipynb | 997 -------- docs/tutorials/04_jit_and_vmap.ipynb | 108 +- .../05_channel_and_synapse_models.ipynb | 80 +- docs/tutorials/06_groups.ipynb | 1005 +------- docs/tutorials/07_gradient_descent.ipynb | 234 +- .../tutorials/08_importing_morphologies.ipynb | 542 ++-- docs/tutorials/09_advanced_indexing.ipynb | 391 ++- .../10_advanced_parameter_sharing.ipynb | 110 +- jaxley/__init__.py | 2 + jaxley/connect.py | 2 +- jaxley/io/swc.py | 181 ++ jaxley/modules/__init__.py | 2 +- jaxley/modules/base.py | 390 +-- jaxley/modules/branch.py | 52 +- jaxley/modules/cell.py | 159 +- jaxley/modules/compartment.py | 14 +- jaxley/modules/network.py | 108 +- jaxley/solver_voltage.py | 22 +- jaxley/utils/cell_utils.py | 332 ++- jaxley/utils/debug_solver.py | 34 +- jaxley/utils/misc_utils.py | 64 + jaxley/utils/plot_utils.py | 4 +- jaxley/utils/solver_utils.py | 24 +- jaxley/utils/swc.py | 354 --- mkdocs/docs/index.md | 3 + mkdocs/docs/reference/utils.md | 1 - pyproject.toml | 8 + tests/conftest.py | 243 ++ tests/jaxley_identical/test_basic_modules.py | 113 +- tests/jaxley_identical/test_grad.py | 14 +- .../test_radius_and_length.py | 82 +- tests/jaxley_identical/test_swc.py | 24 +- tests/jaxley_vs_neuron/test_branch.py | 34 +- tests/jaxley_vs_neuron/test_cell.py | 27 +- tests/jaxley_vs_neuron/test_comp.py | 3 +- tests/regression_test_baselines.json | 92 + tests/test_api_equivalence.py | 113 +- tests/test_cell_matches_branch.py | 29 +- tests/test_channels.py | 91 +- tests/test_clamp.py | 47 +- tests/test_composability_of_modules.py | 29 +- tests/test_connection.py | 39 +- tests/test_data_feeding.py | 32 +- tests/test_distance.py | 22 +- tests/test_fixtures.py | 73 + tests/test_grad.py | 17 +- tests/test_groups.py | 40 +- tests/test_license.py | 27 - tests/test_make_trainable.py | 155 +- tests/test_misc.py | 60 + tests/test_moving.py | 71 +- tests/test_optimize.py | 18 +- tests/test_pickle.py | 12 +- tests/test_plotting_api.py | 115 +- tests/test_record_and_stimulate.py | 45 +- tests/test_regression.py | 241 ++ tests/test_set_ncomp.py | 77 +- tests/test_shared_state.py | 4 +- tests/test_solver.py | 15 +- tests/test_swc.py | 36 +- tests/test_syn.py | 7 +- tests/test_synapse_indexing.py | 30 +- tests/test_transforms.py | 6 +- tests/test_viewing.py | 236 +- 77 files changed, 6819 insertions(+), 4449 deletions(-) create mode 100644 .github/workflows/regression_tests.yml create mode 100644 .github/workflows/run_tutorials.yml create mode 100644 .github/workflows/update_regression_baseline.yml create mode 100644 docs/tutorials/00_jaxley_api.ipynb delete mode 100644 docs/tutorials/03_setting_parameters.ipynb create mode 100644 jaxley/io/swc.py delete mode 100644 jaxley/utils/swc.py create mode 100644 tests/conftest.py create mode 100644 tests/regression_test_baselines.json create mode 100644 tests/test_fixtures.py delete mode 100644 tests/test_license.py create mode 100644 tests/test_misc.py create mode 100644 tests/test_regression.py diff --git a/.github/workflows/regression_tests.yml b/.github/workflows/regression_tests.yml new file mode 100644 index 00000000..c0e069d5 --- /dev/null +++ b/.github/workflows/regression_tests.yml @@ -0,0 +1,39 @@ +# .github/workflows/regression_tests.yml +name: Regression Tests + +on: + # pull_request: + # branches: + # - main + +jobs: + regression_tests: + name: regression_tests + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v3 + with: + lfs: true + fetch-depth: 0 # This ensures we can checkout main branch too + + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + architecture: 'x64' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e ".[dev]" + + - name: Run benchmarks and compare to baseline + if: github.event.pull_request.base.ref == 'main' + run: | + # Check if regression test results exist in main branch + if [ -f 'git cat-file -e main:tests/regression_test_baselines.json' ]; then + git checkout main tests/regression_test_baselines.json + else + echo "No regression test results found in main branch" + fi + pytest -m regression \ No newline at end of file diff --git a/.github/workflows/run_tutorials.yml b/.github/workflows/run_tutorials.yml new file mode 100644 index 00000000..27abefdf --- /dev/null +++ b/.github/workflows/run_tutorials.yml @@ -0,0 +1,42 @@ +name: Run Tutorials +on: + push: + branches: + - main + release: + types: [ published ] + +jobs: + build: + name: Run Tutorials + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v3 + with: + lfs: true + + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + architecture: 'x64' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e ".[dev]" + + - name: Modify notebook parameters + run: | + # Replace parameters to reduce exec time of 07_gradient_descent + sed -i 's/batch_size = 4/batch_size = 1/' docs/tutorials/07_gradient_descent.ipynb + sed -i 's/for epoch in range(10):/for epoch in range(1):/' docs/tutorials/07_gradient_descent.ipynb + sed -i 's/inputs = jnp.asarray(np.random.rand(100, 2))/inputs = jnp.asarray(np.random.rand(3, 2))/' docs/tutorials/07_gradient_descent.ipynb + sed -i 's/t_max = 5.0/t_max = 3.0/' docs/tutorials/07_gradient_descent.ipynb + + - name: Test notebooks + run: | + for notebook in docs/tutorials/*.ipynb; do + echo "Testing $notebook" + jupyter nbconvert --to notebook --execute --ExecutePreprocessor.timeout=600 "$notebook" + done \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3eb90b0a..5b5ebf07 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,12 +1,12 @@ name: Tests on: - push: - branches: - - main - pull_request: - branches: - - main +# push: +# branches: +# - main +# pull_request: +# branches: +# - main jobs: build: @@ -39,4 +39,4 @@ jobs: - name: Test with pytest run: | pip install pytest pytest-cov - pytest tests/ --cov=jaxley --cov-report=xml + pytest tests/ -m "not regression" --cov=jaxley --cov-report=xml diff --git a/.github/workflows/update_regression_baseline.yml b/.github/workflows/update_regression_baseline.yml new file mode 100644 index 00000000..83ec169f --- /dev/null +++ b/.github/workflows/update_regression_baseline.yml @@ -0,0 +1,90 @@ +# .github/workflows/update_regression_tests.yml + +# for details on triggering a workflow from a comment, see: +# https://dev.to/zirkelc/trigger-github-workflow-for-comment-on-pull-request-45l2 +name: Update Regression Baseline + +on: + issue_comment: # trigger from comment; event runs on the default branch + types: [created] + pull_request: + branches: + - main + +jobs: + update_regression_tests: + name: update_regression_tests + runs-on: ubuntu-20.04 + # Trigger from a comment + # if: github.event.issue.pull_request && contains(github.event.comment.body, '/update_baseline') + permissions: + contents: write + pull-requests: write + env: + username: ${{ github.event.pull_request.user.login }} # ${{ github.actor }} + + steps: + - name: Get PR branch + uses: xt0rted/pull-request-comment-branch@v1 + id: comment-branch + + - name: Checkout PR branch + uses: actions/checkout@v3 + with: + # ref: ${{ steps.comment-branch.outputs.head_sha }} # using head_sha vs. head_ref makes this work for forks + lfs: true + fetch-depth: 0 # This ensures we can checkout main branch too + + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + architecture: 'x64' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e ".[dev]" + + - name: Update baseline + if: github.event.pull_request.base.ref == 'main' + run: | + git config --global user.name '$username' + git config --global user.email '$username@users.noreply.github.com' + # Check if regression test results exist in main branch + if [ -f 'git cat-file -e main:tests/regression_test_baselines.json' ]; then + git checkout main tests/regression_test_baselines.json + else + echo "No regression test results found in main branch" + fi + NEW_BASELINE=1 pytest -m regression + + - name: Add Baseline update report to PR comment + uses: actions/github-script@v7 + if: github.event.pull_request.base.ref == 'main' # might need `always()` to work + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const fs = require('fs'); + const TestReport = fs.readFileSync('tests/regression_test_report.txt', 'utf8'); + + await github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: `## New Baselines \n\`\`\`\n${TestReport}\n\`\`\`` + }); + + - name: Commit and push + if: github.event.pull_request.base.ref == 'main' + run: | + git add -f tests/regression_test_baselines.json # since it's in .gitignore + git commit -m "Update regression test baselines" + git push origin HEAD:${{ github.head_ref }} + + # Needed when workflow is triggered from a comment + # - name: Commit and push + # if: github.event.pull_request.base.ref == 'main' + # run: | + # git add -f tests/regression_test_baselines.json # since it's in .gitignore + # git commit -m "Update regression test baselines" + # git push origin HEAD:${{ steps.comment-branch.outputs.head_sha }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 6162a95b..d5638eb6 100644 --- a/.gitignore +++ b/.gitignore @@ -55,6 +55,8 @@ coverage.xml *.py,cover .hypothesis/ .pytest_cache/ +tests/regression_test_results.json +tests/regression_test_baselines.json # Translations *.mo diff --git a/docs/advanced_tutorials.rst b/docs/advanced_tutorials.rst index f4a6a56d..075e5eed 100644 --- a/docs/advanced_tutorials.rst +++ b/docs/advanced_tutorials.rst @@ -6,6 +6,7 @@ Advanced tutorials .. toctree:: :maxdepth: 1 + tutorials/00_jaxley_api.ipynb tutorials/08_importing_morphologies.ipynb tutorials/09_advanced_indexing.ipynb tutorials/10_advanced_parameter_sharing.ipynb diff --git a/docs/index.rst b/docs/index.rst index 7493179b..09133837 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -42,17 +42,7 @@ Getting started plt.plot(v.T) # Plot voltage trace. -If you want to learn more, we have tutorials on how to: - -- `simulate morphologically detailed neurons `_ -- `simulate networks of such neurons `_ -- `set parameters of cells and networks `_ -- `speed up simulations with GPUs and jit `_ -- `define your own channels and synapses `_ -- `define groups `_ -- `read and handle SWC files `_ -- `compute the gradient and train biophysical models `_ - +If you want to learn more, check out our `Tutorial on the basics of Jaxley `_. For more resources, see the `FAQ `_ or `Advanced tutorials `_. Installation diff --git a/docs/reference/jaxley.connect.rst b/docs/reference/jaxley.connect.rst index a0a3768e..b1026eba 100644 --- a/docs/reference/jaxley.connect.rst +++ b/docs/reference/jaxley.connect.rst @@ -1,7 +1,7 @@ Connecting Cells =============================== -.. automodule:: jaxley.connect.connect +.. autofunction:: jaxley.connect.connect .. autofunction:: jaxley.connect.connectivity_matrix_connect .. autofunction:: jaxley.connect.fully_connect .. autofunction:: jaxley.connect.sparse_connect diff --git a/docs/reference/jaxley.utils.rst b/docs/reference/jaxley.utils.rst index cbe7df69..67e1f55c 100644 --- a/docs/reference/jaxley.utils.rst +++ b/docs/reference/jaxley.utils.rst @@ -4,8 +4,6 @@ Utils :members: .. automodule:: jaxley.utils.plot_utils :members: -.. automodule:: jaxley.utils.swc - :members: .. automodule:: jaxley.utils.jax_utils :members: .. automodule:: jaxley.utils.syn_utils diff --git a/docs/tutorials.rst b/docs/tutorials.rst index c75b879e..2c980c66 100644 --- a/docs/tutorials.rst +++ b/docs/tutorials.rst @@ -8,7 +8,6 @@ Tutorials tutorials/01_morph_neurons.ipynb tutorials/02_small_network.ipynb - tutorials/03_setting_parameters.ipynb tutorials/04_jit_and_vmap.ipynb tutorials/05_channel_and_synapse_models.ipynb tutorials/07_gradient_descent.ipynb diff --git a/docs/tutorials/00_jaxley_api.ipynb b/docs/tutorials/00_jaxley_api.ipynb new file mode 100644 index 00000000..cbe6399a --- /dev/null +++ b/docs/tutorials/00_jaxley_api.ipynb @@ -0,0 +1,2233 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "89896082", + "metadata": {}, + "source": [ + "# Key concepts in Jaxley" + ] + }, + { + "cell_type": "markdown", + "id": "a0404fbc", + "metadata": {}, + "source": [ + "In this tutorial, we will introduce you to the basic concepts of Jaxley.\n", + "You will learn about:\n", + "\n", + "- Modules (e.g., Cell, Network,...)\n", + " - nodes\n", + " - edges\n", + "- Views\n", + " - Groups\n", + "- Channels\n", + "- Synapses\n", + "\n", + "Here is a code snippet which you will learn to understand in this tutorial:\n", + "```python\n", + "import jaxley as jx\n", + "from jaxley.channels import Na, K, Leak\n", + "from jaxley.synapses import IonotropicSynapse\n", + "from jaxley.connect import connect\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "\n", + "# Assembling different Modules into a Network\n", + "comp = jx.Compartment()\n", + "branch = jx.Branch(comp, ncomp=1)\n", + "cell = jx.Cell(branch, parents=[-1, 0, 0])\n", + "net = jx.Network([cell]*3)\n", + "\n", + "# Navigating and inspecting the Modules using Views\n", + "cell0 = net.cell(0)\n", + "cell0.nodes\n", + "\n", + "# How to group together parts of Modules\n", + "net.cell(1).add_to_group(\"cell1\")\n", + "\n", + "# inserting channels in the membrane\n", + "with net.cell(0) as cell0:\n", + " cell0.insert(Na())\n", + " cell0.insert(K())\n", + "\n", + "# connecting two cells using a Synapse\n", + "pre_comp = cell0.branch(1).comp(0)\n", + "post_comp = net.cell1.branch(0).comp(0)\n", + "\n", + "connect(pre_comp, post_comp)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "371479f9", + "metadata": {}, + "source": [ + "First, we import the relevant libraries:" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "08ded085", + "metadata": {}, + "outputs": [], + "source": [ + "from jax import config\n", + "config.update(\"jax_enable_x64\", True)\n", + "config.update(\"jax_platform_name\", \"cpu\")\n", + "\n", + "import jaxley as jx\n", + "from jaxley.channels import Na, K, Leak\n", + "from jaxley.synapses import IonotropicSynapse\n", + "from jaxley.connect import connect\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "id": "1676c025", + "metadata": {}, + "source": [ + "## Modules\n", + "\n", + "In Jaxley, we heavily rely on the concept of Modules to build biophyiscal models of neural systems at various scales.\n", + "Jaxley implements four types of Modules:\n", + "- `Compartment` \n", + "- `Branch` \n", + "- `Cell` \n", + "- `Network` \n", + "\n", + "Modules can be connected together to build increasingly detailed and complex models. `Compartment` -> `Branch` -> `Cell` -> `Network`." + ] + }, + { + "cell_type": "markdown", + "id": "a4f282da", + "metadata": {}, + "source": [ + "`Compartment`s are the atoms of biophysical models in Jaxley. All mechanisms and synaptic connections live on the level of `Compartment`s and can already be simulated using `jx.integrate` on their own. Everything you do in Jaxley starts with a `Compartment`." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e971f15c", + "metadata": {}, + "outputs": [], + "source": [ + "comp = jx.Compartment() # single compartment model." + ] + }, + { + "cell_type": "markdown", + "id": "da4eac1d", + "metadata": {}, + "source": [ + "Mutliple `Compartments` can be connected together to form longer, linear cables, which we call `Branch`es and are equivalent to sections in `NEURON`." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ec10bf01", + "metadata": {}, + "outputs": [], + "source": [ + "ncomp = 4\n", + "branch = jx.Branch([comp] * ncomp)" + ] + }, + { + "cell_type": "markdown", + "id": "9b299579", + "metadata": {}, + "source": [ + "In order to construct cell morphologies in Jaxley, multiple `Branches` can to be connected together as a `Cell`:" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ded94f2d", + "metadata": {}, + "outputs": [], + "source": [ + "# -1 indicates that the first branch has no parent branch.\n", + "# The other two branches both have the 0-eth branch as their parent.\n", + "parents = [-1, 0, 0]\n", + "cell = jx.Cell([branch] * len(parents), parents)" + ] + }, + { + "cell_type": "markdown", + "id": "717fee25", + "metadata": {}, + "source": [ + "Finally, several `Cell`s can be grouped together to form a `Network`, which can than be connected together using `Synpase`s." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "1944ddc9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2, 6, 24)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ncells = 2\n", + "net = jx.Network([cell]*ncells)\n", + "\n", + "net.shape # shows you the num_cells, num_branches, num_comps" + ] + }, + { + "cell_type": "markdown", + "id": "a4cdb4c1", + "metadata": {}, + "source": [ + "Every module tracks information about its current state and parameters in two Dataframes called `nodes` and `edges`.\n", + "`nodes` contains all the information that we associate with compartments in the model (each row corresponds to one compartment) and `edges` tracks all the information relevant to synapses.\n", + "\n", + "This means that you can easily keep track of the current state of your `Module` and how it changes at all times." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f5a13fb0", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
local_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevglobal_cell_indexglobal_branch_indexglobal_comp_indexcontrolled_by_param
000010.01.05000.01.0-70.00000
100110.01.05000.01.0-70.00010
200210.01.05000.01.0-70.00020
300310.01.05000.01.0-70.00030
401010.01.05000.01.0-70.00140
501110.01.05000.01.0-70.00150
601210.01.05000.01.0-70.00160
701310.01.05000.01.0-70.00170
802010.01.05000.01.0-70.00280
902110.01.05000.01.0-70.00290
1002210.01.05000.01.0-70.002100
1102310.01.05000.01.0-70.002110
1210010.01.05000.01.0-70.013120
1310110.01.05000.01.0-70.013130
1410210.01.05000.01.0-70.013140
1510310.01.05000.01.0-70.013150
1611010.01.05000.01.0-70.014160
1711110.01.05000.01.0-70.014170
1811210.01.05000.01.0-70.014180
1911310.01.05000.01.0-70.014190
2012010.01.05000.01.0-70.015200
2112110.01.05000.01.0-70.015210
2212210.01.05000.01.0-70.015220
2312310.01.05000.01.0-70.015230
\n", + "
" + ], + "text/plain": [ + " local_cell_index local_branch_index local_comp_index length radius \\\n", + "0 0 0 0 10.0 1.0 \n", + "1 0 0 1 10.0 1.0 \n", + "2 0 0 2 10.0 1.0 \n", + "3 0 0 3 10.0 1.0 \n", + "4 0 1 0 10.0 1.0 \n", + "5 0 1 1 10.0 1.0 \n", + "6 0 1 2 10.0 1.0 \n", + "7 0 1 3 10.0 1.0 \n", + "8 0 2 0 10.0 1.0 \n", + "9 0 2 1 10.0 1.0 \n", + "10 0 2 2 10.0 1.0 \n", + "11 0 2 3 10.0 1.0 \n", + "12 1 0 0 10.0 1.0 \n", + "13 1 0 1 10.0 1.0 \n", + "14 1 0 2 10.0 1.0 \n", + "15 1 0 3 10.0 1.0 \n", + "16 1 1 0 10.0 1.0 \n", + "17 1 1 1 10.0 1.0 \n", + "18 1 1 2 10.0 1.0 \n", + "19 1 1 3 10.0 1.0 \n", + "20 1 2 0 10.0 1.0 \n", + "21 1 2 1 10.0 1.0 \n", + "22 1 2 2 10.0 1.0 \n", + "23 1 2 3 10.0 1.0 \n", + "\n", + " axial_resistivity capacitance v global_cell_index \\\n", + "0 5000.0 1.0 -70.0 0 \n", + "1 5000.0 1.0 -70.0 0 \n", + "2 5000.0 1.0 -70.0 0 \n", + "3 5000.0 1.0 -70.0 0 \n", + "4 5000.0 1.0 -70.0 0 \n", + "5 5000.0 1.0 -70.0 0 \n", + "6 5000.0 1.0 -70.0 0 \n", + "7 5000.0 1.0 -70.0 0 \n", + "8 5000.0 1.0 -70.0 0 \n", + "9 5000.0 1.0 -70.0 0 \n", + "10 5000.0 1.0 -70.0 0 \n", + "11 5000.0 1.0 -70.0 0 \n", + "12 5000.0 1.0 -70.0 1 \n", + "13 5000.0 1.0 -70.0 1 \n", + "14 5000.0 1.0 -70.0 1 \n", + "15 5000.0 1.0 -70.0 1 \n", + "16 5000.0 1.0 -70.0 1 \n", + "17 5000.0 1.0 -70.0 1 \n", + "18 5000.0 1.0 -70.0 1 \n", + "19 5000.0 1.0 -70.0 1 \n", + "20 5000.0 1.0 -70.0 1 \n", + "21 5000.0 1.0 -70.0 1 \n", + "22 5000.0 1.0 -70.0 1 \n", + "23 5000.0 1.0 -70.0 1 \n", + "\n", + " global_branch_index global_comp_index controlled_by_param \n", + "0 0 0 0 \n", + "1 0 1 0 \n", + "2 0 2 0 \n", + "3 0 3 0 \n", + "4 1 4 0 \n", + "5 1 5 0 \n", + "6 1 6 0 \n", + "7 1 7 0 \n", + "8 2 8 0 \n", + "9 2 9 0 \n", + "10 2 10 0 \n", + "11 2 11 0 \n", + "12 3 12 0 \n", + "13 3 13 0 \n", + "14 3 14 0 \n", + "15 3 15 0 \n", + "16 4 16 0 \n", + "17 4 17 0 \n", + "18 4 18 0 \n", + "19 4 19 0 \n", + "20 5 20 0 \n", + "21 5 21 0 \n", + "22 5 22 0 \n", + "23 5 23 0 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "fa4e353c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
global_edge_indexglobal_pre_comp_indexglobal_post_comp_indexpre_locspost_locstypetype_ind
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [global_edge_index, global_pre_comp_index, global_post_comp_index, pre_locs, post_locs, type, type_ind]\n", + "Index: []" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.edges.head() # this is currently empty since we have not made any connections yet" + ] + }, + { + "cell_type": "markdown", + "id": "43c42d43", + "metadata": {}, + "source": [ + "## Views" + ] + }, + { + "cell_type": "markdown", + "id": "942ecf64", + "metadata": {}, + "source": [ + "Since these `Module`s can become very complex, Jaxley utilizes so called `View`s to make working with `Module`s easy and intuitive. \n", + "\n", + "The simplest way to navigate Modules is by navigating them via the hierachy that we introduced above. A `View` is what you get when you index into the module. For example, for a `Network`:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "3885678c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "View with 0 different channels. Use `.nodes` for details." + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.cell(0)" + ] + }, + { + "cell_type": "markdown", + "id": "82357af7", + "metadata": {}, + "source": [ + "Views behave very similarly to `Module`s, i.e. the `cell(0)` (the 0th cell of the network) behaves like the `cell` we instantiated earlier. As such, `cell(0)` also has a `nodes` attribute, which keeps track of it's part of the network:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c272cecb", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
local_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevglobal_cell_indexglobal_branch_indexglobal_comp_indexcontrolled_by_param
000010.01.05000.01.0-70.00000
100110.01.05000.01.0-70.00010
200210.01.05000.01.0-70.00020
300310.01.05000.01.0-70.00030
401010.01.05000.01.0-70.00140
501110.01.05000.01.0-70.00150
601210.01.05000.01.0-70.00160
701310.01.05000.01.0-70.00170
802010.01.05000.01.0-70.00280
902110.01.05000.01.0-70.00290
1002210.01.05000.01.0-70.002100
1102310.01.05000.01.0-70.002110
\n", + "
" + ], + "text/plain": [ + " local_cell_index local_branch_index local_comp_index length radius \\\n", + "0 0 0 0 10.0 1.0 \n", + "1 0 0 1 10.0 1.0 \n", + "2 0 0 2 10.0 1.0 \n", + "3 0 0 3 10.0 1.0 \n", + "4 0 1 0 10.0 1.0 \n", + "5 0 1 1 10.0 1.0 \n", + "6 0 1 2 10.0 1.0 \n", + "7 0 1 3 10.0 1.0 \n", + "8 0 2 0 10.0 1.0 \n", + "9 0 2 1 10.0 1.0 \n", + "10 0 2 2 10.0 1.0 \n", + "11 0 2 3 10.0 1.0 \n", + "\n", + " axial_resistivity capacitance v global_cell_index \\\n", + "0 5000.0 1.0 -70.0 0 \n", + "1 5000.0 1.0 -70.0 0 \n", + "2 5000.0 1.0 -70.0 0 \n", + "3 5000.0 1.0 -70.0 0 \n", + "4 5000.0 1.0 -70.0 0 \n", + "5 5000.0 1.0 -70.0 0 \n", + "6 5000.0 1.0 -70.0 0 \n", + "7 5000.0 1.0 -70.0 0 \n", + "8 5000.0 1.0 -70.0 0 \n", + "9 5000.0 1.0 -70.0 0 \n", + "10 5000.0 1.0 -70.0 0 \n", + "11 5000.0 1.0 -70.0 0 \n", + "\n", + " global_branch_index global_comp_index controlled_by_param \n", + "0 0 0 0 \n", + "1 0 1 0 \n", + "2 0 2 0 \n", + "3 0 3 0 \n", + "4 1 4 0 \n", + "5 1 5 0 \n", + "6 1 6 0 \n", + "7 1 7 0 \n", + "8 2 8 0 \n", + "9 2 9 0 \n", + "10 2 10 0 \n", + "11 2 11 0 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.cell(0).nodes" + ] + }, + { + "cell_type": "markdown", + "id": "083f8351", + "metadata": {}, + "source": [ + "Let's use `View`s to visualize only parts of the `Network`. Before we do that, we create x, y, and z coordinates for the `Network`:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "268e253a", + "metadata": {}, + "outputs": [], + "source": [ + "# Compute xyz coordinates of the cells.\n", + "net.compute_xyz()\n", + "\n", + "# Move cells (since they are placed on top of each other by default).\n", + "net.cell(0).move(y=30)" + ] + }, + { + "cell_type": "markdown", + "id": "7fda5d83", + "metadata": {}, + "source": [ + "We can now visualize the entire `net` (i.e., the entire `Module`) with the `.vis()` method..." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "632192d3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# We can use the vis function to visualize Modules.\n", + "fig, ax = plt.subplots(1, 1, figsize=(3,3))\n", + "net.vis(ax=ax)" + ] + }, + { + "cell_type": "markdown", + "id": "37fafc71", + "metadata": {}, + "source": [ + "...but we can also create a `View` to visualize only parts of the `net`:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "14a4e51a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# ... and Views\n", + "fig, ax = plt.subplots(1,1, figsize=(3,3))\n", + "net.cell(0).vis(ax=ax, col=\"blue\") # View of the 0th cell of the network\n", + "net.cell(1).vis(ax=ax, col=\"red\") # View of the 1st cell of the network\n", + "\n", + "net.cell(0).branch(0).vis(ax=ax, col=\"green\") # View of the 1st branch of the 0th cell of the network\n", + "net.cell(1).branch(1).comp(1).vis(ax=ax, col=\"black\", type=\"scatter\") # View of the 0th comp of the 1st branch of the 0th cell of the network" + ] + }, + { + "cell_type": "markdown", + "id": "1d20882d", + "metadata": {}, + "source": [ + "### How to create `View`s" + ] + }, + { + "cell_type": "markdown", + "id": "857c2def", + "metadata": {}, + "source": [ + "Above, we used `net.cell(0)` to generate a `View` of the 0-eth cell. `Jaxley` supports many ways of performing such indexing:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "728f6eb0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "View with 0 different channels. Use `.nodes` for details." + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# several types of indices are supported (lists, ranges, ...)\n", + "net.cell([0,1]).branch(\"all\").comp(0) # View of all 0th comps of all branches of cell 0 and 1\n", + "\n", + "branch.loc(0.1) # Equivalent to `NEURON`s `loc`. Assumes branches are continous from 0-1.\n", + "\n", + "net[0,0,0] # Modules/Views can also be lazily indexed\n", + "\n", + "cell0 = net.cell(0) # Views can be assigned to variables and only track the parts of the Module they belong to\n", + "cell0.branch(1).comp(0) # Views can be continuely indexed" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "fe4dda8e", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
local_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevxyzglobal_cell_indexglobal_branch_indexglobal_comp_indexcontrolled_by_param
000010.01.05000.01.0-70.05.00000030.0000000.00000
100110.01.05000.01.0-70.015.00000030.0000000.00010
200210.01.05000.01.0-70.025.00000030.0000000.00020
300310.01.05000.01.0-70.035.00000030.0000000.00030
401010.01.05000.01.0-70.044.85071328.7873220.00140
501110.01.05000.01.0-70.054.55213826.3619660.00150
601210.01.05000.01.0-70.064.25356323.9366090.00160
701310.01.05000.01.0-70.073.95498821.5112530.00170
802010.01.05000.01.0-70.044.85071331.2126780.00280
902110.01.05000.01.0-70.054.55213833.6380340.00290
1002210.01.05000.01.0-70.064.25356336.0633910.002100
1102310.01.05000.01.0-70.073.95498838.4887470.002110
\n", + "
" + ], + "text/plain": [ + " local_cell_index local_branch_index local_comp_index length radius \\\n", + "0 0 0 0 10.0 1.0 \n", + "1 0 0 1 10.0 1.0 \n", + "2 0 0 2 10.0 1.0 \n", + "3 0 0 3 10.0 1.0 \n", + "4 0 1 0 10.0 1.0 \n", + "5 0 1 1 10.0 1.0 \n", + "6 0 1 2 10.0 1.0 \n", + "7 0 1 3 10.0 1.0 \n", + "8 0 2 0 10.0 1.0 \n", + "9 0 2 1 10.0 1.0 \n", + "10 0 2 2 10.0 1.0 \n", + "11 0 2 3 10.0 1.0 \n", + "\n", + " axial_resistivity capacitance v x y z \\\n", + "0 5000.0 1.0 -70.0 5.000000 30.000000 0.0 \n", + "1 5000.0 1.0 -70.0 15.000000 30.000000 0.0 \n", + "2 5000.0 1.0 -70.0 25.000000 30.000000 0.0 \n", + "3 5000.0 1.0 -70.0 35.000000 30.000000 0.0 \n", + "4 5000.0 1.0 -70.0 44.850713 28.787322 0.0 \n", + "5 5000.0 1.0 -70.0 54.552138 26.361966 0.0 \n", + "6 5000.0 1.0 -70.0 64.253563 23.936609 0.0 \n", + "7 5000.0 1.0 -70.0 73.954988 21.511253 0.0 \n", + "8 5000.0 1.0 -70.0 44.850713 31.212678 0.0 \n", + "9 5000.0 1.0 -70.0 54.552138 33.638034 0.0 \n", + "10 5000.0 1.0 -70.0 64.253563 36.063391 0.0 \n", + "11 5000.0 1.0 -70.0 73.954988 38.488747 0.0 \n", + "\n", + " global_cell_index global_branch_index global_comp_index \\\n", + "0 0 0 0 \n", + "1 0 0 1 \n", + "2 0 0 2 \n", + "3 0 0 3 \n", + "4 0 1 4 \n", + "5 0 1 5 \n", + "6 0 1 6 \n", + "7 0 1 7 \n", + "8 0 2 8 \n", + "9 0 2 9 \n", + "10 0 2 10 \n", + "11 0 2 11 \n", + "\n", + " controlled_by_param \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 \n", + "9 0 \n", + "10 0 \n", + "11 0 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell0.nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "012b9612", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(2, 6, 24)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.shape" + ] + }, + { + "cell_type": "markdown", + "id": "42d8ffdd", + "metadata": {}, + "source": [ + "_Note: In case you need even more flexibility in how you select parts of a Module, Jaxley provides a `select` method, to give full control over the exact parts of the `nodes` and `edges` that are part of a `View`. On examples of how this can be used, see the [tutorial on advanced indexing](https://jaxley.readthedocs.io/en/latest/tutorials/09_advanced_indexing.html)._" + ] + }, + { + "cell_type": "markdown", + "id": "cf68baf6", + "metadata": {}, + "source": [ + "You can also iterate over networks, cells, and branches:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "a78d2a6c", + "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", + "
radiuslength
00.763057100.0
10.33488210.0
20.805696100.0
30.717921100.0
40.07956910.0
\n", + "
" + ], + "text/plain": [ + " radius length\n", + "0 0.763057 100.0\n", + "1 0.334882 10.0\n", + "2 0.805696 100.0\n", + "3 0.717921 100.0\n", + "4 0.079569 10.0" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# We set the radiuses to random values...\n", + "radiuses = np.random.rand((24))\n", + "net.set(\"radius\", radiuses)\n", + "\n", + "# ...and then we set the length to 100.0 um if the radius is >0.5.\n", + "for cell in net:\n", + " for branch in cell:\n", + " for comp in branch:\n", + " if comp.nodes.iloc[0][\"radius\"] > 0.5:\n", + " comp.set(\"length\", 100.0)\n", + "\n", + "# Show the first five compartments:\n", + "net.nodes[[\"radius\", \"length\"]][:5]" + ] + }, + { + "cell_type": "markdown", + "id": "96cb79f6", + "metadata": {}, + "source": [ + "Finally, you can also use `View`s in a context manager:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "859e1f6a", + "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", + "
radiuslength
02.0000002.5
12.0000002.5
22.0000002.5
32.0000002.5
40.07956910.0
\n", + "
" + ], + "text/plain": [ + " radius length\n", + "0 2.000000 2.5\n", + "1 2.000000 2.5\n", + "2 2.000000 2.5\n", + "3 2.000000 2.5\n", + "4 0.079569 10.0" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "with net.cell(0).branch(0) as branch0:\n", + " branch0.set(\"radius\", 2.0)\n", + " branch0.set(\"length\", 2.5)\n", + " \n", + "# Show the first five compartments.\n", + "net.nodes[[\"radius\", \"length\"]][:5]" + ] + }, + { + "cell_type": "markdown", + "id": "90151ce8", + "metadata": {}, + "source": [ + "## Channels" + ] + }, + { + "cell_type": "markdown", + "id": "44a31d9f", + "metadata": {}, + "source": [ + "The `Module`s that we have created above will not do anything interesting, since by default Jaxley initializes them without any mechanisms in the membrane. To change this, we have to insert channels into the membrane. For this purpose `Jaxley` implements `Channel`s that can be inserted into any compartment using the `insert` method of a `Module` or a `View`:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "0d26c451", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
local_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevglobal_cell_indexglobal_branch_indexglobal_comp_indexcontrolled_by_paramxyzLeakLeak_gLeakLeak_eLeak
00002.52.0000005000.01.0-70.000005.00000030.0000000.0True0.0001-70.0
10012.52.0000005000.01.0-70.0001015.00000030.0000000.0True0.0001-70.0
20022.52.0000005000.01.0-70.0002025.00000030.0000000.0True0.0001-70.0
30032.52.0000005000.01.0-70.0003035.00000030.0000000.0True0.0001-70.0
401010.00.0795695000.01.0-70.0014044.85071328.7873220.0True0.0001-70.0
\n", + "
" + ], + "text/plain": [ + " local_cell_index local_branch_index local_comp_index length radius \\\n", + "0 0 0 0 2.5 2.000000 \n", + "1 0 0 1 2.5 2.000000 \n", + "2 0 0 2 2.5 2.000000 \n", + "3 0 0 3 2.5 2.000000 \n", + "4 0 1 0 10.0 0.079569 \n", + "\n", + " axial_resistivity capacitance v global_cell_index \\\n", + "0 5000.0 1.0 -70.0 0 \n", + "1 5000.0 1.0 -70.0 0 \n", + "2 5000.0 1.0 -70.0 0 \n", + "3 5000.0 1.0 -70.0 0 \n", + "4 5000.0 1.0 -70.0 0 \n", + "\n", + " global_branch_index global_comp_index controlled_by_param x \\\n", + "0 0 0 0 5.000000 \n", + "1 0 1 0 15.000000 \n", + "2 0 2 0 25.000000 \n", + "3 0 3 0 35.000000 \n", + "4 1 4 0 44.850713 \n", + "\n", + " y z Leak Leak_gLeak Leak_eLeak \n", + "0 30.000000 0.0 True 0.0001 -70.0 \n", + "1 30.000000 0.0 True 0.0001 -70.0 \n", + "2 30.000000 0.0 True 0.0001 -70.0 \n", + "3 30.000000 0.0 True 0.0001 -70.0 \n", + "4 28.787322 0.0 True 0.0001 -70.0 " + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# insert a Leak channel into all compartments in the Module.\n", + "net.insert(Leak())\n", + "net.nodes.head() # Channel parameters are now also added to `nodes`." + ] + }, + { + "cell_type": "markdown", + "id": "ab5acd51", + "metadata": {}, + "source": [ + "This is also were `View`s come in handy, as it allows to easily target the insertion of channels to specific compartments." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "e2a1b17f", + "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", + "
global_cell_indexNaKLeak
00TrueTrueTrue
121FalseFalseTrue
\n", + "
" + ], + "text/plain": [ + " global_cell_index Na K Leak\n", + "0 0 True True True\n", + "12 1 False False True" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# inserting several channels into parts of the network\n", + "with net.cell(0) as cell0:\n", + " cell0.insert(Na())\n", + " cell0.insert(K())\n", + "\n", + "# # The above is equivalent to:\n", + "# net.cell(0).insert(Na())\n", + "# net.cell(0).insert(K())\n", + "\n", + "# K and Na channels were only insert into cell 0\n", + "net.cell(\"all\").branch(0).comp(0).nodes[[\"global_cell_index\", \"Na\", \"K\", \"Leak\"]]" + ] + }, + { + "cell_type": "markdown", + "id": "24ec120a", + "metadata": {}, + "source": [ + "## Synapses" + ] + }, + { + "cell_type": "markdown", + "id": "d947ba43", + "metadata": {}, + "source": [ + "To connect different cells together, Jaxley implements a `connect` method, that can be used to couple 2 compartments together using a `Synapse`. Synapses in Jaxley work only on the compartment level, that means to be able to connect two cells, you need to specify the exact compartments on a given cell to make the connections between. Below is an example of this:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "a1eed847", + "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", + "
global_edge_indexglobal_pre_comp_indexglobal_post_comp_indextypetype_indpre_locspost_locsIonotropicSynapse_gSIonotropicSynapse_e_synIonotropicSynapse_k_minusIonotropicSynapse_scontrolled_by_param
00412IonotropicSynapse00.1250.1250.00010.00.0250.20
\n", + "
" + ], + "text/plain": [ + " global_edge_index global_pre_comp_index global_post_comp_index \\\n", + "0 0 4 12 \n", + "\n", + " type type_ind pre_locs post_locs IonotropicSynapse_gS \\\n", + "0 IonotropicSynapse 0 0.125 0.125 0.0001 \n", + "\n", + " IonotropicSynapse_e_syn IonotropicSynapse_k_minus IonotropicSynapse_s \\\n", + "0 0.0 0.025 0.2 \n", + "\n", + " controlled_by_param \n", + "0 0 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# connecting two cells using a Synapse\n", + "pre_comp = cell0.branch(1).comp(0)\n", + "post_comp = net.cell(1).branch(0).comp(0)\n", + "\n", + "connect(pre_comp, post_comp, IonotropicSynapse())\n", + "\n", + "net.edges" + ] + }, + { + "cell_type": "markdown", + "id": "1c603a54", + "metadata": {}, + "source": [ + "As you can see above, now the `edges` dataframe is also updated with the information of the newly added synapse. " + ] + }, + { + "cell_type": "markdown", + "id": "749de44c", + "metadata": {}, + "source": [ + "Congrats! You should now have an intuitive understand of how to use Jaxley's API to construct, navigate and manipulate neuron models." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/tutorials/01_morph_neurons.ipynb b/docs/tutorials/01_morph_neurons.ipynb index 347f52c2..e029e767 100644 --- a/docs/tutorials/01_morph_neurons.ipynb +++ b/docs/tutorials/01_morph_neurons.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "cd8655a5", + "id": "9f7be2a4", "metadata": {}, "source": [ "# Basics of Jaxley" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "b3aa8948", + "id": "2db89a9f", "metadata": {}, "source": [ "In this tutorial, you will learn how to:\n", @@ -30,7 +30,7 @@ "\n", "# Build the cell.\n", "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=4)\n", + "branch = jx.Branch(comp, ncomp=2)\n", "cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1])\n", "\n", "# Insert channels.\n", @@ -38,6 +38,9 @@ "cell.branch(0).insert(Na())\n", "cell.branch(0).insert(K())\n", "\n", + "# Change parameters.\n", + "cell.set(\"axial_resistivity\", 200.0)\n", + "\n", "# Visualize the morphology.\n", "cell.compute_xyz()\n", "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", @@ -51,14 +54,14 @@ "cell.branch(0).loc(0.0).record(\"v\")\n", "\n", "# Simulate and plot.\n", - "v = jx.integrate(cell)\n", + "v = jx.integrate(cell, delta_t=0.025)\n", "plt.plot(v.T)\n", "```" ] }, { "cell_type": "markdown", - "id": "a312b876", + "id": "6c8a0eb9", "metadata": {}, "source": [ "First, we import the relevant libraries:" @@ -66,8 +69,8 @@ }, { "cell_type": "code", - "execution_count": 69, - "id": "61572ea9", + "execution_count": 1, + "id": "f8cb454b", "metadata": {}, "outputs": [], "source": [ @@ -88,15 +91,15 @@ }, { "cell_type": "markdown", - "id": "8b636c0e", + "id": "d717ef05", "metadata": {}, "source": [ - "We will now build our first cell in `Jaxley`. You have two options to do this: you can either build a cell bottom-up by defining the morphology yourselve, or you can [load cells from SWC files]().\n" + "We will now build our first cell in `Jaxley`. You have two options to do this: you can either build a cell bottom-up by defining the morphology yourselve, or you can [load cells from SWC files](https://jaxley.readthedocs.io/en/latest/tutorials/08_importing_morphologies.html).\n" ] }, { "cell_type": "markdown", - "id": "7f749b24", + "id": "3883d5aa", "metadata": {}, "source": [ "### Define the cell from scratch\n", @@ -106,18 +109,18 @@ }, { "cell_type": "code", - "execution_count": 70, - "id": "dfd25b57", + "execution_count": 6, + "id": "1eba83a8", "metadata": {}, "outputs": [], "source": [ "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=4)" + "branch = jx.Branch(comp, ncomp=2)" ] }, { "cell_type": "markdown", - "id": "be5ba19f", + "id": "acfbf1ab", "metadata": {}, "source": [ "Next, we can assemble branches into a cell. To do so, we have to define for each branch what its parent branch is. A `-1` entry means that this branch does not have a parent." @@ -125,8 +128,8 @@ }, { "cell_type": "code", - "execution_count": 81, - "id": "5cc4d4cf", + "execution_count": 7, + "id": "4c26d47d", "metadata": {}, "outputs": [], "source": [ @@ -136,19 +139,29 @@ }, { "cell_type": "markdown", - "id": "95ec99af", + "id": "efc170cc", + "metadata": {}, + "source": [ + "To learn more about `Compartment`s, `Branch`es, and `Cell`s, see [this tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/00_jaxley_api.html)." + ] + }, + { + "cell_type": "markdown", + "id": "60d62a97", "metadata": {}, "source": [ "### Read the cell from an SWC file\n", "\n", "Alternatively, you could also load cells from SWC with \n", "\n", - "```cell = jx.read_swc(fname, nseg=4)```." + "```cell = jx.read_swc(fname, ncomp=4)```\n", + "\n", + "Details on handling SWC files can be found in [this tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/08_importing_morphologies.html)." ] }, { "cell_type": "markdown", - "id": "1b6e6518", + "id": "c8afc7cf", "metadata": {}, "source": [ "### Visualize the cells" @@ -156,7 +169,7 @@ }, { "cell_type": "markdown", - "id": "2d03b9f7", + "id": "a3fbe809", "metadata": {}, "source": [ "Cells can be visualized as follows:" @@ -164,13 +177,13 @@ }, { "cell_type": "code", - "execution_count": 82, - "id": "1a3105f7", + "execution_count": 9, + "id": "447c99bd", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -188,7 +201,7 @@ }, { "cell_type": "markdown", - "id": "fcc68336", + "id": "fe86583b", "metadata": {}, "source": [ "### Insert mechanisms\n", @@ -198,8 +211,8 @@ }, { "cell_type": "code", - "execution_count": 73, - "id": "c854dd82", + "execution_count": 10, + "id": "bdddba0e", "metadata": {}, "outputs": [], "source": [ @@ -210,21 +223,529 @@ }, { "cell_type": "markdown", - "id": "0d37dd35", + "id": "dbc08017", "metadata": {}, "source": [ - "The easiest way to know which branch is the zero-eth branch (or, e.g., the zero-eth compartment of the zero-eth branch) is to plot it in a different color:" + "Once the cell is created, we can inspect its `.nodes` attribute which lists all properties of the cell:" ] }, { "cell_type": "code", - "execution_count": 74, - "id": "62e23f1d", + "execution_count": 11, + "id": "eae355bd", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
local_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevglobal_cell_indexglobal_branch_index...NaNa_gNaeNavtNa_mNa_hKK_gKeKK_n
000010.01.05000.01.0-70.000...True0.0550.0-60.00.20.2True0.005-90.00.2
100110.01.05000.01.0-70.000...True0.0550.0-60.00.20.2True0.005-90.00.2
201010.01.05000.01.0-70.001...FalseNaNNaNNaNNaNNaNFalseNaNNaNNaN
301110.01.05000.01.0-70.001...FalseNaNNaNNaNNaNNaNFalseNaNNaNNaN
402010.01.05000.01.0-70.002...FalseNaNNaNNaNNaNNaNFalseNaNNaNNaN
502110.01.05000.01.0-70.002...FalseNaNNaNNaNNaNNaNFalseNaNNaNNaN
603010.01.05000.01.0-70.003...FalseNaNNaNNaNNaNNaNFalseNaNNaNNaN
703110.01.05000.01.0-70.003...FalseNaNNaNNaNNaNNaNFalseNaNNaNNaN
804010.01.05000.01.0-70.004...FalseNaNNaNNaNNaNNaNFalseNaNNaNNaN
904110.01.05000.01.0-70.004...FalseNaNNaNNaNNaNNaNFalseNaNNaNNaN
\n", + "

10 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " local_cell_index local_branch_index local_comp_index length radius \\\n", + "0 0 0 0 10.0 1.0 \n", + "1 0 0 1 10.0 1.0 \n", + "2 0 1 0 10.0 1.0 \n", + "3 0 1 1 10.0 1.0 \n", + "4 0 2 0 10.0 1.0 \n", + "5 0 2 1 10.0 1.0 \n", + "6 0 3 0 10.0 1.0 \n", + "7 0 3 1 10.0 1.0 \n", + "8 0 4 0 10.0 1.0 \n", + "9 0 4 1 10.0 1.0 \n", + "\n", + " axial_resistivity capacitance v global_cell_index \\\n", + "0 5000.0 1.0 -70.0 0 \n", + "1 5000.0 1.0 -70.0 0 \n", + "2 5000.0 1.0 -70.0 0 \n", + "3 5000.0 1.0 -70.0 0 \n", + "4 5000.0 1.0 -70.0 0 \n", + "5 5000.0 1.0 -70.0 0 \n", + "6 5000.0 1.0 -70.0 0 \n", + "7 5000.0 1.0 -70.0 0 \n", + "8 5000.0 1.0 -70.0 0 \n", + "9 5000.0 1.0 -70.0 0 \n", + "\n", + " global_branch_index ... Na Na_gNa eNa vt Na_m Na_h K \\\n", + "0 0 ... True 0.05 50.0 -60.0 0.2 0.2 True \n", + "1 0 ... True 0.05 50.0 -60.0 0.2 0.2 True \n", + "2 1 ... False NaN NaN NaN NaN NaN False \n", + "3 1 ... False NaN NaN NaN NaN NaN False \n", + "4 2 ... False NaN NaN NaN NaN NaN False \n", + "5 2 ... False NaN NaN NaN NaN NaN False \n", + "6 3 ... False NaN NaN NaN NaN NaN False \n", + "7 3 ... False NaN NaN NaN NaN NaN False \n", + "8 4 ... False NaN NaN NaN NaN NaN False \n", + "9 4 ... False NaN NaN NaN NaN NaN False \n", + "\n", + " K_gK eK K_n \n", + "0 0.005 -90.0 0.2 \n", + "1 0.005 -90.0 0.2 \n", + "2 NaN NaN NaN \n", + "3 NaN NaN NaN \n", + "4 NaN NaN NaN \n", + "5 NaN NaN NaN \n", + "6 NaN NaN NaN \n", + "7 NaN NaN NaN \n", + "8 NaN NaN NaN \n", + "9 NaN NaN NaN \n", + "\n", + "[10 rows x 25 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell.nodes" + ] + }, + { + "cell_type": "markdown", + "id": "a9506866", + "metadata": {}, + "source": [ + "_Note that `Jaxley` uses the same units as the `NEURON` simulator, which are listed [here](https://www.neuron.yale.edu/neuron/static/docs/units/unitchart.html)._\n", + "\n", + "You can also inspect just parts of the `cell`, for example its 1st branch:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "6312e227", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
local_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevLeakLeak_gLeak...Na_mNa_hKK_gKeKK_nglobal_cell_indexglobal_branch_indexglobal_comp_indexcontrolled_by_param
200010.01.05000.01.0-70.0True0.0001...NaNNaNFalseNaNNaNNaN0121
300110.01.05000.01.0-70.0True0.0001...NaNNaNFalseNaNNaNNaN0131
\n", + "

2 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " local_cell_index local_branch_index local_comp_index length radius \\\n", + "2 0 0 0 10.0 1.0 \n", + "3 0 0 1 10.0 1.0 \n", + "\n", + " axial_resistivity capacitance v Leak Leak_gLeak ... Na_m Na_h \\\n", + "2 5000.0 1.0 -70.0 True 0.0001 ... NaN NaN \n", + "3 5000.0 1.0 -70.0 True 0.0001 ... NaN NaN \n", + "\n", + " K K_gK eK K_n global_cell_index global_branch_index \\\n", + "2 False NaN NaN NaN 0 1 \n", + "3 False NaN NaN NaN 0 1 \n", + "\n", + " global_comp_index controlled_by_param \n", + "2 2 1 \n", + "3 3 1 \n", + "\n", + "[2 rows x 25 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell.branch(1).nodes" + ] + }, + { + "cell_type": "markdown", + "id": "e9425ae3", + "metadata": {}, + "source": [ + "The easiest way to know which branch is the 1st branch (or, e.g., the zero-eth compartment of the 1st branch) is to plot it in a different color:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "9eefce4d", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", "text/plain": [ "
" ] @@ -236,29 +757,217 @@ "source": [ "fig, ax = plt.subplots(1, 1, figsize=(4, 2))\n", "_ = cell.vis(ax=ax, col=\"k\")\n", - "_ = cell.branch(0).vis(ax=ax, col=\"r\")\n", - "_ = cell.branch(0).loc(0.0).vis(ax=ax, col=\"b\")" + "_ = cell.branch(1).vis(ax=ax, col=\"r\")\n", + "_ = cell.branch(1).comp(1).vis(ax=ax, col=\"b\")" + ] + }, + { + "cell_type": "markdown", + "id": "8b0459c4", + "metadata": {}, + "source": [ + "More background and features on indexing as `cell.branch(0)` is in [this tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/00_jaxley_api.html)." + ] + }, + { + "cell_type": "markdown", + "id": "611aa6fb", + "metadata": {}, + "source": [ + "### Change parameters of the cell\n", + "\n", + "You can change properties of the cell with the `.set()` method:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "d8b8e544", + "metadata": {}, + "outputs": [], + "source": [ + "cell.branch(1).set(\"axial_resistivity\", 200.0)" + ] + }, + { + "cell_type": "markdown", + "id": "08892ab8", + "metadata": {}, + "source": [ + "And we can again inspect the `.nodes` to make sure that the axial resistivity indeed changed:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "6d3f14aa", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
local_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevLeakLeak_gLeak...Na_mNa_hKK_gKeKK_nglobal_cell_indexglobal_branch_indexglobal_comp_indexcontrolled_by_param
200010.01.0200.01.0-70.0True0.0001...NaNNaNFalseNaNNaNNaN0121
300110.01.0200.01.0-70.0True0.0001...NaNNaNFalseNaNNaNNaN0131
\n", + "

2 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " local_cell_index local_branch_index local_comp_index length radius \\\n", + "2 0 0 0 10.0 1.0 \n", + "3 0 0 1 10.0 1.0 \n", + "\n", + " axial_resistivity capacitance v Leak Leak_gLeak ... Na_m Na_h \\\n", + "2 200.0 1.0 -70.0 True 0.0001 ... NaN NaN \n", + "3 200.0 1.0 -70.0 True 0.0001 ... NaN NaN \n", + "\n", + " K K_gK eK K_n global_cell_index global_branch_index \\\n", + "2 False NaN NaN NaN 0 1 \n", + "3 False NaN NaN NaN 0 1 \n", + "\n", + " global_comp_index controlled_by_param \n", + "2 2 1 \n", + "3 3 1 \n", + "\n", + "[2 rows x 25 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell.branch(1).nodes" + ] + }, + { + "cell_type": "markdown", + "id": "005f1e20", + "metadata": {}, + "source": [ + "In a similar way, you can modify channel properties or initial states (units are again [here](https://www.neuron.yale.edu/neuron/static/docs/units/unitchart.html)):" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "a098f360", + "metadata": {}, + "outputs": [], + "source": [ + "cell.branch(0).set(\"K_gK\", 0.01) # modify potassium conductance.\n", + "cell.set(\"v\", -65.0) # modify initial voltage." ] }, { "cell_type": "markdown", - "id": "f858cdc8", + "id": "a08da8da", "metadata": {}, "source": [ "### Stimulate the cell\n", "\n", - "We next stimulate one of the compartments with a step current. For this, we first define the step current (all units are the same as for the `NEURON` simulator, which are listed [here](https://www.neuron.yale.edu/neuron/static/docs/units/unitchart.html)):" + "We next stimulate one of the compartments with a step current. For this, we first define the step current (units are again [here](https://www.neuron.yale.edu/neuron/static/docs/units/unitchart.html)):" ] }, { "cell_type": "code", - "execution_count": 75, - "id": "48dbfec8", + "execution_count": 18, + "id": "90d876b4", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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K7q7u/HAAw9Ar9dDr9fj4MGDeO2116DX6zE4OKh2iaMybdo0zJ071+fYnDlz0NnZqVJFwVdeXo5169bhiSeeQFpaGpYuXYpnnnkGDodD7dKCzpsrY5U5ERnkMTExyMzMhNPpVI55PB44nU7k5OSoWFnwCCFQWlqKvXv34oMPPkBycrLaJQXVww8/jE8++QTHjx9XXllZWViyZAmOHz+O6OhotUsclfnz59+2XPTMmTOYNWuWShUF39WrV2978k10dDQ8Ho9KFY2d5ORkmM1mn8zp7e3FkSNHgpM5o75cGqbq6uqEwWAQb7/9tjh58qRYuXKlmDx5snC5XGqXFhQ//vGPRVxcnGhqahL/+te/lNfVq1fVLm3MaGnVSktLi9Dr9eKll14SZ8+eFTt37hTjx48X77zzjtqlBU1xcbGYPn262L9/vzh37px49913RXx8vHjuuefULm1Erly5Itrb20V7e7sAILZs2SLa29vF+fPnhRBCbNy4UUyePFm899574sSJE2LRokUiOTlZXLt2bdS/O2KDXAghtm3bJmbOnCliYmJEdna2OHz4sNolBQ0Av6+33npL7dLGjJaCXAgh3n//fZGamioMBoNISUkRO3bsULukoOrt7RVlZWVi5syZwmg0im984xvi+eefF/39/WqXNiIffvih3//PFRcXCyFuLEHcsGGDMJlMwmAwiIcfflicPn06KL+b+5ETEYW5iJwjJyLSEgY5EVGYY5ATEYU5BjkRUZhjkBMRhTkGORFRmGOQExGFOQY5EVGYY5ATEYU5BjkRUZhjkBMRhbn/DxPfku5W/5z2AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -271,7 +980,7 @@ "dt = 0.025\n", "t_max = 10.0\n", "time_vec = np.arange(0, t_max+dt, dt)\n", - "current = jx.step_current(i_delay=1.0, i_dur=1.0, i_amp=0.1, delta_t=dt, t_max=t_max)\n", + "current = jx.step_current(i_delay=1.0, i_dur=2.0, i_amp=0.08, delta_t=dt, t_max=t_max)\n", "\n", "fig, ax = plt.subplots(1, 1, figsize=(4, 2))\n", "_ = plt.plot(time_vec, current)" @@ -279,7 +988,7 @@ }, { "cell_type": "markdown", - "id": "6a796301", + "id": "76534f64", "metadata": {}, "source": [ "We then stimulate one of the compartments of the cell with this step current:" @@ -287,8 +996,8 @@ }, { "cell_type": "code", - "execution_count": 76, - "id": "d923b695", + "execution_count": 19, + "id": "472309b3", "metadata": {}, "outputs": [ { @@ -306,7 +1015,7 @@ }, { "cell_type": "markdown", - "id": "71439b57", + "id": "bdbd193f", "metadata": {}, "source": [ "### Define recordings" @@ -314,7 +1023,7 @@ }, { "cell_type": "markdown", - "id": "a349c83e", + "id": "16881662", "metadata": {}, "source": [ "Next, you have to define where to record the voltage. In this case, we will record the voltage at two locations:" @@ -322,8 +1031,8 @@ }, { "cell_type": "code", - "execution_count": 77, - "id": "7694925f", + "execution_count": 20, + "id": "46107eb1", "metadata": {}, "outputs": [ { @@ -343,7 +1052,7 @@ }, { "cell_type": "markdown", - "id": "ba999e08", + "id": "1cd6625b", "metadata": {}, "source": [ "We can again visualize these locations to understand where we inserted recordings:" @@ -351,13 +1060,13 @@ }, { "cell_type": "code", - "execution_count": 78, - "id": "6b615f27", + "execution_count": 21, + "id": "74cb63b9", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -375,7 +1084,7 @@ }, { "cell_type": "markdown", - "id": "853c3037", + "id": "38f1cf41", "metadata": {}, "source": [ "### Simulate the cell response\n", @@ -385,8 +1094,8 @@ }, { "cell_type": "code", - "execution_count": 79, - "id": "89ff0bf9", + "execution_count": 22, + "id": "19e7805b", "metadata": {}, "outputs": [ { @@ -398,29 +1107,29 @@ } ], "source": [ - "voltages = jx.integrate(cell)\n", + "voltages = jx.integrate(cell, delta_t=dt)\n", "print(\"voltages.shape\", voltages.shape)" ] }, { "cell_type": "markdown", - "id": "4af3ec42", + "id": "bb99315b", "metadata": {}, "source": [ - "The `jx.integrate` function returns an array of shape `(num_recordings, num_timepoints). In our case, we inserted `2` recordings and we simulated for 10ms at a 0.025 time step, which leads to 402 time steps.\n", + "The `jx.integrate` function returns an array of shape `(num_recordings, num_timepoints)`. In our case, we inserted `2` recordings and we simulated for 10ms at a 0.025 time step, which leads to 402 time steps.\n", "\n", "We can now visualize the voltage response:" ] }, { "cell_type": "code", - "execution_count": 80, - "id": "e57436c7", + "execution_count": 23, + "id": "721ad2ef", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -437,7 +1146,7 @@ }, { "cell_type": "markdown", - "id": "a1e45233", + "id": "e8997a9b", "metadata": {}, "source": [ "At the location of the first recording (in blue) the cell spiked, whereas at the second recording, it did not. This makes sense because we only inserted sodium and potassium channels into the first branch, but not in the entire cell." @@ -445,10 +1154,10 @@ }, { "cell_type": "markdown", - "id": "3de28918", + "id": "dfed7c10", "metadata": {}, "source": [ - "Congrats! You have just run your first morphologically detailed neuron simulation in `Jaxley`. We suggest to continue by learning how to [build networks](https://jaxleyverse.github.io/jaxley/latest/tutorial/02_small_network/). If you are only interested in single cell simulations, you can directly jump to learning how to [modify parameters of your simulation](https://jaxleyverse.github.io/jaxley/latest/tutorial/03_setting_parameters/). If you want to simulate detailed morphologies from SWC files, checkout our tutorial on [working with detailed morphologies](https://jaxleyverse.github.io/jaxley/latest/tutorial/08_importing_morphologies/)." + "Congrats! You have just run your first morphologically detailed neuron simulation in `Jaxley`. We suggest to continue by learning how to [build networks](https://jaxley.readthedocs.io/en/latest/tutorials/02_small_network.html). If you are only interested in single cell simulations, you can directly jump to learning how to [speed up simulations](https://jaxley.readthedocs.io/en/latest/tutorials/04_jit_and_vmap.html). If you want to simulate detailed morphologies from SWC files, checkout our tutorial on [working with detailed morphologies](https://jaxley.readthedocs.io/en/latest/tutorials/08_importing_morphologies.html)." ] } ], diff --git a/docs/tutorials/02_small_network.ipynb b/docs/tutorials/02_small_network.ipynb index 402a2fec..84b3807e 100644 --- a/docs/tutorials/02_small_network.ipynb +++ b/docs/tutorials/02_small_network.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "597dfe2a-d5fe-4e3d-8fb5-bb415126b81a", + "id": "10cb8b05", "metadata": {}, "source": [ "# Network simulations in Jaxley" @@ -10,13 +10,14 @@ }, { "cell_type": "markdown", - "id": "c9db67ff-6334-4435-9092-e7c71ec71a93", + "id": "3149c330", "metadata": {}, "source": [ "In this tutorial, you will learn how to:\n", "\n", "- connect neurons into a network \n", "- visualize networks \n", + "- use the `.edges` attribute to inspect and change synaptic parameters\n", "\n", "Here is a code snippet which you will learn to understand in this tutorial:\n", "```python\n", @@ -35,6 +36,9 @@ " IonotropicSynapse(),\n", ")\n", "\n", + "# Change synaptic parameters.\n", + "net.select(edges=[0, 1]).set(\"IonotropicSynapse_gS\", 0.1) # nS\n", + "\n", "# Visualize the network.\n", "net.compute_xyz()\n", "fig, ax = plt.subplots(1, 1, figsize=(4, 4))\n", @@ -44,7 +48,7 @@ }, { "cell_type": "markdown", - "id": "7177950f-d702-4d8d-b69e-bfb06677037f", + "id": "7dd2ee98", "metadata": {}, "source": [ "In the previous tutorial, you learned how to build single cells with morphological detail, how to insert stimuli and recordings, and how to run a first simulation. In this tutorial, we will define networks of multiple cells and connect them with synapses. Let's get started:" @@ -52,8 +56,8 @@ }, { "cell_type": "code", - "execution_count": 132, - "id": "deb594f4", + "execution_count": 1, + "id": "c08d10cb", "metadata": {}, "outputs": [], "source": [ @@ -74,29 +78,29 @@ }, { "cell_type": "markdown", - "id": "f5cda6ff", + "id": "9c39dfef", "metadata": {}, "source": [ "### Define the network\n", "\n", - "First, we define a cell as you saw in the [previous tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/01_morph_neurons/)." + "First, we define a cell as you saw in the [previous tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/01_morph_neurons.html)." ] }, { "cell_type": "code", - "execution_count": 133, - "id": "e8be24c8-a582-4458-a286-5db94d225dd4", + "execution_count": 2, + "id": "3858f198", "metadata": {}, "outputs": [], "source": [ "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=4)\n", + "branch = jx.Branch(comp, ncomp=4)\n", "cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1, 2, 2])" ] }, { "cell_type": "markdown", - "id": "27e8dc14-4a71-40a5-b8d2-f54f6800e8d5", + "id": "9d3e84bc", "metadata": {}, "source": [ "We can assemble multiple cells into a network by using `jx.Network`, which takes a list of `jx.Cell`s. Here, we assemble 11 cells into a network:" @@ -104,8 +108,8 @@ }, { "cell_type": "code", - "execution_count": 134, - "id": "3d114f50-01a5-43ca-85e9-b00a02b20ed3", + "execution_count": 3, + "id": "a214b164", "metadata": {}, "outputs": [], "source": [ @@ -115,7 +119,7 @@ }, { "cell_type": "markdown", - "id": "bb4c09d2-c660-4ea0-b149-0c61810e03b3", + "id": "d8e091d5", "metadata": {}, "source": [ "At this point, we can already visualize this network:" @@ -123,13 +127,13 @@ }, { "cell_type": "code", - "execution_count": 135, - "id": "207e9dbf-311d-4cde-b270-dfa2085d0d95", + "execution_count": 4, + "id": "d184c739", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -147,15 +151,15 @@ }, { "cell_type": "markdown", - "id": "d07c4c17-da0b-4bf8-a224-3ed5db81dca3", + "id": "c7b39541", "metadata": {}, "source": [ - "Note: you can use `move_to` to have more control over the location of cells, e.g.: `network.cell(i).move_to(x=0, y=200)`" + "_Note: you can use `move_to` to have more control over the location of cells, e.g.: `network.cell(i).move_to(x=0, y=200)`._" ] }, { "cell_type": "markdown", - "id": "50de4193-8888-4e82-94e4-a723c4a23684", + "id": "1e1e5d74", "metadata": {}, "source": [ "As you can see, the neurons are not connected yet. Let's fix this by connecting neurons with synapses. We will build a network consisting of two layers: 10 neurons in the input layer and 1 neuron in the output layer.\n", @@ -165,19 +169,10 @@ }, { "cell_type": "code", - "execution_count": 136, - "id": "90c60887-fa39-4716-b664-6efb7abdb7fd", + "execution_count": 5, + "id": "e4b94afc", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/michaeldeistler/Documents/phd/jaxley/jaxley/modules/base.py:1533: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " self.pointer.edges = pd.concat(\n" - ] - } - ], + "outputs": [], "source": [ "pre = net.cell(range(10))\n", "post = net.cell(10)\n", @@ -186,7 +181,7 @@ }, { "cell_type": "markdown", - "id": "8d867fda-80e1-4a1b-b6e3-33c0855cde7b", + "id": "1d629fbe", "metadata": {}, "source": [ "Let's visualize this again:" @@ -194,13 +189,13 @@ }, { "cell_type": "code", - "execution_count": 137, - "id": "a69c0ca3-eeec-48a3-b7ac-1bf0896fd5ed", + "execution_count": 6, + "id": "39d172dc", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -216,7 +211,7 @@ }, { "cell_type": "markdown", - "id": "10726c77-5b03-49fe-8529-415aa5679d2d", + "id": "7886a6a9", "metadata": {}, "source": [ "As you can see, the `full_connect` method inserted one synapse (in blue) from every neuron in the first layer to the output neuron. The `fully_connect` method builds this synapse from the zero-eth compartment and zero-eth branch of the presynaptic neuron onto a random branch of the postsynaptic neuron. If you want more control over the pre- and post-synaptic branches, you can use the `connect` method:" @@ -224,8 +219,8 @@ }, { "cell_type": "code", - "execution_count": 138, - "id": "cd1eee20-06d7-413f-b61b-377ce39f33f4", + "execution_count": 7, + "id": "f78efb05", "metadata": {}, "outputs": [], "source": [ @@ -236,13 +231,13 @@ }, { "cell_type": "code", - "execution_count": 139, - "id": "944aa107-607f-45f1-91dd-4c413d7c3da1", + "execution_count": 8, + "id": "10cc3baa", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -258,7 +253,341 @@ }, { "cell_type": "markdown", - "id": "a8166edb-47a0-4f77-83ca-dc775ae243a9", + "id": "96d8182e", + "metadata": {}, + "source": [ + "### Inspecting and changing synaptic parameters" + ] + }, + { + "cell_type": "markdown", + "id": "66a544f8", + "metadata": {}, + "source": [ + "You can inspect synaptic parameters via the `.edges` attribute:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "50f8a206", + "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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
global_edge_indexglobal_pre_comp_indexglobal_post_comp_indextypetype_indpre_locspost_locsIonotropicSynapse_gSIonotropicSynapse_e_synIonotropicSynapse_k_minusIonotropicSynapse_scontrolled_by_param
000286IonotropicSynapse00.1250.6250.00010.00.0250.20
1128298IonotropicSynapse00.1250.6250.00010.00.0250.20
2256286IonotropicSynapse00.1250.6250.00010.00.0250.20
3384295IonotropicSynapse00.1250.8750.00010.00.0250.20
44112302IonotropicSynapse00.1250.6250.00010.00.0250.20
55140288IonotropicSynapse00.1250.1250.00010.00.0250.20
66168287IonotropicSynapse00.1250.8750.00010.00.0250.20
77196305IonotropicSynapse00.1250.3750.00010.00.0250.20
88224299IonotropicSynapse00.1250.8750.00010.00.0250.20
99252284IonotropicSynapse00.1250.1250.00010.00.0250.20
101023280IonotropicSynapse00.8750.1250.00010.00.0250.20
\n", + "
" + ], + "text/plain": [ + " global_edge_index global_pre_comp_index global_post_comp_index \\\n", + "0 0 0 286 \n", + "1 1 28 298 \n", + "2 2 56 286 \n", + "3 3 84 295 \n", + "4 4 112 302 \n", + "5 5 140 288 \n", + "6 6 168 287 \n", + "7 7 196 305 \n", + "8 8 224 299 \n", + "9 9 252 284 \n", + "10 10 23 280 \n", + "\n", + " type type_ind pre_locs post_locs IonotropicSynapse_gS \\\n", + "0 IonotropicSynapse 0 0.125 0.625 0.0001 \n", + "1 IonotropicSynapse 0 0.125 0.625 0.0001 \n", + "2 IonotropicSynapse 0 0.125 0.625 0.0001 \n", + "3 IonotropicSynapse 0 0.125 0.875 0.0001 \n", + "4 IonotropicSynapse 0 0.125 0.625 0.0001 \n", + "5 IonotropicSynapse 0 0.125 0.125 0.0001 \n", + "6 IonotropicSynapse 0 0.125 0.875 0.0001 \n", + "7 IonotropicSynapse 0 0.125 0.375 0.0001 \n", + "8 IonotropicSynapse 0 0.125 0.875 0.0001 \n", + "9 IonotropicSynapse 0 0.125 0.125 0.0001 \n", + "10 IonotropicSynapse 0 0.875 0.125 0.0001 \n", + "\n", + " IonotropicSynapse_e_syn IonotropicSynapse_k_minus IonotropicSynapse_s \\\n", + "0 0.0 0.025 0.2 \n", + "1 0.0 0.025 0.2 \n", + "2 0.0 0.025 0.2 \n", + "3 0.0 0.025 0.2 \n", + "4 0.0 0.025 0.2 \n", + "5 0.0 0.025 0.2 \n", + "6 0.0 0.025 0.2 \n", + "7 0.0 0.025 0.2 \n", + "8 0.0 0.025 0.2 \n", + "9 0.0 0.025 0.2 \n", + "10 0.0 0.025 0.2 \n", + "\n", + " controlled_by_param \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 \n", + "9 0 \n", + "10 0 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "net.edges" + ] + }, + { + "cell_type": "markdown", + "id": "9590bd7b", + "metadata": {}, + "source": [ + "To modify a parameter of all synapses you can again use `.set()`:" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "a4578607", + "metadata": {}, + "outputs": [], + "source": [ + "net.set(\"IonotropicSynapse_gS\", 0.0003) # nS" + ] + }, + { + "cell_type": "markdown", + "id": "1f63ec83", + "metadata": {}, + "source": [ + "To modify individual syanptic parameters, use the `.select()` method. Below, we change the values of the first two synapses:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "b36c9d54", + "metadata": {}, + "outputs": [], + "source": [ + "net.select(edges=[0, 1]).set(\"IonotropicSynapse_gS\", 0.0004) # nS" + ] + }, + { + "cell_type": "markdown", + "id": "22f89733", + "metadata": {}, + "source": [ + "For more details on how to flexibly set synaptic parameters (e.g., by cell type, or by pre-synaptic cell index,...), see [this tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/09_advanced_indexing.html)." + ] + }, + { + "cell_type": "markdown", + "id": "85713b1f", "metadata": {}, "source": [ "### Stimulating, recording, and simulating the network" @@ -266,7 +595,7 @@ }, { "cell_type": "markdown", - "id": "92207771-b7aa-45fe-8377-6005f24885ad", + "id": "42fcf594", "metadata": {}, "source": [ "We will now set up a simulation of the network. This works exactly as it does for single neurons:" @@ -274,8 +603,8 @@ }, { "cell_type": "code", - "execution_count": 140, - "id": "0e225f21", + "execution_count": 12, + "id": "1899674f", "metadata": {}, "outputs": [], "source": [ @@ -291,8 +620,8 @@ }, { "cell_type": "code", - "execution_count": 141, - "id": "9b671afc", + "execution_count": 13, + "id": "c8613e12", "metadata": {}, "outputs": [], "source": [ @@ -301,7 +630,7 @@ }, { "cell_type": "markdown", - "id": "ed6a59ef", + "id": "35d1a94b", "metadata": {}, "source": [ "As a simple example, we insert sodium, potassium, and leak into every compartment of every cell of the network." @@ -309,8 +638,8 @@ }, { "cell_type": "code", - "execution_count": 142, - "id": "1c989a32", + "execution_count": 14, + "id": "08b9e276", "metadata": {}, "outputs": [], "source": [ @@ -321,7 +650,7 @@ }, { "cell_type": "markdown", - "id": "d8d3b0d3", + "id": "75991e3f", "metadata": {}, "source": [ "We stimulate every neuron in the input layer and record the voltage from the output neuron:" @@ -329,8 +658,8 @@ }, { "cell_type": "code", - "execution_count": 143, - "id": "d6d4d560", + "execution_count": 15, + "id": "399c0a74", "metadata": {}, "outputs": [ { @@ -363,7 +692,7 @@ }, { "cell_type": "markdown", - "id": "d5ffe2bf-6b66-461c-8a7d-2ea6b4f790b3", + "id": "0199e07f", "metadata": {}, "source": [ "Finally, we can again run the network simulation and plot the result:" @@ -371,23 +700,23 @@ }, { "cell_type": "code", - "execution_count": 144, - "id": "26e7b8dc", + "execution_count": 16, + "id": "821e6863", "metadata": {}, "outputs": [], "source": [ - "s = jx.integrate(net)" + "s = jx.integrate(net, delta_t=dt)" ] }, { "cell_type": "code", - "execution_count": 145, - "id": "a9598b83-5da5-41b3-a04d-6436610a37d2", + "execution_count": 17, + "id": "021edd8c", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -403,10 +732,10 @@ }, { "cell_type": "markdown", - "id": "38e85474-520c-4b27-a14a-d67755540bb3", + "id": "66e0c675", "metadata": {}, "source": [ - "That's it! You now know how to simulate networks of morphologically detailed neurons. Next, you should learn how to modify parameters of your simulation in [this tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/03_setting_parameters/)." + "That's it! You now know how to simulate networks of morphologically detailed neurons. We recommend that you now have a look at how you can [speed up your simulation](https://jaxley.readthedocs.io/en/latest/tutorials/04_jit_and_vmap.html). To learn more about handling synaptic parameters, we recommend to check out [this tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/09_advanced_indexing.html)." ] } ], diff --git a/docs/tutorials/03_setting_parameters.ipynb b/docs/tutorials/03_setting_parameters.ipynb deleted file mode 100644 index 58fab0de..00000000 --- a/docs/tutorials/03_setting_parameters.ipynb +++ /dev/null @@ -1,997 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "d856c612", - "metadata": {}, - "source": [ - "# Setting parameters" - ] - }, - { - "cell_type": "markdown", - "id": "3efb9902", - "metadata": {}, - "source": [ - "In this tutorial, you will learn how to:\n", - "\n", - "- set parameters of `Jaxley` models such as compartment radius or channel conductances \n", - "- set initial states \n", - "- set synaptic parameters \n", - "\n", - "Here is a code snippet which you will learn to understand in this tutorial:\n", - "```python\n", - "cell = ... # See tutorial on Basics of Jaxley.\n", - "cell.insert(Na())\n", - "\n", - "cell.set(\"radius\", 1.0) # Set compartment radius.\n", - "cell.branch(0).set(\"Na_gNa\", 0.1) # Set sodium maximal conductance.\n", - "cell.set(\"v\", -65.0) # Set initial voltage.\n", - "\n", - "net = ... # See tutorial on Networks of Jaxley.\n", - "fully_connect(net.cell(0), net.cell(1), IonotropicSynapse())\n", - "net.IonotropicSynapse().set(\"IonotropicSynapse_gS\", 0.01)\n", - "```" - ] - }, - { - "cell_type": "markdown", - "id": "0c2975da", - "metadata": {}, - "source": [ - "In the previous two tutorials, you learned how to build single cells or networks and how to simulate them. In this tutorial, you will learn how to change parameters of such simulations.\n", - "\n", - "Let's get started!" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "205a670b", - "metadata": {}, - "outputs": [], - "source": [ - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import jax.numpy as jnp\n", - "from jax import jit, vmap\n", - "\n", - "import jaxley as jx\n", - "from jaxley.channels import Na, K, Leak" - ] - }, - { - "cell_type": "markdown", - "id": "ce3c9c5c", - "metadata": {}, - "source": [ - "### Preface: Building the cell or network\n", - "\n", - "We first build a cell (or network) in the same way as we showed in the previous tutorials:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "6b6a4eed", - "metadata": {}, - "outputs": [], - "source": [ - "dt = 0.025\n", - "t_max = 10.0\n", - "\n", - "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=2)\n", - "cell = jx.Cell(branch, parents=[-1, 0])" - ] - }, - { - "cell_type": "markdown", - "id": "05aed6d3", - "metadata": {}, - "source": [ - "### Setting parameters in `Jaxley`\n", - "\n", - "To modify parameters of the simulation, you can use the `.set()` method. For example\n", - "```python\n", - "cell.set(\"radius\", 0.1)\n", - "```\n", - "will modify the radius of every compartment in the cell to 0.1 micrometer. You can also modify the parameters only of some branches:\n", - "```python\n", - "cell.branch(0).set(\"radius\", 1.0)\n", - "```\n", - "or even of compartments:\n", - "```python\n", - "cell.branch(0).comp(0).set(\"radius\", 10.0)\n", - "```\n", - "\n", - "You can always inspect the current parameters by inspecting `cell.nodes`, which is a pandas Dataframe that contains all information about the cell. You can use `.set()` to set morphological parameters, channel parameters, synaptic parameters, and initial states. Note that `Jaxley` uses the same units as the `NEURON` simulator, which are listed [here](https://www.neuron.yale.edu/neuron/static/docs/units/unitchart.html)." - ] - }, - { - "cell_type": "markdown", - "id": "b9305c6f", - "metadata": {}, - "source": [ - "### Setting morphological parameters\n", - "\n", - "`Jaxley` allows to set the following morphological parameters:\n", - "\n", - "- `radius`: the radius of the (zylindrical) compartment (in micrometer) \n", - "- `length`: the length of the zylindrical compartment (in micrometer) \n", - "- `axial_resistivity`: the resistivity of current flow between compartments (in ohm centimeter)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "43ede5b4", - "metadata": {}, - "outputs": [], - "source": [ - "cell.branch(0).set(\"axial_resistivity\", 1000.0)\n", - "cell.set(\"length\", 1.0) # This will set every compartment in the cell to have length 1.0." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "eb5d658d", - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
global_cell_indexglobal_branch_indexglobal_comp_indexlocal_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevcontrolled_by_param
00000001.01.01000.01.0-70.00
10010011.01.01000.01.0-70.00
20120101.01.05000.01.0-70.00
30130111.01.05000.01.0-70.00
\n", - "
" - ], - "text/plain": [ - " global_cell_index global_branch_index global_comp_index \\\n", - "0 0 0 0 \n", - "1 0 0 1 \n", - "2 0 1 2 \n", - "3 0 1 3 \n", - "\n", - " local_cell_index local_branch_index local_comp_index length radius \\\n", - "0 0 0 0 1.0 1.0 \n", - "1 0 0 1 1.0 1.0 \n", - "2 0 1 0 1.0 1.0 \n", - "3 0 1 1 1.0 1.0 \n", - "\n", - " axial_resistivity capacitance v controlled_by_param \n", - "0 1000.0 1.0 -70.0 0 \n", - "1 1000.0 1.0 -70.0 0 \n", - "2 5000.0 1.0 -70.0 0 \n", - "3 5000.0 1.0 -70.0 0 " - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell.nodes" - ] - }, - { - "cell_type": "markdown", - "id": "1e5299bc", - "metadata": {}, - "source": [ - "### Setting channel parameters\n", - "\n", - "You can also modify channel parameters (again, units are listed [here](https://www.neuron.yale.edu/neuron/static/docs/units/unitchart.html)). Every parameter that should be modifiable has to be defined in `self.channel_params` of the channel." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "aff3ab52", - "metadata": {}, - "outputs": [], - "source": [ - "cell.insert(Na())\n", - "cell.branch(1).comp(0).set(\"Na_gNa\", 0.1) # S/cm^2" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "9aadcb28", - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
global_cell_indexglobal_branch_indexglobal_comp_indexlocal_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevcontrolled_by_paramNaNa_gNaeNavtNa_mNa_h
00000001.01.01000.01.0-70.00True0.0550.0-60.00.20.2
10010011.01.01000.01.0-70.00True0.0550.0-60.00.20.2
20120101.01.05000.01.0-70.00True0.1050.0-60.00.20.2
30130111.01.05000.01.0-70.00True0.0550.0-60.00.20.2
\n", - "
" - ], - "text/plain": [ - " global_cell_index global_branch_index global_comp_index \\\n", - "0 0 0 0 \n", - "1 0 0 1 \n", - "2 0 1 2 \n", - "3 0 1 3 \n", - "\n", - " local_cell_index local_branch_index local_comp_index length radius \\\n", - "0 0 0 0 1.0 1.0 \n", - "1 0 0 1 1.0 1.0 \n", - "2 0 1 0 1.0 1.0 \n", - "3 0 1 1 1.0 1.0 \n", - "\n", - " axial_resistivity capacitance v controlled_by_param Na Na_gNa \\\n", - "0 1000.0 1.0 -70.0 0 True 0.05 \n", - "1 1000.0 1.0 -70.0 0 True 0.05 \n", - "2 5000.0 1.0 -70.0 0 True 0.10 \n", - "3 5000.0 1.0 -70.0 0 True 0.05 \n", - "\n", - " eNa vt Na_m Na_h \n", - "0 50.0 -60.0 0.2 0.2 \n", - "1 50.0 -60.0 0.2 0.2 \n", - "2 50.0 -60.0 0.2 0.2 \n", - "3 50.0 -60.0 0.2 0.2 " - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cell.nodes" - ] - }, - { - "cell_type": "markdown", - "id": "01e3bff9", - "metadata": {}, - "source": [ - "### Setting synaptic parameters\n", - "\n", - "In order to set parameters of synapses, you have to use `net.SynapseName.set()`, e.g.:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "8bb4fa03", - "metadata": {}, - "outputs": [], - "source": [ - "from jaxley.synapses import IonotropicSynapse\n", - "from jaxley.connect import fully_connect\n", - "\n", - "num_cells = 2\n", - "net = jx.Network([cell for _ in range(num_cells)])\n", - "fully_connect(net.cell(0), net.cell(1), IonotropicSynapse())\n", - "\n", - "# Unlike for channels, you have to index into the synapse with `net.SynapseName`\n", - "net.IonotropicSynapse.set(\"IonotropicSynapse_gS\", 0.1) # nS" - ] - }, - { - "cell_type": "markdown", - "id": "5eb0a6a3", - "metadata": {}, - "source": [ - "You can inspect synaptic parameters and states with `net.edges`:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "5ab90be8", - "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", - "
global_edge_indexglobal_pre_comp_indexglobal_pre_branch_indexglobal_pre_cell_indexglobal_post_comp_indexglobal_post_branch_indexglobal_post_cell_indexlocal_edge_indextypetype_indpre_locspost_locsIonotropicSynapse_gSIonotropicSynapse_e_synIonotropicSynapse_k_minusIonotropicSynapse_scontrolled_by_param
000007310IonotropicSynapse00.250.750.10.00.0250.20
\n", - "
" - ], - "text/plain": [ - " global_edge_index global_pre_comp_index global_pre_branch_index \\\n", - "0 0 0 0 \n", - "\n", - " global_pre_cell_index global_post_comp_index global_post_branch_index \\\n", - "0 0 7 3 \n", - "\n", - " global_post_cell_index local_edge_index type type_ind \\\n", - "0 1 0 IonotropicSynapse 0 \n", - "\n", - " pre_locs post_locs IonotropicSynapse_gS IonotropicSynapse_e_syn \\\n", - "0 0.25 0.75 0.1 0.0 \n", - "\n", - " IonotropicSynapse_k_minus IonotropicSynapse_s controlled_by_param \n", - "0 0.025 0.2 0 " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "net.edges" - ] - }, - { - "cell_type": "markdown", - "id": "502dbdc3", - "metadata": {}, - "source": [ - "If you want to set individual synaptic parameters, you can use the `.select()` method:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "3cb4d413", - "metadata": {}, - "outputs": [], - "source": [ - "net.select(edges=[0]).set(\"IonotropicSynapse_gS\", 0.1) # nS" - ] - }, - { - "cell_type": "markdown", - "id": "fba7f53f", - "metadata": {}, - "source": [ - "For more details on how to flexibly set synaptic parameters (e.g., by cell type, or by pre-synaptic cell index,...), see [this tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/09_advanced_indexing/)." - ] - }, - { - "cell_type": "markdown", - "id": "cb71c986", - "metadata": {}, - "source": [ - "### Setting initial states" - ] - }, - { - "cell_type": "markdown", - "id": "b89fa33c", - "metadata": {}, - "source": [ - "Finally, you can also set initial states. These include the initial voltage `v` and the states of all channels and synapses (which must be defined in `self.channel_states` of the channel. For example:" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "809e4ea7", - "metadata": {}, - "outputs": [], - "source": [ - "net.set(\"v\", -72.0) # mV\n", - "net.IonotropicSynapse.set(\"IonotropicSynapse_s\", 0.1) # nS" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "b4889590", - "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
comp_indexbranch_indexcell_indexlengthradiusaxial_resistivitycapacitancevNaNa_gNaeNavtNa_mNa_h
00001.01.01000.01.0-72.0True0.0550.0-60.00.20.2
11001.01.01000.01.0-72.0True0.0550.0-60.00.20.2
22101.01.05000.01.0-72.0True0.1050.0-60.00.20.2
33101.01.05000.01.0-72.0True0.0550.0-60.00.20.2
44211.01.01000.01.0-72.0True0.0550.0-60.00.20.2
55211.01.01000.01.0-72.0True0.0550.0-60.00.20.2
66311.01.05000.01.0-72.0True0.1050.0-60.00.20.2
77311.01.05000.01.0-72.0True0.0550.0-60.00.20.2
\n", - "
" - ], - "text/plain": [ - " comp_index branch_index cell_index length radius axial_resistivity \\\n", - "0 0 0 0 1.0 1.0 1000.0 \n", - "1 1 0 0 1.0 1.0 1000.0 \n", - "2 2 1 0 1.0 1.0 5000.0 \n", - "3 3 1 0 1.0 1.0 5000.0 \n", - "4 4 2 1 1.0 1.0 1000.0 \n", - "5 5 2 1 1.0 1.0 1000.0 \n", - "6 6 3 1 1.0 1.0 5000.0 \n", - "7 7 3 1 1.0 1.0 5000.0 \n", - "\n", - " capacitance v Na Na_gNa eNa vt Na_m Na_h \n", - "0 1.0 -72.0 True 0.05 50.0 -60.0 0.2 0.2 \n", - "1 1.0 -72.0 True 0.05 50.0 -60.0 0.2 0.2 \n", - "2 1.0 -72.0 True 0.10 50.0 -60.0 0.2 0.2 \n", - "3 1.0 -72.0 True 0.05 50.0 -60.0 0.2 0.2 \n", - "4 1.0 -72.0 True 0.05 50.0 -60.0 0.2 0.2 \n", - "5 1.0 -72.0 True 0.05 50.0 -60.0 0.2 0.2 \n", - "6 1.0 -72.0 True 0.10 50.0 -60.0 0.2 0.2 \n", - "7 1.0 -72.0 True 0.05 50.0 -60.0 0.2 0.2 " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "net.nodes" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "eb390621", - "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", - "
pre_locspost_locspre_branch_indexpost_branch_indexpre_cell_indexpost_cell_indextypetype_indglobal_pre_comp_indexglobal_post_comp_indexglobal_pre_branch_indexglobal_post_branch_indexIonotropicSynapse_gSIonotropicSynapse_e_synIonotropicSynapse_k_minusIonotropicSynapse_s
00.250.250101IonotropicSynapse006030.10.00.0250.1
\n", - "
" - ], - "text/plain": [ - " pre_locs post_locs pre_branch_index post_branch_index pre_cell_index \\\n", - "0 0.25 0.25 0 1 0 \n", - "\n", - " post_cell_index type type_ind global_pre_comp_index \\\n", - "0 1 IonotropicSynapse 0 0 \n", - "\n", - " global_post_comp_index global_pre_branch_index global_post_branch_index \\\n", - "0 6 0 3 \n", - "\n", - " IonotropicSynapse_gS IonotropicSynapse_e_syn IonotropicSynapse_k_minus \\\n", - "0 0.1 0.0 0.025 \n", - "\n", - " IonotropicSynapse_s \n", - "0 0.1 " - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "net.edges" - ] - }, - { - "cell_type": "markdown", - "id": "2ff08f94", - "metadata": {}, - "source": [ - "### Summary" - ] - }, - { - "cell_type": "markdown", - "id": "8a89c630", - "metadata": {}, - "source": [ - "You can now modify parameters of your `Jaxley` simulation. In [the next tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/04_jit_and_vmap/), you will learn how to make parameter sweeps (or stimulus sweeps) fast with jit-compilation and GPU parallelization." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.4" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/docs/tutorials/04_jit_and_vmap.ipynb b/docs/tutorials/04_jit_and_vmap.ipynb index adde4cfe..c090c78e 100644 --- a/docs/tutorials/04_jit_and_vmap.ipynb +++ b/docs/tutorials/04_jit_and_vmap.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "a6eb663b", + "id": "cfd523b5", "metadata": {}, "source": [ "# Speeding up simulations" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "1432557f", + "id": "adfd37cf", "metadata": {}, "source": [ "In this tutorial, you will learn how to:\n", @@ -30,7 +30,7 @@ " param_state = None\n", " param_state = cell.data_set(\"Na_gNa\", params[0], param_state)\n", " param_state = cell.data_set(\"K_gK\", params[1], param_state)\n", - " return jx.integrate(cell, param_state=param_state)\n", + " return jx.integrate(cell, param_state=param_state, delta_t=0.025)\n", "\n", "# Define 100 sets of sodium and potassium conductances.\n", "all_params = jnp.asarray(np.random.rand(100, 2))\n", @@ -47,7 +47,7 @@ }, { "cell_type": "markdown", - "id": "9d0d9e3a", + "id": "757dcad9", "metadata": {}, "source": [ "In the previous tutorials, you learned how to build single cells or networks and how to change their parameters. In this tutorial, you will learn how to speed up such simulations by many orders of magnitude. This can be achieved in to ways:\n", @@ -60,7 +60,7 @@ }, { "cell_type": "markdown", - "id": "6968a673", + "id": "c813d313", "metadata": {}, "source": [ "### Using GPU or CPU" @@ -68,7 +68,7 @@ }, { "cell_type": "markdown", - "id": "3e94fcda", + "id": "f69b53c7", "metadata": {}, "source": [ "In `Jaxley` you can set whether you want to use `gpu` or `cpu` with the following lines at the beginning of your script:" @@ -76,8 +76,8 @@ }, { "cell_type": "code", - "execution_count": 4, - "id": "871643b5", + "execution_count": 1, + "id": "2f080339", "metadata": {}, "outputs": [], "source": [ @@ -87,7 +87,7 @@ }, { "cell_type": "markdown", - "id": "880631c9", + "id": "c38c665a", "metadata": {}, "source": [ "`JAX` (and `Jaxley`) also allow to choose between `float32` and `float64`. Especially on GPUs, `float32` will be faster, but we have experienced stability issues when simulating morphologically detailed neurons with `float32`." @@ -95,8 +95,8 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "219765f6", + "execution_count": 2, + "id": "86d4a917", "metadata": {}, "outputs": [], "source": [ @@ -105,7 +105,7 @@ }, { "cell_type": "markdown", - "id": "be03d1e6", + "id": "dc16b92d", "metadata": {}, "source": [ "Next, we will import relevant libraries:" @@ -113,8 +113,8 @@ }, { "cell_type": "code", - "execution_count": 7, - "id": "06c8773f", + "execution_count": 3, + "id": "bd054087", "metadata": {}, "outputs": [], "source": [ @@ -129,7 +129,7 @@ }, { "cell_type": "markdown", - "id": "99d5a379", + "id": "9d2ae1fa", "metadata": {}, "source": [ "### Building the cell or network\n", @@ -139,8 +139,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "id": "5d1fbb79", + "execution_count": 4, + "id": "a869e670", "metadata": {}, "outputs": [ { @@ -157,7 +157,7 @@ "t_max = 10.0\n", "\n", "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=4)\n", + "branch = jx.Branch(comp, ncomp=4)\n", "cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1, 2, 2])\n", "\n", "cell.insert(Na())\n", @@ -174,7 +174,7 @@ }, { "cell_type": "markdown", - "id": "6597241d", + "id": "d9193627", "metadata": {}, "source": [ "### Parameter sweeps\n", @@ -184,8 +184,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "id": "7bc771dd", + "execution_count": 5, + "id": "79a01358", "metadata": {}, "outputs": [], "source": [ @@ -193,12 +193,12 @@ " param_state = None\n", " param_state = cell.data_set(\"Na_gNa\", params[0], param_state)\n", " param_state = cell.data_set(\"K_gK\", params[1], param_state)\n", - " return jx.integrate(cell, param_state=param_state)" + " return jx.integrate(cell, param_state=param_state, delta_t=dt)" ] }, { "cell_type": "markdown", - "id": "6e8ceb93", + "id": "2f8e301a", "metadata": {}, "source": [ "The `.data_set()` method takes three arguments: \n", @@ -210,7 +210,7 @@ }, { "cell_type": "markdown", - "id": "336bd08f", + "id": "a343e454", "metadata": {}, "source": [ "Having done this, the simplest (but least efficient) way to perform the parameter sweep is to run a for-loop over many parameter sets:" @@ -218,8 +218,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "id": "94aea7ba", + "execution_count": 6, + "id": "4806598a", "metadata": {}, "outputs": [ { @@ -240,7 +240,7 @@ }, { "cell_type": "markdown", - "id": "7b6eb06a", + "id": "e0f1becb", "metadata": {}, "source": [ "The resulting voltages have shape `(num_simulations, num_recordings, num_timesteps)`." @@ -248,7 +248,7 @@ }, { "cell_type": "markdown", - "id": "82a74dd9", + "id": "c4345c02", "metadata": {}, "source": [ "### Stimulus sweeps\n", @@ -266,7 +266,7 @@ }, { "cell_type": "markdown", - "id": "78e4d9f4", + "id": "5dd3c975", "metadata": {}, "source": [ "### Speeding up for loops via `jit` compilation\n", @@ -276,8 +276,8 @@ }, { "cell_type": "code", - "execution_count": 34, - "id": "db108c01", + "execution_count": 7, + "id": "017e98d9", "metadata": {}, "outputs": [], "source": [ @@ -286,8 +286,8 @@ }, { "cell_type": "code", - "execution_count": 35, - "id": "63503ab8", + "execution_count": 8, + "id": "d9aa805a", "metadata": {}, "outputs": [], "source": [ @@ -297,8 +297,8 @@ }, { "cell_type": "code", - "execution_count": 36, - "id": "7153695e", + "execution_count": 9, + "id": "27c12fe3", "metadata": {}, "outputs": [ { @@ -317,7 +317,7 @@ }, { "cell_type": "markdown", - "id": "a89191e5", + "id": "401d1f52", "metadata": {}, "source": [ "`jit` compilation can be up to 10k times faster, especially for small simulations with few compartments. For very large models, the gain obtained with `jit` will be much smaller (`jit` may even provide no speed up at all)." @@ -325,7 +325,7 @@ }, { "cell_type": "markdown", - "id": "f917e00f", + "id": "d29ff570", "metadata": {}, "source": [ "### Speeding up with GPU parallelization via `vmap`\n", @@ -335,8 +335,8 @@ }, { "cell_type": "code", - "execution_count": 38, - "id": "ab0108d4", + "execution_count": 10, + "id": "fefffaf7", "metadata": {}, "outputs": [], "source": [ @@ -346,7 +346,7 @@ }, { "cell_type": "markdown", - "id": "7cc2e980", + "id": "fd03669d", "metadata": {}, "source": [ "We can then run this method on __all__ parameter sets (`all_params.shape == (100, 2)`), and `Jaxley` will automatically parallelize across them. Of course, you will only get a speed-up if you have a GPU available and you specified `gpu` as device in the beginning of this tutorial." @@ -354,8 +354,8 @@ }, { "cell_type": "code", - "execution_count": 41, - "id": "febeee5f", + "execution_count": 11, + "id": "c2a22648", "metadata": {}, "outputs": [], "source": [ @@ -364,7 +364,7 @@ }, { "cell_type": "markdown", - "id": "075cad19", + "id": "a4464e06", "metadata": {}, "source": [ "GPU parallelization with `vmap` can give a large speed-up, which can easily be 2-3 orders of magnitude." @@ -372,7 +372,7 @@ }, { "cell_type": "markdown", - "id": "01ff66a6", + "id": "0df64cc1", "metadata": {}, "source": [ "### Combining `jit` and `vmap`" @@ -380,7 +380,7 @@ }, { "cell_type": "markdown", - "id": "83b99b60", + "id": "8125f061", "metadata": {}, "source": [ "Finally, you can also combine using `jit` and `vmap`. For example, you can run multiple batches of many parallel simulations. Each batch can be parallelized with `vmap` and simulating each batch can be compiled with `jit`:" @@ -388,8 +388,8 @@ }, { "cell_type": "code", - "execution_count": 43, - "id": "bf61d2c1", + "execution_count": 12, + "id": "db1eced1", "metadata": {}, "outputs": [], "source": [ @@ -398,8 +398,8 @@ }, { "cell_type": "code", - "execution_count": 44, - "id": "21becf24", + "execution_count": 13, + "id": "82f34a7d", "metadata": {}, "outputs": [], "source": [ @@ -410,7 +410,7 @@ }, { "cell_type": "markdown", - "id": "61758507", + "id": "a5cca5a0", "metadata": {}, "source": [ "That's all you have to know about `jit` and `vmap`! If you have worked through this and the previous tutorials, you should be ready to set up your first network simulations." @@ -418,14 +418,16 @@ }, { "cell_type": "markdown", - "id": "0e37ecac", + "id": "37fc2f3c", "metadata": {}, "source": [ "### Next steps\n", "\n", - "If you want to learn more, we recommend you to read the [tutorial on building channel and synapse models](https://jaxleyverse.github.io/jaxley/latest/tutorial/05_channel_and_synapse_models/) or to read the [tutorial on groups](https://jaxleyverse.github.io/jaxley/latest/tutorial/06_groups/), which allow to make your `Jaxley` simulations more elegant and convenient to interact with.\n", + "If you want to learn more, we recommend you to read the [tutorial on building channel and synapse models](https://jaxley.readthedocs.io/en/latest/tutorials/05_channel_and_synapse_models.html).\n", + "\n", + "Alternatively, you can also directly jump ahead to the [tutorial on training biophysical networks](https://jaxley.readthedocs.io/en/latest/tutorials/07_gradient_descent.html) which will teach you how you can optimize parameters of biophysical models with gradient descent.\n", "\n", - "Alternatively, you can also directly jump ahead to the [tutorial on training biophysical networks](https://jaxleyverse.github.io/jaxley/latest/tutorial/07_gradient_descent/) which will teach you how you can optimize parameters of biophysical models with gradient descent." + "Finally, if you want to learn more about JAX, check out their [tutorial on jit](https://jax.readthedocs.io/en/latest/jit-compilation.html) or their [tutorial on vmap](https://jax.readthedocs.io/en/latest/automatic-vectorization.html)." ] } ], diff --git a/docs/tutorials/05_channel_and_synapse_models.ipynb b/docs/tutorials/05_channel_and_synapse_models.ipynb index 89a77e42..96412184 100644 --- a/docs/tutorials/05_channel_and_synapse_models.ipynb +++ b/docs/tutorials/05_channel_and_synapse_models.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "aa1d59bb", + "id": "c1157b43", "metadata": {}, "source": [ "# Building ion channel models\n", @@ -11,13 +11,13 @@ "\n", "- define your own ion channel models beyond the preconfigured channels in `Jaxley` \n", "\n", - "This tutorial assumes that you have already learned how to [build basic simulations](https://jaxleyverse.github.io/jaxley/latest/tutorial/01_morph_neurons/)." + "This tutorial assumes that you have already learned how to [build basic simulations](https://jaxley.readthedocs.io/en/latest/tutorials/01_morph_neurons.html)." ] }, { "cell_type": "code", "execution_count": 1, - "id": "2ce9b547", + "id": "56c05124", "metadata": {}, "outputs": [], "source": [ @@ -36,27 +36,27 @@ }, { "cell_type": "markdown", - "id": "52e5c740", + "id": "470b4f8f", "metadata": {}, "source": [ - "First, we define a cell as you saw in the [previous tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/01_morph_neurons/):" + "First, we define a cell as you saw in the [previous tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/01_morph_neurons.html):" ] }, { "cell_type": "code", "execution_count": 2, - "id": "9f0b772e", + "id": "3f6c47d2", "metadata": {}, "outputs": [], "source": [ "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=4)\n", + "branch = jx.Branch(comp, ncomp=4)\n", "cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1, 2, 2])" ] }, { "cell_type": "markdown", - "id": "9b9e243b", + "id": "3450d0d6", "metadata": {}, "source": [ "You have also already learned how to insert preconfigured channels into `Jaxley` models:\n", @@ -71,19 +71,17 @@ }, { "cell_type": "markdown", - "id": "72415bdb", + "id": "934fd9fa", "metadata": {}, "source": [ "### Your own channel\n", - "Below is how you can define your own channel. We will go into detail about individual parts of the code in the next couple of cells.\n", - "\n", - "Note that a channel needs to have the functions `update_states` and `compute_currents` and `init_states` with all input arguments shown below. " + "Below is how you can define your own channel. We will go into detail about individual parts of the code in the next couple of cells." ] }, { "cell_type": "code", "execution_count": 3, - "id": "51456f0d", + "id": "e5a5f4f8", "metadata": {}, "outputs": [], "source": [ @@ -129,7 +127,7 @@ }, { "cell_type": "markdown", - "id": "4e7801e5", + "id": "6682c9fc", "metadata": {}, "source": [ "Let's look at each part of this in detail. \n", @@ -158,7 +156,7 @@ " def update_states(self, states, dt, v, params):\n", "```\n", "\n", - "The inputs `states` to the `update_states` method is a dictionary which contains all states that are updated (including states of other channels). `v` is a `jnp.ndarray` which contains the voltage of a single compartment (shape `()`). Let's get the state of the potassium channel which we are building here:\n", + "Every channel you define must have an `update_states()` method which takes exactly these five arguments (self, states, dt, v, params). The inputs `states` to the `update_states` method is a dictionary which contains all states that are updated (including states of other channels). `v` is a `jnp.ndarray` which contains the voltage of a single compartment (shape `()`). Let's get the state of the potassium channel which we are building here:\n", "```python\n", "ns = states[\"n_new\"]\n", "```\n", @@ -189,7 +187,7 @@ }, { "cell_type": "markdown", - "id": "76a41eb6", + "id": "07cffb1d", "metadata": {}, "source": [ "Alright, done! We can now insert this channel into any `jx.Module` such as our cell:" @@ -198,7 +196,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "a955d604", + "id": "72046028", "metadata": {}, "outputs": [], "source": [ @@ -208,7 +206,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "ddc61a4b", + "id": "8943b07b", "metadata": {}, "outputs": [ { @@ -232,7 +230,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "393283ed", + "id": "388dee2d", "metadata": {}, "outputs": [], "source": [ @@ -242,12 +240,12 @@ { "cell_type": "code", "execution_count": 7, - "id": "a75711c0", + "id": "e2a4bb2d", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -266,22 +264,22 @@ }, { "cell_type": "markdown", - "id": "784e1904", + "id": "63056871", "metadata": {}, "source": [ "### Your own synapse\n", "\n", - "The parts below assume that you have already learned how to [build network simulations in `Jaxley`](https://jaxleyverse.github.io/jaxley/latest/tutorial/02_small_network/).\n", + "The parts below assume that you have already learned how to [build network simulations in `Jaxley`](https://jaxley.readthedocs.io/en/latest/tutorials/02_small_network.html).\n", "\n", "Note that again, a synapse needs to have the two functions `update_states` and `compute_current` with all input arguments shown below. \n", "\n", - "The below is an example of how to define your own synapse model in `Jaxley`:`" + "The below is an example of how to define your own synapse model in `Jaxley`:" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "0cd18715", + "execution_count": 8, + "id": "5c6e7e9a", "metadata": {}, "outputs": [], "source": [ @@ -312,7 +310,7 @@ }, { "cell_type": "markdown", - "id": "760999d4", + "id": "eb80aa94", "metadata": {}, "source": [ "As you can see above, synapses follow closely how channels are defined. The main difference is that the `compute_current` method takes two voltages: the pre-synaptic voltage (a `jnp.ndarray` of shape `()`) and the post-synaptic voltage (a `jnp.ndarray` of shape `()`)." @@ -320,8 +318,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "819de78d", + "execution_count": 9, + "id": "ee961d5d", "metadata": {}, "outputs": [], "source": [ @@ -330,8 +328,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "b453a9f1", + "execution_count": 10, + "id": "2db6ac96", "metadata": {}, "outputs": [], "source": [ @@ -344,8 +342,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "id": "5a6b35a4", + "execution_count": 11, + "id": "522ce876", "metadata": {}, "outputs": [ { @@ -367,8 +365,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "id": "0bafd39a", + "execution_count": 12, + "id": "d94c2440", "metadata": {}, "outputs": [], "source": [ @@ -377,13 +375,13 @@ }, { "cell_type": "code", - "execution_count": 14, - "id": "57fa3456", + "execution_count": 13, + "id": "14ea80f5", "metadata": {}, "outputs": [ { "data": { - "image/png": "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PP/885hMJleX0ujItqmZbJcrk21Ts4bYLtKoLIQQApA9BCGEEBUkEIQQQgASCEIIISpIIAghhAAkEOrF0qVLiYqKwsPDg9jYWHbu3Onqkpxq8+bNjBkzhvDwcHQ6HV999VWV+UopFixYQOvWrfH09CQ+Pp4TJ05UWSYnJ4c//vGP+Pn54e/vz9SpUyksLGzAT1H/Fi1aRL9+/fD19SUkJITf//73HDt2rMoypaWlzJo1i8DAQHx8fBg7diwZGRlVlklJSWH06NF4eXkREhLCU089hdVqbciPUu/eeecdevTo4bioKi4uju+++84xv6Vul1/729/+hk6nY/bs2Y5pDbptlLguK1euVEajUS1btkwdOnRITZs2Tfn7+6uMjAxXl+Y0a9euVc8++6z64osvFKC+/PLLKvP/9re/KbPZrL766iu1f/9+deedd6r27durkpISxzIjRoxQPXv2VNu3b1dbtmxR0dHRaty4cQ38SerX7bffrpYvX64OHjyo9u3bp0aNGqUiIyNVYWGhY5kZM2aoiIgItX79evXLL7+oAQMGqIEDBzrmW61WdeONN6r4+Hi1d+9etXbtWhUUFKTmz5/vio9Ub77++mv17bffquPHj6tjx46pZ555Rrm7u6uDBw8qpVrudrnczp07VVRUlOrRo4d64oknHNMbcttIIFyn/v37q1mzZjme22w2FR4erhYtWuTCqhrOrwPBbrersLAw9eqrrzqm5ebmKpPJpD799FOllFKHDx9WgNq1a5djme+++07pdDp17ty5Bqvd2TIzMxWgNm3apJTStoO7u7v67LPPHMscOXJEASohIUEppYWtXq9X6enpjmXeeecd5efnpywWS8N+ACdr1aqV+vvf/y7bRSlVUFCgOnXqpNatW6eGDBniCISG3jZyyOg6lJWVsXv3buLj4x3T9Ho98fHxJCQkuLAy1zlz5gzp6elVtonZbCY2NtaxTRISEvD396dv376OZeLj49Hr9ezYsaPBa3aWvLw8AAICAgDYvXs35eXlVbZN586diYyMrLJtunfvTmhoqGOZ22+/nfz8fA4dOtSA1TuPzWZj5cqVFBUVERcXJ9sFmDVrFqNHj66yDaDh/2akc7vrkJWVhc1mq/IPARAaGsrRo0ddVJVrpaenA9S4TSrnpaenExISUmW+wWAgICDAsUxTZ7fbmT17NoMGDeLG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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAADeCAYAAAA933f2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAx30lEQVR4nO3dd3xUdb7/8ddMJjPpE9IJJAQIhiJFWgigrBCRIrqKjV3pIrBYKLorekXxurJer2D5YbmugO6qgFjWVSwsUiUUqaHXFCCFJKQnk8zM9/fHSQZiAiaQyaR8no/HeZyZc87M+cwhzHvO+Z7zPTqllEIIIUSLp3d1AUIIIRoHCQQhhBCABIIQQogKEghCCCEACQQhhBAVJBCEEEIAEghCCCEqSCAIIYQAJBCEEEJUkEAQQggBNKFAeOGFF9DpdFWGzp07O+aXlpYya9YsAgMD8fHxYezYsWRkZLiwYiGEaFqaTCAAdOvWjbS0NMewdetWx7w5c+bw73//m88++4xNmzZx/vx57rnnHhdWK4QQTYvB1QXUhcFgICwsrNr0vLw8PvjgAz755BOGDh0KwPLly+nSpQvbt29nwIABDV2qEEI0OU0qEE6cOEF4eDgeHh7ExcWxaNEiIiMj2b17N+Xl5cTHxzuW7dy5M5GRkSQkJFwxECwWCxaLxfHcbreTk5NDYGAgOp3O6Z9HCCGcTSlFQUEB4eHh6PVXPyjUZAIhNjaWFStWEBMTQ1paGgsXLuTmm2/m4MGDpKenYzQa8ff3r/Ka0NBQ0tPTr/ieixYtYuHChU6uXAghXC81NZW2bdtedZkmEwgjR450PO7RowexsbG0a9eO1atX4+npeU3vOX/+fObOnet4npeXR2RkJKmpqfj5+V13zUII4Wr5+flERETg6+v7m8s2mUD4NX9/f2644QZOnjzJbbfdRllZGbm5uVX2EjIyMmpsc6hkMpkwmUzVpvv5+UkgCCGaldocBm9SZxldrrCwkFOnTtG6dWv69OmDu7s769evd8w/duwYKSkpxMXFubBKIYRoOprMHsKTTz7JmDFjaNeuHefPn+f555/Hzc2NcePGYTabmTp1KnPnziUgIAA/Pz8ee+wx4uLi5AwjIYSopSYTCGfPnmXcuHFkZ2cTHBzM4MGD2b59O8HBwQAsWbIEvV7P2LFjsVgs3H777bz99tsurloIIZoOnVJKubqIxiI/Px+z2UxeXp60IQghmoW6fK812TYEIYQQ9UsCQQghBCCBIIQQooIEghBCCEACQQghRAUJBCGEEIAEghBCiAoSCEIIIQAJBCGEEBUkEIQQQgASCEIIISpIIAghhAAkEIQQQlSQQBBCCAFIIAghhKgggSCEEAKQQBBCCFFBAkEIIQQggSCEEKKCBIIQQghAAkEIIUQFCQQhhBCABIIQQogKEghCCCEACQQhhBAVJBCEEEIAEghCCCEqGK7lRSkpKSQnJ1NcXExwcDDdunXDZDLVd21CCCEaUK0DISkpiXfeeYeVK1dy9uxZlFKOeUajkZtvvplHHnmEsWPHotfLjocQQjQ1tfrmfvzxx+nZsydnzpzhpZde4vDhw+Tl5VFWVkZ6ejpr165l8ODBLFiwgB49erBr1y5n1y2EEKKe1WoPwdvbm9OnTxMYGFhtXkhICEOHDmXo0KE8//zzfP/996SmptKvX796L1YIIYTz6NTlx35auPz8fMxmM3l5efj5+bm6HCGEuG51+V6r9cH+vn378u6775Kfn3/dBQohhGh8ah0IPXv25M9//jOtW7dm/PjxbNy40YllCSGEaGi1DoQPPviA9PR0li5dSmpqKsOGDSM6OpqXX36Zc+fOObNGIYQQDaBO54d6eXkxadIkNm7cyPHjx3nwwQd57733iIqKYvTo0XzxxRfOqlMIIYSTXXejslKKzz//nOnTp5Obm4vNZquv2hqcNCoLIZqbunyvXdOVypU2btzI8uXL+fzzzzEYDEybNu163k4IIYQL1TkQzp49y4oVK1ixYgWnT5/m5ptv5u233+a+++7D09PTGTUKIYRoALUOhNWrV7Ns2TLWr19PSEgIEydOZMqUKURHRzuzPiGEEA2k1oHw0EMPMXr0aL788ktGjRol/RUJIUQzU+tAOHv2LCEhIc6sRQghhAvVOhAuD4Pz58+zdetWMjMzsdvtVZZ7/PHH6686IYQQDabOjcorVqxg+vTpGI1GAgMD0el0jnk6nU4CQQghmqg6X4cQERHBjBkzmD9/frNrR5DrEIQQzY1TOrerVFxczIMPPtjswkAIIVq6On+rT506lc8++8wZtQghhHChOh8ystls3HHHHZSUlNC9e3fc3d2rzF+8eHG9FtiQ5JCREKK5cWrXFYsWLeKHH34gJiYGoFqjcmOwdOlSXn31VdLT0+nZsydvvfUW/fv3d3VZQgjRqNU5EF577TWWLVvGpEmTnFDO9Vu1ahVz587l3XffJTY2ltdff53bb7+dY8eOyXUUQghxFXVuQzCZTAwaNMgZtdSLxYsXM23aNCZPnkzXrl1599138fLyYtmyZa4uTQghGrU6B8ITTzzBW2+95YxarltZWRm7d+8mPj7eMU2v1xMfH09CQkK15S0WC/n5+VUGIYRoqep8yGjnzp389NNPfPPNN3Tr1q1ao7Irb5KTlZWFzWYjNDS0yvTQ0FCOHj1abflFixaxcOHChipPCCEatToHgr+/P/fcc48zamlw8+fPZ+7cuY7n+fn5REREuLAiIYRwnToHwvLly51RR70ICgrCzc2NjIyMKtMzMjIICwurtrzJZMJkMjVUeUII0ag1q8uNjUYjffr0Yf369Y5pdrud9evXExcX58LKhBCi8atVIIwYMYLt27f/5nIFBQW88sorLF269LoLu1Zz587l/fff58MPP+TIkSPMnDmToqIiJk+e7LKaRN2k5hQzZ9U+nvpsP9d5y28hRB3U6pDRfffdx9ixYzGbzYwZM4a+ffsSHh6Oh4cHFy9e5PDhw2zdupW1a9cyevRoXn31VWfXfUUPPPAAFy5cYMGCBaSnp9OrVy++//77ag3NovEpLbfx3qbTvL3xJBar1q369CEdiA7xdXFlQrQMte66wmKx8Nlnn7Fq1Sq2bt1KXl6e9gY6HV27duX2229n6tSpdOnSxakFO5N0XeE6649ksPDfh0nJKQbATa/DZlcseaAnd9/U1sXVCdF01eV7rc59GVXKy8ujpKSEwMDAaqeeNlUSCA0vPa+U5/51kHWHtRMBQv1M/NforuxOvsiKbUlMGdSeBWO6urhKIZoup/ZlVMlsNmM2m6/15aKFU0qxalcqf117hIJSKwa9jqmD2/PYsE74mAyUVRwy2n8217WFCtGCXHMgCHGtUnOKmf9FIltPZgHQs62Z/7m3JzFhl9oK+kUFALA/NZfiMiteRvlTFcLZ5H+ZaDBKKf6xPZlFa49SUm7DZNDz5PAYpgxuj5u+ak+5EQGetPH35FxuCbuSLjLkhmAXVS1Ey9GsrkMQjdeFAguTV+xiwb8OUVJuI7Z9AD/MvoVpt3SoFgagnawwsGMgANtOZTV0uUK0SLKHIJzup6MZPPXZAbKLyjAa9DwzsjMT4qLQ1xAElxsYHchnu8+y7WR2A1UqRMt2TYGQm5vLmjVrOHXqFE899RQBAQHs2bOH0NBQ2rRpU981iibKYrXx8rdH+DAhGYDOYb688eBNVdoKrmZgxyAADp7PI7e4DH8vo9NqFUJcQyAcOHCA+Ph4zGYzSUlJTJs2jYCAAL744gtSUlL46KOPnFGnaGLO5Zbwp4/3sD81F4Apg9rz5xExeLi71fo9Qv086BTiw4nMQjYcy5TrEYRwsjq3IcydO5dJkyZx4sQJPDw8HNNHjRrF5s2b67U40TRtPn6BO97cwv7UXMye7iyf1I8FY7rWKQwqjezeGoBvD6TVd5lCiF+pcyDs2rWL6dOnV5vepk0b0tPT66Uo0TTZ7Yo3159g4vKdXCwup3sbM988NphbO1/7rUvv6KEFwubjWeSVlNdXqUKIGlzTLTRrurPY8ePHCQ6WUwNbqtJyG49+uofF646jFIzrH8FnM+KICPC6rve9IdSXTiE+lNns/Odwxm+/QAhxzeocCHfeeScvvvgi5eXarzWdTkdKSgp/+ctfGDt2bL0XKBq/zIJSHvi/7axNTMfdTccrY7uz6J4e13SIqCZ39AgHYM3us/XyfkKImtU5EF577TUKCwsJCQmhpKSEIUOGEB0dja+vL3/961+dUaNoxI6m53P30m3sT83F38udf0yN5YF+kfW6jvv6tkWvg4TT2ZzMLKzX9xZCXFLns4zMZjPr1q1j69atHDhwgMLCQnr37l3lxvaiZdhy4gIz/7mHQouVDkHefDCpH+2DvOt9PeH+ngztHMp/jmTw8Y5knh/Trd7XIYS4jt5OmyPp7bT2vktM4/GVeym3KQZ0CODdh/o49TqBjccymbR8F74eBrY9PRRfj+bRw64QzubU3k7ffPPNGqfrdDo8PDyIjo7mlltuwc2tfo4fi8Zn9a5Unv7iAHYFo7u3ZskDvTAanNsLyi2dgukQ7M3pC0X8c3sKM3/X0anrE6IlqvMeQvv27blw4QLFxcW0atUKgIsXL+Ll5YWPjw+ZmZl06NCBDRs2EBER4ZSinUX2EH7b+5tP89e1RwDtTKKXft+9xr6InOHz3WeZ99l+gnyMbPnzUDyN8qNDiN9Sl++1Ov+se/nll+nXrx8nTpwgOzub7Oxsjh8/TmxsLG+88QYpKSmEhYUxZ86ca/4AonF6b9MpRxhMH9KBl+9uuDAAuLNXOG1beZJVWMY/tic12HqFaCnqvIfQsWNHPv/8c3r16lVl+t69exk7diynT59m27ZtjB07lrS0pnV1qewhXNnft5zmpW+1MJh72w08PqyTS+pY/Usqf15zAF8PA5ueupUAb+nfSIirceoeQlpaGlartdp0q9XquFI5PDycgoKCur61aKRW/HzGEQZPDOvksjAAGNu7LV1b+1FQauX1/xx3WR1CNEd1DoRbb72V6dOns3fvXse0vXv3MnPmTIYOHQpAYmIi7du3r78qhct8ujOFF/59GIBHb41mdrzrwgDATa/jv+7oAsDHO1I4kSE/PISoL3UOhA8++ICAgAD69OmDyWTCZDLRt29fAgIC+OCDDwDw8fHhtddeq/diRcP68VA6z36ZCGhtBvOG34BO13BtBlcysGMQt3UNxWZXPPvVQex2OXNaiPpwzdchHD16lOPHtV32mJgYYmJi6rUwV5A2hEt2J1/kD+9vx2K182C/CBbd071RhEGl1Jxibn99M8VlNhbe2Y2JA6NcXZIQjVJdvtfkwrTLSCBoTmYWcu+728gtLmdo5xD+b3wfDG6N726r/0hI4rl/HcLL6MYPs2+57o70hGiOnHphGsDZs2f5+uuvSUlJoaysrMq8xYsXX8tbikYiq9DCxGU7yS0up2eEP//vDzc1yjAA+GNsO75NTGP76Rxmr9rHykcG4N5IaxWiKahzIKxfv54777yTDh06cPToUW688UaSkpJQStG7d29n1CgaSJnVzp/+uYdzuSVEBXqxbGJfvIyN97bber2OV+/tyag3t7A7+SKv/nCMZ0Z1cXVZQjRZdf45NX/+fJ588kkSExPx8PDg888/JzU1lSFDhnDfffc5o0bRQF785hA7k3LwNRn4+8R+BPqYXF3Sb4oI8OLVe3sC8H+bT/PjIblJkxDXqs6BcOTIESZMmACAwWCgpKQEHx8fXnzxRV555ZV6L1A0jE92pPDP7SnodPD6g72IDvFxdUm1NuLGMKYO1k5znrNqH0fSqt/ASQjx2+ocCN7e3o52g9atW3Pq1CnHvKysrPqrTDSYxLN5vPD1IQCeHB7DsC6hLq6o7v4yojNxHQIpKrMxdcUuMgtKXV2SEE1OnQNhwIABbN26FYBRo0Yxb948/vrXvzJlyhQGDBhQ7wUK5yooLefRT/dQZrMzvGsof2qivYgaDXrefagPHYK9OZ9XypQVu+QezELUUZ0DYfHixcTGxgKwcOFChg0bxqpVq4iKinJcmCaaBqUU879IJDm7mDb+nrx6b89Gda1BXZm93Fk2sR+B3kYOnstn8vKdFFqqd7MihKiZXIdwmZZ2HcLKnSk8/UUiBr2O1TPi6B3ZytUl1YvD5/MZ9/528krK6d8+gA8n95euskWL5dTO7Tp06EB2dna16bm5uXTo0KGubydcJCW7mBe/0fooevL2mGYTBgBdw/34x9T++JoM7DyTw8TlO+XwkRC1UOdASEpKwmazVZtusVg4d+5cvRQlnMtuVzy1Zj/FZTZi2wfwyM3NL8h7tPVnxZR+jlB44L0EMvOloVmIq6n1VUdff/214/EPP/yA2Wx2PLfZbKxfv56oqKh6LU44x0cJSew4k4OX0Y1X7+2JvgFvctOQ+rQLYOX0AUxctouj6QXc8842Vkzu36ROqRWiIdW6DUGv13YmdDodv36Ju7s7UVFRvPbaa9xxxx31X2UDaQltCElZRYx8Ywsl5TZevKsbE+KiXF2S06VkFzN+2Q6Ss4vxNRl4/cFeTfLUWiGuhVPaEOx2O3a7ncjISDIzMx3P7XY7FouFY8eONekwaAmUUvzXVwcpKbcR1yGQh2LbubqkBhEZ6MXnMwfSPyqAAouVhz/6hTfXn5Bus4X4lTq3IZw5c4agoCBn1CKc7LuD6Ww9mYXRoOdvY7s320NFNQnyMfHPh2OZENcOpWDxuuNMXL5T2hWEuEyt2hDefPPNWr/h448/fs3FCOcpLrPyUsVZRTOGdKRdoLeLK2p4RoOeF++6kRvbmFnwr4NsOZHFiDe28MrYHtzWVQ4hCVGrNoTa3g5Tp9Nx+vTp6y7KVZpzG8L/fH+Utzeeom0rT/4zdwge7i37vPyTmYU8/uleDlf0e3Rnz3AWjOlKUBPo0E+IupAb5Fyj5hoIpy8Ucvvrmym3Kf5vfB+GdwtzdUmNgsVq47Ufj/P3LaexK/D3cufZUV24t0/bJn3FthCXc+qFaZdTSlU740g0Pv/z/THKbYrfxQTLoZHLmAxuPDOqC1/NGkTX1n7kFpfz1JoD3P9eAvtTc11dnhAN7poC4aOPPqJ79+54enri6elJjx49+Mc//lHftYl6sDflIt8fSkevg2dGdZFfvjXo0daffz06iKdHdsbDXc+upIvctfRnZq/cy7ncEleXJ0SDuabO7WbOnMmoUaNYvXo1q1evZsSIEcyYMYMlS5Y4o0ZxjZRSvPL9UQDu6d2WG0J9XVxR4+XupmfGkI5sePJ33NO7DQBf7TvPrf+7kQX/Osh5CQbRAtS5DaF9+/YsXLjQcZOcSh9++CEvvPACZ86cqdcCG1Jza0PYdPwCE5ftxGjQs+HJ39HG39PVJTUZiWfz+Ovaw2w/nQOAu5uO+/pGMHNIRyICvFxcnRC159Q2hLS0NAYOHFht+sCBA0lLS6vr2wknUUrx5voTAIwf0E7CoI66tzXz6bQBfDItlgEdAii3KT7ZkcKt/7uRxz7dy+7ki9J+JpqdOgdCdHQ0q1evrjZ91apVdOrUqV6KEtdvx5kcdidfxGjQM/2W5td5XUPQ6XQM7BjEykfiWD09jsHRQVjtin/vP8/Yd7Zx19Kf+WLPWUrLq3f2KERTVOvO7SotXLiQBx54gM2bNzNo0CAAfv75Z9avX19jUAjXWLrhJAD3921LiJ+Hi6tphOw2KMmF4mywFICtrOqgFLi5g94Abu7017vzz1GeHM9ry8f7cllzKJ8DZ/OYu3o/L3x9iDt7hXNvnwh6tjVLw71osmrdhnDw4EFuvPFGAHbv3s2SJUs4cuQIAF26dGHevHncdNNNTis0KiqK5OTkKtMWLVrE008/7Xh+4MABZs2axa5duwgODuaxxx7jz3/+c63X0VzaEPan5nLX0p9x0+vY+OTvWuYxb6Ug/xxkHIKc03Ax6dJQmKGFAdd3yMeqN5Fn9+SC3Zcs5UcWZqwegbRtG8UNHTsQEBoBvq3B3BY8zCBBIVygLt9rtd5D6NGjB/369ePhhx/mwQcf5J///Od1F1pXL774ItOmTXM89/W9dNZMfn4+w4cPJz4+nnfffZfExESmTJmCv78/jzzySIPX6kr/t1m7WvyuXuEtJwzKiiB1ByT9DOd+gbQDUJLz268zmcHDD9yM2mCoGKMDeznYKgZ7OZSXQGk+lBcBYLBbCMRCoD730vuVA2cqhssZfbRg8GujjSsHvzbgH6k9dnOvn20hxDWqdSBs2rSJ5cuXM2/ePObMmcO9997L1KlTufnmm51ZXxW+vr6EhdV8le3HH39MWVkZy5Ytw2g00q1bN/bt28fixYtbVCBk5Jfyw6F0AKY1wxvfOCil/fo//h0c/xHO7wH7r+6frHOD4M4QFA2torTBvx34hYNXIHi2urYvYZsVygq0cCjNg+IsKLxAaW4aZ5KTyExLhaJMgskjTJdNgK4QygrhwlFtqInODcxtLtVYWW/lc+8g2cMQTlfn006LiopYvXo1K1asYMuWLURHRzN16lQmTpx4xS/r+hAVFUVpaSnl5eVERkbyhz/8gTlz5mAwaJk2YcIE8vPz+eqrrxyv2bBhA0OHDiUnJ4dWrarfItJisWCxWBzP8/PziYiIaNKHjF7/z3Fe/88J+kW14rMZ1c8Ga9KUgrT9cGA1HPk35KVUnW+OgHaDIHIAtO4JIV3B3TXtJ1mFFtYdzuC7g+nsOXmOEJVFa1024bpsIt1y6OVXSAdjLsH2C7gXnkNn/Y1eV929oVW7XwXGZc+NLWRPUNSZUw4ZVfL29mby5MlMnjyZkydPsnz5cpYuXcpzzz3HiBEjqtxZrT49/vjj9O7dm4CAALZt28b8+fNJS0tj8eLFAKSnp1frhC80NNQxr6ZAWLRoEQsXLnRKva5QbrPzyQ7tS/KhAc3oXgd55+DAKm24/Be2wQM63AoxI7Rxq8bzmYN8TIzrH8m4/pHkFZez8Xgmm49nsfHEBS4UWCDr0rLB3gaGtoPBwUX08s4lnEzccpMhN1lr88g/rx2myjysDTXxDtE+v3/kr4Z2WlC6KBhF03LdndsVFRXx8ccfM3/+fHJzc2u83/KVPP3007zyyitXXebIkSN07ty52vRly5Yxffp0CgsLMZlMDB8+nPbt2/Pee+85ljl8+DDdunXj8OHDdOnSpdp7NLc9hLWJafzp4z0E+ZjY9vRQjIbr6qrKtex2OL0Bdn2gHRZSdm26mwliRkL3+6Dj0Cb3y1gpxZG0AjafuMDm4xf4JfkiZVZ7lWV8TAZ6tDXTva2ZHm386RHmQVt9FrrKgLiYBBeTL40teb+9Yp/QGsJCAqMlcOoeQqXNmzezbNkyPv/8c/R6Pffffz9Tp06t03vMmzePSZMmXXWZDh1qPg4eGxuL1WolKSmJmJgYwsLCyMjIqLJM5fMrHcoymUyYTM2nu+PKvYNx/SOabhiUXIR9n2hBkHPq0vR2g6Dng9D1Lu2MnSZKp9PRNdyPruF+zBjSEYvVRuLZPHYm5bDzTA67ky5SYLGy7VQ2205lO17n7+VO9zZmbmwzmBtCR3DDjb50DPbRujEvuaiFQ25KzUNZoXZmVWEGnN1Vc2GVgWGO0NpYKgffynGYNHq3AHUKhPPnz7NixQpWrFjByZMnGThwIG+++Sb3338/3t51v+FKcHAwwcHBdX4dwL59+9Dr9YSEhAAQFxfHs88+S3l5Oe7u2h/uunXriImJqfFwUXOTnlfKz6e04xD3941wcTXXIPMIJCyFxDVgreg3yOQHvf4AfadC8A2urc9JTAY3+kYF0DcqgD/9Dmx2xbH0AhLP5XLgbB6J5/I4kpZPbnE5W05kseXEpWNNeh1EBXrTKdSHmFBfokP7ERU5hHY3eWP2rPjyVkoLjCuFRW5y7QIDnRYafq21M6P8wrVTav3aaNN8QsE7WGuol8bvJqvWh4xGjhzJf/7zH4KCgpgwYQJTpkwhJibG2fUBkJCQwI4dO7j11lvx9fUlISGBOXPmMHLkSD788EMA8vLyiImJYfjw4fzlL3/h4MGDTJkyhSVLltT6LKOmfB3Ce5tOsei7o02vMTl1J2xdAsfWXpoW0g36Pwzd7weTj+tqayQsVhvH0wvZfzaXo+n5HE8v5FhGAXkl5Vd8TSsvdyIDvYkK9KJdxbhtKy/C/T0I9fPA3a1iD7JKYCRr7TX556AgTWu7yD8H+Wnaabe1oXcHnxAtHHxCwadi7B1S9bF3EHj4g76J7sk2IU45ZOTu7s6aNWu44447cHNr2LttmUwmVq5cyQsvvIDFYqF9+/bMmTOHuXPnOpYxm838+OOPzJo1iz59+hAUFMSCBQtazCmnX+49B8DdN7V1cSW1oBScXA9bF0PyzxUTddDlDhgwSztLSH5lOpgMbnSvaFOopJTiQoGF4xlaOBxPL+B0ViHJ2cVkFli4WFzOxeLcGu/roNNBiK+J1mZPwv09KsZmWpv7ExRmIijaSJCvCV+TQbvq2m7XrujOP3cpJH4dGEWZ2im49vKKaed++4Pp9FooeAWAZ4C2d1H52KtVxTig6tjDT7umQ/4+nELumHaZprqHcCKjgNuWbMbdTceuZ+Px9zK6uqSa2axw+CvY+jpkJGrT9O7Q8wEYNBuCpC+s+lBksZKSU0xydhFJ2RXjrGLO5ZaQnldKmc3+228CmAx6gnxMBPkYK8YmgnyNBHqb8Pdyx+zpXjE2YvZ0x+xuw1iarYVDYcVQlAmFF7TDUUUXLk2vTUP4Fem0w4kefmDyvcpj86XH7l5g9K4Ye2mn8Rq9tOf65n072QZpVBaNx4+HtcbzwdFBjTMMykth38ew7U2t8RO0/5B9J8OAP2kXZIl6420y0KW1H11aV//Pb7crsovKSMsr4XxuacW4hPN5pWTklZJVaCGrsIxCixWL1c653JI63STIy+iGv6c7Zi8fzJ7+mD274WNyx8fkhpefAR+TAW+jGz7uila6QsyqAF9VgI89H09rHp7WPIxluehLLqIruahdbV5yEYpztMd2K6C0QLmuULmMm6l6SBi9wd1Te+zupV3BbvCouJrd9KvHJu09qjz+1fJuRq1frIq+sRyPL3+u07t8z0cCoRmoDITbujayeyWX5sEvyyDhbe2XImi7/QNmQr+HtcMAokHp9TqCfU0E+5rocZWjiyVlNrIKLVwotJBVoIWEFhYWsovKyC8pJ7e4nLyScnKLyyiwWFEKistsFJfZOJ/3GxfaVeNdMYRrderAw91NGwx6PNzdMPnpMbuX08rNQiu3Usz6Yvx0pfjqSvClGB+K8VbFeNqL8LAXYbIVYbIVYrIWYrCXYrCW4GYrwWArQW8tQVfZl5XNAiUWLXhcTe9+WUi4Xfb8sgC57UXt1GsnkEBo4jLyS9mfmotOB/FdQ1xdjqYgA3a8o506asnXpvm1hYGPQe/x2q8v0ah5Gt2ICPCqdV9YNruioLQyICrGJdq4yGKlyGKlsGJcZLE5HhdarBSVXZpWeU2G/bJwqZmpYrhWCg/K8MSCFxY8ddrYS2fBE22ofOxBGUaseOjKMOmsmHRWPHXlmLBi1FnxoByj43k5RsoxYsVEGe5Ke27Aihs23JRNG3OFw3b2in6zrFfeK0s6n0GUk87nkUBo4tZV7B30ivAnxNfFFxflnIZtb8Hej7VfXaD1JTRoNnS/V85jb8bc9Dr8vYz4exlpF3jt71Nus1NssVFqtVFabqO03F4xtlFqvfTYUm53LFNSZq+yfLnt0lBmVVjtFc+tijLb5fMVZVbtcbHNTrrt0nxnt6zqsOOGHQO2ywY7bthw12mhYahxsDPZ8yainFSXBEITt+XEBQDiu4S6roj0RK2h+NAXl64obtsPBs+FG0bIqYWi1tzd9Ji99Jhx3Y8HpRQ2u6LcpoWJ3Q5Wux1bxfRqg1JYbQq7UljtCrv90thWwzSrvWJZm/Z6hcKutL0spbTH9op1qYrHldPsdkX7KOcdGpZAaMLsduW45+/Ajtfxs+xaKAVnNsHPb8Cpny5Nj46HwXO0K4vl1EDRBOl0OgxuOgxuAM37DKRfk0Bowg6n5ZNXUo6PyUD3Ng3UnUPlqaM/vwHpB7RpOj10/b0WBK17NEwdQoh6J4HQhCVU9HXTv30ABjcnH5YpztH6GNr5nnZVK4DBU2skjpuldcMshGjSJBCasITTWiDEdXDi4aJzu7WzhQ5+DpV99nsFQuwMOXVUiGZGAqGJstsVu85o7Qdx9d1+kJ8GB9do9x9IT7w0PbQ79Juq9Trq7lm/6xRCuJwEQhOVlF1EgcWKyaCnc5jvb7/gt1xM0m5FefQbOLMZxw3o3YzQ7W5tb6BtP2koFqIZk0Boog6e1y746tLa79raD/LOaj2Nnt2lnSX063v9RsRCj/uh693g3cBnMAkhXEICoYk6dF7rx+XGNlforMpqgaKsS52L5SZD1gnIPgGZR6HgfNXldW5aL6Odhms3oQloX/P7CiGaLQmEhma3a32mFF3QunUozdfGloJL4/ISsJVpX+qOsQWsZY7xfWnZ3GUspe0JHbxu1+ZZSy8tr37jVqY6NwjtBhH9od1A7XaUns3/RkJCiCuTQHCG4hzIOKT9Gs86qd0KsiD9UnfAdut1ryIaQA8UXWUhvUG7UYl3kNaXUFA0BHaCoBu06wWkTyEhxGUkEK6TUorUixexnNmOz5nv8DyXgDH35NVfpNNhN/lhM5qxG32wu3tjN/pVjH1RBg+Um/HSoLvssZs7+eV6lmxIxqYz8v8mxOJu8tJ6RXR0v2vUbppu9Lt6txHlxfW7MYQQTudp8NRuXOQEcoOcy1zLDXKKy4uJ/STWyZUJIYRmxx924OVeu15ooW7fa9LrmBBCCEAOGV03T4MnO+7fpD0xuLj7aSFEs+dpcN5FoRII10mn0+HlKd03CCGaPjlkJIQQApBAEEIIUUECQQghBCCBIIQQooIEghBCCEACQQghRAUJBCGEEIAEghBCiApyYdplKrt1ys/Pd3ElQghRPyq/z2rTbZ0EwmUKCgoAiIiIcHElQghRvwoKCjCbzVddRno7vYzdbuf8+fP4+vrWqXvZ/Px8IiIiSE1NrXUvqS2FbJuayXa5Mtk2NbvW7aKUoqCggPDwcPRX6w4f2UOoQq/X07Zt22t+vZ+fn/wBX4Fsm5rJdrky2TY1u5bt8lt7BpWkUVkIIQQggSCEEKKCBEI9MJlMPP/885hMJleX0ujItqmZbJcrk21Ts4bYLtKoLIQQApA9BCGEEBUkEIQQQgASCEIIISpIIAghhAAkEOrF0qVLiYqKwsPDg9jYWHbu3Onqkpxq8+bNjBkzhvDwcHQ6HV999VWV+UopFixYQOvWrfH09CQ+Pp4TJ05UWSYnJ4c//vGP+Pn54e/vz9SpUyksLGzAT1H/Fi1aRL9+/fD19SUkJITf//73HDt2rMoypaWlzJo1i8DAQHx8fBg7diwZGRlVlklJSWH06NF4eXkREhLCU089hdVqbciPUu/eeecdevTo4bioKi4uju+++84xv6Vul1/729/+hk6nY/bs2Y5pDbptlLguK1euVEajUS1btkwdOnRITZs2Tfn7+6uMjAxXl+Y0a9euVc8++6z64osvFKC+/PLLKvP/9re/KbPZrL766iu1f/9+deedd6r27durkpISxzIjRoxQPXv2VNu3b1dbtmxR0dHRaty4cQ38SerX7bffrpYvX64OHjyo9u3bp0aNGqUiIyNVYWGhY5kZM2aoiIgItX79evXLL7+oAQMGqIEDBzrmW61WdeONN6r4+Hi1d+9etXbtWhUUFKTmz5/vio9Ub77++mv17bffquPHj6tjx46pZ555Rrm7u6uDBw8qpVrudrnczp07VVRUlOrRo4d64oknHNMbcttIIFyn/v37q1mzZjme22w2FR4erhYtWuTCqhrOrwPBbrersLAw9eqrrzqm5ebmKpPJpD799FOllFKHDx9WgNq1a5djme+++07pdDp17ty5Bqvd2TIzMxWgNm3apJTStoO7u7v67LPPHMscOXJEASohIUEppYWtXq9X6enpjmXeeecd5efnpywWS8N+ACdr1aqV+vvf/y7bRSlVUFCgOnXqpNatW6eGDBniCISG3jZyyOg6lJWVsXv3buLj4x3T9Ho98fHxJCQkuLAy1zlz5gzp6elVtonZbCY2NtaxTRISEvD396dv376OZeLj49Hr9ezYsaPBa3aWvLw8AAICAgDYvXs35eXlVbZN586diYyMrLJtunfvTmhoqGOZ22+/nfz8fA4dOtSA1TuPzWZj5cqVFBUVERcXJ9sFmDVrFqNHj66yDaDh/2akc7vrkJWVhc1mq/IPARAaGsrRo0ddVJVrpaenA9S4TSrnpaenExISUmW+wWAgICDAsUxTZ7fbmT17NoMGDeLGG28EtM9tNBrx9/evsuyvt01N265yXlOWmJhIXFwcpaWl+Pj48OWXX9K1a1f27dvXorfLypUr2bNnD7t27ao2r6H/ZiQQhHCCWbNmcfDgQbZu3erqUhqNmJgY9u3bR15eHmvWrGHixIls2rTJ1WW5VGpqKk888QTr1q3Dw8PD1eXIWUbXIygoCDc3t2ot/hkZGYSFhbmoKteq/NxX2yZhYWFkZmZWmW+1WsnJyWkW2+3RRx/lm2++YcOGDVW6Uw8LC6OsrIzc3Nwqy/9629S07SrnNWVGo5Ho6Gj69OnDokWL6NmzJ2+88UaL3i67d+8mMzOT3r17YzAYMBgMbNq0iTfffBODwUBoaGiDbhsJhOtgNBrp06cP69evd0yz2+2sX7+euLg4F1bmOu3btycsLKzKNsnPz2fHjh2ObRIXF0dubi67d+92LPPTTz9ht9uJjY1t8Jrri1KKRx99lC+//JKffvqJ9u3bV5nfp08f3N3dq2ybY8eOkZKSUmXbJCYmVgnMdevW4efnR9euXRvmgzQQu92OxWJp0dtl2LBhJCYmsm/fPsfQt29f/vjHPzoeN+i2ue7m8RZu5cqVymQyqRUrVqjDhw+rRx55RPn7+1dp8W9uCgoK1N69e9XevXsVoBYvXqz27t2rkpOTlVLaaaf+/v7qX//6lzpw4IC66667ajzt9KabblI7duxQW7duVZ06dWryp53OnDlTmc1mtXHjRpWWluYYiouLHcvMmDFDRUZGqp9++kn98ssvKi4uTsXFxTnmV55COHz4cLVv3z71/fffq+Dg4CZ/euXTTz+tNm3apM6cOaMOHDignn76aaXT6dSPP/6olGq526Uml59lpFTDbhsJhHrw1ltvqcjISGU0GlX//v3V9u3bXV2SU23YsEEB1YaJEycqpbRTT5977jkVGhqqTCaTGjZsmDp27FiV98jOzlbjxo1TPj4+ys/PT02ePFkVFBS44NPUn5q2CaCWL1/uWKakpET96U9/Uq1atVJeXl7q7rvvVmlpaVXeJykpSY0cOVJ5enqqoKAgNW/ePFVeXt7An6Z+TZkyRbVr104ZjUYVHByshg0b5ggDpVrudqnJrwOhIbeNdH8thBACkDYEIYQQFSQQhBBCABIIQgghKkggCCGEACQQhBBCVJBAEEIIAUggCCGEqCCBIIQQApBAEKKaSZMm8fvf/95l6x8/fjwvv/yy097/8OHDtG3blqKiIqetQzRNcqWyaFF0Ot1V5z///PPMmTMHpVS1Pugbwv79+xk6dCjJycn4+Pg4bT333nsvPXv25LnnnnPaOkTTI4EgWpTLbxiyatUqFixYwLFjxxzTfHx8nPpF/FsefvhhDAYD7777rlPX8+233zJt2jRSUlIwGOS2KEIjh4xEixIWFuYYzGYzOp2uyjQfH59qh4x+97vf8dhjjzF79mxatWpFaGgo77//PkVFRUyePBlfX1+io6P57rvvqqzr4MGDjBw5Eh8fH0JDQxk/fjxZWVlXrM1ms7FmzRrGjBlTZXpUVBQvvfQSEyZMwMfHh3bt2vH1119z4cIF7rrrLnx8fOjRowe//PKL4zXJycmMGTOGVq1a4e3tTbdu3Vi7dq1j/m233UZOTk6Lv0GNqEoCQYha+PDDDwkKCmLnzp089thjzJw5k/vuu4+BAweyZ88ehg8fzvjx4ykuLgYgNzeXoUOHctNNN/HLL7/w/fffk5GRwf3333/FdRw4cIC8vLwq95qutGTJEgYNGsTevXsZPXo048ePZ8KECTz00EPs2bOHjh07MmHCBCp3+GfNmoXFYmHz5s0kJibyyiuvVNnzMRqN9OrViy1bttTzlhJN2rV20SpEU7d8+XJlNpurTZ84caK66667HM+HDBmiBg8e7HhutVqVt7e3Gj9+vGNaWlqaAlRCQoJSSqn//u//VsOHD6/yvqmpqQqo1hV4pS+//FK5ubkpu91eZXq7du3UQw89VG1dzz33nGNaQkKCAhzdInfv3l298MILV/38d999t5o0adJVlxEti+whCFELPXr0cDx2c3MjMDCQ7t27O6ZV3tS88q5V+/fvZ8OGDY42CR8fHzp37gzAqVOnalxHSUkJJpOpxobvy9dfua6rrf/xxx/npZdeYtCgQTz//PMcOHCg2nt6eno69miEADlkJEStuLu7V3mu0+mqTKv8Erfb7QAUFhYyZsyYKrdG3LdvHydOnOCWW26pcR1BQUEUFxdTVlZ21fVXrutq63/44Yc5ffo048ePJzExkb59+/LWW29Vec+cnByCg4NrtwFEiyCBIIQT9O7dm0OHDhEVFUV0dHSVwdvbu8bX9OrVC9CuE6gPERERzJgxgy+++IJ58+bx/vvvV5l/8OBBbrrppnpZl2geJBCEcIJZs2aRk5PDuHHj2LVrF6dOneKHH35g8uTJ2Gy2Gl8THBxM79692bp163Wvf/bs2fzwww+cOXOGPXv2sGHDBrp06eKYn5SUxLlz54iPj7/udYnmQwJBCCcIDw/n559/xmazMXz4cLp3787s2bPx9/dHr7/yf7uHH36Yjz/++LrXb7PZmDVrFl26dGHEiBHccMMNvP322475n376KcOHD6ddu3bXvS7RfMiFaUI0IiUlJcTExLBq1Sri4uKcso6ysjI6derEJ598wqBBg5yyDtE0yR6CEI2Ip6cnH3300VUvYLteKSkpPPPMMxIGohrZQxBCCAHIHoIQQogKEghCCCEACQQhhBAVJBCEEEIAEghCCCEqSCAIIYQAJBCEEEJUkEAQQggBSCAIIYSo8P8BwIpPzHz7ekEAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] @@ -402,14 +400,12 @@ }, { "cell_type": "markdown", - "id": "f5fbd53c", + "id": "658b032d", "metadata": {}, "source": [ "That's it! You are now ready to build your own custom simulations and equip them with channel and synapse models!\n", "\n", - "This tutorial does not have an immediate follow-up tutorial. You could read the [tutorial on groups](https://jaxleyverse.github.io/jaxley/latest/tutorial/06_groups/), which allow to make your `Jaxley` simulations more elegant and convenient to interact with.\n", - "\n", - "Alternatively, you can also directly jump ahead to the [tutorial on training biophysical networks](https://jaxleyverse.github.io/jaxley/latest/tutorial/07_gradient_descent/) which will teach you how you can optimize parameters of biophysical models with gradient descent." + "This tutorial does not have an immediate follow-up tutorial. If you have not done so already, you can check out our [tutorial on training biophysical networks](https://jaxley.readthedocs.io/en/latest/tutorials/07_gradient_descent.html) which will teach you how you can optimize parameters of biophysical models with gradient descent." ] } ], diff --git a/docs/tutorials/06_groups.ipynb b/docs/tutorials/06_groups.ipynb index 0237a2db..362f6525 100644 --- a/docs/tutorials/06_groups.ipynb +++ b/docs/tutorials/06_groups.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "af3e0abc", + "id": "51419bb0", "metadata": {}, "source": [ "# Defining groups\n", @@ -40,8 +40,8 @@ }, { "cell_type": "code", - "execution_count": 40, - "id": "bffff534", + "execution_count": 1, + "id": "d703515b", "metadata": {}, "outputs": [], "source": [ @@ -64,30 +64,21 @@ }, { "cell_type": "markdown", - "id": "89194cda", + "id": "94f247bc", "metadata": {}, "source": [ - "First, we define a network as you saw in the [previous tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/01_morph_neurons/):" + "First, we define a network as you saw in the [previous tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/02_small_network.html):" ] }, { "cell_type": "code", - "execution_count": 41, - "id": "aede87e2", + "execution_count": 2, + "id": "10c4f776", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/michaeldeistler/Documents/phd/jaxley/jaxley/modules/base.py:1533: FutureWarning: The behavior of DataFrame concatenation with empty or all-NA entries is deprecated. In a future version, this will no longer exclude empty or all-NA columns when determining the result dtypes. To retain the old behavior, exclude the relevant entries before the concat operation.\n", - " self.pointer.edges = pd.concat(\n" - ] - } - ], + "outputs": [], "source": [ "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=2)\n", + "branch = jx.Branch(comp, ncomp=2)\n", "cell = jx.Cell(branch, parents=[-1, 0, 0, 1])\n", "network = jx.Network([cell for _ in range(3)])\n", "\n", @@ -102,7 +93,7 @@ }, { "cell_type": "markdown", - "id": "1cf2350c", + "id": "465fc6fa", "metadata": {}, "source": [ "### Group: apical dendrites\n", @@ -111,8 +102,8 @@ }, { "cell_type": "code", - "execution_count": 42, - "id": "f89707da", + "execution_count": 3, + "id": "3f23fceb", "metadata": {}, "outputs": [], "source": [ @@ -123,7 +114,7 @@ }, { "cell_type": "markdown", - "id": "70ba6d44", + "id": "ee58e3e9", "metadata": {}, "source": [ "After this, we can access `network.apical` as we previously accesses anything else:" @@ -131,8 +122,8 @@ }, { "cell_type": "code", - "execution_count": 43, - "id": "8f1bf2de", + "execution_count": 4, + "id": "5b2c9ee1", "metadata": {}, "outputs": [], "source": [ @@ -141,409 +132,17 @@ }, { "cell_type": "code", - "execution_count": 44, - "id": "55e9dddc", + "execution_count": 5, + "id": "1e6efa3e", "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
comp_indexbranch_indexcell_indexlengthradiusaxial_resistivitycapacitancevNaNa_gNa...K_gKeKK_nLeakLeak_gLeakLeak_eLeakglobal_comp_indexglobal_branch_indexglobal_cell_indexcontrolled_by_param
221010.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.02100
331010.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.03100
663010.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.06300
773010.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.07300
10105110.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.010510
11115110.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.011510
14147110.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.014710
15157110.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.015710
18189210.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.018920
19199210.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.019920
222211210.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.0221120
232311210.00.35000.01.0-70.0True0.05...0.005-90.00.2True0.0001-70.0231120
\n", - "

12 rows × 25 columns

\n", - "
" - ], "text/plain": [ - " comp_index branch_index cell_index length radius axial_resistivity \\\n", - "2 2 1 0 10.0 0.3 5000.0 \n", - "3 3 1 0 10.0 0.3 5000.0 \n", - "6 6 3 0 10.0 0.3 5000.0 \n", - "7 7 3 0 10.0 0.3 5000.0 \n", - "10 10 5 1 10.0 0.3 5000.0 \n", - "11 11 5 1 10.0 0.3 5000.0 \n", - "14 14 7 1 10.0 0.3 5000.0 \n", - "15 15 7 1 10.0 0.3 5000.0 \n", - "18 18 9 2 10.0 0.3 5000.0 \n", - "19 19 9 2 10.0 0.3 5000.0 \n", - "22 22 11 2 10.0 0.3 5000.0 \n", - "23 23 11 2 10.0 0.3 5000.0 \n", - "\n", - " capacitance v Na Na_gNa ... K_gK eK K_n Leak Leak_gLeak \\\n", - "2 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "3 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "6 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "7 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "10 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "11 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "14 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "15 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "18 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "19 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "22 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "23 1.0 -70.0 True 0.05 ... 0.005 -90.0 0.2 True 0.0001 \n", - "\n", - " Leak_eLeak global_comp_index global_branch_index global_cell_index \\\n", - "2 -70.0 2 1 0 \n", - "3 -70.0 3 1 0 \n", - "6 -70.0 6 3 0 \n", - "7 -70.0 7 3 0 \n", - "10 -70.0 10 5 1 \n", - "11 -70.0 11 5 1 \n", - "14 -70.0 14 7 1 \n", - "15 -70.0 15 7 1 \n", - "18 -70.0 18 9 2 \n", - "19 -70.0 19 9 2 \n", - "22 -70.0 22 11 2 \n", - "23 -70.0 23 11 2 \n", - "\n", - " controlled_by_param \n", - "2 0 \n", - "3 0 \n", - "6 0 \n", - "7 0 \n", - "10 0 \n", - "11 0 \n", - "14 0 \n", - "15 0 \n", - "18 0 \n", - "19 0 \n", - "22 0 \n", - "23 0 \n", - "\n", - "[12 rows x 25 columns]" + "View with 3 different channels. Use `.nodes` for details." ] }, - "execution_count": 44, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -554,7 +153,7 @@ }, { "cell_type": "markdown", - "id": "aa566437", + "id": "ac885848", "metadata": {}, "source": [ "### Group: fast spiking\n", @@ -563,8 +162,8 @@ }, { "cell_type": "code", - "execution_count": 45, - "id": "afe49576", + "execution_count": 6, + "id": "0b8e9b38", "metadata": {}, "outputs": [], "source": [ @@ -574,8 +173,8 @@ }, { "cell_type": "code", - "execution_count": 46, - "id": "02a70f59", + "execution_count": 7, + "id": "25322ebf", "metadata": {}, "outputs": [], "source": [ @@ -584,521 +183,17 @@ }, { "cell_type": "code", - "execution_count": 47, - "id": "6297373e", + "execution_count": 8, + "id": "f98f4e74", "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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
comp_indexbranch_indexcell_indexlengthradiusaxial_resistivitycapacitancevNaNa_gNa...K_gKeKK_nLeakLeak_gLeakLeak_eLeakglobal_comp_indexglobal_branch_indexglobal_cell_indexcontrolled_by_param
000010.01.05000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.00000
110010.01.05000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.01000
221010.00.35000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.02100
331010.00.35000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.03100
442010.01.05000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.04200
552010.01.05000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.05200
663010.00.35000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.06300
773010.00.35000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.07300
884110.01.05000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.08410
994110.01.05000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.09410
10105110.00.35000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.010510
11115110.00.35000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.011510
12126110.01.05000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.012610
13136110.01.05000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.013610
14147110.00.35000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.014710
15157110.00.35000.01.0-70.0True0.4...0.005-90.00.2True0.0001-70.015710
\n", - "

16 rows × 25 columns

\n", - "
" - ], "text/plain": [ - " comp_index branch_index cell_index length radius axial_resistivity \\\n", - "0 0 0 0 10.0 1.0 5000.0 \n", - "1 1 0 0 10.0 1.0 5000.0 \n", - "2 2 1 0 10.0 0.3 5000.0 \n", - "3 3 1 0 10.0 0.3 5000.0 \n", - "4 4 2 0 10.0 1.0 5000.0 \n", - "5 5 2 0 10.0 1.0 5000.0 \n", - "6 6 3 0 10.0 0.3 5000.0 \n", - "7 7 3 0 10.0 0.3 5000.0 \n", - "8 8 4 1 10.0 1.0 5000.0 \n", - "9 9 4 1 10.0 1.0 5000.0 \n", - "10 10 5 1 10.0 0.3 5000.0 \n", - "11 11 5 1 10.0 0.3 5000.0 \n", - "12 12 6 1 10.0 1.0 5000.0 \n", - "13 13 6 1 10.0 1.0 5000.0 \n", - "14 14 7 1 10.0 0.3 5000.0 \n", - "15 15 7 1 10.0 0.3 5000.0 \n", - "\n", - " capacitance v Na Na_gNa ... K_gK eK K_n Leak Leak_gLeak \\\n", - "0 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "1 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "2 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "3 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "4 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "5 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "6 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "7 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "8 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "9 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "10 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "11 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "12 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "13 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "14 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "15 1.0 -70.0 True 0.4 ... 0.005 -90.0 0.2 True 0.0001 \n", - "\n", - " Leak_eLeak global_comp_index global_branch_index global_cell_index \\\n", - "0 -70.0 0 0 0 \n", - "1 -70.0 1 0 0 \n", - "2 -70.0 2 1 0 \n", - "3 -70.0 3 1 0 \n", - "4 -70.0 4 2 0 \n", - "5 -70.0 5 2 0 \n", - "6 -70.0 6 3 0 \n", - "7 -70.0 7 3 0 \n", - "8 -70.0 8 4 1 \n", - "9 -70.0 9 4 1 \n", - "10 -70.0 10 5 1 \n", - "11 -70.0 11 5 1 \n", - "12 -70.0 12 6 1 \n", - "13 -70.0 13 6 1 \n", - "14 -70.0 14 7 1 \n", - "15 -70.0 15 7 1 \n", - "\n", - " controlled_by_param \n", - "0 0 \n", - "1 0 \n", - "2 0 \n", - "3 0 \n", - "4 0 \n", - "5 0 \n", - "6 0 \n", - "7 0 \n", - "8 0 \n", - "9 0 \n", - "10 0 \n", - "11 0 \n", - "12 0 \n", - "13 0 \n", - "14 0 \n", - "15 0 \n", - "\n", - "[16 rows x 25 columns]" + "View with 3 different channels. Use `.nodes` for details." ] }, - "execution_count": 47, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -1109,7 +204,7 @@ }, { "cell_type": "markdown", - "id": "fa9d320d", + "id": "c8ad35a5", "metadata": {}, "source": [ "### Groups from SWC files" @@ -1117,7 +212,7 @@ }, { "cell_type": "markdown", - "id": "bedcb667", + "id": "72de2fb6", "metadata": {}, "source": [ "If you are reading `.swc` morphologigies, you can automatically assign groups with \n", @@ -1129,7 +224,7 @@ }, { "cell_type": "markdown", - "id": "f01db628", + "id": "e08a5b66", "metadata": {}, "source": [ "### How groups are interpreted by `.make_trainable()`\n", @@ -1138,8 +233,8 @@ }, { "cell_type": "code", - "execution_count": 48, - "id": "57ba94c8", + "execution_count": 9, + "id": "a5d4f8ca", "metadata": {}, "outputs": [ { @@ -1156,7 +251,7 @@ }, { "cell_type": "markdown", - "id": "d490af0c", + "id": "99082cca", "metadata": {}, "source": [ "As such, `get_parameters()` returns only a single trainable parameter, which will be the sodium conductance for every compartment of every fast-spiking neuron:" @@ -1164,8 +259,8 @@ }, { "cell_type": "code", - "execution_count": 49, - "id": "2a51ff40", + "execution_count": 10, + "id": "62b0dc0c", "metadata": {}, "outputs": [ { @@ -1174,7 +269,7 @@ "[{'Na_gNa': Array([0.4], dtype=float64)}]" ] }, - "execution_count": 49, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -1185,7 +280,7 @@ }, { "cell_type": "markdown", - "id": "e297bb7d", + "id": "4941d565", "metadata": {}, "source": [ "If, instead, you would want a separate parameter for every fast-spiking cell, you should not use the group, but instead do the following (remember that fast-spiking neurons had indices [0,1]):" @@ -1193,8 +288,8 @@ }, { "cell_type": "code", - "execution_count": 50, - "id": "82ffc162", + "execution_count": 11, + "id": "4e6108e9", "metadata": {}, "outputs": [ { @@ -1211,8 +306,8 @@ }, { "cell_type": "code", - "execution_count": 51, - "id": "7ce88932", + "execution_count": 12, + "id": "13db06ab", "metadata": {}, "outputs": [ { @@ -1222,7 +317,7 @@ " {'axial_resistivity': Array([5000., 5000.], dtype=float64)}]" ] }, - "execution_count": 51, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -1233,7 +328,7 @@ }, { "cell_type": "markdown", - "id": "bb1e820a", + "id": "3d6a4dee", "metadata": {}, "source": [ "This generated two parameters for the axial resistivitiy, each corresponding to one cell." @@ -1241,7 +336,7 @@ }, { "cell_type": "markdown", - "id": "63da6188", + "id": "3ed0a8d6", "metadata": {}, "source": [ "### Summary" @@ -1249,19 +344,11 @@ }, { "cell_type": "markdown", - "id": "9ff3b531", + "id": "4476ff6b", "metadata": {}, "source": [ "Groups allow you to organize your simulation in a more intuitive way, and they allow to perform parameter sharing with `make_trainable()`." ] - }, - { - "cell_type": "markdown", - "id": "7d899743", - "metadata": {}, - "source": [ - "If you have not done so already, we recommend you to check out the tutorial on [how to compute the gradient and train biophysical models](https://jaxleyverse.github.io/jaxley/latest/tutorial/07_gradient_descent/)." - ] } ], "metadata": { diff --git a/docs/tutorials/07_gradient_descent.ipynb b/docs/tutorials/07_gradient_descent.ipynb index 6322d2f5..baad3c6f 100644 --- a/docs/tutorials/07_gradient_descent.ipynb +++ b/docs/tutorials/07_gradient_descent.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "cc77dd53", + "id": "7b2b1351", "metadata": {}, "source": [ "# Training biophysical models\n", @@ -29,16 +29,18 @@ "parameters = net.get_parameters()\n", "\n", "# Define parameter transform and apply it to the parameters.\n", - "transform = jx.ParamTransform([{\"IonotropicSynapse_gS\": jt.SigmoidTransform(0.0,1.0)},\n", - " {\"HH_gNa\":jt.SigmoidTransform(0.0,1,0)}])\n", + "transform = jx.ParamTransform([\n", + " {\"IonotropicSynapse_gS\": jt.SigmoidTransform(0.0, 1.0)},\n", + " {\"HH_gNa\":jt.SigmoidTransform(0.0, 1, 0)}\n", + "])\n", "\n", "opt_params = transform.inverse(parameters)\n", "\n", "# Define simulation and batch it across stimuli.\n", "def simulate(params, datapoint):\n", " current = jx.datapoint_to_step_currents(i_delay=1.0, i_dur=1.0, i_amps=datapoint, dt=0.025, t_max=5.0)\n", - " data_stimuli = net.cell(0).branch(0).comp(0).data_stimulate(current, None\n", - " return jx.integrate(net, params=params, data_stimuli=data_stimuli, checkpoint_inds=[20, 20])\n", + " data_stimuli = net.cell(0).branch(0).comp(0).data_stimulate(current, None)\n", + " return jx.integrate(net, params=params, data_stimuli=data_stimuli, checkpoint_inds=[20, 20], delta_t=0.025)\n", "\n", "batch_simulate = vmap(simulate, in_axes=(None, 0))\n", "\n", @@ -75,7 +77,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "d09b991a", + "id": "b414dd72", "metadata": {}, "outputs": [], "source": [ @@ -97,23 +99,23 @@ }, { "cell_type": "markdown", - "id": "6a6a8517", + "id": "b41aa1e5", "metadata": {}, "source": [ - "First, we define a network as you saw in the [previous tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/01_morph_neurons/):" + "First, we define a network as you saw in the [previous tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/01_morph_neurons.html):" ] }, { "cell_type": "code", "execution_count": 2, - "id": "9b4f07eb", + "id": "4ca62f3b", "metadata": {}, "outputs": [], "source": [ "_ = np.random.seed(0) # For synaptic locations.\n", "\n", "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=2)\n", + "branch = jx.Branch(comp, ncomp=2)\n", "cell = jx.Cell(branch, parents=[-1, 0, 0])\n", "net = jx.Network([cell for _ in range(3)])\n", "\n", @@ -131,7 +133,7 @@ }, { "cell_type": "markdown", - "id": "3df84b55-6515-415c-96a2-80ed715e0646", + "id": "d7a10185", "metadata": {}, "source": [ "This network consists of three neurons arranged in two layers:" @@ -140,12 +142,12 @@ { "cell_type": "code", "execution_count": 3, - "id": "6045dd9e-b493-4f88-8c91-96706d484a97", + "id": "886cea53", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -163,7 +165,7 @@ }, { "cell_type": "markdown", - "id": "2fba2c73-a7f5-45fa-a23e-774324fc155d", + "id": "8048a833", "metadata": {}, "source": [ "We consider the last neuron as the output neuron and record the voltage from there:" @@ -172,7 +174,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "92cf53ea-cbab-4796-9980-6362b9adbed0", + "id": "f4e23c03", "metadata": {}, "outputs": [ { @@ -194,7 +196,7 @@ }, { "cell_type": "markdown", - "id": "62ec99c2-09fb-425f-96aa-e82c1dfd8641", + "id": "c21f1595", "metadata": {}, "source": [ "### Defining a dataset" @@ -202,7 +204,7 @@ }, { "cell_type": "markdown", - "id": "c953a0fd-ec74-4954-9377-fde4bc5aa091", + "id": "673697b7", "metadata": {}, "source": [ "We will train this biophysical network on a classification task. The inputs will be values and the label is binary:" @@ -211,7 +213,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "0394c373-61e2-45a3-88fa-e71349419eb5", + "id": "8f032363", "metadata": {}, "outputs": [], "source": [ @@ -222,12 +224,12 @@ { "cell_type": "code", "execution_count": 6, - "id": "3a4c1360-699d-4a2f-bc27-9820d3848198", + "id": "b1583465", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASoAAADGCAYAAABly81iAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAuHUlEQVR4nO2dfVxUZd7/PzMTDGKCEMGAkaK5Firiw8Li2m0vJaHc1J+1K3YbaEWbv3XvWH6bSuvDsrYLPmSUckeZJN6VaM9u9CN1itoSZUMtEHXTyIdkMDEdQAOaue4/ZmecgTkz55w5D9cM1/v1mpdy5jrXOec6c77ne32fLg0hhIDBYDAoRqv2CTAYDIY3mKBiMBjUwwQVg8GgHiaoGAwG9TBBxWAwqIcJKgaDQT1MUDEYDOphgorBYFDPDWqfgBRYrVacP38egwYNgkajUft0GAxGLwghaG9vR1xcHLRa4fpRQAiq8+fPIz4+Xu3TYDAYXjh79ixuueUWwfsJFlSffvop1q9fj/r6erS0tOCdd97BnDlzPO5TU1OD/Px8HD16FPHx8VixYgUWLlzo0qa0tBTr16+HyWTCuHHjsGnTJqSkpPA6p0GDBgGwDUJYWJjQS2IwGDJjNpsRHx/veFaFIlhQdXZ2Yty4cXj44Ycxd+5cr+2bm5sxc+ZMPP7443jttddgNBrx6KOPIjY2FhkZGQCAnTt3Ij8/H2VlZUhNTUVJSQkyMjJw4sQJREdHez2GfboXFhYmuaCyWAnqmi/hQvuPiB4UgpSESOi0bHrJYIhBrGlG40tSskaj8apRLVu2DFVVVWhsbHRsy8rKwuXLl1FdXQ0ASE1Nxc9//nNs3rwZgM3mFB8fj9///vdYvny51/Mwm80IDw/HlStXJBVU1Y0tKPx7E1qu/OjYFhsegtX3JSJzTKxkxwkkmGBnuMPXZ1R2G1VtbS3S09NdtmVkZCAvLw8A0N3djfr6ehQUFDi+12q1SE9PR21trds+u7q60NXV5fjbbDZLft7VjS1Y/Ooh9Jbipis/YvGrh/DCgglMWPWCCXaGXMgenmAymRATE+OyLSYmBmazGdeuXcPFixdhsVjctjGZTG77LCoqQnh4uOMjtSHdYiUo/HtTHyEFwLGt8O9NsFjpr5BjsRLUnmrDe0e+Q+2pNtnO2S7YnYUUcF2wVze2yHJc2lFq/AMdv/T6FRQUID8/3/G33VAnFXXNl/o8cM4QAC1XfkRd8yWkjbhJsuNKjVIajjfBroFNsN+daKBqGij3NJVpmNIhu6AyGAxobW112dba2oqwsDAMGDAAOp0OOp3ObRuDweC2T71eD71eL9s5X2jnFlJi2qmBklNXfxTscgsRPuN/d6KB2fN4IvvULy0tDUaj0WXb3r17kZaWBgAIDg7GxIkTXdpYrVYYjUZHG6WJHhQiaTulUXrq6m+CXe5pKp/xL3i7Ab8sNmL+lgN4ovII5m85gClrP5Lk2IE41RSsUXV0dODkyZOOv5ubm3HkyBFERkbi1ltvRUFBAb777jts374dAPD4449j8+bNWLp0KR5++GF89NFH2LVrF6qqqhx95OfnIycnB5MmTUJKSgpKSkrQ2dmJRYsWSXCJwklJiERseAhMV350+2PTADCE296ANKK0huNPgl2JaSqf8f/hak+f7b5qu4E81RSsUX3xxRcYP348xo8fD8AmZMaPH49Vq1YBAFpaWnDmzBlH+4SEBFRVVWHv3r0YN24cnnnmGbz88suOGCoAmDdvHjZs2IBVq1YhOTkZR44cQXV1dR8Du1LotBqsvi8RgO2H64z979X3JVKrpiut4dgFO9doaGB7YGgQ7EKEuFjEjqsv2m6gOzMEa1R33XUXPIVebdu2ze0+hw8f9tjvkiVLsGTJEqGnIxuZY2LxwoIJfd5QBj94Qymt4dgF++JXD0EDuGgrtAl2JYS4L+MqRtv1V2eGEPzS66cUmWNi/dLgqcbUVQrBrkSwqBJC3Nv480GIoPRHZ4ZQmKDygk6r8bubq5aG44tgV8q+ooQQ9zT+fBEiKP3NmSEGVo8qQLFrOIZw1x+8ITxEkLFWqBfJLthnJw9B2oibeAsppewrStkfucY/NjwEg0ODRNvz3N0Pf3JmiMWnXD9akCvXLxDwZTrlTssZPCAIi345DEumjZREI7NYCaas/Yhz6mLXcD5bNs0vgzHdjf/eJhMWv3oIgHttl+tFwnXOK2fegTVVx7xqiVKPoRB8fUaZoGK4hStg0c7g0CAUzx3r80Nde6oN87cc8NpuR+4vJJ+CW6wEB061ofabiwBsmuAvhvPTAn1FqKDkuh/2M33sPxLw0qfNAIQJP6WgPimZ4X948iLZuXy1x6eYH7um8f95TuvksK/sbTK5CIvNH5/0KCykNPYLsefx8ert/rIFpQ9OwJoq6b3UNFTEYIKK0QdvXiQ7BOLc3u60CW9IbV8RmmIkx1SRr6OGr1cvYmAwPls2TVKhQksQKTOmM/ogRHsRGhzJZTjnwpNxWWy6iNAUow++Oo/HVQymFOLVE+PM4IKmIFKmUTH6IFR74fsg8ZlSOuPJC+fLm15I3NEPnd1YssN9sLJSwZRqePVoCyJlGhWjD/ZYI77wfUD4TintcIVS+Pqm5ytY9zaZ8H9fPwRPipoUKTfe8JaiBAARoUGSBvAqkWokBCaoGH1wjjXyhNAcPr4CIjttKHbk/gKfLZvWR0hJURmCr2B998h5Xu0AeYMp7ffDkyb6w9Ue7G1yX2hSDLQFkTJBxXBL5phYlC2YgMGhQW6/FxMcyVdA3DMmltO+IsWbnk8SdeTAIFzq7OZ1voD8wZR3Jxo47wVwfSomVVkX2oJImaBicJI5Jhb1K+7GH9J/hsEDXB8SoRHugDRVFqR40/OJTv8/yUN4HQdQpjJEXfMlXHZTGsaO1FMx2ipiMGM6wyM6rQZPpI/Ekmm3+ez2liIHUao3vbck6vABwdj6+be8jqVEZQilp2K0VcRggorBC6mSs32tsiBlUrGnoEuLlXitgKDVAJvnj1cknkiNqRhNpY6YoGIoisVKED4gGEszRuFSZzcib9TDEMZfQ5P6Tc8lgPlUQNg8fwLuTVLmYVWr6iwtpY5Yrh9DMaSMclYqYpqWyGz7uYhJZqYBlpQMJqj8AW9JtWIeMqVy0GjIdbNDk+AUAhNUYIKKdtQq5RKo0CQ4+cKqJzCopz+UylUSf6w66ytMUMmN1QKc3g90tAI3xgBDJwNandpnpSi0RTkz/A8mqOSkaTdQvQwwO6VihMUBmWuBxFnqnZfC0BblzPA/WGS6XDTtBnZluwopADC32LY37fa8v9UCNP8DaHjT9q/VIt+5ygxtUc4M/4NpVHJgtdg0KU9FMqqXA7fPdD8N9ENNzJOBl7YoZ4b/wQSVHJze31eTcoEA5u9s7RLudP3Kron1FnJ2Tew32xUTVny9S3xc5jRFOTPcQ7M3UZSgKi0txfr162EymTBu3Dhs2rQJKSkpbtvedddd+OSTT/psv/fee1FVVQUAWLhwISoqKly+z8jIQHV1tZjTU5+OVnHtfNXEJIRvvI6Qkr60RDkz+kJ7fJZgG9XOnTuRn5+P1atX49ChQxg3bhwyMjJw4cIFt+3ffvtttLS0OD6NjY3Q6XT49a9/7dIuMzPTpd2OHTvEXREN3Bgjrp0QTUxG+BamE1MbSspSuQxpoKnkMBeCBdXGjRuRm5uLRYsWITExEWVlZQgNDUV5ebnb9pGRkTAYDI7P3r17ERoa2kdQ6fV6l3YRERHirogGhk622ZQ8mY/DhtjaOSNWE5MQIcKHtiqQDOFIUYhQCQQJqu7ubtTX1yM9Pf16B1ot0tPTUVtby6uPrVu3IisrCwMHDnTZXlNTg+joaIwaNQqLFy9GW1sbZx9dXV0wm80uH6rQ6myGbwCcFY8yi/tO38RqYhIiRPj0l/gosYtI+AP+8rIRZKO6ePEiLBYLYmJcH5SYmBgcP37c6/51dXVobGzE1q1bXbZnZmZi7ty5SEhIwKlTp/DUU0/hnnvuQW1tLXS6vraYoqIiFBYWCjl15UmcZTN8u/XeFbs3iNs1MXML3NupNLbve2tiEiJE+PSH+CjabTe+4i8vG0W9flu3bsXYsWP7GN6zsrIc/x87diySkpIwYsQI1NTUYPr06X36KSgoQH5+vuNvs9mM+Ph4+U5cLImzbIZvvpHpdk1sVzbA5ch3p4lJiBDho1bpEaUQuvafP+IvLxtBU7+oqCjodDq0trraSFpbW2EwGDzu29nZicrKSjzyyCNejzN8+HBERUXh5MmTbr/X6/UICwtz+QhGqYBKrc4WgjD2Adu/3oSMXRML6/UAhMUpEpogJDiTT0lff42P8hfbja/4SzCuIEEVHByMiRMnwmg0OrZZrVYYjUakpaV53PeNN95AV1cXFixY4PU4586dQ1tbG2JjZXpbNe0GSsYAFb8C3nrE9m/JGO/R4kqROAvIawRy3gfu32r7N69BkfgpocLHHh9l6LW8lpia6jThL7YbX/GXl43gMi87d+5ETk4OXnzxRaSkpKCkpAS7du3C8ePHERMTg+zsbAwZMgRFRUUu+915550YMmQIKisrXbZ3dHSgsLAQ999/PwwGA06dOoWlS5eivb0dDQ0N0Ov1Xs9JUAkJroBK+21RMKCSZoTaZmgOFhTDe0e+wxOVR7y2ey4rGbMFLARBK3Lb4hQv8zJv3jx8//33WLVqFUwmE5KTk1FdXe0wsJ85cwZarauiduLECXz22WfYs2dPn/50Oh2++uorVFRU4PLly4iLi8OMGTOwZs0aXkJKEBQFVNKO0ODMQCs94i+2G6nwVj9e7ZdQ/yqc1/wP2zTPGznv901tYQQEfB86e7E/b46CQC/2J5WmxQrnCYGCgEqGegh56FgiNV1ez/5V5oWCgEqG/LgL0BSTJhKojgI+0Ob17F8aFQUBlQx5cac1GcJC8ONPFk+WSRT+vQl3Jxr6aEj9NZGatvLR/UtQURBQyZAPzqmK2XNUtbeHjjZHgRLGbdoi1vuXoALEpbYwqMfTVIUvJvOPqD3VRrXmpFRKD21ez/4nqADhqS0M6vE2VeHDmveP4lJnj+Nv2nL6lDRuTxwaAa0G8GSC0mps7ZSgfxnTnRGa2sKgGimmIM5CCqCrHpPSxu360z94FFKATYjVn/5BkuN5o/8KKoYgaC91InYK4mliR1NOn9IpPcxGxfA7xNhFlI5m5lPJYXBoEPQ3aGEydzm2Rw4MRltnN2e/vnq3pBoHvgJhX5NJEsM/s1Ex/AoxdhE1ajjxCdAsmju2T6iB6co1/GHXl177F6M5SDkOfAXCO0e+w1MzfQ9Epa2ED5v6MTgRYxdRs/42V4BmTJgeeekj0fWTFXXNl5CSEOmo2W4IH8Crb6Gag9TjkJIQiciBwV7bXerskWT6R1tVBaZRMTgRGvTnTbB5CqyUit4Bmt9evIoddWfw7L6vHW2ctRo5NAc5xkGn1WBOchzKP//Wa1up7EY0LXHGBBWDE6EGVVqime0BmtWNLSjZ9y+v01apc/rkGoe7Ew28BJWUdiOuyHwAisacMUHF4ESoQZUmT5EQrUZqzUGucbBrf1xCUC67Ue/IfDVskExQSYnVElBBpEKnRTR5ioRqNVLm9Mk1Ds4OA0Cdig5qVVRgxnSpoL28sQiEGlRpqr8tRquRanFUOcdBzYoOalZUYBqVFHCVNza32Lb7cXlj52lR65WrSNEeRzQu46eB0Zg1636XB4OmGk5qandyj4NaFR3UtEEyQeUr/aC8ceaYWNytqcNPVUuhv2qybewBsLcM0K11EcK0eIrUjgOSexzUqOigpg2SCSpfOb3ftQpDHwhg/s7WToryxmrYwZp2Q/dGDnQ8NUa13vi9o8BXzkzE715XT7sLtFpWamqpTFD5ipLljZt2c5SnWSvf1FKkxqj0G5/LE/XYfyRg95ctqml3tNWy8gU1tVQmqHxFqfLGatnBlNYYReDJE/XSp80ofXA8IgbqA0KrURM1bZDM6+cr9vLGnnw8YUN8K2/sVauBTauRY7VnyhfE4OOJWlN1zCVthmYhRXuVCrW8jkyj8hUlyhurqdVQviAGLdHwUqBGIKUY1LC99S+Nymqxre3X8KbtX6k0EHt547BeP6awOGmmZGpqNUpojD5AUzS8L6iZzC0GqWLO+NJ/NCq5DdFyljdWU6uhfEEMmqLhxWCxEhz4pg3L32pQNZmbdkRpVKWlpRg2bBhCQkKQmpqKuro6zrbbtm2DRqNx+YSEuP5oCCFYtWoVYmNjMWDAAKSnp+Prr7/m6FEEdkN07+mT3RAtVfS4XOWN5dBqhGiXcmuMPkBTNLxQqhtbMGXtR/jPlw/i8rUeznZSV+/0RwRrVDt37kR+fj7KysqQmpqKkpISZGRk4MSJE4iOjna7T1hYGE6cOOH4W6Nx/VmtW7cOzz//PCoqKpCQkICVK1ciIyMDTU1NfYSaYAIhIFNqrUaMdknpghg0RcMLgctT6Qnap69yIlij2rhxI3Jzc7Fo0SIkJiairKwMoaGhKC8v59xHo9HAYDA4PjEx16cohBCUlJRgxYoVmD17NpKSkrB9+3acP38e7777rqiLckGIIZpmpNJqPGqXDwHVBdwalrPGOHSybcyktveJwN9WNBa7tBet01clEKRRdXd3o76+HgUFBY5tWq0W6enpqK2t5dyvo6MDQ4cOhdVqxYQJE/C3v/0No0ePBgA0NzfDZDIhPT3d0T48PBypqamora1FVlZWn/66urrQ1XW97rXZbOY+acrd64LwVavhE+Zw4L9tH08ali/2Ppki6/0pClzo0l58AymVrlOvJIIE1cWLF2GxWFw0IgCIiYnB8ePH3e4zatQolJeXIykpCVeuXMGGDRswefJkHD16FLfccgtMJpOjj9592r/rTVFREQoLC/mdtNrudakfTLtWIwav2qUT5vPuA0l9CTyV2aHhL1HgQqZwfKev/hLaIBbZwxPS0tKQnZ2N5ORkTJ06FW+//TZuvvlmvPjii6L7LCgowJUrVxyfs2fPcjdW071OW+kXwVojcQ0k9SXwVCmHhh8gZArHZ/rqb6ENYhAkqKKioqDT6dDa6vqDb21thcFg4NVHUFAQxo8fj5MnTwKAYz8hfer1eoSFhbl8OLEbogFwVlWSw71O44MpRmt0tt+JtffJGFmvRCS31Mfw5qkEbEt7vfZIKj5bNs2jkFKzRpSSCBJUwcHBmDhxIoxGo2Ob1WqF0WhEWloarz4sFgsaGhoQG2sb/ISEBBgMBpc+zWYzDh48yLtPryjtXlcz5cUTXrVLDuyamFh7n0wODbt7f/6WA3ii8gjmbzmAKWs/klSDkOMY3goSagAUzx2LX46M8mpjUnphUrUQPPXLz8/Hli1bUFFRgWPHjmHx4sXo7OzEokWLAADZ2dkuxva//OUv2LNnD7755hscOnQICxYswOnTp/Hoo48CsHkE8/Ly8PTTT2P37t1oaGhAdnY24uLiMGfOHGmuErAJo7xGIOd94P6ttn/zGtRP5FUSF+1SAHZNTKy9TwaHhhLTHTmPIZWnMlAi870hOI5q3rx5+P7777Fq1SqYTCYkJyejurraYQw/c+YMtNrr8u+HH35Abm4uTCYTIiIiMHHiROzfvx+JiYmONkuXLkVnZycee+wxXL58GVOmTEF1dbXvMVS98cUQLQSaPY127fL9PwBXL3pvHxp13X5n18jMLXCvLWps3/e290ns0FBiWS4ljiGFp9LfI/P5oiGE+PfkFbapYnh4OK5cueLZXqUUzf+wGc69kfO+aqVR8FM3sPF24Gqb53YPVABj5lz/2+H1A9yGV7qbSlstNieCNwGX18DLVlh7qg3ztxzw2m5H7i9EewGVOIYUWKwEU9Z+5LVG1GfLpqkaquDrM9q/kpKVgvJEXgDADcHAr0rg0V41+b9chRQgzt4nsUNDiemOXMeQ2jBP24rGctF/kpKVhPJEXgd2odM7tik0Cpj5DDB6Dvd+QgNPuY4VFmcbCwG2QiWmO3IcQ65Yp8wxsSh9cDxWvNeIS53XcwbVWNFYLtjUT07cBjgOEfxgyo6SddglOJYS0x2pj8GV22ff05dUH3cCMHJgMJ6ePQb3JtEhpHx9RpmgkpsAW5RUEiQYE/uDD7hPRJYix0+qY9iFnrcVjsUIVjkFoJQwGxXtyFX6xV+RKFpfiURkqY4hV6xTfwn2BJiNiqEkEi9QoUQishTHkMswH0hlmL3BBBVDGWSqC6ZEIrKvx5DL+K9GsKdaFRqYoJITZp+6DuXLbsn5AMq1Hp7SwZ5qVmhggkou3Hn8vLn9AxmKo/XlfgDlqkKq5IKgntZOXPzqIdmN9syY7gmxq9ZwVU64ehF4IwfYs1L6c6UdteuCcaBUiRQ5jP9KBXvSYLRnGhUXYou8ebTF/Jv9zwNxE/tGfQcyYvMEZUSJfD5n5DD+2wVgb41QymBPGoz2TFC5wxfvFN8qmh/8PyDxvv5js6IlWt/JbnjcPACtV6zgmljI8QD6YpjnsqPJ7f2koUIDE1S98dU7xdfGcvWiaoZj1ZAwjUYUvbTk0QA+00eisCcbH1pTOHejoUSKNzuanN5PGio0MEHVGzHeKWfvnhBjsD8sKCE1ai27xaElG3AJLwSVYHFPHqewUrtEitqGbCWN9lwwQdUbod4pd7YsjRYgVu99KGw4pgal6oLZ8aAlazWAlQCrg/4He7smweo0DdQAiAsLQormKNBwQZUQE6XtaFxk/fxWPLvvX322K1WhgQmq3gjxTnHZsvgIKbXLvPQnvGjJWg0QhzakaI/jgPW6Fy1DW4dndZXQbXdaDUnCVXP4oLYh292U0xmlKjQwQdUbvt6p+FTg+XEcbbyhoaPMS3+Bp5YcjcuO/8+78QiKfnoOmmvSpPuIRU1DtrfVnP+QPhJLpo1UJDKdxVH1hm+Rt7MH+Xn39L0yxcOGKPYjlwSxsWQ0wVNL/u3MyXguKxk7Hvk5ikJfhYaCxTnUMmR7W81ZA6Dynx6WqZMYplG5g493quFNfn3NfAYYFOufaTQyLxiqGDy15NFpmRit1dkEMh+HysEy4MYYWAZGo85yOy509vhN+o031J5y9oYJKi68eaf42rIGxfpnCILElQ5URWgMF1+HyodPAQB0AIaSSGz7d5iDP6TfeIOG2Cln+vfUz9u0xlMtKX+oiy4WWtcl9AUhtd5FeGPtYQ4Z2jq/SL/xBg2xU870X43K12kNLZHWckB5pQPR8I3h8jpV7EvvMAcCLfXpN57wNuUEgMiBQTCZf0TtqTbZy730T41KquXWlV6BWSkornTgM3wqrnp0qHjoWgPEaWxhDnKsUKzTapCSEInoQSG40G7rW65EYE8Jz3YudfbgDzvlWaG6N/1Po5K6gJtakdZyQmmlA0XhcqjwwDnMQUobjtL1oLgSnt0hd5R8/xNUckxrlI60lhsKKx2oQuIs4GeZwD+3AD98awvk/efLXne7gMGO/0tZtE6NNBrnKafpyjWsqTqGS53dfdrJHSUvaupXWlqKYcOGISQkBKmpqairq+Nsu2XLFtx5552IiIhAREQE0tPT+7RfuHAhNBqNyyczM1PMqXknkKc1UiHxgqF+S9NuW1Dvh08BdS/ZhJSG+5GxEuA8uQl11tuhgU3bkSJsQO16UPaEZ0P4ALdCyvlcpJ7u2hEsqHbu3In8/HysXr0ahw4dwrhx45CRkYELFy64bV9TU4P58+fj448/Rm1tLeLj4zFjxgx89913Lu0yMzPR0tLi+OzYsUPcFXmDTWv4Eaj2N75w2TE50qPsMqKw5yGQfz9WUoUNyLWKjVDUDFkQPPXbuHEjcnNzsWjRIgBAWVkZqqqqUF5ejuXLl/dp/9prr7n8/fLLL+Ott96C0WhEdna2Y7ter4fBYBB6OsJh0xr+0GB/U6PuPJ/ih70Sz024CYU9D0keRwXQE9OkZsiCIEHV3d2N+vp6FBQUOLZptVqkp6ejtraWVx9Xr15FT08PIiNdVeKamhpER0cjIiIC06ZNw9NPP42bbnIf8drV1YWuri7H32azmf9FyB1W4OuDRduCEGra39SKjOdT/JBYgYy/OSLTT1tux72dPVgoQ9iA1AJC7EIWapZ7ESSoLl68CIvFgpgY12lRTEwMjh8/zquPZcuWIS4uDunp6Y5tmZmZmDt3LhISEnDq1Ck89dRTuOeee1BbWwudru9DWlRUhMLCQiGn7opcBdx8fbACJWVFCjxGxj8E3PUUcNMIeYQ5X/vkjTHA2AegA5DmvN1qAZqle9lIKSB88RyqFSUPCFzS/fz58xgyZAj279+PtLTrt2bp0qX45JNPcPDgQY/7FxcXY926daipqUFSUhJnu2+++QYjRozAvn37MH369D7fu9Oo4uPjhS8XLaX2wvVg2W+hN7uOr/sHElaLbfVkvmEBUgvz5n/YVnD2Rs77fbVNmV42UiwvL9Xy72KEna9LugvSqKKioqDT6dDa6vrGaW1t9Wpf2rBhA4qLi7Fv3z6PQgoAhg8fjqioKJw8edKtoNLr9dDr9UJO3T1STWt8jc2SaXFOv4Vv3Xk7UucfirVjypgf6esiDlIW4FM6Sh4QKKiCg4MxceJEGI1GzJkzBwBgtVphNBqxZMkSzv3WrVuHv/71r/jwww8xadIkr8c5d+4c2traEBsrbzEuyfA1NitQU1bEIjg0RGJhLsaOqcDLxhcBIXU1BCVWqHZGcHhCfn4+tmzZgoqKChw7dgyLFy9GZ2enwwuYnZ3tYmxfu3YtVq5cifLycgwbNgwmkwkmkwkdHR0AgI6ODjz55JM4cOAAvv32WxiNRsyePRu33XYbMjIyJLpMmfE1Nqu/xHbxrW0lKjTESZhLgdDwDCEvGx+wC4jZyUOQNuIm3loMLZ5DsQgOT5g3bx6+//57rFq1CiaTCcnJyaiurnYY2M+cOQOt9rr8e+GFF9Dd3Y0HHnjApZ/Vq1fjz3/+M3Q6Hb766itUVFTg8uXLiIuLw4wZM7BmzRpppndK4GtslhqxXUp7F4XYbkQkBTuQUpgLCc+g/GVDWzUEoQgyptOKr4Y6n3EYf73YNPIauG1UvuwvFKW9i2IcBY594GY/D7gzcCuBLwZ4BbBYCaas/cir5/CzZdNksTX5+oz2z+oJUuNryomSKStSVY7gi9jaVlxTL05Urv9FeX0ypZZ/lwsmqKTC15QTJVJW1CiI54vtJnEWkNdo00Lu32qLnYIGVOYf+kF+pBoF+KSi/1VPkBNfU07kTllRw7voq+2mdwhJ9B3qrbTsDbVXguaBGqEFUsAEldTQXPJFDYOv1I4CGvIPPUH7+YFfaIHYNBu5YIKKJuQ2cqvhXZQjCZzmlwFA//l5QekCfXxgNipaUMLIrYbB1w9sN4zr2NNsegeHSr1ghVCYoKIBpYzcagmN/l7byk9Qu0CfJ9jUjwaUNHKrZfD1A9tNf4dvms2ze/+FX94WpajdigkqGlDayK2W0PBz241P0FZnzA1802c2f3wSmz8+qajdigkqGlDDyC230PCDB1MxlM4EcDP2Fmi9evGEps/IvbCEM0xQ0UCglUdmBQCvI2PpF87j9Rr7awMMKOzJRmVHsmObO22Iz6Kjzsi98owzzJhOA4HkGVM6RYdmlM4E4Bh7/VUT/tazDhna66s/ufPi8Vl0tDdKLSzBBBUtBIJnTI0UHZpRqPQLAI9jb1d0Vgf9D7Sw2o8MAmD5Ww34/ORFhyePK83GG3KXh2FTP5rwd88YKwDoipJOEi9jr9UAcbAtN3/AmujYfvlaD/7z5YMuU0HnNJvPT36PzR+f8np4ucvDMI2KNuxG7rEP2P71FyEFUF+TSXGUdJLwHFPn5ead6T0VtKfZ/OHuUYgND/EUIizZQqueYIKKIR1scVdXlMwE4DmmzsvNO8MV0ElLeRgmqLjgWza3P9N7jOJTfXswA23MlXSSeBGKzsvNc8FlGKehPAyzUbmDude9wzVGYx4A9m+C4MVdA3XMlcoE8LAghfNy81Yeuok7w7ja5WFYKeLeBOr6ekquYTj590Djm70ezCHcD2agjrkzSgXA8oyj8sSO3F9IvsKMr88oE1TOeF340kPtcpojsaXUVviO0X8dAc4e9D4eYsac5rGmAY7I9AOn2vC71w/h8rUet7vJWTdd0QVIAx6x7nWapy1SR0bzHaOzB/mFIAgdc5rHmhbcpEfpAPxyZBSK7x/rccVlWuumM2O6M2Lc6zRHYgsNwORjzOY7Ru0t/AzjQsac5rH2E2gwjIuBaVTOCHWv07AUu6dpkBBt5doP/DQVvmNUvRy42ua5LyH9hUYB7y2GImMd4FNLtQ3jYmCCyhmhycFqR2J7mwbx1VZOfAAceAG8pod8Fwd1FlJcffHq799jrtEoM9b9ZGqp9JLsvsKmfs4IjXtRMxKbzzSIr7by1S7wnh7yGSO3cOT68R3zzu899O2EL2PNppbUIkpQlZaWYtiwYQgJCUFqairq6uo8tn/jjTdw++23IyQkBGPHjsUHH3zg8j0hBKtWrUJsbCwGDBiA9PR0fP3112JOzXeEJAerFYnN1/bEJwAzNAq4etHDwdwkznKNUai3NzRHEi6fMZd7rFlCNdUInvrt3LkT+fn5KCsrQ2pqKkpKSpCRkYETJ04gOjq6T/v9+/dj/vz5KCoqwq9+9Su8/vrrmDNnDg4dOoQxY8YAANatW4fnn38eFRUVSEhIwMqVK5GRkYGmpiaEhMib7OgWvsnBatWREuJ54wgCdAivpN8AB/7b+zF7ayruxqi9BXg7V3hfXP05j7ncY632NJ7hEcEa1caNG5Gbm4tFixYhMTERZWVlCA0NRXl5udv2zz33HDIzM/Hkk0/ijjvuwJo1azBhwgRs3rwZgE2bKikpwYoVKzB79mwkJSVh+/btOH/+PN59912fLs4n+CQHq1VHSsiU05u2Mupefn2501R6j9Egnh4jLq3H05jLPdYsoZpqBAmq7u5u1NfXIz09/XoHWi3S09NRW1vrdp/a2lqX9gCQkZHhaN/c3AyTyeTSJjw8HKmpqZx9dnV1wWw2u3xUQ406UkKnQb2XRs953xZAmThL2sRZuZNw5RxrllBNNYKmfhcvXoTFYkFMjOvNiomJwfHjx93uYzKZ3LY3mUyO7+3buNr0pqioCIWFhUJOXV6UriMlZhrEVSPdQ46YYE1Fyr64kGusA60cdIDhl16/goICXLlyxfE5e/as2qekbB0pqadBUmoqSmiYcox1IJWDDkAEaVRRUVHQ6XRobXWdp7e2tsJgMLjdx2AweGxv/7e1tRWxsbEubZKTk932qdfrodfrhZx64CF1Vr6Umoq/VipVa81DhlcECarg4GBMnDgRRqMRc+bMAQBYrVYYjUYsWbLE7T5paWkwGo3Iy8tzbNu7dy/S0tIAAAkJCTAYDDAajQ7BZDabcfDgQSxevFj4FfUnpBYIUi6h5a9r+PmrkA1wBIcn5OfnIycnB5MmTUJKSgpKSkrQ2dmJRYsWAQCys7MxZMgQFBUVAQCeeOIJTJ06Fc888wxmzpyJyspKfPHFF3jppZcAABqNBnl5eXj66acxcuRIR3hCXFycQxh6w14AQlWjuprcNA6whzB1dKp6KgEDG1NJsT+boou1EBFs2rSJ3HrrrSQ4OJikpKSQAwcOOL6bOnUqycnJcWm/a9cu8rOf/YwEBweT0aNHk6qqKpfvrVYrWblyJYmJiSF6vZ5Mnz6dnDhxgvf5nD171r6oBvuwD/tQ/Dl79qwYkUMCoh6V1WrF+fPnMWjQILS3tyM+Ph5nz571vYgeZZjNZnZtfgi7NoAQgvb2dsTFxUGrFe7DC4ikZK1Wi1tuuQWAbSoJAGFhYQH3o7DDrs0/6e/XFh4eLrp/vwxPYDAY/QsmqBgMBvUEnKDS6/VYvXp1QMZZsWvzT9i1+U5AGNMZDEZgE3AaFYPBCDyYoGIwGNTDBBWDwaAeJqgYDAb1MEHFYDCoh3pBFcgLSQi5ti1btuDOO+9EREQEIiIikJ6e3qf9woULodFoXD6ZmZlyXwYnQq5v27Ztfc69d718f713d911V59r02g0mDlzpqMNLffu008/xX333Ye4uDhoNBpe5cBramowYcIE6PV63Hbbbdi2bVufNkKf4z6IyhBUiMrKShIcHEzKy8vJ0aNHSW5uLhk8eDBpbW112/7zzz8nOp2OrFu3jjQ1NZEVK1aQoKAg0tDQ4GhTXFxMwsPDybvvvku+/PJLMmvWLJKQkECuXbum1GURQoRf24MPPkhKS0vJ4cOHybFjx8jChQtJeHg4OXfunKNNTk4OyczMJC0tLY7PpUuXlLokF4Re3yuvvELCwsJczt1kMrm08dd719bW5nJdjY2NRKfTkVdeecXRhpZ798EHH5A//elP5O233yYAyDvvvOOx/TfffENCQ0NJfn4+aWpqIps2bSI6nY5UV1c72ggdL3dQLahSUlLI7373O8ffFouFxMXFkaKiIrftf/Ob35CZM2e6bEtNTSW//e1vCSG2Kg0Gg4GsX7/e8f3ly5eJXq8nO3bskOEKuBF6bb356aefyKBBg0hFRYVjW05ODpk9e7bUpyoKodf3yiuvkPDwcM7+AunePfvss2TQoEGko6PDsY2me2eHj6BaunQpGT16tMu2efPmkYyMDMffvo4XIYRQO/WjZSEJORBzbb25evUqenp6EBkZ6bK9pqYG0dHRGDVqFBYvXoy2tjaOHuRD7PV1dHRg6NChiI+Px+zZs3H06FHHd4F077Zu3YqsrCwMHDjQZTsN904o3p45KcYLoNhG5WkhCa5FH+RYSEIOxFxbb5YtW4a4uDiXH0BmZia2b98Oo9GItWvX4pNPPsE999wDi0XZRTPFXN+oUaNQXl6O9957D6+++iqsVismT56Mc+fOAQice1dXV4fGxkY8+uijLttpuXdC4XrmzGYzrl27JslvHQiQMi/9jeLiYlRWVqKmpsbF4JyVleX4/9ixY5GUlIQRI0agpqYG06dPV+NUeZOWluYoTw0AkydPxh133IEXX3wRa9asUfHMpGXr1q0YO3YsUlJSXLb7871TAmo1KrkXkuDbpxyIuTY7GzZsQHFxMfbs2YOkpCSPbYcPH46oqCicPHnS53MWgi/XZycoKAjjx493nHsg3LvOzk5UVlbikUce8Xocte6dULieubCwMAwYMECS3wJAsaByXkjCjn0hCec3rzP2hSSc4VpIwo59IQmuPuVAzLUBwLp167BmzRpUV1dj0qRJXo9z7tw5tLW1uazuowRir88Zi8WChoYGx7n7+70DbKEzXV1dWLBggdfjqHXvhOLtmZPitwCA/vAEvV5Ptm3bRpqamshjjz1GBg8e7HBbP/TQQ2T58uWO9p9//jm54YYbyIYNG8ixY8fI6tWr3YYnDB48mLz33nvkq6++IrNnz1bNxS3k2oqLi0lwcDB58803XVzY7e3thBBC2tvbyR//+EdSW1tLmpubyb59+8iECRPIyJEjyY8//qjotYm5vsLCQvLhhx+SU6dOkfr6epKVlUVCQkLI0aNHHW389d7ZmTJlCpk3b16f7TTdu/b2dnL48GFy+PBhAoBs3LiRHD58mJw+fZoQQsjy5cvJQw895GhvD0948sknybFjx0hpaanb8ARP48UHqgUVIfQtJCElQq5t6NChbovlr169mhBCyNWrV8mMGTPIzTffTIKCgsjQoUNJbm6uoB+D1Ai5vry8PEfbmJgYcu+995JDhw659Oev944QQo4fP04AkD179vTpi6Z79/HHH7v9ndmvJycnh0ydOrXPPsnJySQ4OJgMHz7cJT7Mjqfx4gOrR8VgMKiHWhsVg8Fg2GGCisFgUA8TVAwGg3qYoGIwGNTDBBWDwaAeJqgYDAb1MEHFYDCohwkqBoNBPUxQMRgM6mGCisFgUA8TVAwGg3r+F0rmzNdDWU8HAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -245,7 +247,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "b821b875-d024-47d9-b047-a44e398186ee", + "id": "4f648cd4", "metadata": {}, "outputs": [], "source": [ @@ -254,7 +256,7 @@ }, { "cell_type": "markdown", - "id": "9cab1469-9cc7-4ca7-b8c3-3c6ef4f69599", + "id": "209a3098", "metadata": {}, "source": [ "### Defining trainable parameters" @@ -263,7 +265,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "e4959638-370b-40c7-b165-cb21d54ce738", + "id": "8892c796", "metadata": {}, "outputs": [], "source": [ @@ -272,7 +274,7 @@ }, { "cell_type": "markdown", - "id": "a5bb1f52", + "id": "28471b94", "metadata": {}, "source": [ "This follows the same API as `.set()` seen in the previous tutorial. If you want to use a single parameter for all `radius`es in the entire network, do:" @@ -281,7 +283,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "10cb5b1e", + "id": "8ca68b36", "metadata": {}, "outputs": [ { @@ -298,7 +300,7 @@ }, { "cell_type": "markdown", - "id": "ded765bf", + "id": "abfc4125", "metadata": {}, "source": [ "We can also define parameters for individual compartments. To do this, use the `\"all\"` key. The following defines a separate parameter the sodium conductance for every compartment in the entire network:" @@ -307,7 +309,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "c90be7f3", + "id": "a846bce2", "metadata": {}, "outputs": [ { @@ -324,7 +326,7 @@ }, { "cell_type": "markdown", - "id": "24d0ab89", + "id": "1e0a9ed6", "metadata": {}, "source": [ "### Making synaptic parameters trainable" @@ -332,7 +334,7 @@ }, { "cell_type": "markdown", - "id": "9a5811b8", + "id": "fff33fb7", "metadata": {}, "source": [ "Synaptic parameters can be made trainable in the exact same way. To use a single parameter for all syanptic conductances in the entire network, do\n", @@ -343,7 +345,7 @@ }, { "cell_type": "markdown", - "id": "84527ee4", + "id": "096e37e2", "metadata": {}, "source": [ "Here, we use a different syanptic conductance for all syanpses. This can be done as follows:" @@ -352,7 +354,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "dbadd2a8", + "id": "22074636", "metadata": {}, "outputs": [ { @@ -369,7 +371,7 @@ }, { "cell_type": "markdown", - "id": "5dfc1c6b", + "id": "601bab3c", "metadata": {}, "source": [ "### Running the simulation" @@ -377,7 +379,7 @@ }, { "cell_type": "markdown", - "id": "02d8a610", + "id": "89c9e348", "metadata": {}, "source": [ "Once all parameters are defined, you have to use `.get_parameters()` to obtain all trainable parameters. This is also the time to check how many trainable parameters your network has:" @@ -386,7 +388,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "40a48eea", + "id": "f6ca6114", "metadata": {}, "outputs": [], "source": [ @@ -395,7 +397,7 @@ }, { "cell_type": "markdown", - "id": "cf68cf64", + "id": "fb887688", "metadata": {}, "source": [ "You can now run the simulation with the trainable parameters by passing them to the `jx.integrate` function." @@ -404,7 +406,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "4eb3f8f1", + "id": "1f8b4afe", "metadata": {}, "outputs": [], "source": [ @@ -413,7 +415,7 @@ }, { "cell_type": "markdown", - "id": "4c82d6b2-6b62-43bc-9c34-fc65bd4adddb", + "id": "3aba8d4c", "metadata": {}, "source": [ "### Stimulating the network\n", @@ -424,7 +426,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "2354c23b-12bd-4e4a-ab8b-20d062b286c7", + "id": "38037ad4", "metadata": {}, "outputs": [], "source": [ @@ -435,14 +437,14 @@ " data_stimuli = net.cell(0).branch(2).loc(1.0).data_stimulate(currents[0], data_stimuli=data_stimuli)\n", " data_stimuli = net.cell(1).branch(2).loc(1.0).data_stimulate(currents[1], data_stimuli=data_stimuli)\n", "\n", - " return jx.integrate(net, params=params, data_stimuli=data_stimuli)\n", + " return jx.integrate(net, params=params, data_stimuli=data_stimuli, delta_t=0.025)\n", "\n", "batched_simulate = vmap(simulate, in_axes=(None, 0))" ] }, { "cell_type": "markdown", - "id": "3e2031ec-cef9-4175-99ff-6d92e44d1181", + "id": "2e4e0970", "metadata": {}, "source": [ "We can also inspect some traces:" @@ -451,7 +453,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "625d85e2-2af3-46c2-8739-f993584a7c0b", + "id": "76e63570", "metadata": {}, "outputs": [], "source": [ @@ -461,12 +463,12 @@ { "cell_type": "code", "execution_count": 16, - "id": "273c6489-ee27-469a-ba51-6139edbed8f1", + "id": "da8d329f", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -482,7 +484,7 @@ }, { "cell_type": "markdown", - "id": "00946772", + "id": "cc7b2fa6", "metadata": {}, "source": [ "### Defining a loss function" @@ -490,7 +492,7 @@ }, { "cell_type": "markdown", - "id": "9808bb05", + "id": "e774b36f", "metadata": {}, "source": [ "Let us define a loss function to be optimized:" @@ -499,7 +501,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "a29f1ac2", + "id": "f7ff757f", "metadata": {}, "outputs": [], "source": [ @@ -513,7 +515,7 @@ }, { "cell_type": "markdown", - "id": "bef18ca2", + "id": "e85619c9", "metadata": {}, "source": [ "And we can use `JAX`'s inbuilt functions to take the gradient through the entire ODE:" @@ -522,18 +524,17 @@ { "cell_type": "code", "execution_count": 18, - "id": "f38d61a9", + "id": "70ee2cda", "metadata": {}, "outputs": [], "source": [ - "#jitted_grad = jit(value_and_grad(loss, argnums=0))\n", - "jitted_grad = (value_and_grad(loss, argnums=0))" + "jitted_grad = jit(value_and_grad(loss, argnums=0))" ] }, { "cell_type": "code", "execution_count": 19, - "id": "9ac97e04", + "id": "6698502f", "metadata": {}, "outputs": [], "source": [ @@ -542,7 +543,7 @@ }, { "cell_type": "markdown", - "id": "8f1b64b8-99d5-4afb-8932-cdafee2370b6", + "id": "66888350", "metadata": {}, "source": [ "### Defining parameter transformations" @@ -550,7 +551,7 @@ }, { "cell_type": "markdown", - "id": "b61dab27", + "id": "f1c5e0ef", "metadata": {}, "source": [ "Before training, however, we will enforce for all parameters to be within a prespecified range (such that, e.g., conductances can not become negative)" @@ -559,7 +560,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "7f933f2d", + "id": "964a4cc3", "metadata": {}, "outputs": [], "source": [ @@ -569,7 +570,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "b7ccdf0b", + "id": "6762e2af", "metadata": {}, "outputs": [], "source": [ @@ -593,18 +594,18 @@ { "cell_type": "code", "execution_count": 22, - "id": "652bee09", + "id": "ed6d271f", "metadata": {}, "outputs": [], "source": [ - "transform = jx.ParamTransform([{\"radius\": jt.SigmoidTransform(0.1,5.0)},\n", - " {\"Leak_gLeak\":jt.SigmoidTransform(1e-5,1e-3)},\n", - " {\"TanhRateSynapse_gS\" : jt.SigmoidTransform(1e-5,1e-2)}])" + "transform = jx.ParamTransform([{\"radius\": jt.SigmoidTransform(0.1, 5.0)},\n", + " {\"Leak_gLeak\":jt.SigmoidTransform(1e-5, 1e-3)},\n", + " {\"TanhRateSynapse_gS\" : jt.SigmoidTransform(1e-5, 1e-2)}])" ] }, { "cell_type": "markdown", - "id": "d25ddbc8-65c9-47c3-ab98-a8c776953481", + "id": "69df4690", "metadata": {}, "source": [ "With these modify the loss function acocrdingly:" @@ -613,7 +614,7 @@ { "cell_type": "code", "execution_count": 23, - "id": "dac2b2fb-a844-4bdc-a290-939d91c2d2aa", + "id": "1791e84f", "metadata": {}, "outputs": [], "source": [ @@ -629,7 +630,7 @@ }, { "cell_type": "markdown", - "id": "214c12a7-5d7d-4077-b7ca-1544a9d0a584", + "id": "fcddd13b", "metadata": {}, "source": [ "### Using checkpointing" @@ -637,16 +638,16 @@ }, { "cell_type": "markdown", - "id": "df80cc24", + "id": "3ca350ca", "metadata": {}, "source": [ - "Checkpointing allows to vastly reduce the memory requirements of training biophysical models." + "Checkpointing allows to vastly reduce the memory requirements of training biophysical models (see also [JAX's full tutorial on checkpointing](https://jax.readthedocs.io/en/latest/gradient-checkpointing.html))." ] }, { "cell_type": "code", "execution_count": 24, - "id": "f18a5736-f282-4ebe-9140-f613bccb3f76", + "id": "825e988a", "metadata": {}, "outputs": [], "source": [ @@ -660,7 +661,7 @@ }, { "cell_type": "markdown", - "id": "17a31e6b-9938-461d-a38f-e358b998fd41", + "id": "907090cb", "metadata": {}, "source": [ "To enable checkpointing, we have to modify the `simulate` function appropriately and use\n", @@ -673,7 +674,7 @@ { "cell_type": "code", "execution_count": 25, - "id": "cb3c256a-87ce-4c20-9bd3-30c34659db88", + "id": "855ea0ce", "metadata": {}, "outputs": [], "source": [ @@ -704,13 +705,12 @@ " losses = jnp.abs(predictions - labels) # Mean absolute error loss.\n", " return jnp.mean(losses) # Average across the batch.\n", "\n", - "#jitted_grad = jit(value_and_grad(loss, argnums=0))\n", - "jitted_grad = (value_and_grad(loss, argnums=0))" + "jitted_grad = jit(value_and_grad(loss, argnums=0))" ] }, { "cell_type": "markdown", - "id": "8e9de29a", + "id": "7ba885ee", "metadata": {}, "source": [ "### Training\n", @@ -721,7 +721,7 @@ { "cell_type": "code", "execution_count": 26, - "id": "6189ca28-6e22-4328-94dc-5c39ef5da0ac", + "id": "9957d8de", "metadata": {}, "outputs": [], "source": [ @@ -731,7 +731,7 @@ { "cell_type": "code", "execution_count": 27, - "id": "9d639efa", + "id": "c8c080ce", "metadata": {}, "outputs": [], "source": [ @@ -742,16 +742,24 @@ }, { "cell_type": "markdown", - "id": "2b746326-c685-4fb2-88c7-e40e852d7d68", + "id": "418e2e24", "metadata": {}, "source": [ "### Writing a dataloader" ] }, + { + "cell_type": "markdown", + "id": "114f07c8", + "metadata": {}, + "source": [ + "Below, we just write our own (very simple) dataloader. Alternatively, you could use the dataloader from any deep learning library such as pytorch or tensorflow:" + ] + }, { "cell_type": "code", "execution_count": 28, - "id": "dede5ef6-3afb-4b75-a23d-534dd3e2867b", + "id": "73486cbc", "metadata": {}, "outputs": [], "source": [ @@ -767,11 +775,13 @@ " self.inputs = inputs\n", " self.labels = labels\n", " self.num_samples = len(inputs)\n", + " self._rng_state = None\n", + " self.batch_size = 1\n", " \n", " def shuffle(self, seed=None):\n", " \"\"\"Shuffle the dataset in-place\"\"\"\n", - " if seed is not None:\n", - " np.random.seed(seed)\n", + " self._rng_state = np.random.get_state()[1][0] if seed is None else seed\n", + " np.random.seed(self._rng_state)\n", " indices = np.random.permutation(self.num_samples)\n", " self.inputs = self.inputs[indices]\n", " self.labels = self.labels[indices]\n", @@ -779,27 +789,20 @@ " \n", " def batch(self, batch_size):\n", " \"\"\"Create batches of the data\"\"\"\n", - " for start in range(0, self.num_samples, batch_size):\n", - " end = min(start + batch_size, self.num_samples)\n", - " yield self.inputs[start:end], self.labels[start:end]" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "f7463abc-207e-413b-aa9c-260b3306cdc1", - "metadata": {}, - "outputs": [], - "source": [ - "batch_size = 4\n", + " self.batch_size = batch_size\n", + " return self\n", "\n", - "dataloader = Dataset(inputs, labels)\n", - "dataloader = dataloader.shuffle(seed=1).batch(batch_size)" + " def __iter__(self):\n", + " self.shuffle(seed=self._rng_state)\n", + " for start in range(0, self.num_samples, self.batch_size):\n", + " end = min(start + self.batch_size, self.num_samples)\n", + " yield self.inputs[start:end], self.labels[start:end]\n", + " self._rng_state += 1" ] }, { "cell_type": "markdown", - "id": "b321cfb4-380d-4d7e-8b04-ff890f2f729c", + "id": "863daf96", "metadata": {}, "source": [ "### Training loop" @@ -807,24 +810,37 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "0e4aebd0-283e-4165-8c24-4b6fb811135e", + "execution_count": 29, + "id": "a1c04203", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "epoch 0, loss 25.09776566535514\n" + "epoch 0, loss 25.033223182772293\n", + "epoch 1, loss 21.00894915349165\n", + "epoch 2, loss 15.092242959956026\n", + "epoch 3, loss 9.061544660383163\n", + "epoch 4, loss 6.925509860325612\n", + "epoch 5, loss 6.273630037897756\n", + "epoch 6, loss 6.1757316054693145\n", + "epoch 7, loss 6.135132525725265\n", + "epoch 8, loss 6.145608619185389\n", + "epoch 9, loss 6.135660902068834\n" ] } ], "source": [ + "batch_size = 4\n", + "dataloader = Dataset(inputs, labels)\n", + "dataloader = dataloader.shuffle(seed=0).batch(batch_size)\n", + "\n", "for epoch in range(10):\n", " epoch_loss = 0.0\n", + " \n", " for batch_ind, batch in enumerate(dataloader):\n", - " current_batch = batch[0].numpy()\n", - " label_batch = batch[1].numpy()\n", + " current_batch, label_batch = batch\n", " loss_val, gradient = jitted_grad(opt_params, current_batch, label_batch)\n", " updates, opt_state = optimizer.update(gradient, opt_state)\n", " opt_params = optax.apply_updates(opt_params, updates)\n", @@ -837,8 +853,8 @@ }, { "cell_type": "code", - "execution_count": 261, - "id": "48c26c7c-1e4d-4681-a504-d490c7d890b8", + "execution_count": 30, + "id": "983dbd4f", "metadata": {}, "outputs": [], "source": [ @@ -848,13 +864,13 @@ }, { "cell_type": "code", - "execution_count": 263, - "id": "a66e44b9-3fc5-47e9-8ba3-f7acaa61104b", + "execution_count": 31, + "id": "3091698e", "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAATQAAADZCAYAAACuLMx3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAd+UlEQVR4nO3de1hUdf4H8PeAzAy6MGgkAzUhijeUVDQQax9dpaDMy7b7pJWJZrbZRVu2zNqSZV1DS821tbTdFF130+yCP8uHMtRKQ9kASUTaShJMBvPGcBGQme/vD3YmRm5nxsNcDu/X88wjnPmcmc+XAx/PnPO9qIQQAkRECuDj7gSIiOTCgkZEisGCRkSKwYJGRIrBgkZEisGCRkSKwYJGRIrBgkZEitHD3Qm4msViwZkzZxAQEACVSuXudIjoKkIIVFdXIywsDD4+jp1zdbuCdubMGRgMBnenQUSdKC8vx4033ujQPt2uoAUEBABo/mEFBga6ORsiuprJZILBYLD9rTqi2xU068fMwMBAFjQiFzBbBHJLL+BsdT36BmgRG9EHvj6dX+5x5pJQtytoROQ6WUUVSNtdjIqqetu2UJ0WqVOikDQ8VPb3411OIuoSWUUVWLAt366YAYCxqh4LtuUjq6hC9vdkQSMi2ZktAmm7i9HW3GTWbWm7i2G2yDt7GQsaEckut/RCqzOzlgSAiqp65JZekPV9WdCISHZnq9svZs7EScWCRkSy6xuglTVOKhY0IpJdbEQfhOq0aK/jhQrNdztjI/rI+r4saEQkO18fFVKnRAFAq6Jm/T51SpSk/miOYEEjoi6RNDwUb8yKgV5n/7FSr9PijVkxXdIPjR1riajLJA0Pxe1ReqdGCjiDZ2hEpBg8QyOiLsOhT0SkCBz6RESKwKFPRKQYHPpERIrBoU9EpBgc+kREisGhT0SkGNahT+1d8hfg0Cciog6xoBGR7KzdNtqjArttEJGXYLcNIlIMdtsgIsVgtw0iUgx22yAixeCMtUSkKNYZa0MCNXbbQwI1XTZjLQsaEXWx9s7R5MeCRkRdwjofmtFkfyez0sT50IjIi3A+NCJSjG7Zsfbzzz/HlClTEBYWBpVKhczMzE73OXDgAGJiYqDRaBAZGYmMjIwuz5OIHNMtO9bW1tZixIgRWL9+vaT40tJSTJ48Gb/61a9w9OhRPPXUU3j44Yfx8ccfd3GmROQId3WsdeuqT3feeSfuvPNOyfEbNmxAREQEVq9eDQAYOnQoDh48iFdffRWJiYldlSYROcjasdZYVd/mdTQVmhcc7tYda3NycpCQkGC3LTExETk5Oe3u09DQAJPJZPcgoq7F+dAkMBqNCAkJsdsWEhICk8mEy5cvt7lPeno6dDqd7WEwGFyRKhG5gVcVNGc899xzqKqqsj3Ky8vdnRKR4rlrPjSvWjldr9ejsrLSbltlZSUCAwPh7+/f5j4ajQYajabN54ioazjSbSN+wHWyva9XnaHFx8cjOzvbbtvevXsRHx/vpoyIqC3dsttGTU0Njh49iqNHjwJo7pZx9OhRlJWVAWj+uDh79mxb/KOPPoqTJ09i8eLFKCkpweuvv4533nkHv//9792RPhG1o1vOh/bVV19h1KhRGDVqFAAgJSUFo0aNwtKlSwEAFRUVtuIGABEREfjoo4+wd+9ejBgxAqtXr8Y//vEPdtkg8jCxEX0Q1NOvw5ignn6yd9tw6zW0CRMmQIj2Lwq2NQpgwoQJKCgo6MKsiEgOjU2WDp+/0snzzvCqa2hE5B0Of38edY3mDmNqG804/P15Wd+XBY2IZJdz8pyscVI5VdAqKyvx4IMPIiwsDD169ICvr6/dg4i6O6kjAOQdKeDUNbQ5c+agrKwML774IkJDQ6FSdd0MlETkfeIi+uBv+6XFycmpgnbw4EF88cUXGDlypKzJEJEy+Eg8yZEaJ/l9ndnJYDB0eHeSiLq3c7UNssZJ5VRBW7t2LZYsWYIffvhB1mSISBm8aj60GTNmoK6uDgMGDEDPnj3h52ffge7CBXmn1SUi72KdD62j8ZxdsdCwUwVt7dq1siZBRMri66PC1BGh2Ph5absxU0eEyj4fmlMFLTk5WdYkiEhZzBaB/yvseJm6/yuswOKkobIWNaeHPpnNZmRmZuLEiRMAgGHDhmHq1Knsh0ZEnU4fBHTN9EFOFbTvvvsOd911F3788UcMHjwYQPPMsAaDAR999BEGDBggW4JE5H28avqghQsXYsCAASgvL0d+fj7y8/NRVlaGiIgILFy4UNYEicj79OmpljVOKqfO0D777DMcPnwYffr8fIfiuuuuw4oVK3DrrbfKlhwReacSo7TFiEqMJvxy0PWyva9TZ2gajQbV1dWtttfU1ECtlrfiEpH3Kb/Y9qJFzsZJ5VRBu/vuu/HII4/gyJEjEEJACIHDhw/j0UcfxdSpU2VNkIi8j6F3T1njpHKqoK1btw4DBgxAfHw8tFottFotbr31VkRGRuKvf/2rrAkSkfcZog+QNU4qp66hBQUFYdeuXfj2229RUlICoHkV88jISFmTIyLvdKGuUdY4qa5pCu6BAwdi4MCBcuVCRArh8WM5U1JSsGzZMvTq1QspKSkdxq5Zs+aaEyMi72VdJOVS3ZV2Y9y6SEpBQQGuXLli+5qIqCOdLYJyxSz/IimSC9r+/fvb/JqI6GqHT55HbWeLpDSYcfjkedwaGSzb+zp1l/Ohhx5qsx9abW0tHnrooWtOioi8W47E1ZykxknlVEHbsmULLl9u3SHu8uXL2Lp16zUnRUTeTuqM1vLOfO1QQTOZTKiqqoIQAtXV1TCZTLbHxYsXsWfPHvTt21fWBInI+8T3l/YxUmqcVA512wgKCoJKpYJKpcKgQYNaPa9SqZCWliZbckTknW6J6AMVOj7/Uv0vTk4OFbT9+/dDCIGJEyfivffesxucrlarER4ejrCwMFkTJCLvk3fqYqcfJsX/4tw2H9r48eMBAKWlpbjpppu4HicRtclYJW3QudQ4qZy6KbBv3z68++67rbbv3LkTW7ZsueakiMi7nauRNqRJapxUThW09PR0BAe3vpjXt29fvPTSSw6/3vr169GvXz9otVrExcUhNze33diMjAzbdTzrQ6uVd/gEEV2b89XS1tuUGieVUwXNOjvt1cLDw1FWVubQa+3YsQMpKSlITU1Ffn4+RowYgcTERJw9e7bdfQIDA1FRUWF7nDp1yuE2EFHXOXamStY4qZwqaH379sXXX3/danthYSGuu86xC3xr1qzB/PnzMXfuXERFRWHDhg3o2bMnNm3a1O4+KpUKer3e9ggJCXG4DUTUdXqqpS2WJDVOKqcK2n333YeFCxdi//79MJvNMJvN2LdvHxYtWoSZM2dKfp3Gxkbk5eUhISHh54R8fJCQkICcnJx296upqUF4eDgMBgOmTZuG48ePtxvb0NBg11/OZJI2NTAROS82QtqJjdQ4qZwqaMuWLUNcXBwmTZoEf39/+Pv744477sDEiRMduoZ27tw5mM3mVmdYISEhMBqNbe4zePBgbNq0Cbt27cK2bdtgsVgwbtw4nD59us349PR06HQ628NgMEhvKBE5ZdbYcFnjpHJqPjS1Wo0dO3Zg2bJlKCwshL+/P6KjoxEeLm9ybYmPj0d8fLzt+3HjxmHo0KHYuHEjli1b1ir+ueees5vuyGQysagRdbGj5Zckx7l9XU6rQYMGtTliQKrg4GD4+vqisrLSbntlZSX0er2k1/Dz88OoUaPw3Xfftfm8RqOBRqNxOkcicpy71uV06wSParUao0ePRnZ2NqZPnw4AsFgsyM7OxhNPPCHpNcxmM44dO4a77rpLUrxUZotAbukFnK2uR98ALWIj+si6ZD2Rknn8jLVSJ3h0dPRASkoKkpOTMWbMGMTGxmLt2rWora3F3LlzAQCzZ8/GDTfcgPT0dADAn//8Z4wdOxaRkZG4dOkSXnnlFZw6dQoPP/ywQ+/bkayiCqTtLrZbyj5Up0XqlCgkDQ+V7X2IlCo2og9CdVoYq+rbHAKlAqDXad03Y21XTfA4Y8YM/PTTT1i6dCmMRiNGjhyJrKws242CsrIy+Pj8fO/i4sWLmD9/PoxGI3r37o3Ro0fjyy+/RFRUlCz5ZBVVYMG2/FYHwVhVjwXb8vHGrBgWNaJO+PqokDolCgu25bcapG495UmdEiX7px6VEELeCYk8nMlkgk6nQ1VVFQIDA+2eM1sEblu5z+7MrCXr/yoHn53Ij59EEjjzaaejv9HOSD5Du+eeeyS/6Pvvv+9QEp4it/RCu8UMaP5fpqKqHrmlF2S9M0OkVEnDQ3F7lN5l16MlFzSdTmf7WgiBDz74ADqdDmPGjAEA5OXl4dKlSw4VPk/jrjszRErm66Ny2QmA5IK2efNm29fPPvss7r33XmzYsAG+vs1DF8xmMx577DGHTxE9ibvuzBCRPJwaKbBp0yY8/fTTtmIGAL6+vkhJSelwDKans96Zae9kWIXmz/9y35khInk4VdCamppQUlLSantJSQksFvnX2nMV652Z9u6SCHTNnRkikodTIwXmzp2LefPm4fvvv0dsbCwA4MiRI1ixYoWt/xgRkas5VdBWrVoFvV6P1atXo6KiAgAQGhqKZ555Bn/4wx9kTdCVzBaBtN3F7T6vApC2uxi3R+l5lkbkga65H5p1Oh5vuRnQUR+XnO/P476/H+70Nd6eP5bdNoi6yLX0Q3PqGhrQfB3t008/xdtvv20b7nTmzBnU1NQ4+5Jux24bRN7NqY+cp06dQlJSEsrKytDQ0IDbb78dAQEBWLlyJRoaGrBhwwa583QJdtsg8m5OnaEtWrQIY8aMwcWLF+Hv72/b/utf/xrZ2dmyJedq7LZB5N2cKmhffPEFXnjhBajVarvt/fr1w48//ihLYu7AbhtE3s2pgmaxWGA2m1ttP336NAICAq45KSIiZzhV0O644w6sXbvW9r1KpUJNTQ1SU1Nln2jRlTrrtgE0d9swW7rVBCVEXsOpgrZq1SocOnQIUVFRqK+vx/3332/7uLly5Uq5c3SZzmbbAH6ebYOIPI9TdzkNBgMKCwuxY8cOFBYWoqamBvPmzcMDDzxgd5PA2xirLssaR0Su5XBBu3LlCoYMGYIPP/wQDzzwAB544IGuyMstLtQ2yhpHRK7l8EdOPz8/1Ncrs2NpUE9150EOxBGRazl1De3xxx/HypUr0dTUJHc+bnWpTtqZl9Q4InItp66h/ec//0F2djY++eQTREdHo1evXnbPe+sU3H1+IW39TqlxRORaThW0oKAg/OY3v5E7F7frK7FQSY0jItdyqKBZLBa88sor+O9//4vGxkZMnDgRf/rTn7z6zqYdqQMAOFCAyCM5dA1t+fLleP755/GLX/wCN9xwA9atW4fHH3+8q3JzuXM1DbLGEZFrOVTQtm7ditdffx0ff/wxMjMzsXv3bvzrX//y6mm3W+JsG0TezaGCVlZWZje0KSEhASqVCmfOnJE9MXcYHd4bnY0791E1xxGR53GooDU1NUGrtT878fPzw5UrV2RNyl3yTl1EZ8M0LaI5jog8j0M3BYQQmDNnDjSan+/y1dfX49FHH7XruuGt3TY4Yy2Rd3OooCUnJ7faNmvWLNmScTdeQyPybg4VtJarpyuR9RpaRx87eQ2NyHM5vUiKnNavX49+/fpBq9UiLi4Oubm5Hcbv3LkTQ4YMgVarRXR0NPbs2SNLHryGRuTd3F7QduzYgZSUFKSmpiI/Px8jRoxAYmIizp4922b8l19+ifvuuw/z5s1DQUEBpk+fjunTp6OoqOiac+E1NCLvds3rcl6ruLg43HLLLfjb3/4GoHk0gsFgwJNPPoklS5a0ip8xYwZqa2vx4Ycf2raNHTsWI0eOlLTaFNflJPJsblmXUw6NjY3Iy8tDQkKCbZuPjw8SEhKQk5PT5j45OTl28QCQmJjYbnxDQwNMJpPdoz1c9YnIu7m1oJ07dw5msxkhISF220NCQmA0Gtvcx2g0OhSfnp4OnU5nexgMhnbzsa76BLQermn9nqs+EXkut19D62rPPfccqqqqbI/y8vIO45OGh+KNWTHQ6+y7Zuh1WrwxKwZJw0O7Ml0iugZOTR8kl+DgYPj6+qKystJue2VlJfR6fZv76PV6h+I1Go1dR2ApkoaH4vYoPXJLL+BsdT36BjR/zOSZGZFnc+sZmlqtxujRo+1WW7dYLMjOzkZ8fHyb+8THx7danX3v3r3txhNR9+HWMzQASElJQXJyMsaMGYPY2FisXbsWtbW1mDt3LgBg9uzZuOGGG5Ceng4AWLRoEcaPH4/Vq1dj8uTJ2L59O7766iu8+eabsuWUVVSBtN3Fdkvaheq0SJ0SxY+cRB7M7QVtxowZ+Omnn7B06VIYjUaMHDkSWVlZtgv/ZWVl8PH5+URy3Lhx+Pe//40XXngBzz//PAYOHIjMzEwMHz5clnyyiiqwYFs+ru7LYqyqx4Jt+byORuTB3N4PzdU66uNitgjctnJfu4sNq9B8c+DgsxN5PY2oi3htPzRP09nK6QJcOZ3Ik7GgtcChT0TejQWtBU4fROTdWNBa4NAnIu/GgtaCdehTe3dJBDj0iciTsaARkWKwoLVgtgik7S5u93kVgLTdxTB3NgskEbkFC1oL7LZB5N1Y0Fpgtw0i78aC1gK7bRB5Nxa0Fthtg8i7saC1wBlribwbC9pVOGMtkfdy+/RBnogz1hJ5J56hEZFi8AytDZyxlsg78QztKtYZa6/uYGudsTarqMJNmRFRZ1jQWrAOfWprYJN1G4c+EXkuFrQWOPSJyLuxoLXAoU9E3o0FrYXgXtIWJJYaR0SuxYLWktRuZuyORuSRWNBaOFfTIGscEbkWC1oLnG2DyLuxoLXA2TaIvBsLWgucbYPIu7GgXYWzbRB5L47lbANn2yDyTt2uoAnRPGzJZDJ1Gjvsej8Mu94PAFBbU92leRFRM+vfpvVv1RHdrqBVVzcXJoPB4OZMiKgj1dXV0Ol0Du2jEs6UQS9msVhw5swZBAQEQKXq+COkyWSCwWBAeXk5AgMDXZRh12KbPJ/S2gM41iYhBKqrqxEWFgYfH8cu83e7MzQfHx/ceOONDu0TGBiomF8sK7bJ8ymtPYD0Njl6ZmbFu5xEpBgsaESkGCxoHdBoNEhNTYVGo5zZNdgmz6e09gCua1O3uylARMrFMzQiUgwWNCJSDBY0IlIMFjQiUoxuVdDWr1+Pfv36QavVIi4uDrm5uR3G79y5E0OGDIFWq0V0dDT27Nlj97wQAkuXLkVoaCj8/f2RkJCAb7/9tiub0Iojbfr73/+OX/7yl+jduzd69+6NhISEVvFz5syBSqWyeyQlJXV1M+w40qaMjIxW+Wq19jOleNtxmjBhQqs2qVQqTJ482RbjzuP0+eefY8qUKQgLC4NKpUJmZman+xw4cAAxMTHQaDSIjIxERkZGqxhH/z7bJLqJ7du3C7VaLTZt2iSOHz8u5s+fL4KCgkRlZWWb8YcOHRK+vr7i5ZdfFsXFxeKFF14Qfn5+4tixY7aYFStWCJ1OJzIzM0VhYaGYOnWqiIiIEJcvX/bINt1///1i/fr1oqCgQJw4cULMmTNH6HQ6cfr0aVtMcnKySEpKEhUVFbbHhQsXXNIeIRxv0+bNm0VgYKBdvkaj0S7G247T+fPn7dpTVFQkfH19xebNm20x7jxOe/bsEX/84x/F+++/LwCIDz74oMP4kydPip49e4qUlBRRXFwsXnvtNeHr6yuysrJsMY7+jNrTbQpabGysePzxx23fm81mERYWJtLT09uMv/fee8XkyZPttsXFxYnf/e53QgghLBaL0Ov14pVXXrE9f+nSJaHRaMTbb7/dBS1ozdE2Xa2pqUkEBASILVu22LYlJyeLadOmyZ2qZI62afPmzUKn07X7eko4Tq+++qoICAgQNTU1tm3uPk5WUgra4sWLxbBhw+y2zZgxQyQmJtq+v9afkVW3+MjZ2NiIvLw8JCQk2Lb5+PggISEBOTk5be6Tk5NjFw8AiYmJtvjS0lIYjUa7GJ1Oh7i4uHZfU07OtOlqdXV1uHLlCvr0sZ9S/MCBA+jbty8GDx6MBQsW4Pz587Lm3h5n21RTU4Pw8HAYDAZMmzYNx48ftz2nhOP01ltvYebMmejVq5fddncdJ0d19rckx8/Itt+1p+v5zp07B7PZjJCQELvtISEhMBqNbe5jNBo7jLf+68hrysmZNl3t2WefRVhYmN0vUlJSErZu3Yrs7GysXLkSn332Ge68806YzWZZ82+LM20aPHgwNm3ahF27dmHbtm2wWCwYN24cTp8+DcD7j1Nubi6Kiorw8MMP221353FyVHt/SyaTCZcvX5bld9mq2822Qc1WrFiB7du348CBA3YX0WfOnGn7Ojo6GjfffDMGDBiAAwcOYNKkSe5ItUPx8fGIj4+3fT9u3DgMHToUGzduxLJly9yYmTzeeustREdHIzY21m67tx0nV+kWZ2jBwcHw9fVFZWWl3fbKykro9fo299Hr9R3GW/915DXl5EybrFatWoUVK1bgk08+wc0339xhbP/+/REcHIzvvvvumnPuzLW0ycrPzw+jRo2y5evNx6m2thbbt2/HvHnzOn0fVx4nR7X3txQYGAh/f39ZjrtVtyhoarUao0ePRnZ2tm2bxWJBdna23f/uLcXHx9vFA8DevXtt8REREdDr9XYxJpMJR44cafc15eRMmwDg5ZdfxrJly5CVlYUxY8Z0+j6nT5/G+fPnERra9YvDONumlsxmM44dO2bL11uPE9DcbaihoQGzZs3q9H1ceZwc1dnfkhzH3cahWwhebPv27UKj0YiMjAxRXFwsHnnkEREUFGS7xf/ggw+KJUuW2OIPHTokevToIVatWiVOnDghUlNT2+y2ERQUJHbt2iW+/vprMW3aNJd3B3CkTStWrBBqtVq8++67drf7q6urhRBCVFdXi6efflrk5OSI0tJS8emnn4qYmBgxcOBAUV9f75FtSktLEx9//LH4/vvvRV5enpg5c6bQarXi+PHjdu32puNkddttt4kZM2a02u7u41RdXS0KCgpEQUGBACDWrFkjCgoKxKlTp4QQQixZskQ8+OCDtnhrt41nnnlGnDhxQqxfv77Nbhsd/Yyk6jYFTQghXnvtNXHTTTcJtVotYmNjxeHDh23PjR8/XiQnJ9vFv/POO2LQoEFCrVaLYcOGiY8++sjueYvFIl588UUREhIiNBqNmDRpkvjmm29c0RQbR9oUHh4uALR6pKamCiGEqKurE3fccYe4/vrrhZ+fnwgPDxfz5893+JfKlW166qmnbLEhISHirrvuEvn5+Xav523HSQghSkpKBADxySeftHotdx+n/fv3t/l7ZG1DcnKyGD9+fKt9Ro4cKdRqtejfv79dnzqrjn5GUnH6ICJSjG5xDY2IugcWNCJSDBY0IlIMFjQiUgwWNCJSDBY0IlIMFjQiUgwWNPJaGRkZCAoKuubXkTrrKnk+FjRyqzlz5mD69OnuToMUggWNiBSDBY081po1axAdHY1evXrBYDDgscceQ01NTau4zMxMDBw4EFqtFomJiSgvL7d7fteuXYiJiYFWq0X//v2RlpaGpqYmVzWDXIgFjTyWj48P1q1bh+PHj2PLli3Yt28fFi9ebBdTV1eH5cuXY+vWrTh06BAuXbpkN/nhF198gdmzZ2PRokUoLi7Gxo0bkZGRgeXLl7u6OeQKDg9nJ5KRI4t97Ny5U1x33XW27zdv3iwA2M3KcOLECQFAHDlyRAghxKRJk8RLL71k9zr//Oc/RWhoqO17SFjog7wDp+Amj/Xpp58iPT0dJSUlMJlMaGpqQn19Perq6tCzZ08AQI8ePXDLLbfY9hkyZAiCgoJw4sQJxMbGorCwEIcOHbI7IzObza1eh5SBBY080g8//IC7774bCxYswPLly9GnTx8cPHgQ8+bNQ2Njo+RCVFNTg7S0NNxzzz2tnrt6QWLyfixo5JHy8vJgsViwevVq+Pg0X+p95513WsU1NTXhq6++si0i8s033+DSpUsYOnQoACAmJgbffPMNIiMjXZc8uQ0LGrldVVUVjh49arctODgYV65cwWuvvYYpU6bg0KFD2LBhQ6t9/fz88OSTT2LdunXo0aMHnnjiCYwdO9ZW4JYuXYq7774bN910E37729/Cx8cHhYWFKCoqwl/+8hdXNI9cyd0X8ah7S05ObnM653nz5ok1a9aI0NBQ4e/vLxITE8XWrVsFAHHx4kUhxM+rpr/33nuif//+QqPRiISEBNvc9lZZWVli3Lhxwt/fXwQGBorY2Fjx5ptv2p4HbwooBqfgJiLFYD80IlIMFjQiUgwWNCJSDBY0IlIMFjQiUgwWNCJSDBY0IlIMFjQiUgwWNCJSDBY0IlIMFjQiUgwWNCJSjP8HCuqXUT9F6eQAAAAASUVORK5CYII=", + "image/png": "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\n", "text/plain": [ "
" ] @@ -872,7 +888,7 @@ }, { "cell_type": "markdown", - "id": "9aa2db31", + "id": "6e8a104d", "metadata": {}, "source": [ "Indeed, the loss goes down and the network successfully classifies the patterns." @@ -880,7 +896,7 @@ }, { "cell_type": "markdown", - "id": "4a2b4b0a-1f97-4ea3-a5f2-af12ed5398ed", + "id": "cd9e7cc4", "metadata": {}, "source": [ "### Summary" @@ -888,7 +904,7 @@ }, { "cell_type": "markdown", - "id": "ef8c1dbe-a688-43bc-ade4-440abf359925", + "id": "b6fc5e6d", "metadata": {}, "source": [ "Puh, this was a pretty dense tutorial with a lot of material. You should have learned how to:\n", @@ -902,16 +918,16 @@ }, { "cell_type": "markdown", - "id": "0e6045a5-76db-455e-8a4a-63e5a99ddc77", + "id": "7cef661e", "metadata": {}, "source": [ - "This was one of the last tutorials of the `Jaxley` toolbox. If anything is still unclear please create a [discussion](https://github.com/jaxleyverse/jaxley/discussions). If you find any bugs, please open an [issue](https://github.com/jaxleyverse/jaxley/issues). Happy coding!" + "This was the last \"basic\" tutorial of the `Jaxley` toolbox. If you want to learn more, check out our [Advanced Tutorials](https://jaxley.readthedocs.io/en/latest/advanced_tutorials.html). If anything is still unclear please create a [discussion](https://github.com/jaxleyverse/jaxley/discussions). If you find any bugs, please open an [issue](https://github.com/jaxleyverse/jaxley/issues). Happy coding!" ] } ], "metadata": { "kernelspec": { - "display_name": "jaxley12", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -925,7 +941,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12.4" } }, "nbformat": 4, diff --git a/docs/tutorials/08_importing_morphologies.ipynb b/docs/tutorials/08_importing_morphologies.ipynb index 5aebcb1a..672e78a7 100644 --- a/docs/tutorials/08_importing_morphologies.ipynb +++ b/docs/tutorials/08_importing_morphologies.ipynb @@ -16,7 +16,8 @@ "```python\n", "import jaxley as jx\n", "\n", - "cell = jx.read_swc(\"my_cell.swc\", nseg=4, assign_groups=True)\n", + "cell = jx.read_swc(\"my_cell.swc\", ncomp=4)\n", + "cell.branch(2).set_ncomp(2) # Modify the number of compartments of a branch.\n", "```\n", "\n", "To work with more complicated morphologies, `Jaxley` supports importing morphological reconstructions via `.swc` files.\n", @@ -52,7 +53,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "(1, 157, 8)\n" + "(157, 1256)\n" ] }, { @@ -76,14 +77,12 @@ " \n", " \n", " \n", - " comp_index\n", - " branch_index\n", - " cell_index\n", - " length\n", - " radius\n", - " axial_resistivity\n", - " capacitance\n", - " v\n", + " local_comp_index\n", + " global_comp_index\n", + " local_branch_index\n", + " global_branch_index\n", + " local_cell_index\n", + " global_cell_index\n", " \n", " \n", " \n", @@ -92,55 +91,45 @@ " 0\n", " 0\n", " 0\n", - " 0.01250\n", - " 8.119\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", + " 0\n", + " 0\n", + " 0\n", " \n", " \n", " 1\n", " 1\n", + " 1\n", + " 0\n", + " 0\n", " 0\n", " 0\n", - " 0.01250\n", - " 8.119\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 2\n", " 2\n", + " 2\n", + " 0\n", + " 0\n", " 0\n", " 0\n", - " 0.01250\n", - " 8.119\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 3\n", " 3\n", + " 3\n", + " 0\n", + " 0\n", " 0\n", " 0\n", - " 0.01250\n", - " 8.119\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 4\n", " 4\n", + " 4\n", + " 0\n", + " 0\n", " 0\n", " 0\n", - " 0.01250\n", - " 8.119\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " ...\n", @@ -150,97 +139,85 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", " \n", " \n", " 1251\n", + " 3\n", " 1251\n", " 156\n", + " 156\n", + " 0\n", " 0\n", - " 24.12382\n", - " 0.550\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 1252\n", + " 4\n", " 1252\n", " 156\n", + " 156\n", + " 0\n", " 0\n", - " 24.12382\n", - " 0.550\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 1253\n", + " 5\n", " 1253\n", " 156\n", + " 156\n", + " 0\n", " 0\n", - " 24.12382\n", - " 0.550\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 1254\n", + " 6\n", " 1254\n", " 156\n", + " 156\n", + " 0\n", " 0\n", - " 24.12382\n", - " 0.550\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 1255\n", + " 7\n", " 1255\n", " 156\n", + " 156\n", + " 0\n", " 0\n", - " 24.12382\n", - " 0.550\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", "\n", - "

1256 rows × 8 columns

\n", + "

1256 rows × 6 columns

\n", "" ], "text/plain": [ - " comp_index branch_index cell_index length radius \\\n", - "0 0 0 0 0.01250 8.119 \n", - "1 1 0 0 0.01250 8.119 \n", - "2 2 0 0 0.01250 8.119 \n", - "3 3 0 0 0.01250 8.119 \n", - "4 4 0 0 0.01250 8.119 \n", - "... ... ... ... ... ... \n", - "1251 1251 156 0 24.12382 0.550 \n", - "1252 1252 156 0 24.12382 0.550 \n", - "1253 1253 156 0 24.12382 0.550 \n", - "1254 1254 156 0 24.12382 0.550 \n", - "1255 1255 156 0 24.12382 0.550 \n", + " local_comp_index global_comp_index local_branch_index \\\n", + "0 0 0 0 \n", + "1 1 1 0 \n", + "2 2 2 0 \n", + "3 3 3 0 \n", + "4 4 4 0 \n", + "... ... ... ... \n", + "1251 3 1251 156 \n", + "1252 4 1252 156 \n", + "1253 5 1253 156 \n", + "1254 6 1254 156 \n", + "1255 7 1255 156 \n", "\n", - " axial_resistivity capacitance v \n", - "0 5000.0 1.0 -70.0 \n", - "1 5000.0 1.0 -70.0 \n", - "2 5000.0 1.0 -70.0 \n", - "3 5000.0 1.0 -70.0 \n", - "4 5000.0 1.0 -70.0 \n", - "... ... ... ... \n", - "1251 5000.0 1.0 -70.0 \n", - "1252 5000.0 1.0 -70.0 \n", - "1253 5000.0 1.0 -70.0 \n", - "1254 5000.0 1.0 -70.0 \n", - "1255 5000.0 1.0 -70.0 \n", + " global_branch_index local_cell_index global_cell_index \n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "... ... ... ... \n", + "1251 156 0 0 \n", + "1252 156 0 0 \n", + "1253 156 0 0 \n", + "1254 156 0 0 \n", + "1255 156 0 0 \n", "\n", - "[1256 rows x 8 columns]" + "[1256 rows x 6 columns]" ] }, "execution_count": 2, @@ -251,9 +228,9 @@ "source": [ "# import swc file into jx.Cell object\n", "fname = \"data/morph.swc\"\n", - "cell = jx.read_swc(fname, nseg=8, max_branch_len=2000.0, assign_groups=True)\n", + "cell = jx.read_swc(fname, ncomp=8) # Use four compartments per branch.\n", "\n", - "# print shape (num_cells, num_branches, num_comps)\n", + "# print shape (num_branches, num_comps)\n", "print(cell.shape)\n", "\n", "cell.show()" @@ -275,7 +252,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "(1, 157, 2)\n" + "(157, 314)\n" ] }, { @@ -299,14 +276,12 @@ " \n", " \n", " \n", - " comp_index\n", - " branch_index\n", - " cell_index\n", - " length\n", - " radius\n", - " axial_resistivity\n", - " capacitance\n", - " v\n", + " local_comp_index\n", + " global_comp_index\n", + " local_branch_index\n", + " global_branch_index\n", + " local_cell_index\n", + " global_cell_index\n", " \n", " \n", " \n", @@ -315,55 +290,45 @@ " 0\n", " 0\n", " 0\n", - " 0.050000\n", - " 8.119000\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", + " 0\n", + " 0\n", + " 0\n", " \n", " \n", " 1\n", " 1\n", + " 1\n", + " 0\n", + " 0\n", " 0\n", " 0\n", - " 0.050000\n", - " 8.119000\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 2\n", + " 0\n", " 2\n", " 1\n", + " 1\n", + " 0\n", " 0\n", - " 6.241557\n", - " 7.493344\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 3\n", + " 1\n", " 3\n", " 1\n", + " 1\n", + " 0\n", " 0\n", - " 6.241557\n", - " 4.273686\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 4\n", + " 0\n", " 4\n", " 2\n", + " 2\n", + " 0\n", " 0\n", - " 4.160500\n", - " 7.960000\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " ...\n", @@ -373,97 +338,85 @@ " ...\n", " ...\n", " ...\n", - " ...\n", - " ...\n", " \n", " \n", " 309\n", + " 1\n", " 309\n", " 154\n", + " 154\n", + " 0\n", " 0\n", - " 49.728572\n", - " 0.400000\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 310\n", + " 0\n", " 310\n", " 155\n", + " 155\n", + " 0\n", " 0\n", - " 46.557908\n", - " 0.494201\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 311\n", + " 1\n", " 311\n", " 155\n", + " 155\n", + " 0\n", " 0\n", - " 46.557908\n", - " 0.302202\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 312\n", + " 0\n", " 312\n", " 156\n", + " 156\n", + " 0\n", " 0\n", - " 96.495281\n", - " 0.742532\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", " 313\n", + " 1\n", " 313\n", " 156\n", + " 156\n", + " 0\n", " 0\n", - " 96.495281\n", - " 0.550000\n", - " 5000.0\n", - " 1.0\n", - " -70.0\n", " \n", " \n", "\n", - "

314 rows × 8 columns

\n", + "

314 rows × 6 columns

\n", "" ], "text/plain": [ - " comp_index branch_index cell_index length radius \\\n", - "0 0 0 0 0.050000 8.119000 \n", - "1 1 0 0 0.050000 8.119000 \n", - "2 2 1 0 6.241557 7.493344 \n", - "3 3 1 0 6.241557 4.273686 \n", - "4 4 2 0 4.160500 7.960000 \n", - ".. ... ... ... ... ... \n", - "309 309 154 0 49.728572 0.400000 \n", - "310 310 155 0 46.557908 0.494201 \n", - "311 311 155 0 46.557908 0.302202 \n", - "312 312 156 0 96.495281 0.742532 \n", - "313 313 156 0 96.495281 0.550000 \n", + " local_comp_index global_comp_index local_branch_index \\\n", + "0 0 0 0 \n", + "1 1 1 0 \n", + "2 0 2 1 \n", + "3 1 3 1 \n", + "4 0 4 2 \n", + ".. ... ... ... \n", + "309 1 309 154 \n", + "310 0 310 155 \n", + "311 1 311 155 \n", + "312 0 312 156 \n", + "313 1 313 156 \n", "\n", - " axial_resistivity capacitance v \n", - "0 5000.0 1.0 -70.0 \n", - "1 5000.0 1.0 -70.0 \n", - "2 5000.0 1.0 -70.0 \n", - "3 5000.0 1.0 -70.0 \n", - "4 5000.0 1.0 -70.0 \n", - ".. ... ... ... \n", - "309 5000.0 1.0 -70.0 \n", - "310 5000.0 1.0 -70.0 \n", - "311 5000.0 1.0 -70.0 \n", - "312 5000.0 1.0 -70.0 \n", - "313 5000.0 1.0 -70.0 \n", + " global_branch_index local_cell_index global_cell_index \n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 1 0 0 \n", + "3 1 0 0 \n", + "4 2 0 0 \n", + ".. ... ... ... \n", + "309 154 0 0 \n", + "310 155 0 0 \n", + "311 155 0 0 \n", + "312 156 0 0 \n", + "313 156 0 0 \n", "\n", - "[314 rows x 8 columns]" + "[314 rows x 6 columns]" ] }, "execution_count": 3, @@ -472,9 +425,9 @@ } ], "source": [ - "cell = jx.read_swc(fname, nseg=2, max_branch_len=2000.0, assign_groups=True)\n", + "cell = jx.read_swc(fname, ncomp=2)\n", "\n", - "# print shape (num_cells, num_branches, num_comps)\n", + "# print shape (num_branches, num_comps)\n", "print(cell.shape)\n", "\n", "cell.show()" @@ -484,17 +437,210 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Once imported the compartmentalized morphology can be viewed using `vis`. " + "The above assigns the same number of compartments to every branch. To use a different number of compartments in individual branches, you can use `.set_ncomp()`:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, + "outputs": [], + "source": [ + "cell.branch(1).set_ncomp(4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see below, branch `0` has two compartments (because this is what was passed to `jx.read_swc(..., ncomp=2)`), but branch `1` has four compartments:" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "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", + "
local_cell_indexlocal_branch_indexlocal_comp_indexlengthradiusaxial_resistivitycapacitancevglobal_cell_indexglobal_branch_indexglobal_comp_indexcontrolled_by_param
00000.0500008.1190005000.01.0-70.00000
10010.0500008.1190005000.01.0-70.00010
20103.1207797.8061725000.01.0-70.00121
30113.1207797.1112315000.01.0-70.00131
40123.1207795.6523945000.01.0-70.00141
50133.1207793.8692475000.01.0-70.00151
\n", + "
" + ], + "text/plain": [ + " local_cell_index local_branch_index local_comp_index length radius \\\n", + "0 0 0 0 0.050000 8.119000 \n", + "1 0 0 1 0.050000 8.119000 \n", + "2 0 1 0 3.120779 7.806172 \n", + "3 0 1 1 3.120779 7.111231 \n", + "4 0 1 2 3.120779 5.652394 \n", + "5 0 1 3 3.120779 3.869247 \n", + "\n", + " axial_resistivity capacitance v global_cell_index \\\n", + "0 5000.0 1.0 -70.0 0 \n", + "1 5000.0 1.0 -70.0 0 \n", + "2 5000.0 1.0 -70.0 0 \n", + "3 5000.0 1.0 -70.0 0 \n", + "4 5000.0 1.0 -70.0 0 \n", + "5 5000.0 1.0 -70.0 0 \n", + "\n", + " global_branch_index global_comp_index controlled_by_param \n", + "0 0 0 0 \n", + "1 0 1 0 \n", + "2 1 2 1 \n", + "3 1 3 1 \n", + "4 1 4 1 \n", + "5 1 5 1 " + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell.branch([0, 1]).nodes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once imported the compartmentalized morphology can be viewed using `vis`. " + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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uZK3S400GRsbK6WVjYyM5MWOV1NTo/79+9P169eFrr6AXIR5eDnExsbi2bNnePLkCR4+fIgHDx4gKiqKd42xsTGMjY2Zm+utW7fQrl07ZYiLR48e4aeffsLly5fZsSZNmsDT0xPOzs6oX78+6tWrJ3jVCaim401WVhYePnyIiIgItvgkISEBYWFhePbsGXOCKYiWlhY6d+4MDw8P9OrVC7Vr1wYA/P7771BTU8O8efMquBayvHz5Eps2bcLevXtlgncA+R57nTt3xldffYWvvvoKTk5OguONiqGSCj9gwAAcP3680PMikQj169dH06ZN0aJFC7Rq1Qqurq5VpoVMSkrCkSNHcPfuXQQHByMkJARJSUky11WrVg0bN27EoEGDlCClgDJQSYVfv349Vq9ejYYNG8LCwgKWlpawtLREjRo14OzsjMaNG1cZ5S4uHz9+xOPHj3H79m3cu3cP165dAwDUqVMHoaGhSpZOoKJQSYXPy8uDhoaG3MivqkJMTAzWrl0LPT09LFmyRNniCFQQKqnwAgKqikruPCMgoKoICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEIICi8goEL8HxlrHMgK+Rp4AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -520,12 +666,12 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAGrCAYAAAAM3trbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAADPWElEQVR4nOyddXgUV9uH75n1TbJxgxAIwd1daxRqUOru7i5fnbrS9q27Ky2FQgttcXeXABHiLpvNyuzM98eEDWkCCTSQAOfmysXuzDkzz04285tzziOSpmkaAoFAIBA0IXJzGyAQCASC4w8hLgKBQCBocoS4CAQCgaDJEeIiEAgEgiZHiItAIBAImhwhLgKBQCBocoS4CAQCgaDJEeIiEAgEgiZHiItAIBAImhwhLgLBEeDJJ59EkiQKCwub2xSBoFkQ4iJosXz22WdIklTrJyYmhrFjxzJ79uzmNk8gEBwEY3MbIBA0xNNPP01SUhKappGXl8dnn33GhAkTmDFjBmeeeWZzmycQCOpBiIugxTN+/HgGDBgQeH/ttdcSGxvLt99+e0BxURQFVVUxm81Hy0yBQLAfYlpMcMwRFhaGzWbDaNSfjdLS0pAkiVdeeYU33niD5ORkLBYLW7duxev18vjjj9O/f39CQ0MJCgpi5MiRzJs3r9Yx9z/GBx98EDjGwIEDWbVqVR0btm/fzgUXXEB0dDQ2m43OnTvz6KOP1mlXWlrKVVddRVhYGKGhoVx99dW4XK467b766iv69++PzWYjIiKCiy66iL1799Zqk5KSwuTJk4mLi8NqtZKQkMBFF11EWVnZf7mcAsERQYxcBC2esrIyCgsL0TSN/Px83nrrLZxOJ5dddlmtdp9++ilut5sbbrgBi8VCREQE5eXlfPTRR1x88cVcf/31VFRU8PHHHzNu3DhWrlxJnz59ah3jm2++oaKightvvBFJknjppZc499xz2bNnDyaTCYCNGzcycuRITCYTN9xwA+3atWP37t3MmDGDZ599ttbxLrjgApKSknj++edZu3YtH330ETExMbz44ouBNs8++yyPPfYYF1xwAddddx0FBQW89dZbjBo1inXr1hEWFobX62XcuHF4PB5uv/124uLiyMrKYubMmZSWlhIaGnpkLr5AcLhoAkEL5dNPP9WAOj8Wi0X77LPPAu1SU1M1QHM4HFp+fn6tYyiKonk8nlrbSkpKtNjYWO2aa66pc4zIyEituLg4sH369OkaoM2YMSOwbdSoUVpISIiWnp5e67iqqgZeP/HEExpQ6xyapmmTJk3SIiMjA+/T0tI0g8GgPfvss7Xabdq0STMajYHt69at0wDtxx9/PPhFEwhaCGJaTNDi+d///sfcuXOZO3cuX331FWPHjuW6665j2rRptdpNnjyZ6OjoWtsMBkNg3UVVVYqLi1EUhQEDBrB27do657rwwgsJDw8PvB85ciQAe/bsAaCgoICFCxdyzTXXkJiYWKuvJEl1jnfTTTfVej9y5EiKioooLy8HYNq0aaiqygUXXEBhYWHgJy4ujo4dOwam7/aNTP788896p9UEgpaGmBYTtHgGDRpUa0H/4osvpm/fvtx22221FvSTkpLq7f/555/z6quvsn37dnw+30Hb/1sw9glNSUkJUCMyPXr0aJTtBzuew+EgJSUFTdPo2LFjvf33TcUlJSVxzz338Nprr/H1118zcuRIzj77bC677DIxJSZokQhxERxzyLLM2LFjmTp1KikpKQQFBQFgs9nqtP3qq6+46qqrmDhxIvfffz8xMTEYDAaef/55du/eXae9wWCo95zaYVYDb+h4qqoiSRKzZ8+ut21wcHDg9auvvspVV13F9OnTmTNnDnfccQfPP/88y5cvJyEh4bDsEwiOFEJcBMckiqIA4HQ6A+JSHz/99BPt27dn2rRptaatnnjiicM6b/v27QHYvHnzYfX/N8nJyWiaRlJSEp06dWqwfc+ePenZsyf/93//x9KlSxk+fDjvvfceU6ZMaRJ7BIKmQqy5CI45fD4fc+bMwWw207Vr14O23Tca2H/ksWLFCpYtW3ZY546OjmbUqFF88sknZGRk1Np3OKObc889F4PBwFNPPVWnv6ZpFBUVAVBeXh4Q1H307NkTWZbxeDyHfF6B4EgjRi6CFs/s2bPZvn07APn5+XzzzTekpKTw0EMP4XA4KC4uPmDfM888k2nTpjFp0iTOOOMMUlNTee+99+jWrRtOp/Ow7HnzzTcZMWIE/fr144YbbiApKYm0tDR+//131q9ff0jHSk5OZsqUKTz88MOkpaUxceJEQkJCSE1N5ZdffuGGG27gvvvu459//uG2227j/PPPp1OnTiiKwpdffonBYGDy5MmH9TkEgiOJEBdBi+fxxx8PvLZarXTp0oV3332XG2+8scG+V111Fbm5ubz//vv8+eefdOvWja+++ooff/yR+fPnH5Y9vXv3Zvny5Tz22GO8++67uN1u2rZtywUXXHBYx3vooYfo1KkTr7/+Ok899RQAbdq04bTTTuPss88OnHPcuHHMmDGDrKws7HY7vXv3Zvbs2QwZMuSwzisQHEkk7XBXKgUCgUAgOABizUUgEAgETY4QF4FAIBA0OUJcBAKBQNDkCHERCAQCQZMjxEUgEAgETY4QF4FAIBA0OUJcBAKBQNDkCHERCAQCQZMjxEUgEAgETY4QF4FAIBA0OUJcBAKBQNDkCHERCAQCQZMjxEUgEAgETY4QF4FAIBA0OUJcBAKBQNDkCHERCAQCQZMjxEUgEAgETY4QF4FAIBA0OUJcBAKBQNDkCHERCAQCQZMjxEUgEAgETY4QF4FAIBA0OUJcBAKBQNDkCHERtFx+uRk+PAnWfgWq2tzWCASCQ0DSNE1rbiMEgnp5rhV4K/XXBjO0GwFjH4GEgc1rl0AgaBAhLoKWy+wHYftMKMusvd0aBt0m6kITEtsclgkEggYQ4iJo+ZRlwbznYNtv4CmvvS/5ZLh8WvPYJRAIDogQF8GxRfpSmP8CpC8BVdG3xXSHIbdAlwlgj2he+6pxu9188MEHVFVV0apVKwYOHEinTp2QZbHMKTgxEOIiODZRVZjas+6U2aT3ofdFzWPTv3jqqafY/89LlmViY2MZPHgwffr0aT7DBIKjgHiMEhybyDJc9iskDgWLo2Z70e5mM+nf7But2O12AFRVJScnh19//ZWffvqpma0TCI4sYuQiOPZZ/h788aD++tE8MFmb1556KC8vZ/ny5WzYsIHKSt0DLikpicsvv1xMlQmOS8S3WnDs025EzWtnbvPZcRAcDgennXYa9957LwkJCQCkpqayYMGCZrZMIDgyCHERHPvE9QDZpL9e93Xz2tIAXq+X4uLiwPtWrVo1ozUCwZFDiIvg+MAapv+fs6FZzTgYbrebN998E5fLBcCpp55K586dm9kqgeDIYGxuA1oy83fkU+T0MLl/m6N2TrWykj3nnIMvMwtjfDy2nj2xdOqItVdvbP36YgwOPmq2HDOU54CrQH/d/ZzmteUAlJaW8t577+F2uwFdWIYPH97MVgkERw4hLgfgtTk7ePOfXQCc1j2OEKvpqJzXvWMHvswsAJScHCpycqiYM6emgSwjmUxIFguy3Y4cFITB4UB2hOjuuRoYY2Iwt2uLpWMnLF27YI6LOyq2Nxsr3tX/lwzQ6+LmtaUevF4v77//vhAWwQmFEJcD0D66ZoQw8qV5zL9vDGF28xE/r71fPyJvuoniTz/F0qEDSkE+/rJyNI9Hb6CqaB4PmseDWl5+8INVI9lshJ57LrEPPoBsPvKf4ahjCtL/1/yw8w89mLKFoKoq7733HlVVVQBMmDCBQYMGNbNVAsGRR7giHwBVVTnr7SVsydZv4IPahfPDTcOa1R7vnj24N23Cl5uLkp+Pv6gYpaQEtawMtapKj/1QVdSKClSXC83rrXUMOTSUdt9/h6Vdu+b5EEcKnxte7QzuUn1h/84NENq6WU1SVZXFixezZMkSPNUPBqNHj2bs2LHNapdAcLQQ4lIPm7PKuOazVeRXeALb7h/XmVvHdmhGqw4P9/bt5D3/PK4VK/UNBgOtXnmZ0PHjm9ewpiZvO7w3FDQVQuLh7q262B5lVFXljz/+YO3atSiKEtjes2dPJk+efNTtORKoqipicwQNIsQF/Y9lVVoJf23LY2VaMRv2lgX29U4I5c2L+9I2MqgZLfzvlP/5J1n33At+PwAxD9xP5DXXNLNVTcyaz2HGHfrrXhfBue8fdRNWr17NzJkzA+/j4uKYMGECiYmJR92WpqYkJ4sZr79AUeZernj5LSJbHz1HF8GxxwkrLqqq8s783Uxfn83uAifqv66CzWTg1fN7M6FXfPMYeATwpqeTesGFqGVlIMt0XrsG2dryotn/Ex+dCpkrUYJb8UXE/XTr1o0uXboQFhZ2VE4/Y8YM1qxZA8Dtt99OZGTkUTnvkUDxetkwdxZbF82jKHMvfl/NNGtS3wGc+9CTzWecoMVzwi7on/bGInblO2tts5kMtAqzMjgpgsfP7IbVfHxdHnPbtiTPnkXKsOGgqlStXUfQsKHNbVbTEpYImSvxuSvJyMggIyODP/74A1mWCQoKon///owZM6bJT5uZmcl3332H06l/p2w22zErLF63i19eeJrMbZvr7tQ0IiKiGH35dUffMMExxfF192wky3cX1RIWm8nA59cMZFDSsXkzOBSMERFgMoHPh3vHjuNPXMy6l59R0ggJCcHpdKJpGqqqUlFRwcKFC5tcXHbv3s3XX3+NWl2KOTg4mLPPPrtJz3G02LpoHnPefxO/z6dvkCTCYuII27mbhJxCwqx22j43FWvrhOY1VNDiOSHFJcxuwmyQ8fr1m0GVz8/lH69kx5TjbJH7AMh2O2pZGZ7degbh1LJULp91OSoqn5z2CV0iuzSzhYeJqkLaIgBMBpl7770XgKKiIr788ktKS0sxN6ErdnZ2Nj/++CMlJSWBbWeffTb9+vVrsnMcLdwuF788/wTZO7fpGySJvqefyajLrkbZtYfUiZMAaPXWy1g7HHuOLYKjzwkpLl3iHex8djw3fLGaOVvzADAbTxzvF0N4GGpZGZWLF6N6vews3kmZV3diKPYUN9C7heJX4L3hUFydcr/PJYFdkZGRtGrVitLSUkymwwuGdbvdLF26lOzsbIqLi3E6nXj3c/W22+2cffbZdOly7AizqqqkrlvNlgV/s2fNSvyKPloJiYpm8iPPEFk9Osl58y0AJLudkFEjm81ewbHFCSku+5i/oyDw+qMrBjSjJUeX0LPOpvCtt1Byc9l9yqmM/W06siSjaio3zb2JiR0m8vjQxzHKx9DX4+froGC7/rrfFXD687V2GwwGAPzV3nKHgtvt5o033ghE2O+PyWRi3LhxDBhwbH1/8tL28O3/3VdrkR5JYsCZkxh9WW0vwsplywAIHj36aJooOMY5hu4eTc8TZ3fj0V/0RctLPlzB73eMoEu8o4Fexz7Rt96Cv6yMki++QMnPJ/WUU3n1+dt4IPddfKqPX3b9wp9pf/LgoAc5t+O5zW1u4zDs91Ue/3Kd3Xl5+gjV4Ti036/f7+edd94JCEtISAiRkZHExsaSmJhIly5dAsLV0lFVlZyU7aSsWMr6Ob8H1lWswcHEdejMSVfdQHh8PcGnfj1ex9w+6WiaKzjGOWFdkfexOKWAyz9eiQaM6BDJV9cNaW6TjhpFn35G/osvBt57Qm28dVkYKx01I7pwSziXdr2Ua3te22JGMkuyljBl+RSmjp1Kp4hO+sbKQni5A6DBwOvhjFcC7UtLS5k6dSqapjF48GDGH0IA6ccff8zevXsBOPnkkxk58tiZFirJyWL70kXs3bKRor3puCrKYb8/d0mSOO+x50js3rPe/qW/Tqf4iy/wbN0KQNDIESR++OFRsV1w7HPCiwvA9Z+vYu62fADGdYtl6kV9jjs35ANR/ucccp98Ev9+i9Jp0fD6+RZyQmumkIyykTOTzuSxIY9hNjZvfrIh3wyh0ldJ35i+fDH+i5odr3QEZz6EJ8Gd6wH9af2NN96gvLwcSZK4++67Gz16WbBgAfPmzQOgf//+nHXWWU39UZqctbN/Y83MX3GWFKEeYArQaDYTGhPLmCuvp12v+p0Psh95lLJp02pti/2//yPiskub3GbB8YkQF/R0L5PeWYLPr18Kq1HmgoFtuPfUToQehWSVLYGqrdsonDqVymXLAjnJNiUZ+eHaJHZUpgbaGSQDA+MGcv/A++kU3qlZbH1q6VP8lPITZoOZVZes0lORrPoYfr9Hb3DGazDwWgAyMjL45JNPABg/fjyDBw9u1DlKSkqYOnUqoDsE3H777U3/QZqYNb//yvwvPqq1TTYYCY6MJLZdMu369KfT4OFYGyjbUPzV1+RNmQKAISqKsEkTibj2WoxHKRBVcHwgxKUaRVG596cN/LY+m/0vSKfYYN68qO9xtxZT/PNOfDmV2HpH4xhZE7OgqirlM2aS88gj4PcjWSyE/T2dZ9a/xKKsRWj7XZ04exxXdr+SS7pcclRzTc3PmM/t8/Sb/bKLlxGMDC+2A78HIjvA7WsCbRVFYUr1jXLcuHEMHdq4uJ4dO3bw7bffBt736NGD8847r+k+RBOiKF42/fUn/3yqp7uxOULpf8ZEOg8dSVjsoZVbUIqLSRk+AjQNY1wcyX/NRTaeGKN4QdMixOVf7Mqr4JFfN7MmrQR/9aVJigpi3n1jmtewJibr6WVoLn2httWU4cj/csWuXLqMjGuvBU3D1qcP7b77llJ3KVPXTmVW6ixciivQ1iSbGBg3kDv73Um3yG5H3PbzZ5zP9uLt2Iw2Vl66Er67HLb/Bki6sEQm12r/+uuvU1ZWhtls5qGHHmq0EC5cuJAFCxYEPMyuueaaFpEjzFVWytaF/7Bn3WoKMtJwV9SUXjDb7Fz/9icNjk7+jaqq5Dz4EOW//67HCwEdly7Rg24FgsPgxAnuaCQdYkP44cah7Hjm9MA2oyw1o0VHBmNYdU4xiTrCAhA0bCgR1+ouqVXr11M6bRph1jCeGPYEKy5dwYsjX6Sdox0APtXH0uylXDjzQkZ9N4pXVr+Cy+uqc8wD8U9RGd0Wb+LLrMJAlPuBSC9LZ3ux7nJ8Q88b9I3Zq/X/k0bWERaA888/H9CLdn14CAvSo0aNonv37oC++B0f3/x55rJ2bOXdGy5jwVefsHfLxlrCEhweweUvvnnIwlKxYAG7TzmV8hkzAsJiattWCIvgPyHGuwfAaJRJDLeRUVJFSr6TFXuKGNz++EkPY2odjC/biWQ5sBtt7H33UTH7D3xZWeQ88STBo0djrM6XNaH9BCa0n0COM4e317/N3xl/U+mrpMRTwudbPueLLV/QObwzZyWfxcSOE3GY659WVFWVazenUaVq3L8zkwd2ZhJnNtIvNIiJMWGMjwrFuN9II6cyJ/B6cHz1+onFAWST58wmUlXqeLUlJCSQkJBAZmYmOTk57N69m+TkuiL0b9auXcvGjRsBSE5OPuwAzKZk95qVgdchUdHEJ3eiw6BhdBw0FOMhZB9QiovJfvhhXMtX1BSiA4ytWhH31JMEiUqZgv+ImBY7COsySpj0ztLA+wk943hpcm+Crce+Juf/bz3evRUYY+3E3d3/gO286ensHj8eVA3JaqXtV19i69Gj3rZLspbw7oZ32VSwCZXaI5AQcwitg1pT5i0j3BLOGe3P4LzO52E32plTWMad2zIoUep6N0lAtNlIP4ediTFhTIh0MPqHkTh9TpLDkvn1nF/h/dGQs57dJiNXJ3dn4UUL6xynuLiYN998E4DExESuaaDcgKqqTJkyBVVVMRqNPPTQQxhbwNrD3I/+x8a5s7EGh3Drx9823OEApJ5/Ae5NmwLvDREROM48k5iHHvxP62eqqvJhZiFbK6so8vkxSxLJdjOhRiMxZhMDQ+0k2Y+zTNyCejlq4lK5IZ+q9QVYOoQRMrx5qwQeCjM3ZHPPjxvwKvrN0ihLXDI4kcfP6IbxGE4ZU/DBRjx7ysAg0eqxIcgHEcyS778n98mn9BgJWSZ+yjOEnXvg4Eq34uazzZ8xffd0sp3ZdYRmHxISl3e7nPsH3g9AuaLwc24JfxSWs7HCVa/YyEAHcwUFex7DqBbxmqktp+xchATMtduY1m8S757ybq0+Xq+X1157LRAIecEFF9Ct28HXhlRV5ZVXXsHl0qf3HA4HN998Mzab7aD9jjTTXniS1HWrCQqP4Kb3vmi4w7+oWLSIki++oHLR4sC29n/M/k/VSYu8Cu/szWNOYTl7XB4akwPBAMiShATIkv4QAdDKYmbJkK6HbYug5XDUxKXg4014UkoBMIRbiLyqO+bYY6MAl1dRuffH9czcmBOIQQuxGFn28MnH7ChGKaoi95XVoIElOZTo63sdtH3lqlXsvfa6gJuyZLNh692L8EsvxXHqqQfsp6oqS7KXMGP3DNLL04m0RZJWnkZmRWYtz7N9hJhDeGHkC4xKGIVLUfk1v4SZBaVsqHBR5NvvtqVpXJj1FW/s/ggJyDUYGJ8Qz4enf86A+JpULH6/n9dffz2QCl+WZR5//PFGXSOPx8Mrr7yCrzqS/VADMJsKt9PJou8+Z/vi+XirqgAIb5XANa+/16j+lavXkPfUU3jS0mBftuNqgoYPJ/Hjj+rv+C82V7j4IbeEFJebHI+PUp+Cy69S7q/78BBhMhBsMOBTVcoUFb+m4dO0Azxm1GCXZfaMPvh3UXBscNTExbkqh7Lf9qD5ar5e9r4xhE3uWO+Cckuk0Onmru/Ws3hXEaBPk719cd8mdcPNzZtJUdF8OnZ8HLPpyLo/Zz+3ArXci2Qz0vqJhl10vbm5pF90MUpubq3tksVC+CWXEH3/fY2+Fi7FxY1zbmR9wfp695+SeAovj3651vqJU1F4ancOP+QUM6RoBd9uegAZjVLZwLg28bhkmfHtxvPS6JcCfaZOnVora3FjRi2gp4v5/PPPAyMXu93OLbfcQnD1YnlZWRlBQUFHdKosdf1alnz/BXl7dtXaHhQewYTb7z9gZP2/2dal9kjAEBZG0PDhRFxzDbbuDV+LzRUubtmazk6X54BtDBJ0CbIyPiqMK1tHEm3+1/qUqoIsU+D1sanCRa5HoUpV8aoqXk3DWx1j1iHIwqRY4UhwPHDU11wq1+RR8usuqBYZyWIg4oJO2LpHHU0zGuRgdcJPfnUBuwv0J2GLUebMXvE8dmY3wv5DwKXLlcrGTTdRWanfSOy2JIYO/euwj9cQ7pQSCj/W86qFnp1MyLBWje+7cyfFn36Gc+FC/EVFge2S1UrUzTcTcf11jRaZvMo88lx5+FQfha5CpqyYQqmnFIAIawRzJ8+tkxFA9brRXmiNQVVwyVZG9rgXb8WXAExImsCLo/SUNt999x3bt28P9LvpppuIi2s47mPTpk38/PPPgffdunXjvPPOC3ymoqIi3n33XUJCQrjzzjsb9Tkbi9ftYsn3X7FlwT94KmtqDkmyTJtuPRl16dXEtm845b2qqpR+9x1FH3xY62Gg7bffYO/bt1G2bK1wcenGPeR4lcA2qywRbTYRZzYRZzESazbRPcTG+bHhtRwv6vDxOPCUw7VzwXJo3myCY5OjPqcT1D8WW89oir/bjntrEZrHT9GX27C0DyXyim4Hnfs/Grjdbv73v//hdDoZO3Yso0aNqtPmgyv6c8MXq9ldUIlHUfl5bRbT1mZxctcYPrpy4CGfs6hoEes3XA37TRN161Y3+WJTUrlC97qSrIZDEhYAa6dOtHr+OQC8e/eS/fAjVK1ejeZ2U/D66xR99BHxU57BMW5cg8eKDYolNig28P7UtqdyxR9XsKFgA8XuYtbmr6VXTC/sRnugjYwayJEloWI3JqJUZ3XuEqGnvC8vL68lLAAxMTGN+nxr164NvK4veHLLli0oikJJSQl79uyhffv2jTpuQxRlZfLF/beh+mtu5vbQMHqfOp5Bk87H2Ii0O0pBAfmvvU75rFm1vMDkkBDinni8QWHxqiof7C3g+9xiUvYbqQQZZK5pHcmjyYexXuouh73L9dcfjK4V5Co4fmmW+SjZLBN1RTeib+6FHKQPnz17ysiesoLKtXnNYRIAPp+Pt99+m4qKCjRNQ1GUetslRwfz971jWHD/GE7qEo1BltCAv7blc87bi3F56+93IDKzvkYXFomOHR5j7JhthIY27unycPGk6vVbLG3/29SbuU0b2n31JUm/z8TSVZ9+USsqyLrrbpSCggZ610WWZUrdpYH318+9niFfD2F26uz9TmrHe/5nqIBN9TJ33W3Yq5cS+sXoubKCg4PrjFLWrVvXKBsmT56M1ap7NG3evJmysrJa+/d/4CgtLaUpUFWVn6Y8qguLJNG6S3cufuZlbv7gK4adf+lBhUVxOsl/9VVSxowlZeQoyn75JSAs5qQkWk99g86rVhJ65pkHteHPwjI6L9rElD05AWGxyzKvdW7D7lG9Dk9YAKwOPXMCQNEumPvk4R1HcEzRrIsdlrahxD06iKCh1cFpikrJDzvJ/9961EO8QTcFM2bMCCz8Wq1WTjrppIO2bxsZxCdXDWLb06eTGKF7EW3ILKPXk3N4fPpmFKWh5UsdTfVWnzOBxMSrkOUjk89M9SqU/5Ohr7VU6tfXvaOEgk82NdCzYazJybT/ZRptv/0GDAbQNLL/7/8O61jtQtvVeq+h8eDCB3ln/TtsLdqqT/m0HcNeq/69sWo+RlTpnmDdo/SgR1mWufLKK5GkmgDYefPmNRikCbow3XnnnYG+c+fOrdNm376//vqrUcc8EG6Xi3V/zODrh+/CWaxPMY6/9R4ueupFWnVq2GuqdPpvpAwcRNGHH9VMfxmNBI0aSfs/ZpM8e9ZBR5BOReGpXVmMXLGNKzelUqVWr33YLDyRHM+e0b24pFUTxHfdvAzCqrMbLHkdFhzZkXlT4N5VgntPWcMNBfXSYuJcvHmVFH2yGX+ZfqOVg4zE3N0fY/DRSxy5Zs0aZsyYEXgfERHBxRdfTHR0dIN9C51ubvlqLavSSgKTWzaTgYfGd+HKYe0O2nf16gsoK1+DxRzHiBFL/sMnODDFP6fgWpVb7z7JaqD1k8Oa7Fy7Tj0N3969GGNi6LhwwX86VnpZOpN+m4RPrfFykpAI8/vp5nHzXl4hK+yxXBdtQpINbLxyY6DdZ599RlpaWq3jDRkyhNNPP50DkZGRwdKlS8nIyAgs5ttsNh588EEAKioqePvtt/HsN+V08803ExsbW+/x6kNRvMx681UyNm+ota4CkNijN+c/9myjjuPNyiLrjjtxb9kCkoS1WzfCr7gCx1lnNmrNy6uq9FqyhdL9XL4jTAZ+6J1MjxD7QXoeJj43TO2pZ64OjoX7djb9OZoIVVHJeXoZmlcl+uZeWNqGNrdJxxwtxk3LHBtE/MODCR6pD73VSoW8l1bhK2h8GpH/Sv/+/bn++usJq87+WlxczDvvvMOqVasa7BsVbOWHm4ax4pGTGZasP+lV+fw88dsWBj37F2vSS+rt53Ltpaxcn4OOij7lsG3PysqqVXa3znn2n2406b92KciItXM40dc1zuuoMVTMm4+vuv5JRAOBio2hbWhbPjztQ8IsYciSbreGRolBZo3Vynuxk7kk+SyQZQxSTbaBnJwc0tPT6xwvKurAjiObN2/mk08+Yfv27QFhkSSplnfZn3/+GRAWg8FAp06dDklYKooK+eDmq0lZsaRGWCSJ4Mgoep40jskPP3XAvtkPP8LOkaPY3rsP27p0ZffJp+jCAlg6dSLp558IO+fsRgnLxgoXQ5ZvCwhLtyArD7ePY/Ow7kdGWABMVgipXt8zNW+8UEP4S9xoXn1E6lya00BrQX20uCCNsDPaY4y2UTptF5pXJe/1tZgTQzCEWTCGWzHG2DHF2TFG24+IC3Pr1q256667WL16NbNmzUJVVX7//Xd27tzJRRdd1GDVwRiHlW+uH8LWnDLu+HY9u/Kd5Fd4mPzuUsZ1i+WtS/ph3s/uouJ5gddtEq48LJt9Ph+ffvopmqYxYMAATjnllLqpSqqnO0LPTMK1Jh9fTiWyzUjU1fVH2x8uOY8+Cuip2iOvOrzP82/6x/Zn0UWLAChxl/D84rco3vE96UpbnnNehNq+CrtzDkEmPW5q/zT7AGiQ5I9h/JkTiBnQ7oDnmTVrlm67wUBSUhJ9+/ala9eutW7W+wQrISGB66677pA+R8bmDUx7/slArfqkvgPofcp4kvoNbFAQMm64gcqFi+rukCRku53I6xu2ZXlJBa+n57OyzBmY/gI4Pzact7q1PaTPctgo1aWiS9L0hKPnf1q7imgLwRRtx5QQjC/TiS+vsrnNOSZpeb9VIHhQPAaHhaLPt4Cq4U0rr7edZDEgWQzIdiOGYDMGhxlDuBVjlA1TjA051IJsNx5WHMqAAQPo1KkTH3/8MWVlZaSkpPDqq69y9dVXN2qarFt8KH/dM5o/N+dy74/rcXr8/Lk1jz5Pz+GV83ozoZe+XtC61SXsSnkeVfOydet9DBw4rYEj12X37t0B54MVK1awcuVKkpOTOeOMMwgPD6dyTV7AEU22m1DK9CdvzXPo9eQPRu6UKfiLiwGIr/Yma2psRht/ZP2Eq3ICSvEYJHxY/HqhtxEJI6iqquLTTz+t6aD7SWCSjcQMaXfQY1dVByhOmDCB/v3rT4lTWanfaDIzMykvL2904bH9a61IksS4m++i++iTG9XXtXZtQFgs3boRctJYrN26YevdO5Dr7d+kutz8WVjO8jIn2yvd5Hp8uNXaM+A2WWJwaDBTu7RplB1NwnmfwmcToKpEz2T9cjLcuhJCGj/6O1qY4oLwZTrxlx44vkdwYFqkuADYukQQc0c/yman4i91o7oUNI8fTVEDN0rN40fz+FHLvSg0MH0mA7KMZJAwhFmw9YwiZFg88kFiUxwOB3feeSe//PILmzZtwuVy8c4773DqqacybFjj1ijG9Yjj5C6ncc+PG/htQzYur59bvllL38VhfHrVQMLsZtq2vYnUtDcpr9hATs404uMPrW59ly5duPXWW5k5cybp6elomsauXbuYOnUqkZGRnFPQBxmQ7EaC+sVSOnMPoD+dNRXF33xDyVdfA2Dr04eQI1QOuMxThoaG0Z6GousYXqzYgbFtxpKbm8u+ZcR+viTWGvVCZ9EjG67/vq/fwVK8DBgwgJUr9eSR7733Hg888ECDx926aF5AWEwWCxc++WKjYlX24c3K0l9IEu2n/XzAdguLK3g7I48VpZV4DrCU6jAaODUyhNsSY+kafODP+VdhGT5NY3x0WKPtbBSx3eD+PfDzNbDlF3CXwo9XwjV/NO15mgBL+1Bcq/PQ3P6Dxr0J6qfFiguAOT6I6GvqTtuoXgX39hK8e8vxl3rxl3vxV3rRqhRUrwr7CVBNJ0BV0RRQ8lxU5GVQ8VcGcpAJS4dQgoe1qnfRTpZlJk+eTNeuXfn555/x+/3MmTOHJUuWEBsbS7t27ejevTuRB3iCBD3D8psX9+WGUe259rNV5FV4WJdRyoApf/HbbcPp0u52UtP+B/jZuu1+nM4dJCcfWgLB6Ohorr76aqqqqpgzZw6bNm1C9sLJWZ0CC2u7Y4qJV9XAXLL5P7oh78O1YQN5z+gFuYwx0SR+8XmTHLc+9k19+UqrU7zIEqohDINkoGRFCZ9vqz63BsGaNZC0asiQIQc9rm+/tCg//PADp59+ep0+ubm5bNov2WNjfj8VRYX8+e4bgF7E6+rX38UW3PjrrqoqVWuq40LqEQynovDIzixmFJTWmuoCPWo+ymSkvc3CgFA7p0aFMij04AGMqqry9O4cPsgsQAXuaxfHfUmHVnCsQWQZzv8MQtvA0jchYxl4nC0uuNKXU+NsoRRUHTPpqloKLcZbrKlRFRXV5UMt9+Kv8OJ3elErFfxlHjy7S1EKquoIkGQzEjKiFcEj2yCb6944nE4nn376KUX7RaXvQ5ZlgoODiYqKYujQoXTs2LFeu/LL3Qx67u/A+0fP6ML1I5MpK1vHuvVX4PfvW0g2ER4+lOT29+JwHPq6iKqqbP90GY6UGjfZFYYUttmy6eSJY5AvmeCuMURd2f2Qj/1vcp97npIvvgBJouOSxUe8DsiLP73Nh6vaokgymlHCOyqYSy2/ETI/JDD6GOhLpsThYVdVJmazmUceeaTB437//fds27Yt8H7ChAkMGjQo8P7VV1+loqICqBu1D6CqXnLzZmA0hhIRPgJZNvPhbdfgLCpEkmWueeODQ6oM6d65k/TLLkctr54WNhrpulkXtyKvwqMpmczIL62VKDLcaOC0KAd3to2l/SFkH94XPPlaWh6uatdqAzB3QCe6HYkFflWFJW/A39UODOd+CL0uaPrzHAaqqlL08WY8u3U3ZMlmJP7hwfXeEwQHpkWPXP4LslFGdljAYal3v6qquDcXUbkqF29GhT7FVqVQPjeD8rkZYJQxhltwnNoWey99jSU4OJjbb7+d9evXs23bNnJzc6moqEBVVb08cHk55eXl7Nmzh6CgIIYPH86QIUNq3YDWZZQGXl81rB3Xj9TrioSG9mXE8GWsXXspFc7NaJqP4uKFFBcvxGSKoHfvTwh1NN6rS5ZlOp0/kIL3N+Av0hdRB/k7sMWbwVZDJtvkLDqnxDMxJxFrfMihXt5aOMafrouLpqH5jnx80hjzBL5Xt1Ns0JAUDfMiJ/17nUyJfxv5cjlo0Gdwf9YbUmFVJo19frrwwgtZvXo1M2fOBGpPj6WkpASEZdSoUXVioPakvkVa2jtomu6xN3jwn/zz/o84iwoBOPX62w5JWEp/+omcx58IFO+ydu9O/LNTKPEqXL05lRVllYFnIxk4OdLBY8mt6BTUOEFRVZVFpZV8m1PE8lIneV6l1rPW0NAg3u3WljhrE4cC+BX452lY+SH49pvKDmp4HfNoUfjeRrwZ+u/aGGcn5pbeQlgOg+N25HKoeNLKKP1tN77sup4hcpAJxymJBA+tP01KSUkJW7duJTU1lczMzEBqdwCz2czo0aMZOnQoss9F1U83sWR7Jtf57ufLawcxsmPdPyq3O489e14lv+BP/P7qHGaWeBITr0eWTcTEnHlISS29mRXkv70egBR7Hgv8mwPTRSajiTFjxzBo0KDDLoZVtWUraZMnA5D023SsnTod1nEai6vcy83vLOcfsw9D/r5rrfK2qYzV8i6Q4KKLLgL0/GIAjz/+eKOmsd566y2Kioqw2+2B9ZRVq1bx+++/B9r8O0fZps13kJ//+35HkYnwvc4/n+hZi5MHDGHi/Q0HlCrl5eQ8/AiuFStQq4N5MZlIeOd/hIwcSb7Hy8iVOyirdh82SDA+KpSXO7Uh3Nzwc6JLUXlydxazC8oo9in1psbvEmTl3W5tD7oe85/4YAxk75cpIbYHnPEqJB582vJoUfTtdqo26JklbL2iiLxEpP8/XIS4/AtVUfGml+NJKcW1Li8Q1AmAUcbgMGOMtGJJCsU+KK7eIM+UlBTmzp1Lfn5+YJvFYuGCuL0kp+uL3jvV1kxvfQ/333hwF9ING2+isPDfEeIyI0eswmwOa/Tnypu6Fl+OLpxuvMwzbSHLUFyrjd1uJyEhge7du9OjR48G3a4Dx37hBYo/09c6rL160va7747Y4udjix8jZUU+3bMv5n/jQrD8k1utkyqhHZ5lcs4EVL9Kp06dmDRpEi++qCexbGyg45QpU1AUhaFDhzJu3DiWL1/OH3/oi81ms5kLL7ywVhXLsrJ1rF5zPqBhscTRr+93VBYofPngHWiaRkhkFNe9/UmD18Obm0vqWWejVo+OAIxxcbT7/ntMsTHsrfIwdtUOnNXp7a9tHcUTHVphbsR1znJ7eXBnJv8UlddJee8wGugTYmNiTDjnxoZjNRzBJ/StM+CHy/TXtgi4ajbEdjly5ztEyhdlUv677gBiaR9K9A0i9f9/QYhLA7hTSij9bbe+RlMPhnALkZd1xdy67tRSVlYW06dPD4iMyWjgYeU1PfEi1V6yYW3h5Ceg5+T6z+/OY8XKCfj9lWha7VocBkMQnTs/Q3zcOQ1+DtfGAoq/2S+RowTyFW2Z9vdvFBYW1mkfHBzMfffd1+BxQS+Zm3ru5ED6kUPJvNtYXF4XF826iOgNPeibczISEi8m+JCd+jScJe5XzOHLOS3zNEJ8IURHRzN69Gh++uknAM4880wGDBhwsFMA8NJLL+FyuejRowcxMTH8888/gD5FdttttxEUVLOom1/wF5s23YzuLSIzdMhfVJUY+PqRu/C53chGI9f/7xOCww6+BuXevZu0yeehVY94Q045hYjrr8PeuzcA25xVjF+zM+BK/HqXNlwc33BKljVllTySksmGiprvrgQMCwtmTEQIF8VH1E2Nf6SoKoXXu4G3ssVG5+8roCeZZeKfHCq8w/4jQlwaiTfbSeWaPJTcSpRit+77vt+Vs3aLJOKiLvXOzaalpfHZZ58B0H/QYNYs/YM7DD8RIe2X+iMsEc56E5JG69409eB257B23aVUVdVEnoeFDqJ//8aVuy1fmEn5nDRQagy3dAonZHwiOwvS2Lx5M2lpaYFI/wcffLDRlRddGzaQfqE+FdV5zWrkoKbzrNmcs5Gr51yNGy8n77iCjsV6DMrLYTU3TU0CU9gaTiKTVlWtCA0NDayHAdx6660NxidVVlby8st6zqvoqCgKqkXXohm5ZtgFxI6rme7LzPqGHTseBzQkyUT/ft9SnOrn15eeQfXrE04TH3yC5H4HzpKtulwUvvc+RZ9+qhfxkiTiX3iBsHPODrTZW+Vh6IptKJouDO93b8vZMeF1jrWspILZheWkuNxkVHkp8CmU75fWxSxJTIoN45mOrXEc7XLNO+fAD5fXBFBe9xckHHr28COJN6+Sos+34i92gwStnhl+zNSZaqkctwv6TY25VTDmVjWukqqqUrU2n9LfdqN5Vdxbi8h+ehlhZ7cneFB8rb7t2rUjMTGRjIwMVq9axZfKKXymnMb6icWELZkCFblQmgFfTtQ7JI2GK3+rY4PVGs+wof+watW5lFdsAKDCuZnCwgVERY1m7dq1tG3b9oBu0YZQcy1hAfDsLMGzs4RIu5HR/naMsSaz27uX5cYU3njjDa666iri4+PrPd7+VC5dCoBkNjWpsCzf8Bc3rL0bTQY0iA8tJrpcokDROK3SxNxgH5oGkgZKST/KQwtoRW3X4kGDBjUoLKpXZdY30/U3GgFhCVatnOsdjJRaI2S7dr9Kevo7ABgMdgYN/I2tf69jwVd6VgBJljnrnofrFRaluJjiTz+l/I8/8WVm1rgXyzIJ775DyOjRtdo/sDMz8Cv7vncyoyJqj5A3V7i4cUs6u6vqD/QLMcjc1CaGO9vGHLzeypFi7pN6okoAJDj1qRYhLKqq4tlWjHNFDt608oB7PlA3jEFwWIiRy39EVVRKftpJ1fqa9PLGaBsRl3TFHF9zky0tLeWNN94AYKMvjk0kkvLsBH3notdg/gvg3+8G0edSaDcSel1YZyTjduexYeO1OJ373GYlunV9jQ8+WIemaQwcOJAzzjijjq15b6/Dl6mPlsKv7IZncyFVGwtrVQfdRxUevrbqddb79+/PWWedddDrsPemm3HOn48xLo6O8+cdtG1jUFWV2e+/xhPGL/GYVSQV7nVdysl7hwOwJymUTesK2d6unBml+tSOQfYy0bSeEElCluXAqOVgySrL/07HuTyHvIpCZljWoEo1fw4J/kgmOAZj7RBOUN8YLO1Cay3em0yRDBn8B399+BnbFurTZyarjUumvEJUm5p0Kt6sLArfex/n/Pn4/12GQJKwdu9O3FNP1akKWepT6Lp4MxpwWXwEr3RJxKkolPj8FHoVnt2Tw+LSmtGvXZaJMhtJsJrpaLcwJCyIc6LDmm96p3QvvNET0MAWDlf8BvHNv45RMn0XlStyAymRAphkzAnBOE5KxNqx7uhQcGgIcWkivHmVFH2xNeD2CxB1Qy+s7WsCM99//31ycnJwqiZ+8vahVaiVT64aSJd4h54x9tl6FpxH3AOnPFHvOUtKlrN+w/WoqgswsGzpBSiKPhj9d5GrytV5lPykz3NLFgOtn6rJMFC5Ng/3jhLkICOV+yXp22soYq5hPaqsB2nedNNNB1zk33X66fjS0jHGxpI86/f/NHrJ3ZPCtOefZFNIFot76zFFEhIvZtxNz0o9sl2yGXGflcyfH21haefVkFDJJcHfsnLZxWhoSNXL/HFxcVxzzTWYzbUdL+Z/sx1XYRW9sp2sNezRI/lrsvMTHxnLjbffXKvPxk23UFDwJwA2WzsGDfydac89zd4teiZmR1QMl7/4Jtbg/Ua4Lhc7BgwMuBQDYDBg6dSR0HMmEn7B+cj2+uNIzlu3i8WlTgzAtuE9OG3NTtLcdZOT2g0yTya34orWLauaK1+dB7vmgsEMD+3VE1c2M8U/7sC1psbRRg4yYukQTvCI1lja/DeXfEFthLg0Mc5l2ZRO362/kSWCh8Vj7xODOSGEDRs28Msvv6ABf3o6kavpwnN691iuGNqOId6lyBu+hey1+lQZgDUU7twItrB6z+d2Z7Nk6ShAIzZ2IgsXJAccCJKTk7n88ssByHp6GZpLAQni7huAMbL+tZR737mJ2zMuxFg9Y1pkc/GLtgzQc2IlJSUxfvz4OtNMqedfgHtf9LrRSMRllxH9wP2H9NSsKF4+vPVaXKUl5IZXsaFjGTlRNaO5eG8Un+x+GkwyjrFtcJyUSO6eMubPeJLonr+hqjJLFl+KW3ZjVa04HA7uueeeOudxlrqZ/9gyutgMIPv4yrJIzz9mMiFJEl6vlzZt2nDttdcG+mzafDv5+Xpiy1BHP/r1+56Zb7xIygq9REJCt56c/9izdT5v1cZNpF2gBwfaBgwg/JKLCTn99Aavy8oyJ2ev1Uted7ZbcKsa6f8SFpMkcUWrSJ7p0KplLT47C2DTDzDnMdD80OcymPi/5raqlrAYY+1EXd/zqJb0ONEQ4lIfPvd/esrKfmZZoBhXAAmkYCOfKn+haH5AYom/PSm+Gk8iSYI2YTY+vWoAyT+Pg/yt+g6DGca/DAOuqvd8GzbeSGHhX4BEfPz5LF+WTEZGJqBneb722mspm7GHymX6qMTaNeKAkfk9P++JUTXy+a4pRPgdIMG6AcWs2VS7iuPtt99ea21HdbvJeexxymfODKwjyHY70Q88QMRFFzbqui1a/ycv/PkY2VFuFGPtr6VFNfFoyU2ceflltXKiqarKX3P6YDBX4vHYWLniPHJMhcT7oupE5quqSvHcdCr+2YuputhXplzEH+b1ADz88MO89dZbOJ1OOnbsyDkTB5OR/iH5BX8E4o0cjr707/cD8z77gPV/6sGWbbr34oLH6ybqVFWVnIceovy3GSBJdN22tVHXAWBGfgnXb6lbMuCM6FCmdmmDXZZblqDsY/ss+O7i/TZI8MAesB/ZrA0NUUtY4uzE3NG3ZV6/4wghLvuzfRbMuFPPcXRH40ri1se+xX7nkmx8BVV6rrNqCigLzO3Lskx20gQW7Sqkcr8MxW3CbSx68CT4ZwosfIXACmNsD7j0J3DUXmD3eotZvGR4IDpclq0U5F/J1q16BHSvXr0499xzKfhkE56dpQCEjG1D6Lh2dWz/M/VP7lt4HzbFys+7XkXSJGy9orCekxjwpIIDe18pBQVk3nMvVfvVwDHGxBD//HMEDx9e7/VSFIXzfzyHXZ6MWlNTIVoQg8p6cGnBBBKCWhP/8OA6ffdmfsHOnU+habBp48mUlbYiMm8EztAdeOwFdDefQVlhFUmyRLIMxurja5qGGmRidshacssKsFqtXHbZZXz00UcEBRXRr/8CoHZArafEwa7f2uNz14ymjGYzrbp0x2Q2k9RnAL1PHQ/odW2yH3oItbpEsiEigk5LG1cI7sw1O1ldXjsRa6zZyIjwYN7qktiybooZK2HB85C5CrwufaSyj5BWMORmGH5H89kHVCzOpGymHr8ihOXoIbzF9sdVDJX5+s/ueZA89rAOI8syQQPiCBqgR3Er5V5cG/Lx7CwhehdYMFGFF4vJwnuX67EXZS4v7y3Yw7sLdrO3pIrp67M456T/g54Xwjfn6fUv8jbD693h6lm1IprN5ghGjFjBG2s/IKcyizPV30hqv5OtWxMAApH3kVd1J+fp5WhuP+5dJfWKy7ikcbyx9g0ynZlsC0mjW3kSVZuLiLykK6GhoYF68sHB9ScZNEZH0+7LL6jaspXs++7Dm5qKkp/P3muvw9K5M63feB1Lkp6hWFVVrv/sAtZqO/WRigRGRaJtUSj3VN5Ce49uv2QxHDCgzRHSW48XkiAmNpWy0tbIyISUdcHodRCuVtLfIrPPQ1zTNMpVcHaNoMvkNuS+rq+htGvXrtpdXKFX77mA7m2m+iRcBVbKMkIo2BAO1PbKUrxeMjbqDyIZmzbQtVc/sm67vWaKEH06LOHNqfXa/2++yymqIyybhnc/evEojWXVx3peMPcBygCPeQTGPHh0baoHpdRNWXVgpCHcKoTlKCJGLvvjdcGL7XSvrahOcFvDFSgPlR3zN/HtPD1ten9jf856rLYX1vAX/iGrtIowu4n1j59Ws2PeC/oTIkDiUJj0HoS3C+xWVZVWCzYAEm21PdyZO5udO1tjNBp56KGHMBqNtdaDHGck4RiZUK+NX2/9mhdWvUBSVWveSdOLfyGDW/WRLheQ3r6Sa65rXJXJ8rlzyX3iyUCdFySJhLfeIuSUk/n0zUd4LbS6rLQGHYsjeKLnQySZulP+hz4lZG7nIOqGnge9IXzx0+m0jkhB02DzxuswpvRDUvWbcagBRgQZMMgybrMB/5A4Op3eDlmW+eabb9i5cyeSJAXyj/XuMwuHowhNg4z58ZTsDEOSZWzBIaiqH3d1WhaDyUR8h864ystwV1bgraqim2YmYe0mqI5zMURG0vr11wjaL/nlwVBVlc6LN1NRHYXfM9jGq13a0OtIVYb8LzwdBftKT1tDodPp0G4UtOoD0V1aTAGwnJdX6U42skTcQwMxHiDXoKDpERK+j51zaoTlCNJ5TE+GRY4hztOKjKwgcvbUfvJ77QI9KrvU5ePcd5bg3Teltt+c9ad7Quj74jJue75mkVSWZeTqOaV0qT3fxvalVestnHzyyRiNRsr+TAsIixxkPGCeNNArPwKk2rLQ4qsXPFWwYqKz2ooxe5P10gaNwHHqqXRauoSY++9DMptB08i84w6qtmylcOkG9nn+Tmg9jo+TPiZyoSMgLACS2dDgk+Y7W26hojKUudvP5+JJF1IZsRqvSb+uZX5Y5fITdlU3Oj49jC4T2geOl5qqP9FqmobVWsaAAb/icOjeafkbIyjZGcbpt9zNFe9/hD00IiAsoTGx3PTel1z45Atc/dq73Pj6B5zjt5Kwar0uLAYDkbfeQqclixslLKqqMju/jC77CQvA3IGdW56wuMv1v5V9wjLmEXgoA879APpdBnE9WoywlM1ODXhvhp7ZXgjLUUaIC+h/MN9eWC0sEnSbBDcsOGKnO+mWUVCpR3tPe2kNS35OCewb3D6SUZ10l9K1GaUMfu4v9ha5oPdFENkBTDb+UftRgoOZZe04+ZGP2f27PuWSMboXnfz6TXWVPIy/2g9B8d/LlmlPUTZPv5FKVgMxd/c/aPTxZ1s/A/Sqj61vH0jkld0o6gJZsj76MHtknMuyDukzR157LUm/TQejEVSV9EsvITokgrByfYSxLn0tlStyYL+YGznYRMjo+kdX+8gqdZFbZeCuJc/QpfcN/Dzl/7BrRirCNrJvrSpfgZR0Z61+lZWV1YGWKh07LmXAwN+w2fW8Xs5sGznLYxl49mRC5RiKn1nNSYbz6ewYRLs+/blm6ocBd+OKhYvYOXwEVWvWAmBKSCD5r7nE3H77Qe3O93i5aP1uui3eRKsFG7l6Syrl+wlLi7sNbvpZH6280Aa+Ob9me9eGUw8dTVRFxbkih7w311KxQHdqMbUJJmTYgR+mBEcGIS4A854FTQVJhpuXwgWfgfnIPTEajTJn3d4bY/VCwPq5e/n6ieW4yvUF+S+uGczlQ/QgvBKXj7GvzmfxXg/cvgYezeXtR+4m0VgCwG41jpMXJXPLix+iKCpjl8wnqkIXgYXyybzovZzssC9IOeVGsga/geOOyAbdLzcXbAZARsatuLF1jWSbNYvZ5nXsy6Wb8scGMtLSDulzW9q1I/GTj0GS0Nwe+i3fgNWjC4C7ei3DkhxK9E29aPXccFr93xCsyWEHPWZKXo1oVCyeTlVFOd5di8jQstjfO6Bdr9oxIL///juR4ZkMHfYDcfG7kSRQFYmMhbHsmtGOqMR2jLj4Sr765x1scjCSJNE6sQeTH34qMPLJfe55Mm+4Aa2qCiSJiKuupMNfczE3kNFgY4WLwcu3Mb+kgmJf7dzEMSYjV7aKZPGQFpaNd92XNaMVAFMQDL65RSSeVBUV57Js8qauJfuxJZT+siuQ3VwyyURf2/hSFYKmQ6y5gD4dVlWijwxuX3PUTut1K/w2dT15qXoxKEmCDv1jGHNZF8xWI9PXZ3HP9xvwaxoGSeKnm4fSN7E6cthVzBcv38NzVWfjrn7OtRhlRocWE1eZwg8DTqI0SE/LH69lMoUHsFbfwENCetCn98eYzfUH3c3YPYNHFusuvK2CW/H7pN/xur18++23dN8dSYKquyD7rdD6roEYwxpfQ6QsP4+czz6Fz75EArIi4O7rZSaXnMYdCTcRcUHnQ7qGqqrS66k5OD1+HL4yrsz8BpOtC7J1fCCQst+4tgydVJPJ2Ofz8darr9Oz/0fIBj+aBuUZQaTOTcBidTBo4vkMOHMSt/9zOwuzFnLXpjPoHzaMThOHYe+hX7P8116n6IMPAJBDQ0n8+CNsPRou6jYjv4Qbt6SjokvfhOhQ5haW49U02ljNrBraraFDHH0KUuDryVBaPV35eMkB898dLVRFpXJFDpWrclHyXHVSthjCLdh7RRMytg2ytWVM051oCHEBeC4BvNWpzu2RMOlD6HjyUTv92jnpLP91D1p1OgpJlug6NI7B5ySTUenmrLcX4/NrmAwSM24boUf0vz8actbjVWXuVW5hpjoUrfpmGiW7mGDewtyeQ0mN0KP+ZU1lgLSKC7QviScHSTLQvv29tGt7Y702vb/hfd5e/zYAPSJ78O2ZenLM56Y8x0hXJ9qpMfrNW5YIGdmakFPbHnCqze1yMfe9qexcuTQQA9M5q4D2heVIwIZ2EgN6vU7EoCQizjv0WjDv/bWVF/5KBU3j1vQvsDpuCIwuNDTaD86i69hK2iZeiyybefPNNxmd3po9yXOxJS0mbWkfXLsqGHfj7XQfc4p+zPXv8b8N+prWKYmn8PrY1wPnK/r4Y/JffgXQp8Ha/zEb+QDJIMsVhZ9zS5hTVM5mZxUFXj3+ySRJfN+7PcPCQ3hkZyafZBUiAdtG9CDM1IJuhqs+ht//FYj6fwVgbJ7gQ8XppWzGbqo2F4H/X2Wdw63Y+0QTMjIB2d6CruEJihAXgKLd8OOVkFvtPirJcNtqiEyu3c7jhIIdEJFUf1CYqkLBTshaDflboGgXKB4IioKgGD0+xZEA4YkQnqRvr8brUvjnq23sXldQ6yksONyCo1Moj27PwCVpWIwyf909mjZrX9ovISCkqrFc77uXXZq+RjHWmEJbYympvYcyJzQGTdo3RaQRppUwkvlM5CcibK0YPHgWslz3ZvHU0qf4KUVPWX9Sm5OYetJUnnzySQBOaT2YdqnBBAqESGDpEEbohPa1cqoBfHzH9ZTm1aSVkSSJYaZ+bC//jcE73OyKt9Gh2ELYNW8Qf2fdWJa6l1kldd1qdixdSNaOrfxAb1KCO2BQFe4o9mI06iMrr+zGrOqjKlvkTrIt+fg1jb4ZCn2jTkWSJLaVrmBjyXyGX3g5Q86tCfbs92U/fKqPdo52TD9nekCsSr7/ntwn9GtgjIkmec4cZGv9I7cX9+QwNT2vTg2VUKOBOQM60damjzjLFYVOi/SpyBsSonm6Y+sGr8FR4ddbYf1XNe/j+8DA6/WF+6OMN7OC0hm78aZX1NpuiLRi7xNDyMjWYoTSwhDisj97FsBXk/W55eAYGPUApC7S40vKs2pShu9DNumR/LJRr1Phr5v3qUFkI5jsujun0YKqajjLFLweUDGgaTIqBtxqCHu8PfjbP4itUfH8+thJupilL4HtMyFjOeRuZEjVVHKJJNSkco60BlmGEmsQq5K6kxEZi7JfbjBJUzmHn3i0Qw/aJF5Sr3k3zr2Rpdl6xuMVl67gledeQVVVOnTowEVnnEfxt9sDJWH3YesdReTFNWsGs/73WiCxI8DYoVcQkxtPul3iS880fhsznpfffJcRsa1o+9HbB71cKSuXMuvtV1E8NV597ydeg9dgoX1VGZM9emzRpthF7Oy0kIs334y3RH8QcAenEVS+nOFaP8IiulGplLEuaCFDzr2YpD79AsdLLUvl7F/1tPezJs2ijaMNAGWzZ5N9t/4UL4eGkvz3Xxjrifd54tt1fFdaTkWoETXMgmQzEms20ivEzrgoBxfGRdTKUDxhzU7WVse2fNy9HWfEhB30GhxxNv2op26pqH4gCImHGxdB8NEvRax6VYo+r6lnD4AsYesWQejZHTA6RPqWlooQl3+z6Uf4+eDVIRtEknXBsIWD0QKeCvBV6eKkKrrzwH/Arxlw+iPJlzpj6DyBhLOvwOwIhqVvM33WDO5U9IjoEIPCqYYtOOQa0VPsA5nTtRUZQYAkIWt+Hvj8SUZecC39z5hY51zLs5dz/dzrAdhw+QamTp1KWVkZJpOJRx/VY2BUl0LJjF1UrdMz/spBJlo9Vrts7dZF85j99qsABJvCOSPhBgBOPjWEMhlGrFvJM5+8RefVq+odCaiqyrQXniR9w9rANos9iKi2STzmGYFPkxhdZWSQR/c+O/uxbrRpHYeiuPns/77DU5qIbCxj1N+Pomoalb0n0O2pO3B0aVvnXG+ufZMPN32ISTax9nL9fBWLFpF5w42gachBQSTP+RPjv0obVG7IJ3dWKie5ipH283qTAJvZQMeYYIZ3iOLcvq3pEBvCrPxSpuzJZk+V/vu5tnUUz3Y6sHecV1F5d8Eu/tiUS1SIhS+vbXiUd0hkrtE9wVxFNdvaDoMrZjSLe3HVjmKKv94WSIcvWQwEDY7DcVo7UWvlGECMI/9Nz/Nh55+6yEgGfQ0mMhnaDNIDxRIG6aOYwp36dFpJGnidENUR4npB6/5UKZC+cT1Z27dSkJ5KWV4OfkUhOCKSyIQ2xLXvSFJya8LMLuTCnVCUotdzUdyApI+cVD/4faAqaJofpSQPg6cQGRWD5CfUmE8o+bBrEf5X/4/Fsdcy7JJ7OGfOo/ymDudvtR8VfiO/qr25tn8k7XbtIL+yAOMeC1fuKaHc6GXGGZWcvPY3/G6N+V98hMUaRY+TR9S6HFuKtgBgkk3IsszkyZP55JNP8Pl8LF26lGHDhiHbjcj71XA3J9bNLttl+Gj+fHcqql+hW+IIfepPg1ZujTK7REF4BCgKlStXETJqZJ3+a2dNDwiL3RHKuY8+Q2y79lQ5vTw6pXYZaA2N8KAwAIxGKx2Hetg8G1SfA8Vgw6x56PPcLViT6woLwPKc5YDuzACQ9dUnzP3DhK3btfRO+YLw664LCItS4qbsj1TcW4vRfCoWIMQmU6FqSNVrAhrg8vrZkFnGuswypmbk4W8bDOb9RpElHn7+ZxOpiZlcMiiR1uE2tuaUk5LnJL2okqzSKnYXVOKvXpczFdR2rf7PKF749PSa0XdYIpz2HHQ7eKmFpkYpdVPyUwqetPJaaZPsg+MIOydZRNcfQwhxqY/JH8HZbx84eWV4W/2n46kAFGXtZfVvP5P6xadUVbwRqET4b6oqyilIT2X7koXM37dRqnGXDRSOQkL/1ez/6wkDOhNuctHJUUBiUBlRlkpsBgWD5Gd43gekvTqT6KBYPuZVflJG8rByHT7NxIerixgq5/FN0BsUJnZjRskTGNwyl043o/rPwcuXgI+/PvyEsF++J+7ppzBG1F5TUlSFUncpiYmJxMTEkJ+fz/z58xk2TE/db+8fQ+UqvUaGe1sxOS+sJOLizlja6pmfV0z7HtWv0C/iFJLUboGPGRVkBs2H065PLxV//FG94tK6S02izeEXXYPb6WDZL7tZ/1cGBOvHyjao+GQPqTHrCQ6rccj4yb6ZLlp7kAzsTRhLRjsnq5Ys4Yrk5DrnAUgp0eOO+kb3pWJnCr8uSoRgmcrg1hRlLUKbOpWws8+l6Ot0vXLhfhhCzSw7szNSUhjBwWbyyt2sSi3m75R8fpe8lIeawBBIcAYeFePucoyZLtzA0t1FLN1dxMFoHxVEp9j60+8cFjv+gJ+vqRGWyZ8csOz2kaRsbjoV/2TUWnOU7EairuwW+B4Jjh3EtFgjUFWV7B3b2LNuFTkpOyjJzkL1KxjNZjyuSrxVVfX2M9tsBIVHEtGqNWZ7EMWZGZQXFuB2OtHU+gXoUHEYq7iw3UYcppqpL7dmwiD5KVftDPK+ix/9CXmP+RLdg/TKmZA0EmeJmy2Ls1nz47tUeXYQ7Atj1NZVernd554lbNIkcpw5jPt5HBoarYNbM2vSLNasWcPvv+sFsx5//PHA06Ti9FL0yRZ82TVP1Y7T2+EY04Z3Lr6IHhEjSQruiSRJGCKsRN/Qk7uz8/gxr4RwVyXT7r0OZImkGTOw7nfjL8mrZM6HW8ja+gaavxxkB9bQmqnLL4Ld5FVnUTYE7aBdp9n8faE+mtm3ZnTHP/eimKIg9E/iRq4IROIPGjSLkOAa9+ffdv3Go0v06b4vTv+CvjMf4vv5Z1AY1IP4ouV03vQlsiQRcdM7+HKqRx5GCWunCBynJmKOr3vTL/D6OHnVDvK9NZmyYzWJ0V4jp8WHMyw5iuJKD+8v3MO87fkUVuq/S4MkYTcbCLWbiAq20L9tOLef1IEwexOsM7jLYeP3sO4ryFlfs73bRLjg8/9+/EaiKiqVK3OpmJeBWlEdRyNL2PtFEzwyAXNs01U1FRxdxMjlAKiqyszXXyBl5dJGtTeazcR16EyHAYNp26svEa3bHHQIX+UsJ3v7Nvx+BUmWkSUZZBlZNiAbZKTqaoqSwYAky0iSnmJd3ve+OuW6JBt4Zc7bjE77keH+XCwaWCW99O82rS2hVFBMGAD5hBNHCWz/HZJGEhxuZfBZ7ek//llUl5u8p6bg3GEAv5/8V14lbNIk4oPjubbHtXy0+SOynFm8ve5tnHN18bDb7bU+ozHYTOwdfXGuyqF0+h5QVMr/SKN8bjpnJd6CtG+UZoDYu/oim43EF+lrJJ7gYDDo5049ZyKJH3xA0LChqKrKLy+vpbK8ArAD5aCWoyolmKyR2MKNXH5SGm8tkvG4ovFXdsZSqLsz3/LXLQFnhMXn/8ll1pV1wjOKixbWEpdPt3waeN07Yz3a3uVMTlpN7uZwKraaMHUYh23g+fhy9CkbY7SNmLv7HfB3vc1ZxRlrUnBVFwsbERbM1K6JtLbWFoiIYDMvn6+n/nF5FYyyjLmp1xUq8uDXmyFrDbhLa++zR8ElP0BC/6Y95wFQSt2U/LATT2pZrZGKqXUwkVd3F3VWjgPEyOUAOEuLef/GK2ptM5jMhEREEtkmEVtwCFVOJyaLhT7jzqB15+YLfiv3ljPi2xFoaNxl7cwlO5ZiU/UIZZ9m4C1lIm/6JxNNCSvMtyJHtIU71tcbCFc6/TdyHtSz2ZoSWlM6sRc3hM7HVx2d/dKIl1jx5QoAbDYb9957L8Z/xXioqkrRN9vxbK49veNXFQo8mWSFpnHO048B8PSuLN7ZW4BFktislZB52216fi5JIu7JJ1hZEcnWeT+jKnsDx9GAv051kmsuxV+d4l1VZSp3PAMY6BYfwqw7R9H3y74oqkK4JZyFFy1k+YoJVFWl4/e7A7ORJ5+0u5aNv6T8wuNLHwdgam4BJ1VV4a00kpXzKMb4vkj7LWzLQUZibu97wCDSOYVlXL05Fb+e8JnnO7bmqoSj73EFQGUhvNkXPOX7bZR0T7Bu58C4545IYKSqqCgFVXjTyvBmVuDLd+Ev9dSMUqoxRFpxnJRIUP96qrEKjkmEuByEpT9+zbKfvmX8bffSYeBgzNYWlkRwP+78507+2au7+3588ocM2vAT2uqPkao905yahR/9o1mjJvO2+V20qE5INy2pEwynKgq7TxuHkp0d2FZug1tuM/DE6Oc4u8PZfPDBB2RX7zcYDNx55504HI5A+9zX1+hR0/VQ4SvBfEYMySfp3mSDl20l3e2le7CVvwd2wb19O2kXXYzmduOW4Z+eNdNjkiyTFV3F4q75uOz75SCTZKT8qykt7AjArDtH0C0+lHE/jSO7Mpv4oHhmTpyJ2WjG63Yz5+/B2GxOFE9rxo1fWMfG4V8Po1ypYJirinezCsjxfoImxwT2G+PshI5rh61rZJ2+qqryV3EFH2cWsqBEd9E2SvB1r2RGRxzlMrqVhbBkKmyZBmWZNdu7nAl9LtUdVI7QArk3r5Ky31PxpJTUiZ4PIEsEDYoj9LRE5KaY6hO0KIS4HCe4FTdjfhhDpa8Sq8HKoosWYa0sgu8uqTWn7tck8rUw4uUSPMFtsNy1tt5o69Jfp5P+3P9hKlcoDYawcwvoZgqH056hrN14PvjgAyor9dHRNddcQ2JiYqBv1hNL0aqLn4Xf0Z0fnniIQSGn4zBFIUkSLrysCkqHzmHcG90egBf2e6pXCgpIGTOWpW1bURoaB2o5bbr3Y+IDD3Dn4rtZnLUYgN7RvXl2+LMo3khOeXUBGnrJ6H01cl5Y8QJfb/8aAJvBxiltT+GaHtewZ/V4DAaV9K2dCa0YyBl3Poi1uo69Ul7ObZ8PZYlDxq6qfPURWEe8iyRJmJMcRFzYuc5IRVFVvs8t5uucYjZVVOHb708q2CDzR/9OdAg6SvXjfW6YNwU2T9O9GvdHMsBpz8DQW4/IqVW3Qvk/GbjW5dcZmSCBZDNicJgxRdsxJQQTPDS+lpeh4PhCiMtxxMaCjVw661IAzu90Po8P1ad3yNuKOut+SF+CXP0YqWmQq4WzSO3B5u73ERQWx8ldYxjQrraX2PfvXMFpO1cQHpZbs/H6+bgju/LCCy8A0L9/f846q8ZltfjnnbhW5QEwv/QH8kr0jMwTxt+BY3cQf7OBraZifhx0MpUWGzJ6Ruf9AwsX33ANK0rzQJLoPOI0zrxdj91RVZVR34+izFtGlC2KeRfM46YvV/PHFv18v902nF4JYYG2jyx5hN/3/F7rM9lkG/2LjHRY4wCvEUmW6TR4OP1tDkrf/B8XnHcN7Vt9THxmAlPaX4F7hy6ctj7RRF6kJ2p0KgofZxUyLbeEFJenThR+pMnASREOnunYunHpXDxOPT7qvyZMfW9ETaYJ0AUlricMvE4frTTxSEUp91K1uZDKFTl1RquSScbWOwrH6UliDeUERIjLccL+Xk4AEhIPD3qYpdlLWZ23mkpfJZ1NXZm01cMkwxJsUo13maZBCcGsUzvgbNuRc65+r27QXMpc+P4yPRYntgdcP4+33/uAwsJC/XyShNlspl3rJAbuiMHqN+Gz+5i25TUAxlxxHf3PmIiqqEx/bz53dg7BazSBpjGx0sR7Z9VO+rjk849YPutXAC4bNYHYW28BYGfJTib/prvJXtz5Yh4Z8gjLdxdx8UfL0TQwGSS+u2Eo/duGB461tWgrr695nfX563H7dddhs2zmedeVbJ73F9q+oFZNw14h8WLvmwH465QuWP/OBg22hsjM6+1gfZyF3S53rfT4+2htMTE+KpRbEmNoZT3AzdTnhuI02DUH0pdC/jY9Ej5QR0gCg1kXmaAYiO8NySdB+zF64siCHXpaoeI94MzXUwg5WutxKd5KWKALPtFdYOjt0OeSOoLizarA7/QhyRIYZCSjhCHMghxsOqBjglLixr2zBG96Ob5cF0qpG61KqTvlJYE5IYSQMQnYutefGFVwYiDE5Tjh082f8tqa1xpsp1S2xZM/gcv8q7lRmk+8VIws1XwFNA2+7tGHLu3jiYs9k7i4czEaq5+mZ94Dqz/WX5ts5E2axlezl1FRUTv9Cxqc5OuBYs5l3bY/sAaHcOvHeuLLNWWVTFq3C6+mgaZx6joXQ1I8hMXZufCRARirp0nKCwv48JarQJIY5Yhl4Icf41JcnPzDyTh9TswGM8suWoa5ekpvUUoBV32yqv4M0vsx5JshVPoqA8k43U4nMx+9j/ScvSBJbAjpzsKoURgkeDAugrc7WSi0SKj7xyNVI6GRrJYzyb2N60sX4/AWgacSfC5QqnQhUdzVwbC+/5yZodHYwuHBNBSnF8+uUrxp5fhyK1GK3agV3gOvgegfCowykklGNsmobj+a199gH0OYhaDB8QSPaC2i5wWAcEU+bri6x9WklaUxbde0OvuSQ5MZ1noYP+74EXdQOq26/0xGSBtOzwsi0R3E3cGldCvwYi4xIUsakaG5lJVlUla2ih07n8BsjsJma0dQcgccvgGE71iL3V1F7OxruffebRQVFZGamsrWTVtJTdsDQPveXZg263sA2vbqC8Ael5uz1qagohcSeqdrW9R1qeTgoTTXxVePr+CSpwdjNhvZ/PyUgP2Oc88F4IpZV+D06W7Qb4x5IyAsACM7RvPTzUM5952l+DWN9xfsDqy97E+lT18nUjWVytVryL73Xrrn5ZHoiCZ6zOPMl/QRhEmSeLyntVaQq0WWaGMx089h55S9Mzh92ROYUeqco1HIRn3UEdUJ2gyBTqeBxaGPZIpSoCRdf128G6pKCdzdJYMe3GsJAXMwKG7Uqgo8no64lb741M4oWkfURxZRZ66uMWiAT0XzqdSJxKpeNzGGWjDG2rG0dWDpEIYpuuU6ugiaDyEuxwmqqjIzdWa9+/Kr8inzlHF6u9NRNZWukV0Z3WY0bULasCRrCV9s/YIy03ImdVKJsrowo6BpNfdVr7cQr7eQsrLVZIcCgyJA0zD43Vj/7k9k2wvo1u0SSjbZsBS1IlcuxTggCN80Pbi03wQ9CeTze3JQ0QPUp/ftyIDQILg3gt/f2UjaxkIqSz388vJaBp9lZNneXSBJWBU/ncefwUebPmJHyQ4Aru95PSMT6kbx20yGwAP2BQMT6+wHGBg7kFV5q9havJW7llzBPXnVeatsYdxgVEipviFXRplBkgg3GLgnKY5zYkKJsew31bXsN0DR10mCosFoBZMNzEHVPyFgC9PTBwVF64lQQ+IhpBWEtj7w2kp0PfVsVFWfOguJD0xxqYpKxfy9VK7I1Ucj+/OvSt2SxYBsN2KMsGLpEoG9d0ydhI+K04tSUIW/yI1S6sZf5kF1KRhCzZjig7B2DG903R6BAMS02HHBS6teYlrKtMBT+a29byXcEs6UlVMO2m9g7EA+Of2TwPs/98wgdcf9dDD7AsLiU6HcDwoSIQawShpy3RkiAFSfBVdhMhmLr8akTaeypAij1cgVbzyE0RTOwHVeShU/p0Y6+LKX7iWmqiof3bsQX5V+V3dE5VGw6xs0TUNWVUbs2EvopDO4MPlPFE2hU3gnfj7753rPf93nq/hrWz52s4GtT59ea59SVETBO+9S9scsHh1fzs42+oc4dY3KlX/JnHP+i1BdFVMNM+MdGElri5kFQ7oQvC+OpyIPtk7XXXszlunbYrrCLcsPep2bEqXUTelve3BvLwa19p+uZJYxhFkwxQdjTgzB0iFMRLgLmg0xcjnGeXjRw8zcUzNiGRw3mJv63ASAV/Py5dYvqfRVYpAMSJJEsbs40HZV3ip6ft6T1sGtsRqtRFgjeGb433y/4UkiK+fT2qRikiFSBr+mscZl4LtiEzYZOlhUrlKchESGUmlW0DQfsslDcPxWukx8AL9XxmD1I8uwdt2l5BNNqfQuIHF9tcux2+nlm6dXBoTFrKwhP2UBAAajkZHZZZi9CvfaZ6JoEjIy75z8zgGvxY5cfe3Hr2rsLXHROsRMyZdfUfL113gyM8kLh52tIKIc9n3113eBu3aXIcsqfiS0eAsJ3QwMr1zD87u/w7i+XE9MWlm036J7NbIRhtz2X359jaZqWxFlf6TV8cgytQoiaGg89p7Rop6JoEUhRi7HAK4NGyibNg1N8SPbrMg2G5LdzmLvVqYV/YPHCKEh0dw4+HZ6xPRGc1Uh2W3INlsgpYpssyEHB/Paxjf5fMvnyIpKsAdUqXpqXtb/NxgtfHfOHBIjIih17WbjlkdYUBlMEZF4MeNRTWxxm6kq+g6AKFsUYxLGcG5iPyqz3qWycke9n+ETrudv6XSMqsIjO1Zi8EqohQpmTxjuitaoShHeii8ADRlo2+l84s7uyf2rrqA8SB9lXN7tch4Y+EDdg6//FtZ/xTzHuVyzMg4NsKo+Ppn7HOFVFbw0WWZ1RwkkiR4VRrYGK6gSmFSV77Jy6aQobLB2YE1Ve66R5hz8lyHJ+lpJt4lw2rNHpCKjqqq4VudRMS8T1enVK5TuX3XRIGHrEUXoGe1FPRNBi0WISwugaus2qjas3y8rMmheH84F86latx7N7T5w5yPEeS8/jCWyP/leH8q/vyGaxtm5F7HMV/fGdolqo7fZiz3PjT3VT3SPc2l11X30WbKJEimCjuoOTl60LdDe4Q9i+MDJFMz9hpSiNFR/ASPiZRLDFzMusRWtixSGbNeIqwjijFYj0aqqCJ00Cce403AqCk/tzmH9umUMXbqagVs2sDKiA18mT9A/w46/mVT+NzdfpqLJYHeH4TOX4JMljJrGj5k5JCt+JNmgL5TLRl0sjNbqdZNgfeHcGqpPf3U9G+J7HcnLjju1jKJPNwdqmOyPHGIieGQCwSNaidTzghaPGEcfRVRVxbN5CxV//YVr7Vq8e/bgLy2pM3deH5LdjmyxoPn9oChoig/Np6BpGgdYAvlPVBjbU+SpibK2yhKSqoDmQcbPeztz+TPIxteOEDbsV9wrbVslZ89QkTW9bEBQUhwWSzQP2jR+cG2gT6mNxMREKnLL8Lk9xGuhDDyzHfLGt1DD3bhVI3ajwk4pBE1SGb1J45wVGuCkYsNsAJzz55MSFExqTDwXZe/l0hgXlaf68Y7W+GH3LVAMNtx0DB/Chuhx3LjMTZVZw6qEkNr1Xv4KVXh5u8T77R/gmkvuoGuw7QhcwUOnckM+pT+loFUXGjNEWrH3ikayG7G0C8XS5iinjxEI/gPH1chFVVU823fgWrEC96ZNeFL3oOTmoXk8aKofza/qnjfVMRZoGpLZhBwahjEqUn+CNcggyUgGPUuxZDRibtcOW//+BA8bVqf6IIBaWYknNRVvRgbe9Ax86en48vPwFxbhLy1FraxE9XhAOYjbqsFQu7YLYAgNJXjkSCKuuxZrhw6N+vy43bDvZl9Vhep2I1utqC6X/lNVhVpVhWS2YIrR1z40VdMDCTWNXGcpP6Utp6LtKexy+4g1G3kgKS7gKaUUpZP5xWW0K9tY69yLbBZWW2y4t4ZwzkI/qgTardfT87Z76rfVpZD9tL4oLgcZkVx7kalCogotMoYS/Gz0uSFnDz12ZePxl1ExJAvVUY5JcaGZNTQr+BI1tP204cYVb+Ark5HijDy4RUM1/Gt0pflJSP2SmcN7MmPUqUjAfe3iuLttDOsqqvirqBwVjRCDAYfRgMMo09ZqoXOQDfsRiN/wFbgo/zONqh0luvdENVHX98SaHNbk5xMIjhbHnLhU/PMPJd9/j29vJmplJWgaqseN5vEenekjgwE5KAgUBdXrPbhgHADJbMYYF4e1Sxfsw4bhOPWUekWruSh2ennxz+2k5FVQ5fVjNEiYDDJGWWL93jK8fhVQGS1vZLJhEcPkzURSEdDGrzclU54cysm2PBb1iyNGTqK0dAxerxefz4fVamXYsGGE/FKKv8RzUFv2kTLmNlRz46ovrszrjSPKRdWaWJI2hIErGr/BRkTJNmLzVuPv4KbwbvBpsG/cpyHVeV3fj577QEaNvZXzul+FUu7BuTATOcRM8PDGBRCqiopzYSaVK3Lwl9V2IzaEmnGMTyKoT8wBegsExwbHjLioqkres89R+vXXDTc2GjE4HJji4zEnt8cYE4McFIRssyMH2ZGDg5GDgkEC9+YteLZuxZefB3796V1T/fpUlaqi+nz4CwsDQnZQJAnJZNLPFerAGB6BMSYGU3w8psQ2WNolYenWFWNYWJNck/+CV1HZlFXG+owStudVkFZYSU6Zm+JKLy5vw4XM4hwWNCAu1MqnVw4iZfs68qc/xih5E2v97Rlr3IymwTXdH+eyqHfYuOFkyspa1TqGwxDECHsPEiLjMZcXoeZnoKomVM0CmhkNMxpGNIzsGnNXo8Wl7oeFoAUytrUyqlWj+GY/mMFTFou7NBGvMwZfRSw+VwSKOxTVG4Tqt6BpMmiS/gNIBh8J5BBnsmC3O4gIiq6ToFGyGpAt+ihUX4hX0RQNTVH171R9XyGjjK1LOI5x7URAouC4ocWIS8WCBWTefAumVvGEnHoahrAwJLMZyWTCX1FByRdf4C8pAUCyWLD27IExPEIXkrBQDKFh2Hr0wDZkMMbgJiwBux/u3btxLV2Ke9t2DOFhmFq3xpTQBkvbRIytWyMbj40lrNNeX8DOvIPfqA2SRHJMEA6rCZ9fxedXUVSNVmE2npnYgzbhdW+CxU43f2/LY11hJbGbXyZMqeSPwQO4wvs1KTsvx2i0YzKZKC0tDWRU3odm1lATVZ665Ck25eQRHhREnN1Idt5e1m/dSfrPX/Nlq/HY0YiWFf5n/AyjoRLZkMHu9jbKg6yUFCUS7qoiyl9KoSmc99qch99gRELFiIKjxMwpBW1wZ9qoLDGh+Q99tWqErZRIS+2aLCoqUvW/Q8EUF0TwmAQxShEcl7QYcdk5chT+goIG29mHDKbN//6nT00JDosz3lzElmy9aJRRlgi2GokOtpAQbiM5JphhyVGM6BDVJJUQVVWt17MpLy+PefPmsXv3bnw+/elfQ+OUC05hZLe60fcApS4vd32/ns2ZZZyh/sH92ld81eY6xvy+GG1rPit7d2XmRSexNHQofkkvQSwrKlfMr6BVsR/DAb7pBpOM2WrAGmQiKMxMcIQVR5QNi82IwSRjMhvwVik4SzwoS5YTrYbi9ldS5XeSVZlCWuVmDBhJCOpMhCUeu1FfeFc1P4rqQ7IZCIqPJHFAH4LiIzE4zBgj7chm4fElOH5pMeJSOv03ch59VI/JsNvRFAU0VZ9akCRMsbHEPv44IaPqv/EIGs/uAidVXj+dYkOavpTuYbBl6xY+/vVj0GBdx3X8fd7fDbraqqpK/nPPU/LNN7qTBhBy2mm0euN1nKrKQzsy8WoaY2cVUrpHD67UAMUArjATYwfE03VYK8JiD30aKnX9WvasXYni9VCcnYWrtAS/X8HnduPzeFAVHwf6szJZrDiiY/ArPkpzcwCQDQbsoeF0HjaSERdfjvEIxM4IBEebFiMughObuelzuWe+7ll2btKZPDXqeQCU4mLc27bhSdmFNy0VX2YWSl4evuxsfR0MwGAg5v77ibzqyjrH/W7KSooyq6cANZWQ8l1saFPGs4/dgjXkyLr2Kl4vf3/yLmkb1+EqLUH1N7yWBWC22zFbrMR37EJSv4GEx8YRmdgWW7Cj4c4CQQtBiIugxXD9nOsJ+X0pFy1QsfnAqEoNOlHYBw2i9ZtTD+gk4XUp/PjSakpyXfqKiKYxZMUT2N1FyKEODI5QDA4HcmgoxshILB07EHzSSY1y/T5UslO2s/LXH9mzdjXB4eH0P2MiUYntyN21k50rlpCfuvvgnzUsnB5jT2XkRVc0uW0CQVMjxEXQYvAqXqbe1p8z59fj3m0yIdtsGEJDMUZFYYqPJ+ySSwga0L9Rxy4udDH7nk/QvEb6b3izYc8/WcYQFoa5bVtsvXth6d4dPB7UqiqMcXHYBw/G6GjakYTb6WTzvDmUFeRTnJ1J1rYtqH6lzhRb6649sAYFYbYHYQ0Kwu4Iw+5wkNizL2GxcU1qk0BwuAhxEbQoXFu38sfTFxMvl9LDXoWlbRzGR9c3aboTVVEonz0b5z/zUJ0V+EtK8VdUoDqd+MvKGh+7JO8LtDWAqmFKTCTppx+RrU2bml5VVf58bypbF/zdsElGIwajEYPRhCTp+dQkWcZisxPeqjV9TjuTpD79mtQ+gaA+hLgIWia/3werPtRf37cLgqMP3r4JUQoKqPjnH1wrVuLetg1fTg6a16tnUJCkg4pP4hefEzRo0BGxa+uieWxfupCyvFwUjwfF50XxefH7FPyKr+HRWDVmm532/QYQEhmNJSgYW4iDsNg4IlolYA8LF3nLBE2CEBdBy+XJUP3/M6fCgKua1ZT9UVUV786duLfvCIx2yqZNQ3Y4aP9L3UqgR8umzG1byE/dhau8DHdFhZ7yCA1V8VOUtZfygjzczsYHohpMZqxBQYTFtSKyTSIxbdvTuks3otq0PYKfRHC8IMRF0HJ5KRlchTiVSGZUPs/4q9sT1mtgc1t1TJO7J4VF33xOfupu/IqC6ldQ/X40tfE1kWOTO3LZc68fQSsFxwNCXAQtl6x18OnpfJL9LlVqGFa5gqvfPKtR+bsEh46rrJTi7CwAqpzlFKSnkrs7hdKcbFzlpXiqXb8jWrfh6tfebU5TBccAQlwELRuPk11fvMefa/oCEgldwjjnLrEg3Vysnf0bbbr1JLptUnObImjhCHERHBP888U2ti3VI9qHTkqm3zgx7y8QtGTE/ILgmOCkK7oSFqsXbln2627y0sqb2SKBQHAwhLgIjhkm398fg0kGDX55ZQ17txU3t0kCgeAAiGkxwTFF5o5ipr+xPlAXpddJCYy8oFOz2iQQCOoixEVwzJGXVs5vb6zD69YTQYbHB3HOXX0ICrU0s2UCgWAfQlwExySKV2H6G+vJ3aOvvUgyDDoziQEThBeTQNASEOIiOKZZ+2c6y6fv0ev+AJYgI73GJDBgfDsRDyMQNCNCXATHPJVlHma+tYHCzJrUJrJBon2faIaem4wj0taM1gkEJyZCXATHDdkpJSz+cRcFGRW1tnceHMcpV3drJqsEghMTIS6C4w5nqZvFP6Swe21BYNuYyzrTfUTrZrRKIDixEOIiOG5RFZXPH1mKq9yLJMGFjw0islVwc5slEJwQiBVPwXGLbJQ5/5EByAYJTYPf/7exuU0SCE4YhLgIjmuCw6ycdHkXACqK3OxcmdvMFgkEJwZCXATHPZ2HxBMSoZceXvj9zma2RiA4MRDiIjghOPmqrgB4KhXW/JHezNYIBMc/QlwEJwStO4UT1UZfzF83R4iLQHCkEeIiOGEYcX5HADwuhdI8VzNbIxAc3whxEZwwtO4UrqfsR08bIxAIjhxCXAQnFDFtQwDYu72kmS0RCI5vhLgITigUrwqA2WpoZksEguMbIS6CE4Y96/MDecfi2jua2RqB4PhGiIvghMBZ4uaP9zcDYLIYGDoxuZktEgiOb4S4CE4I1s3JQNP0omIX/t9ArMHm5jZJIDiuEeIiOCHI2FoEQFRCMKHR9ma2RiA4/hHiIjjuUVWVsoIqAJL6RDezNQLBiYEQF8Fxz5rZ6Wi6k9hRqeniTikhb+palHLPET+XQNBSMTa3AQLBkWT78hxWzkgFIKJVEHbHkVtrqVydR9mcNNRyLwClv+4m6gpRAVNwYiLERXBc888X2wOvJ9/Xv8mPr6oqznl7qViUheb2B7bLQUasncOb/HwCwbGCEBfBcY012ERV9Uhi6S+7GHNplyY5rupVKP09FdeaPFBqirkaIqyETkjC3iOqSc4jEByriDLHguMar0vh2ykrcBbr6x8JXcI5647eyPLhLTeqLi/FP+3Cva0I9vvLMbUKIuycZCxtQ5vCbIHgmEeIi+C4R1VUfn5lDflpenR+aLSNi54YjNF46AKT88oq/IVu/Y0Elg5hhE/sgDHS1pQmCwTHPMJbTHDcIxtlzn9oIB36xwBQVlDFkh9TDutY/uoRkCU5lFaPDSX62p5CWASCehDiIjhhGHd9D+I76NNWWxdnoyrqIfVXiqpA1Qf64ed2RLaLJUuB4EAIcRGcUJx6TXcAVL/G0l92H1Jf57Js/YUsidGKQNAAQlwEJxQhEVZaddRHL5sXZDWqjzenkpxXVuFcrIuLIcJyxOwTCI4XxLhecMJhNOu1XPyKiqqoyAdZ2HeuyqH0512B94ZwC1FXdj/iNgoExzpCXAQnDEXZTv54fzOleS4AugyNO6iwALhW5+kvDBJhZycTPDj+SJspEBwXCHERHPd43QpzP9lC2saiwLbw+CDGXt5wQKW/0geAJSlUCItAcAgIcREc16z6PZXVs9JQ/bqXl9EkM/y8DvQYndBgX09aGf5S3fXYcARzkgkExyNCXATHJSlr8lj47U7cTn3kgQRdhsQx9tIuDU6FuVPLKJ2WglKdph/AnCTKIgsEh4IQF8Fxh9vlY86HWwLvo9uGMOGmngSHWw/aT3UrFH6+BW9qeWCbZDMSelpbggeKKTGB4FAQ4iI47lhVnWIf4MzbetG2EUkkXZsLKf5+B/j0wMqAqAxtdcTsFAiOZ4S4CI47dq7UPbziO4Q2KCyqV6Xoqy14dpYGtgUNa0X42clH0kSB4LhHiIvguCIvrRx3tYfXoLOSDtpWVVVyXliB5lIAkINNRF3bA3N88BG3UyA43hHiIjiuWPGbntLFbDWQ0Dmiwfb7hMXSPpTI63ocdip+gUBQG/GXJDhuULwKWTtKAWjfL7rB9rIsYwjTU7mobr8QFoGgCREjF8FxwZKfUtjwz1606kTHg89u36h+9j4xVMzfiy/H2WAqGIFA0HjEX5LguGDD39XCIkGvsQkEhx3c7XgfIWOqgyk1qFyRc+QMFAhOMIS4CI4LwmLtqKqKNcjEyAs7NbqfbDViiNSFSIiLQNB0CHERHBeMurgzpzm8jJGqSHt8AYWfbkZ1Kw32U90Kqkv3LvOXe4+0mQLBCYMQF8FxgSNSwWYIwmKwYfTKuHeUkPPcCjwZ5Qfsoyoqea+vQavyAxB2lohtEQiaCknTNK25jRAI/iuz3n4VNroJMoXSsccI1PSKwD7HaW1xnJQYeK+6vDg3FFDxZzqaWxcWKciIKdKGKSGEkOGtRKVJgeA/IsRFcFzw5pXn43NXkdR3AOc+9CTu3aUUfrYlkM7FGG0DCZQST2DbATFKJEwZcRSsFgiOX8S0mOCYJ3X9WnxuPYPx8IuuAMCaHEarhwdjjLUDoBRUoeRX1RUWs4ypVRDmJAdyULVnfgPaIxAIGkbEuQiOebYt+gcAS1AQse1q4ltku5G4u/tTNjcd1+pc5BAzSBq+vZUAmNuGEHNzHwDK/k7Hm6avzxhCTEf3AwgExyFi5CI49qmOrDcY6n9WCj21LfEPD8beLzYgLIYoK1E39gLAvaeMirkZUD1BHDap45G3WSA4zhHiIjjmMVn0FC5+v/+g7cpm7qnuIBN7R/9AuhdzXO3Fe0uHsCa3USA40RDiIjjmcUTqecQUr+eg7YxR1VH7PpXCjzaiKvriimw3Ywi3BNrlTFneqBgZgUBwYIS4CFoUZWXr2Lb9sUPqE9VWT63v9/kO2i7mjn6Y2+nlir0ZFeS+uArFqQdOhp3TAcmuT6tpbj+ls1MPeByBQNAwQlwELYY9e6ayes15ZGd/g8uV3uh+Pre7Ue1ko0zMTb2xD4oDQK3wkvfiKrxZFdi6RND68aGBEYxrRS5lfzXeBoFAUBshLoIWgaqqpKa9FXgvSY13ZExdvxrQvcUaQ8S5HQk7R4/G13wq+W+vp3JDPgDRt/ZBDtK9xSr+ysCdWtZoOwQCQQ1CXAQtiJp43qXLxpCZ9U2jeuXs3A5AWFzj690HD21F1HU9wCCBBiXf7kApqsIYbCbuwQFIVgMARZ9vQfWK9ReB4FAR4iJoEciyjMkUud8WlR07HsPrO3BusH1UFBUAkNCl+yGd09ohnLj7BugCAxR9rYuUbDYScXEXQF9/yXtz3SEdVyAQCHERtCBGjVzJ6FHradv2lsA2uRHTY0azvk7iqXQe8jmN4VYcp+h5x3zZTqpSSgCwdY7AGKO7KPsL3WL0IhAcIkJcBC0KozGE4KCaIMbi4oUN9rE7QgEoyT28eiyOsYmB1C8lP+wIbDe1Cg68zn56OeWLMg/r+ALBiYgQF0GLIy7ubMzmGADS0t9rsH1QeAQAlSXFh33O8Mm6oKkVvoCIhJ/XCVsfPYYGRaP891RyXlyJUtI47zSB4ERGiIugRRITczoAFRWbqXDuOGjbwow0ABwxsYd9Plu3qECSy/I56aiKimyUibyoC3H3Dwjs85d4yH15Fc5VomqlQHAwhLgIWiRtEq6ofqWxcuUEdqY8W2+7soI8qir0Rf9+E875T+eMvKyr/sKnUvprSmC7MdJG3N39CT+vI0iACqU/76JqW9F/Op9AcDwjxEXQIrHbk3A4+gTeZ2V9W2+7VdN/BkA2GknuN/A/ndMUbcfaRZ9ic63Op/yfjFr7gwbEETSsxt25alPhfzqfQHA8I8RF0CLJzvmZ8vL1gfcdOz5Sb7tdq5YDEJ/cqUnOG3FR50AamPI56ZT8tqvW/tBT2waCLF1r8ymbk9Yk5xUIjjeEuAhaJA5Hb/Q5KJAkAyHBdWNYXGWlVJbqi/i9TzujSc4rW43EPzAQQ5ju3ly5NIeir7fV2h93/wDk4Ooo/n/2UvTt9iY5t0BwPCHERXDUKchIQ1UOHjcSHNSB3r0+BmQ0zc/qNedTVZVVq83mBX8DIEkSnYeNbDL7ZKuR2PtqFvGrNhWS//4GVFUN7I97YACG6izLVRsKKPx8S5OdXyA4HhDiIjiquJ1Ovn7kbt67+UoUxXvQtlFRoxnQ/wf0r6mfpctGsWfP1MD+2KTq/GCahqu8tEntlI0yMXf2xdJej6HxppaTP3Ud3rxKlFI3KBB9V1+M0XqgpXtbMfkrUg52SIHghEKUORYcVVZO/xG/z0eVrwxvpQtjqPmg7UND+2K1xuN266OWtPR3ad/+TgCCwsID7fZu3kTXEaOb1FZZlom+oRdF32yjamMhSp6L/NfX1ttW0zTc07JJ/Tmd/GElDDx7cqAYmUBwIiK+/YKjittZAYDRYsEeGtaoPp07PcW+9RdN8+H1FqIqCj889TAABqOJpP/oKXYwIi/pWstLrD4kSUKWZGTJyOJvP2fq5efy22vPU15YcMTsEghaMmLkIjiqpG3Uk0DGtktudB+zOZr9MyZv3HgzedlpJJzlJ3txKCef/yxWu72pTa1F+NnJhJ+drFev9KqoXgXV40er/vGVeshatoE96frIRlUUUlYsIWXFEiIT2nDmXQ8R1abtEbVRIGhJCHERHDXKCwuoqH6S7zJiTKP7Wa1xaFIwWwpas7GwO4tLh2CuctGnyy5O7rCGjoOGHSGL6yIbZTDKyPbafzpWoMvAOLowjlHFRcz/4iN2rVqOX/FRlLmX36e+xJWv/O+o2SkQNDdCXARHBUXx8sldNwbe9xhzSqP6Ze4t47qP1rO96rnAJO6I8LfYnJxJaVlr+g+/9EiY+58IjojkzLseRFVVfnnxKdLWr6G8ML+5zRIIjiqSpmlaw80Egv9GaV4uH99xXa1tkizTqmMXzvu/KRjN+sK+qqikrclg42fzqSz1UBLaEQnQ0NAAo9+DUXGxpO1M1iStwSybuazbZdza+1bMxoM7BzQH6+fM4u+P3wEgNrkjZ939EKHRh58DTSA4VhDiIjhqrJoxk8XffoTqrx3jIkkGopKux+0Kwefx1+zQNLpt/oAtPW9Aql7Q34ejbBovnb6g5hhIdAjrwEVdLuK8jue1GE+tKmc5n951UyD/GZJEx0HDOP2WOzFbj+w6kUDQnAhxERxxti/PYcX0PThLPNWBiC40fzGKax6aqid/lOQwLKHXVPfQkP0+LJ5S+q19mfNOf5wnIj3E//kHrqB43CHRjH3xKtwRFTyy6BE2FGyoHtfohJpDeXbEs4xu07SuyYeLqqosn/YdK3/5Eb/iA0A2GOh/xkRGXHxlixFCgaApEeIiOGKoisrin3axaX7tIluq6sTn/AXNX+Om64gbQ7tWfTD//gkRhZswqvroZnbbQUxLHs0HC15D8vuRg4NJnj8PY3BNIS+X4uKLzV8wffd0Mp015+oR2YOpJ00lxh5zhD9p41C8Xv58byrbly6E6j87s81On3Fn0GPsaYTHxTezhQJB0yHERXBEUFWVj+9dhLeqZppr5IUd8bnWsOCrT9CqU6mExsQy6aEn8f/4M0XvvR9oa2zThhdbj+WvuF78MPsJQjyVYDDQfuYMLElJBzzvyuyVPLDoAYrc+ohIRmZyp8nc1f8uHGbHEfq0h4azuIgZb7xI9o6ttbYbTCbCYuNJ7NGLbqNPJq59xwMcQSBo+QhxETQ5qkvBlVnGvLc3EixL2GQJq6RixokBiZmZ7yHJMsMvuIyebTuQ8+j/4U1NBUALDuH9Sx5jVpEBn1/D7nXx86zHAWg99Q0c48Y1yoZ31r/DBxs/wK/ViFuoOZQbet3AFd2vOEjPo0d2ynbmfvA2xdmZ9eZak2QDjqhoOg8byciLr2wGCwWCw0eIi6DJyP/ferx7Kw7aRtM05lR+w/mPPk7p/z1O5ZIlgX1Z0W24ZfDNePfz+rovtIiTP38egM5btxzS+kS5t5x75t3DqtxVqOgjJaNkZN0V6w7lYx0VCvems2XB32RsWk9xdhaK11Nrf1hcPBc/8wp2R2gzWXiI+Nxgsja3FYJmRIiLoElQ3QrZTy6rvVECySQjWQxINiN52el4ZYnetw0hbfJE1ApdiGSHg6jbbmXw9igUVUOWYFLf1jxwehfkrz+lcOqbSGYzXTZuOCzbXIqLwV8PBiDKFsW8C+b9p896NKgoKmTLgr/ZuXwxBen6qM5gMnHWPY/856JoRwRVhczVsHM27F0Oe1fC+Jdg4LXNbZmgmRDiImgSKtfnU/KdXus+7v4ByOGWekcZ3txcUs84E7WyEoDQ884j7umn+GltFv/362a8ij7C2PPceGRZJvPue6iYPRtDZCSdliw+bPuunH0la/PXIiHx6zm/0j6s/WEf62izeuYvLPzqE/b9qfY+7QxOufbmo2tE+lLY8C24K8DvAcUDfi94KqAkDdxl7J+iB4DgGLhPZIo+URHiImgSin/YgWttPpLNQOsn6k/HUrFgAVm334Hm9aIBX4+5khlxfXF6FNT9voWDkiL44cahqIrCzgED0NwebAP60+6rrw7bPpfXxcgfRuL1e2kT0oaZE2e2aBfg+Rnz2VCwgTv76xmgC9JT+f6ph/BUi3JE6zZc/tJUjEcqcFRVYeP3/H979x0fVZU2cPx375RMJpPeSQIhBELvvQgqKiA2UGzoWrDt2tu6u7a1u2JFX3tv2AWliaD03luAkN57JpOZyZQ77x8XEmIoCZn08/3sZ01uOfcMSeaZ057D9k8hdwe47A27T2sA/2joMhimvAj+YsFoZyWCi9Bktv3FlHx+ADygj/Mn4h+D65x3ZGWR/9+nqFqrtjwUJP437GpWxQ2tc123ECMvzhzI6B6hAOQ9/QzlX34JQMKSxaecJdYQ3x38jqc2PgWAn86PR0c/yvSE6U0q09s252/miXVP1Eyp/m3mb0Sb1CnKLpeDb5/8F3mH1Rbi+KuuZ9Rls7xbgT0/wJqXoOgQHDcZAgC9P/j4g0YLsg5krRpMIvpAj7Oh1xTwDfJufYR2S+QWE5rEsimP8p+O7jOvkQiaUTt9tmrjRgqef4HqgwdrjlXqfHlo/N8pj4pjaLiJpEh/hnULZlxiGNFBvjXXKVVVlM+fD4Bx7JgmBxaAK5Ku4M+sP1mds5oqZxWPrX2sVYOLoih8uv9T9pXso9JRSVZlFlmVWTXnw33DKbWX1gQXrVYP0tFMBZJE0tizvFMRaymkr4O0VbDl/brn/KOg5xQYdzeENjyTtSCI4NICiotXkpb+FuHh5xPf7bbT39BOmFdkYF6eCYCkl4m4awi6cDWlSdY/7sSyYkXNtdWylpVxQ3ln8AxunNiLf03rc8qyC15+BdxukCViXnrJa3V+a/JbnP/9+eRV5RFkCPJauY1VaC1k9uLZ5FXl1TsX5BPEQ8Mf4uLEi+scNxcXkXcoGYDeYycQFBnV+AfbzbD+DUj+Fcx56pjJX1soWgOMuxdG3yFaIsIZE8GlBRSXrMJs3onZvJOS4j8YNOgTtNr2PU2zYnkGlSvUwCL7aYm4bxhak9r/n//ss3UCy6+jZ/BWxGgkWWb1Q2cTF3r6nFqVS5YA4DtsONrQUK/V+70DGzmcOgNdl0Vc0Wuq18ptjOUZy3l49cO4jmYhCPMNw6g1YtKZuCTxEq7pc80J7zMFBaPz8cFZXc3BDesYeUka4d0a0KKrtsD6ebB7vjr4fjI6IwR1hVlfQLhYwCk0jRhzaQE5ud+TmjoXh0NNdyLLBkKCxxEVdQnh4Rcgy+0rxpf/egTL2lwAZH+dOjtMr74GRVE42K8/eDwosV25duzdlDvU+8YkhPL1raNPW749JYW06RcBEPfhB5jGjfNKvRVFIeGJJeAEJdBBykMXtmgm5XU563hu03NkVh4NypLMf0b9h1lJDR83Kc7K4PN/3o3idqPR6bnptXcJCAuvf6HDWhtQSlPrnpNkiOgLMUMhegjEj4PQntCGJzgI7Y8ILi3oQPJj5OZ+9ZejEj4+UQQFjSA6+nKCg8a06VlMVbsKKftaHUPRBPkQef/QmsByzIE+fcHj4ZkR17EuZhAAV4+I4/mZAxv0jOx77qVy2TIkX1967zjxnvVnKn7eUshRu4EMOplekf5M7hPJNaPiCDN5tzV554o72ZC7Aa2sxeVx4XA7as6FGkL5eMrHdA9s/FhS5t5dfPfMo+DxIGu0zLrjb8SkfqR2c9nKwVFZf3bXsYAy/CYY+jd1UF4QmpEILi3MbN5LatrrmM07cTpLT3CFjMEQg79/X4KCRhERfh4Gw6n3b29Jec9vwl3hQPbTEfWvkerOjMex7dtP+syZAPw8aBpf9zmfeVcPYWJSw5NHJg8Zisdmw3/yZGLfnOfV+o/ZuJ+cFVnIlfXTrcgS+Oo0BPjqiAo0cPmwWK4eEXdGwd7hcjDsy2H1jocYQrh7yN3M7DXzjOp/zIG1q1g8Tx2LkvBwUex+evr/5fdJkiG8txpMht8EbXC/G6HjEsGlFblcFvLzf6agcAmVlftwu0+cOkWSNOj1EfgZe2Ay9SE4eCRBQaPRalt2PxDb4TJKPtwLQPDVSfgNUgOGoijYd+2i9KOPqVy+vOb6gGdfJPqy6Y16c65YvJjc+x8AoPuvv2BITPTiK4C792fwbUEZmB10LXLiV+4gs8SG+yR/BhpJon9sALdN6MG0gafOWrw4dTGLUhexr2RfTeLMY67pfQ3jY8YzIXbCmVc+Zwfs+VZtodjLyEgv5Md9wSjIgIfoABfnjo4mMiEJwnpBn4tEQBFajQgubYjDUUpu3neUFP+J1ZaGw1EKuE9xhwZZ0iDJOjQaX0ymfkSEn0dA4FD8jD292r1WsTyDypWZ4AFJBxrDamy7duHIyEQxm2tSyANIvr5EP/sMgdOmNfo5R6ZPx5FyBG1UFD3/9H6aFkVRmLnzCBsq1MWIK4f3orefgeT8SvbmmjlcUElmiZX9eWayymx17tVrZUYnhPDwBb3pH1M3x9cPh37gyQ1P1nueSWdiUtwknp/w/Mkr5XKo04DTVkPeTig5ArZSMARDZF8oy1AH4hVnvVvLHAY+TR2O21O7mZqPnx+T59xJ77FNCGSC0EQiuLRxVmsGRUXLKC3bgNWahsNRjKLYTn8jIMtGfHzC8fcfQJ/ez6DV+jf6+a4yO0Xv78FdqvbhexQX1o1voRTuq3et5OOD6Zxz6PLiC8j6xn9idhUVcXiCunYj4uGHCL3pptPccebi/tyF0+PhPwnR3NXtxKvIy60O3vwjhYU7cymsrJtIske4HzOGxhLu78PIBD/+/ufsmjUqE2Mncl6387gg/gIMf50V6HJA9mZIXgSZG9RAUm1ueMW1vuAbDHoj6E3Q8zysw+9ixYdvk75rGw6b+rshazTc89kPyFoxtiK0DhFc2iFFUais3IXFcginqxyns5wqyyEqLfuPzkir/yP18Yli7JhVjZqZVrEig8rfM2uKc5elY133GrisSL6+6GK6YOjbF79x4zGde06dDbzORO6//k3FTz+BVkvS7l3NOrFh0Lq9FDhcnBsSwJeDTp9nLKvEyiu/H+K3fflUOY5rTWrKGRf5FnZXAIdCc7hVDucuYwLofMFSBOZcsBapubec9vprSo6n8wVTFIT1VMdKCvZB0QHwi4Ce58OQ2RDc7ZT1PLJ1Ez+/9DQAo2Zcyfgrr2vQv4cgeJsILh2Qy2WlvHwjpWUbMZt3UVGxFQBf33h69HiQ0JCJ9cZr9m/agdu2hoSwy7HvqqA6tQKl6mg3jAyOjCVUb/sJgKTt25CN3h/vSTn/ApyZmfgOG0r80bQvzeXqXUf4o1Qd47opJoznesWe8nqX2UHh69tRqpz8QDWf46AUBzMin2JZyNGtiz0ehtiruazSwoVV1lMvItP6qoEidgQkTYPEyV4bH/ni3/dRcOQwPn4m7vxovlfKFITGEsGlEzjRFGhZ9sHf1A8/U29KS9dgs2UhSVB+4DxGZV173JUVVC59Wl3ZDfifdx6x895olnomDxqMp7qa0FvmEPHAAye8RnEpKBYHsklfb6baySiKglJWjTO/CmeRDVeJjdJqB5dGuig+WsQT3aO5I75u95jiUHBkVlCdYcayJgePvbbVIelk0kzz+a/vQcr9c7D/pZUleTzEKnCOx5dbfRMJCEuEsCSI6q9OCW7GgfbcQwf4+rGHAOg78Vym/v2+ZnuWIJyM6JDtBPr0fhoffQhZ2Z/hcqlBQlGqqTBvp8KsriORJHVMPsivEjRu3BWZVO9fhju3dp1JxD//SeiNNzRbPT0OdR2ILra2FaG4FGz7irHtKsaRZUap/MugtqRWXtJIoJGQtDKSTgbFg2J343Eq1Em5fJQBWAiMO9+ER5JYvz6Tiz9MQfbX43G4UWwucNe/L+iyRIwjIpFlmRjGsRzgl3tJ3v05XwYGsM4USJHkxiNJZGngU+x86txLD5uNmwJGMD1qYLOvY+rSqw9Rib3ITznE/lUr8CgK0+48cbAWhOYiWi6dzLHxmvz8BRQWLcPlqkSWYjh4MIj8/J7M+Hk5GmvdAWZ99+5Ev/A8xkGDmrVuey64FFvMeIx+EYR174vb4sRjrb8epUk0krp5mVbG43Bz3WAfDvrLXJXh4L5DjhPfo5XQ+OkImNodv8EnWK+jKPDZRZCuZn22hiXyzaDpLCk/wMGygygepeZSvaznrNiz+O+4/xKgD/Dua6tTJYUvHrmnZqOx7kNHcOlDj7XpBbpCxyKCSydXUFDAZx99RFV1NT42G5cuWAiALjaGgIsvJuzmm5H9/FqkLvsenUega/AJz8l+WvSx/vgOCMOndwhKlROl0oG7yolS5VK/tzlRbC48NjdIoAkxoAvzRRthRB9tRDbW74oqrHYQIMl40sxUp5ThzK1CNurQxZjwiQ9AF+vf4O43vrkeDiyo/V5nxNV1LJ/2O5tvU38htyq39vUgMyF2Av8d+19Cfb2XO+14iqLw5b/vozDtCAB+wSFc88zLJ04XIwheJoJLJ7bwgw/ZnpVZk8Y96UAyo6xWYua9gU98fIvXZ//i3zH84aFasREcH40uwh+fhECMgyKR9e3kE/cfz8Omt4/uzHiUKRLuTybHmscrW1/h98zfa1ozEhIDwwdyx6A7GBfjnRxqx1MUhUWvvcihTesAdYry1DsfoLe30vULwkmI4NJJVVVV8dLRVPYal4tBBw8x6dZbCDjvvFar0+4Vy1j+3jwkWeb+rxe2Wj28omA/rPof7Fdn2NH3Mpj1CaDuivns5mdZlLoI93FTk/20fkzqOol/DP4Hcf5xXq3Onj+Ws/y9eXgUNaj1m3QuU+4QA/1C8xHBpZP66aef2LVrF5LHwx09exJ2zTWt3h+/bfEC/vz0fWStlvu+/LlV6+I1X18DBxepX8/8AAZcUXPK4rDw9q63+eXIL5RVl9W5Ldw3nOkJ07l14K2Y9E1bP3RMWV4OXz/+MDaz2qoKiorm6qfnYgwIPM2dgtB47aSvQfC2AwcOAOCRJCJmz271wAIQFKnm7lJcLpLXr2nl2njJlV+A8egYxw9zYP616ip9wKQ38dCIh1h91Wq+m/4d42PGo9eo40JFtiI+3vcx4+eP59Wtr6Ioysme0GDB0THc/vandBswBIDy/Dze+/sNLPm/V3HY7ae5WxAap/XfUYRWYTCoaUl69Gg7W9f2GDYSU2gYAMvef8srb6itTpbh5mVgONo6SP4V/hcPyYvrXNY7tDdvT36bbbO3MXfiXPqH9UdCwu1x89G+jxg3fxyvb3udvJ2bm/TvImu1XP7o00ycfRNIEm6nk/2rVqC4vDwrT+j0RLdYJ+V2u8nOzsZkMhHqxZ0eG0pRFByOfCyWg1RVpWC1ZWC351JVmUlBWREmgx17VSQXXfJnm2hVNZnbBT/foWY1PmbKizD69pPeUmgt5MFVD7KjcAcAg9K6MCbvYWS3lfBeEXQfGEWvkZH4h5zZPjQFqSn8+sb/sJnN3P7eZ2hFBmXBi0RwEZqNorjIzZ1PTu63VFfnoijVKIoTj8fFifKfAbgUeOGPR8j0jeba7t/y5NWfdIzgckz2NvjgHPXrAVeo4zCnsadoD09tfIpxP/VCpz+33vmAMAMTr06ia7+W/5AgCCcjgovQbNatn4TdnnXKaw7aZL4p88HmkVA8anCR8BBvCWBH9r/pEmTkkalJXDwopoVq3czsZnjh6Eyw+PHQezr0uRgCT//6HA4XK//9IpVHdJgD4qk2BOORNDXn/UMNnHVVL+IHhDVX7QWhwURwEbyqsjKZ7OzPKC1bi92eA4BeH0ZoyFno9eHo9REYDFH4+ERT4PQwa/ENdabjHtPTJrE9vXYPlGCjjreuGcrYxHb+xnl8y+UYSYYbl0HXkQ0qouSjjyj8nzqNvKDnZFKTZmGz1KbF0ftqCIowEtUjkO6DwujSM6hjtf6EdkEEF6FJHE4zublfU1i4hKqqQyhK3X1PfH27MXbMSgAOlR1i3vZ5lNpLqXJWkWXJwuF2oJE0zOpxKaZtn+HncmCQdCRc8Q2FxTG8uPQgueW1+9dcMzKOZy7t337fLBUFfr0PMtZCVfHRxZYedUbZg4fUCQANUPLJpxS+8AIA+oQEnI+/z/ofU7GZT5zCxseoJSDMF/9QA90HhZE4NBytXqQWFJqPCC7CGXO57KxeMxiPp24ySVn2xd/Uh6ioS+jSpXb9zPSfppNhzqhXzuuTXuecxY9BwV5AgjkrILZ2//m1h4u444vtVFarM5pignz59vbRxAS17DbPzeLgUvj6SvXrUXfA1BcafGvBi/+j9OOPAfDp25f4Lz4nK9XK4a2FFGVUYi6x4XKcfGaZRiej0cpodTI6Hw06gwa9rxaDUYfOoEFxKbicCnqDltg+wcQPDMNg1DXp5QqdhwguwhlxuawcOfI/snM+B9QWSmjoRGJjrsPP78Sbb439eiyVjkpCDCF0D+xOgC6A2X1mM3LvL7D+aBr/if+Csx+pd6/DpXDjx5tZd0Tdm14jSzx1ST+uHXXqzbPahY+nQYaanoXowXDpuxDZu0G35jzwIOZF6iJNydeXmNdexX/ixJrzDruL9N3FZOwroTSnCkt5NXZL/e2SG0rWSDUZtD0e1P+TQOejwRigJyDMl9AYE116BhHbJwRtQ/OyCR2OCC5Cgzkc5WRnf0p+wUJstgyOzfjSaPyZNHHnKe/97uB3PLXxKQAeGPYAN/S/AQDX9kXIP1+j9gZ1GQq3/nHKcr7enMmjP+/FfTSN/mtXDubSIe18sN9uhtcHgu24Vfpj7oQLnm3Q7fnPPkvZF18efbcH/8mT6fLaqyfd4lhxKaTvLaY0twpbpRObxYm9yonD5sJhc+GsduN2KUiyhKyRcNrdVJ9hdmqtXsYUbCAs1kSPoREkDjtBVukTqCiyknOoHJdDwe1y43Z5cLsUFJeifu1W8Lg9SLJEYLgvIV38CO/qj69JTKduK0RwEU7Jas3iSOpLlJVtxOks+ctZCaMxgV49HyM0dMIpyxn/9XiC8uOINHfnsohZ2M0urOU2bIUVeCSJObG3oP13iro3/Gnszalg+jw1vf2zl/XvGK0XRYHVL8Gfz9Uee+AQ+Eee/J7j2PbuJWvOLbjLywGQAwOIe+89r22ToCgKhemV5B4uBwm0OhlZI6PRybidCsXZlZTmVVFZUo3d4jhpd5wp2IegSCO+/nqMAXpMwT74hxiQtTLpu4vITamgstiG23Vmb0tTbutPjyENC2BC8xLBRTih0tL1HE55DovlwF/OyPj5JdIl+gpiY2cjy6f/pOhSXDz9+CdEFJ9kr3qPh9lTMgm87MYG1e1IkYVzX14FwFdzRrX/GWTHsxTBy0ngcatdZLetavCtiqKQ9+BDmBfXrv7XRkfj0zMRw4ABeKqqcBYU4i4vw3fIEMLmzGmW7aoBXC6F3INlZOwroTDdTGleFQ5b/VmBpyJJIMlqNxyS+l/p6H+RJWRJjckuhxvl6MZus58eTWB4BxiL6wBEcBFqlJVtISv7E8rKNuJyldcclyU9QUGj6BJzJeFhFzR4pta7u95l/sH5GHLDuDD5diQknHI1Rj8ffCvL0Jbk4GsrIbynnlEv/rNRs5cGP/Ub5VYn/gYtP9wxll6R/o19uW3Xny/WtmBmvA8DZzXqdsu6dWTf8feanT1PSpIw9O1L6O23tUg27A0/pZB9sIxqqwun3Y3T4cbtVGoCg85HQ1CUkbjewfQaGUVoTMMTdiqKQlW5A78gffudSdjBiOAiALBz1xxKSuqPd8TF/o3ExEcb/Qd794q7+SP7D1Dgxq3P4+M2YtdWUT5rM3ftjqLkzTcB8D/vPGLnvdHo+n64JpWnF6mtKkmCeyf35J5zezW6nDapIgde6w8eBaIGwO1rG12Ey2ym/Ov5WLdsoTolBXdZGZJWi+xnRNLrcebk1ozRAEgGA6YJE/AdMRxDYk98R4446ZiNIDSECC4CiqLw56reeDxuNBojQUGjiYu9/rTjKKcy+LPBhFXEMSHtCsKssQBcev8QYnoFc6D/AHC50HfvTvdFv57xJ81//bCbr7fUZgBIeWZqx5id9Go/qMhWv575EQyY6fVHKFYrxe+9R8WPP+IqLKp/gVaL/+TJRDzyT/RRUV5/vtDxiY8mAsXFv+E5ukp+7Jg/0OubPoYxwW8ySeunIqHuctm1fwgxvYLVk0ez+gZdeeUZB5a9ORV1AsvohA407fX4z3s/3w7Fh2Hiww1eYNkQstFIxL33EnHvvdiPHKH4tdep2rwJpcoKLhe4XFQuXUrl0qUgSci+vmiCg9FGR6OPj8fQuze+Q4bgk9RLtHCEExItF4Ft266mvGIzen0YE8ZvanJ5VrODDx5bgabaB7fkwt27hHvuqg0kh8aNx11SArJM7Nv/V2ddRkMoisLI51ZSbKnGoJP54uZRDI8PaXK92wyHFX66HQ4spCbBpyEILnod+l3a7I93FRWR/8yzVK5YoQaaU9FoiHjoIUJv+Fuz10toX0Rw6eRKStawc9cNAHTpcg19ej99RuWUF1hZ8dl+irMsOB3umhbLwd6rmXvnv9Efl87dtv8AGVddpQ44SxKx772L/4SGd8E9sXAfn65PB+Dd2cO4oH8H7bYpy4BvZkP+7tpjd2xq8AJLb3Dk5GDdvp3qffupPpKCMycXV0kJisUC7trZX4Z+/Yj7+CO0AQEtVjehbRPt2U7M5bKzZ+/fAdBqA0jq9cQZlZN9sJQFr+6s+V5CQkGhOCCL1+5+vF7Xl09Cd3x6J2HfvQc8Hso+/azBwSWtyMJnRwPL6ISQjhtYAIK7QWBcbXDR+YJfy6bV18fEoI+JgYsuqnfOWVBI5g034EhLw75vH4fHjccnsQc+vZIwDh+G34QJYrymExPBpRPbvfsW3G4rAIMHfYQsN+7XwW51krK1kM0LU2uO5cUmsyFoCYX+6dwy4JZ6gcV+6BDpV16Fx6Ymo9SEhBD12KMNfuZXmzPxABoJPrh+RKPq2y6FJ8FBNb0LU+eCKbx163McXWQEPZYspvC11yl5911wOqk+kEz1gWTMCxYAIJtMBF1+OeF339Vsa2qEtqmDjIAKZyI0bBIg06XL1QQGDmnwfYpL4csnNvLh/WtY9dXBmnTvHjwsjfyUQv90fLW+XJZ4WZ37bLv3kDZjZk1gCbziChLXrkHfreEr7Pt1UbcLdnsgOd/c4PvarXMeA/8u6te/P9mqVTmZiHvvIWHJYgJnzMDQrx+aoKCayQeKxULpJ59wcPgIMm66CXtKSutWVmgxYsylk3M4itFqQxo1a+vHudvIS6mo+d6qq6DIL5s9UauxRhcys+dM7hx8Z50yFbudg8NHqAPEGg1x772Lady4Rtf3682Z/OvHPQBEBviw6d+TG11Gu7PhLVj2b5B18Hhxa9emwazbt1M4dy62HTvrzIDTxXcj8sGH8J9cf1dNoeMQ3WKdXGOnHW/4KaUmsPQeG8XGxJ+Yf3g+APPOnsekrpNOeJ9t+46amUfdvvgc45CGt5SOmfb6avbnVdZ83zWkk3SzRPRV/6s41Wnc7WQFunHoUOK/+gqXxULR3LlULFiIx2bDmZ5B9p13ogkOxjhsGPrERMJuvUV0m3Uw7eO3VGgTUncWsn1ZJgBhsSbOvb4v1/e/nq7+XXlq7FMnDSwAropy9QtZOqPAApBeoo4PBRl1vHn1EL67fewZldPuRA2o/bosrfXqcYa0JhPRTz5J7x3biXzySbQRamJJd1kZlb//Tsk773Bo7DgqV65s5ZoK3iRaLsJpWcrtLH13LwVp6hiHJMNlDw8FIC4gjkUzFp22DMV8dHxEOvPPM1EBBlKLq0gMNzF9UJczLqfd8QsDWQuKS13/Mmd5a9fojIVcdSUhV11J1caNFL3+Bs68PFwFBXjsdrL//g8MAwZgmjSJwEsvUWepCe2WCC7CSSmKQtquYn7/eH+dFOqJwyLRN3KLXJ9eR/N+ud1Yd+w4o9ZLn2h/UourSCuuavS97d7oO2D9PMjeDDu/hMHXtnaNmsRv9Gj8Ro8GwLZvP1k334y7vBz7nj3Y9+yheN48JL0ebVQUPj164H/uOQRMnYrs59fKNRcaSgzoC3W4XAr71+aSvCGPkmxLTcZagL7jo+k7vguR8YFnVPbBESNRKisxjh5Ft08+afT9X2xI59EF+5AlSH3+wjOqQ7v2an+oyFIH9u/dAwHRrV0jr1EUhcIXXsTyxx848/JOmhlANpnw6Z1E6C23NDqzg9CyRHARsJod7F6ZRcr2QiqKbDUZR47xNemYNDuJhMFN24Qp74knKP/mW9BoSNqzu1Ez1BRF4atNmTy6YB8Av993FokdKc1+Q5QcgTeHq9mSQ3vCXVtbu0bNxp6SgnnBAmy7dlN95Aju0tK6OdcAbUQ4EQ8/TOD06a1US+FURHDp5Ba+sYOs/WX1jvuHGkgYHM7g8+IwBRm88izzsmXk3HMvAEm7dyHrT7/R2JsrD/PTjlzSii0ox/2mfnTDCM7p3Ql3HNz4Nix9RP36rIfgnIYvQG3PFEWhau06KpcswbJ6tZqb7ihNaCjRTz+F/znntGINhb8SwaUTy9xfwi9v7ALUPVFCuvjRa1QU/SfFNHpMpUHPm3MLVWvXogkOpteG9XXO2R0u9Fq5TmvmgW938sP2nDrXhfnpmTYwmicv6tt5N4V6dyLk7QQkuGNji+YaaysqV64k/5lnceXm1hzz6dkTv3FjMY4ajd+Y0cgG73woEs6MCC6d2K9v7SJjTwk6Hw23vt78/deHRo/BXV6O/5QpxL72as3xYoudUc+uRJLgsqEx+Om1LNmbR4G5GgCjXsNtExP425h4goynb+10eLZymNsL3NWgN8Fd28E/srVr1Soq16wh71//xl38l8WlGg09//wDbXjbSZfT2YjZYp3U6vmHyNijdi201OeLY8/RBAVidbh45tf9rD9SUrN+BQ98tzW7zj0BBi3L7j2L6CDfFqlju+AbBFd8AvOvAYcF3hoJ9+xSj3cy/hMm4L92DUVvv0PFggW4CgvxWK3gdlP0zrtENyJvneBdouXSyVQUWUnekM/WxemA2h3WZ1w0Z8/u0+zPPtZyCbjwQh7qfTnrj5TUu8ZXp0GSoFuokX9MSuxc61kaa/vnsPBO9WtTBNy9C/RilXvqpZdRnZyMJjycXmtWt3Z1Oi3RcukEHA4XKz85QNqu4jpTi/W+Wm58aXyL7OBYMHcu7vJyAHwHD2JGnxjWHylBp5G4ZUICM4bEdL7ZX0019DqoNqt5xyyF8NYouHsHaDr3n7U+Lo7q5GTcRSfYvlloMaLl0sEdP2h/jCRL+If4MOW2AYTHNf8betWWLWRedz0APn37kvDjDwBklVmJCxaftJvsj+dh1Qvq18YwuO4niB7YunVqRdbt28m4Rl1kGvnE44RcfXUr16hzEsGlg3LYXSx5ZzfZyeU1x0Jj/Jh6+wACw1v2DT37vvupXLIESa+n18YNIkFhc1jyCGx6++g3Eoy8Baa91KpVak3Jg4fgsdsB0EZHE/PKy2ec0044MyK4dEB7V+ew5ttDKC71R2vw03LBrQOITQpulfrkPfkk5fO/QQ4MJGnTxlapQ6ew/xf48RZwqfvlYIqAYTfDuLs73ViMPSWF7DvvwpmeXnPMd/hwYl9/DW1oy+7m2Vl10oUCHVvuoTI1sEjQf2IMN740vtUCC4AuWh2UP/ZJUmgmfS+Ch1Oh29F9ciyFsOp5eK4LzBsO616Hakvr1rGFGBITSVy6hC5zX0I2mQCwbd3K4QlnUfzue61cu85BtFw6IMWl8Mtbu5h0TVKLd4GdSOatt1K1eg2S0Ujv7dtauzqdw/6FsOpFKNyvpos5njEM4kbCoGug94XtZn+YM6UoCkX/e4nSzz8HtxuAhKVL8ImPb92KdXAiuAjNSrFa1R0oFYXAGTPo8tyzrV2lzsXlgE3vwPbPoCSFeonjJBkCYyGsF/S9FAZd3WFnm7lKS0k55xx8EnsS8+Y89FFRrV2lDk0EF6FZWdatI+vmOQBEPvooIbPbd6r4ds3tggMLYfc3kLUZbKX1r5FkCO8Ng66CEbd0uLEaxeFoUE47oelEcBGalaIopEycpK45kGXiv/8e377Nv2BTaAC7WW3RHFwMpWlQmfuXCySI7AczPuyU+cuEphHBRWh21enppE6ZCoA2IoKeq1e1co2EE7KVq1mX936vpvc/vgut+0S4/CN1V0xBaAARXIRmoygKxW++Scl779ds/qSLiyNx+W+tXDPhtJx22DAP1rwMzqNTmyUZxt4D5z7e4ScBCE0ngovQLCp37yFz1qzaue6SROAllxD11H9Fn3d74nbBsn/B1g9BUWdaIWvVcZl+l6rjMp0wYaZweiK4CM1i/z3fIsk6XKtewpQYS8wbb4jZOe2Z3QxfzIDsLfXPhfeGS/4PYoe1fL2ENksEF8HrVr7wJj3LBiJJEh6PQuC0BAImxrV2tQRvMOfBpnch+RcoTa27hiayP1z6dqfOaybUEsFF8KqVH7/DjqW/kug/hCGh5yJLGgAi7huKPtKvlWsneJWiwMb/UxdrVptrj0cNgotehxiRy6szE6NyglcVpB4BIKVyB1H/GQ0aCYCqzfmtWS2hOcgyjL0T/pkB5z2l7ooJkL8L3p8E84bB4eWtWkWh9YjgInhVZI9EALR6PfoAA7oIdRGefX8JrnKRW6xDkmUYdw88kgVnPwo+AerxkhT48nJ4OQl2ftm6dRRanOgWE7xm44/fsP7bL/B4PEiyzP1fL6R8cSqW1Tm1F2kkNAF6Aqd2xzhQ7G/eYW35SE2aaSmsPWYIUoPQuHvFVOZOQAQXoclsFjPf/vffFGemAyBrtUy54z76jJ+IYndRMG8H7lJ7vbRWoTf2wzcppOUrLLSc5EWw7D9QllZ7TGuAYTeqXWlaMS29oxLBRWgSu8XCB3fPobpKTeUe3rU7lz/2DMaAwHrXOgqqsO8tpvLPbDxOBWSJiHuGiIH+ziBzMyy+H/L31B7T+MDQ62HCAxAQ3Xp1E5qFCC7CGXPYrXx41y1YzRUAjJ01mzEzrzr9fXlVFM7bAYoHSS8T+fAItCbxCbZTKDkCv9wN6euo05Q1RULShTDhfggS09Y7AhFchDPicjn48K5bsZQWAzDpb7cwbNolDb7fdrCUko/3ASD764h6aDiyvmOmehdOoCAZfr0HcraB4qx7zi8CkqbBWQ+KQNOOieAinJHvn3mMjD07gIa3WP7KsiGX8gXq1GU0EgFT4gmYEOvNagptnaKo2wBsekcNNG5H3fM+ARDVX23VDJktUs20IyK4CA2mKApWWypbV35IRt42LHtcJPS5iKl/v++My6z4LZ3KlVk132uCfAid3Qd9rL83qiy0J4qiTgDY9H+QvbV+oAE12MQMVWec9Ti7xasoNJwILkKDbNp8MRbLvjrHCrK7MuuqZWibmIjSVWKj+LP9uAqsNccMScGEXN0b2SC6yjolRYG0VbDra8hYD+ac+ts1aw0QP0Edp+k2tnXqKZyUCC7CaeXl/cT+Aw+y1TUU32oLfY2HcLu1uCwDuXDGd157TtXOQsp/PIzHcfRNRCMRcF43AiaJfvdOT1HgyB+w6ys4srL+Lpo6P0iYCGc9LNLOtBEiuAinVFy8kj177+G7vMks3jUZDzAjJJl7Zs0kPj7e689TXArlC1Kwbi2omUwk+2mJ+PtgtKG+Xn+e0E4VHYbVL8Lh38BeUfecTwD0OBcmPgyRfVunfoIILsKJlZau50Dyv7Hbs9hHP543/xufjSV4gLeu6ML0Yc376dBVZqfks/0486pqjkkGDdpQX/Rd/fEbEYW+i6lZ6yC0E3m7YfVctUXjqKx/Pm4UXPGpWEvTwkRwEWq4XFbS0t4gL/97nM4yAA6SxDPS0yguCcOKPADenj2Uqf1b5g/VvCYb8+K0eqv7ASSjFt9+YQSc1xVtgE+L1Edo47K3wOqX1fEap7XuuZAEGHUHjJgj0s+0ABFcOjmXy0J+/s/k5f+E2byL49/FD2tG8bTyEG4kdPlWNLvUgHPfeT2559xeLVZHxaFgP1SKPbkER5YFd6ldXeF/HE2QD8bhkfifFYMiu9BqDS1WP6GN2vcz/Px3cNnB4649Luug62gI6qZObfYNUXfVDO3RShXtmERw6YQURWH/gfspKVmFy2X+y1mJgIDBLDU+zFsF6iwwrQTj06rZeFBdMPn97WMYHt+6OcHsR8qpXJlJdboZ3OqvcGngPnIGv4ni8sFifoiefXrRp08ffH3FWE2npiiw7RPY8CaUHjn5dSE9YPx9MPha0bLxAhFcOqGKih1s3Xb5cUckfPSRREZeREy3O7l6bx6bKtSxDqMs88PgHkR4JM6euwqHS0Gvkfn17vH0imz9tSiKomDbXoRlXQ67dJ+i6f0rHg8cTB5HUVECAFqtlpCQEGbOnElkZGQr11hoVZUFsOIpSPsTnDZ1LY3TBoqr9hpZq+5NExirbuEcNwoSzxUtm0YSwaUTKi5eya7dtwDQPf5O4uPvQZZlMmzVTN12iFKn2oXQ28/AwqGJBGjVtSY7MsuY+fZ6FA+MdJbw2KQkBlw0qtVex1+VFZWwdfsFyLoy3G4t69ddyfFbFhkMBh5++GFk8alUOJ6iwLaPYf0bUJZ+igslMARAQAzEjYZJj4C/+LByMiK4dDIHDz5Jds7nR7+TmDB+K3p9EEuKyrl1XwbOo78O13cJ5X9J9deX/LYvn9L3fmOcIZ5qxU7EfycRYGw7SSfN5r1s2armOIuOnoXJ7w727t3L5s2bARg7diznn39+a1ZRaMvK0mHPd1CWAQX7oDwT7GWguE98fWBXNS3NuHtAJ8b5jieCSydgs+WQl/ctefk/YberG3dpNCaGDP6EwMAhvJiax6sZBepx4K2+Xbk08uRjKos/+Z0BB/RIksSRLulMvPu6lngZDbZz502UlK4CJMaOWYWvbwwfffQRmZmZyLLMQw89JMZhhMaxFEHK75C5Ud3GOX/vXxJuSmoOtNH/gIFXijEbRHDpsBTFQXn5VpIPPobNll7nXFDgCAYN+gSt1sCiwnJu3qeeN8oyi4f1pLfp9G+8R/75Oz6SD0X2LHo+OQVTUNvZ9MvlsrB6zXA8Hid6fRjjxq7DarUzd+5cAAYOHMiMGTNauZZCu6YosPMr2PS22sI5fq68xgcuehUGXAmazpu+SASXDmrN2jE4HLVbzEqSDl9DLHFxNxAbOxuA3ZVWpm47hNsDgVoNO8b0w6ht2Ceuou/3U721BLfHzY/ZrzH8ohmMmzW7zYxnHEtZAxAcNIahQ7/gueeew+FQkyH27duXmTNnotFoWrOaQkfgsMK612HnF1CRfdwJCQJjoPtEGH4jxI5otSq2BhFcOqj168/GZs9Eo/GnZ+K/8Ak+l9TyVNIr09m+dwHZFWn83u0VkA1oJVg9sjcJxob3GVdnVVL01k48Hg/Lcz+lzFGA3teXibNvYuDkqc34yhpu/4FHyMtTc591j7+b9etDSUlJqTkfFxfHzTff3FrVEzqiNa/Ahv8Da1H9c7IOwnpB0hQYfrMaeDowEVw6iDJ7GX9m/UlyaTJpFWnkWLIos5djddlwH7eAbETqIFLCdlAWIDPZM4IF3e/lw/7xnB0a0Ohn5jyxHk+1mxIpn99TP6057hccwgW33033wcO98dKaZOOmKVRVHQZgyODP8XiS+OGHH8jNzQVg5syZDBgwoDWrKHRE1Ra122zfj5C/GxxV9a8xhkLUAIg/q0Mu4hTBpR1yKS52Fe1iWdoythVuI9Ocid1tP+n1eofC7D88RDqupyxsJBp7Ml+d9RaXD3mBu4dcdMb1OBZcJB8N8nVhLH5zLuV5uTXnQ2O7MuuJ5zEGBJ7xM5rK5bKwdt0Y3G4rsqRn3Lh16PUhvPzyy1RWVqLVann44YfRN3HbAEE4pbIM2PohHFoGJSl119UcI2vBFAGR/dWutL6XtOudOEVwaScUReGHwz/wZfKXpJan4jlBsi0JCaPOSIghhCi/KLoHdqdfVQi9//Emad2mkR4/DSSJ4MqDXPPJjU2eOlnwxg6cuRYkvUzMU+MAOLxlA7+/9yZWs5qpNiAsgpvnfdCqYzEV5j1s3XoZ4CE6+gr69nmBgoIC3n77bQC6d+/O3/72t1arn9AJHfoNtn6kTgaozKu/1fMxsg78oyGij7pnTdJUCE9q2bqeIRFc2rj1uet5f/f77CzcictT99OOr8aXrgFdGRY5jGndpzEgbACOQ4fIefAhnLm5eGw28HgoDBvM3n5zQJLwN9iZPfd8ZG3TZ7GU/nQY66Z8JB8NMf+tu1nT+u++ZMP3XwNqC+byx55p1RllGzaeh9WaSlDgSIYNU+u1cOFCtm/fDkBAQADXXHMNUVFRrVZHoRMry4D9CyBttRpwqgpOvrZGktV8aKE9IGYY9Dxf3TStjc1ME8GljXG4HPx85GcWpCwguTQZh1J3q9dYUywze83kqqSrMOnrppwvevsdit94A477kTq0RtaOewEkDT5GLde/MBa93ju/hLZ9xZR8fgCAqEdHoTXV7Vpa+PJzHN68HgBJlhlz+TWMmXmVV57dWOvWT8Juz8JoTGDM6OWA2hr8+OOPycqq3WZ58ODBXHzxxW1m1pvQiRUdhgM/Q/paKD6krrU5WQsHalPWRA1Uu9WSpoBfWItV969EcGkDHC4H7+15j8Vpi8muzK7X5RXkE8SU+CncPuh2Qn1D691vXvYbBc89h6tAXQgp+fgQdOWVGIcNZXt+NPs2FCNJcO1TowkMN3qt3opDIffxdTXfy/56Iu4ZUifIbPj+azb88DUeRc1ibAwMYuJ1N9N3Qsvuf7523Xiqq/Pw8Yli/Lh1dc7t2bOHhQsX4nSqf7ghISHccsstYqGl0PaY8+DgEkhfrS7kNOfU31rgeBq9Oo4T3lvNBD3yNjWFTQsQwaUVHSo7xNwtc9mcv7nOjC6AaL9oJsZO5Pp+1xPnf/JBvYwbb8S6YWPN9z49e9L188/QBgUB8OGDa7BbnEQnBjLjwWFefw3Fn+zDfrC0Zg2ZJsiHyIeH1/nkbykv5cfnnqQoI7W2nn4mhk27hFEzrmyRVsKxacmybODsSfvqnXc6ncyfP58jR9SsuTqdjhtuuIGYmI49XVToAJx2SP0TjqyAnG1Qmga2Mk64CZKsg5uWQaz33wv+SgSXFqYoCl8nf82n+z8lryqv5riERK/gXlzc42IuT7oco/b0LYyCF16k9JNPANBGRBD52KMEnHdezfmtS9LZtEB9Q7/orkF07Ve/1eMNiqJgWZ2DeWk6AD49gwi/uf703uT1q1nz1SeYi2oXd2q0OvqMn8jEv92Kwei9VtVfVVWlsnGT+m/Ts+fjdI078QD+mjVrWLFiBQCSJDFhwgQmTZokusmE9id/r9rKydwARQfVVo7eDx5OA23zz44UwaUFOFwOvj/8PT+n/MyhskN1WilGrZELEy7k3mH3EqBveHO16O23KX79DQAM/frR/Yfv65zPT63gh/9tAyAoysi1T472wis5tZKvk7HtUheP+Z8dR+AF8Se8LvdwMis/eoeC1NoFjZIkEdd/EJNvvoPg6OZpLRzrGgPomfgYXbvecMLr0tLS+OKLL3C71Z+TTqdjwoQJjB8/XgQZof0qSQVbSYtlChDBpZkUW4uZf3A+S9OXkmnOrDeO0j2wO3cMuoOp3Ru3mt26axc5d99TM76iCQkhceUKZEPttGKbxcHn/9mAs9qNRidzw4vjMBh1TX9RDZD/6jZcBWofcMg1vTEODD/ptebiIlZ8+H+k7dxWMyYDEBobx8Trbvb6IkyHo5QNG8/D5SoH1FX7CQn3nPBai8XCF198QX5+fs0xPz8/7rnnHrEmRhAaQAQXL9lVuIvFaYvZkr+FrMqsEy5qjDXFcn6387mh/w0EG4IbVb7icJB9551UrV5Tc0wXF0f8D9+jDaht8SiKwuePbsRSqj7/kvuGEJvUuGc1heJwkffcZjx2N0gQcfcQ9NGmU97jsNtZ/eXH7PtzOS5H7ew4Y0AgIy65nKHTLvFai8HhNLNx4zk4neqWzf7+Axk65HO02hPXMT8/n59//rkmyMTGxjJnzhyv1EUQOjIRXM6A1WXl9/TfWZm5kn0l+yi0FaJ4lHrXaSQNCYEJXNTjIq7sfWWDxlFOxLZvP5l/+xuKxQKA7OdH1DNPEzi1fqvntw/2cnirOqYxdmYPhpzX7Yye2RSuEhv5r2wDtwdJJxP5zxH1pimfiKIo7Fj6C5sXfIe1vLzmuFavZ+iFl3otMabLVcnWbVdSVXUQAFn2ZeDAdwkNGXfSe5YuXcrGjerEiYCAAKZNm0bv3r2bXBdB6KhEcDmJcns52wu2s7dkL0fKj5BVmUWxrZhKZyWuE6VuAAwaA90CujE8cjjTEqYxMHxgk+tR9OabFL/1fzVrVwIvu4yoZ5854ZvsgXW5rPw8GYBu/UOZfuegJj//TNkPl1H84V5AnaIc9c8RyA3MuAyQtnM7qz7/gJLszJpjeqORSdffwoCzzzvFnQ13OOVFMjPf59ismpiY2fRO+u9Jr//ggw/Izq7NehsYGMjUqVNFkBGEE+gUwUVRFNbkrGFJ+hL2FO2hrLoMp9uJRtKgkTVoJA1aWYtG0mBxWrA6rSjUb4n8VYghhKTgJCbETmBa92knXIPS1Hof7Ne/JrDEffgBpnEn/nS9Y3kG639Qp9EaA/T87YWxrT74XLk+l4qFap00wT6EXt8PfbRfo8ooy8th8ZuvkJ9ysOaYf2gYU/5+H137Nz14VlTsYMfOG3G7KwHonfQcMTFXnvT6ffv2sXTpUiorK2uOBQYGMn36dHr27Nnk+ghCR9Ghgstn+z7j6+SvsblsVLurUTwKsiRT5aw6YS6uhjBoDAT6BBJhjKBbQDeSgpMYED6AQeGD0MrNm27BWVBIyqRJNcGlx7Kl6LvV7+ba/EsqWxalA6D31XD146MwBbeNLVePpYgBkIxaYh4fc0bl5B46wJI3X6G8oHb6dni3BC66759Nnl2mKA7WbziH6uo89PoIJozfcNp79u7dy9KlS7Ec7aoE6Nq1K1dffbVYfCkIdLDg8tjax/j5yM8nPe+v9ycxKJHEoETCfMOodlVjc9lqglG1u5oovyj6hvZlcPhg4vzjWvzTv6IomBctonjemzgza7uEkCQSlizGJz6+zvWHtxXw2/vqokC/ID1XPT6qxWaGNVTR+7upPlIBWpnYZ04+rtEQyetXs+LDt7FbalsO8YOHMe2uB/A1nfnK48LC5ezZezsA/fu/SWREw2bx7dmzhyVLlmC1qjPkZFlm8uTJjB079jR3CkLH1qGCy8qMlXx3+DuCfIIINgSjk3XYnDaSQpKYGj8Vo775Ful5Q/4zz1A2/xtwHTemI8v4JPWiy9y5GHrU3e/B4XDxwb2r8Sig89Fw/fNj21xgAahcl0PFL6mgkYh9drxXytz007ds+GE+bmft7DKDyZ/IHj1JGj2ePuMnoW3klOHVa4bXzCILD59C/36vIzegdaooCsuXL2fjxo0c+3MKCQnh2muvJTS0eRauCkJb16GCS3uXPHQYnqOfgLXR0YT/4+8EXX75Sa9f9v5eUrYVggTXPTOGgNC22R1TtTWfsu/VDbu0Yb4EXZaIoUdQk8tVXC5WfPwOe1b+VmedzDG+AYFEJfZiyAUXNmjNTHHxKnbvuR2PRw1YJlM/Ro1c2OD6lJeX8+WXX1JUVLsL4dChQ5k+fXqrj38JQksTwaUNOTR+Au7iYoxjx9Ltow9Pep3D6mL3quya1C6JwyK44Jb+LVXNRlOsLvJf3oJSVdsii7jn9OtfGly+onBk60YOrF1F7sH9VJWX1bsmKrEXM/715Gm7zhTFxZ69/6C4+HcAxo1dj8EQ2aj6bN26lSVLltSs8A8ICODWW2/FZPLO6xWE9kAElzYkdcZMqvfvP2E6l7TdxexemUlRpoVqa+2btKyRuPnVCV5Lo9+cLBtyKV+gzh7Tdw8g4rbmmSrtcjk4vHEDyetXkZO8n+qqo+uDNBrOuvZGhl146SnvVxSFP1f1xeNxEhV1Gf36zm10HRwOB998801NIkytVsu1115L9+7dG12WILRHIri0Idn33EvlsmVoI8LpuXp1zfGKIitfPLax7sUSmIJ8mHhNEvEDWm/PhsYqW3iEqvXqVshdHh+DbGz+oLhm/mds+fm7mvGQ4C6xzHriuVNuXrZz502UlK5Co/Fj0sTdZ/zszZs3s2TJkppnh4WFcf7559OrV68zLlMQ2gMRXNqQojffpPjNt5B8fEhc9SfusjLcZWX8NL+McrMEQKx/OXH6PAL2ryBgwgQi7r+vlWvdOIrDRe4TG8ADmjADkXcOQTY0f4AxFxfxw3OPU5qjbgzmFxTMrW9/etKxkMrKZDZvuRCAAf3/j4iIC8742dnZ2Xz++edUV1fXHDMajYwbN44xY8aI8RihQxLBpQ2p/ONPsu+4o84xBZk/J74BkkRs1kp6Hfmhznnj2LHEffB+u3qDKvnyALY9xeo3Gomgi3tgGhXdIs/e9NO3rJ3/GQAJw0Zy2cOPn/TaNWvH4HAUotOFcNaELU16rqIobNmyhTVr1tRZGxMTE8Mtt9zSpLIFoS1qP+9InYDfyBHwl73tD/W8AiQJPB4Sshcj+foiGXxqzlvXr+fI5PNwHTdDqa0LvjoJv7Fd1G/cHsp/SiH/5a1UZ1Q0+7NHXTaLpLFnAZC6bTPzn3yEkpzsE17bp/cLADidpaSmzWvSc2VZZtSoUTz44INcd911NYP7ubm5TSpXENoq0XJpYxSrler0DLShoZir9XzzwnY8CsT1DeHiuwfXXqco5Nx1N5ZjG1vpdcTMm4f/xImtVPPGcxZZKf5kH+6S2gzSsr8e0/gumCbENFtrTFEUPrn/DsrycmqOhcZ2ZeJ1c+g+eGidazdvvoRKy150umDOmrDVa3X4/vvv2bt3LxqNhscee8xr5QpCWyFaLm2MbDTi0zuJtctLmP+cGlgkCc6/qW/d62SZuLfeJPLxx0CW8TicZN92OwUvvNhKNW88XbiR6IdGEHhRApKvBgCl0oF5STp5T27AkWs5TQlnRpZlbnjlbYZMmV6z0LIkO5Mfn3+crx9/uM61iYn/BMDpLKOiYofX6pB5NPuC2+1GOcEaHUFo70TLpY3J3F/Cbx/sq5lurNFKnHtjX3oOO/laC3tyMhnXXY9yNJmioV8/un3+GXIzbhvcHGz7iqn4LaNmszFJLxP9yAhkY/NtzqUoCjuWLGTVFx/hURRkjZb7vvq5zjWrVg/G5apEo/Fn2NCv8Pfve+LCGuG1116j/LhtBZKSkpg1axYajabJZQtCWyCCSxtRlGlm+Uf7Kcu31hyL6xvMlNsHNGgNi2K3k3Hd9dj37AFANpno+tln+Pbt02x1bi62g6WUfKzmS9ME+xB531DkZl7Hk3NwP/OPtlru+fJHtMftMZ6R8T4pR16o+T4i4kL69H4BbSP357Hb7SxevJiysjIsFgtlZfUXe2o0GmbOnEnfvk0PYILQmkRwaWUVRVaWf7SfgjRzzTFfk47JN/Wla9/G56UqeOklSj/8SP1Glol+6r+nTCHTVplXZ2NenKZ+I4FPYhBBF/dAF948rTGXy8Hr184A4OqnX6JLr7pBubBwKfv2P4ii2NQqSRpCQ8+hX99XGhRkysrKeOedd+pMRz4VSZK45pprRBp/od0SwaUV1eQGO0rno2H0pQkMPDuuSeVWrllDzj/+gcfhBCBw5ky6PPtMk8psDWULUqjamMfxuyX4JAYRPmdAszzvtdmX4XY6ie7Vm2uerr8qX1Ec7N59OyWlq2qO6fWRTBi//pTlpqen8/nnn9ekg4mIiECv16PVahk4cCCDBw9m586d/PLLLxz/55iYmMjs2bO99OoEoWWJ4NJKLGV2Pv2X+qak0UoMPr8bI6fHe22GlLOgkLSZM3EXq+tJIv/zb0Kuu84rZbckxe6ifFEa1p2F4FQHvmNfmNAsz1r95cdsWaiuI5p65wP0nXB2zbnCot9JS3sNi+VAnXvCws5n0MC3T1rm9u3bWbhQTX4pSRKXX345/fr1O+n1brebZcuWUVlZyfTp0/Hza9zmaoLQVrT9hFQdlDFQj6yRUNwekkZHMfriBK+Wr4uMgONmIekTvFt+S5ENWkJm9sS3Xygln6jjMMWf7iPkyiSvr+w/69obObB2FZbSYpa/N4/4IQPIzJlHfv7PuN21M9ckSUNw8DgSEx/B35R00vJ+//131q5dC6i5xW688UZiYk69sZlGo2HatGneeUGC0IpEy6UV/fTKdnIPlWMw6bh5rvc/jR8YMBCcTgIvvZQuLzzv9fJbkmJ3kffsJjxHWy+6Ln5E3j30NHc1XlFmOj++egPRo4owhtuRpNpzen04sTHXERs7h6oqG2azGYvFgsVioaqqCqvVis1mw263YzabKSxUuzyNRiO33347AQFnvpmZILQ3ouXSioZd0I3cQ+XYLU5K86oIaeT+8qeji4rCmZWFIzvLq+W2BtmgJfLeoeS/pC5klP28vymazZbDgYzLSbzo+FlcMnp9PyrKJ3MwWWb1qjKczoYH6rCwMG677TZ0ura3iZsgNCcRXFpR136haHUyLqfC1kVpnD/Hu3uy+A4YoAaXI6leLbe1lHyVXPO1/9ldvV5+WtqHOJ1leDzgcvpQUNiHtNQ+qH8mxSe9T5ZlNBoNGo0GrVaLTqdDr9fTrVs3pkyZ0q7yvgmCt4jg0spikoLJ2FtC+t4Sr5ftO2I45sWLcVc0f86uluAur53GW/zebjWr8r3DkLVNe/PesmULv/32G93i1xEdDU6nD5s2zqpzjV6vJyQkhK5du5KUlESXLl3w9W2bO38KQlsggksrGz4tnoy9JTjtbvJTK4hKCPRa2aazz6bgv0+BopB2+RVEPvYoxkHNs0FXSwi5tg8Vi1NxFljBqeAutmPdXoBpZNMyKq9YsQKn04lGc2wTNg3R0dFERkbSt29fevToIVbOC0IjiQH9NuC9e1fhtLuJHxjKhX/37pt/ypQpONMzar7XRoQT/fzzmMaN8+pzWlr5YrWrL2jamc+CKy8v58cff6zJ8zVm7A602r0YDDGMG7v6NHcLgnAqojO4DejWT12Jn51cPx1IUyUsXEjIDTcg+/sD4CosIu8/j3r9OS0taFrCGQcWq9XKl19+yWuvvVYTWPR6PaEhahp8WWq+XGaC0FmI4NIGDJ8WD4DLoZBzyLsBRtbriXzknyRt2Yz+6P7tmkDvdb21J4qisGDBAl566SUOHz4MqOtKxo4dyyOPPIIHdUxH1oixFEFoKjHm0gaExpjwMWqptrr4+ZUdSBLIGgmNTkar06AzaND7ajH4aTH46TEG6DEG6onpFUxkfMPXTng86hoR93HZeDsLm83G+++/T2lpKaCulh80aBAXXnhhzTRht1tNGqrRtK9s0oLQFong0kb0mxDD9mXq2IjHA26XB7fLjcPmBvPJ79NoJUK6+JEwJIL+E7pgMJ28Syf0xhvJf+JJXAUFVG3dht/wYd5+GW1SXl4eH330EU6nmmstISGBWbNmYTAY6lx3LLhoNSLliiA0lRjQb0OsZgflhVYspXYsZdVUVVRjq3RisziornLhsLtw2N24HG7cTgXFXf9HZ/DTEdUjkL7jouk2ILTeGouDo0ajVFSg796dHksWt9RLa1V/3TsF1O4wvV6Pn58fAQEBBAcH42d6Co+nlNDQ8xk86OT5wgRBOD0RXNqxiiIru//IJmNvCeYiG3/9SUqyREyvQEZd3KNminPxu+9R9OqrAPRJPvDXIjuklStXsmHDBlwuF6f6dR82fAFGo5nyskj27r0AHx8fLrroolMmmhQE4cREt1g7FhhuZMKsXkyYpQ5Wp+0q5sD6PPJTK6iucuFRPGQnl5OdvA0fPy09R0QStz8FAKmd7VLZFOeccw4JCQksXLgQu92O3W4/4dbCiltdy6LT2/F4PNjtdnbu3CmCiyCcARFcOghZlukxJIIeQyIAtYtt08IjpGwrwmFzUV3lYu+fOez1XIDf8IEk+mXhcrjQNvMOj23Fd999R1VV1UnOKvTpuxo/kzpTz+2qzQNWUVGBzWYTq/EFoZFEt1gnkH2wjM2/pJKfUo4Hqc45nY8G/1ADEfH+dOsXRvyAkA4ZcLZs2cKiRYvqHZdlB0OGLsZorATAavVnx/ZpKErdiREhISHMmTMHYydq8QlCU4jg0knY9h8gdeYVZMWeTU63c7BrT77WRauX0Wjlo2M4nmP/Aw9IMgSE+RLTK5ik0VGEx/m30CtoOkVR2LdvH3a7HVmWcbp2U1U1F7ADoNePJMD/ETQaDUVFRWzbto2qqqqacZqAgADuv//+VnwFgtB+iODSSaRdeSX2XbuR9HoSV69CNgWQlVxK+p4SCtIqqCiyqdOeG0mSJUzBPkR1D6Bb/1BMIQaMgXp8/fXoDZo2lRG4wryH3NxvKStbj82WBdS+3oSEB+kef0e9e9xuN4sWLWL79u0ABAYGcvPNN4u9WQThNERw6SSOTL8IR0oKPklJJCz4+YTXKC6F7INlZO4vxe1WkCUJSVa70SQZZFnCXuUk/4iZimIbbmf9QfG/ShwWwQW3eHcrgYZwuexUWQ9TULCQ0tLVWK0ZeDzOetdptQH07/cGoaGn3qztiy++ICVFnQxhNBq5//770Wo7XvehIHiLCC6dRM79D2BerK5rCZg+nZi5LzW5TEuZneSN+WTuL6E0p4pqm+to/1ld0YmBXHr/EK+3YqqriygoXExp6RosloO4XBUoigOPx8UJKwLIsi8mv16EhZ1Lly6z8PEJb/DzNm/ezOKj/4axsbHMmTPHGy9DEDokEVw6CZfZzOHRY0BR0AQH02vD+uZ7lkvBXung90/2k3OwHIDgKCOzHh2J9gz3XnG5rBQVL6ek5E/M5t3Y7bl4PI7T3idJevz8ehAaejYxXa7C1/fUe9ifzqJFi9iyZQsA06dPZ/jw4U0qTxA6KtGu7yQyrr4Gjq7tiHryyWZ9llYrYwo2cOl9Q/ntw30c3lJAWb6VLx5dz1WPj8JgPPWWv4riorR0HUXFv2M2b8dmy6xJzVKfjF4fhskvCT9TLww+XTAYYjAau2EwdEWrNZzkvjNzLIUMIKYnC8IpiODSCbhKSnAcOQJAyI03EnDB+S327PNv7odfoJ6dv2eAcSNLvvmQ6N7lyBoFdVa0BEhISCgeF3Z7Fi7XyZOpabVB+Bl7EBQ8gojwqQQEtOx4zpGj/46JiYlicaUgnIIILp2ANjQUtFpwuZB8vftJ/nTs9jwC+7xF7+DfQFJT2lfZGnavRuOHr29XAgOHEh52HsHB41p99tl9993HihUrmDhxYqvWQxDaOjHm0kkcmXYhjtRUfPr0IeGnH5v1WS6XnYKCBWRkvofNll7nnNvhi9MajMetR9ZAYLgvOh8NHjxISPj5JRIWdg6hoed6vUtLEISWI1ounYRxzBgcqak40tO9Wm6a1c5rm7fw24YyepgyGR64iX5h+wgxVNRcI0k6QkMn0TPxn2jlOJa8s6fOrpvGAD0B4QYiugbQ94KumIJEUBGE9k60XDqJ0q++ouCppwHovuhXDD16nFE5uyutvJZewB6LjbxqBy4PaA5WoEu31LlOxo2vzkG4SU9Sly4MiQvm8uExhJnUwJG5r4RlH+zDYXPVe0bvMVGcfV3vVu8CEwThzIng0km4LBZ1KrLLhRwYSM81q5H1DdsrvsTh4sW0PBYVlVPirL+KX86tQptmQVvtxOOkXv6yYww6meSnp9Z8rygKe1flknOojNK8KsxFtpo9avS+Wi64pR9d+4aewasVBKG1ieDSiZiXLyfnrrsBMI4ZTbePP27QfT1X76bSXbsa36SRGeJvZHyIiYvDg+hurNuNlVFSxapDRSTnmTlUYGFHZhluDxi0MsnPTP1r8TVcDhdL399Hxp6SmmMxSUFMvqEvpmDRVSYI7YkILp2IoigcHjMWpaIC2Wgkafu2095zwGLj7C0HARgd6Mc93SI5O7TxebXsDhe7cyoY2f30LZGcQ2UsfXcP9qraLrOIeH/OuiqJyHiR00sQ2gMRXDqRzDm3ULV2LQCR//k3Idddd9Jr7W6FV9LzeSerCIfHg0GWSJ84qKWqiqIorPn2MPvX5NbZzjkgzMCYyxJJHBbRYnURBKHxRHDpJIrefJPiN98CIODCC4l5ee4Jr9taUcXTR3LZUlHF8Wkpp4QF8MmAhBaoaV2KS2HLknR2r8yqk7VZ1kj0HB7J8GnxBEWKPVYEoa0RwaWTSB40GE91NUgSfQ7sr3d+f6WVG/amk2mvzdclAQP9fXkgPorzw06+/0tLObAhj80LU7GUVdc5rtXJRPUI5Lyb+mEMaNgkBUEQmpcILp1E2pVXYd+1C4DIJ58k5Kora859nF3Efw7n1LRUArUarogM5uGEKALaYFr5w9sK2L40g7K8Ktyu2l9fSYK+E7pw1qxeyGeYIFMQBO8QwaWTUBwOUs45F3dxMUgSMa+9hum8yfzjQCY/FZYDoJck5ibFMSs6pHUr2whF2ZXsXpnFwY0FeBT1V1nno2HCrJ70GdellWsnCJ2XCC6diKukhJRzJ+O229k0cBjz7nqYPJfaXonx0bF0eC/C9afOWNxW2a1OfvtgL1n7a1f+B4QZOH9OfzHDTBBagQgunUCyxcaPBWXsrrSxz2yh2OnGc9zq97ND/PlyQPcOsSK+KKuSZe/tpaKoNjtmaIyJcZcnEten/bTIBKG9E8GlA1IUhUXFFXyeW8I2s5Uq9wm2I/Z4CKo0c9uiH7jjn/eccTqYturAhjzWzD+Es7p2hpmvScfAc2IZen43MSYjCM1MBJcOwKUorCytZElRBdvMVRyxVeP+y0/VR5II02vpa/Ll/NAARr4xF2XBAvVcr14kLFzQCjVvXoqisOO3LHatyMRWWbvJl6yR6D4ojPFX9BQr/wWhmYjg0s5YXQqrysysKbOws9JKqrWaclf9fF8A4TotZ4WYuDU2nEEBfvXOVyxZQtHLrxD//Xdog4KaueatK3N/CRt+PEJxdt0Em1q9jF+QD4ERvoTFmIhKCCS6Z9Bpd8sUBOHURHBpYxyKQrrNQZqtmiy7gxy7g1RbNckWOwUOJ3bl5D8uf41MgtGHicH+3BYXQai+7U0jbm2Wcjtrvz1M2q7iOiv//0qSwddfT2xSMAlDwuk+IEx0pQlCI4jg0soeSM5kWbGZCpcbl8dDQ38YJo1MFx8dA/2NnBvqz9SwIAwa8ebXGDmHykjbVUxhhpnKEjt2ixOX8wTjU0f5+GkJ6eJHwqBwBp4T2yEmQAhCcxHBpZVN3HSAg9bqesclQCtJ+MgSJo1MD6OBYQFGzg7xZ0SgH1rxxtYsFEWhLM9KzqFyUrYVUJJbhcNaf88ZrV7m0vuHEBnf+pkLBKEtEsGllX2cXcSqskpGB5roatDT3ehDd18f0QppQ1wOF6m7SkjfVUR+mtrKAejaL4SL7hrcupUThDZKBBdBaKQti9I4sC6PcZcn0mOoyM4sCCcigosgCILgdaLvRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfA6EVwEQRAErxPBRRAEQfC6/wfjRIDZCdDsZgAAAABJRU5ErkJggg==", + "image/png": "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\n", "text/plain": [ "
" ] @@ -538,8 +684,8 @@ "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n", "# define colorwheel with 10 colors\n", "colors = plt.cm.tab10.colors\n", - "for i in range(cell.shape[1]):\n", - " cell.branch(i).vis(ax=ax, col=colors[i % 10])\n", + "for i, branch in enumerate(cell.branches):\n", + " branch.vis(ax=ax, col=colors[i % 10])\n", "plt.axis(\"off\")\n", "plt.title(\"Branches\")\n", "plt.show()" @@ -551,17 +697,19 @@ "source": [ "While we only use two compartments to approximate each branch in this example, we can see the morphology is still plotted in great detail. This is because we always plot the full `.swc` reconstruction irrespective of the number of compartments used. The morphology lives seperately in the `cell.xyzr` attribute in a per branch fashion. \n", "\n", - "In addition to plotting the full morphology of the cell using points `vis(type=\"scatter\")` or lines `vis(type=\"line\")`, `Jaxley` also supports plotting a detailed morphological `vis(type=\"morph\")` or approximate compartmental reconstruction `vis(type=\"comp\")` that correctly considers the thickness of the neurite. These can either be projected onto 2D or also rendered in 3D. For details see the documentation of `vis`." + "In addition to plotting the full morphology of the cell using points `vis(type=\"scatter\")` or lines `vis(type=\"line\")`, `Jaxley` also supports plotting a detailed morphological `vis(type=\"morph\")` or approximate compartmental reconstruction `vis(type=\"comp\")` that correctly considers the thickness of the neurite. Note that `\"comp\"` plots the lengths of each compartment which is equal to the length of the traced neurite. While neurites can be zigzaggy, the compartments that approximate them are straight lines. This can lead to miss-aligment of the compartment ends. For details see the documentation of `vis`. \n", + "\n", + "The morphologies can either be projected onto 2D or also rendered in 3D. " ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/MAAAE3CAYAAADmGhEoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydd1wUx/vHP3dHR1ApIhoBa8RusMbea+wFsEdN7LFHjTUxtpioscceDSpq7CV2Y4+9dwUsCFZQOnfP7w9+O9/du73j7rijyLxfr3lxtzc7O7vs7M4zT1MQEYHD4XA4HA6Hw+FwOBxOjkGZ1R3gcDgcDofD4XA4HA6HYxpcmOdwOBwOh8PhcDgcDieHwYV5DofD4XA4HA6Hw+FwchhcmOdwOBwOh8PhcDgcDieHwYV5DofD4XA4HA6Hw+FwchhcmOdwOBwOh8PhcDgcDieHwYV5DofD4XA4HA6Hw+FwchhcmOdwOBwOh8PhcDgcDieHwYV5DofD4XA4HA6Hw+FwchhcmOdwOBwOxwIoFApMnTo1q7uRYdavX4/SpUvD1tYW+fLls0ibn8q14XA4HA4nO8GFeQ6Hw+FYhEePHuHbb79FsWLF4ODgAFdXV9SqVQsLFixAQkJCVnePYwR3795F7969Ubx4caxYsQJ//PFHlvbn9u3bmDp1KsLCwoyqv2/fPr5owOFwOJxcg01Wd4DD4XA4OZ+9e/eic+fOsLe3R8+ePVGuXDkkJyfj1KlTGDNmDG7dupXlgqG1SUhIgI1Nzn6tHj9+HBqNBgsWLECJEiWyuju4ffs2pk2bhvr168PPzy/d+vv27cPixYu5QM/hcDicXEHOnnVwOBwOJ8t58uQJAgMD4evri6NHj8Lb25v9NnjwYDx8+BB79+7Nwh5aD41Gg+TkZDg4OMDBwSGru5NhoqOjAcBi5vUcDofD4XCsBzez53A4HE6GmDNnDj5+/IhVq1ZJBHmBEiVK4LvvvmPfU1NT8dNPP6F48eKwt7eHn58fJkyYgKSkJMl+fn5+aN26NY4fP44qVarA0dER5cuXx/HjxwEAf//9N8qXLw8HBwcEBATgypUrkv179+6NPHny4PHjx2jWrBmcnZ1RqFAh/PjjjyAiSd25c+fiyy+/hLu7OxwdHREQEICtW7fqnItCocCQIUPw119/oWzZsrC3t8eBAwfYb2KN8IcPHzB8+HD4+fnB3t4eBQoUQJMmTXD58mVJm1u2bEFAQAAcHR3h4eGB7t274/nz57Ln8vz5c7Rr1w558uSBp6cnRo8eDbVarec/I2XJkiWsz4UKFcLgwYPx/v17yfWeMmUKAMDT0zNdP3dTrq8cV65cQYsWLeDq6oo8efKgUaNGOHfuHPt97dq16Ny5MwCgQYMGUCgUUCgU7P8v15/FixcDAKurUChARPDz80Pbtm119klMTETevHnx7bffAkizTFAoFNi8eTMmTJiAggULwtnZGW3atMHTp0919j9//jyaN2+OvHnzwsnJCfXq1cPp06cldYy9DzgcDofDMRUuzHM4HA4nQ+zevRvFihXDl19+aVT9fv36YfLkyfjiiy8wb9481KtXDzNnzkRgYKBO3YcPHyI4OBhfffUVZs6ciXfv3uGrr77CX3/9hREjRqB79+6YNm0aHj16hC5dukCj0Uj2V6vVaN68Oby8vDBnzhwEBARgypQpTGgVWLBgASpXrowff/wRM2bMgI2NDTp37ixrUXD06FGMGDECXbt2xYIFC/Safw8YMABLly5Fx44dsWTJEowePRqOjo64c+cOq7N27Vp06dIFKpUKM2fORP/+/fH333+jdu3aEkFbOJdmzZrB3d0dc+fORb169fDrr78a5b4wdepUDB48GIUKFcKvv/6Kjh07Yvny5WjatClSUlIAAPPnz0f79u0BAEuXLsX69evRoUMHg+0ae321uXXrFurUqYNr165h7NixmDRpEp48eYL69evj/PnzAIC6deti2LBhAIAJEyZg/fr1WL9+Pfz9/WXb/Pbbb9GkSRMAYHXXr18PhUKB7t27Y//+/Xj79q1kn927dyM2Nhbdu3eXbP/555+xd+9efP/99xg2bBgOHTqExo0bS2I/HD16FHXr1kVsbCymTJmCGTNm4P3792jYsCH+++8/Vs+Y+4DD4XA4HLMgDofD4XDMJCYmhgBQ27Ztjap/9epVAkD9+vWTbB89ejQBoKNHj7Jtvr6+BIDOnDnDtv3zzz8EgBwdHSk8PJxtX758OQGgY8eOsW29evUiADR06FC2TaPRUKtWrcjOzo5evXrFtsfHx0v6k5ycTOXKlaOGDRtKtgMgpVJJt27d0jk3ADRlyhT2PW/evDR48GC91yI5OZkKFChA5cqVo4SEBLZ9z549BIAmT56scy4//vijpI3K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a3757rvv1Nr++uuv2Xlt2ZeMDbdCb29vr7Y6j1gSAJsfBV9V795++22MiYnRaftpdHQ0zp8/H729vUXbc3BwwPr167PV+Pbt22Pnzp0xICAAvb29TRb531SQMW8ANCgJ6dKlC1MgX19f9kIrBj+VBn8G7eeff9ZYZ9iwYey6ffv2SdEFNVasWMHuqak/CoUCL1++jIMGDcL69etjjx49RAeo8ePHG7S6Vl7305NBYHry8vIEbntiE2f//POPxheK/fv3C679/fff2blLly4hAGCPHj0k7wc/RseZM2cMaiMlJQXfeustQf8mTpyIWVlZRpbW9iDdNS1iBrqm1WIxveVWuEpbmddmWBsbXTwCNHkhqBrnuq6c67Myr3q9rUDGvGnhv//KZDKcPn266DtfZGSk6EQdAGjM4a66im+q9+ZevXqxe4otgiGWeLYOGTIEa9eujS4uLujp6anmOSOXy7FXr164fft2je3wycvLw1u3buH+/ftx7dq1Ao+G8gIZ8wZAg5IQTgG5fT3a4A9gb775Jvucnp6usU5gYCAbxEyR8goR8bPPPmOydejQAV++fKlz3cTERK2pRBo1aoSrV6+WUHrrhgwC0/Lo0SPB8ym255y/2s6VHTt2sM///POPWh3VHLgXL140RXfw8OHD7J6JiYkGt/Pq1SvRfPWnTp0yorS2Bemu6dBlnzkfsd8imUym9R78SPKmCojHn5wobQJBbMVddXKD34at7nc3BmTMm45z587pbGir/j5z781yuRyzs7NF66Smpgq8c0xl3AYEBDA5PT09db5veno6jhs3ThAIW9W4d3d3xxEjRpTbRa7SIGPeAGhQ+pe//vqLKa4mioqKMCQkRKCoixcvFuxNr1ixIt64cUOtLrdnHgCwqKhIyq6oceXKFcGAUlqkbDGioqKwY8eOogNUr169RF2RyjtkEJiOXbt2sedx1KhRonvN79y5I3huZ8yYgUVFRbh27VoE0Lz37Pbt26zOpk2bpO6KAP6WldLc5EsjNzcX582bp6a/5XH2vzRId02HrkavpkjwfCNdU319DGtjwTfQuaj7+txbzG2eQ8xtniiBjHnT0bp1awQoCWKnifj4eLVc7X379hVkb2nWrJlo3W7durHn3JD3VkPJzMxk9zZUz1JTU3HSpEno7u4uujfe19cXL1y4QEa9CmTMGwANSv/CBWmL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ZMwbl6KiIkGa5hYtWmBGRobB7S1ZsoStylsjqampAq9eBwcHDA4ONmhiw1h06tRJMKYuXrzYbLKUFTLmDaC8DUqIJS+dq1atwjt37pS5Lb7hmZubawTpzMPNmzexbt26ghckBwcH3L59u2hubqkpKirCAQMGIACgv7+/ye9vLMggMB779u1jz+amTZvK3N7//vc/BAAMDAy02v3ehYWFuGHDBtGVzu3bt5tlguLFixdqY8mDBw9MLkdZId01PsY0FvkrydZsfHLfiUwmM7tRLxb53hq8HFQhY974jB492mhG4sSJExGgJDK8taJQKHDIkCFqv7sVK1bELl26YGhoqMmDw27duhWdnJys2lsYkYx5gyiPg5Ix4dxtfHx8zC2KUUhLS2N7cFXLp59+iq9fvzapPOfPn8dTp06Z9J7GhAwC43Hjxg0cN26c0XK/cwbnL7/8YpT2zE1OTg727t1bTW+dnJzw6NGjJvcc4nstcUaBKYP0lRXSXeNjzJzvtuIWrimFnrmNab7uWhtkzBsfhUJh0FZUMWrWrMlcwq2d1NRUHDduHLq5uan99spkMmzevDlu3rzZZN6umZmZ6OLigq1bt7Zad3sy5g2gPA5KxmTdunVMcb///ntzi2NU0tPTccyYMWrBilq2bGmWPJvWCBkElsPFixfRyckJx48fj69evWLP89OnT80tmtFQKpX45ptvIkBJQDzVlwtfX1+8dOmSSQ17fsq/6tWrW812JNJdy8ba3exVUZ3oUO2fqVftzT2ZUBbImLds+NuxoqKizC2O0YiLi8Px48djzZo11YJzenp64sWLF00ihzVuGeRjbP2SA0Fo4fXr1/Dw4UP2//3795tRGuNTtWpV2L59OyQkJEBBQQEsXboUHB0dISYmBipWrAjfffeduUUkCJ1p0qQJFBQUwJYtW6Bv374AAFCxYkWoWbOmmSUzHjKZDE6ePAkAADk5OfDJJ5/A06dP4Z133gEAgMTEROjYsSPI5XJo164d3LlzR3KZgoKCABHht99+g82bN4NMJpP8noTt4+vryz7v3bvXjJIYh7CwMCguLoawsDAA+Ld/vr6+sHfvXlAoFBAeHg729vYwYsQIyeVJSEgARISEhATJ70WUH3bu3Am///47+//x48fNKI1xadKkCWzevBmePn0Kubm5sGzZMqhbty4AADx//hw6d+4MAwcO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", + "image/png": "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37ErV65UcWOPj4/HnTt3qni6VatWDY8fP662H47j8OXLl/jXX3+pZMDh9Y/WrVvjzp07MTExUb8bRqjF6sr81q1bNT5cQh49eoRNmjRBZ2dnLF68OC5atEilrf3792PFihXRyckJq1atiidOnNBrLNltUlImPDwcBw8erFEp5a3qnp6e+P333+PixYt1djMSutPzrj/CsnfvXrXnffnyha1KduvWTedrSUlJYftaixUrhtWqVUMA1Ty6TZo0YQH4mjRpIjqWO3du0R748PBwnDdvHtatWxdz586NefPmVXstwvOVt3YQxkMKgXYSExNFKRr5snTpUp1X6HmEcluhQgX2/3PmzFH7gXLp0iVcu3YtU+6F7vk///yzzv3y3jht27Zle+s0latXr6JMJhPJYqNGjXDs2LE4cOBArFmzptbztRV/f3+9gvMQ2iHZ/Q91rt/KLuVCi7Svry+LLK9vLndewfb29mZ9C59zTe7mhqSAEyrkQss6gHgvvlC5Frr/C9/R6sYl3OPOtyNcQOC/VVxdXUl5NyGkzKsSFhaGGzZswC5durAo8+pKrly5sHTp0vjjjz/inDlz8PDhw1nu7U5JSREFfvbx8RHJhqenJx44cEDtucnJySwItD554yMjI5lyXbduXaxfv77KN26uXLmwc+fOePPmTUxLS8NmzZqpXO/OnTtRLpdjSEgIbtq0CYcPH44NGzbEvHnzYtGiRVXkVVgKFSqEly5d0uefgdABqyvztkR2npTUER8fj7/99hsTVn7furqJSlP6pbS0NPT399couK1bt9bqcj5kyBDRR7s+BAUFsXELuXz5ssbI0wCZqbGmTp2KnTp1woIFC7IIn9pK7dq1sW3btjhjxgxcvHgx+93FxUWvMRNZQwqB7ly/fp1FswXITFvTsmVL9PT0xJIlS2L58uWxWrVq6Ovri40bN8bmzZtjixYtcM2aNaL4FsLy/PlznfufNm0aO085oKk2hB4Ar169wjNnzuD3339vsFKurtSpUweHDh2KgYGBePv2bfz06RMuXbqUHc+fPz8F0zExJLvqUWeZV1bslYtw73hWbfPn8FHaddk3LlSa9VGKhfvcJRKJSOnm9+lruiY+Ar6ywq9pz7u6e8S72/PXSpgGUua1o1Ao8Pnz57hr1y4cO3Ysfvfdd1oDpebJkwfv3LkjaiMlJQU5jsMHDx5g1apV1Z7n5eWFQ4YM0er6zgd8LV26tN4xmTZs2IAAgN9//z377fPnz/jnn39i3bp1NV5P9erVsW3bttiyZUusWrWqyNVeXXF0dMSGDRti586d8ZdffsHRo0ezQJzKMdAI4yFlXkBOmZSyQi6X47Zt23D48OHMDVYikaCPjw8uXLgQg4KCsFixYmxlUFjc3Nzw3bt3Orsd8RZ1JycnvVyVOI7DJ0+esH5btWolOh4eHq5xcUJTKVu2LM6fP59t8UhJSdHomSCXy9l5tMpoWkgh0J+UlBRcsmSJ1oU15aKcYaJfv356WfbT0tLYQlizZs201uU4Dv/66y9s1qwZli9fHt3d3VXSY+lTypUrh1u3bsWHDx9iXFycXnOH0JsAAFSyoBCGQ7KrO8pKrbJlXhjAjv+Nt3g5Ojqy84Qu/fpEaTfEKi8cu1DRVk4jp25rHz9uZaW9VKlSKnvelS3zQsU/ICAAJRIJWeZNDCnzhpGQkIDv3r3D06dP45w5c7Bfv34ssJubmxv6+/vjwoUL8aefftK4MCWVSvHgwYMYHh6u07ts+PDhCAA4adIk9ltGRgaGhYVhTEwMpqamitpRKBQYFRWF9+7dwxUrVrD+J0+ezM598+YN/vXXXxoX4tQVFxcXbNasGU6ZMgX37t2LT548wcuXL+O5c+fUbrl7/Pgxu17yiDMtpMwLyOmTkiZatmyps3Drm9KDnzjy5cuH9+7dw0mTJmlsW93igbDkzp1b5TcfHx/89ddfsV69emrPadCggU6p8NTRpUsX1s6LFy8MaoNQhRQC40hNTcXExESMi4vDT58+YXR0NEZGRmJYWBiL1qtcrl+/rnc/wnRw//vf/xAxU2n/9OkTXr58GWfMmIG1atUyWGHXpWzcuNGgPXcKhYLF+AAArFSpEsbHx+vdDiGGZNd0KLvKKxflj259c6Ur56Ln+9QUhE75N+EiAt8/b2XX5m3Aj12TZV4XjFmIINRDyrzp+Pr1q8YFLeVSsGBBvePe8N60w4cPx3Xr1mHXrl1VPEwdHR2xYMGCWKxYMbV56vni6emp8u3s6+uL9erVU5vrXSKRYL169XDdunWYlpam971p3bo1AgCWLFmSbYEljIeUeQE0KWkmNTUVz549i99++y26ubmpCHj9+vUNymlfvHhxtROMuklEuRQvXhxr1KihVonPmzcvBgQEiFyQBg0apFXx3717t15j5ziOBQQDAAqCZyJIITAfwuByAIA1a9Y0OABNgwYN2MtdV+W7cuXKOHbsWDx27Bi+e/cOX716hZMmTdLq2p+cnMzOr1KlCvbs2VOlXUOt6yEhIaJ2Tp48aVA7RCYku6YlICCAWeuFcsZbpoXPrr5Wav4dKwxCp05J1vabchFa2XmLvVCxl0ql7DpcXV3VBuXTBUO3CBCaIWXetMjlcrx27RquWrUKv//+e5XvZhcXF+zXr59BW72E6WCVFXhN716JRILFihVje+WV39vOzs5YvXp1nDx5Mgu4l5ycjN9++y2roxxvq2bNmnjs2DG9PONiYmLQx8cHAQCLFCmCN27c0Pv6CVVImRdAk1LWKAe22L17t1GRPLt3787aKl26NK5du1bj/c+qn/T09CzrKKfEmjJlimjPMQBojISvDplMJtrru3//fp3OIzRDCoF5ePv2reg5563phiDc4qJcSpQogSNGjMAjR47gu3fv9N7Tp47Y2FjWfrdu3ZDjOIyMjMQJEyZg8+bNcfDgwejo6Ijjxo3D2NhYjIuLw3LlyiEA4MOHD7W2LZfLRbE7vvvuO5Yrl9APkl3zIXz38gqyMQqxOkVcH8u8h4cHW2QQBu1Trs//LVygd3BwECkThlwDWedNCynz5iEtLU30jVmkSBHcsmWLUemLR48ezRbHWrRogXPmzMGbN2+iXC5HhUKB8fHxGB4ejk+fPsW7d+9ieHi4yha6pKQkTExMxDt37uCrV680prpNTEzETp06iWS1b9++Ik9ZHx8fXL58uc4LE5GRkVi9enUEyNxiu2XLFoPvBZEJKfMCaFLSzqNHj5jwtmvXziR5roXK/Js3b0wwyqzhOE6UoiMmJkbkciu0Ap47d06nNoV5r0eNGkV5Mo2AFALTo5yX/ebNm0a19+DBA1GqGl9fXxONVDPCgH3CvYKIiKtWrRJdX7FixdDPz4/93bRpU3z8+LFWubx7966oDUO2HuR0SHbNh/DZNEVqO94t19XV1SJp3Xi3fqFHgdBSz3sI6HptlI7OtJAybx727dvHnvfevXvrnL5VG3wAWWEQO3MTFhbGYvJUrlwZnzx5gpMmTRIFwsuVKxd26dIF79+/n2V7iYmJoq2qo0aNMsi7l8iElHkBNClpp3HjxggA6OfnZ7I2161bx4T5t99+M1m7WcFxnCgS6fr16xExMzp4/fr1RR9OXbp00RpZlOf27dvsHFPeo5wGKQSmIzY2VuQS6+vri7GxsSZpOzU1lbkO5s6dW+W4vmnydOH58+fsWtasWSM6lpycjAsWLGDHGzRogGfOnFFZpMufPz8ePnxYrcdAamoqtm/fntXVlMWDUA/JrnkICAgw+cKZtSzbQtd7YWR/XskXuuHro6yT671xkDJvHvjAd1Kp1GRt3rhxg7V59uxZk7WbFZ8+fWKL+AUKFMB9+/ZhQkICrl+/XhQjQCqVYufOnbF///6YmpqqsT2FQoFz5sxh5/GpNQn9IWVeAE1K2gkPD8elS5cadH84jsNjx47h8uXLcfLkydipUycsU6aMyof248ePzTBy9aSnp2Pv3r1Z37/++is7JpPJsF+/firjq1GjBj569Ehjmzdu3MA6deqwKKGE/pBCYBrkcrkoJoW+QXY0oVAosEWLFti9e3fRfthLly7hvXv3WIYKNzc3jI6ONkmfQu7cucP6PHjwoNo6ISEhrG+ZTIYjR45UkWW+bN68GdPT00XnX7lyBbds2aLzdhsiE5Jd8yCMHG8MQmt2YGAg22NrCc8adePg884HBASw33ilXuiWX6BAgSxd8YWLluR6rz+kzJuH169f47BhwwyK6xIcHIyLFi3CcePGYb9+/dDf3x9r167NcsXzi1+WfE89f/5ctGdfmH7v8ePH2KNHD9H7VSqVYuvWrfH48eMaPeMOHTqERYsWxUqVKlnqMrIdpMwLoEnJPERFRamkwdJUBg4cqHUlz9TIZDLmJtSoUSM8evSo6HhkZCT26tVLZZzFihXDoKAgi40zJ0EKgWngOA4XLFiA8+fP1/tlz3Ecfvz4Ea9fv46rVq3Cfv36YZUqVXSSYb78/vvvZvvIOHXqFOvn8uXLOp3z/v179PT01DrmxYsX0355IyDZNQ/qIs/rep5UKmVp3HiFl89hL3z2rYFw37zyHnuhNwJftC1mkGXeOEiZtx3S09NxyZIlOr9rR48ejR8+fLDY+FJTU1nftWvXVnGr//fff9W+a5s0aYIHDx7UuLeetqcaDinzAmhSMh1PnjzBCRMmiATZ09MTx48fj/3792cu+5qKpXJQxsXFqeSjVzfRXL9+Xet4W7dujStWrMCUlBSLjDs7QwqB9dHnQ0JYGjZsaHCqR33ZunUr61cfjx5l1/sWLVqovZaJEyfi27dv8f3792Sh1xGSXdtCqCzziq6rq6vabDHW2IMu3D+vzpqunN4rICBAtLBBCrzpIGXeuqSlpeG2bduwa9eumDdvXvbMlylTBv39/bFBgwYasz8BZKa4O336tEXGKpfLRQHwPDw81G5FXb16NaujHGm/TJky2LNnT5wzZw5evHgR3759i3FxcSYJmJsTIWVeAE1KpuHcuXMqE82PP/6I6enpKqkt+DJ06FD8+vWrKCDeH3/8YZHxchyHHz58YPkvv/nmG7X5M2/dusXG1qBBA/Ty8spSueHze3p6emK5cuVw0qRJuHjxYhw3bhzOnDkTnzx5Ypa9xfYMKQTW59WrV/jLL7/g6NGjcdq0aXjq1Cm8ceOG1ty5yl4tlmDu3Lms/9DQUJ3Pk8lkOG7cONH4b968qdciRpEiRbBt27Y4Y8YMPHjwIL58+TLHW/VJdq2LsgVfuA9dmOOd/y//gc3vT9ekVJsLoTKuKfCdsks+v0Dh4OAg8i7gU+Fl1TYFzlMPKfPWg+M40ZZP/ptxzJgx+ObNG9Hvwsj4v/32G545cwZr1qzJ5HzWrFkmCU6dFREREbhnzx7msdehQweMiYlRqff7778jQKa7/bfffouVKlXS+l6VSqXo4eGBBQsWxEKFCuH333+Po0ePxlGjRuHQoUNx3LhxuG7dOrx48aJOsaxyCqTMC6BJyXA4jsNDhw5h1apVmVDWq1dPpBRfu3aNHTt58iRb2StXrpzoI1i4GNCtWzeLXcOnT59EFotp06ap1Pnxxx/Z8W+++QaTkpIwIyMDd+3ahUOHDsWyZcvqrAyoK35+fqI9SDzR0dE4Y8YMpmANHDgQu3Tpgj/88AMOHTrU6OjktgQpBNZFLpfjnj17tOaPF0aw5RfBAABnzJhh8fEOHjyY9a9vzl5l1/tmzZphfHw8pqen45YtW4ySZb7kzp0bGzVqhKNHj8bNmzdjUFAQfvnyJVu6FJLsWgdeieefOYlEgohil3VXV1eUSCTo6+urVWk2RaR8QxAq5uq2EwivT9kyz7+3hQsRyoo+f1x5q0FWCr62dH3WulfmgJR5y6JQKPDWrVs4depUUfyo6tWr4+3bt5mFetGiRezYwIED2ZbVwYMHs7ZSU1Nx+PDhrN7MmTMtdh1Xrlxh8ufu7o737t0THec4DgcNGsTG5u/vj69fv8azZ8/iwoULsVevXliqVCmVFNG6llKlSmGXLl3w4MGDGB4ejqmpqchxHL548QI3btyII0eOxAEDBmCfPn2wR48e2LlzZ+zYsSMOGzYM586dixERERa7V+aElHkBNCnpT3BwMFatWlXFba9z584YFxcnqiu0ugvLkydPVNqdMWMGWxCwJF+/fmUrh7ly5VL7wf3ixQvRR8Lo0aPxyJEj+Ouvv+LmzZs1roq+ffsW16xZgwcPHsQDBw7gunXrsFu3bqIFEOWia6yB7BTwhxQCyyOTyURu6+pK7dq1MSgoCFesWCH6/ciRI7h37172d8OGDS3qKsdxHDZv3pz1b0j+XmXX+9WrVzPZz8jIwMOHD7NUXsLyxx9/4OnTp3HBggXYvXt3ltve0FK5cmXs06cPLlu2DC9evGh3Lv4ku5ZFWYnni6urq6ie0MWVf1drCnrHW/A9PDwscQmMwMBA0XtVGaHXgbIHgrqYAllZ5vnrFCr4vHVfqMCr81jgf+MXPC19r8wBKfOWIS0tDZctW6Zi+HFzc8N+/fqJvpsTEhKYd6ew5MqVS+17rmTJkggA2K9fPwteUeYeeX5s9evXV/lu5jgO161bx75n3dzccPTo0bh06VKcPHkyrlq1Cj99+oSpqan44cMHDA4OxqdPn2JQUBBu2rQJp02bhr/99hvOmTMHx48fj/7+/loNZ8pbZ7WVBw8eWPRemQtS5gXQpKQ7whRQAJn7Yb7//nt89uyZSt2goCC1H8IAgJ06dVLbfkREBKtz7do1c1+OiIyMDNb38OHD1dZJS0vDggULapwgevToge/evdOrX4VCgWPHjsXcuXOrtFemTBlcsGABXrx4Ee/evYvBwcH45s0bfPjwIe7Zswdv3bpliku3CUghsAzp6ekq+eeVS9WqVXHq1KkYGRmpkocdAHDhwoVs+8m0adNEx0yRT1dX5HI5+8B2c3NTiU6vC+pc7x8+fCiqw3EcXrlyBX18fBAAcMSIEVm2q1Ao8OPHj3jz5k0MDAzEoUOHYp06ddTuW9ZUqlevrvf1WAOSXfMiVDKFAeIkEgk6ODioWN2Fyqi6og6ha76lLc4BAQEokUhYwD5N8AsYfG56oWKuK8qR/dVZ74UKvTrLPH+vSJkn+c2KtLQ0kYUaADBv3rzYs2dP3Ldvn8r7cu3atRqV0j59+qjt488//2TK/uHDhy1xWYy3b9+y8Z04cUJtnUePHmHFihU1KuC9e/fGU6dOYVhYmE59xsXF4cWLFzEgIACLFi0qWrR0dnbGpk2b4tSpU3HRokW4fPlyXL16Na5btw7XrVuHM2fOxIEDB6oYHe0VUuYF0KSkGykpKSIhHDNmjFaXUU2KfNeuXbWe9+2337K6llRWhdsBsvpYj4qKwmnTpmGXLl1w1qxZagP7ubq64oEDB2h/j46QQmA+UlNT8Y8//lArj+PGjcPY2Fh8/vw5S7+4atUqBABRsBuhpeDjx4944cIFBAAcOXIkymQyLFasGDseHh5usWsTzkvVq1c32DtAk+u9JUhMTMSQkBDcu3cvTpo0Cf38/LBKlSq4dOlSi/RvLCS75kWoZAot8pqi3CsHnZJKpey8rCzz1lDolZVqTSjnpld2meeD/OkT/V9ZudfFfT477b8nZd68CL3XAAC7dOmi8b2SnJws2uZWqFAhJhcrV67U2EdiYiI7x8HBASMjI810Narcu3eP9T137lyN9ZKTk3H37t04btw47NOnD/7888/4zTffqHyPNGnSBFetWoUnT57Ely9f6hRbiuM4jI+Pxzdv3lg0K5YtQMq8AJqUdGPjxo0IkOlKnxUcx4mU+enTp7P/HzZsmEZlPj09ndWrX7++RQUzNDRUtH9n1KhRGBsbq/P5MpkMZ8+ejUWKFNFoESlSpAhev37djFdhv5BCYFpSUlJE++6EZerUqRrvWVxcnEr9K1eu4A8//IAAgK1atUJExNOnTyMA4IQJExAxU+YHDhzIztE1dZwpEI65Y8eORu1L1+Z6T6iHZNe8aHM1V4fw+RVasLVZkgMDA0VeI5bcwqXs7p4V6pRpZU8EdRb17KB8mxpS5s1Lnz59ECAzjZy2hWaO4/DZs2eiBbiTJ0+yv0+ePKnx3MuXL7N6bdq0URvI2Vw8efJEtC10ypQpennI3bt3D4cNG4YVKlRQG6/HwcEBq1evjmfPnjXjVdgvpMwLoEkpaxQKBROuI0eOaKwXFhbG9u/w5aeffkKO40SpoBo3bqz2fH5/fceOHc10JdrJyMjAsWPHsnE2bNjQ4HZWr16NP/74o8hiKVzQ+PTpk4lHb9+QQmA6lBVSAMDZs2djYmKixnPS09Nx4sSJonO2b9+OHMfhp0+f2G87duxARMRjx44hQGZkXSGbN29mdS2VMgcR8cOHD6zfX375xai2dHG9J/6DZNe86BJxns8tr/xBzO8h5xUEbQqttVK+CQPLGdo/b5lXtxhhjYj99gIp8+bjwYMHzLKubdvoixcvWGR6vixevBgR//smdnZ2Vuvxlp6eziLLDx061CoLz69evcISJUqwsa9bt86gdt6/f4+zZs3Czp07Y/Xq1UXGNYlEgmPHjsVTp07hhw8fTHwF9gsp8wJoUsqaPXv2IEBmMCxN3LlzR2VCypMnDyoUCgwNDRXtCVcX/Voul7Pj1nSVOXz4MBvHmTNnTNr2P//8o6Jk5cmTh7k352RIITAdr169wr59++LChQt1Spt29uxZlefy5MmTGB0djSVLlhTtd+MD8PDP8sKFC1Xau337NpYqVQo3bdpk8mvTxsuXL9k4tbkl6srRo0dFVgdLut7bEyS75kNXBVudVYvfg+7h4cGOq1NobSVvu9C6buh+dF2i0PPp7vRxx8+ukDJvHmQyGdauXRsBNGdnSkxMFOVk50udOnUQEfH+/ftYuHBhBMhMTaduTzm/cO/g4KCXJ6mpEV5HSEiISdpUKBQYEREhitjPl0aNGuHBgwctko7PliFlXgBNSlkTHh6OCxcu1BjcaurUqSrC5uzsjFu2bMG7d++ygB6Ojo54/vx5tW0oFAqUSqXMvcia8NZ0dYqKsdy7dw8HDhyI+fPnF7k1FihQQGMAkZwAKQTW4dmzZ2wFvFOnThgfH88U1qtXr4pkumvXruy83bt3IwDgqlWrrDV0tQj38P39999GtbV27VqVeQ0AcPny5eR6L4Bk13xkZVXWFuxOGPVeuL9cUx/GKNGmQOjqb45xKN8n3q0/J7vgkzJvHpKTk3HkyJFYsGBBjIqKUjkul8tF8aH4UqhQIbxz5w5GRkYyj5rq1avj06dP1faza9cuZrl++fKluS9LI1+/fkUvLy8EALO4xB8+fBh79uypkq++XLlyuGHDBotuLbAlSJkXQJOScezYsYMJlpeXF+bLlw83bNjAPnbnzp3LjoeGhmpsRxh8aufOnRYavXqGDBmCAJn75s0Jx3F46dIlkfXP1dUV69evn22ibeoKKQSWRaFQiFa8Fy1apFLn4MGDohfnwYMH2TE+hsbGjRstOWydEG4zuHTpklFtffnyRcXlni8jRozQunUhp0Cyaz6yyoWuLkUdr8jruhddGCHf2hHadYkJYCj8vRRa5oX5523BO8HSkDJvXjQFQJ4yZQoCZGZh4WVv9uzZbCF906ZNCABYqVIljff448ePzOPVwcEBg4KCzHYdutCqVSsEANy6datZ+/nw4QNOnz5dFLQzT5486OfnpzazVnaGlHkBNCkZzpIlS9hK+vLlyzE2Nha/fPkiqvPTTz8hQGY0bG3wQmlNVyGedu3aMWu5pXj58iV6e3uLPsh69uyJL168yBFWQFIILMebN29Ez9mVK1fU1lu3bp2onnD7Cx/xfs+ePZYatl7s3LmTjdtU+90TExNV4grwZezYsSpzX06BZNfyBAYGilzr+XeHMFq9roqxvgHozIml890r55+3lftgKUiZtyxJSUlsHzwA4K5du3DkyJF47NgxlMvlrB7/fu3evbvGtoSxbK5evWqJ4Wtl6NChCKB5W4GpSUpKwj/++AOLFy/O7oObmxsOHDgQt23bhiEhIQZnt7EXSJkXQJOSfmRkZOD+/fsxX758TIBKlSqlcW/uX3/9xeq9f/9eY7v8/iJN7kSWRJjqw9zWeXXwCyDKpXnz5rh//36Lj8cSkEJgfjiOwwkTJrDnqW7dulrd02bPns3qDhgwQHRswYIFCAD4zz//mHvYBrNw4UI2/jdv3pi07TNnzqjkD+ZL+/bttc512Q2SXcsitKQDZAa2U4eugd9sydVcqFRbck87HzeAN07we+wdHBzQ19fXZu6PqSFl3vxkZGTgv//+i2PGjGF74Pn3ryZDzaFDhxAAsGTJkloVUj57kiXTOGsiKCiIyc+xY8cs1q9MJsPbt29j8+bNVd7FHh4e2LFjR9y8eXO2dMUnZV4ATUq6MWHCBJXI7O7u7lm6sSoUCrYnt0+fPmrrPH36FCtUqMAsXLbAL7/8YlVvAZlMhidPnsS6detinjx5VCYpoctzdoAUAvMSHh4uen502dfWu3dvVl85GOSMGTMs/tI2hBEjRrBriImJMUsfMplMtN1IWNq2bYuvX782S7+2Asmu+VAXnE7oWi+RSDQqvboGtrMlZT4wMFBkIbdG//y9UN7CkB0t9qTMm4+YmBgcMmQI20vOl8KFC+OJEye0KumpqanMYHbz5k2V46Ghobho0SK2+GUr293Gjx+PAIBFixa1+FbRjIwMPH36NE6dOhUbNmwoym7Bey9t2bIlW1nrSZkXQJNS1mzdulUkFIMHD8aPHz/qdC7HcWxfD78v98KFCxgZGYkKhUJloluxYoU5L0Uv2rZtiwCA9erVs/ZQkOM4PHz4MPr4+LB7Vb58eZw8ebJNeDMYCykE5oHjOJw1axZ7Znx8fDAlJUWnc/mUN05OTiIXQMT/XtqWTD9nCBzHsb18lnhWNCn1AJmpLrNj5gqSXfMhtFTzFnZ99pVrclsXKvp8HVtJ3WYrFnHhOISBBLPT3npS5s3HsGHDmOzmz58fBwwYgMePH9fJQpyWlsaMOEFBQZiWloabNm3CN2/e4OHDh0WKaq5cufDixYsWuKKsSUlJYYa5gQMHWnUsMpkMb926hfPmzRMZIuvUqYOTJ0/OFulmSZkXQJOSdtLS0lhwuilTpuh9flJSEhOio0eP4oABA1AikYj2+3l4eOCtW7dsbm94fHw8G+fSpUutPRzGrVu3RDk4HR0drT0koyGFwPRERUWJlMkjR47ofC7HcSwLRYsWLVSO8xbvCxcumHLIZiEjIwPLly+PAJlZNsztbtemTRsEyIy0+++//2K5cuVUFHsfHx+8evWqzc15hkCyax6E++IlEolByqNQmff19VW7yKQt0r01saX88Or21kskErtX6kmZNw9Pnz4VGb/S09P1Oj8kJAQBMgO7bdy4UfTc8cXd3R0DAwNtbkvXlStXbM44l5KSgkuWLBEFHMxqC4M9QMq8AJqU1COTyXDOnDlsT46TkxOeO3dO73aEQTrc3d1FL0InJyds27atxoiftsCdO3fYmA8cOGDt4Yh4//49m5zMHUHU3JBCYFqWLl3KntuiRYtqTCupiaCgIK0v5H79+iGA5uB5tkZqairbz1e5cmWz5qfNyMhg927evHns96CgIKxbt67KR5kubpe2DMmueRB+wBsaEC4gIEBtDnqAzL32tqyM2pL7P4/y3nqAzAw09gop86bl7t27OHLkSJahKHfu3PjkyRO92+HTwgqNNnxxdnbGvn37YnR0tBmuwDQsXryYjdfYFLGm5P3797h69Wo2NluINWAMpMwLoElJlaCgINF+MWdnZ4yIiDCorfz587MP1q1bt9plIIrTp0+ze7F69WprD0eEn58fAohzgNsjpBCYjgEDBrDnde/evQa1IYzari7lTbdu3ezuZRgfH8+uyd/f36xWceEi5p07d1SOv3jxAlu3bq3yoZYrVy7cs2ePyrYGW4Zk13QEBASgVCpFV1dX5korlUoNUmiVA+UJi6urq00pydqwVaVeaJiwV0iZNw0ymUwUYwYAsFixYgbFS5HL5SyfeocOHbBGjRro4+OD169fx9jYWFFWGVuF4zgcM2YMMwT++eefNuWFVq1aNQTIDCotk8msPRyDIWVeAE1KYpYsWcImo2+++cYoFx6O41hb9h6wTajcNG/e3GbywB8+fFj0AomMjLT2kAyCFALTMXLkSPT39zf4vigUCixQoIDWZ4qPJ2Ht3Lb6Itx68NNPP5m1r3///Zf1pW2+iIiIwF69eqlVutatW2fzi58ku8bDK6zK28+MUWJ1DZRn6whzwduSUs8vtpBlPmfz8OFDrFWrFpM1Hx8f/N///mfwN+L79+9ZWx8/frSrhV0hGRkZ2LNnT9EC+r///msTHmhCz8WqVavajYehMqTMC6BJ6T8UCgVz7TOVxY0XmE2bNpmkPWvy6tUrFXen8ePHW/3Z+fjxI+bKlYuNy5b29+sKKQS2g/BjAgDU7vfjc8oa4kJobV6/fs2ubdmyZWbta9KkSawvXT5iPn36hKNGjRLd/wYNGph1jMZCsms8vMLq6urKLPPGKq38Hnlh7nl7RHm/uq0o9UKPAX2CEtoSpMwbDx8M1sPDA/fu3Wu0BTohIYHN/fHx8SYapXXgOA7/+OMPFn8HIDMGxrhx4/DMmTNW8zLgOA63bt2KhQoVslmvW10gZV4ATUpiUlNTTbZytnLlSiYoL1++NEmb1kYmk+Gff/6p1or2zTff4IYNG8y6H1cbBw8eRG9vb5wwYYJV+jcGUghsi3PnzrHnWh3h4eG4c+dOqz3rxnL//n2jtyLoAsdxzMuhd+/eep379etXXLt2rc0HGSTZNR5Tu5ILXextIYCcKVBW6g2J7m8ueC8Ia6TTMwZS5o0nOTkZx4wZg1FRUSZp7++//0YAwEKFCtnt+1WZx48f4+DBg0Vxs/jFSz8/P5w/fz6+evXK4uP68uUL9u3bFwEyA9bamxcEKfMCaFIyHz169GBCGxwcbO3hmJz4+Hhcs2aNSj5aAMASJUrgoUOHrD1Eu4EUAtuCjxORO3duaw/FbJw/f57JqzkV5uTkZNbPP//8Y7Z+rAXJru0hfCdZ24JtapQXPoSKtLX219vCgoIhkDJveyxYsIApul++fLH2cExKSkoKHjhwAAcNGiRKFyc0iG3dutWirvgKhQLXrVuHCQkJFuvTVJAyL4AmJfORlJTE0to5OztbezhmheM4DAkJwUGDBokmp4IFC2YbrwRzQgqBbcHnS69du7a1h2JW9uzZw2T1wYMHZuvn+fPnrJ/w8HCz9WMNSHZtDz6KvT0FujMUoSJtS+ns7AFS5m2P27dvs9gZ06ZNs/ZwzAbHcfjo0SNct24dtmrVSrQAWa9ePbuLx2MNdJVDKRCEgfz888+QJ08e+PjxIwAADB061MojMi8SiQQqV64MmzdvBkSEhw8fAgDAly9fwMfHB0qVKgUHDx4EhUJh3YESRBacPXsWtm/fDgAAZcuWtfJozEtAQAAsXboUAABq164Nb968MUs/Pj4+sGnTJgAA8Pb2BplMZpZ+CKJ3796wf/9+cHFxgZSUFFi0aJG1h2RW9uzZAxkZGbBnzx6YOnUqlCpVCho1agQFCxaEggULwvr16609RILQibZt20L9+vUBESF37tzw7bffWntIZkMikUCNGjVg5MiRcObMGYiKioJFixZB3rx54c6dO+Dr6wvNmjWDlStXwqdPn6w9XLuGlHnCICIjI2H16tUAAJA7d26IjIyENWvWWHlUlqVmzZqAiDBu3DhARAgPD4du3bpBrly5mMJPELbIuXPn4MKFCwAAULhwYSuPxvxMnDgRxowZAwAA5cuXh5iYGLP0M3jwYGjevDkAANSpU8csfRDE3r17QaFQQEpKCpQqVQqmTp1q7SFZjBEjRkBYWBjcuHEDYmNjITY2FqZPnw6lS5cmpZ6wabZt2wanTp0CAIAKFSpAcHAwtGnTxsqjshyFCxeGKVOmwMuXL6Fbt26AiHDlyhUYP348lC1bFubOnQtJSUnWHqZdQso8YRDVqlVj/5+WlgZ58uSx4misy8qVKwER4c2bN+Dv7w8AAEOGDIH8+fPD33//beXREcR/PH/+HJYuXQrLli1jv50/f96KI7Icq1evhrZt2wIAmFX5OXPmDAAAPH36lHkEEISp6N27t+jvqVOnwogRI6w0GusxdepU8PDwAA8PDwAAePfuHSxatAjWr19Pij1hcyCi6L3z7t07yJs3rxVHZD2KFCkC//vf/yA0NBRWrVoFtWvXhqSkJJg5cyaUL18eVq5cCSkpKdYepn1hZnd/m4D2/pgePtpsxYoVEQBw1apV2SYqp7HEx8dj9erVRfvqDx8+bO1hWR3ad2t9hM8ln0MZAHDixInWHppFyMjIwAMHDuC7d+/M2k9MTAy7t/fv3zdrX5aAZNd2EOaph/9Pl5XTEQbFoz31YmjPvG0gk8nQxcUFAQC9vb0RAHD8+PF47949o1Pd2TsKhQL37duHZcuWZfOal5cXLl++HJOTk609PKtCe+YJs5CRkQE//vgjxMbGAkCmyypA5v75XLlywQ8//GDN4dkE+fLlg8ePH0N0dDSUK1cOAAA6deoEEokE/vnnHyuPjsipxMfHw5MnTwAg0wWct2gBACxbtgz++usvaw3NYjg4OEDXrl3B29vbrP14enoyj4dvvvkGEhISzNofkXNwcXER/Z2WlpbjLdG86/2IESPYnvqctPWAsG3ev38PzZs3h9TUVAAAaNiwIQAArFixAnx9faFfv345elumVCqFnj17wrNnz2Djxo1QunRpiImJgQkTJkCZMmVg+fLlZKnPCsusLVgXWmE0DRzHYeXKldnK2dmzZ5HjODxw4AB2794dHR0dEQBw8eLF1h6qTRETE8M8GOD/U4GtXbsWZTKZtYdmUci6Z102bdqEAIB+fn6IiOx53LdvH/v/M2fOYPfu3bFJkyaYmJho5RHbP2PHjmX31p6tLyS71oe3OvMR3fn/KudkJ1QJDAxEDw8P9PDwyPaR/5Uhy7x1iYmJwfLlyyMAYN68eXHfvn34+fNn/P333/GHH37AXLlyIQDg3LlzrT1Um0Emk+GmTZuwdOnS7P1ZvHhxnDZtGj59+tTaw7MolJpOAE1KxsNxHLZv354J1rNnz1TqREdHs+P79++3wihtm5iYGCxTpoxK3s2FCxfmiC0KpBBYl3z58jGFHRFRKpUiAODLly/x1q1bCADo5uaGI0eOZM/m69evrTxq+4bjOLadYeDAgdYejsGQ7FofTe7jykp+TlNWdYG/dzlx0YOUeeuRlJSEvr6+CABYunRpte/Tv/76iz2bO3bssMIobReZTIabN2/G4sWLi76Za9SogYsWLcLg4GC7XiTXBVLmBdCkZDy7du1igvT27VuN9W7evMnq/fDDD5ienm7BUdoHiYmJOHnyZBWlHgCwR48e+PjxY2sP0SyQQmAdMjIy8O+//2bPmFwuR0TEu3fv4rlz59jL8N69e/j3338jIuKoUaNY/SNHjlht7NmBpKQkdi+PHj1q7eEYBMmu9dBVWae94ppRZ5kX5q7PzpAyb3nkcjk+evQI8+bNiwCAhQoVwhcvXmisP2bMGPaO6NKlC75//96Co7V9UlJS8O+//8aOHTsyD2Chxb5///74zz//YFpamrWHanJImRdAk5LhDBs2TCQ4bdq0yfKcs2fPis45ffq0BUZqnwQHB2PLli3VKvYTJ07MVq7OpBBYntmzZ4sCZvXv31/nc/fv38/OmzBhgvkGmQMIDg5m99IeP9RIdi0Pr2zyz41UKtVaXxgEjsga/t46ODhk63tHyrxl4ThO5Ztu+vTpWs+Ry+U4bdo09ky6u7tjYGAgKhQKC43afoiNjcW//voL/fz80NnZWXSfCxQogCNGjMDr169nG4s9KfMCaFIyjNevX4sExcPDA588eaLTuQqFAocMGcLOLVmyJMbFxZl3wHaOXC7HjRs3soinwrJlyxa7d8UnhcByvHnzBt3d3VWeo9u3b+vVzrNnz9i5FSpUYFZ9Qn8CAwPZvbS3eBkku5ZF+KwIi77kFOuzIQjvTXb2aiBl3nKkp6fjokWLRDLr6uqKYWFhOp3/6NEjrFu3Lju3Zs2aePHiRUxJSTHzyO2TlJQUPHfuHI4fPx6LFSsmuu9ly5bF8ePH440bN6w9TKMgZV4ATUr68fbtWyxXrpxIMKRSqUErXe/evRNZFwAA69Wrp3bPPfEfMpkM//zzT5WPueLFi2t117JlSCEwPwkJCdimTRuV56ZKlSpYpUoVg2RYua0//vjDDCPPGTRu3BgBAOvUqWPtoegFya7lCAgIUKvIe3t7692W8PzsbH02Fm33xt4XREiZNz9xcXG4cuVKtTGR9F0Az8jIwFWrVrHAeACAuXLlwhYtWuDu3btJsddARkYGnjt3Dvv164dubm6if4Py5cvjvn377HLbLynzAmhS0g7Hcfjq1SscPXo0i4yrXJydnQ1uPyUlBbt06aK23QEDBmBoaKjpLiYbEh8fj82bNxfdt9y5c2ORIkWwadOmLKCZrUMKgflITU3FPn364A8//KDWIm9MrvMTJ06otHfw4EETjj7nIJfL2T1ctWqVtYejMyS75kWoTCrnkTfGYsy3JZFIsrX12Zyoc8e3p2CDpMybh/j4eFy/fj12796dBTnlZY3/f3d3d4Pbf/DgAXbq1AmLFCkimgvy5s2LpUqVwmHDhmFsbKwJryj7kJSUhLt371aZRwsVKoT169fHdu3a4Z49e+xCuSdlXgBNStoRBt9QLnwEbAAwmbvK3bt30cvLS6UvNzc3nDVrlkn6yK7cuXNHZZ8Qf+8qVqyIv//+OwYHB9ukSz4pBObhypUr7Dn49ttvmTJfsGBBXL58OUqlUixXrhyWLl0a37x5Y1Af79+/V3nm4uPjTXwlOYOoqCh2D+0l2CXJrnnglUNhejmhYsAXX19fg9oXWpWFCwZ8hG2+XbLaa0adOz6v4EskEnR1dbXplHekzJuHDh06iGS0WLFiLEOMMKXalStXjOqH4zh8/fo1zp49W5SVQeh1R95ymgkPD8fffvsNixYtqnLvChQogM2aNcMxY8bghg0b8MaNG5iQkGDtIYsgZV4ATUqakclkWKBAATYp/O9//2MPeocOHVAul2OvXr3Yi+vly5cm7Vs46fHl0aNHJusjO5Oeno5HjhxBZ2dntdYcJycnbNSoEUZGRlp7qIhICoGpkcvl2Lp1a5GXi/DfPykpCRERJ0+ezGQcAPD48eMG9SeTybBSpUqsHXt1O7UFTp8+ze6jrX08qINk1zzwirujoyOLts4rjbzCbaxCrw5hu4gUCV9XhJZ55e2D/L2ztYURUuZNjzBrU5kyZbB79+7s7z59+mB8fDzWq1eP/Xbp0iWT9KtQKHD58uUqzx4A4OXLl03SR3ZFJpPh1atX8fDhwzhz5ky1yj2/UNexY0c8cuSITcS2sSllPi0tDWvWrIkAgA8ePBAde/ToETZp0gSdnZ2xRIkSuHjxYpXz9+/fjz4+Pujs7IzVqlXDEydO6NU/TUqqREVFYc+ePVmwNalUij/99BN7oEePHi2qX7BgQWbtMyWfP39mfR45coS5ERH6Exsbi//73/+wc+fOaiepiRMnWnVyIoXAdISGhor+bYWp51xdXVUipt+7d09Uv2/fvhgTE2NQHvlZs2axdsaNG2eqS8pxjBgxgs29th55l2TXdAjTpGXlUq+8f95U8AsF3t7eTDl1dXVFqVRKi3Q6wv87KlvmbW1hhJR508BxHB48eBA7derE0qNVrFgRO3XqxORzwYIFbC6PiYlh8l2mTBmTjmXTpk0IAJg/f37s1q0bAmTGorL194gtkZ6ejjdu3MDt27fjxIkTsXXr1ipB9IoUKYKTJ09mhhFrYFPK/NixY1lQJqEy//XrV/Ty8sI+ffrg06dPce/eveji4oIbNmxgda5fv44ODg64ZMkSDAkJwRkzZqCjo6POUdX5fmhS+o8NGzaIHthmzZrh8ePH2d+DBw9WOefWrVvs+Jw5c0w6afz4448IAOjp6YlOTk4IANivXz+amIyE4ziVNIEAgA0aNMBr165Z/P6SQmA61q1bhwCZOWl37NjB/m1//vln9u/65s0blEqlOHHiRERE5gIoLPny5TOo//nz57M2vL297WLvma3BcRyzsIwYMcLaw9EKya5pUFbOXV1dVRR6ZYsu/040tXUeUax4CsdBCr3hKFvmrR1Aj5R544mLi1PJb+7n5ycygO3atUvlvIEDB7Ljv/76q8lSDWdkZGCtWrUQAFhQVQDAKVOm0HezkQQHB+PEiRPR09NT9O/dtm1bXLNmjUEGEGOwGWX+5MmTWKlSJZZnV6jMr1u3DgsUKCD6EJwyZQr6+Piwv3v06IH+/v6iNuvXr4/Dhw/XeQw0KWWiUCjww4cPOGTIEMyXLx96eHiouOtMnjxZ7bkcx6koAjdv3jTJuIRtV65cmf3/6tWrTdI+kRmnQN1+qzx58uDo0aMtkjaQFALTkpqaitWqVWP/loMGDWJZIuLi4tjvx44dQ0Rx3nhhuXPnjkH9C+NpAABGRESY7NpyComJiez+nT592trD0QjJrmkQKsweHh6i7S+alGjlNHWmRKh4CvfqOzg4mLSfnIwwgB6P0DvD3O74pMwbTmpqKl67dg3/+usv5kVVokQJ0QIbAOC6devUnq/sQVe0aFHcvn27SfLHBwcHM5kVKp5//fWX0W0TmW75S5cuxRIlSqh8M1WsWBEnTpyIR44cwejoaLOOwyaU+ejoaCxevDjevXuXPdRCZb5v377YsWNH0TkXL15EAGBRGkuWLIkrV64U1Zk5cybWqFFDY79paWn49etXViIiInLkpMRxHK5cuRIbNGig9iNeuSxfvlzrqh6/x0SY9qFmzZomyT0tdLdfuHAh+//k5GSj2ybEBAcHi1zDlEuPHj3w4sWLmJqaatJ+dZmUSHY1w3EcvnnzBv/44w+NMt25c2eUyWTs7zFjxrDzt2zZwn53cnLCSZMmsb8NCTwplFm+HD582IRXnDN4/Pgxu39RUVHWHo5aSHb1Q1lZ462zQu8Y5UB32pQ6XukvUKAAa9+U+7IDAgJQKpWyQpZ506HOMi9cWDe3O76uygDJb+Y79u7duzh58mRs3LixitKurqxYsULrdzNfr3Dhwuz/mzZtapJv261bt7JFht69e7M54uPHj0a3TWTCcRw+fvwYFy9ejM2aNROlDORL6dKlsVevXvjHH3/g9evXTaq3WF2Z5zgOf/jhB5w7dy4iolplvmXLljhs2DDRebwFPyQkBBERHR0dcc+ePaI6a9euRU9PT419C/d0CktOmZTu37+PderUUXsPSpYsqZJ+zsHBQac9IXx6ublz5+KLFy/YRFe7dm2TRE+fMGECAmS6DfXt2xcBAF1cXCj9hhl59+4dzpw5U+3qo7AMGTIEb9y4YdTCjS6TUk6XXcTMufPDhw+4adMmbNmypU4LcV26dMH9+/djQkICFi9eHAGALXgmJSWppLfp3LkzIoq3zxQpUgTT0tL0Guvq1avZ4gDfDm2R0R/+PgLon5fYEpDs6oeysqYuYJWwZJVDXtm6y7/DpVKpSRR6denXbCWAW3ZEm2Xe1PdfV2UgJ8tvZGQkrly5EmvUqKFy/V5eXlimTBm1aZuvXr2aZdt169ZFAMCVK1fiokWLME+ePAgA2L59e6O/bTmOw/bt2yNAphs/H5usZs2aFEjaTMTHx+O+fftw8ODBWLVqVbVxT6RSKVatWhX79euHq1atwmvXrhm8795syvyUKVOy/LB89uwZrlq1Chs3bsyUPEsq8zlxhfHGjRsqucgBANu0aYMnT55EmUzGVu6Ui67RlGfMmIEAmUHwjh8/jsnJySyAHgDg3r17jbqGlStXIgBg+fLlMSkpCStWrIgAmVH0KfWGZcjIyMA7d+6wDAbayoABA/DKlSs6T1I53bqXnJyMBw8exM+fP7Pfvnz5gvv372cLZVmVli1b4qZNm/DDhw9qFWahjGdkZIiipgMAPn/+nP3/ly9fEDHz5SSso8+eMOEWmeXLl4vasWbQGHuED0rWuHFjaw9FhZwuu7ogVMKUlTXlyPT6KPKI/z0bTk5OrG1hG8Za0r29vdlY+IUIV1dXq+71zqmYOoAeWebVExUVhUuWLFHxcnN2dsaePXvili1bcP/+/aKo9HwpWLAge39mxZAhQ9h5N2/exPPnz7PFs2LFiuG2bduMMobx+/L79++PQUFBLFi1o6Mjbty40eB2Cd34+vUrnj9/HufNm4ft2rVTMZzwRSKRYOXKlfHHH3/ElStX4v3793Vu3yzK/MePH/HZs2daS3p6Onbs2BGlUik6ODiwwq/89uvXDxHN52avTHbd+8NxHItqKSylSpXCffv2sXpRUVEseIdEIsHLly9j7dq1EQDw1KlTOvcnDLQFAPju3TuUy+VsNZAvt2/fNuh6eEVDGM1+zJgxrN158+YZ1C5hHOnp6XjlyhWV1Gd88fT01Cl/eU7cd8txHMvSwBflvebqSoMGDfCPP/7AN2/e6GzlXrVqlUhRr1+/Pvt7+vTprB1+4WDOnDmicQoXAjZv3qzzNfIffQCAMTExmDdvXva3PoFKczrC7RG2ZhXNibKrC0IFXp0SxrtY8y71wm8hff6dlS39ygq9sXvchWPiU+PxWwJo/7xl0dUyr2tgPdozL+b+/fvYr18/UUA7iUSCjRo1wrVr1zLdQ/htnT9/fty4cSOTOX2+m4WZZgoUKIChoaF469YtZqwCyNyDvWXLFoOyDfHbUps1a4aImdubO3TowNqePHmyTXp7ZWc+fPiAx44dw9mzZ2P79u1VouQLDSBZYXU3+3fv3uGTJ09YOXPmDAIAHjhwgAVK4gPgCR/gadOmqQTAa9eunajthg0b5ugAeC9fvmSuO3zx8fHBEydOqHz4f/r0iX1ct2rVCmUyGcuR6eTkpLc7LMdxogidvPUtKChIZeVS3xSCiMgm2H/++Yf99vTpU9auk5MTPnz4UO92CdMik8nw+vXrOGDAAJwxY4ZOVticpBC8efNGpEzzhbeA8aVq1ao4Z84cfPr0qVGr8+fPn2dtCjNTAIDKQktISAg7pvySP3r0KDvWtGlTncc0bdo0BACsVKkSchyH48aNY+2sXbvW4OvKabx//57dt+DgYGsPh5GTZDcrNCnw6pQw3gVTIpGoKOEeHh569anOLVtZoTPURVsYZZ9fjODb9vb2Jgu9DaIusJ46SJlHDAsLw6VLl6p8Nzdo0ADXrVuHHz58ENU/evQoOjs7I0BmDKHw8HAWub5YsWJ6K8dPnjzB6tWrI0BmRoq0tDRMTU3F2bNni4Jgent745o1azAlJUXntoXfx/wiPMdxom0TVatWNeh7nDAdUVFRePz4cfz999+xdevW6ObmxjzQtWF1ZV4ZdW728fHx6OXlhX379sWnT5/ivn370NXVVSU1Xa5cuXDZsmX47NkznDVrVo5LTZeWloaHDh1SsYADADZv3lzjdf3666+sXvny5RExM2gV/4Fx69Ytg8aTkZGBuXPnZhOTkJcvX6qkdNi7d6/Oiwb//vsvO2/ChAns90ePHrEAfACAO3fuNGjshPXI7gpBcnIyTp48WUVGO3bsyCKepqWlmTyN26tXr1hfLVq0YP/fr18/jVFzeRndv3+/yrGoqCjR+GNiYrIcg0KhYPXPnDmDiIjnzp1jvwm3XBHaES7G2MpWhewuu1mhjwLPK95Cy5+rqytTjn19fY3aE61NYTfGRZuPaK8cAI9XGoULEoT1Icu8Zr58+YJHjhzBCRMmqMSPcnBwwF69eqn9/v3y5YvIQ61Dhw6oUChEmWD0scoLCQsLYwt5gwcPZt/ECQkJuGTJEtF3s6enJy5cuBDj4+N1anvixIlMRhcuXMje+7t27cL8+fOLvsUJ20B5AUkTdqHMI2YqaU2aNEFnZ2csXrw4Llq0SOXc/fv3Y8WKFdHJycmgFSZ7mpQUCgW+e/cO582bh2XLllVRDAAAy5Yti9evX9eoIMtkMqxatSqr3717d0xPT0eO49gHRps2bYwapzDlxpo1a1SOR0REiFwDnZyccNu2bTq1vXbtWnbed999J1ICDh06xI7NmDHDJCk+CMuQHRUCjuNEzyRf8ufPr1NwHGMRpqATlqz2Y504cYK9/NUhl8tFewV1+YB59uwZq89nQoiJiRGN69OnT/pfZA6E935ydXW1iWCC2VF29SErBZ4nMDBQFLGeL4GBgTpbUvUZi7r+hWPT11KvbozqtgqQQm8/ZGdlnv9ePnfuHK5btw5Hjx6NNWrUUAlKJpFI8LvvvsN169ZpTCV27949JltSqRTHjBmDycnJGBoayrbGCQ1MhnDmzBk2Pyins0tJScG1a9eKvpvz5cuHy5cvz9IAwHGcKOd9hw4dWLrh2NhYHDRoEAJk7qMfO3YsRbu3I2xOmbcmtjIpvXv3DkeOHIk1atTAChUqYNWqVbFBgwZZRhIHAPzll1/w7du3OvXDr8S5uLjgq1ev2O+tWrVi7ZniA/H+/fusvREjRqit8+XLF2zUqJHoWnS5jg8fPrD6JUuWFB2bPXu2qD3aS28fZCeF4PXr1youewCZEWsN2fdmCOnp6Sr9f/fddzr1L7Sk3717V22d169fM/d5gMw89lnNG/3790eAzC09PHK5XGQd+ffff/W70ByIMLDgzz//bO3h2L3sKrupa1Jy9f1dGeV0cxKJBAMCApjVm//b2GspVaoU29uubUz6WuqF1l51CwO8sm/udGqE6bA3Zf7r16/49u1bfPDgAd65cwfXrFmDPXr0QF9fX6xbty42bdoU/fz8sGrVqsxDVF2pVKkSDhs2DHft2pVlys/4+HiWcszLy4vFfYqKisJq1aohQKZLvin2ni9evBgBAHPlyoXbt29XOS6TyXDHjh1YuXJldi0+Pj5ZLqhzHId//fUXyyzTsGFD9r6WyWSidMR58uTB33//Xe/sNYTlIWVegLUmpRs3bmDJkiWzVNSVS4sWLXDatGn44sULvftcuXIle+F+88037HdhiitdgpXpysiRI1m779+/11gvOjqa7UECyAzWkdW+ILlcznJzKqfZSEtLw549e4rumy7uwIT1sHeFICkpiaVPFJYuXbpY/NnjOE6UtxYA8MKFC3q1wQfM4+eoK1euiI43adJE7fykLfuFXC5n9e7cuSM6tmLFCnZsypQpeo01J8I/+4b825prLPYiu3zedEdHR6bE8/eyVKlSGpVcY9zUlSPW80qwuv3opoAfqzZLuTFpztTdC+WI/eR2b/vYmzJfq1Ytvb6XHR0d0cfHB9u1a4fjx4/HAwcOaLS+q+Pt27c4atQo1t6kSZMQMXPbHB8oumjRojob07KC4zjs1q0bk13ei00ZhUKBmzZtEr3n27dvj8+fP9fa/t27d1mWqdOnT4uOnTt3TrSwXrVqVY2L+YRtQMq8AGtNSsHBwdiiRQvMmzcvenp6Yq1atXD//v0YFxeHcrkcExMTMSoqSucUF9pYunSpKNezs7Mz3rx5ExEzAw3yE4cpFXkevs+nT59mWVe4J54vs2fP1ngPdu3axcb+999/qxyPjIxkqTgAdIsOSVgHe1MIeJKSklQWjgoWLIjXr1+32piEHzylS5fWK2AOT2JiooosCtPmRUVFqQTs40tQUJDGdm/fvs3qyeVynD59OlarVg3T0tLwwYMH7FjhwoXJMpAFQu8nay5W2pvsKud15xV6Qy3z2ggICFDr1ssfU6fgm4LAwEDWrz7B9HTda81fF78gojx2U6dQI8yDvSnzfn5+mDt3bvTy8kIvLy/08/PDefPm4ZEjR/Do0aO4f/9+3LFjB54+fRrfvHljlLVcGKiVL48fPxYdK1CggMjD1RSkpKSw/rLKBx8XF4e//PIL8xwAyPQ6+Omnn/DYsWOYmJiocs7QoUOZHnD06FHRMYVCgXv37mV79B0cHHD69On0LrZRSJkXYAsKgblp164d+7AXRnv/+vUri5apvEfHVAhTbR08eDDL+hzHiVx++JI7d248d+6cqK5MJhN5FWgKorVz505Wx9vb2yDlhjAv9qYQ8Lx//54ptatWrbKYG706lPfI6xqHQhN8Dlw+Pkfp0qVVXOnfv38vCj6pS9/NmzdHgEzX/KlTpyJAZoocxMyAP8J2QkNDjbqG7M7SpUsRALB3795WG4O9ya6yZd6c1mPlhQMAYG7qyr+ZGqHHga7tK++L17SAIdy7q05pN3Z/PmEZ7E2Zt2QaNT62FK/0pqSkYHR0tEh2lZVhU8BxHNsO6+zsrBJLTB0hISHo7++vEpMjX758uH37dtF7OzIykgXMzp8/v1pF/dOnT9irVy/WTu3atTEyMtKUl0mYAFLmBdiCQmBuVq5cKfrA/umnn0QfGfnz5zdb30lJScwdqWzZsnqdm5KSgps2bRJtR6hfv76KKy+f5kvZbUjI169fsUyZMgiQ6Xp14MABg66HMA/2phDYGnv37hW9xJ89e2Z0m8JAlnxZsGABO56amso+riIjI7FIkSKiusqLbzxCy4PQuswvsnEcJ/J2UOd1Q/zHvn37VLYtWBKSXc0ILfMBAQEqAeMAMgMZmgOh0qFrYD1ly7wmCzsfZ8DV1VWnBRFd3P4Jy2Nvyrwl+eGHHxAAcNOmTWqNTI0bNzZbANJ79+4xI4E+C32xsbF48OBBHD58uGjBrVOnTqIAs+np6ejl5ZWlke3AgQNYqFAhBMhMu7d161arGiwIMaTMC8gJk9KFCxcQIDM39Ny5c0UTUrFixfRK5WcIaWlprL9NmzYZ1IYwGnb+/PlFk+jDhw8RALB48eJa2+A4Dv38/ETXb+h4CNNCCoFhJCcnq1jJTLnPrW/fvlimTBm8evUqa//evXsol8vRzc0N27VrJ6qvq1J/6tQpdnzEiBEIADhy5EhRHWHKnx49ethE5HZCFZJd3VB2q7eEcsv3aWhwPd6i7uvrq9b9Xle3fOWI/boE6CPMDynzmuHfS40bN8Y2bdqoyO61a9fM2n9QUJDI003f959cLscFCxawLFXKQfr4VLn+/v5a2wkNDcUqVaqwsXh7e9MCu41AyryAnDAphYSEqExEykVbgDpTIJwMq1SpgmFhYXq3kZ6ezlwH/fz82Aohx3Fsz5Ama6CQ69evY548edh4KCWW9SGFQH/Onz+vIse7d+82W3/r169n/QgDsKkjMjKSrfxrUuorVKiAAJkB7/g6ynv8wsLCRG1oC7BHWAeSXc0I3cs1vXvNjSlywQs9+YSWeOHvWbUrVOgN2c9PmB5S5jWzfPnyLL+bzR0grmPHjqyvDh06GGR4u3fvHtvuGhAQwLauPX/+nLnl37hxQ2sbSUlJuHjxYvZOl0qlJonnRRgHKfMCcsKkhJjpaj9t2jQmvDt27MB3797ht99+yyaLy5cvm3UMd+/eFU2EpUqV0hosSx3h4eEsGidAZpqrjIwMln++YsWKOrfFpy7RJ7opYR5IIdAdmUyGzZo1U/mwGD9+vFn75TiObWnx9fVlcqhtL11ERAQLpsOX8+fPI6I4Ijuf+aJv374qbaSlpYkWBnTZQ0hYDpJdzfBeM8L96xKJhEW39/X1NfsYeOs5b6FzdXU1KJCfUIZdXV3RwcFBFARTl2B3vHs+f46jo6MRV0YYCynzmomLi8OpU6eyzC0SiQR/++03FucFIDOW0759+8w2BrlcjnPnzhUFuGvTpg2+e/dOr3b279/PFtBy5cqFgwYNwoyMDBwwYIDG9646Xr16xcZB+eitDynzAnLCpKRQKFiOZ4BMl1UhQovbkiVLzDqWtLQ0Uco6ANA7IF1aWpoo0uitW7dEuZd1sU7KZDLRh0lWK5OEeSGFQDeEe8wBgAXKqVevnkX6Fwaoa926NQIA7tmzJ8vzNCn127dvV1mUiI+PV9uG8CNqxYoVpr40wkBIdjWjbo+8OYLd6QKvRBtqFecVcQ8PD2YU4LcJuLq6olQq1enalLcFkau99SBlXjP379/HRo0ased09OjR7Fh8fDy2bduWHZs+fToqFAqzjeXJkyfYtWtXJnfVq1fH5ORkvdq4evWqKGD05cuX8caNG2xO2LJli1ZXfqHRjC+TJ0/G9PR0Yy+PMBBS5gVk90lJuO8UQLMb+p07d1gdcwb24JHJZCySPj+x6Nvnr7/+igCA69evR0TE0aNHs/ZKlCihkhubZ+jQoSrpgvgyd+5co6+N0B9SCFS5f/8++vn54bVr11ChUGDfvn3Zc9qrVy/s0qUL+1tTJgdzINzLB5AZi0NXIiIiRLlxeUsBQObePQDAzp07azz/8uXL7LzatWtbNLoxoR6SXc0ILfParOGWiPbO98EvLEilUoP7U/Ys0OSGr24MwoUNoYXe3JkFCFVImVfl/fv3OHDgQPaNmDdvXhYET0hGRgZOmjSJPcNdunTRW8HWl+fPnzMvtWrVquGOHTv0DkjHx7TZunUrchzHsl0BZKbVvXXrlso5nz9/Zl556sqWLVtMdYmEHpAyLyC7Tkocx2Hx4sWZsHXr1g1TU1O1nvPu3Tt0c3NDAMBy5cphUlKSWccYHBwsUuj1cZFHRNy4cSP7EOA5efKkSFFXtvr36NGDHStcuDA2bNhQFKU0d+7cJrk2Qj9IIVDl3r17al+cd+/eZSnJAMDkciqXy3HevHl4/fp1jXUWLlwoGpO+qFPqhUWY016Zz58/i+paM8c6QbKrjFAx11VJ11XpN9X4eOXb0P6Uo9yrC+6nzkqvbJVXLpSX3rKQMi8mLCwM3d3d2fPYu3dvDA8P13rO9u3b2YJ0kyZNzGqhR8xc0M6bNy8b44gRI/Q6f+zYsWwRnuM4/PTpk8hrzsPDQ7RwERERgZUrV0aATC9WHx8frFu3rkhuGzRoYOrLJHSAlHkB2XVSErqdf/jwQefzzp07x8578+aNGUf4H6tWrWJ9btiwQa9z+fP4CUpYfv31V1aP4zjRBKROWbh3716WEzdhHkghUIXjOOzduzd7ZkuXLo3p6emiSPD6yLau8Pc1b968WsfG558HAIMt5BERESz1jbD4+flpPS8jIwObNm3K6usS+JIwDyS7YjSlc9MG78LOu9GaW6k11kqvbpFCeT+8unR4yintfH19USKRkGXeSpAyL+bBgwfs+b148aLO57Vv356dFxsba8YRZhIbG4uNGzdmfd6+fVvnc8PCwpjcf//99yqeMmvWrMG4uDgMDQ3Fy5cvs7gYxYsXx5CQEFFbnz59wsDAQHz79q2pL5HQAVLmBWTXSQkR8fvvv0cAwLNnz+p8zpUrVxAAsEaNGmYcmZivX7+yXPIFChTQ69x+/fqpKAIlSpTQuvqvHDGbsD6kEIiJjo5W++wKn3d9g0fqA9+HNvf9L1++sHrC/POG8O7dO5VrPXDgQJbnCaOE67sQSJgGkl0xhrrMC/e0W0qpFSrf+i4+qEtZp27/vCW2EBCGQcq8GI7jmPJ66NAhnc/j47k0btzYfINTQvjO7N69u87nxcfHo4+Pj+hdW6BAAfTy8hJZ/IWlYsWKBmWgIswLKfMCsuukhPjfPnh93NfT09MRwPLu5nyk3erVq+tkHU9LS8NRo0ZpVdqVS506dTQG1yKsCykE/yEMMlO0aFFMTk7GiIgI0bOsS9A5Y+C9WO7du6e1Hh+3whSePKGhoWrl9vHjx1rPCw4ORgDAn3/+2aj+CcMg2TUNvGJtyXRtgYGB7N3r5OSks8Ktzl2ezx2vvDBgiKcCYRlImVfll19+QQDAH3/8Uedz/ve//yEAYN26dc04MjGJiYlM9vLnz69TdPmYmBhR4D5txcXFBYsWLYrt2rWjrWw2CinzArLzpCR0tddnHw+/53zVqlVm3//DU716dZH1MSsGDhwomnicnJywbt26uGjRIrK82yGkEGQyf/589kzv3LmT/Z6WliZ63itUqGBW2eQDZ44ZM0ZrPeU88MZGtl21ahXWqlVL1KZy9g11yGQyiwYBJP6DZFc9+lqk9Y0KbyqUg9dlBR/8Trnwke3Vud+TZd42IWVelevXryMAoLu7u87vs2fPnjE5mD59ukXSHaekpIgs7F26dNFaX3mrKb8I0KZNG5w5cyaeOnUKX7x4gTExMZiWlmb28RPGQ8q8gOw8KSEi1q5dGwEAr169qvM5wmA2uXPnNntke56UlBTcsWOHVuu5XC7HQYMGiSakYsWKWWR8hPkghSCTQ4cO4YABA0T77jiOw3z58iFAZqAZ4bNvrpdubGws60MbwgVDAN3z1WbFjh072KIFfVjYNiS76jHEIs0r1hKJxGIKsPB9r4syL5R3V1dXdHR0RIlEYrWUe4ThkDKvikKhwKJFiyIA4MmTJ3U6h+M4bN68OZOLkiVLWuS7OSMjA8+dO4fNmzfH9+/fa6x3/fp1lWj0LVq0sJixjjAPpMwLyM6TEuJ/qZy8vb1x4cKFePDgQXzy5Al++vRJqyUrMTGRWehthYMHD4qsCLwVk5R5+4cUAs107NhR5GEjl8tZfnkAwISEBLP0y7eflcVb2UJ348YNo/sWLhKEhoYa3R5hPkh21cPnmNdHyeXP4QPhubq6mnGE/5GV9Vx4XGiZJ9d5+4aUefXwWzhr1KiBY8aMwdmzZ+OaNWtwz549ePbsWXz27JnaVHW///47kw1LGcG0IZfLccyYMWxMbm5uLAVsz549rT08wkhImReQ3SclhULBPgy0lSlTpuCXL19E5/Jp4548eWKl0f/HvHnz2Fg7deqEMpmMClVrSQAAIENJREFU7ZWtVq2atYdHGAkpBOpZtGgRe+6FOWw5jhOttJtjTxvv1XP//n2t9XhPmaVLl+LYsWMxKirKJP0fOHCAFuvsAJJd9WizzGelPPPvbKlUauZRZo0wlZ0wFZ2+CxWE7UHKvHp4I5i24u3tjaNGjcITJ06wFMhfvnxBJycnvb1hzYFCoRDlkM+TJw8eOnQIp02bhgCAgwcPtur4COMhZV5Adp+UEDNdZh89eoQHDx7EhQsX4sCBA7FRo0ZYtGhRkaWbL35+fvjlyxc8f/48c3W1NsrpM5RL06ZNaa+8HUMKgSonTpxgz7cmBblv376szqtXr0za/969exEAcNy4cVrrXbx4EQH0i6irC0Lr/MuXL03aNmE6SHbVo01hV6foq7N++/r6WnDE6uHHyu+JF/5maJ56wjYgZV4zp06dwhUrVuCvv/6Kw4cPx65du+J3332H1atXx9y5c4u+P11cXLBnz5546dIlHDx4MAIA9unTx6rjDw8Pz3JBwtfX1yKp9AjzQMq8gJwwKWVFWloabt26FZ2dndUKfK1ataw9RDxz5gy6ublpnZgOHz5s7WESBkIKgRhhYLmsLOOzZ89mde/cuWOyMXz+/Jm1qw1hVF1Tc/LkSWZVIGwTkl39UafoCxV8W4oAHxAQgBKJBF1dXdl4ecs8HwnfkhH4CdNByrxhJCcn47Fjx3DEiBEqqZD5rBTdunWz9jBV4kupK9u2bbP2MAkD0VUOpUDkCJydnWHAgAGQlpYGHMfB3r17RccfPnwIEokEunXrBhcuXIDk5GRIS0uDlJQU+Pz5M6Snp5t9jG5ubpCWlqa1TqdOnaBDhw5mHwtBmJuUlBSoX78+HDp0CGrXrq217qxZs2Dr1q0AAFCvXj04fvy4ScZQsGBB9v8cx2mslydPHvb/iGiSvnnatGkDAABJSUnw9OlTk7ZNENZixIgREBYWBiNGjGC/TZ06FUqVKgVTp06FRo0agUQigU+fPsH69eutOFKAGzduACJCSkoKLFq0iP2mUCggIyMDAABiY2Ohd+/e1hwmQVgMV1dXaNeuHQQGBkJ4eDjcvXsXhg8fDm5ubhAbGwsAAAcOHIAyZcpAz549YcWKFXDkyBE4fPgw/PPPP3DgwAG4ffs2yOVys46zUqVKWdYZMGAATJw40eTvbsKGsMTKgrXJ6SuMmvjzzz+zXNFTLrVr18Zdu3ZhdHS0WVJFvXz5Evv378/2JAEAzpkzB/ft24dVq1Zl+wx1SW1H2BZk3TOe06dPM7lYv369SdrkU0Y+fPhQaz3ekmgOd/hLly6ZzfJPGA/JrmkR7lEHgXVe2ZpvqZRvgYGB6OHhgR4eHiyXPP9f5e1vtIfeviDLvGkZMmQIAgA6OzuzANLaipubG7Zs2RLnzZuHf//9N548edKkAV8/fvyIY8eOxZo1a6K7uzsCZMbh6Ny5MzZp0kQ0lnHjxtlE0D5Cd8jNXgBNSurp2rUrAgC2bdsWETODaQQFBWGvXr2wevXqWLFiRaxSpQrWq1dP62R19OhRvftWKBR49uxZXLZsGY4cORK//fZbtZPgiRMnROdt3LiRHd+yZYtJ7gNhGUghMA33799nMjBt2jSj29u1axcCAE6cOFFrveXLlyMA4Nq1a43uUx38Nd27d88s7ROGQ7JrWng3Xfh/l13lfeq8cq/8N6/c84q2sUp+VlsB+DrKCj3tn7cfSJk3LX5+fggA2LVrV4yPj8cLFy7gwoULsVOnTtigQQNs1KgRNmnSBJs0aSKSc2GRSqW4c+dOvfpNSEjA8+fP46JFi/Dnn3/GXr16oa+vr8qCQv78+fH06dOic3/77TeSXTuFlHkBNCmphw9qBQAYFxen0zlhYWE4ePBgrF27NlaoUIGdf+jQIa3nRURE4PLly0XnaCqLFy/Wmof+8ePHrK4pUmQRloEUAtMRGhrKZKBnz55GrbZ//PhRJ6s4n1micuXKBveljVu3bpF13kYh2TUt/Ee+VCoVfVxnZZkXBqoTKtz6IGwzqyB9QoS56slCbz+QMm9aevbsiQCAjo6OmJaWprWuQqHAx48f45o1a7Bnz57YrFkzrFy5MgIASiQS3Lx5s9rzOI7DFy9e4LZt23D48OFYo0YNrRmrqlWrhuPHj8fTp0+LMuII4VPqOTk5YXR0tNH3gbAMpMwLoElJPXXq1EEAQH9/f4PbuHr1KptQWrRogTNnzsTFixfj7NmzVV7+yqVz5864YsUKvHnzJkZEROilkOTLlw/z5s2L7969M3jshGUhhcC0fPr0iclSrVq1UKFQGNwW3462NhQKhdmVbb7969evm60PQn9Idk2L8N2oj0KubJkPCAhAV1dXlEqlTLnWdUFAqNDraq0TWugdHBz0u2jCKpAyb1rKly+PAIanfVMoFCzHPQBgs2bNcOTIkTh69GgcM2YMtm3bVqNF39vbG3v06IFTpkzB5cuX4969e/H9+/c69bts2TIEACxQoIBWYxlhW5AyL4AmJfU0atQIAQBv3bpl0Pkcx+Hu3buztLQDAJYpUwZnzpyJHz9+NMnYjx07hg8ePDBJW4RlIIXA9CQlJTEZy507N8pkMr3bSEhIYB8ojx8/1lqX74vPuWtqHjx4QNZ5G4Rk17SoSwVnCMKPfl651tVV35B+hf2RZd4+IGXetBQvXhwBAC9cuKD3uXK5HO/du4dDhgzBXLlyaf1mdnZ2xkaNGuGECRPwwIEDOivtmnj48CH6+flp9AYgbBOKZk9kSatWrQAAYNKkSTrVT05OhpUrV4KXlxdIJBJwcHCAPn36AABA3rx5WT2JRAJFixaFzp07g0wmA0SEt2/fwu+//w6FCxc2ydjbtWsHtWrVMklbBGGvuLm5QXp6OuTKlQvS0tLAyckJkpOTNda/ePEiDBkyBObMmQMVKlQAiUQC7u7uEBoaCgAAe/bs0dqfv78/AAAEBQWZ7iIE1KpVCxwcHAAA4MKFC2bpgyCsDf5/VOnixYuLot1ro1SpUiCRSMDNzQ1y5cqlElm+du3aULp0aShcuDA4ODhAo0aNAEAcQR9AfZR9XZk/fz6UKlUKAgMDs5wrCCI70rRpUwAAuH79epZ1IyIi4O+//4aKFSuCo6MjODs7g6+vL2zatAkyMjKgaNGiIJVmqmGOjo5QqlQp8Pf3h3///RcSEhLg+vXrsGzZMujatSsUK1bMqHHXrFkTzp49CwMHDjSqHcJGscjSgpWhFUb18IGvAEBjVPpXr15hu3bt0MXFResqYrt27fDr16/YoUMHlWORkZEWvjLCFiHrnvlQKBRYrVo1JnOfP39mxziOwzt37mCbNm3Uyq5UKsW9e/fqZBE/fPgwAgCOHj3abNcSEhLCxkKRd20Dkl3TIpQ/bfC53jVtWStQoAACAPr6+jILPB8Qi/LCE4hkmTc1c+bMQQDAihUrqt2fnpGRgTt27FAb1Fm5NGrUCB88eIC+vr6i38uXL09bzQhEJMs8oQN9+vSBihUrAgBA9+7dVY6/f/8eKlSoAMePHwe5XA6FChWC2bNnw61bt+DAgQPQokULtlr44cMHQEQ4cuQIICI8e/YMypcvDwAAJUqUgM6dO1skVz1B5ESkUik8fvwYunbtCgAAhQoVgn79+oFEIgGpVAr16tWDU6dOsfrVqlWDkiVLAkBmfvn27duzY6glFy1v7Vu7dq05LgMAACpXrgwFChQAAIATJ06YrR+CsBa+vr4AAODk5KQ2x/z69euhdOnSsG/fPlAoFLB//37w9vYGgMz81zxxcXEAAPDgwQNmgXdxcQEAgLS0NChdurTVc9gTRHZixIgRUKRIEXj58iUsWrRI5fiOHTugX79+cPXqVXBwcIA6deqAj48P1KxZEzp37gytWrViMnr79m0oX7483L59G+7fvw8bNmyA4sWLw+vXr6FJkyYwaNAgePXqlaUvkbBHLLGyYG1ohVE9HMexfO6jRo0SHYuKimKWvm+//dbg4FobNmwQReHs1q0b/TvkUMi6Zz7i4+Nx2bJlGvfhdejQAYOCgrRauvlME0+fPtXaF9+mOXn9+jVZ520Ikl3Toy6SPGLmnnb+neno6Mgs80J4i723t7fKcX5PPL+/3ZCI90T2gSzzpuXNmzeYL18+BACcN28e+z0pKQnXr1/PZLdHjx4YERGhsZ3379/jsWPHVH6Pi4vD/v37izznevfuTSlbcygUAE8ATUrqad26tcoH84kTJ7BEiRLsd1dXVzx79qxR/cjlcpw5c6aKgvHbb78ZFYGbsC9IITANT548wVGjRmF0dDRmZGRgs2bNVGSrWLFi7P91ld8tW7YgAOCMGTO01sudOzcCgNEBebKCV3b+/vtvs/ZDZA3JrmkJCAhAqVSKrq6uKlHnlXPQG4pyoDt+AYB3yad80zkDUuZNS4sWLRAAsEiRIiiTyTAjIwPnz5+P+fPnZ3KbJ08efPLkiVH93LhxA/39/UXv9TJlyuC0adN0TiVN2D+kzAugSUk9Q4cOZZNEamoqTp06VTRxnDhxwqRWMYVCgT/++KOK4mFoNH3CviCFwHgeP37M5Obx48fIcRwOHz4cq1SpgmvWrMHExERW98iRI6zu9u3bs2w7KipKJ6v7lClTEABw7969Rl+PNt69e0fWeRuBZNe08HniAYClmePTvrm6uqKHhwd6eHiYVOEW9kkW+5wDKfOmpWXLlggAWLBgQYyMjBQp3OXKlcMVK1ZgbGysyfq7f/8+VqlSRSS7np6euHPnTnov5gBImRdAk5JmeAues7Mzmyj++ecfs/f75csXbNy4MeuzQoUKGBUVZfZ+CetBCoFxPHnyRC/lHBHx1q1b7ByhS6AmdFGe79y5gwCZ+XHNTfXq1dnCImE9SHZNi7qAduYOXEeW+ZwJKfOmJSwsDAsWLIgAgHnz5kUAQBcXF9y2bZtZPU1jY2Nx3759WKlSJTZnfPfdd/jo0SOz9UlYH1LmBdCkJCY+Ph6nTZuGHh4eotV6iURi8QiawsjVAID169c3WS56wrYghcBwnj59ymRk69atep376tUrdu6gQYO01i1TpgwCAIaEhGisk56erpMF3xR8/vwZV61ahV++fDF7X4RmSHZNR2BgIHp4eDDlnS8ODg4WV7L5sZjaC4CwHUiZN574+HjctWsXdunSBd3c3ERy6+bmhjdv3rTYWNLT03H+/PlsuxsAYNu2bfHSpUtkqc+GkDIvIKdPSh8/fsRly5ZhzZo1RcHoAADz5cuHJUuWRKlUil5eXlbZw85xHP7000+icZUtWxaXLl1KH/HZCFIIDCM4OJjJxebNmw1qIzo6mrXRuHFjjS/9jRs3IgDg7NmztbbXoUMHbNmypUFjIewPkl3jECrNwj3xypZ5S8PHpeDd7km5z36QMq8fCoUCX7x4gXv37sWff/4ZfX19VQLL5s6dG8uVK8f+Pnr0qMXH+fbtW+zevbtoUdDX1xfnzZuHx44dw1evXqFcLrf4uAjToqscShC15CHKJiQkJEC+fPng69ev4O7ubu3hmByO4yA2NhY+ffoEISEhcPv2bbh27RrcvHlTbX1vb28YM2YM/Pzzz+Dk5AQAAKmpqZCYmAienp6WHLoIRITDhw9Dly5d1B6vVKkSDB8+HAYPHgx58+a18OgIYzFEDrO77GYFf/0AABs3boQhQ4aYpK2CBQtCdHQ05MqVS1Tnw4cPULx4cZBKpaBQKAwfOJGtINnVjd69e8P+/fuhR48e0LRpU5g+fTo7FhsbCwAAHh4e7LeyZctCUFAQAAD06tUL9uzZY9Hxrl+/no1x/vz5sGjRInj37h0AADg4OMCff/4JV65cYddk6fERxmOoHGZn+ZXL5RAUFARv376Fjx8/svLixQt4+PAhJCUlqZxTqVIl6Nq1K3Tu3Blq1aoFDg4OEBgYCF++fIHp06eDRCKxwpUAvHr1ClauXAlbt26FtLQ00TFHR0eoXbs2+Pn5QZMmTaBRo0bsG4CwD3SWQ0usLFib7L7CyKeQ01TKli2L/fr1w+fPn1t7qDpz69YtHDRokGj1U1ikUin6+flhenq6tYdK6AhZ9/QnLS0Nhw8fjocOHTJZe7wMde7cWW0d/ji57BE8JLuqqLNi89vWeJd5XpaEVnlbtnjz18R78JUqVUp0TYGBgejq6opSqVQlXR5hm5BlXpUJEyZo/WbOnTs31qtXD0ePHo27d+/GsLAwaw85Sz5+/IirV6/GgIAArFmzpsgNX/jdPGjQILLY2xFkmReQnVcYAQBmz54N165dg6JFi0K1atWgcuXKUKJECahdu7bVVgvNQXR0NOzYsQPmzZsHaWlpkCdPHtiyZQt06tTJ2kMjdICse7aBQqGAcePGQb58+WDevHkqx729vSEiIgKeP38OPj4+VhghYWuQ7KpSunRpZsUuVaoUhIWFabTMz58/H0aMGGHN4erF+vXrYdGiRTB16lSRZf7GjRvsmiUSCXAcZ+WREllBlnlVTpw4Af369YMaNWqAl5cXeHp6gqenJ5QqVQq++eYb8PHxUfFaszc4joOwsDC4dOkSXL16FS5fvgxhYWEAAHD16lVo0qSJdQdI6ISuckjKPGGXpKenw+3bt6Fp06bWHgqhI6QQ2Afr16+HkSNHwrx580RuwkTOhWRXFWUXdXtS1g1l/fr1MGrUKEBEcHV1heTkZGsPicgCUuZVycjIAKlUClKp1NpDsRgKhQI2b94Mp0+fhl27doGrq6u1h0ToACnzArLzpEQQ9gIpBPZBZGQklCxZEpycnCA9Pd3awyFsAJJdgkdotc8JCxj2DinzBGG/6CqH9u1HQhAEQZiUEiVKAACATCYDRMxWW3UIgjCOESNGkBJPEARhQ+QcHxOCIAhCJ4oWLQoAAK9fv7bySAiCIAiCIAhNkDJPEARBiOD3Ah88eNDKIyEIgiAIgiA0Qco8QRAEIaJ9+/YAALB582Yrj4QgCIIgCILQBO2ZJwiCIER4e3tDxYoVoWLFitYeCkEQBEEQBKEBUuYJgiAIFV68eGHtIRAEQRAEQRBaMKub/YkTJ6B+/frg4uICBQoUgE6dOomOh4eHg7+/P7i6uoKnpydMmjQJMjIyRHX+/fdf+Oabb8DZ2RnKly8P27ZtM+eQCYIgCIIgCIIgCMLmMZtl/uDBgzB06FBYsGABNG/eHDIyMuDp06fsuEKhAH9/fyhSpAjcuHEDoqKioF+/fuDo6AgLFiwAAIDQ0FDw9/eHESNGwO7du+HChQswZMgQKFq0KLRu3dpcQycIgiAIgiAIgiAIm8YsynxGRgb8/PPPsHTpUhg8eDD7vUqVKuz/z549CyEhIXD+/Hnw8vKCWrVqwdy5c2HKlCkwe/ZscHJygvXr10OZMmVg+fLlAABQuXJluHbtGqxcuZKUeYIgCIIgCIIgCCLHYhY3+/v378P79+9BKpVC7dq1oWjRotCmTRuRZf7mzZtQvXp18PLyYr+1bt0aEhISIDg4mNXx8/MTtd26dWu4efOm1v7T09MhISFBVAiCsH1IdgnCPiHZJQj7heSXIOwXsyjzb9++BQCA2bNnw4wZM+D48eNQoEAB+O677yA2NhYAAKKjo0WKPACwv6Ojo7XWSUhIgNTUVI39L1y4EPLly8dKyZIlTXZtBEGYD5JdgrBPSHYJwn4h+SUI+0UvZX7q1KkgkUi0lufPnwPHcQAAMH36dOjatSvUqVMHtm7dChKJBP73v/+Z5UKETJs2Db5+/cpKRESE2fskCMJ4SHYJwj4h2SUI+4XklyDsF732zE+YMAEGDBigtU7ZsmUhKioKAMR75J2dnaFs2bIQHh4OAABFihSBO3fuiM6NiYlhx/j/8r8J67i7u4OLi4vGMTg7O4Ozs7NuF0UQhM1AsksQ9gnJLkHYLyS/BGG/6KXMFy5cGAoXLpxlvTp16oCzszO8ePECmjRpAgAAcrkcwsLCoFSpUgAA0LBhQ5g/fz58/PgRPD09AQDg3Llz4O7uzhYBGjZsCCdPnhS1fe7cOWjYsKE+wyYIgiAIgiAIgiCIbIVZotm7u7vDiBEjYNasWVCyZEkoVaoULF26FAAAunfvDgAArVq1gipVqkDfvn1hyZIlEB0dDTNmzIDRo0ez1cERI0bAn3/+CZMnT4ZBgwbBxYsXYf/+/XDixAm9xoOIAAAU0IMgrAgvf7w86gLJLkFYH5JdgrBPDJFdYX2SX4KwHjrLL5oJmUyGEyZMQE9PT8ybNy/6+fnh06dPRXXCwsKwTZs26OLigoUKFcIJEyagXC4X1bl06RLWqlULnZycsGzZsrh161a9xxIREYEAQIUKFRsoERERJLtUqNhhIdmlQsU+iz6yS/JLhYptlazkV4Ko53KdHcJxHHz48AHy5s0LEonE7P0lJCRAyZIlISIiAtzd3c3en61C9+E/6F4AICIkJiZCsWLFQCrVLfYmya71oHuRCd0H+5BdAPq34qH7kAndB8NkF4DevdaC7kMmdB8y0VV+zeJmb2tIpVIoUaKExft1d3fP0Q8hD92H/8jp9yJfvnx61SfZtT50LzLJ6ffBXmQXgP6teOg+ZJLT74O+sgtA715rQ/chE7oPusmvWfLMEwRBEARBEARBEARhPkiZJwiCIAiCIAiCIAg7g5R5M+Ds7AyzZs3K8Tk76T78B90L+4D+nf6D7kUmdB/sB/q3yoTuQyZ0H+wH+rfKhO5DJnQf9CNHBMAjCIIgCIIgCIIgiOwEWeYJgiAIgiAIgiAIws4gZZ4gCIIgCIIgCIIg7AxS5gmCIAiCIAiCIAjCziBlniAIgiAIgiAIgiDsDFLmCYIgCIIgCIIgCMLOIGXeSObPnw+NGjUCV1dXyJ8/v9o64eHh4O/vD66uruDp6QmTJk2CjIwMUZ1///0XvvnmG3B2doby5cvDtm3bzD94M7N27VooXbo05M6dG+rXrw937tyx9pBMypUrV6B9+/ZQrFgxkEgkcPjwYdFxRISZM2dC0aJFwcXFBfz8/ODVq1eiOrGxsdCnTx9wd3eH/Pnzw+DBgyEpKcmCV5FzIdnVDMkuya4tQ7KrGZJdkl1bh+RXMyS/JL+GQMq8kchkMujevTuMHDlS7XGFQgH+/v4gk8ngxo0bsH37dti2bRvMnDmT1QkNDQV/f3/4/vvv4eHDhzBu3DgYMmQInDlzxlKXYXL+/vtvGD9+PMyaNQvu378PNWvWhNatW8PHjx+tPTSTkZycDDVr1oS1a9eqPb5kyRJYvXo1rF+/Hm7fvg1ubm7QunVrSEtLY3X69OkDwcHBcO7cOTh+/DhcuXIFhg0bZqlLyNGQ7KqHZJdk19Yh2VUPyS7Jrj1A8qsekl+SX4NBwiRs3boV8+XLp/L7yZMnUSqVYnR0NPstMDAQ3d3dMT09HRERJ0+ejFWrVhWd17NnT2zdurVZx2xO6tWrh6NHj2Z/KxQKLFasGC5cuNCKozIfAICHDh1if3Mch0WKFMGlS5ey3+Lj49HZ2Rn37t2LiIghISEIAHj37l1W59SpUyiRSPD9+/cWG3tOh2RXDMkuya69QLIrhmSXZNeeIPkVQ/JL8msoZJk3Mzdv3oTq1auDl5cX+61169aQkJAAwcHBrI6fn5/ovNatW8PNmzctOlZTIZPJICgoSHRNUqkU/Pz87Paa9CU0NBSio6NF9yBfvnxQv359dg9u3rwJ+fPnB19fX1bHz88PpFIp3L592+JjJsSQ7GZCskuya2+Q7GZCskuya4+Q/GZC8kvyqyukzJuZ6Oho0YQEAOzv6OhorXUSEhIgNTXVMgM1IZ8/fwaFQqH2mvhrzu7w16ntHkRHR4Onp6foeK5cucDDwyPH3CdbhmT3P0h2SXbtCZLd/yDZJdm1N0h+/4Pkl+RXF0iZV8PUqVNBIpFoLc+fP7f2MAmCUIJklyDsE5JdgrBfSH4JwnrksvYAbJEJEybAgAEDtNYpW7asTm0VKVJEJRplTEwMO8b/l/9NWMfd3R1cXFx0HLXtUKhQIXBwcFB7Tfw1Z3f464yJiYGiRYuy32NiYqBWrVqsjnJgk4yMDIiNjc0x98nUkOwaB8kuya61INk1DpJdkl1rQvJrHCS/JL/GQJZ5NRQuXBgqVaqktTg5OenUVsOGDeHJkyeih+/cuXPg7u4OVapUYXUuXLggOu/cuXPQsGFD012UBXFycoI6deqIronjOLhw4YLdXpO+lClTBooUKSK6BwkJCXD79m12Dxo2bAjx8fEQFBTE6ly8eBE4joP69etbfMzZAZJd4yDZJdm1FiS7xkGyS7JrTUh+jYPkl+TXKKwdgc/eeffuHT548AB///13zJMnDz548AAfPHiAiYmJiIiYkZGB1apVw1atWuHDhw/x9OnTWLhwYZw2bRpr4+3bt+jq6oqTJk3CZ8+e4dq1a9HBwQFPnz5trcsymn379qGzszNu27YNQ0JCcNiwYZg/f35RdFJ7JzExkf17AwCuWLECHzx4gO/evUNExEWLFmH+/PnxyJEj+PjxY+zYsSOWKVMGU1NTWRs//PAD1q5dG2/fvo3Xrl3DChUqYEBAgLUuKUdBsqsekl2SXVuHZFc9JLsku/YAya96SH5Jfg2FlHkj6d+/PwKASrl06RKrExYWhm3atEEXFxcsVKgQTpgwAeVyuaidS5cuYa1atdDJyQnLli2LW7duteyFmIE1a9agt7c3Ojk5Yb169fDWrVvWHpJJuXTpktp/+/79+yNiZpqN3377Db28vNDZ2RlbtGiBL168ELXx5csXDAgIwDx58qC7uzsOHDiQvdAI80KyqxmSXZJdW4ZkVzMkuyS7tg7Jr2ZIfkl+DUGCiGgemz9BEARBEARBEARBEOaA9swTBEEQBEEQBEEQhJ1ByjxBEARBEARBEARB2BmkzBMEQRAEQRAEQRCEnUHKPEEQBEEQBEEQBEHYGaTMEwRBEARBEARBEISdQco8QRAEQRAEQRAEQdgZpMwTBEEQBEEQBEEQhJ1ByjxBEARBEARBEARB2BmkzBMEQRAEQRAEQRCEnUHKPEEQBEEQBEEQBEHYGaTMEwRBEARBEARBEISd8X+VBgVbUmC2HgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] @@ -583,7 +731,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -593,12 +741,12 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGFCAYAAAASI+9IAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAADMGklEQVR4nOydd3wT9f/HX5ndu6ULKGVvKEMoe28EBMSvgCBLEBABmTJUBESQJSgIInuIDGXIRqBsCi0boYzuvUfm5fdHfp+Pd8klTdu0jfaej0cfkMvl7nJJPq/P5z1FOp1OBwEBAQEBAQDi8r4AAQEBAQHbQRAFAQEBAQGKIAoCAgICAhRBFAQEBAQEKIIoCAgICAhQBFEQEBAQEKAIoiAgICAgQBFEQUBAQECAIoiCgICAgABFEAUBAQEBAYogCgICAgICFEEUBAQEBAQogigICAgICFAEURAQEBAQoAiiICAgICBAEURBQEBAQIAiiIKAgICAAEUQBQEBAQEBiiAKAgICAgIUQRQEBAQEBCiCKAgICAgIUARREBAQEBCgCKIgICAgIEARREFAQEBAgCKIgoCAgIAARRAFAQEBAQGKIAoCAgICAhRBFAQEBAQEKIIoCAgICAhQBFEQEBAQEKAIoiAgICAgQBFEQUBAQECAIoiCgICAgABFEAUBAQEBAYogCgICAgICFEEUBAQEBAQogigICAgICFAEURAQEBAQoAiiICAgICBAEURBQEBAQIAiiIKAgICAAEUQBQEBAQEBiiAKAgICAgIUQRQEBAQEBCiCKAgICAgIUARREBAQEBCgCKIgICAgIEARREFAQEBAgCKIgoCAgIAARRAFAQEBAQGKIAoCAgICAhRBFAQEBAQEKIIoCAgICAhQBFEQEBAQEKAIoiAgICAgQBFEQUBAQECAIoiCgICAgABFEAUBAQEBAYogCgICAgICFEEUBAQEBAQogigICAgICFAEURAQEBAQoAiiICAgICBAEURBQEBAQIAiiIKAgICAAEVa3hdQkWEYBmq1GiKRiLO9sMfW3l7YcwICAhUHQRTKEYVCAZVKBblcTgdlnU5ntB97wGY/b+o1fAP8q1evULlyZchkMrPHN3zMdyxBtAQE/rsIolBOaLVaqFQqSCQSSCSSEh2LT0gMiYqKgq+vL+RyudHrDF9v7njFFS2lUonnz5+jYcOGRR7gBdESECg7BFEoJ1QqFRiG4QzSxcWSAYnsU9iAWhrodDrodDokJiaicePGRXod+1/D7eZew4a8z5ycHDx79gzNmzfnbLdkpWUOQbQE/ksIolAOMAwDlUoFsVhcZj9WkUhk0YqitM7NJ0qWvM6aMAyDvLw8o5VZce9LcUQrMzMTERER6NixI91mDfOgOQz31+l0yMvLg7OzM8Ri41gTQbQqNoIolAOpqanIysqCr69vmZ2zPEXBFs5vjuIOSMV5HZkIFMVkaG3RUigUuHr1Krp3726RoJWWaCUlJcHT09NotVzeK62KLlCCKJQxDMMgNTUVaWlp8PPzK7OB0pYH5bLi3/pjLy3RKqkvi1Dc79Xjx4/RokULo+CH0vBpmdrfEIlEYhWT7r8ZQRTKGJVKBaD4P6TiUt6iwP6B/lsHZ2tgK8Jszc+guMfS6XQQi8W8JixrYuk9J76vio4gCmUIwzBQKpXlMkCXtygI/EN5i6KtfA/KaoJg6Tls5b6UN0JGcxmiVquh1WohlUrL5QtoKysFgfLFVlZrDMOU+iqhqNjCfSlvbOsT+Q9DYvVFIhHEYnGZD47lcU42tvJjE0RJjy18HrYiTgJcBFEoI8gqQSKRQCQSgWGYMr8GWxgQK7ow2cpnUN73gtyH8r4OAWMEUSgDdDodFAoFgH9i9ivqSsEWBsXyprwHQlv4DARRsF0EUSgD2KsEoPycvrYwGAjYBuU9GAuiYLsIolDKEF8CwE2OEVYKFRNbeP+C+YgfW/hsbAFBFEoZpVKJ/Px8TqKQWCymPgUhea3iUd4DoSAKprG16ykPBFEoRXQ6HWJjY/H48WOj1P2KZj6ylZVCeZ/fFrCFe0CuwdZCUgUEUShVNBoNGIbhTbOvqOYjAdugvD8PslIu7+sQMEYQhVKCnZdgC6JArqm8sYVrKE9s4f0L1yBgDkEUSgmtVgu1Wg2JRGL0A6jIyWu2cA3lTXlfh634FNgl1W0BW7ue8kIQhVKAHXHEJwoVOXlNwDYo78HPFoRJgB9BFEoB0mqT1M43FICK7FOo6MJkC+/fFgZkW7gGAX4EUSgFVCoVZ3nMZz4Cyr5Ury0MSAK2MUsvbwRRsF2E0tlWhqwSSI0jvhk6e9ackJCA7Oxsuqog9eX5/or7fHkV4TNEyJWwHcp7QLZFURC+m3oEUbAySqUSDMNAKtXfWlPmIwAoKCjA06dPERQUBEAfpscOY2UYxuSfqedNdabS6XRISUnBy5cviyw2JRUstiip1WpoNBq6vawHBuGHbxsDMmmwI2B7CKJgRQx9CQD/7Jg8FxcXB09PT9SpU8dq10BMUoZi8fjxYzg5OcHf37/YglOYYBV2XAC4fv260b0oiSAV5TmlUgmdTofMzEyLVlelgS2Iki2IAsMw5X4NAvwIomBFUlJSkJOTA19fX7rNnPkoISEBTZs2teo1kNm34SxMJpNBLpfD3d3dqucrCmfOnEGrVq3g6OhYZEEy97xGo7HodRqNBlqtFvfu3bNodWWJSa6oYpWXlwe1Wo34+PhiiZ01VleCMPEjhKTqEUTBSjAMg9TUVGRlZcHPz49uN+dodnR0hJubW5lcny3Y80UiESQSiVGj9rIiJycHN2/eROfOnTnbTa2uLBGpwvYxFKyCggJoNBrExMQU+lpTgQgl9T0VFBRAqVTi+fPnVjUjFmVAtUVRENAjiIKVIKYJQ8hgzP4RkP0CAgLK7IdhK6JQ3tfAh6nVVWmQnJyM58+fo1WrVhbtX1xTn7nnyfeR+L+Ke1xD2PexMEHRaDRQKpWIjIy0it+qtFdXFQlBFKwAwzA04shc+Cn5YiYlJQFAmZpybHVAtjYajQb37t1DgwYN4OjoWN6XY0RRZ8hkdcWusltS4uPjodFo0LBhw2IfoySrK51Oh6ysLBQUFMDFxcXoea1WWywhJNuLu7ry8PBAgwYNSnJr/xMIomAFVCoVGIaBRCKhDlWC4epAp9MhOjq6zJO5bEEUyuIaHj9+jPbt2wMAOnbsiB07dnDMeeV9D2yFks6cS7q6ksvlyMzMRPXq1Ut0HXwUZpIz9Vx5mTVtDUEUSgjDMJwmOqacykQ00tLSoFareR3QpYktiAJQ+oNybGws/f+lS5dQvXp1DB06FJs3by7V8/6bsAV7fmleQ3FWV0QsBISM5hLDbrVpLtKIbI+OjkblypUhFovL9EtoC6JQFgNRnz59kJubi8mTJ0MqlYJhGBw4cAABAQEoKCgo9fMXRnl/BrZ0DeUtTAL8CKJQAtjlscmf4UDP9ilkZWUhJycHgYGBZT5I24oolMU1SKVSfPfdd0hMTKSRRvn5+cjKyrL6uVauXAkvLy8EBgaiR48eWLFiBRQKhdnX2MJgWN7XwDBMmTj2i4LgkNZjW5/KvwyVSkVXCYD5nASGYRAdHY2AgADIZDLOAFkWA6UtiEJZ4+zsTBMDHRwc4O/vb/VzSCQS5OXlIS0tDZcvX8bixYsRFBSE9PR0q5/LWtjCLN0WrkGAH8GnUEzY5bHNZS+T7fn5+UhLS0Pr1q0BlH3VUlsQhfK4hgsXLgAA6tWrVyrHHzx4MOLj45GQkIALFy4gIyMDWVlZqF+/PhITE0vlnCXFFgZkW7gGAX4EUSgmbF8CwVSfBLFYjISEBFSqVAn29vZm9y0tbEEUyoOXL18CAHr37l0qxw8KCsKqVasAACdPnsQ777wDQG+u4jOR2MJnYCvXIIiCbSKYj4qBTqdDXFwc8vPzOV9sc7P/lJQUVK1alT4WfAqlz7Vr16DRaAAAY8aMAVB6A+L27dsxePBgAHqfxokTJ0zazG1hMCzvaxBEwXYRRKEYaDQaREdHIzc3l7Pd1Oxfp9PBxcUFzs7OnH0FUShd9u3bR/+/aNEiZGZmWv0cr169wttvv42JEydCp9PByckJd+/epbkStogtDMi2cA0C/AjmoyLCjjjiy1423EYqi7ITqAz3LYsfhy2IQlnDdizv2bMHCoUCo0aNstrx3333Xfzxxx/0sZeXF8LDw40+aza28BnYyjUIomCbCCuFIqLRaGjyGV/2suEPLiEhASKRyKjkAntVUVGij8r6GubOnYu5c+fSxyEhIVY7dnJyMhUEOzs7DB8+HM+fPzcrCARbGAzL+xpsVRRs8ZrKGmGlUATIKkGn0/HWOTI0H5EwVL70+fIwH/1XyczMxMyZM+Hl5YVvv/2Wbs/NzYWfnx+kUik0Gg2OHDmCZ8+eoUePHiU+586dOwHoV3wZGRk2F3NvDlsYkG0xT0FAjyAKRUCr1UKtVtNWm3yJauyBPjk5mRbb4hOQshaF8k7jL633XLduXeov6Nu3Lzp27IgVK1bgq6++glarpfuFh4cjPDwclSpVwtKlS0t0zhMnTgAAqlat+q8b3Mp7xUiuobyFSYCff9e3uRxh5yUUNtCTv+joaFSpUoXX11AeeQr/VdgO5NmzZ8PPzw+LFy/mCAKbXbt2Gb2+S5cu2LRpk8XnfPjwIQAU2aFsCwMyUP7fB0EUbBdhpWAh7FabgPnsZZ1Oh4yMDCiVSvj7+yMhIYHX/0Aa8zx79syotK8lDU8sqSf/8OFD7Nu3DzNnzoRSqUR2drbZ15fmD7U0VgqGJSUiIyMLfU3btm3p/0NDQ3Hv3j0AwI0bNzBx4kSTr9u/fz+WLVuGb775Bjk5OQCAESNGFPmay3swtIUB2RaugY2tiLUtIIiChRBfAjt72VydI1L4jpiaTPkfXr58icqVK8Pb27vINeSJOcvUaxQKBfr16wcAaNGiBapXr47bt28X2iilpEJk6k+tViMjI6PI5zE3eGzYsMHs5yaRSIxWDPXq1cPjx4+xc+dOKggAaGIhH/n5+Rg9ejQA0AQ1iURi06GnprCFAdkWrkGAH0EULMDQlwCYXylkZWUhKyuLNjExtW9BQQEUCgWCgoIgl8utft3Pnz+n/5fJZHB3d+d0/Cpu3fnCxMuUUKnVaiQlJSE1NdXsOQ0xt4oiJbGrVKmC2NhYep+9vLwwdepU9OvXD23btqWmPwBYtmwZli1bZnSeY8eOIS0tDWKxGPv27cOVK1fQoUMHxMfHY/fu3Ub7E9NgUbCFGaktXAPDMIIo2CiCKFgAaVsolf5zu0QikdEMlHzJY2NjaeE7sp3PfJSZmYnAwMBSa+5x8+ZNAHpR6tOnD6Kjo42uwdpdvcxx/fp1+Pr6onLlyiZF0FxHL8O/3Nxc2j/h/fffx/Pnz3HhwgXMnDkTAwcOBKAffJydnTmiYAqdTodHjx6BYRjMnTsXKpUKR44cMbl/9erVce7cuSKtoAoKClBQUIAnT56UaNVVUvNfeQ/IOp3O5hz0QpVUPYIoFALbl2BY0oKUUGBvA8ApfAfw29IZhkF+fj4qV65catceEREBAHBycrKJPIU7d+5g1qxZAIArV66gZcuWRvsUpaPXzz//TM0Q8+bNM2n+8fLyQlpaGgB9tVRnZ2ekpKSgUqVKSE5OBgB8/vnnaNeuHX2NoeD7+PigcePG+Oabb+h1f/zxx2jVqlWRVlJarZYmPxZm/its5VZc8x/pK3Hv3r1iC1FJzX+C+ch2EUShEFJSUhAREYE2bdpwtpua/QOAp6cnHBwc6HY+81FeXh6cnJxgZ2dXSlcO/P333wD0g6ItiAK7zEf79u3RsmVLrFy5kiOgRYGYdOrWrWvWH8A2o8nlcty+fRsXLlyg9ZAAcHwLAODo6Eidyc+fP0eVKlXoc6NHj0Zubi46deqEjh074scff8Rbb71l0TXHxsZCq9Wibt26Fu1vDktWVHz7xMXFgWEYeHh48L6GZOEXx4RoiVCJRCJoNBqIxWJqrrOWABXltQL8CKJgBvID0Wq1RrMavkFWpVIBAAICAszuq1arUVBQAF9f31K6cuCnn37CmTNnAID2byhv6tWrh4ULF2Lp0qVgGAa3b99Gp06d4O7ujoEDB2LhwoUIDAy06Fj5+fl48eIFAFAHMB/Hjx/n3PusrCw4OzujY8eOnP0uXbrEeezi4oKcnBy88847HEEAQENX27dvj0ePHqFr165ISUkxK0wEawpzcc1/pNlQtWrVrHYtBEvNf1FRUZDL5fD19bXIj0WEqrj+Lz4MRSIkJMSiz/C/jiAKZiARR3w/ZL7Zf1xcHACYLWlB9pPL5dSXYO2l9GeffcaJyhk2bJjNJK99+OGHmDdvHr7++mv88MMPyMzMRGZmJrZv347t27cjMDAQw4YNw0cffYSgoCCTx1q3bh29b5MmTTK5H59grFu3jgomwdCMl5+fDwCoVKkS73FXrlyJ27dvAwA++eSTIg0mtiDQpXUNlpr/YmNj4eTkZFFZEGtQmKBoNBo4OTmVybXYOsIaygQMw0ClUtE+v4YYDrJarRaxsbEQi83XRGIYBrGxsXB1dS0Vc86bN2/www8/AAD8/Pywf/9+LFiwwCYGIoJYLMaiRYuQmJiICxcuoEuXLtTxHBcXh9WrV6NOnTpwc3ND06ZNsWDBAqN7SkxH9erVM+m0/vTTT40q2QLA119/TZ3wBEP/Bsl/4OvWdv/+fSxevJiev6TZ0WVNeZsRyTWU5XdSLBZDKpVCLpfD3t4ejo6OcHZ2houLC9zc3ODh4cEJJKnICHfBBOxWm2S1YK53QkJCAuzs7Ojqgg1736SkJEilUjg4OBg5qq3BkCFDwDAMZDIZ7t+/D1dXVwC2V+Zi7ty5SElJwc8//4yTJ0+CYRgcOnQIa9euxf3796FWq6FUKvH06VM8ffoUDx48wO+//w5AX9OINM9h+wXYaDQakxnKfIMiyecgqNVqAOCdyY4ePRoMw0Aul+P8+fMWvnvT5y4PynuSIDiabRdhpcADwzBQKpUch5S54ncMoy98R+rgmNpXp9MhJibGZOmL4pKdnY1WrVrB1dUVDx48AAB8+eWXVBDINZQ3RBR27NiBtWvXYs+ePUhNTQWgF86hQ4fi6tWryMnJwZ07dzBz5kzUqlULAHD69GmMGzcOmZmZWLt2LQ1pnDBhAu+5Zs+eXaRr69OnD+cxiT4y9Cfs378fT548AQA0a9aMc48tpbw/C1sYkG3hGgT4EUSBB9Jq05wosAf1lJQUAHr7s6moJFL6QqFQwM/Pz2rRQAzDoHXr1oiMjKSO7nr16mHGjBlG11DeKwXCRx99RP/v7e3Nu0/Dhg2xdOlSREZGokaNGgD0JiM/Pz988803AID69eubNB39+OOPvNv5TASurq6c4xB/AgCOX+OLL77A6NGj6ed248YNIzH5N2ALAzLD2F7ymq1dT3khiIIB7CY67GQWvoGezP7Zhe/4VgBkW0xMDAIDAyGRSHh9D8Xh7bffpqaUESNG4Pfff0d4eLjRfrbwhReJRNizZw997OLiUuhrxGIxrly5gmrVqtH3QMxuhhFEhOTkZJOCyzbZkePVrFmTbrt06RKaNGlCH5OVwpAhQ6gYsVmxYkWh78HWsAUTli0IkwA/gigYoFKpoNFoaJhfYSuFjIwMFBQU0DBUUysFlUqFjIwMGuVijZXCnDlzcO7cOQDA0KFDsXXrVvTs2ZM38qO08xQYhsFnn32G7t27m92H3e/g/ffft+jYnp6eePr0KXJyctCrVy+6nd31jA27F7Y5yKBE+ivs3r0bPXv2RExMDACgadOmkMvl6NGjB44fP8557dixY5Gamlrkxj1lPSA3b94cnp6euHjxImd7eQ/ItpjRLKBH+FRYGK4SAJhdKRgWvmNvN9w3JycHlSpVoslqJR2kT506hXXr1gEAGjdubFQO2pDSFoWDBw9iw4YNuHLlCn766SfefbZu3Yq8vDz62JST2BRSqRRPnz6lj2NiYtC3b99i914mnykxZ7Hvj5OTE8aMGYOmTZvi8uXLdHvNmjURGxuLjRs3cpLxbJE3b97g0aNHyM/PR+/evTF16lQAtjFLt4VrEOBHEAUWxJfATgYiAsE30Gs0GmRmZnJi3PnMRzqdDvn5+RynZUkH6dWrV9P/JycnU4etKYp7PhLDXRjDhg2jtv8ZM2YgMTGR87xKpcK+ffvoY7lczjHTWEJmZiZev34N4J9Q0fPnz6Nq1ap0dk/+tRQXFxf4+/tj//79GD9+PN2el5eHTz75hCNCMpkMd+7cMekHsZTSHAwfP36MGTNmQKFQ4NChQ5zntmzZgjdv3gjmIx5s4Z7YCoIo/D86nQ7Z2dm8DjBTZbLVajX8/f05Tkq+fXNyciCXyzk2dLZPoThfyEWLFtH/JyYmGiVjGVJUUUhMTISvry8cHR3h6uqK+/fvF/qaU6dOQSKRQKPRGLW8HDVqFA3zBLh2fEtZs2YNAP29e/LkCQYNGgRALzgxMTGIi4tD/fr1zR7D0NFMCuexBYENOzt9zJgxJc54Le7gExYWhmvXrpndJzc3F82aNcMPP/yA3r17U5MRO3M+KSkJgG2Yj8r7GgyxtespLwRR+H/UajXu3LnDMW8Q+Gb/JI/BMGTRcPBlGAbZ2dmcWkh8+xWVdu3accoUsB24fBTlfGFhYRg9ejQth8AwDLZs2VLo66pUqYLly5cD0Ndd+uqrrwDonbeG1UbN+R5MsX//fgB6c5m9vT1d0Tk4OKBx48Zo0aIFR3gIbNs1e9UzaNAgLF++HL169eJ93eLFi+k9trOzw3fffVfkay4pGo0GK1asQK9evdClSxcqYoaoVCo0bdqUs+3Ro0cAuDWnWrRoYRMDsi1cgwA/gihA/wVVqVQmB06+2X9KSgrEYrFRSQvDqKKkpCSIxWKj8tjWsPGTKqiAcVVPQyw9365du9CtWzf89ddfAPSNZLZu3Upn6YXxySef0D4SK1asgEKhwLBhwwCAcw/Gjh1r0fEI6enpePPmDYB/ZvWnTp0CAHTt2hUtWrSgDXwMMSVA9+/fR+XKlel7ZRMYGIhBgwbR2fmUKVOslvFq6WD48OFDVKpUCYsXL6ZiNmTIEM4++fn5WLFiBerUqUPLiANAhw4d6KqArG6cnJysmh9TEgRRsF0EUYB+NqZWq03+YAy3q9VqpKam8n6p2YMvCUP18PAo9JjFwd7eng5UXbt2NbuvpaJgWCRNq9Xi888/L9KAePDgQVoaulmzZtQRTCJ17O3tUbt2bYuPB/zjQ5FIJBg1ahQuXLhAS1g8fvyY+hr4MBW6GhUVRY/JRiQS4cyZM1S4HB0dsWTJkiJdb0m5ffs2QkNDac5EgwYNsHfvXk77z9zcXCoaCQkJnNcXFBTQiQIRBXZ2dnkPyLaYpyCgp8KLAok4IiFyltQ5iouLMxl5wh7sSZ9mNzc3s/WQ0tLSkJCQgKSkJKSkpCAtLQ0ZGRnIyspCTk4OcnNzkZ+fD4VCQUNmGYZBeno6nUF+8803WLx4sclIHHI+U8KQnZ2NL774AnFxcThw4ADnuaSkJDRu3Nho4DFFcHAwXS2QHIoBAwbQ3gXFKRv966+/AtCbjqRSKTVTsc9hKrvY09OTd3utWrXw3XffISsrC+7u7nS7TqfDyJEjab5Hv3790Lt3b7z33nvo2rUr5syZQxMFi4olwnzp0iV06tSJdvs7ceIEwsPDaRvQ9PR0uLu7w9vbm37+VatWxdq1a+kx1q9fD0Dv0CcrBpIdbguzdFu4BjZCg51/qPC1j8gqgSSUFbZS0Gq1iImJQY0aNWi/AjZsAWEnq5kqfZGbm4uIiAi4uroWufyvSCRCcHAwXr16hby8PKxYsQIrVqzAqFGjMGrUKN7a8Q8ePOCtLT9q1CiTSW86nQ5///03goODYW9vj2nTpqFhw4Zo3749PD09eTt/sVcWYrEYu3btooMzO9fAEtLT02nXOBI+atj/QCaT0eYxbKpWrUrNTmxWrVqFRYsWYebMmTh9+rSRmN69e5e+DyJIhKtXr+Lp06e4du0aevXqVWg4sKXk5+fjyy+/xPfff0/rV509exZNmzbFxx9/jEaNGmHSpEl49eoVLdgHAHXq1EFkZCQAfRFANqRNKaDPWQBsY0AW8hRslwotCsSXAIAOaoWtFBITEyGXy+Hu7m5yX51Oh7y8PGRkZKBu3brIyMjgFQViXvL390ejRo0KvVa+uvG3b99GWFgYFixYgIcPHwIAXr16herVq3P2U6lUSE1NhYODA+c4ZNXRrl07XlEwvG6FQsHJ4pVIJGjYsCE+/PBDVKtWDQkJCfDx8aGmGUBvKti5cyed1bZs2RJ3796lYvLixQt4eXnh2rVrWL58OWrWrIlt27bB3d0dYrEYK1eupJ+Rj48PPv/8c071U5FIhN27d1PfBRuZTMZZVRDat29PTTPsyK2AgADEx8fTx+SaSbFDwvnz56HRaHDw4MEiiwJ7QM7OzsbGjRuxd+9evHjxgt5vqVQKmUyGrl27cvxF9evX55TwuHr1Kh3s+VaJzZo1o59F586di3SdpYktCJMAPxVaFNitNgFjJzGBrBRIslq1atWoHdpU9dSYmBiarGYqy5lhGCQlJVnUtctcnfpevXrB3d0dnTp1AgBs2LDBqLqnSqXCixcvUL16dd6mLI0bN8aKFSug0WioaaxDhw5wdXVFQkICFQy5XA6xWExnqlqtFpGRkfj000/h5+eH7OxsTu0gQJ+5fPXqVQB6+3ajRo1oiZA1a9YYJbs9fvwYX331FRYuXAiGYWh1VIZhMHjwYM79rly5Mn788UfegR/QrzIMkUql+PLLL3n3ZwsCoWrVqnSl4ufnhzNnzqBx48YA9J8LCTogf2TVydcF7NWrV/j888/x8OFD3ognsvpLTk7mLft98uRJej+GDRuGevXqYfv27UhPT+dd5R48eJD+n3S4s4UB2RauQYCfCi0KxJdAvpymzEdkAE9JSQHDMPD19aUzSIZhjJLd1Go1EhMT0aJFC7qNr0yGWq2Gq6urRTWACoPMHp2dnbF//37s3bsX7dq1w9atW+k1AIXbtKVSKb1eYj8/cOAARo0aBQAIDw9HrVq1oNFo0KtXL1y9epUe0zBhjbBt2zaaP1C7dm1OGQpT2c/NmjVDSEgIUlNTqS+CwH4Pnp6e2Ldvn8kYfr6IJI1Gg5MnT5q6BRSRSIS33nqL9l7w8/PDnj17OFE+APD06VOLWlMuX77cqI8DOU9QUBB69+6NQYMG4fTp0ybDX0kWOwAcOHAABw8etKiGllwup8mZWq2Wtxx8WWJromALEVm2QoUVBdI0XSKRcEpamDMfxcXFcQrfAfw1kXJycuDm5kZn3KbEhuQ5WOMLSRKVWrVqhfDwcLx+/ZpzXEtFgb3PF198gZkzZ9JZdZUqVaizUiqV4ty5c0hPT0eDBg3o4MueVRMYhqF2fbYJ49atWyav4aeffkJQUBAtBW6K+/fvW5RYVxwmTZpEGxZVq1YNERERsLe35zTV0el0aN68uVFoMnmOCMSCBQuoINjZ2WHEiBHo2rUrqlWrRluQkn137NhhdCyJRMIbdky+rzKZDBqNxuTnq1KpOC1HMzIy8PjxY7r6LOs/YtJkl6gnqymB8qXCioJSqQTDMEYOUVOO5ry8POTn53MK3wHGNZEAfQYz20fAt1Ig9t9Hjx6hfv360Ol0cHd3R0BAAIKDg+Hv7w9fX18EBgaiSpUqaNKkCSdCxvBYZDb94YcfUpNBWloa5xoAy0Sha9euOH/+PL0msiqKiYnB8OHDUa1aNUyfPh3e3t7w9PTE+PHjaaE7Q0FwcXHBpUuX6IBGspAB01nEgL50x/jx48tskPD29jYqFUIEoXr16oiIiKCZ64aJgjdu3ECXLl2MjikS6XsoX7hwgc7w69Wrh23btpkspHfs2DHekiXs8NL58+fj2bNnuHz5Mvr3749FixbR74ZGo0FkZCSePHmCtLQ0ZGVlITs7G05OTujZsyd0Oh1u374NPz8/Tn9k9h9ZSRQW+MAwDDWBWbIv+0+j0VBnvuE9s6b4sI9nyqxH9jNVhr2iUSFFge1LYA86plYKYrEYaWlpCAwMpCJiaqWQn58PsVjMCYPkOy4ZxEeOHEkdmMnJyUhOTuYkpbGv4bfffuOt379582a6z9GjR6nNmR02WxRR+PTTT2lHMcO6R6SezrFjxyyaoQcEBFBHrJOTE7y8vAAAkZGRePbsGe9rDhw4gDlz5hitdkoTU7WjatWqhXv37nEmD4bRTLdv3+YVBUBvUiMJZ46Ojti6davJqBuGYfDhhx/yPmdnZ4d169bhgw8+MBu1I5VK0bx5c+p8NoR8D2QyWYlLdly6dAm9evVC+/btCy2zYsjZs2fRqlUrODs7F1lQzP0RC0BRX+fm5obQ0NAS3Y//ChVSFHbs2IFq1apRmz/BnJknPz+fU/iOb6Wg0+mQk5MDJycnI7FhHzcnJwf5+flYv349LSXx6aefIiEhAS9evEBCQgLy8vKgVCqpHZhhGIwaNQoJCQlGiWS//fYbAH2TH/L/atWqcTJ1LRWFN2/e0Hh4grOzM5ycnGi8OwBOORBSNK5SpUpG9v9nz54hJycHgD50kpx/4sSJJq9hwIABGDBgAN5//30cPnzY7PWWJnXq1EF4eDjnfj99+pTO2olJZ/HixTh79iwCAwORnp4OT09PhIaGYuPGjXj+/Dl9bX5+Ptq2bYvvvvvOqBjg8+fPMWzYMF7n8vDhw/Hdd9+ZXCkWFWsJ7aBBg6DT6ThVZItyDXwh0+WFJX6ZikKFFIVff/0VPXr0MGrWbmqloFAo4OLiQsteEwxFJCMjA1qt1mgGZrhfTEwMsrKycOHCBQBA7969eRu4EG7cuIFOnTohJycHY8eO5dicGYahdnf2QL1x40beDFZzA4JKpUKbNm2or2XQoEH47bffkJeXh3v37mHNmjXUpMJehbx69QoAjO4PgUT0dOnSBTqdDk+fPjXKM+Dj+vXrRttM2datjUgkMhIEgOsY9/f3p07nsLAwzn6GCYBsvvnmG7Rp0wYhISF49913cfLkSZOVaN3c3PDzzz8X923wYi0nr2GUWVGvwRbEQMCYCvmpyOVyTsw5gS8kVaFQQKFQ8GbLGq4AYmJiTO5HjqtSqZCcnIxZs2YB0BdzKyzOvXXr1hgwYAAA/WCze/du+hw7H4DMyAGgf//+OHDgAOf9FFbqolOnTtQP8fPPP9PG9zqdDlu2bKENfQBuljBZQRTW14DM+tntOA0hx01ISODNoC4LQQD075kU9GPDNpN88skn2LJlC9555x0EBwfDx8fHoh4LKSkpCA0Nhb29Pf744w+zpclLq2dDSUWBvYLjC3EuDFuKPjKX6V8RqbCiwFemgG/QjI2NhZ2dnVFBO7I/GXRJspq7uztvRBLZFhcXh4MHD9LwzY0bN1pk2921axeNcBk3bhxcXFzQsmVLXLx4EQ0aNDDan5ibHB0d4e7ujurVq2P16tUmv/yTJk2ijr8pU6bgvffeg6OjI/3h+vn5cTK4iW9gxIgR1GTEFiXAuLzEy5cv8fjxY96wTEJ6ejo+++wz3jaX1ipIZymGs32GYTgi3KtXL4wcORJ79+7FkydPMG3aNI75RyaTYdu2bWjTpg3dZmo1ZYqS2v35KOmAvGjRIk7XvGnTphX5/ED5118S4KdCioKdnZ3JEsvsmbVGo0FcXBxcXFzMJrUB+lWCr68vZDKZyTpHDMMgMjKSRq/Url3byH5vCrlcjt9++43aldVqNR48eIBPPvmk0NcqFArEx8fj0qVLvE7sLVu24JdffgEAtG3bFqtWrQIATg6CYbbz/fv38erVK+rD4IMvcWzcuHGFXu+GDRuwbds2o+2WNPsxh2H58sIwTGQ7c+YMZ0AjRf1iYmLQuHFjLFiwgO7r5OSEqKgovP/++5wJBd8KlU1ISAjGjx+PoKAgAOANdS1PLl26xGmpKpPJsGzZsiIdQxAF26ZCioI58xF7Jk0K39nb25tNalOpVEhMTESVKlVMdmljGAbJyclYtGgRDYUlGbuWLl27dOmCxMREPH/+HKGhoXSQI3XzAb2d23B2yU6OIx3LCLdu3aIzPX9/f5w+fZo+d+LECQD6wZQUuCNER0ejXr16Fl03G75+FXwUt+CcOfhqI5nDcFbP9uW4ubkhPT0d48aNQ926dY3qYB07dgyVKlUCwF+FtXr16kYVaaVSKS5duoTvv/+ein9piEJRVwobN25EaGgofH190bNnT85zrVq1Ktb5AUEUbJUKKwqmzEdkls8wDGJiYhAUFGQ2qU2n0yEuLg5ubm549uwZvv32W5MrhR9++IGWeF60aBFcXFyKZcusUqUKbty4wTvI5efnIzU1FXv37qUmHrZZ55dffqGhpKmpqejZsycYhoG9vT2uX7/OMdHcuHGDnm/69Ok03NYSnJycivSeHBwcitV4x9rY29vT+0bKQhBIqQ5A/5lWrlwZu3fvhlarpXHwgL62E9tktHr1aqP79vLlS6Ny30OGDKGx8sQMVdT7aAmWikJ+fj7atWuHmTNn4t69ezRSjk1RixuS8wOwKUezUCX1H2znUylDSMq/IeyVQmJiIqRSKby8vMwmtWk0GsTGxiI7Oxtdu3bF9u3bMXHiRI7pRCwWIz8/Hxs2bAAA1KhRg9NEvTiYel1WVhZcXFwwffp0dOjQAXPmzOGYTVauXIm33noL9vb2qFy5MgoKCiASiXDy5EmjekkknJIkWpmqDcWHpSsCQD+TvnnzptEstKzp2rUrLl68SJ3t7OS6/Px8TrhtRkYGLXHSu3dvDBgwAFqtlhbnA/Shwq1bt0bTpk2NQpfZBAcHY+zYsbQkiUajob4Lw2RAa2DJdy4xMRHVqlXDnTt3AOgz1T/44APs3r2b+nvEYjGnv4OlkHshDMK2SYUMSbWzs+OtiUNWBKTwXdWqVekMwpRPISMjA3K5HC1atECtWrXw7NkzPHnyBDVr1sRXX32FKVOmQCQSYdmyZdBoNBCJRDh06JDJ5DdLsbe3h0KhQKdOneDi4oJjx47RQVun0yEpKQlHjhxB8+bNaXIRyeg0FMTly5dzZraA/odLhI0kZj158qRY1yqVSuHq6srrYxCLxTh//jxq167NscmXNZUrV8b58+dx+/ZtAHqh6t+/PwC9IBiaegD9+7pz5w515ANAnz59sHr1auzatYs3ZFMkEsHOzg6+vr6oU6cOJk6caJSQSOpMAUU3eVmKuQFZoVCgZcuWyM7OBgDMmDHDyG/Qrl07iMVio4mEJQjmI9tGWCmwICuC1NRUaDQa+oU3F8qZkpKCKlWqQCKR4Pbt2/joo48gEomg0Wgwf/581KpVC1988QUtaz1p0iRUr17dbJkMS7h27Ro++ugjnDp1ijpEa9asifj4eGzcuBE+Pj4A9A5iEu3j6+vLKUYH6Ac2wxr85HXkPZPBkS+bujCioqIQGxvLEQRiqxeJRNi3bx8101haw8hUtm5JIPkGZCCsW7cuNBoNVq9ejUqVKtHtbJo2bYqrV69i5MiR1E8UFRWFzZs38wpC//79cf/+fYSFheHZs2f4448/eO8pyRoHuP4ia8FnPiJFAseOHYsaNWogJSUFALBp0yZeR3Lz5s1Nluqw5PyAIAq2SoVdKfA5msmKIDo6mha+A0ybTUgNF19fX7pt9uzZ6NChA5YsWYKnT58iKSmJmo18fHw4P7CS9GmuX78+radDykW0a9cOnp6eiIyMpD9qANQWzFcW2lQc/PHjxwHoVySenp44deqURZ3X7Ozs0KJFC1y9ehWOjo5wcXExKg1O7v26deto/gVguankypUrpR6V8+jRI5Od3Ah37tzB3bt36Xdj0KBBnFLVNWvWhJOTEyIjIyESifDjjz/yrpYMadq0KSIiIjBhwoRSC0kF9EUUv//+e9y5cwcpKSlG38XPPvsMo0ePLrXzC6Jgm1TIlYJMJjO5UlCpVMjNzaWVK8l2vsFbpVLBw8ODE10iFotRqVIl3Lp1C/v37+cIxu7duznOtZKIAiE1NZU6Jf/3v//h3XffpVm3fE7KoKAgTllmU6JAnKrkPhAfSGG5AitWrKB1hEQiESpVqsTbP/njjz/GhAkT6OMbN25YtGpq1KgRZs6cWeh+pQ0JM2VfM1sQevXqhYiICGpy69atG7y9vS06dlhYGGJjY2lLTWuSnJyMBQsWoHr16ujduzdOnjyJ5ORk+j10c3ND69atsWXLFnz99ddWPz9gW4lrAsZUSFEwl6egVCo5he8A/vIXubm50Gg0RvVo2AN9nz59cPnyZSxatAhLly41Wm6zm/cUl71799JjzZ8/H3/88QcAoEmTJnj16hXnx2dvb4+rV69i8uTJdICKjY1F1apV8f777+PUqVN0XxJiGRUVhUWLFiEmJgYAsHPnTvTo0YP3WkQiEcaMGUMLxhk6mzdv3kxFkd1OkmEYzorBHA8ePOB0HjN1HcUhODiYd+BmH69KlSq4c+cOb5c6Njt37sTixYtplBspD2LJ9UmlUosFxBIYhsHy5cvRrFkzBAUF4fbt23S15u7ujj59+mDz5s1ITU1FUlIS/vrrL4wcOdJq5zdEEAXbRjAfsVAqldBoNKhSpQpnO99KISYmBnZ2drwx6ERAdDodYmNj8d577+H58+cm8xeeP3+OuLg4GtZIyv2aK/VL/khzGYZhqJO0Xbt2+Pnnn5GTk4MWLVrQ7QqFArNnz8batWtx9OhRDB8+HG/evEFycjIOHz6Mw4cP49ChQ+jbty8nM5ckK1WuXBnvvPMObty4wSn3IJVKodFoUKNGDUilUt4Z/7Bhw9C2bVs0a9YMd+7cwY4dO/D222+jV69emDx5Mm+4IzmuJbBXf8UV2aVLl2L48OEAAFdXV+pHYB8vPj4eb731ltlVTZMmTeDs7EzFKzQ0lH6nyrKcwvnz5/Hjjz/i3LlzHBGWSCQYMGAAvvjiC5qAV5bYqijY4jWVBxVSFGQyGW+eQlpaGqRSqVHSkuFKQaVSISkpCa6urkaDA1tASGtKPz8/Tv9d9nHVajXi4uLQrFkzyOXyIpf8nTZtGk6dOkV/9P369cO8efOQnJwMhmEwfvx4KgqAfmURGxuLWbNmYf369bhx4wb++OMP6tC8ePEiZDIZvvnmG6Ns6Xbt2mHAgAFGZabJwO3s7IwWLVrQezt8+HAsWrSIClhKSgo+/fRTfPjhh1Cr1Rg0aBDGjx9Ps6kNKUoG85IlSzB37txC93NwcOCN6LG3t6elG1xcXDB58mTeFp+W1F7asmULVq9eTZ3NpLR5aXHs2DGsX78ePj4+yM3NRXp6Ol6+fGnkv6hfvz569+6Ndu3aITQ01GpVV4uKUAzPtqmQosBnPlIqlTS81BBD239cXBzc3d0hlUpNzv4B/WoiICCAtrjkS2pLSUmBq6tricwF165dw5gxYzBkyBB89tlnnOdatWqFPn364NNPP6UlKS5fvgxPT0+kpKTAzc0Nhw8fRp06dQDoC+Ft3rwZNWvWxMiRI3H06FGa/LZ//36z18EuodGzZ09MnToVaWlptPR3QUEBPDw8sHnzZkyaNAlKpdJkO86iwjZ9mUIqlXIEgd0ljoiqXC7HsGHDeGsvAfoMYzLYe3h48IY2t2rVin4vgoKCjGbj1pyRnj59Gu+++67JFYi7uztCQ0OxatUq1KhRAwBw4cKFcp0VMwwjzMptmAorCobmo9jYWLi6unKW2QR29JFWq0VsbCzq16+PxMREk9nLSqUSKSkptAyAKadyamoqatWqVaIldf369Wn2MR/e3t7YvXs3oqKiaMnqo0eP0ufZpS3IoPnkyZNi5yU4ODhgxYoVqFu3Lmf7y5cvkZOTg65du6Jz584ICQkptLIqGycnJ96kOE9Pz2K15OTrKe3k5ESTyPgggtC7d2+MGDGCmpvYsD/n9u3b4/Hjx9QUSETkzZs3Re4iRo5Bcmfu3buHd955h57P398fDg4OdJLx8ccf84a8lrf5przPL2CeCikKhnkKpPBdjRo1aG8ANmyTUFJSEuRyOTw9PZGUlGSyImpsbCy8vLxo6KSpCCaGYWhOQUk4fPgwQkNDjWobsVmwYAEGDx5sdL1sk0ibNm3Qrl07/PHHH3j58iUcHR2h1WrpasGSfgYFBQVo2rQp1q9fT+Pce/XqxRFGf39/PH36FJMnT0aHDh0sqrRpKkv6vffeg1wux9q1a82+nm2OIpFmhhjO/H18fCASiTjZzBKJBD/88ANdlbEnDY6Ojvj2228REBCAgIAAODo6cjqCaTQaMAyDtLQ0i7qImaqNlZKSgo8//hharRYSiQSbN29GtWrVjITk7t27Rts0Gg2io6Ph4OBARcYS/5W5VpZFwdZEQSibzaXCigJ7pRAfH09j6k3VOCI/zpiYGFr4jm+gF4lE0Gq1iI+P55S05lspaDQaeHt7l9i+umrVKixYsADOzs4m20oC+hVDQEAAzVcIDg7GhQsXEBoaisTERLi6utLGP1999RUuXbqEQYMG0dlx48aNcebMGQQFBRVa7RMA9UnMnDmTt0aOu7s7rRi7fv16Tllqvn1NrSpatmyJJUuWFHo9bAoLf/Xx8cHy5csxYsQIo2zmt99+G/n5+Thy5IjRsSZPnmy2EuzTp0/BMAzq169v8bWSCDUiEqmpqWjatCnUajXEYjEOHTqEli1bmhQWdr9lIujFaVlJ/gwpSmAEyahXq9V4/Pixxauj0hIoAWMqpCgQnwL5scXExKB27dqQSCQmaxzpdDqkp6dDpVLR3ANTfgJA78z28PDgbGfvm5+fD61Wy9mnuJC8A75WjmweP37MSWB79eoV3nnnHZogpVKp0KhRI2i1WiQnJxsd7/79+/D39y/yzIoMRObyMti5DIbO4JkzZyI6OpqTB8BmwYIFiIuLK9I1mSMkJITT9c3wPuTl5aFhw4ZG78XR0dEicSrqwEXMRWKxGIcPH8aECRPoNe3evbvIReliYmJQq1atYjXwIb8Zw9VMUf5yc3Pp6oRUGba2QPGJiqkVkUgkQtWqVUslUfDfSIUVBWI6SEpKgkQigbe3NwoKCsyuFGJiYlC5cmUahmpqpQDowzfZP37DfePi4iCVSq3SOKZmzZqcCCM+oqKi6MxdIpEgMDAQ0dHRnLaYCoWC01OYD0sFwd3dnZqd+MJN2Wg0Go5Jys3NjYqCo6Mjpk2bxlt7iGBNQRCLxfj999/p4+zsbCNR4GtS37ZtW+zbt89q12HIq1ev8O6779LWq4B+MmBpPw42JTGXsAWquKSmpiIzM5MGNxQXQ4EqrlCRKrfCKkNPhRQFUjqbFL4zNAcZ2jyJ3T0zM5Oz7OdbKRDbO6mlz7evVqtFQkIC7Ozs6LaSfCE7d+6M27dvm5z5paeno1WrVtTccPHiRbz11lv4+uuv8d1330GhUECn09GVErkmT09PNGnSBA8fPuSUzbCEzMxM+p6I/8bUSsEwc5ZUKQWANWvWYMKECTRixVQvDGvRpUsXzmdXmNgCep/G9u3bLTp+UQdkjUaDjz76CHv37qWvDQwMxK5du4yKGFpKedv0rXV+awgUIERDGVIhg4VJnkJ6ejrUajWn8B1g/MMlfgJfX19OyCqfKJD6QIZfVPaAmJSUBDs7O05Ia0lmb2zzjCEKhQIhISF0trthwwZai2jBggXIyMjAli1b6HHID+TLL79EfHw8/vzzT8TExJjMYjYHeU+5ubno3bu3SaepYfgnERGJRIJu3brR6KjRo0cXuuooKYYRU507d6Z5K82aNcOOHTsQHR2NNm3aQCKR4OzZsxYJwunTp7F8+XIsXrwYkyZNQosWLRAcHAxPT084OjrCyckJLi4u8Pb2RrVq1RASEoIOHTrAx8cHe/bsgU6ng1wux7JlyxAVFVVsQSCUtygIeQq2S4VcKdjb20OlUiE6OtrIHAToZw7sLy1x1vFlOrNFQaFQ0FmuqaQ2EplUuXJlTs2ZkkCiagx/6AzD4K233kJSUhIAfQnkrl27cvZJTEzE0qVL6WORSITu3bujd+/enP3OnTvHe25zWcfsENKLFy9i165d6Nu3r9F+plYQM2bMwOjRo+mAuG7duhK35CwMwxXR5s2b6crkxx9/RJMmTQCAOuQtYdy4cbTHgjlIhFJubq5RuGy/fv2wc+dOqxQCLO+VgjAzt20qpFwT81FOTo5R4TvAeNZOBlVD84zhYEbCUPmOQVYV2dnZKCgogK+vr8kw1aJiaqXQo0cPWsNo5syZGDp0KOd8v/32G2rVqsUJw9XpdDhz5gxatWqFuXPnIjc3FxMnTjQZrcM3SBOHnWEIabVq1XjfL7uK6syZMxEREYHmzZtj5MiRuHLlCgB9yXG5XF6k7ODirG7i4uJw7do17NixA4sXL8aiRYsA6FcQRBCKColSkkqlcHd3R9WqVdG6dWv069cP48aNo5+bo6MjvLy84OPjg0qVKqFSpUqoW7cuNm/ejE2bNsHR0bHEomgL4ZflLUp82Nr1lCcVcqVgZ2dHcxPYTdX5ehxotVoqCny+BvIjI2GoDRs2RGpqKq8okFWCv78/zXK2xo+Uzy8xatQohIWFAdDXHVq6dCkiIiKoz2DUqFE0mkcsFuPbb7+FSCTC0aNHERYWBp1Oh7Vr1xYa+8+HQqFApUqVOLH9APDrr79i/vz5RvuTXhNDhw6lq5arV6+ibdu2APTRSGT77NmzzZ6bXQOJzyFcGGFhYbSpEJvVq1cbbUtNTcXEiRMRGBiIgQMHomPHjkZmkUuXLlFxvHHjBo14IWaqzz77jH4H8vPzjfowJCcn46OPPqKPRSKRVRrvlLf5SBiEbZcKKQokWqVRo0ac7Xw+BZKsptFojL7MbJ9CUlIS7O3t4eHhYTJUVa1WIyUlBS1btjR6fUkgKwWlUoljx45h4cKFePr0KQD9gP/bb7/h119/hYODA3x8fFBQUEAHbB8fH9r5DNDH2T98+BDjxo3D/fv3ja7P19eXiqS5RDZDQQD0JqjLly8jMzOTDp6bN2+m/g52s5/w8HBaiXTWrFmQSqW4ffu20fm8vLw4jmm+6reFUVhC3qBBg3iF4p133sGtW7fo+xCJRPDy8kJwcDBq1aqFCRMm0GKCHh4eaNiwIR4/fsz5Dp08eRKAvgBf8+bNoVarkZycjIyMDOTl5UGpVHKujXxnimuTt4VeBoIo2DYVUhSIY9XQR2DYepNEJwUGBvJWOWX7CQpLahOLxcjMzISbmxvtc2DtlUJBQQGGDh3K+xygn4mSstYA0LdvXxw8eNBogGnYsCFu3LgBhUKB77//HleuXEF8fDy6du2K6dOnc8JDi/oeVCoVYmJiEBQUxOloZm9vz+moRhLAXFxcaKE7vtn66NGjOf0hioq7uzumT5+OxYsXm9yHr1Q3wzC4e/cuZxvp2peamorbt29j79699N7ylZvQaDTUdPf555+bzOpmGAYJCQm4ffs2qlevXiInrSAKAoVRIUXh7bffxvbt28225ARAo5N8fX3x/PlzMAzDKZVNBCQzMxNKpZKT1MY3UGZmZqJevXqc17Ojj4r7Qxk4cCB+/vlnjgBIpVIMGjQI1atXR82aNSGXy3Hy5Em8fPkSBQUF+PTTTwttum5vb49Zs2Zh1qxZdNuJEyfo/9kz2GbNmuHatWuIjIzE6NGjzdZNyszMxPXr1zktLklLTkBvciGv/+qrr6hDn12vCdCbipYsWYLt27dzVguW4uPjQ/tEfPnll/T+scXex8eHt5ro4cOHqX3/9evXcHR0xOHDh/Hbb78hOTmZ1mIix9y3bx8ePHgAJycn+Pv7o0mTJoiOjqaf/9ixY01ep1gsRmBgIMf/9W/GFh3NtnY95UmFFIV+/foBgNmWnABodBJJMDPlJ4iJiUFgYCAVDD6zEBEg4ogGuNFLJflSxsfHQyqV0oS8KlWq4PLly0Z1kBo0aAA7OzvUqlWr2Ofq27cvFAoFDh8+jO3bt+PFixcQiUQ4fPgwAH0vgXv37sHBwcHkCmL//v20lShh0qRJ9P/Ehu7l5UW3k7BMNh06dIBYLMb06dOxYMEC3nOZKpUNgAo0OztWIpEgJiYGdevWRXZ2Njp06MD7WrJ68PX1pSHNo0ePpu0rP//8c6xfv55+7gzDcIr2kfsFAAEBAcXKLi4OwkpBoDAqpChIJBJIJBLegmhklpibm4usrCw0aNCA1wFN9tVqtcjKyuKUR+YzHykUCri6unKW/lFRUTh+/DgYRt/0XaFQIC4uDsnJyUhPT0dBQQEnY1On00Emk8HBwQESiYTmORD7vUgkwvTp03kbrZPnrRV98s4775jNpv3yyy9p5I4ha9asMdpGQlWPHTtGS16sXLmSPs/XWpREF5HZPvDPeyShsuacsrm5uRgxYgT+97//0W1arRZnzpyhqxh2y1A2JKmNTDAMWbJkCW2n2blzZ7i6uiIhIQFxcXHIzc2FUqmkgjFjxgyT12htbEUUhDwF26VCigLALXXBhszy4+Li4OfnR5PV+AZUkUgEhUIBHx8fTt0Uw5XCli1bMHPmTPj7+6NDhw5wdnbG/fv3LcqWNUSpVPKucKpWrYoTJ06YXQVYUxQKg28QZ0PCM0kBv1evXqFWrVq0FEdAQABtegPoRSgxMZHOygFgzpw5uHDhAif0lLw/c6GbZIV29+5d3L1718gpTkRVJpOhY8eOdHtcXBwOHDiAiIgI+t0xFQ21d+9eOuj/8ssv9LofPXoEmUxWLh3PACEkVaBwKqQoiEQik93XxGJ9n+akpCQaJUReY7hS0Ol0UKvVqFy5stHx2T++L7/8EoA+2/nAgQOcfSUSCTw9PWmxLg8PD/j7+yMoKAiVK1eGk5MT7Ozs4ODgADs7O8TExCAhIQEKhQJKpRIKhQKtWrUy6pJm6n2X1aDw/fffA9DndhjWDrKzs4NOp8OkSZNoAblGjRpxro+vab27uzu6deuGBw8eIDU1FVqtFqdPn8bjx48xb9482imtbdu2uHr1Kn1d3bp1aTQWwF3xSSQSGroL6H0bJIHNw8MD48aNw61bt/DmzRsqxmRA8/LyQlBQEH1tQkIC1q1bh99//52udipXrswRMlsYlIHyXynYkijYymdiK1RIUQBMrxTEYjFSU1Ph4eHBme3ymYRIfR83NzejY7DzFyZPnozvvvuO7qtSqWBvb48ePXrg448/RvXq1fHixQv6WnMlhENDQ3mfT0tLK7TUcFmJQlRUFB0U16xZg2fPnmHVqlX0eTK4GlYUJddWp04dk2aZ48ePA9CvBD788EMcPHgQMTExVBCcnZ3h4OBA9xeJRDh06BCnjHlQUBDevHkDLy8v5OTk0O9BtWrVcOHCBWrfT05ONspEZoevKpVKODk5UTMiXxjyvHnzjN5DeQ/ItnANtiQKgOBoZlOmonD58mWsXLkS4eHhSEhIwJEjRzBw4ED6vE6nw+LFi7FlyxZkZmaibdu2+PHHHzkmkfT0dEydOhXHjh2DWCzG4MGDsW7duiI76mQymcnCaqmpqbw5DOwfvU6noz2dDb9Q7H0TExPRtWtXvPPOO5BIJKhZsybdLyoqCmq1GjExMdBoNPD19eWt4mhJaWG+ypB8AiASiRAfH2+1OvZ8+5HmM/b29hg0aBC12fv5+fF2OwOA7t27Y+zYsbC3t+fNCTBEKpVi165daNmyJebMmcNZYUycOJHuN3z4cKPQ43v37kEsFuPtt9/G5cuX6faQkBAEBgYaDe4ymQxyuRxyuZwWPAT+KanNjsKSSqVo1KgRhg8fjnHjxtlcOWZbmBXboigI/EOZikJeXh6aNGmCMWPG8Dopv/32W6xfvx47duxAcHAwFi5ciJ49e+Lx48f0xzV8+HAkJCTg7NmzUKvV+PDDDzFhwgTs3bu3SNdi2H2NoNVqIZVKjfocGK4UMjIyoNFoeB1mZEau0+kQFxeHwMBA5Ofn884kGYZBcnIyQkJCOJFJ1sCw7j0RoerVqxdJXMifWq0utCyxRqOhdZJatGiBq1ev0lUDX0IbQS6Xw8fHB2KxmA7algjU22+/DT8/P8yaNQvNmjXDW2+9xVkBrlixwshkxzAM7O3tMXfuXI4okHIUhpCmMIZlO6pXrw6lUol27dqhT58+8PPzQ/v27f8VTlRhpSBgijIVhd69exsVWiOQsgoLFizAgAEDAAA7d+6Er68vjh49ivfeew9PnjzBqVOncPv2bbRo0QKA3nbdp08frFq1CgEBARZdh0gk4jUf6XQ6qFQq+Pn5mZ39A/qIFx8fH974eOLIzMrKgkKhgJ+fH16/fm3k/CQlC+zs7Hhj4UsK8VNIJBI629XpdHB1dbX6uQhbtmzhOFirVKmC3bt30zwPQO+EFolEHF/D4MGDUatWLYsEinQNI4UKq1evjoMHD4JhGM4gP3v2bERGRmLHjh2ca2T7EKpWrYro6Gij9yGRSFCrVi34+vpCJpPR3henTp2CRqNB165dsWbNGiORYq/C+MRMrVZDIpFAqVQa9VwuC2zBfGSLeQoC/2AzPoVXr14hMTER3bp1o9vc3NzQqlUrXL9+He+99x6uX78Od3d3KggA0K1bN4jFYty8eRODBg2y+Hx85qP09HTodDpeUxR7pZCfn4/09HQ0btyYt/0lWSnExcXB398fEomE154vFouRn5+PatWqlcmPpCx8CiTctEaNGtRs07BhQ06dpWfPnsHb25vmdxAfizVo3bo1Tpw4gRo1auCrr74CAM6qVC6Xo23btpDL5WAYBi1atOAVBa1Wi6dPnyIqKgoeHh5o0KABAgICqLCPGTOGt6WlJSspAJzMcnJfSsOUZ/gcmQjl5eUZPV9W4mRrK4WyFOV/AzYjCsTWTLKCCb6+vvS5xMREo+Y1UqkUnp6eJm3VpuAzH0VHR8Pe3p73C8JeKcTGxsLHx4fTJMdwX1LDplWrVkavJ6hUKk4/h9KmtEQhPT0dUVFRuHnzJl6+fAmAG3vft29fWkZi/Pjx8Pb2BvBPmRFr290PHTrEeaxQKOj/3dzcIJPJaI+Ebdu2wd3dHffu3UNUVBQnyxoA/RyTk5Nx8eJFAHpn9uDBg4t1bQ8ePIC9vb1ZE54l4sJ+XqPRWHwc4v+4evUq73e3NH1N5K+goAAikQg5OTlmgyIEygebEYWyxs7OjrNSIMlq7u7uJn8sOp0OGo0GCQkJaNq0qZGfgb1vRkYG3N3daf17vgE5OzsbdnZ2nEqtpYk1RWHChAnYvXs3772ys7PDhx9+SB83bNgQ586dM9t7obQwzAUxzJ+wt7fHDz/8QB83b94cjx49AqB3WmdlZSEsLAy3b99Geno6XFxcTCYHWgKZJROzXlmTl5eHq1evokePHtTvVRQBMve8OXFi70d+d6mpqfQ5Q0gNscJEiKxwLNnP3PPW6JX+X8FmRIHMlpOSkjjlGZKSktC0aVO6j6GzUqPRID09vcizbdJTgRAdHQ0/Pz9aDdUQMtNPTEyEo6MjXF1doVAoeL/QAJCVlcWpc2QoIBqNBjk5OWVW3gCwrijwOc7FYjGcnZ2xfv16I2dru3btkJqaarYmUmlAyk4QXFxczN6D8+fPo1q1alAoFJg9ezaePn3Kqf30b4dtuiFmk7J2jBsm8BFxskSELBEorVZbaMQe+zj29vZo3759md4DW8ZmRCE4OBh+fn44f/48FYHs7GzcvHmT1r8JDQ1FZmYmwsPDaUXNCxcugGEYaqaxFLb5SKlUIjk5GS1btsTr169NrhQYhkFsbCz1AZAfk6GNlMyGiZkEMDYfJScnQyaTlekP0pqiMH/+fPTr1w++vr6oWbMmAgMDbS7q5pNPPkFUVBRnm2FOiSHu7u44efIkunbtShMDnz9/zmnDWlLKO/KnvOErQV8e4kQwVza9IlKmopCbm0uTtAC9czkiIgKenp6oWrUqPv30U3z99deoVasWDUkNCAiguQz16tVDr169MH78eGzatAlqtRpTpkzBe++9Z3HkEYHdAD4uLo4mq5kyCREbqEajoX4Ndk0ktimgoKAALi4uRl989nHJOYm9uyx+rNYUhfr166N+/frldv7CSE9Px08//WS03dPTs9DXtmnTBhs3bsTHH3+MpKQkdOnShROx9G+nvO31tuZoFuBSptJ8584dhISEICQkBIDeGRkSEkILp82ePRtTp07FhAkT0LJlS+Tm5uLUqVMcR+SePXtQt25ddO3aFX369EG7du14f/yFQcxHWq0WcXFx1OlpqvEN8ROwZ8TslQIhLy8PKpUKLi4uRq8n+2VnZyM/Px9ubm5lOnMry0G5PGEYhpPBDIBWurU0F2TMmDE0Ce7OnTs4deqUVa6tvO+/LQzItnANAqYp05VCp06dzP4oRCIRvvrqKxpKyIenp2eRE9X4sLOzg1qtRmJiIuzs7KijydRKQavVIj8/n7Mi4evUFhcXBwcHB6OlMFtsSLE9mUxWoUShLM5/6dIljBgxAhkZGXSbk5MTbXPp4+Nj8bHWrl2Ln3/+GWq1mtPH+t9MeYsSYHt5CkJIKhfbMgKXIcR8xO6YBnB7HLBRKpVwdnamoYyAcU9nEpnk7OxsdAwyIGo0GiQlJSEgIKDMB+n/uigkJiaiZ8+etKAdoWXLlvS8bD+PJZDX/Vd8CrZwfmGlYNtUaFHIzs6mNYcIfOYjjUYDhUJhZBIyXCkkJSXBwcGBZg6zISuQxMREODs7U5+Dqeil0qC8RaE0UalUJnMHxowZQ1dufG1VzWFtUSjv+28LA7ItXIOAaSq0KKSmpqJy5cocUw+f+SghIQFSqZSzSgC4PZ11Oh1iY2NRuXJlSCQS3t4LDMPQWkhkm7BSKDlhYWFwdXVFeHg47/NDhgyhIctHjx4tVq5EWeWSlDa2MCDbUpMdEg4r8A+28cmUA2lpaThz5oxRBjVfNdSYmBhekxDwj4iw+zTzrQBEIhE0Gg2USiUneqkiiYI1uHLlCsaNG4fw8HAcO3YMly5dQp8+fcy+RqPR0LDmlJQUtGvXzuIV2n/RfFTe2IIwCZjGZvIUypr79++jUqVKnNr7gPFKIS0tDQzDwNHR0WxSW2F1jkjpC7IP37lKm/IWhZKen/gMGIahfQ4sOebff/+NWbNmISYmBj/99BP+/vtvuLi4wNnZGTNmzMCcOXNMvrY0RKE8sYUB2RauQcA0FXKlEB8fj2fPnvG2ROSrhkpMTKZWCkqlEikpKdQsxLcvyaIk+/Cdq7Qpb1EoKenp6Ub3i88UYTjgkK5r69evR/fu3QGA9tZeu3atRee2lvmovO+/LQzItnANAqapkKLg5eWFkSNHGq0SAO7sPS8vD1lZWQgICDCb1JaSkgIPDw+zdY7S09MhEok4tXfY+/3bktfK4/z169fH0KFDjbazhcLT09NIJJ4/f07/P2XKFISFhaFz585Gr+Xjv7ZSsAVsTRSEkFQuFVIU7Ozs0KBBA97Oa4bVUCtVqgS5XG52Vk8c1gRDAdHpdEhNTeWd0VY081FxYRgGn3zyCX777Tez+6WnpxdatqB+/fq0LpWl12QYZFASyrvMRXkPgLaWpyDApcL6FEjymiHE9KNWq5GQkEBrLJkaUMmPjJ0payggmZmZ0Gq1Rj8EtnhER0cjPz/fZEVHU1UezW03nAGVtygAxVsRaTQa1KtXDzExMQD0s/ZWrVrhypUrFr2eXWCRQD4fSwcnIfrov3UNAqapsKIgk8mMOq8B/wzUCQkJcHFxobkJpnwKpBZSYXWOvL29jRrykP3y8/Px/PlzBAcHU9+DYQMXvuqQpPMY+zm+90P+AH1/gKtXr5ZIdCxp5sJXG7+4ojR16lQqCF26dMFvv/2GK1eumBUFiURCVwyGPZpJRc6iYK2Vwr9RlEvjGmwlJFXAmAorCnztOAH9wKXVahEbG4uaNWvS7Xw+hdzcXDAMY7afs0qlQkpKCho3bmxU9pusKOLj4+Hj48Pr+C4K7BLEfCKSmZmJqKgoi9te8pUftqSsMd89JSsXrVaLy5cvWyxEKSkp2L59OwCgY8eOGDt2LDp06MDb8Y5gb2+PiIgI1K1bFwA4pj0iUMTPQPxAfLDzGazdCKg8Ke9ZurBSsG0EUTBALBZbVPoa0K8A+Mpfs/eNj4+nzXb4wlQBfailYQG34sAuQUwKwLFhGAZisdioex2bWrVqQa1WY8CAAVi3bl2Rr8GwNj5bLPLy8hAZGYkGDRqYFBfD7Z9++il0Oh2kUil8fHwwfPjwQq/h448/xtmzZ+njZ8+e4fXr13S1N3ToUNpFLS4uDrt370adOnWMxIntcyIJjMVdRRFRBASfgi1cg4BpKqwo8LXjBP7JJwgODjab6azRaJCYmAgHBweTJS10Oh3i4+NRs2ZNajph/yDY1VYtKelcUgoz3zAMQ800mzdvpo3pi3oOU7XxyTZLK5VGRkbSLmhz5syxSKRCQkKwbNkynD59mm7r0aMHFZxr167hwoULnNdMmDAB+/btQ0hICEecSBE9QB/CmpOTY3a1ZLidbxKg0+mQlpaGly9fFtlPZA1/ky0MyLZwDQKmsUlR2LhxI1auXInExEQ0adIE33//Pd566y2rnoPdT4EN6aZm2J/BcKVAOrBJpVKTxe9IXL23tzcVIMPOVwBoFnRpY4kofPTRR9i8eTMAfXx/UXsmFHb+orB69WoAehPPwoULsXTp0kJfc+TIEQD6mT2g9y2wTT9818AwDIYNG4bZs2dzKvSy+343bdq0yMLNJxwPHjyAu7s7KlWqZLFpTqvVmmx1acrXZEqYCOfPn+ddyZRUdCzZ1xajj2ztesoTmxOFAwcOYMaMGdi0aRNatWqFtWvXomfPnnj27JlZs0dRIdFHhrMWEjpqGG1imFMQFxeHqlWrIjk52WydI39/f46jl70vESVfX1+byFOQSqVYt24dtm7dCq1Wi48//hh//fWXVa/B0vf5/Plz/PrrrwD0rTy3bt1q0ev8/PyQkJCAmzdvAoBRH2RDk+G8efOwfPlyAMC3336LH374AUuWLMGkSZM4k4bi+BTYnztBKpXCwcGhzHoCs015Wq0WiYmJiIuLQ6NGjYq06mEHQBQmRHzBEIbcuXOnyCsia6yU2AIoCAE/NicKq1evxvjx42nj902bNuHEiRPYtm0b5s6da7Xz2NnZGa0U1Go1TTIzhMxwANA6R5UqVUJKSgqv+Uir1SItLQ21atUCwN97ISkpCUDZJUZZGv0zatQobNu2DTdu3MDHH3/MaWxf0vNbSvPmzem1njlzxsjkYwrDwVulUsHBwQEymQxSqdRIFFatWoWvvvoKa9euRXp6OnJzczF9+nQcOHCA07zp35q8Rmb/EokEMpkMcrkcUqkUrq6uZXYNhj6mq1evol69enByciqSuLCFqaiCxhcAQUSiTp06qFGjRpndD1vHpkRBpVIhPDwc8+bNo9vEYjG6deuG69evW/VcfD6FuLg4ODs7Iy8vz2h/tk8hNjYWAQEBdMbBZz7SaDTw9PSkWdOGvRdIGW3y/7LAUlH44Ycf8PDhQ9y6dQvbtm1D48aNaReykp4fKNymzDCMUSXT4lQ2Jeh0OqhUKt7AArVaDXd3d8THxyMyMpL2+r5x4wZ27txJ9+Nz3Bf3WioabGEC9PfA0dGxzIXJMHybCMi/VfBLC5sKFk5NTYVWqzWqXOrr68ux71oDwzwFYu7x8/MzGVbJMAyUSiVSU1M5dY74fugajcaozhHwz6CQnp5O/893vtLC0kHpwoUL1K8yc+ZMxMXFleZlcRCLxThy5Eixfqzr16/HkydPEB8fb+QPadq0KecxGejJ5KBJkyY4e/YszUlYtWpVMa7etrEFJ2955CmQ4AeZTAY7Ozs4ODjAyckJzs7OgigYYFOiUJbY29tzRCE1NZVmJvPVWCeDf1xcnNEKwHBQz8nJAQCjLGfgn0E5Pj4e/v7+ZZplbErA+JBKpbh27RqkUim0Wi06derEO9MuCnwmNFOkpaUV63wTJkxAcHAwPD09cffuXVy/fp2KM3E+A/oWnWTmyj5P+/bt8erVK6NZ7MyZMzk1lEqCEJJa/tcgYBqbEgVvb29IJBJqayckJSXRJinWQi6XcwYDdjVUwHjgIolX8fHxnBUA30CbkpICsVjM+eITxxZ7tVEeLTmLci4/Pz+sWLECgP7+NG7cuMTCYAnp6ekWm6sKm3GGhIRg+vTpAMBp03nx4kX6+Ri+J09PTxw/fpyzbePGjWjUqBE8PT0xevRoTJs2DWPGjMG7776L3r17o23btggJCcHGjRvNXk95m4/K+/zkGgRRsF1sShTkcjmaN2+O8+fP020Mw+D8+fMIDQ216rnY0Uc5OTnIycmhkUKA8Y+HOI/FYrHZOkcFBQXIzs7mPScRgMTERLi7u8PBwaFIs/eSYuq9mWPy5Mn45JNPAACvX7+Gh4cHatasiW7dumHLli1FOr+lK4W+fftaLD6Gtv7c3Fyjffr37w9A/12qV68epk2bhsaNG9P7wZev8tZbb+H8+fNwcXGBm5sbNTHk5+dj//792Lx5M/bu3Ys//vgDFy9eRHh4OJ48ecLxh9kq5T0g25ooCJFIXGxKFABgxowZ2LJlC3bs2IEnT55g0qRJyMvLo9FI1oLYjZVKJWJiYuDv78/JTuZzHmu1WlSuXJnzBTIc1EkGMx8kgik+Pp7a69lJbWVFUc/17bffYsaMGQBAS4CEhYVh6tSp6N27d5F9IubOv379ety7d8/iYxmKx+3bt432Yfuo+vXrh4ULFwL4Z3BcvXo1WrdubfTatm3bYuXKlfDy8uIVDqlUCl9fX9SuXRsNGzak12NqUkCoyOYjwwROAdvD5kRh2LBhWLVqFRYtWoSmTZsiIiICp06dMnI+lxQy88vLy0NycjKtj2MYJURQKBQAjCtuss0/DMMgISHBrLM6OzsbGo0GPj4+dFtZOZpL4txbtmwZ7t69i/nz56NPnz70Ply8eBFOTk4ICgoqdDAvbCDYsWOH2S5ophg8eDDNK+G7BpIEJxKJ0KJFC/p5ETNgfn4+IiIi0KtXL/o5A0C3bt0wceJEvHz5EjqdDjKZDPXr16erE41Gg6SkJCgUCjRp0oS+ztLw2fLAVgZkW7gGAX5sThQAfSOUN2/eQKlU4ubNmzRM0JqQlcKbN2/g5uZGm9+YMnEQPwdfUhsZ1EniG0lM4vNLpKSkwM/Pjw7Q5VHOurgiVL9+fSxatAiHDx/Gq1ev8N577wHQv8+kpCTMnDnT7OvNmY/Onj2Ljz76qMj3wt/fH7t27aKO4SdPnhjt88svvwAAGjZsyCmAd/fuXWzatAn9+vUDoJ8gvP3223j16hVq166NsLAwznHCwsJw9+5dpKenY8qUKTTYIDo6Gnv27KH7TZw4EUePHuW93vK26dvK+QVRsF1sUhTKAiIKsbGxnNLKbIcwQaPR0KqcpqKSAH2eQ2BgoEkTFABkZGRwSmiUdfSRNdm+fTvi4+NpqOf9+/eLdZz8/HwMGjTI5PPmrvuvv/6CWCymK6+7d+9ynn/z5g2t5zRz5kzOYCSVSjF69Gj89ttv1LF9+fJl1KtXD9HR0QCA6tWr0/3T0tIA6FeZzs7OcHR0xIQJE9CuXTs4OzvT/TIzM/Hee++he/fuvD6O8qY8B2Tym7AlUbCla7EFKqwokMSzjIwMowJthn6ChIQEOsM0VdIiPz8fWVlZNMyUb1+StMNuycnOlC4rrHk+T09P2uc4NzeXDsB8mLovnTp1MkpOc3NzQ506dVCtWjWT1zts2DAEBQUBAN59910AwKNHjzgmpG+++QaAfhJA9uFj7dq1qFq1Kn0sk8mwadMmzJ8/n157p06dAOijo7799lukpaVhy5Yt+PTTT5GamoquXbsC+EfErly5gsDAQHz55ZeoXLkyPvvsMwD/ZM6XB+VtPiKffVnnKQhYToX/ZCIjI41+JOyVAslNILN7UyuF+Ph4eHt7Qy6X80b56HQ6muVseC52TaXSpLR+iK1bt6ZmtaJGJH3//fdGKwx3d3dIpVJa8powePBgzn4dO3ak/587dy6drY8dO5ZuZxcfLOz9nz17Fm5ubvD398f9+/cxevRo/PnnnwD0eS2Ojo4ICgrChAkTON+Pd999F7du3UKHDh0AcEVXqVRi+fLlSE1NxYYNG9CrVy/Uq1cPAQEBRb5X/wUE85HtU2FF4c6dO9DpdBgyZIjRc+yVQkZGBtRqNS3GZyoqKSEhgTou+ZzV2dnZ0Ol0cHNzM3p9WZa5MLwua1GnTh0A+kglUx3RDFcKb968waxZs4z269GjBzXVELy9vXHo0CHOtu7du9P/i8VifPHFFwCAx48f49KlSwBAcxQUCgXef/99/P7777zXlpycjCpVqiApKQmvXr1CcHAwACA8PByAPtQY0PuWTpw4wXktwzDYvn07DX01B7sc97x589CrVy8EBgbC3d0d48ePL/T1JcVWVgqCKNguNlX7qCw5fPgw7O3tedssslcKpNIpiTjhWykolUrIZDIaispnJomPj4dMJjP6MRABSk9PR2JiosWVIIvyuCx+gCtXrkTv3r0B6E057OxhQ8h9YQ/qbDIzM422+fr6GnVb+9///odWrVph8eLFcHV1xZQpU7Bs2TKkp6dj2rRpiIiIQK1atRAQEID4+HgcPnwYADBt2jTaZhUA9u7dizFjxkAul2P58uWYPHkyfY5t6jO8fjbbtm3D8ePH4eLiQjPaCyM3N5dThXbXrl24du0aLl26BGdnZ9y9exf37t1DXFwcXFxcIJVK4ejoiP/973/F7r8hiIIxtnQttkCFFYVly5Zh586dJruvMQwDhUKB1NRUtG7d2qQ9XCQSQaFQoFq1ahxTBXsFQEIXHRwceFcaDMPg5cuXcHJygpOTk1FFSEtKFZuroU9MJ6Ssw82bN2mBsqKWJTb1uFmzZmjZsiVu376NjIwMxMTEYNy4cZg4cSJ1IrN/fFOmTKHOXDYymYyTvAjoB2bSbIfNnTt3cOfOHWzduhU7duzAwIED0bBhQ1y+fBlZWVl0v6lTp3KSyn7++WdaLhsADYNVqVSYOXMmVq1ahV69eqFBgwa4fv06jh8/jpCQENSrV8/oGtiw2606ODhg8uTJ2LJlC+daDJHL5ejXrx9SUlJw5coVREVFcdqH8jFnzhwsWbKEroKKghB9JFAYFVYURCIRzWo2hO0n8PLyMlvnSKVSQaPR8OYvkH2TkpLg5OTEm71MRCU3NxctWrSwSnEuc+WEr1+/jpo1a0Iul5sVFlPNXcy95v3336cJYHXr1oVWq8WNGzfg6OiI5ORkbNq0CWPGjMHXX3/N6Y/g5uZGB85KlSrR4nsikQgzZ840aXuvU6cO/v77byiVSrz33nto1aoVdTJ36dIFGo2GChabEydOUFE4cOAALX8RFBSEN2/eICEhgYaxzp8/32Qymkwm4/3+AHpzE7ugXqdOnehK5+HDh3S7SqXCd999B39/f6xbtw7z5s3jfMekUinkcjlN+lIoFNBoNJg3bx7mzZuHNWvWYNKkSbzXYIryXikIgmDbVHhR4Ou+Rkpfx8fHc2aHfKKQmZkJmUxmtikPyWA21ZAnMzMTPj4+VqvWyNfchSCRSODm5sYJobQW7B+7VqsFoHe0urq64v3330deXh6ePXvGCdPs1q0b8vLyaGl0Ug1XLBbj6tWr2Lp1K+9MOyAgAD/88AOioqLw2WefITs7mzbWAfShpEePHgXDMPjggw84r33x4gUuXboEmUxGcyv8/Pywb98+hIWFYevWrfj7778B6AftoUOHGvk4gH/KYxiKw5IlS3DgwAHO4N+sWTMsW7YMN27cwMKFCzl+l8aNG+PJkyeYNm0aunbtinXr1mHEiBFo27atURmPhIQE9O3bF48fPwagrwDQuXNn1K1b1+j6DPnxxx+xbNkyLFmyBI0aNSp0/9LAFruuCXCpsI5mwLh8NkEsFiMrKwsSiYRjuzWc6Wu1WioKfMcgdZXy8vJoy00+8xEJZS3vpX1JITNq9o++a9euGDRoEO1RwRaEhQsX4vjx45xQUCIm7dq1Q3BwMHbs2MF7rs8++wypqamYPXs2srOz4ejoyDnvkiVLMGLECI4gENElZdKjoqLo7H3x4sXw9PREv379cPjwYU5joWPHjuHatWuc85OQZoBbOykwMBCNGjXC119/jU2bNtHtUqkU586dQ1ZWFubOnYsuXbrQ53JyclC/fn3cvXsXGo0GU6dOhZeXF54/f45nz57h+fPniIqKwuvXr6FWq/HHH39g4cKFcHd3R+/eveHl5YWbN2+id+/emDZtGuLj46FQKKBSqWjns9u3b2PGjBlISUnB999/z3tPywJbWyn8239zpUGFXSkA/I12AP2glpaWhsDAQKNKp+xBPSkpCXK5nPdLTvZNTEyEr68vpFIpb6SRWq2GSCQqs/aMpVmAjzhY2cf/8MMPcfHiRaN9e/bsiXr16mHGjBlGCWcAsHnzZgwfPtxkc52ePXuiSZMm9HmFQlHo+1KpVHB2dkZubi62bdtGcyr8/f2NamvVrFkTCxcupCsEiUSCmjVr4tmzZxCJRHj48CGkUikGDRqElJQUDBkyBO+//z5CQkKoT+rOnTv0eO3bt0erVq0QEREBPz8/7Ny5Ezt27MDnn38OQC+oBw8epOGuDMPg1q1b+OGHH9C3b19Uq1YN0dHRiI+PR1JSErKysjBhwgR06dIFo0aNoqU1Ll68iM2bN9P8CG9vb6hUKowePZren+joaFy+fLnYQQzFeQ3bzybkKNg2FVoUTJmPiJPZ0E/AV/zOy8sLGRkZRscgoapJSUm0Lg7fgEzMK2U5eyqtZLnQ0FAj4Rs3bhzv+U6fPo3Tp0/zHkcikSAlJcXI4cymQYMGnMeG97Vhw4bo168fBgwYwMks9vX1RW5uLq5evUpfw3Y6s+nfvz+2b98OmUyG58+f05aN3bp1oyGr7IGfjVgs5jienZycaASRs7MzvL29MXPmTHh5edFs6jVr1uCnn36ipdfbt2+PzMxMGhZryF9//YWVK1dy3ju5/3FxcVi3bh2uXr2KXr16cUJhc3NzqVmU+IVGjhyJGzduICQkBB07dkSfPn3g7e1NS70X1u6Sb5shZHWl0Whw6dIli8SnMMHhe450ejPcZuo3ZksrF1vAJkRh6dKlOHHiBCIiIiCXy3lDEqOjozFp0iRcvHgRzs7OGDVqFJYvX86xuf7111+YMWMGHj16hCpVqmDBggUYPXq0yfMa9lQgqFQquLq6mq1zRMxC1apV481OFYvFSE9Ph52dHa3LYzhgKpVKOnstK0pzllajRg28efOGYw5iF5jjQyaTwdvbmxPC2rx5cwwfPtyicw4YMAC///67kSj88MMPeOuttwAAHTp0wMmTJ+k1kgJ3AODj40NrOBkyb948bN++HWq1Gj169KCl04kTujBMheWyByHDkNe8vDwcOnQIgYGBRr8DsVgMuVwOBwcHSKVSTn/wgQMH4ocffsDp06epL+bBgweYM2cONX2NGDECu3fvhk6nQ2xsLEJCQgDoCxFevXoVwD8RXWvXrkVGRkax/Vw6nY5XNLKysvD06VM0atTIokAHhmE4PZlNtdTke2wIn5BIpVK0bdu2WO/xv4pNiAJx5oWGhuLnn382el6r1aJv377w8/PDtWvXkJCQgA8++AAymQzLli0DALx69Qp9+/bFxIkTsWfPHpw/fx7jxo2Dv78/evbsyXteOzs7I1FQq9VQKpU0WY2NYZ2jSpUqQSqVmqyImpaWRhvpkG185idr9f+1lNIsq1GpUiVO6Y7u3bvj7NmzAIxLegQHB+PgwYN08Ca0bNmy0GY17u7u2Lp1K1q0aMGbkMY+5qBBg6gonD17FkFBQTRTmiS88REUFARfX18kJSVRx/PQoUPh7e1t9toI7KY+psSYXIdMJsPw4cORm5uLJk2a0B4WHh4eePXqFSdTnhATE4O9e/eib9++qF+/PoKDg40aVP34448A9OawrVu34sCBA1Cr1Thx4gRCQkKQn5+PadOm0f1dXV2RnZ0NrVYLhUJRbFEgs3USBk1Qq9VGvrrSgERrFbayIT4sgX+wCVH48ssvAegLrPFx5swZPH78GOfOnYOvry+aNm2KJUuWYM6cOfjiiy8gl8uxadMmBAcH47vvvgMA1KtXD2FhYVizZo1JUeBzNCcmJkIqlZpNaiN5B2SmZcqWnZ+fz+kYZ1jSIj4+Ho6Ojpxtpb2ULYulMnvgJ8lZDg4O6Ny5Mx2cAb2Qt2jRgvNasViMn376yeSx69atSx2ycrkcDMPQUFIC21QC6Adyki2s0+ng5eWF169fIzAwkFMSg49BgwZRh7FMJqODrCWwk+1MNTgifg0nJyd6HoZhaIXWIUOGwN7envf4VapUoTkWH3/8sZEgsElLS8OoUaPg6OiIrKwsGu01fPhwKBQKiEQi3Lt3Dy9evMCQIUMgEomMWpJag7JyNBNzEVkNmKKs6479G/hXeHyuX7+ORo0acXoq9OzZE9nZ2TSp6fr16+jWrRvndT179qRffj4MzUfEFuvo6Ghy+UnKRDs6OlJfAJ8oqNVqIxMUe6WRnZ0NlUrFm9BWmpRl/wbgn5nhhQsXMGrUKJP7ERMaMRfw4eHhgbt371IzCqC/p8+ePePsZzijtre358xMW7RogfT0dOzatQujR49GgwYNTOZCzJ07l/5/0qRJnNLbhcEXxmoICcFlZ1hv3ryZOtBJQyBz3Lt3j5q0OnfujJs3b2LXrl1o3rw5NU9lZGTgwIEDNLz3/PnzcHNzo7WdRo4cibp169I+1HwRddbA1qKPAMGnYMi/QhRIBA8b8pj8qEztk52dTevWGGJoPiJ1jtizdzbEeUxKZJNthoMsWU0YdmBj75uQkABfX1+OUJTVDKq0uHXrFmrVqmW0ff/+/QgJCcGAAQPw2WefYcWKFXj+/DlnBldYiWlHR0e8evWqUJ+IqedJeW8PDw84OjoiICAAXbp0wf79+xEVFYXFixfzvs7Pzw8LFizA4MGDacVVS2H7BLZs2UIHevZnQJzR7O8KMZ3VrFmT14zJhmEYDBgwgFbgPXLkCJo0aYKhQ4fi6tWrSEtLw7Fjx/DWW28ZVQMmQRZubm50lULMWUURv6Ig5CnYPqUmCnPnzqVLOFN/T58+La3TW4ThSiE2NhYBAQEmy1mLxWLk5+ejoKCA/lj5IopSU1MhEoloJjSBrCpIVBIps12WsdKluVKwt7fnlM4WiURYtWoVp1Bc586d8eGHH0IqlZoMNyWQe0y+K6bMKK9evaL/b968Oe8+5BoyMjKwZs0aIwe4uVLWCxYswJ49e4rspGebIHft2gUXFxd0794dQUFBcHBwQN26dWkGdnx8PM6fP4/k5GS8ePECADg1mEwxbdo0Kiy//PIL7z3q3r07Ll++jLi4OPz66690e//+/RESEoKTJ0/S90Y+v9IwHQG2uVIQ4FJqojBz5kw8efLE7B+7gYk5/Pz8jOyl5DGx2Zvax9XV1WhwJrDzFBQKBc1NMBXLT/ov+Pn50Vku3yAbFxfH65Mgx01OToa9vT1cXFxKNW+Aj9L8QTZu3BiLFi1Chw4daPTKlClTjM6/ceNGGtIJAL169TIqRQHoTRx79+5FeHi42Rnzb7/9Rv/PTgpjY9i9TyaToVu3btR8Aujt99YUzBUrVnActWRCQP7/+vVrOltPS0tD3759aeSWWCxGmzZtjIoAsomMjKTlQrp06YIBAwYUek3Vq1enAtCjRw9cv36dI6TkN2S4qrAWtpanICSvGVNqjmYfHx/aDaukhIaGYunSpUhOTqaDw9mzZ+Hq6or69evTfdhOTLJPaGioyePK5XL6o4yLi4OXlxfs7e1NrhQAvS+AlIkGuA5EkUiEgoICZGZmwt3dnbekhU6nQ0JCAo1KIqJC/qwRS21u39JemcyfP582puFjzZo1NBoJAHr37o0jR44YmStq166NWrVq8ZqjDCFlss3RsGFDzmO1Wo1z584hPj4eTZo0QWRkJI4fP44qVapg+/btJiu4FoXg4GA8evQIrVq1Qnp6OmQyGcRiMa0pZQ6GYaiQyWQyuLq60lBKOzs7eHh4ICoqCjqdDg4ODhxhNAcp356RkYFLly4ZlesmfhBr90Rnn19YKdg2NiHZ0dHRiIiIQHR0NLRaLSIiIhAREUHtzD169ED9+vUxcuRIREZG4vTp01iwYAEmT55MZ+Skwfrs2bPx9OlT/PDDD/j111/NVpIkPgWGYRAfH0+rU5oaOFUqFezs7Dh5BYY9ChISEuDl5QWJRMJb0kKlUiErK4v+6NgmJYVCQQcMwz+1Ws273ZI/rVZL/wDQbXyF80z9kRA/S/5MsWrVKioI/v7+mDNnDg4dOoRbt24Z3aslS5aYPI4h7AivlStX8u4jl8tx4MABzJw5E/PmzUObNm0A6HsvfP3117SSa1paGvr374/u3btbZdVQpUoVxMfHIz8/Hzk5OTh58iRevnyJ1NRU7N69m35/3Nzc4OLiYhTCCegFLC0tDcnJyUhMTMSbN28QERFBM8h//vlni30AOp2Odqvja59KHNHEZ2ZtBFGwfWwiJHXRokWcGjck1PPixYvo1KkTJBIJjh8/jkmTJiE0NBROTk4YNWoUvvrqK/qa4OBgnDhxAtOnT8e6detQuXJlbN261WQ4KvCPTyE5ORkymYyWmuBbKZAKlXytO8nzRFzq1q2LhIQE3t4L+fn5tEMb8I/5SafT0Zmg4XktwbDLG99zGo0GeXl5sLe358Rns8uCswXRUBzNrWLMOcujo6Px9ttvU1u5nZ0d7t+/TyNjDMNCnZ2d0b9/f/oZFDaITJkyBbt37wZg2qcA6BPdXF1dERISgsWLF8Pd3R0KhQL9+/fHb7/9hnHjxuGDDz5AWloarly5gilTpnBqIJUEw5BUZ2dnDBkyBCNGjACgTyDr1auX0esePnyIP//8Ey9fvoRarYZarUZ2djbS0tKQmZmJfv364Z133inStTRu3BgRERGIjY01eo5k5xtm81sLWxMFW7oWW8EmRGH79u0mcxQIQUFBRuYhQzp16sTpz1sYpHR2bGwsp84Rn58gKysLDMMYzcjYA2p6ejpEIhG8vLyQlJTEO6AXFBTQcgkA11HNN0u09EtryX7p6elwcHAw6v5mjqKamgz3X7RoEdatW0fvZ7Vq1XD8+HHY2dlBo9Hg8ePHNAySMGHCBGg0GotFqUGDBrhy5Qrc3NxQvXp1aDQazuDD/ozIqkyr1aJTp044deoUAH0uw/Dhw/HmzRt0794d169fx7Zt2xAZGYm//vqL+pBWrVqFM2fOYO/evbxJbEUZZNgRV6bMZA0bNjQyfZUEnU6H9u3bY+fOncjPz4dCoeA4pyUSCbRaLY4dO4YFCxZY7bwEW4w+srXrKW9swnxUXshkMuTl5SE3N5djguBz/pL8BcMvENt8FB8fTyOK+ISFhMayY+ZJmCvJAC1NEhMTOe/TEgqLIGMnCbH/wsLC4O7ujjVr1oBhGMhkMixevBjbtm1DcHAwzXY1dES7u7tjyZIltF4NX1E19t+rV69Qv359dO3aFSEhIXBxcYGzszNcXFzQoEEDHDlyhJrASFkR0kvi119/xa5du6j47N69G9OnT8eePXtoiGh4eDhcXFxQv359TJw4kZa9njRpUpFNd0SsyPU8efKEvu8qVaqUqumOoNPpOE53X19fBAUF0Qq377//PgC9E3vbtm1F+q5Ygq2tFASMqdCiYGdnh+zsbPj5+XGSdQwHdJVKhZSUFDg5OfH6CYB/opfIspvPL5GTkwM7OzteE1FpC4JarUZqamqRHYhPnz7F5cuXi2xf79OnDzVR1a9fH1999RX27dvHOc6LFy+MCsrt2bOH/r8wIcrKykK7du0QExPDKRNNePPmDUaOHIlq1aph3bp1yMzMhJOTExwdHakonT59mvOaLVu2oFWrVkYz91evXnFMnMePH+ctsmY4SBuWVlAoFJDJZNBoNNScRr4PbH8S+//m/EmmXmMoSuQxwzCQSCTUf6ZUKmkyJsMw+PHHH+lzU6dOpc5sawgSuT+2IgpFue6KhE2Yj8oLlUqFW7ducbJJAeOVQmJiIlxdXWkHLDZkYEhOToaHhwcNfzU8hlqtRl5eHq/pJjc3F3///bfZ6o9FLW1s+MNLSUmBs7Mzb89hQD/ohYWFITw8HI8fP0ZUVBRSUlLowL5w4UJOdq850tPT6XuXSqV4/PgxbYc5ZswYOkP++OOPjV7bt29f9OrVC4cOHTJ7Do1Gg5YtW9IZ7syZM1GrVi24ubnB3d0dL1++xPLlyxEbG4u0tDQsWLAAS5YsQc2aNdG3b18MGzYMGzZsoL4Iw3vFrltkiufPn6N27doWD3L5+fnQ6XRwdXWFWCym7UhlMhnvpKCkpjv2NvKvUqmEVCpFREQETp48icePH9PPi4jq2bNn0ahRI2g0GnTt2hVPnz61aNJi6Jsy3Ab80y/D0kmGtaLuBCynQovCnTt3IJFIjCIt2CsFUvqievXqyM7ONln8Ljk5mTO7NFxtJCYmwt7e3uiL6+HhQe3nZEbJboFpSZniJ0+eYMeOHejQoQMkEglev36N6Oho5OXlwc7ODk5OTnBwcKDClJeXR+3J5K+wASgsLIyWdC5MkEgxNwBGoZfk8dOnT2llTrFYjJo1a9Kic6dPn8aLFy9Qs2ZNk9fToUMHxMfHA9DnAxiaoTp06IDRo0fj8uXLmDVrFh4+fAilUolHjx7h0aNH+Pbbb+m+9evXh0KhwMuXL9GwYUOkpaVxKpw6Ojri3XffRWxsLM6dOwcAqFy5MmrXrm32nhmSlZVFBQEAdfSayqOxpj8J0H+X8/LyaO7O4MGDMXjwYKP9qlatih9++AETJkxAYmIiOnXqRGsx8R3T3P8N/1WpVDRx0VSAQ3HfnynTLvv8hqs70tu7tBzr/0YqrCgwDINr167xfhnY0UcZGRnQaDTw8fFBbm6uyfhyrVbLcTwafskTEhLg7u7OKbmh1WphZ2eH4ODgYldKffz4Md5++23odDre5vZFQSwWw9HREV5eXqhSpQqaN2+OgwcPIj4+HhkZGXjx4oVJuzchPz8fR44coY89PT052cLTpk1DeHg4jbqxs7PDhQsXoFQqaeKZTqdDkyZNULt2bSxYsABt2rThiM+YMWMQGRkJQN+vYfz48bTGkuGPvkOHDrh58yaePHmCefPm4fXr13jz5g3NZK9Tpw6uX7+Ovn374uXLl8jOzsbQoUOxfv16zntiB0K4uLjQXtRFISsri7NSJMJTGqXTFQoFsrOzOUl/SqUSGo3G5GqRzfDhwxEWFoadO3di6tSpVsmfIddFzHfmsGbUnbnjzZo1C23bthVEgUWFFQWVSoWOHTvi5cuXRs8ZlsgmpS/MlYjw9vbm+ArEYjEVkJycHBQUFKBy5cqcCp4kEqMkGZ7169dH69atcfPmTXrdDg4OqFSpEjw8PGheRF5eHhwdHeHs7ExNLJ6enqhUqRKaNm2KDh068PobLl++jPj4eEilUpOJgGzbOYn3B/SVaqOiojj79u3bFydOnKCmk88++wzOzs6chjqk5/Hff/+NDz74AJUqVcKqVavg7++PDRs20FyHFi1aoF+/frh8+TLnHHyrGa1Wi6lTp8LNzQ1isRiJiYl4+vQpunfvjufPn6NOnToICwtDcnIyDh8+DEAf+TN69GjMmjWLM6g4ODjg3Llz6NWrl9GKydwgmZWVxcniJ9nKhjWySkpmZibq1KmD3Nxc+Pj4oEOHDpg4cSJq165t0YBM+PHHHzFz5kyzK7aiUlBQYFHZbGuvkvjIzc2lrXIF/qHCioK9vT2GDh2KpUuXGj1HBn+lUonU1FS0bt0aAH9UEkl+M8xfYAtIQkKCUe8Fc7kJRYWYNEwRHh4Ob29vmrRUFEi4orlmOZGRkfjggw/w+vVrajOWSCT46aef0L59e86xqlSpQvNLgoKCaPYzKe8gEomQnp6O77//HqtXr0ZqaiqSk5Mxbtw4hISE4ObNmwCARo0a4eLFi3RFZs7cxjAM3rx5AycnJ/j5+YFhGHh7e6NevXr0eXJ+lUqFuLg4APo6TU2aNIGHhwdntZOcnIyRI0fCz88PU6dO5XSBY0dMsVc3IpEIubm5iI6ORkJCAsRiMV0pODg44Pnz5xaZ5sz5k8gqid1pLiUlBYcOHcKhQ4cgk8lQvXp19OvXD++++65Foa7WFARALwqmzGVlDTGHllZJj38rFVYUANOd18jgn5CQwHEe860UEhMTIRKJjJqRsDOVExMT0bhxY6jVaiMba2lHHSmVSmRkZBi1r7QUkpdhShQiIyN5O1cdPnzYqKOZj48Ppk6diry8PADA3r176XMdOnQAoL8vN2/exLRp0zBt2jTs2rULkyZNgkqlooLg7+9PewwDsGi19fTpU9SuXdtk6RUiXuyEuS+++ALdunWjgrBmzRp4e3tj1qxZSExMRGJiIj7//HM0a9YMv/76Kzw8PEz6f0i1Xn9/f/q9IPfBy8sLWq2WTjDM+Y8MHxvy888/4/HjxwD0zYp0Oh0eP36M/Px8qNVqPHv2DM+ePcN3330HiUSCoKAgdO/eHe+//z48PT3NBjkUJlKFzdq1Wi2USqXNiEJqaiqtPiDwDxVeFPhq95Pcgfj4eI7z2HCloNPpG+XIZDLe7GWGYZCamgq5XA43NzdOVE5Z5SYkJyfDzc3NZIXRwiD2Z8Ne1rm5udiwYQPvSmv27NmIjIykM24ikO7u7ti1axcAfekSUs4a4NbamTVrFnVsjhw5Ei1btqR+BDc3N9y6datIHcEUCgUKCgpoxjofhiGolStXxkcffUSTIT/66CNMmDABAPDOO+9g165dmDdvHjIyMnD37l3Url0bDMOgQ4cOqFmzJnbs2IGmTZtS01ZeXh48PDxouCe5LwDw999/o27duha/H4Jh2Ou5c+dw7NgxAPrM7sOHD9PnYmJisHr1akRERCA+Pp6G8L58+RKbN2/G5s2b4enpiZYtW+Ldd99F7dq1Cw1y4IvEMyccZP9nz57RbeTfqKgoGi0ml8thZ2cHe3t7ODg4wNHREY6OjrTPtYuLCxwcHJCeno6VK1dyVklFISUlxWr12f5LVGhRsLe3h1KpNIqdJv4Aw6Wl4UohKyuLJkPx5S+Q1Yafnx/90pIfMVD6qwSgeAlrbIgo5OTkYOnSpbhy5QoePnxIyyEY0rx5cyxevJgT0UXe94MHDwDofQZEHNg0atQIDx48wL1793D79m20bNkSgL7b2rVr15CcnAxPT88iO+XT09Ph4uJi9nWGdu5KlSrRInOdO3fG6tWrOc+PHDkSI0eOxNKlS/HNN9/Qz/Ty5ctUCMLDw7F06VJ8/vnnRk5mQO90X7BgAV6+fInJkycX2oLUEHbiYHp6OkaOHAlAX/b6zJkznImAj48PxowZg9atW8PJyQlv3rzBzp07cfToUTx//hxarRbp6ek4ffo0Tp8+DUBfDmPx4sW85TeAf0yglkTIMYy+P3N+fj7c3NzotsuXL2PVqlWcznlFoUOHDtRRb6nJLTExETt27EB8fDyysrKwePFi2Nvbw97eHgMHDrS4evN/lQotCubMR1qtFpUrVzZyHrNnR/Hx8fDz80NWVhbvSkGj0SAzMxP16tUD8I+oEAdzaYuCQqFAVlYWGjduXOxjkB9cZmYm7YdtSOXKldGkSRN06dIFEyZMQExMDG0w4+HhwREQBwcH/PLLL7wRN5MnT8bEiRMB6Afi9PR0zoqgsIYzpsjIyChyT+Dw8HAA+lLTf/zxh8n9Pv/8czx58oQTccXmm2++wYgRI5CVlYUqVapwnps+fTrOnDmDy5cv08qsAwcOLNJ1Erp27Urbav75559GK0MS4EBMN0FBQVi4cCEWLlwIhmFw5MgR/PLLL7h16xY1a92/fx+DBw+GnZ0dfHx8YGdnh5YtW2LevHmoWbMm/W0Yfo+Tk5OxYcMG3Lp1C++99x5GjBhBw1BdXFxQrVo1bNmyBcuXL+eUu3dyckLHjh2h0Who3xKyylOpVFAqlbT+k1arhaurKwIDA9GkSZMimdzy8vLg5+eHmJgY2NvbIzExkYZmd+zYsVj3/79EhRYFvh7NgN7ZqNPpEBAQwNnOXimo1WokJyejRYsWyM7O5l1KKxQKeHp60kquRFQYhqGzltIkKSkJHh4evL0dLKVr1660VaVcLkdAQACaNWuGunXr4ttvv8W6deswevRozmtIohoADBw4kLaKbNy4MS5evGjSlDV8+HDs3LkT165d46yoSgKpSUVKrBcFd3d3XL9+3ezntG3bNioIhuG3gH423b9/f3z33Xe8jWuOHTuG4OBgOtP/+OOPMWXKFCMBMcenn35Kczy++uorjlmOkJeXBycnJ973IhaLOTkL169fx/z582k1V6VSSXMqoqKisH//fsjlcmoOq127Npo2bYr79+/j7NmztOkPAFpY0NfXF3Xr1kVAQAB+//13KjyA3nQ4b948ozLepUVQUBDatGmDOXPmQKvVWq3o4X8Fmyhz8fr1a4wdOxbBwcFwcHBAjRo1sHjxYqMB+/79+2jfvj2NYmEnIBEOHjyIunXrwt7eHo0aNTJbRM/e3p7Xp0BqyhsOXuzcg6SkJDg7O8PZ2dlkqKpSqeTEP7P3KwvTUVJSUonD7fr374+HDx/ixYsXyMjIwKNHj7Br1y58/vnnSElJMRIEANSuLRKJMGjQIPTo0QPjx4/H9evXzfo2xGIxp/R1cf0gbAoKCqBUKi0K+zS064eFhZnNIQgPD8e0adMAAAEBAXj16hV27tyJ4cOHc173+vVrODk58ZqvpFIpzp49S0utb9iwAXXr1oWfnx8GDx7M6SrHx6lTp6hot23bFjNmzODdLycnx+J8iNDQUFy8eBFv3rzBw4cP8fHHH2PgwIEIDQ2ln4lKpUJSUhLCw8Oxb98+zJkzB3v27OEIAkGn0yExMRF//fUX9u7dSwWhVq1aOHToEF6+fFlmgsAmNTW12KvP/zI2sVJ4+vQpGIbB5s2bUbNmTTx8+BDjx49HXl4eVq1aBUDf3KZHjx7o1q0bNm3ahAcPHmDMmDFwd3enDsBr167hf//7H5YvX45+/fph7969GDhwIO7evcsbfsdnPmIYhveLDfzjPCYOZuI0ZCe7EUiWMF9CW0lzEyyhoKAA2dnZvLPGosLuksaGz9l76tQpmp/RqlUrSKVSHD582GInIClbYS3S09Ph5uZmkQhfunQJY8aMwYkTJ+Dk5IS8vDx07twZ0dHRyM7OpmUg2NVWdTod7O3tERYWBqlUSmfcP/30EyIiIrB161bUrl3bbGXaunXr4vDhw5g9ezYtkZ2Tk4NTp07h1KlTaNq0KTZu3Gj0WaamptICdu7u7jh+/LjJc+Tl5RmVc7GE4OBgox4Vly9fxs2bN3H//n08f/6c2ublcjlatmyJcePGYeDAgRCLxcjNzcVvv/2G33//Hbdu3UJmZibEYjEOHTqEHj16FPl6rElqairatWtXrtdgi9iEKPTq1YvjzKpevTqePXuGH3/8kYrCnj17oFKpsG3bNsjlcjRo0AARERFYvXo1FYV169ahV69emDVrFgB9o5azZ89iw4YNtDE5GyIKbEdzWloaHbD5HNA6nY4mo5nr05yZmUk7bbHR6XRlYjpKTEyEp6dnkaJ0rAG7qdHnn38OHx+fIkWFkFmkterYFMWf4OzsTBvX+Pr64v333zdKvjNELBbj999/512RNW3aFBs2bMCdO3cKLVferVs33L17F4B+hfLTTz/h+PHjUCqViIiIQNu2bSGXy1GnTh3Mnj0b77zzDrp06QKlUgmxWIxTp06Z/axzc3OtlrXboUMHGkJcGM7Ozhg9ejRGjx6NixcvokmTJnB3dy/1778lpKSkCCsFHmxCFPjIysri/JivX7+ODh06cL74PXv2xIoVK5CRkQEPDw9cv37daPncs2dPHD16lPccZCmsVqup3T0uLg6+vr6Ijo42EgUy04+Pj4evry+nTzNbFDQaDbKzs43isUlm7ZUrV4pU3K6oSUwSiYS2/CSDBl8JCGsRFxeHrl27IjY2lnMf5HI5b88Bc5BB2RrXSfwJ7DDQwiDmmipVqtA2n23btkW7du3g4uICmUwGuVwOqVQKmUyGnj17mh1YdDqdUQvXwmjXrh3atWsHhmGwYsUKrF27Frm5uVCpVHjw4AFGjhyJ8ePH09yRpUuXolGjRiaPxzAM8vPzS6WchqWQSq+kL3l5o9PpkJaWJoSk8mCTovDixQt8//33dJUA6Ge+hmYMMjtLTEyEh4cHEhMTjWZsvr6+SExM5D0PERilUgk7OzsUFBQgIyMDtWrVoqLAhkQlJSUl0e5wgHGoalJSEu31zEYqlaJVq1bUfmxpwTuyzVyhPPZjsu/z58+NGthYKiyWCpZIJEKHDh2M7vGXX34JhUIBV1dXGm1lyUBPMnGtMXDk5eVBo9EUqakQiYYhxfpkMhlOnTpV7OvJzc2FTqezqN6QIWKxGPPmzcO8efMQFRWF7du349dff0VsbCwVhE6dOnEKEPKRl5cHsVhsFR9NcSkoKKBCagvodDqkpKQIJS54KFVRmDt3LlasWGF2nydPnnAcfHFxcejVqxeGDh1a6s4nsjogfoX4+Hh4e3vTHw/DMBxbtEgkgkajgYODA8c+a2g+SkhIgKenJycUk4iGg4NDqf8wSGG3Jk2amC0BUZTHRJDY2968eYNly5ZRQSA1i2rXrk3PfeXKFc59KkxsiIiJRCI8ffrU4tUS3zFTU1Ph7u5u8arj+fPn9LtA/CK9e/cukUCR/ISSilyNGjWwZMkSLFmyBOHh4fj888+p6aowcnNzaUBEeWFL5S0A/YpUqVQK5iMeSlUUZs6cyRudwoadKBIfH4/OnTujTZs2+Omnnzj7+fn5cWKagX9mdSQ5y9Q+ppK32KLAMPrOaQ0aNDCqAU8gK4WAgAAjsxIZ9HNzc5Gbm4uqVatywhPLKjcB0K+cqlevzklusjZhYWH44IMP6D1q164dzUL+/vvvYWdnB19fXwQEBBRJfMjxyOBOBKmogsbm3LlzhQqLRqNB//796Wu6du2Kdu3aYdCgQXj16lWxTXl8SWslpXnz5rSNqCUQUShPbE0UUlJSIJVKrV6M8L9AqYqCj4+PxTa7uLg4dO7cGc2bN8cvv/xiNJCFhobi888/h1qtpjPts2fPok6dOrR8QWhoKM6fP49PP/2Uvu7s2bMmq3sSO7tSqaRfEnYpBFMRRYZLTrZPISEhAT4+PkZZzmWVm5Cbm4uCgoIi2/KLyuzZs+l7HjZsGM1I9fDwQKtWrXDp0iU0atQIUqm0SBnI7BVYUfsVEMjq6PLly2jYsCGcnZ0LFZNBgwZRJ7dMJsOqVavAMAxUKhUUCkWxBQnQfz/i4uKKLSwlMe8B+u9EeRd9KygoMOpvXp6QEhe24N+wNWzCpxAXF4dOnTohKCgIq1at4nS9IrP8999/H19++SXGjh2LOXPm4OHDh1i3bh3WrFlD9502bRo6duyI7777Dn379sX+/ftx584do1UHQSQSwc7ODmq1GnFxcQgMDOR0jDL8gaempkIkEhmZf4j5iGEYJCYm0tWGYbepslol+Pj4FLs/gyWkpqbi/v37AID58+dj5syZVPyHDx+O1NRUODs7F8uGPWDAACxbtgxKpRIPHz4sVtN6kUiEvLw86HQ6eHl5mf3hv3jxAhMmTOD0oggMDCyxIDEMA7VajatXryIkJAQymaxIfiTDAnmW+p4M7wNZ3WZlZSE6OrpYQQvFCXwwvOcFBQU25dRNSUmBt7e30K2NB5sQhbNnz+LFixd48eKFUaQIGVjd3Nxw5swZTJ48Gc2bN4e3tzcWLVpEw1EBoE2bNti7dy8WLFiA+fPno1atWjh69KjJgYUM8KTfAHs/Qz+BVqul9e/5jsMwDNLS0iCRSODh4UEdjIB1+iZYAkkSMizuZm3mz58PnU4HqVSKOXPm4KOPPqLvceHChXj58mWxVyoNGzaEg4MDCgoKsGnTJmzYsKFYx0lPT4eHh4fJe37p0iW88847nOqvpBQDKaNdHIiJUCKR0J7cZTVLN+wJzTD68u+3b99GgwYNaPRbYWLEDmiwRJAMe2OT+8AWCJVKhby8PMTHx5faasmSnhaE1NRUmxIpW8ImRIHEMRdG48aNOY5LPoYOHYqhQ4dafG65XI64uDjUqlWLE+5quFIg5iWNRsObv8AwDBISEuDv709t+Ww7uTX6JhRGTk4OVCqV1UxHCQkJ+OKLL/D7778jJycHq1atwkcffUSb0HTr1g2rVq3C/v37AQCtW7eGo6Mj0tLSitW7gdC0aVNcv36dNtMpDubyExiGwYgRI6ggSKVS+Pn5ITs7G9nZ2UUqMWGO0vAnmIMtSASlUgm5XF7qA2BhAQ3h4eEIDg6mK6aSRthZKkiGInL//n3s3bsXSUlJYBgGH374IS2GN2nSpGKvEP9L2IQolCdyuRxJSUno1KkTZ7vhSoHkJrx584Y3f0GtViMtLY3O0on5qKz6JgB6p7qPj49VzjVjxgxs3ryZs+2XX37BqlWraEvR2NhY6vD09fXF8ePHacYqX50fSxk2bBiuX7+O2NjYQns188EwDDIyMky+7ssvv6RBAL///ju6desGlUpFI1FMZXAXlezs7DIVBT7KysnMFiRD8yrxxZEOhtamKBF2Op0O/fv3xx9//AGpVIrg4GCL+5RXFCq8KKjVajx69Mjox8teKeTn5yMrKwt16tShosBGLBYjPz8f7u7uNMKCiEpZ9U0gpqPi1OXng7THZK962HZ3BwcHPHz4EIC+hk1YWBjs7e3x5s2bEttqR44cSYMFOnXqRIuxWUp2djbEYjHvYJiZmYm1a9cC0AcmdOvWDYDel0HqYLGjkEoCX2XUssZWIo/48nashTlBMsTX1xetW7fG/fv30bhxYyxYsKBUrunfTIV2vYtEIlqywnAQIyYhQG9G8fb2piGsfBEm+fn5RsXvyEqhLFYJWVlZ0Gg0VrNfE1+NYbVS0ueZrBbGjh2LiIgIOvBYw1Zrb2+PZs2aAdCbgdavX1+k15MMdz5hGjduHM1ByMvLw5dffol58+bRHggffvhhsZzbhigUCiiVyhKtmKwBqY5anhBRsCWs7VNQKpVo2rQpRCIRIiIiOM9ZUsjTlqjQonD//n2oVCo6W2TDjigiJSPITMdUn2b2l4w9Kyor01GlSpWsNhsbOnQo76Can59Ps447derEGbDz8vJoufCSws5mnzdvnskIMj7S09NNXgPpKwDoP/9vv/2W8x6OHDmC69evY8OGDXj69GkxrlxPVlYWnJ2dSzUKzBJsZaVgS+GogPVFYfbs2Ual9oF/CnkGBQUhPDwcK1euxBdffFGk73NZU6FF4dGjR/D29uYtJMaOKBKLxfD09DSZ1EaiTAyznwllEXVkLkmvOIwfP57Xxmpvb4/27dtj4cKFtEQ2ISUlBR4eHlYZCFu1aoU///yT5i189tlnOHjwYKGvYxgGmZmZJkWhsFlaZmYmunXrhjlz5vBOFiylrJ3MfKhUKqhUKpsQBVtaKZASF9bKZv7zzz9x5swZzkSGwC7k2aBBA7z33nv45JNPjDr52RIV2qfwv//9D+vXrzfZfY200yQRRYBxVJJWq0VOTo6RmYAMqLdv3y60HIOlIXimXpudnQ2GYayWnfnmzRvqUzDkyZMnJn9MqampVq0l06FDB5w7dw6tW7eGVqvF6NGjMX/+fPzyyy8mSx5nZmZCKpWanJlWrlyZhrwWRkZGBk06LCpZWVm8M8eyJDc3F/b29uW+WikoKCj35Dk2Op3Oat/VpKQkjB8/HkePHuX9zllSyNPWqNCiAJhuyUkyndPT0zkVLg1FITk5GXK53GjgEIlEaNGiBQDLoyMME5Ys2Z89m79w4QINxyuJ+LRu3Ro6nQ5yuRyDBw/Gvn376DmCg4NRs2ZNTJw4EaNHj6blwUnr0QYNGljtswH0eQsnTpzARx99hJiYGMTHx2PSpEm037MhJBTVlKP7r7/+4nxWdnZ2aNKkCeLi4hAXF2eVa2YYBtnZ2bQNa3lhC6YjwPZKXGRmZkKj0ZR4paDT6TB69GhMnDgRLVq0wOvXr432saSQp61R4UVBJpNBqVQabReLxXSAYS99DUNVExIS4O7uzjkGCX1zcnIq9X4GpBR3/fr1aUVSSxOO2M8RMfr7779p+eqhQ4di7NixCAkJwa5du/Do0SMwDIMXL17gs88+w5w5c1C1alU0a9YM3bp1g7+/P27evFnilY/h/xs3boxbt26hZ8+euH//PnJycqBWq+nzbAFIT0/nnaFnZmbinXfewc2bN+m2IUOG4Oeff6YzaYZh8P333yMsLAwnT54sdt3/vLw8iESicnfw2oIoaLVaKJVKmxKF5ORk2Nvbm2w6ZGkhzzNnziAnJ4fTfva/QIUXBVLmwhCRSITMzEyj2R5fqGrt2rU5paPLMjchMzMTIpGoyM1sTPHy5Uv6f+IMa9WqFSZPngyNRoNNmzZh8+bNePnyJbRaLV69eoVXr17h0KFDkMvlqF27NgYNGoQRI0bAzs6uUGEqSjnwqlWr4v79+8jPz8dff/1Fr5MtDmq1GkqlEjExMXT7w4cPMWPGDCrcPj4+WLt2LRo2bMjZTywWY9iwYdRX4unpiaysLItLORCysrLg6upa7iUUcnNzyz0kVqFQQCwWl3mzJ3MUVuLC0kKeFy5cwPXr1416oLdo0QLDhw/Hjh07LCrkaWtUeFEwZT4imcuGtlD2SoGEqpIsTUJZ5SYAoD0krDUAxcTEAABvvLdUKsWUKVMwZcoUJCUlYdWqVbhw4QJevnxJnZoPHz7Ew4cP8fXXX6Nq1aoYMGAAFi5caJXok8uXL+P48ePQ6XTo0qULFQ3yb3p6Ol6/fo169erRbZs3b8bKlStpwuHo0aPxySefcFZHhuJDZvjp6emIiIgotLaQoWiQxkZ37961uIRDUc19hX3eOp3OJlYK+fn5cHBwKHeBZEMij0xdk6WFPNevX4+vv/6aPo6Pj0fPnj1x4MABtGrVCoBlhTxtjQovCnZ2dryiQGLM+XwFxDyUmJhI/Q3sOkdA2awSGEbfT5rd8KekxMfHA4DR7McQX19f2rs3IyMDR44cwZMnT3D69Gm8fPkSOp0Ob968wfr167F9+3ZERkaW2IZLonk0Go1ROQdAL5De3t7w8vKCSqXCe++9h9OnTwPQJ9udOHGC/ljN8dZbb+HcuXMoKChA+/btOaHIlpjknjx5Al9fXzg5OfHup9FooFKpzJrzDJ8zpDABIYmTr1+/ptusYc4r6uCuUChsynQE/FMhtaQY1sgiAlyjRg1aw82SQp62hs2Iwttvv42IiAgkJyfDw8MD3bp1w4oVKzj24fv372Py5Mm4ffs2fHx8MHXqVMyePZtznIMHD2LhwoV4/fo1atWqhRUrVqBPnz4mz8u3UlCpVCYbcJAfXHp6OnQ6HW2mY1j8rixEIS0tDVKp1Kqhj8nJyQD0q5358+dznnNwcMCkSZOMaiulpKRALpdj+/btqFu3Lo4ePYqXL19i586duHfvHrKzsxESEoIHDx6UKIeBRFepVCrk5+cbrT7S09NRtWpV7Nq1C9OnT6cRRtWrV8elS5csPnfnzp1ppdb+/fvjxIkTAPhrCxmi0WigVCpRrVq1QoW1KBQl+IA4uvPy8uDs7MxZUZUkkIHcg6KsbLKzswHoq9EWZ1XEFiNrrTbKshieJYU8bQ2bEYXOnTtj/vz58Pf3R1xcHD777DMMGTIE165dA/BPEki3bt2wadMmPHjwAGPGjIG7uzu9wdeuXcP//vc/LF++HP369cPevXsxcOBA3L1712SWKp8oJCQk0D68hpCVQmJiIvz9/ekXlqwQSAhjcRyURSUpKcmqpiMA9EdcUFCAdevWGT1/+fJlo0J1qamp2LBhA/Lz83H37l0MGDAAzZo1Q1hYGLZt24apU6ciMzMTISEhePToUbFNGuxiZXXr1sXevXtpaKparcaTJ0/w0UcfcVqQvvfee9iyZUuRPo82bdqgatWqiI6OLrQAoyFZWVmwt7e3qiAAKPJ3SqVSwcPDo8R1nExFzlkayJCZmUl/Y5YIEfsx3z0oSQj3kydP8OTJE1y8eBHu7u44fvw4LYbXtGnTEpvaqlWrxpvbY0khT1vCZkRh+vTp9P9BQUGYO3cuBg4cSG1x7CQQuVyOBg0aICIiAqtXr6aisG7dOvTq1QuzZs0CACxZsgRnz57Fhg0bsGnTJt7zGoqCTqdDfHw8XfobIhaLoVarkZKSQk0R7OU6UDamI61Wi+TkZDRv3tyqx502bRpu377NiePX6XQ0IqlatWqc/UmG85MnTzjbnz17BgAYM2YMCgoKMHv2bKSmpiI4OBheXl70B+vh4YHWrVtj4MCBaN26tdmBLzQ0FJ988gnWr1+PtLQ09OzZE66urti0aRMOHDjAaU1ZvXp17Nu3r9glK8jqq6iO2uzs7HIvbQFYL/KoKHWF+EhOTkZQUFCRTYekRIylKyNLAhkePXqEP//8E8+ePYOLiwsWLFiAgoICKBQKHDt2DI0bNy7y+/svYjOiwCY9PR179uxBmzZt6BfRkiSQ69evY8aMGZxj9ezZE0ePHjV5Ljs7O9pxC/gnhtnR0ZFX9UlUkqurKzVfsMtkl0XfBEBvOpLL5VYfgNq0acOJQAKA7du3Y/LkyQCAL774gvNcSkoKIiMjaT2hypUrIzY2lhPGO3nyZCiVSixcuBD5+fmcUhMAEB4ejo0bN0IkEsHNzQ3Ozs5wd3fHvHnzMHDgQM6+y5cvR4MGDTB37lxkZGQgOzsb77//Pn3e3t4ey5cvL9HyXKPR0OJ/w4YNK9Jrs7KybKLFY25ubrk3pdfpdMX2KbBbyVor+a5Ro0aYNWsWevfujQ8++ABjx461ynH/a9hUmYs5c+bAyckJXl5eiI6O5sz8SJQNG3YSiLl92OGihshkMs5KIT4+Hn5+fpBIJLwrBZFIhPT0dE7xO7JS0Ol0ZWY6SkxMhJ+fX5lEdWzZsgWAfpUQGBjIeS41NZWGcPr6+tKVS1paGi0yB+hLcf/6668YNGgQ+vXrhzZt2kAsFsPBwYEOGjqdDpmZmYiNjcXDhw8xfPhwfPDBB0afw4gRIxAdHW00i+/Rowfi4uJKbK8dO3YsPSe7tWth6HQ6myhvwTCMTRTCU6vV0Gg0NuVoJiUurOFTeP36NcaOHYvg4GA4ODigRo0aWLx4sZE5WiiIx2Lu3LlU8U39sYuOzZo1C/fu3cOZM2cgkUg4jeFLC3t7e/ohErNQQEAAp50mGxLKyF4Os30KZWU6SklJKbOZIMnUbN++PQD9TDoyMhK7du3C+vXrcffuXQBA7969sX37dipUx48f5xynb9++2L17NxYvXoxr166BYRgUFBQgNTUVcXFx2LhxI8aMGYMBAwbQUOBDhw6hdu3anAzmFy9eoHbt2jR8FgAGDhyIAwcOWKXGzvTp0+Hs7Iy33367SCsxhUIBtVpd7uYjUvW3vIvQFRQUQCaTlXuZDUOsVffo6dOnNOz50aNHWLNmDTZt2sQJ0Pg3FsQr1U/L0iQQgre3N7y9vVG7dm3Uq1cPVapUwY0bNxAaGmpREoipfcwlibBXComJiXBxcYGTkxPEYjHvSkGlUsHV1ZXzRScrhbKKOkpJSYGDg0OZxKBXqlSJmtd27dqFXbt2mdw3KysLq1evpmI6c+ZMzvNxcXEYM2YMwsLC6DYiIO7u7pwOfAzD4H//+x+OHz+OhIQEtG7dGm+99RaaNm2KrVu3cj4bsViMKVOmWC1BqmnTpnj16lWRBYZURi2L74A5cnNz4eTkVO65AbZW3gLQT6jS09OtIgq9evVCr1696OPq1avj2bNn+PHHH2lxPEt8obZGqYqCpUkgfJAfPclCtSQJJDQ0FOfPn+cs+c+ePYvQ0FCT5yF5CsTBTGKPDWscAaAhfYbviTjEkpOTIZPJTEZAGP6/uD/a0og6MoW5wnHETEbu05EjR3DmzBkAQJMmTehKRqVSYdSoUfjjjz+MjjFq1CiTxz5w4AD27t2LTz/9FHl5ebh16xZu3boFQB8g0LVrV/z5559gGAZDhgxBWFiY1bqmFWeWTTKZyxtbSFoDbFMU0tPTwTCM1SqkGpKVlcUJfRYK4hWTmzdv4vbt22jXrh08PDwQFRWFhQsXokaNGnRAtyQJZNq0aejYsSO+++479O3bF/v378edO3fMLtXkcjnUajWys7OhUCjol4WduUxITU2FWCw2CjeUSqXw9vZGcnKy2TA9UxmxlsZtkxloSkoK7XJW1NcXNQFp7969WLRoEf7++28Aekfynj170KBBA9y8eRODBw+GQqGgUVxkVUFmSjExMQgNDUVGRga93+PHj8fGjRsB6H8g5hgyZAhOnDjBCRaQyWR48uQJvvnmG7otOzu7RH2hrUF2dna5V0YF9KJQ3n4NwDZFITU1Fc7OzqXib3nx4gW+//57TgltoSBeMXF0dMThw4exePFi5OXlwd/fH7169cKCBQvoAGxJEkibNm2wd+9eLFiwAPPnz0etWrVw9OhRs2GJcrkcSqWS42AG+FcK8fHxcHBw4E3oqV+/fqGx6ZbEfBcWYpeTkwOpVAq1Wg2FQmHR8fiu19JM1ho1amDfvn1YsGAB/vzzT8TGxmLQoEH49ddfERkZCYXi/9o777gm7v+PvxIhYQkoU9uKi6LiBqWoddUKirY+6oOqtdZVbftFUcBabd3bui2OukD71QfWfqttbR24WwUH4ihS60CxIhAIMYzs3O+P/O6aCUnIOPTzfDx4cLm75C6Q3OveWwoASE1NZf4XtAWRmJiI7777jnHPxcfHY9euXTh16hQjCoMHD671b9atWzcmpsHn8yGTyaBQKNC+fXsd12NoaKhDAvymoAvGnN0ZFdCIgn5CgDOQSCSssJy0ofse1Ya5DfG0R98+ffoUsbGxiI+Px5QpU2xyrs6CFaLQqVMnnDlzps79zCkCiY+PR3x8vNnHpi80paWlzAhIwNBSkEqlEIlECAgI0FlvSW1CfXO+ASA3NxchISEWuUkszfc2trxs2TIEBgZi7969EAqFiIuLY6wqLy8vnS+/Wq3G22+/rfO+k5KS0K9fP/z+++/Ys2cPAE2F9I0bN0xaNNu2bWMEITY2FmvWrMGCBQtw+PBhyOVynSSF6OhoVFVVGRU2R7jZ6GM7O+NHpVKhpqaGuI9MUFpaWmfzSEtjoUVFRRgwYAB69epl4JUgDfEaIDwej2mZoN1KV99SePbsGZo2bQoXFxed9Y6sTVAoFCgvL9eZ72AO5rRnMIetW7ciMjISiYmJTCdSQHO3b6zwx83NDeHh4Vi2bBl69uzJCExhYSEATZFi69atDYRILpcjLy8P6enpAIDw8HAsWrQIlZWVSE5OxqhRo7B8+XKdjKT09HQcPnwYHTt2xKhRo3T60ljiWrNkP+1l2i2hVCodKkb6VFdXw8XFxeYV1ZZSnxoFe1JWVlanpWBJLPTp06cYMGAAIiIikJaWZnAdIA3xGiB8Ph9Pnz41+PBqZx/RE9jatm0LkUik0+eIoijm4mBvSktL0bhxY6emGk6aNAlBQUF4//33mXUpKSm4du0a8zgsLAyHDh1CmzZtjL7G48ePAWgaz2kH/BITE7F3716mEA7QxGt+++03nS9y9+7dMXz4cAQFBTHzogFNkO/ixYu4ePEivL29kZiYiBkzZtTptjt//jy+/PJLqFQqZGZmgsvlWtTSm/4NwGhL7/oKjiXPr6yshJeXl9Mzj6RSKSiKYtUYTsB26aiARhD69++PkJAQrF27FgKBgNlGWwGkIV4D5PHjxygrKzMIEGq7j0QiEVQqFfz9/fH8+XMdsQAcU5sAGC/OcwZ37txhlhs1aoSuXbvquP9OnTplsvmcUqlk+itpB5mFQiH27Nmj45pzdXXFxo0bTd7ZLVu2DF988QWWLl0KHo+HrVu34vHjx5DJZBCLxVi2bBnWrVuHqVOnYtGiRQYpq6WlpRg7dqzO4J3q6mqrWodcunQJbdq0gZ+fn8VxImNtGSyJORmDnjBnicCYI0zmNqyj5zI7M85jDFsVrgGaO/779+/j/v37TFdUGvpzTBriNUAuXLgALy8vg4uYtvuIDkLTXwT6TtaRcxPkcjkqKipsPu7SGo4dO8Ys0xf2jz/+GPPnzwcA7Nq1y6B7LY22eGjneM+aNYuxuo4fP47OnTvX6RcfMmQIunbtih49egAAE+DLycnB9OnTcfPmTaax3zfffIOwsDCMGzcO48ePx5IlS7Br1y6Di6qxKXx1oVAoUF1djSZNmji8UEu7R5BarcatW7fg6+uLoKAgg3kTtQmUJWJkqmGdtmDQ+9KT+GxtEWnvZwllZWUWu19NoV1XUxukIV4DgqIo3L59m+lzpH2nQ1sKSqUSAoGAmbes3ecIcJyVUFJSAh8fH6eb40qlEjdu3GAe040Mvb29ERwcjOLiYixZsgT9+vUzOruAFhRPT0/mvUilUvz4448AwLTAMAd6XKo+ERERuHTpEv7++2/85z//QXZ2NtRqzZyDL7/8UqfitFGjRkhJScGWLVtQXV2NFStWGFRi14VYLIabm5tTpotp9wgCNA0K27RpY3LUpK2gxciUcDx58gRyuRyvvvpqrQJjbvdU7WX992+OqBw6dAgPHjxAdnY2Y0m6ubnB3d0dU6dOtfvfqyHxUosCh8NBeno6Ro8ebXSbWq1GSUkJPD09mbtWWizoALMjRYENrqOSkhKdu2ntC/jJkyfRuXNnUBSFH3/80ago0MVn2t1WZ86cCYVCAQ6HY7avlZ5poW+2a/P666/j1KlTqKqqQmpqKjIyMnD//n3mBqBv377Yt28f/P39UV5ejt27d+P8+fNGZzXUBhv6HQFgRpE6IvNIX4z0efLkCZo0aWLzz2xdYmRquUWLFpDJZJDL5XBzc4NAIIBUKoVEIsGkSZNseo4NnZdaFABNjYSxGc30xf/Zs2c68QZtS8Ea89Ua6HTYTp062f1YdfHDDz8wy/369dPZdvjwYWZZv1stTUFBAQBNsFipVGLq1Kn4/vvvAWjcSeZeRKqrq6FUKs26GHt5eWHOnDmYM2cOM/MhMjJSx+pasWIF0tLSoFarMX/+fKxbt86s8wAMq1idRXV1Nfh8vtXpzrZEIpHUmeVjDXWJkSk++eQTUBSFjIwMfPXVV4zLkWAIu6JATsDUOE46dlBVVaWTraCdleQoK6G0tBS+vr6sSDM8ePAg81j/wr9t2zYAQMeOHY1e3JVKJZ4/fw5Ak8b6yiuv4ODBg0x3WUuahFVUVMDX19fii4OHhwf69Olj4Ibz8vJC7969AaDW/k76sKUzKgAm84gNsLFGQaFQoKKiwmbWy5YtW9CyZUu4ubkhKiqKsYIbOi+9KNBtLvThcDhQqVQICAjQufOiLQVH1SYA/7bJdjbPnz/HzZs3mceDBg1ilnNycpgW5fPmzTP6fO10zS1btuikk8bHx1t0ty0UCm1+d063J6iurkbHjh2NBlP1kUqlUCqVrPBJs6FdNvBvjzC2iUJ5eTkA2CQl9eDBg0hOTsbChQtx/fp1dOnSBTExMcw424YMEYX/b3NhrE02RVE6cxNoHOk6kkgkEIvFdmvgZQnalZn6d8Zz585l1g8fPtzo83/77TdmOTs7m1nmcDhITU01+zwoijIZZK4PHTt2ZMSXdnPVBVs6owKaqmo2iJNEIgGXy3VK4L02BAIBfHx8bGJxr1+/HlOmTMHEiRPRoUMHbN++HR4eHky1fkPmpY8p0G4EpVKp8yGm3Rz6VYccDgcymQwlJSVwcXExO7e7Ph1RmzZtyoovGJ0hBECnN0xNTQ2ysrIAAGPHjjX5fFPmtYuLC/r3749WrVohIiICU6dOrXV6WVVVFdRqtV0ugA8ePEB6ejquXbtmluizxXVEURTTMtvZ0K4jZxfQ6WOrGgW5XI6cnBzmRgjQuJUHDRrEfA8aMi+9KNAXW7rTJ412daI2np6e8PDwgEAgqDMPXBtjHVHNEZOioiL4+vqisLDQ4ipY/YKi+iCRSLBr1y7msfbFf+nSpYz1tHDhQpOvce/ePWZZOzajUCiQl5eHvLw8HD16FFu3bmV6HhlDKBSiSZMmdrPUzM0/BzSiUFsGlKOQy+VQKBSsiCmwMZ4A/NsMr77fibKyMqhUKqNTHrX7cTVUWCkKMpkMUVFRuHnzJnJzc9G1a1dm261bt5CQkICrV68iICAA06dPNyiUOnToEObPn49Hjx4hNDQUq1evxtChQ40eizYlteMKMpkMIpEIAHTqF9RqNTw8PNCpU6c6Mzy0C4pqa41Q23apVMoEwSsqKsxKvdN3g9W3rQK9XFFRgdjYWKSnpyM0NBSVlZXM9r179wIAoqKiar1Tpf+O/v7+ePDgAQ4fPozvvvsOr7zyCvLz83H16lUAYKaumcIe8QRrUKvVqKysZIWlUFVVBXd3d1a4sdgsCraqZn6RYaUozJ49G82bN9cJagL/jrYbNGgQtm/fjtu3b2PSpEnw9fVlysYvXbqEMWPGYOXKlRg2bBgOHDiAESNG4Pr160ZbaNPWgXYGUnFxMXx8fHT6HAH/Nr+ztCOqtTx8+BD+/v7o0qWL2c+prxCZKigSi8UYNWoUhgwZgsaNG+PGjRtQq9W4cuUK42obMWIETp06ZbI196ZNm3D37l3ExcXhzp07aN++PVatWqWzb2VlJSQSCf755x+TQlVRUYFXX30Vcrnc6spWW0ALo7PHXgLsGawDaESBjc3eysrKbBKb8/f3R6NGjSye8thQYJ0oHDt2DCdPnsT//vc/nXYKgHmj7TZt2oTY2Fh8/vnnADSujczMTKSmpmL79u0Gx6Pv+OmCLLo2ISQkBCKRCGq1mrmwOzLADGg+ZNpFXuZgj/NTKpU4d+4cevbsaWAJaFf/Pnz4EB9//LFJwQkJCUGfPn1q7fnD5XLh7u6O0tJSo6+hVCqhUql0qqoB05Wt9lym4wls8J2zTRTYMGxIH4FAYJOLNo/HQ0REBE6fPo0RI0YA0FwbTp8+jWnTptX79Z0Nq0ShpKQEU6ZMwZEjR4zefZkz2i4rK8sgfz4mJkZncpc2HA4HfD6fcR+JxWLI5XKm8Ia2FCyZm2ALqqqqUFNTwwpzt7y8HO7u7kZdQ4sXL8bPP/+MoqIifPvtt3j06BEWL15st0K7goICiMVipnLaksrW2kTGXIvKWJba2bNnLY4VWSNCtU3Oq6qqqtPt5ggoimKt+6isrMxoi3drSE5Oxvjx4xEZGYmePXti48aNqK6uxsSJE23y+s6ENaJAURQmTJiATz/9FJGRkUYDjeaMtjPWSTQoKIjJoTcGPUoS0DS/CwoKYhqb0cFQR9cmlJSUwN/f3+EN1oxRVlZmUpy8vLyQl5eHXr16IT8/HydOnMCZM2eYmIytoYeuW1vZWl+03XNXrlxBSEgIfH196+2eq23ZWNKCfp+fmpoaFBQU4OnTp3axjMxNWlAoFFCpVKwVBVuldo8aNQoCgQALFixAcXExunbtiuPHj7OiFU19sfsVx9zRdidPnkRlZaVOmpcj4HA4cHV1hUwmg1KpRGlpKbp168Z8CbTvEB01N4GiKBQXF6Nt27Z2P5Y55yIQCGq9w+LxeMjOzsbAgQNx/fp1u10Q1Go1RCKRzbpcWgN9oVQoFJBIJAgKCrJ7unBd8yAkEgnu3LmDli1bmowpmZoPUZuYGXvvdVk+KpUKXC4X9+7ds4nFZCvXHP05tmW9z7Rp014Id5E+dhcFc0fbnTlzBllZWQaFJZGRkRg7diz27t1r1mg7U/vU5kukW10IBAK4u7sz+e9cLpdpwAU41nUkk8ns0jvGUp4/fw6KomqtGwA0tQYXLlwAAKMXFFsgEong4uLCilz858+fw93d3SH1I3WNcVUoFPD09DRaaGkt1jaeE4lEcHV1hYuLi0XzIejfxrLn6mvtHD16FBwOB0VFRfj777/B4/Hg5uYGDw8Pm7mTXiTsLgrmjrbbvHkzli1bxjwuKipCTEwMDh48yHTbNGe0XXR0NE6fPo2ZM2cyr5WZmYno6GiTx3Z1dYVcLkdRURGaNWvG3J3QloIj5yYAGldYQEAAK9IL6fGFllhI9rKm6CpmNgR22VK0BtgnyGyte46OvYWGhlp1XG1Lx1Zxop9//hkVFRWQSqVITU2FQqGAVCoFoJmeRtDF+Q7r/0d7pi4A5kPepk0bpjjInNF2M2bMQL9+/bBu3TrExcUhIyMD165dM9lsjQ40V1ZWQqVS6QRIaXMYcJyVQLuOnOki0UYgEFicAWUvhEIha7JaxGIxKwK7AHvaWwCazKP6pOjaI3vu+PHjePLkCdq1a4dbt26xojsAm2lQvY/o0XYFBQWIiIhASkqKwWi7Xr164cCBA9ixYwe6dOmCH374AUeOHDFao0Dj6uqK0tJS+Pv763xg6KZ4jrQSxGIxlEolK1xHEokE1dXVrDgXlUrFmhbVdGdUb29vZ58KAE0jPDalozp7EJQxBAIBmjZtanFb8ZUrV6JHjx5o3LgxAgMDMWLECNy9e1dnH6lUioSEBPj5+cHLywsjR440cGE3JFhjKejTsmVLo+l/5oy2i4+PR3x8vNnH4vF4KC0tNfDJ0paCozuiBgQEOKUYS5+ysjL4+vqyoj+/SCQCn89nRVaLRCJhTWdUtVrNOlFgw/9In9oy6Grj/PnzSEhIQI8ePaBUKvHll19i8ODBuHPnDhPbSkpKwq+//opDhw7Bx8cH06ZNw3vvvYeLFy/a+m04BNaKgiORSCTIzc01OqeZzjpyBBRFoaSkBB06dHDI8eqC7hXDBtjS2gLQxBMaN27MiphPTU0NuFwuK+7O1WpNaxY2VHjrU1paioCAAIvjUcePH9d5nJ6ejsDAQOTk5KBv3754/vw5du/ejQMHDmDgwIEAgLS0NLRv3x7Z2dl44403bPYeHIXzb0dZQGlpKdOyQBtaFBx1105XULPh4qdUKiEUCllRPAewTxTYFGT29PRkRfCd7grg7GFQxrDWUtCHbulCfxZzcnKgUCh0Zou0a9cOLVq0aLAdU196S6GsrAwikQhvvvmmznq6vcVff/2F+/fv15pnbU1VqrFtxcXFCAwMZIXrSCgUmqxidjQKhQKVlZWs6acjFovx2muvOfs0ALCvvYWbmxsrPr/62KIZnlqtxsyZM9G7d28mRllcXAwej2eQsl1XwSybeelF4cqVK2jatKnBP5WiKHTo0IGJKeinwNVVrWptXjaHw0FJSYnZgmNNUZD+nAdjd5lsch2JRCK4u7uzxkUiFotZE2SuqqpijViyNZ4AaG7+QkJC6vUaCQkJ+PPPP/HHH3/Y6KzYyUsvCkOHDkXv3r0Z05dGpVLB1dXV7sFEWizKy8uRn5+PyMhInaIhc3Kz9QuE6npOXe216bYJnp6euH79utWCU9+WCTRsch1VVlbCxcWFNX7zqqoq1lgtbBeFHj16WP38adOm4ejRo7hw4YLO/Izg4GDI5XKIRCKdG8uG3DH1pRcFQDN9TXueAl2R64hAIn2xLC8vR3BwsENcAcaKg7R/V1ZW4sGDB2jRogXTYkF/P+0CIXOsIn0ssXDoMYoPHjyw2nqylUuDTkVlgw9fpVJBIpGwyn3ElnPRx1r3EUVRmD59Og4fPoxz584Z9F6LiIiAq6srTp8+jZEjRwIA7t69i8LCwloLZtkMEQXoNsQDLJubYAvUajVKS0stmptQH+q6SFZUVCAgIACvvPKKTY5nbssEY+voiWI8Hg9SqbRWMautd09drbXNtYSKi4vB5/MhEAjqfI69fetVVVVwdXVlTTGWRCJhTWKCNnTfI2ua1SUkJODAgQP46aef0LhxYyZO4OPjA3d3d/j4+GDy5MlITk5G06ZN4e3tjenTpyM6OrpBZh4BRBQAGBcFR3ypaYRCIbhcbp39hRyFLfyv2tSno2lJSQmEQiHCw8Mtep6+EFkzcMhY357KykooFArcv3/f6Ovov29rXG/mbi8vL4eHhwcUCkWtbbUdBZvdR+Xl5VY1w9u2bRsAoH///jrr09LSmJ5uGzZsAJfLxciRIyGTyRATE4OtW7fW95SdBhEF/NsQD3D83AQATLtvNrgkpFIpa3rzA9bHE+zRWlsul+P8+fPo2bOn0YK+urqZmmPhWBIfUiqVADQFVtrvu77JB5YKF52IIZfLWSkK1dXVqK6uttp9VBdubm7YsmULtmzZYs3psQ4iCtBYCjU1NQAcPzdBrVZDIBCge/fuDjleXdD+e7a4JIRCodXN1WzN8+fP4eHhYbLCu65uprYmJycHgYGBaN68udkuNVPiIpPJzH6OsUQF+obm8uXLJoXGlpl0ltxACQQCcLlc1tzosB0iCtD0PlIoFExmjqPmJgAaV42rqytrUhxtVeRjC6RSKWpqaliTcikWi1lTtAZoYgpt2rRxqBABMJp8UF5ejsLCQnTo0MEsd52xQUO1CZKpltp11f2kpaWhpqYGfD4fCxcuhIeHB9zc3NCiRQuLWuG8TLBOFFq2bInHjx/rrFu5ciXmzJnDPL516xYSEhJw9epVBAQEYPr06Zg9e7bOcw4dOoT58+fj0aNHCA0NxerVqzF06FCjx6TdR46emwBofOZscR2pVCpW3ZlXVFTA29ubFb2XAI2lwJbaDblcDrlc7pTiQm2LiKa8vBxeXl52Sx22Jj4kk8nw2muv4d69e3Bzc0NpaSmkUikkEgmePXtGRMEErBMFAFiyZAmmTJnCPNauFRCLxRg8eDAGDRqE7du34/bt25g0aRJ8fX2ZbqmXLl3CmDFjsHLlSgwbNgwHDhzAiBEjcP36daPdUmlRcHRHVJVKBYFAUK/8aVtSXl4OPp/PiipmgF31CXRn1DZt2jj7VABorAQ3NzfWCKa9g8wcDsfi0bQtWrRAVFQU9u3bB4VCgZ07d9brHFatWoW5c+dixowZ2LhxIwCNNZuSkoKMjAydIHNDHsvJvnp0aEQgODiY+dG+SO3fvx9yuRx79uxBeHg4Ro8ejcTERKxfv57ZZ9OmTYiNjcXnn3+O9u3bY+nSpejevTtSU1ONHk87+8iRVkJZWRn4fD5rcrtp1xEbrBaAXaJQU1MDtVrNis6ogCZ4yhbxBjR/HzYGmQHYZAzn1atX8e233xpMaktKSsIvv/yCQ4cO4fz58ygqKsJ7771Xr2M5G1aKwqpVq+Dn54du3bphzZo1TJYFAGRlZaFv3746gdCYmBjcvXsXFRUVzD7aDarofUw1qKJFwZFWAqDJOgoODmbFRZjO5WaLe0QikUAmk7EmTZfujOqoWFNdsGmwDqC5Y2arKNCzUqylqqoKY8eOxc6dO3XiW3SH1PXr12PgwIGIiIhAWloaLl26hOzsbFuculNgxydci8TERGRkZODs2bP45JNPsGLFCp14AZ2+qQ39mC4sMbWPqQZV2qLgqC+9UqlEWVkZa8zMyspKqNVq1gR1hUIhfHx8WNGeGmBnkJktlgJFUay2FMrLy+v1PUtISEBcXJzBjeaL2CEVcFBMYc6cOVi9enWt++Tn56Ndu3ZITk5m1nXu3Bk8Hg+ffPIJVq5cabeWvBRFoaqqCmKxGF5eXuDz+QZ377a+my8pKYGHhwdrXEcCgQB+fn6suRNmk+sI0NwV6o+MdRb055Utnx06c4+toiAQCNC7d2+rnpuRkYHr16/j6tWrBttexA6pgINEISUlhan+M0Xr1q2Nro+KioJSqcSjR48QFhaG4OBgg1F39GO6AZWpfUw1qMrPz8eVK1eYWcQcDgdubm5wc3NjunPq/6aXTT3W/m1sfUJCAt5++2107NgR7u7uBnfEjnYpCQQCVl30hEKhzdps1Be6HxRbLAWZTAalUskaS0EikYDH47HGqtPH2pjCkydPMGPGDGRmZrKiQ6+jcIgoBAQEWJ37fuPGDXC5XOafGh0dja+++goKhYLJvMjMzERYWBjj+oiOjsbp06cxc+ZM5nUyMzNNNqhKTU3Fhg0bmLx4iUQCiUTCLOuvp3/o9fRvsVhssJ1+HXqZ3lcmkyE7OxtLly4FoKmV0BeY2kRFf3tt64y9lqurKyM8BQUFWL58OQ4dOmTV/8jW1NTUQKlUsiaeQHdGZcudcFVVFTw8PFhzEWaz64iiKKtbXOTk5KC0tFSnsFSlUuHChQtITU3FiRMnXrgOqQDLUlKzsrJw+fJlDBgwAI0bN0ZWVhaSkpLw4YcfMhf8Dz74AIsXL8bkyZPxxRdf4M8//8SmTZuwYcMG5nVmzJiBfv36Yd26dYiLi0NGRgauXbuGHTt2GD0uh8MBj8cDj8ezWxGZdvFNeno6UlNTceHCBQOx0RYZffHRF6WKigoUFRUZFSLtZfr52r15uFwuIxZKpRJSqRT9+/c3ag2ZEilzhEt7vbkuuVOnTkEsFrPGlUVPWmNDQgDArsE6ALuDzHQChTWi8NZbb+H27ds66yZOnIh27drhiy++wGuvvfbCdUgFWCYKfD4fGRkZWLRoEWQyGVq1aoWkpCSdOIOPjw9OnjyJhIQEREREwN/fHwsWLGBqFACgV69eOHDgAObNm4cvv/wSoaGhOHLkiNEaBUehfUHx8/PDrFmz4OnpaVcXgLYQqdVqKBQKHQuIXk5OTkZYWBiGDRtmIEL61lB5eblZIiSRSHSaDAKo0yVH/7548SL8/f2Rl5dnkUuOXufh4WFTl9xff/3FuBbZANtEgc2WQmVlJWQymVWB5saNGxtcMzw9PeHn58esf9E6pAIsE4Xu3bublcrVuXNn/P7777XuEx8fz9qKxXfeecchx9G+CNIVqG5ubjoZRnTLglmzZqFDhw71Op62CNEVqLSY0CJTl0uupqYGv/76K/r168eM4axLhLSXtanLJVfbeu3fc+fOxYQJEzBgwIBaXXI8Hs/uCQqARhTY0ooE0FgKbHH16SMQCODq6mq3eNCL1iEVADiUOW0ACQQHcfPmTbz55psQCoV1VrDqf3Tp1gbGrCGpVIrq6uo6XXLaQiORSPD8+XNkZWWhQ4cOUCgUBtaQ9gAhLpdbZ0zI0riQ/npXV1cMHDiQsXz1XWzOcHH9/vvvCA8PZ1W2GE1WVhbGjRuHp0+fssb9x3ZYZSkQCJ07d0Z+fr5ZLQ30v+SNGjWCh4cHPDw8bNYR8+jRo5g1axby8vIAGFpDplxyxoTHli65Xr16AdC4XOsSHFNZc5bGhdzd3Q3+L3K5HGvXrq13Cwl7wbYq/YYAEQUCq+BwOKxJRQWAjh07Mn1uAF0h4nA44PP54PP5dnOf6IvQDz/8gOXLl+PkyZNWZclVV1dDIBBY7ZKjs7BoweByuXj06BFGjRrFdCA1xwqqzQ1nS5ectWM4X2aIKBAItdCyZUunBpn1Rahp06b46KOP7FYJb6lLLisrC5s3b8a0adOMJijQLrji4mIDATNlDWm75DgcjtnWjzHBuXTpklmDcgj/QkSBQGhADBo0yKDdgi2x1CVXVlaGN954A+PGjbP6mPVxyRmzhuh0bYlEguLiYta0gm8okEAzgUAgGOHp06f44osvcOzYMdTU1KBt27ZIS0tDZGQkAI2ALVy4EDt37oRIJELv3r2xbdu2Bi9C7KgOIhAIBBZRUVGB3r17w9XVFceOHcOdO3ewbt06nXTur7/+Gps3b8b27dtx+fJleHp6IiYmBlKp1IlnXn+IpUAgEAh6zJkzBxcvXjRZD0VRFJo3b46UlBTMmjULgKbyPSgoCOnp6Rg9erQjT9emEEuBQCAQ9Pj5558RGRmJ+Ph4BAYGolu3bjpptwUFBSguLtaJ7/j4+CAqKqpBt80GiCgQCASCAQ8fPmTiAydOnMBnn32GxMRE7N27F8C/s1ssmdvSUCDZRwQCgaCHWq1GZGQkVqxYAQDo1q0b/vzzT2zfvh3jx4938tnZF2IpEAgEgh7NmjUz6AXWvn17FBYWAvh3doslc1saCkQUCAQCQY/evXvj7t27Ouv+/vtvhISEAABatWqF4OBgnD59mtkuFotx+fLlBt02GyDuIwKBQDAgKSkJvXr1wooVK/D+++/jypUr2LFjBzOThcPhYObMmVi2bBlCQ0PRqlUrzJ8/H82bN8eIESOce/L1hKSkEggEghGOHj2KuXPn4t69e2jVqhWSk5MxZcoUZjtdvLZjxw6IRCL06dMHW7duxeuvv+7Es64/RBQIBAKBwEBiCgQCgUBgIKJAIBAIBAYiCgQCgUBgIKJAIBAIBAYiCnZi+fLl6NWrFzw8PExO5SosLERcXBw8PDwQGBiIzz//HEqlUmefc+fOoXv37uDz+Wjbti3S09Ptf/IEAuGlhYiCnZDL5YiPj8dnn31mdLtKpUJcXBzkcjkuXbqEvXv3Ij09HQsWLGD2KSgoQFxcHAYMGIAbN25g5syZ+Pjjj3HixAlHvQ0CgfCyQRHsSlpaGuXj42Ow/rfffqO4XC5VXFzMrNu2bRvl7e1NyWQyiqIoavbs2VR4eLjO80aNGkXFxMTU+7xCQkIoADo/K1eu1Nnn5s2bVJ8+fSg+n0+9+uqr1OrVq+t9XAKBwG6IpeAksrKy0KlTJ50uizExMRCLxcjLy2P20R+9GBMTY7PWvEuWLMGzZ8+Yn+nTpzPbxGIxBg8ejJCQEOTk5GDNmjVYtGgRU9Fpa7Zs2YKWLVvCzc0NUVFRuHLlil2OQyAQaoeIgpMoLi422naX3lbbPmKxGBKJpN7n0LhxYwQHBzM/np6ezLb9+/dDLpdjz549CA8Px+jRo5GYmIj169fX+7j6HDx4EMnJyVi4cCGuX7+OLl26ICYmBqWlpTY/lj6LFi0Ch8PR+WnXrh2zXSqVIiEhAX5+fvDy8sLIkSMNmqARCC8SRBQsYM6cOQYXEP2fv/76y9mnaTarVq2Cn58funXrhjVr1ugEubOystC3b1/weDxmXUxMDO7evYuKigqbnsf69esxZcoUTJw4ER06dMD27dvh4eGBPXv22PQ4pggPD9exmP744w9mW1JSEn755RccOnQI58+fR1FREd577z2HnBeB4AyIKFhASkoK8vPza/1p3bq1Wa8VHBxstO0uva22fby9veHu7l6v95KYmIiMjAycPXsWn3zyCVasWIHZs2cz282xZGyBXC5HTk6OjpuMy+Vi0KBBDptg5eLiomMx+fv7A9CMV9y9ezfWr1+PgQMHIiIiAmlpabh06RKys7NtcuwLFy5g+PDhaN68OTgcDo4cOaKznaIoLFiwAM2aNYO7uzsGDRqEe/fu6ewjFAoxduxYeHt7w9fXF5MnT0ZVVZVNzo/w8kFEwQICAgLQrl27Wn+076xrIzo6Grdv39ZxkWRmZsLb25vp4x4dHa3Tmpfex1RrXkssmeTkZPTv3x+dO3fGp59+inXr1uGbb76BTCaz5k9jNWVlZVCpVE6dYHXv3j00b94crVu3xtixY5me+Tk5OVAoFDqC1a5dO7Ro0cJmglVdXY0uXbpgy5YtRrebMxx+7NixyMvLQ2ZmJo4ePYoLFy5g6tSpVp1PXSI1YcIEg89UbGyszj5EpBo2pHW2nSgsLIRQKERhYSFUKhVu3LgBAGjbti28vLwwePBgdOjQAePGjcPXX3+N4uJizJs3DwkJCeDz+QCATz/9FKmpqZg9ezYmTZqEM2fO4Pvvv8evv/5q9JgpKSmYMGFCredlypKJioqCUqnEo0ePEBYWZpYl8yIQFRWF9PR0hIWF4dmzZ1i8eDHefPNN/PnnnyguLgaPxzOoM7GlYA0ZMgRDhgwxuo2iKGzcuBHz5s3Du+++CwDYt28fgoKCcOTIEYwePRr5+fk4fvw4rl69isjISADAN998g6FDh2Lt2rVo3ry5RedDi9SkSZNMusliY2ORlpbGPKY/rzRjx47Fs2fPkJmZCYVCgYkTJ2Lq1Kk4cOCARedCcBLOTn96URk/frxByicA6uzZs8w+jx49ooYMGUK5u7tT/v7+VEpKCqVQKHRe5+zZs1TXrl0pHo9HtW7dmkpLS7PL+f73v/+luFwuJRQKKYqiqK1bt1JNmjSh5HI5s8/cuXOpsLAwmx5XJpNRjRo1og4fPqyz/qOPPqLeeecdmx7LHCoqKihvb29q165d1P79+ykej2ewT48ePajZs2fb/NgAdP4ODx48oABQubm5Ovv17duXSkxMpCiKonbv3k35+vrqbFcoFFSjRo2oH3/80abnQ1Gaz/W7775r8jl37tyhAFBXr15l1h07dozicDjU06dP63U+BMdA3Ed2Ij09HRRFGfz079+f2SckJAS//fYbampqIBAIsHbtWri46Bpv/fv3R25uLmQyGR48eFCnJWAOWVlZ2LhxI27evImHDx9i//79SEpKwocffogmTZoAAD744APweDxMnjwZeXl5OHjwIDZt2oTk5OR6H18bHo+HiIgIHTeZWq3G6dOnnTLBytfXF6+//jru37+P4OBgyOVyiEQinX0cNXLRnOHwxcXFCAwM1Nnu4uKCpk2b2s39du7cOQQGBiIsLAyfffYZysvLmW1ZWVnw9fVlrBYAGDRoELhcLi5fvmyX8yHYFiIKLyF8Ph8ZGRno168fwsPDsXz5ciQlJenUIPj4+ODkyZMoKChAREQEUlJSsGDBAqt91bWRnJyMnTt3Yu/evcjPz8dnn32G6upqTJw40ebHqouqqio8ePAAzZo1Q0REBFxdXXUE6+7duygsLGzwIxetJTY2Fvv27cPp06exevVqnD9/HkOGDIFKpQLgHJEi2BYSU3gJ6d69u1nZM507d8bvv/9u9/MZNWoUBAIBFixYgOLiYnTt2hXHjx83uEO2B7NmzcLw4cMREhKCoqIiLFy4EI0aNcKYMWPg4+ODyZMnIzk5GU2bNoW3tzemT5+O6OhovPHGG3Y/N+3h8M2aNWPWl5SUoGvXrsw++vUcSqUSQqHQLtbM6NGjmeVOnTqhc+fOaNOmDc6dO4e33nrL5scjOB5iKRBYwbRp0/D48WPIZDJcvnwZUVFRDjnuP//8gzFjxiAsLAzvv/8+/Pz8kJ2djYCAAADAhg0bMGzYMIwcORJ9+/ZFcHAwfvzxR4ecmznD4aOjoyESiZCTk8Psc+bMGajVaof8DVu3bg1/f3/cv38fgONFimAHnBrRIBBeciorK6nc3FwqNzeXAkCtX7+eys3NpR4/fkxRFEWtWrWK8vX1pX766Sfq1q1b1Lvvvku1atWKkkgkzGvExsZS3bp1oy5fvkz98ccfVGhoKDVmzJh6nxuMBJr1efLkCcXhcKiffvqJoqh/A83Xrl1j9jlx4gQJNDcgiCgQCE7k7NmzRrPUxo8fT1EURanVamr+/PlUUFAQxefzqbfeeou6e/euzmuUl5dTY8aMoby8vChvb29q4sSJVGVlpVXnU5tIVVZWUrNmzaKysrKogoIC6tSpU1T37t2p0NBQSiqVMq9hL5EiOAYORVGU08wUAoHAKs6dO4cBAwYYrB8/fjy2bduGESNGIDc3FyKRCM2bN8fgwYOxdOlSnfiPUCjEtGnT8Msvv4DL5WLkyJHYvHkzvLy8HPlWCFZCRIFAIBAIDCTQTCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYCCiQCAQCAQGIgoEAoFAYPg/bbngnORTQy8AAAAASUVORK5CYII=", + "image/png": "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\n", "text/plain": [ "
" ] @@ -625,7 +773,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -637,7 +785,7 @@ }, { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -647,7 +795,7 @@ } ], "source": [ - "print(list(cell.group_nodes.keys()))\n", + "print(list(cell.groups.keys()))\n", "\n", "fig, ax = plt.subplots(1, 1, figsize=(5, 5))\n", "colors = plt.cm.tab10.colors\n", @@ -668,12 +816,12 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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\n", "text/plain": [ "
" ] @@ -710,7 +858,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Congrats! You have now learned how to vizualize and build networks out of very complex morphologies. To simulate this network, you can follow the steps in the tutroial on [how to build a network](https://jaxleyverse.github.io/jaxley/latest/tutorial/02_small_network/)." + "Congrats! You have now learned how to vizualize and build networks out of very complex morphologies. To simulate this network, you can follow the steps in the tutorial on [how to build a network](https://jaxley.readthedocs.io/en/latest/tutorials/02_small_network.html)." ] } ], diff --git a/docs/tutorials/09_advanced_indexing.ipynb b/docs/tutorials/09_advanced_indexing.ipynb index c3ad6e47..d9144b21 100644 --- a/docs/tutorials/09_advanced_indexing.ipynb +++ b/docs/tutorials/09_advanced_indexing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "e8ca2a2a", + "id": "1710a74b", "metadata": {}, "source": [ "# Customizing synaptic parameters" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "2e1e70a5", + "id": "1597ec00", "metadata": {}, "source": [ "In this tutorial, you will learn how to:\n", @@ -43,10 +43,10 @@ }, { "cell_type": "markdown", - "id": "1736474e", + "id": "fd9a49de", "metadata": {}, "source": [ - "In a [previous tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/03_setting_parameters/) you learned how to set parameters of a `jx.Cell` or `jx.Network`. In that tutorial, we briefly mentioned the `select()` method which allowed to set individual synapses to particular values. In this tutorial, we will go into detail in how you can fully customize your `Jaxley` simulation.\n", + "In a [previous tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/02_small_network.html) you learned how to set parameters of a `jx.Network`. In that tutorial, we briefly mentioned the `select()` method which allowed to set individual synapses to particular values. In this tutorial, we will go into detail in how you can fully customize your `Jaxley` simulation.\n", "\n", "Let's go!" ] @@ -54,20 +54,11 @@ { "cell_type": "code", "execution_count": 1, - "id": "7b846235", + "id": "78266a05", "metadata": { "tags": [] }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/michaeldeistler/anaconda3/lib/python3.11/site-packages/pandas/core/arrays/masked.py:60: UserWarning: Pandas requires version '1.3.6' or newer of 'bottleneck' (version '1.3.5' currently installed).\n", - " from pandas.core import (\n" - ] - } - ], + "outputs": [], "source": [ "import jaxley as jx\n", "from jaxley.channels import Na, K, Leak\n", @@ -75,44 +66,9 @@ "from jaxley.synapses import IonotropicSynapse" ] }, - { - "cell_type": "code", - "execution_count": 2, - "id": "0960ca88", - "metadata": { - "tags": [] - }, - "outputs": [], - "source": [ - "import bottleneck" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "f211cdf1", - "metadata": { - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'1.3.5'" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "bottleneck.__version__" - ] - }, { "cell_type": "markdown", - "id": "9c25f952", + "id": "22d63dcf", "metadata": {}, "source": [ "### Preface: Building the network\n", @@ -123,7 +79,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "95910e3a", + "id": "4603896e", "metadata": { "tags": [] }, @@ -141,7 +97,7 @@ }, { "cell_type": "markdown", - "id": "66b493d4", + "id": "396be7bd", "metadata": {}, "source": [ "### Setting individual synapse parameters\n", @@ -152,7 +108,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "7f837edb", + "id": "15604d2e", "metadata": { "tags": [] }, @@ -178,255 +134,204 @@ " \n", " \n", " \n", - " pre_locs\n", - " post_locs\n", - " pre_branch_index\n", - " post_branch_index\n", - " pre_cell_index\n", - " post_cell_index\n", + " global_edge_index\n", + " pre_global_comp_index\n", + " post_global_comp_index\n", " type\n", " type_ind\n", - " global_pre_comp_index\n", - " global_post_comp_index\n", - " global_pre_branch_index\n", - " global_post_branch_index\n", + " pre_locs\n", + " post_locs\n", " IonotropicSynapse_gS\n", " IonotropicSynapse_e_syn\n", " IonotropicSynapse_k_minus\n", " IonotropicSynapse_s\n", + " controlled_by_param\n", " \n", " \n", " \n", " \n", " 0\n", - " 0.25\n", - " 0.75\n", " 0\n", - " 1\n", " 0\n", - " 3\n", + " 13\n", " IonotropicSynapse\n", " 0\n", - " 0\n", - " 15\n", - " 0\n", - " 7\n", + " 0.25\n", + " 0.75\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", " 1\n", - " 0.25\n", - " 0.25\n", - " 0\n", " 1\n", " 0\n", - " 4\n", + " 19\n", " IonotropicSynapse\n", " 0\n", - " 0\n", - " 18\n", - " 0\n", - " 9\n", + " 0.25\n", + " 0.75\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", " 2\n", - " 0.25\n", - " 0.75\n", - " 0\n", - " 1\n", + " 2\n", " 0\n", - " 5\n", + " 20\n", " IonotropicSynapse\n", " 0\n", - " 0\n", - " 23\n", - " 0\n", - " 11\n", + " 0.25\n", + " 0.25\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", " 3\n", - " 0.25\n", - " 0.75\n", - " 0\n", - " 0\n", - " 1\n", " 3\n", + " 4\n", + " 12\n", " IonotropicSynapse\n", " 0\n", - " 4\n", - " 13\n", - " 2\n", - " 6\n", + " 0.25\n", + " 0.25\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", " 4\n", - " 0.25\n", - " 0.75\n", - " 0\n", - " 0\n", - " 1\n", " 4\n", + " 4\n", + " 16\n", " IonotropicSynapse\n", " 0\n", - " 4\n", - " 17\n", - " 2\n", - " 8\n", + " 0.25\n", + " 0.25\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", " 5\n", - " 0.25\n", - " 0.75\n", - " 0\n", - " 1\n", - " 1\n", " 5\n", + " 4\n", + " 21\n", " IonotropicSynapse\n", " 0\n", - " 4\n", - " 23\n", - " 2\n", - " 11\n", + " 0.25\n", + " 0.75\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", " 6\n", - " 0.25\n", - " 0.25\n", - " 0\n", - " 0\n", - " 2\n", - " 3\n", + " 6\n", + " 8\n", + " 13\n", " IonotropicSynapse\n", " 0\n", - " 8\n", - " 12\n", - " 4\n", - " 6\n", + " 0.25\n", + " 0.75\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", " 7\n", - " 0.25\n", - " 0.25\n", - " 0\n", - " 0\n", - " 2\n", - " 4\n", + " 7\n", + " 8\n", + " 17\n", " IonotropicSynapse\n", " 0\n", - " 8\n", - " 16\n", - " 4\n", - " 8\n", + " 0.25\n", + " 0.75\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", " 8\n", - " 0.25\n", - " 0.75\n", - " 0\n", - " 1\n", - " 2\n", - " 5\n", + " 8\n", + " 8\n", + " 21\n", " IonotropicSynapse\n", " 0\n", - " 8\n", - " 23\n", - " 4\n", - " 11\n", + " 0.25\n", + " 0.75\n", " 0.0001\n", " 0.0\n", " 0.025\n", " 0.2\n", + " 0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " pre_locs post_locs pre_branch_index post_branch_index pre_cell_index \\\n", - "0 0.25 0.75 0 1 0 \n", - "1 0.25 0.25 0 1 0 \n", - "2 0.25 0.75 0 1 0 \n", - "3 0.25 0.75 0 0 1 \n", - "4 0.25 0.75 0 0 1 \n", - "5 0.25 0.75 0 1 1 \n", - "6 0.25 0.25 0 0 2 \n", - "7 0.25 0.25 0 0 2 \n", - "8 0.25 0.75 0 1 2 \n", - "\n", - " post_cell_index type type_ind global_pre_comp_index \\\n", - "0 3 IonotropicSynapse 0 0 \n", - "1 4 IonotropicSynapse 0 0 \n", - "2 5 IonotropicSynapse 0 0 \n", - "3 3 IonotropicSynapse 0 4 \n", - "4 4 IonotropicSynapse 0 4 \n", - "5 5 IonotropicSynapse 0 4 \n", - "6 3 IonotropicSynapse 0 8 \n", - "7 4 IonotropicSynapse 0 8 \n", - "8 5 IonotropicSynapse 0 8 \n", + " global_edge_index pre_global_comp_index post_global_comp_index \\\n", + "0 0 0 13 \n", + "1 1 0 19 \n", + "2 2 0 20 \n", + "3 3 4 12 \n", + "4 4 4 16 \n", + "5 5 4 21 \n", + "6 6 8 13 \n", + "7 7 8 17 \n", + "8 8 8 21 \n", "\n", - " global_post_comp_index global_pre_branch_index global_post_branch_index \\\n", - "0 15 0 7 \n", - "1 18 0 9 \n", - "2 23 0 11 \n", - "3 13 2 6 \n", - "4 17 2 8 \n", - "5 23 2 11 \n", - "6 12 4 6 \n", - "7 16 4 8 \n", - "8 23 4 11 \n", + " type type_ind pre_locs post_locs IonotropicSynapse_gS \\\n", + "0 IonotropicSynapse 0 0.25 0.75 0.0001 \n", + "1 IonotropicSynapse 0 0.25 0.75 0.0001 \n", + "2 IonotropicSynapse 0 0.25 0.25 0.0001 \n", + "3 IonotropicSynapse 0 0.25 0.25 0.0001 \n", + "4 IonotropicSynapse 0 0.25 0.25 0.0001 \n", + "5 IonotropicSynapse 0 0.25 0.75 0.0001 \n", + "6 IonotropicSynapse 0 0.25 0.75 0.0001 \n", + "7 IonotropicSynapse 0 0.25 0.75 0.0001 \n", + "8 IonotropicSynapse 0 0.25 0.75 0.0001 \n", "\n", - " IonotropicSynapse_gS IonotropicSynapse_e_syn IonotropicSynapse_k_minus \\\n", - "0 0.0001 0.0 0.025 \n", - "1 0.0001 0.0 0.025 \n", - "2 0.0001 0.0 0.025 \n", - "3 0.0001 0.0 0.025 \n", - "4 0.0001 0.0 0.025 \n", - "5 0.0001 0.0 0.025 \n", - "6 0.0001 0.0 0.025 \n", - "7 0.0001 0.0 0.025 \n", - "8 0.0001 0.0 0.025 \n", + " IonotropicSynapse_e_syn IonotropicSynapse_k_minus IonotropicSynapse_s \\\n", + "0 0.0 0.025 0.2 \n", + "1 0.0 0.025 0.2 \n", + "2 0.0 0.025 0.2 \n", + "3 0.0 0.025 0.2 \n", + "4 0.0 0.025 0.2 \n", + "5 0.0 0.025 0.2 \n", + "6 0.0 0.025 0.2 \n", + "7 0.0 0.025 0.2 \n", + "8 0.0 0.025 0.2 \n", "\n", - " IonotropicSynapse_s \n", - "0 0.2 \n", - "1 0.2 \n", - "2 0.2 \n", - "3 0.2 \n", - "4 0.2 \n", - "5 0.2 \n", - "6 0.2 \n", - "7 0.2 \n", - "8 0.2 " + " controlled_by_param \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 0 \n", + "5 0 \n", + "6 0 \n", + "7 0 \n", + "8 0 " ] }, "execution_count": 3, @@ -440,7 +345,7 @@ }, { "cell_type": "markdown", - "id": "51d7e25d", + "id": "c35637f5", "metadata": {}, "source": [ "This table has nine rows, each corresponding to one synapse. This makes sense because we fully connected three neurons (0, 1, 2) to three other neurons (3, 4, 5), giving a total of `3x3=9` synapses.\n", @@ -451,7 +356,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "589ca13d", + "id": "9cfd34e6", "metadata": {}, "outputs": [], "source": [ @@ -460,7 +365,7 @@ }, { "cell_type": "markdown", - "id": "2ed0c1fc", + "id": "ba4ed5b8", "metadata": {}, "source": [ "Above, we are modifying the synapses with indices `[3, 4, 5]` (i.e., the indices of the `net.edges` DataFrame). The resulting values are indeed changed:" @@ -469,7 +374,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "55cb1a2d", + "id": "cf2902aa", "metadata": {}, "outputs": [ { @@ -498,7 +403,7 @@ }, { "cell_type": "markdown", - "id": "c9ca788f", + "id": "194124de", "metadata": {}, "source": [ "### Example 1: Setting synaptic parameters which connect particular neurons" @@ -506,7 +411,7 @@ }, { "cell_type": "markdown", - "id": "e7beb592", + "id": "0aea923c", "metadata": {}, "source": [ "This is great, but setting synaptic parameters just by their index can be exhausting, in particular in very large networks. Instead, we would want to, for example, set the maximal conductance of all synapses that connect from cell 0 or 1 to any other neuron.\n", @@ -517,7 +422,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "8cc6a6b6", + "id": "6d3ce515", "metadata": {}, "outputs": [], "source": [ @@ -533,7 +438,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "291f23b4", + "id": "bcd60d95", "metadata": {}, "outputs": [ { @@ -562,7 +467,7 @@ }, { "cell_type": "markdown", - "id": "3e1a6f25", + "id": "4eab6004", "metadata": {}, "source": [ "Indeed, the first six synapses now have the value `0.23`! Let's look at the individual lines to understand how this worked:" @@ -570,7 +475,7 @@ }, { "cell_type": "markdown", - "id": "6538d6f6", + "id": "a05bfa60", "metadata": {}, "source": [ "We want to set parameter by cell index. However, by default, the pre- or post-synaptic cell-indices are not listed in `net.edges`. We can add the cell index to the `.edges` dataframe by calling `.copy_node_property_to_edges()`:\n", @@ -581,7 +486,7 @@ }, { "cell_type": "markdown", - "id": "7fac2a31", + "id": "09572528", "metadata": {}, "source": [ "After this, the pre- and post-synaptic cell indices are listed in `net.edges` as `pre_global_cell_index` and `post_global_cell_index`." @@ -589,7 +494,7 @@ }, { "cell_type": "markdown", - "id": "3e8419a9", + "id": "4c710e44", "metadata": {}, "source": [ "Next, we take `.edges`, which is a [pandas DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html):\n", @@ -600,7 +505,7 @@ }, { "cell_type": "markdown", - "id": "9ff319cd", + "id": "24c7f242", "metadata": {}, "source": [ "We then modify this DataFrame to only contain those rows where the global cell index is in 0 or 1:\n", @@ -611,10 +516,10 @@ }, { "cell_type": "markdown", - "id": "157024f1", + "id": "0c0ee839", "metadata": {}, "source": [ - "For the above step, you use any column of the DataFrame to filter it (you can see all columns with `df.columns`). Note that, while we used `.query()` here, you can really filter the pandas DataFrame however you want. For example, the `query` above is identical to `df = df[df[\"global_pre_cell_index\"].isin([0, 1])]`.\n", + "For the above step, you use any column of the DataFrame to filter it (you can see all columns with `df.columns`). Note that, while we used `.query()` here, you can really filter the pandas DataFrame however you want. For example, the `query` above is identical to `df = df[df[\"pre_global_cell_index\"].isin([0, 1])]`.\n", "\n", "Finally, we use the `.select()` method, which returns a subset of the `Network` at the specified indices. This subset of the network can be modified with `.set()`:\n", "```python\n", @@ -624,7 +529,7 @@ }, { "cell_type": "markdown", - "id": "8e5c971a", + "id": "7a2db8c6", "metadata": {}, "source": [ "### Example 2: Setting parameters given pre- and post-synaptic cell indices" @@ -632,7 +537,7 @@ }, { "cell_type": "markdown", - "id": "91b10382", + "id": "33a79f6d", "metadata": {}, "source": [ "Say you want to select all synapses that have cells 1 or 2 as presynaptic neuron and cell 4 or 5 as postsynaptic neuron." @@ -641,7 +546,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "ddf3cac1", + "id": "343a5bb6", "metadata": {}, "outputs": [], "source": [ @@ -651,7 +556,7 @@ }, { "cell_type": "markdown", - "id": "068671ed", + "id": "9bd83ab7", "metadata": {}, "source": [ "Just like before, we can simply use `.query()` as already shown above. However, this time, call `.query()` to twice to filter by pre- and post-synaptic cell indices:" @@ -660,7 +565,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "b1c37dab", + "id": "34855241", "metadata": {}, "outputs": [], "source": [ @@ -675,7 +580,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "e403c384", + "id": "58514a0f", "metadata": {}, "outputs": [ { @@ -704,7 +609,7 @@ }, { "cell_type": "markdown", - "id": "adb53e45", + "id": "9fa849be", "metadata": {}, "source": [ "### Example 3: Applying this strategy to cell level parameters" @@ -712,7 +617,7 @@ }, { "cell_type": "markdown", - "id": "f115cf07", + "id": "fe6be17f", "metadata": {}, "source": [ "You had previously seen that you can modify parameters with, e.g., `net.cell(0).set(...)`. However, if you need more flexibility than this, you can also use the above strategy to modify cell-level parameters:" @@ -721,7 +626,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "0a5cb649", + "id": "5945b258", "metadata": {}, "outputs": [], "source": [ @@ -735,7 +640,7 @@ }, { "cell_type": "markdown", - "id": "7fe4691b", + "id": "ea91ca1e", "metadata": {}, "source": [ "### Example 4: Flexibly setting parameters based on their `groups`" @@ -743,16 +648,16 @@ }, { "cell_type": "markdown", - "id": "324c04e2", + "id": "b8785888", "metadata": {}, "source": [ - "If you are using groups, as shown in [this tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/06_groups/), then you can also use this for querying synapses. To demonstrate this, let's create a group of excitatory neurons (e.g., cells 0, 3, 5):" + "If you are using groups, as shown in [this tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/06_groups.html), then you can also use this for querying synapses. To demonstrate this, let's create a group of excitatory neurons (e.g., cells 0, 3, 5):" ] }, { "cell_type": "code", "execution_count": 12, - "id": "76e8c412", + "id": "073c2612", "metadata": {}, "outputs": [], "source": [ @@ -765,7 +670,7 @@ }, { "cell_type": "markdown", - "id": "aebcd958", + "id": "57b9343a", "metadata": {}, "source": [ "Now, say we want all synapses that start from these excitatory neurons. You can do this as follows:" @@ -774,7 +679,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "3dbf338d", + "id": "6be209b1", "metadata": {}, "outputs": [], "source": [ @@ -790,7 +695,7 @@ }, { "cell_type": "markdown", - "id": "2001ca6b", + "id": "3fd67f11", "metadata": {}, "source": [ "### Example 5: Setting synaptic parameters based on properties of the presynaptic cell" @@ -798,7 +703,7 @@ }, { "cell_type": "markdown", - "id": "cec53246", + "id": "223b04e2", "metadata": {}, "source": [ "Let's discuss one more example: Imagine we only want to modify those synapses whose presynaptic compartment has a sodium channel. Let's first add a sodium channel to some of the cells:" @@ -807,7 +712,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "42d3d0be", + "id": "ff757547", "metadata": {}, "outputs": [], "source": [ @@ -820,7 +725,7 @@ }, { "cell_type": "markdown", - "id": "acf68e26", + "id": "1481d591", "metadata": {}, "source": [ "Now, let us query which cells have the desired synapses:" @@ -829,7 +734,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "edf27a3b", + "id": "84520493", "metadata": {}, "outputs": [], "source": [ @@ -840,7 +745,7 @@ }, { "cell_type": "markdown", - "id": "b7ad1af1", + "id": "e22b558c", "metadata": {}, "source": [ "`indices_of_sodium_compartments` lists all compartments which contained sodium:" @@ -849,7 +754,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "0b777e2e", + "id": "b8f35873", "metadata": {}, "outputs": [ { @@ -866,7 +771,7 @@ }, { "cell_type": "markdown", - "id": "e3c4ac38", + "id": "40274381", "metadata": {}, "source": [ "Then, we can proceed as always and filter for the global pre-synaptic **compartment** index:" @@ -874,20 +779,20 @@ }, { "cell_type": "code", - "execution_count": 17, - "id": "8a7f40c6", + "execution_count": 18, + "id": "bda373bc", "metadata": {}, "outputs": [], "source": [ "df = net.edges\n", - "df = df.query(f\"global_pre_comp_index in {indices_of_sodium_compartments}\")\n", + "df = df.query(f\"pre_global_comp_index in {indices_of_sodium_compartments}\")\n", "net.select(edges=df.index).set(\"IonotropicSynapse_gS\", 0.6)" ] }, { "cell_type": "code", - "execution_count": 18, - "id": "d09e7136", + "execution_count": 19, + "id": "c1fcf3dc", "metadata": {}, "outputs": [ { @@ -905,7 +810,7 @@ "Name: IonotropicSynapse_gS, dtype: float64" ] }, - "execution_count": 18, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -916,7 +821,7 @@ }, { "cell_type": "markdown", - "id": "abd55fb9", + "id": "f111f537", "metadata": {}, "source": [ "Indeed, only synapses coming from the first neuron were modified (as its presynaptic compartment contained sodium), in contrast to synapses from neuron 2 (whose presynaptic compartment did not)." @@ -924,7 +829,7 @@ }, { "cell_type": "markdown", - "id": "195e78cb", + "id": "b7872d80", "metadata": {}, "source": [ "### Summary\n", diff --git a/docs/tutorials/10_advanced_parameter_sharing.ipynb b/docs/tutorials/10_advanced_parameter_sharing.ipynb index 4ce21a74..db9d826e 100644 --- a/docs/tutorials/10_advanced_parameter_sharing.ipynb +++ b/docs/tutorials/10_advanced_parameter_sharing.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "eac012af", + "id": "5f0bc78a", "metadata": {}, "source": [ "# Synaptic parameter sharing" @@ -10,7 +10,7 @@ }, { "cell_type": "markdown", - "id": "598cc811", + "id": "7ca7f94a", "metadata": {}, "source": [ "In this tutorial, you will learn how to:\n", @@ -37,16 +37,16 @@ }, { "cell_type": "markdown", - "id": "69fd3375", + "id": "422006f3", "metadata": {}, "source": [ - "In a [previous tutorial](https://jaxleyverse.github.io/jaxley/latest/tutorial/03_setting_parameters/) about training networks, we briefly touched on parameter sharing. In this tutorial, we will show you how you can flexibly share parameters within a network." + "In a [previous tutorial](https://jaxley.readthedocs.io/en/latest/tutorials/07_gradient_descent.html) about training networks, we briefly touched on parameter sharing. In this tutorial, we will show you how you can flexibly share parameters within a network." ] }, { "cell_type": "code", - "execution_count": 3, - "id": "ecd3e3fd", + "execution_count": 1, + "id": "4feb39c3", "metadata": {}, "outputs": [], "source": [ @@ -58,7 +58,7 @@ }, { "cell_type": "markdown", - "id": "46b0199f", + "id": "7c18b422", "metadata": {}, "source": [ "### Preface: Building the network\n", @@ -68,8 +68,8 @@ }, { "cell_type": "code", - "execution_count": 6, - "id": "ac360f14", + "execution_count": 2, + "id": "5b3dacee", "metadata": {}, "outputs": [], "source": [ @@ -77,7 +77,7 @@ "t_max = 10.0\n", "\n", "comp = jx.Compartment()\n", - "branch = jx.Branch(comp, nseg=2)\n", + "branch = jx.Branch(comp, ncomp=2)\n", "cell = jx.Cell(branch, parents=[-1, 0])\n", "net = jx.Network([cell for _ in range(6)])\n", "fully_connect(net.cell([0, 1, 2]), net.cell([3, 4, 5]), IonotropicSynapse())" @@ -85,7 +85,7 @@ }, { "cell_type": "markdown", - "id": "ba4253ac", + "id": "7c1e73e0", "metadata": {}, "source": [ "### Sharing parameters by modifying `controlled_by_param`" @@ -93,8 +93,8 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "9eec00be", + "execution_count": 3, + "id": "c94aa7f7", "metadata": {}, "outputs": [ { @@ -119,7 +119,7 @@ }, { "cell_type": "markdown", - "id": "55acfad4", + "id": "75aded8e", "metadata": {}, "source": [ "Let's look at this line by line. First, we exactly follow the previous tutorial in selecting the synapses which we are interested in training (i.e., the ones whose presynaptic neuron has index 0, 1, 2):" @@ -127,8 +127,8 @@ }, { "cell_type": "code", - "execution_count": 9, - "id": "f161cd97", + "execution_count": 4, + "id": "3d73ce97", "metadata": {}, "outputs": [], "source": [ @@ -139,7 +139,7 @@ }, { "cell_type": "markdown", - "id": "db003f33", + "id": "0d8a9f19", "metadata": {}, "source": [ "As second step, we enable parameter sharing. This is done by setting the `controlled_by_param`. Synapses that have the same value in `controlled_by_param` will be shared. Let's inspect `controlled_by_param` _before_ we modify it:" @@ -147,8 +147,8 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "a4acdfad", + "execution_count": 5, + "id": "5be614a3", "metadata": {}, "outputs": [ { @@ -239,7 +239,7 @@ "8 2 8" ] }, - "execution_count": 10, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -250,7 +250,7 @@ }, { "cell_type": "markdown", - "id": "f6ed5d7d", + "id": "f5e8b81a", "metadata": {}, "source": [ "Every synapse has a different value. Because of this, no synaptic parameters will be shared. To enable parameter sharing we override the `controlled_by_param` column with the presynaptic cell index:" @@ -258,8 +258,8 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "a772c104", + "execution_count": 6, + "id": "f22af5fe", "metadata": {}, "outputs": [], "source": [ @@ -269,8 +269,8 @@ }, { "cell_type": "code", - "execution_count": 12, - "id": "5bfb29e6", + "execution_count": 7, + "id": "7f88d535", "metadata": {}, "outputs": [ { @@ -361,7 +361,7 @@ "8 2 2" ] }, - "execution_count": 12, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -372,7 +372,7 @@ }, { "cell_type": "markdown", - "id": "9ee20537", + "id": "cef2bed9", "metadata": {}, "source": [ "Now, all we have to do is to make these synaptic parameters trainable with the `make_trainable()` method:" @@ -380,8 +380,8 @@ }, { "cell_type": "code", - "execution_count": 13, - "id": "75aad6bd", + "execution_count": 8, + "id": "f3d3ce72", "metadata": {}, "outputs": [ { @@ -398,7 +398,7 @@ }, { "cell_type": "markdown", - "id": "496e279d", + "id": "4da29681", "metadata": {}, "source": [ "It correctly says that we added three parameters (because we have three cells, and we share individual synaptic parameters). We now have 6 trainable parameters in total (because we already added 3 trainable parameters above)." @@ -406,7 +406,7 @@ }, { "cell_type": "markdown", - "id": "f0520017", + "id": "1c902a3e", "metadata": {}, "source": [ "### A more involved example: sharing by pre- and post-synaptic cell type\n", @@ -416,8 +416,8 @@ }, { "cell_type": "code", - "execution_count": 14, - "id": "bb948061", + "execution_count": 9, + "id": "af856a23", "metadata": {}, "outputs": [], "source": [ @@ -426,8 +426,8 @@ }, { "cell_type": "code", - "execution_count": 15, - "id": "7b4fdae2", + "execution_count": 10, + "id": "642245db", "metadata": {}, "outputs": [], "source": [ @@ -441,7 +441,7 @@ }, { "cell_type": "markdown", - "id": "9c4aeb21", + "id": "b11c9625", "metadata": {}, "source": [ "We want to make all synapses that start from excitatory or inhibitory neurons trainable. In addition, we want to use the same parameter for synapses if they have the same pre- **and** post-synaptic cell type." @@ -449,7 +449,7 @@ }, { "cell_type": "markdown", - "id": "ecb790dc", + "id": "7ebcfedd", "metadata": {}, "source": [ "To achieve this, we will first want a column in `net.nodes` which indicates the cell type. " @@ -457,8 +457,8 @@ }, { "cell_type": "code", - "execution_count": 16, - "id": "cb643b4c", + "execution_count": 11, + "id": "3e587ba0", "metadata": {}, "outputs": [], "source": [ @@ -469,7 +469,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "87366781", + "id": "3d0d7d8f", "metadata": {}, "outputs": [ { @@ -513,7 +513,7 @@ }, { "cell_type": "markdown", - "id": "3ad5da83", + "id": "c5675586", "metadata": {}, "source": [ "The `cell_type` is now part of the `net.nodes`. However, we would like to do parameter sharing of synapses based on the pre- and post-synaptic node values. To do so, we import the `cell_type` column into `net.edges`. To do this, we use the `.copy_node_property_to_edges()` which the name of the property you are copying from nodes: " @@ -521,8 +521,8 @@ }, { "cell_type": "code", - "execution_count": 18, - "id": "367fd25b", + "execution_count": 13, + "id": "a521b569", "metadata": {}, "outputs": [], "source": [ @@ -531,7 +531,7 @@ }, { "cell_type": "markdown", - "id": "0ab09f13", + "id": "dbbf82e5", "metadata": {}, "source": [ "After this, you have columns in the **`.edges`** which indicate the pre- and post-synaptic cell type:" @@ -539,8 +539,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "id": "e8e799b5", + "execution_count": 14, + "id": "91bfd2ca", "metadata": {}, "outputs": [ { @@ -793,7 +793,7 @@ "35 unknown unknown" ] }, - "execution_count": 19, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -804,7 +804,7 @@ }, { "cell_type": "markdown", - "id": "ce18d959", + "id": "0f96f368", "metadata": {}, "source": [ "Next, we specify which parts of the network we actually want to change (in this case, all synapses which have excitatory or inhibitory presynaptic neurons):" @@ -812,8 +812,8 @@ }, { "cell_type": "code", - "execution_count": 20, - "id": "03503fff", + "execution_count": 15, + "id": "d5beeeae", "metadata": {}, "outputs": [ { @@ -834,7 +834,7 @@ }, { "cell_type": "markdown", - "id": "23f2df79", + "id": "920a141b", "metadata": {}, "source": [ "As the last step, we again have to specify parameter sharing by setting `controlled_by_param`. In this case, we want to share parameters that have the same pre- and post-synaptic neuron. We achieve this by **grouping** the synpases by their pre- and post-synaptic cell type (see [pd.DataFrame.groupby](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.groupby.html) for details):" @@ -842,8 +842,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "id": "4eb4e045", + "execution_count": 16, + "id": "320e2938", "metadata": {}, "outputs": [ { @@ -862,7 +862,7 @@ }, { "cell_type": "markdown", - "id": "bbba4db0", + "id": "bffb1286", "metadata": {}, "source": [ "This created six trainable parameters, which makes sense as we have two types of pre-synaptic neurons (excitatory and inhibitory) and each has three options for the postsynaptic neuron (pre, post, unknown)." @@ -870,7 +870,7 @@ }, { "cell_type": "markdown", - "id": "96ac0640", + "id": "d9992480", "metadata": {}, "source": [ "### Summary\n", diff --git a/jaxley/__init__.py b/jaxley/__init__.py index 30c331ed..abc461f0 100644 --- a/jaxley/__init__.py +++ b/jaxley/__init__.py @@ -8,6 +8,8 @@ sparse_connect, ) from jaxley.integrate import integrate +from jaxley.io.swc import read_swc from jaxley.modules import * from jaxley.optimize import ParamTransform from jaxley.stimulus import datapoint_to_step_currents, step_current +from jaxley.utils.misc_utils import deprecated, deprecated_kwargs diff --git a/jaxley/connect.py b/jaxley/connect.py index 0b32186c..0d05893d 100644 --- a/jaxley/connect.py +++ b/jaxley/connect.py @@ -117,7 +117,7 @@ def sparse_connect( post_rows = post_cell_view.base.nodes.loc[global_post_indices] # Pre-synapse is at the zero-eth branch and zero-eth compartment. - global_pre_indices = pre_cell_view.base._cumsum_nseg_per_cell[pre_syn_neurons] + global_pre_indices = pre_cell_view.base._cumsum_ncomp_per_cell[pre_syn_neurons] pre_rows = pre_cell_view.base.nodes.loc[global_pre_indices] if len(pre_rows) > 0: diff --git a/jaxley/io/swc.py b/jaxley/io/swc.py new file mode 100644 index 00000000..c33aad3d --- /dev/null +++ b/jaxley/io/swc.py @@ -0,0 +1,181 @@ +# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is +# licensed under the Apache License Version 2.0, see + +from copy import copy +from typing import Callable, List, Optional, Tuple +from warnings import warn + +import jax.numpy as jnp +import numpy as np + +from jaxley.modules import Branch, Cell, Compartment +from jaxley.utils.cell_utils import ( + _build_parents, + _compute_pathlengths, + _padded_radius_generating_fn, + _radius_generating_fns, + _split_into_branches_and_sort, + build_radiuses_from_xyzr, +) +from jaxley.utils.misc_utils import deprecated_kwargs + + +def swc_to_jaxley( + fname: str, + max_branch_len: Optional[float] = None, + sort: bool = True, + num_lines: Optional[int] = None, +) -> Tuple[List[int], List[float], List[Callable], List[float], List[np.ndarray]]: + """Read an SWC file and bring morphology into `jaxley` compatible formats. + + Args: + fname: Path to swc file. + max_branch_len: Maximal length of one branch. If a branch exceeds this length, + it is split into equal parts such that each subbranch is below + `max_branch_len`. + num_lines: Number of lines of the SWC file to read. + """ + content = np.loadtxt(fname)[:num_lines] + types = content[:, 1] + is_single_point_soma = types[0] == 1 and types[1] != 1 + + if is_single_point_soma: + # Warn here, but the conversion of the length happens in `_compute_pathlengths`. + warn( + "Found a soma which consists of a single traced point. `Jaxley` " + "interprets this soma as a spherical compartment with radius " + "specified in the SWC file, i.e. with surface area 4*pi*r*r." + ) + sorted_branches, types = _split_into_branches_and_sort( + content, + max_branch_len=max_branch_len, + is_single_point_soma=is_single_point_soma, + sort=sort, + ) + + parents = _build_parents(sorted_branches) + each_length = _compute_pathlengths( + sorted_branches, content[:, 1:6], is_single_point_soma=is_single_point_soma + ) + pathlengths = [np.sum(length_traced) for length_traced in each_length] + for i, pathlen in enumerate(pathlengths): + if pathlen == 0.0: + warn("Found a segment with length 0. Clipping it to 1.0") + pathlengths[i] = 1.0 + radius_fns = _radius_generating_fns( + sorted_branches, content[:, 5], each_length, parents, types + ) + + if np.sum(np.asarray(parents) == -1) > 1.0: + parents = np.asarray([-1] + parents) + parents[1:] += 1 + parents = parents.tolist() + pathlengths = [0.1] + pathlengths + radius_fns = [_padded_radius_generating_fn(content[0, 5])] + radius_fns + sorted_branches = [[0]] + sorted_branches + + # Type of padded section is assumed to be of `custom` type: + # http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html + types = [5.0] + types + + all_coords_of_branches = [] + for i, branch in enumerate(sorted_branches): + # Remove 1 because `content` is an array that is indexed from 0. + branch = np.asarray(branch) - 1 + + # Deal with additional branch that might have been added above in the lines + # `if np.sum(np.asarray(parents) == -1) > 1.0:` + branch[branch < 0] = 0 + + # Get traced coordinates of the branch. + coords_of_branch = content[branch, 2:6] + all_coords_of_branches.append(coords_of_branch) + + return parents, pathlengths, radius_fns, types, all_coords_of_branches + + +@deprecated_kwargs("0.6.0", ["nseg"]) +def read_swc( + fname: str, + ncomp: Optional[int] = None, + nseg: Optional[int] = None, + max_branch_len: Optional[float] = None, + min_radius: Optional[float] = None, + assign_groups: bool = True, +) -> Cell: + """Reads SWC file into a `Cell`. + + Jaxley assumes cylindrical compartments and therefore defines length and radius + for every compartment. The surface area is then 2*pi*r*length. For branches + consisting of a single traced point we assume for them to have area 4*pi*r*r. + Therefore, in these cases, we set lenght=2*r. + + Args: + fname: Path to the swc file. + ncomp: The number of compartments per branch. + nseg: Deprecated. Use `ncomp` instead. + max_branch_len: If a branch is longer than this value it is split into two + branches. + min_radius: If the radius of a reconstruction is below this value it is clipped. + assign_groups: If True, then the identity of reconstructed points in the SWC + file will be used to generate groups `undefined`, `soma`, `axon`, `basal`, + `apical`, `custom`. See here: + http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html + + Returns: + A `Cell` object. + """ + # Deak with deprecation of `nseg`. + assert ncomp is not None or nseg is not None, "You must pass `ncomp`." + assert not ( + ncomp is not None and nseg is not None + ), "Cannot set `ncomp` and `nseg`. Only use `ncomp`." + if ncomp is None and nseg is not None: + ncomp = nseg + + parents, pathlengths, radius_fns, types, coords_of_branches = swc_to_jaxley( + fname, max_branch_len=max_branch_len, sort=True, num_lines=None + ) + nbranches = len(parents) + + comp = Compartment() + branch = Branch([comp for _ in range(ncomp)]) + cell = Cell( + [branch for _ in range(nbranches)], parents=parents, xyzr=coords_of_branches + ) + # Also save the radius generating functions in case users post-hoc modify the number + # of compartments with `.set_ncomp()`. + cell._radius_generating_fns = radius_fns + + lengths_each = np.repeat(pathlengths, ncomp) / ncomp + cell.set("length", lengths_each) + + radiuses_each = build_radiuses_from_xyzr( + radius_fns, + range(len(parents)), + min_radius, + ncomp, + ) + cell.set("radius", radiuses_each) + + # Description of SWC file format: + # http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html + ind_name_lookup = { + 0: "undefined", + 1: "soma", + 2: "axon", + 3: "basal", + 4: "apical", + 5: "custom", + } + types = np.asarray(types).astype(int) + if assign_groups: + for type_ind in np.unique(types): + if type_ind < 5.5: + name = ind_name_lookup[type_ind] + else: + name = f"custom{type_ind}" + indices = np.where(types == type_ind)[0].tolist() + if len(indices) > 0: + cell.branch(indices).add_to_group(name) + return cell diff --git a/jaxley/modules/__init__.py b/jaxley/modules/__init__.py index 584ca3e5..1bcca2b6 100644 --- a/jaxley/modules/__init__.py +++ b/jaxley/modules/__init__.py @@ -3,6 +3,6 @@ from jaxley.modules.base import Module from jaxley.modules.branch import Branch -from jaxley.modules.cell import Cell, read_swc +from jaxley.modules.cell import Cell from jaxley.modules.compartment import Compartment from jaxley.modules.network import Network diff --git a/jaxley/modules/base.py b/jaxley/modules/base.py index efbd9c18..90d48f5d 100644 --- a/jaxley/modules/base.py +++ b/jaxley/modules/base.py @@ -26,10 +26,11 @@ from jaxley.utils.cell_utils import ( _compute_index_of_child, _compute_num_children, + build_radiuses_from_xyzr, compute_axial_conductances, compute_levels, convert_point_process_to_distributed, - interpolate_xyz, + interpolate_xyzr, loc_of_index, params_to_pstate, query_channel_states_and_params, @@ -39,7 +40,6 @@ from jaxley.utils.misc_utils import cumsum_leading_zero, is_str_all from jaxley.utils.plot_utils import plot_comps, plot_graph, plot_morph from jaxley.utils.solver_utils import convert_to_csc -from jaxley.utils.swc import build_radiuses_from_xyzr def only_allow_module(func): @@ -65,51 +65,55 @@ class Module(ABC): Modules are everything that can be passed to `jx.integrate`, i.e. compartments, branches, cells, and networks. + This base class defines the scaffold for all jaxley modules (compartments, + branches, cells, networks). + Modules can be traversed and modified using the `at`, `cell`, `branch`, `comp`, `edge`, and `loc` methods. The `scope` method can be used to toggle between global and local indices. Traversal of Modules will return a `View` of itself, that has a modified set of attributes, which only consider the part of the Module that is in view. - This has consequences for how to operate on Module and which changes take affect - where. The following guidelines should be followed (copied from `View`): + For developers: The above has consequences for how to operate on `Module` and which + changes take affect where. The following guidelines should be followed (copied from + `View`): + 1. We consider a Module to have everything in view. 2. Views can display and keep track of how a module is traversed. But(!), - do not support making changes or setting variables. This still has to be - done in the base Module, i.e. `self.base`. In order to enssure that these - changes only affects whatever is currently in view `self._nodes_in_view`, - or `self._edges_in_view` among others have to be used. Operating on nodes - currently in view can for example be done with - `self.base.node.loc[self._nodes_in_view]` + do not support making changes or setting variables. This still has to be + done in the base Module, i.e. `self.base`. In order to enssure that these + changes only affects whatever is currently in view `self._nodes_in_view`, + or `self._edges_in_view` among others have to be used. Operating on nodes + currently in view can for example be done with + `self.base.node.loc[self._nodes_in_view]`. 3. Every attribute of Module that changes based on what's in view, i.e. `xyzr`, - needs to modified when View is instantiated. I.e. `xyzr` of `cell.branch(0)`, - should be `[self.base.xyzr[0]]` This could be achieved via: - `[self.base.xyzr[b] for b in self._branches_in_view]`. - - - Example to make methods of Module compatible with View: - ``` - # use data in view to return something - def count_small_branches(self): - # no need to use self.base.attr + viewed indices, - # since no change is made to the attr in question (nodes) - comp_lens = self.nodes["length"] - branch_lens = comp_lens.groupby("global_branch_index").sum() - return np.sum(branch_lens < 10) - - # change data in view - def change_attr_in_view(self): - # changes to attrs have to be made via self.base.attr + viewed indices - a = func1(self.base.attr1[self._cells_in_view]) - b = func2(self.base.attr2[self._edges_in_view]) - self.base.attr3[self._branches_in_view] = a + b - - This base class defines the scaffold for all jaxley modules (compartments, - branches, cells, networks). + needs to modified when View is instantiated. I.e. `xyzr` of `cell.branch(0)`, + should be `[self.base.xyzr[0]]` This could be achieved via: + `[self.base.xyzr[b] for b in self._branches_in_view]`. + + For developers: If you want to add a new method to `Module`, here is an example of + how to make methods of Module compatible with View: + + .. code-block:: python + + # Use data in view to return something. + def count_small_branches(self): + # no need to use self.base.attr + viewed indices, + # since no change is made to the attr in question (nodes) + comp_lens = self.nodes["length"] + branch_lens = comp_lens.groupby("global_branch_index").sum() + return np.sum(branch_lens < 10) + + # Change data in view. + def change_attr_in_view(self): + # changes to attrs have to be made via self.base.attr + viewed indices + a = func1(self.base.attr1[self._cells_in_view]) + b = func2(self.base.attr2[self._edges_in_view]) + self.base.attr3[self._branches_in_view] = a + b """ def __init__(self): - self.nseg: int = None + self.ncomp: int = None self.total_nbranches: int = 0 self.nbranches_per_cell: List[int] = None @@ -123,8 +127,8 @@ def __init__(self): self.edges = pd.DataFrame( columns=[ "global_edge_index", - "global_pre_comp_index", - "global_post_comp_index", + "pre_global_comp_index", + "post_global_comp_index", "pre_locs", "post_locs", "type", @@ -132,7 +136,7 @@ def __init__(self): ] ) - self.cumsum_nbranches: Optional[np.ndarray] = None + self._cumsum_nbranches: Optional[np.ndarray] = None self.comb_parents: jnp.ndarray = jnp.asarray([-1]) @@ -231,8 +235,10 @@ def _childviews(self) -> List[str]: I.e. for net -> [cell, branch, comp]. For branch -> [comp]""" levels = ["network", "cell", "branch", "comp"] - children = levels[levels.index(self._current_view) + 1 :] - return children + if self._current_view in levels: + children = levels[levels.index(self._current_view) + 1 :] + return children + return [] def _has_childview(self, key: str) -> bool: child_views = self._childviews() @@ -329,7 +335,7 @@ def _compute_coords_of_comp_centers(self) -> np.ndarray: Note: For sake of performance, interpolation is not done for each branch individually, but only once along a concatenated (and padded) array of all branches. - This means for nsegs = [2,4] and normalized cum_branch_lens of [[0,1],[0,1]] we would + This means for ncomps = [2,4] and normalized cum_branch_lens of [[0,1],[0,1]] we would interpolate xyz at the locations comp_ends = [[0,0.5,1], [0,0.25,0.5,0.75,1]], where 0 is the start of the branch and 1 is the end point at the full branch_len. To avoid do this in one go we set comp_ends = [0,0.5,1,2,2.25,2.5,2.75,3], and @@ -338,10 +344,10 @@ def _compute_coords_of_comp_centers(self) -> np.ndarray: incrementing. """ nodes_by_branches = self.nodes.groupby("global_branch_index") - nsegs = nodes_by_branches["global_comp_index"].nunique().to_numpy() + ncomps = nodes_by_branches["global_comp_index"].nunique().to_numpy() comp_ends = [ - np.linspace(0, 1, nseg + 1) + 2 * i for i, nseg in enumerate(nsegs) + np.linspace(0, 1, ncomp + 1) + 2 * i for i, ncomp in enumerate(ncomps) ] comp_ends = np.hstack(comp_ends) @@ -359,13 +365,13 @@ def _compute_coords_of_comp_centers(self) -> np.ndarray: xyz = np.vstack(self.xyzr)[:, :3] xyz = v_interp(comp_ends, cum_branch_lens, xyz).T centers = (xyz[:-1] + xyz[1:]) / 2 # unaware of inter vs intra comp centers - cum_nsegs = np.cumsum(nsegs) + cum_ncomps = np.cumsum(ncomps) # this means centers between comps have to be removed here - between_comp_inds = (cum_nsegs + np.arange(len(cum_nsegs)))[:-1] + between_comp_inds = (cum_ncomps + np.arange(len(cum_ncomps)))[:-1] centers = np.delete(centers, between_comp_inds, axis=0) return centers - def _update_nodes_with_xyz(self): + def compute_compartment_centers(self): """Add compartment centers to nodes dataframe""" centers = self._compute_coords_of_comp_centers() self.base.nodes.loc[self._nodes_in_view, ["x", "y", "z"]] = centers @@ -383,16 +389,23 @@ def _reformat_index(self, idx: Any, dtype: type = int) -> np.ndarray: Returns: array of indices of shape (N,)""" + if is_str_all(idx): # also asserts that the only allowed str == "all" + return idx + np_dtype = np.int64 if dtype is int else np.float64 idx = np.array([], dtype=dtype) if idx is None else idx idx = np.array([idx]) if isinstance(idx, (dtype, np_dtype)) else idx idx = np.array(idx) if isinstance(idx, (list, range, pd.Index)) else idx - num_nodes = len(self._nodes_in_view) - idx = np.arange(num_nodes + 1)[idx] if isinstance(idx, slice) else idx - if is_str_all(idx): # also asserts that the only allowed str == "all" - return idx + + idx = np.arange(len(self.base.nodes))[idx] if isinstance(idx, slice) else idx + if idx.dtype == bool: + shape = (*self.shape, len(self.edges)) + which_idx = len(idx) == np.array(shape) + assert np.any(which_idx), "Index not matching num of cells/branches/comps." + dim = shape[np.where(which_idx)[0][0]] + idx = np.arange(dim)[idx] assert isinstance(idx, np.ndarray), "Invalid type" - assert idx.dtype == np_dtype, "Invalid dtype" + assert idx.dtype in [np_dtype, bool], "Invalid dtype" return idx.reshape(-1) def _set_controlled_by_param(self, key: str): @@ -543,11 +556,19 @@ def loc(self, at: Any) -> View: Returns: View of the module at the specified branch location.""" - comp_locs = np.linspace(0, 1, self.base.nseg) - at = comp_locs if is_str_all(at) else self._reformat_index(at, dtype=float) - comp_edges = np.linspace(0, 1 + 1e-10, self.base.nseg + 1) - idx = np.digitize(at, comp_edges) - 1 - view = self.comp(idx) + global_comp_idxs = [] + for i in self._branches_in_view: + ncomp = self.base.ncomp_per_branch[i] + comp_locs = np.linspace(0, 1, ncomp) + at = comp_locs if is_str_all(at) else self._reformat_index(at, dtype=float) + comp_edges = np.linspace(0, 1 + 1e-10, ncomp + 1) + idx = np.digitize(at, comp_edges) - 1 + self.base.cumsum_ncomp[i] + global_comp_idxs.append(idx) + global_comp_idxs = np.concatenate(global_comp_idxs) + orig_scope = self._scope + # global scope needed to select correct comps, for i.e. branches w. ncomp=[1,2] + # loc(0.9) will correspond to different local branches (0 vs 1). + view = self.scope("global").comp(global_comp_idxs).scope(orig_scope) view._current_view = "loc" return view @@ -607,12 +628,13 @@ def __iter__(self): Internally calls `cells`, `branches`, `comps` at the appropriate level. Example: - ``` - for cell in network: - for branch in cell: - for comp in branch: - print(comp.nodes.shape) - ``` + + .. code-block:: python + + for cell in network: + for branch in cell: + for comp in branch: + print(comp.nodes.shape) """ next_level = self._childviews()[0] yield from self._iter_submodules(next_level) @@ -621,11 +643,12 @@ def __iter__(self): def shape(self) -> Tuple[int]: """Returns the number of submodules contained in a module. - ``` - network.shape = (num_cells, num_branches, num_compartments) - cell.shape = (num_branches, num_compartments) - branch.shape = (num_compartments,) - ```""" + .. code-block:: python + + network.shape = (num_cells, num_branches, num_compartments) + cell.shape = (num_branches, num_compartments) + branch.shape = (num_compartments,) + """ cols = ["global_cell_index", "global_branch_index", "global_comp_index"] raw_shape = self.nodes[cols].nunique().to_list() @@ -890,7 +913,7 @@ def set_ncomp( view = self.nodes.copy() all_nodes = self.base.nodes start_idx = self.nodes["global_comp_index"].to_numpy()[0] - nseg_per_branch = self.base.nseg_per_branch + ncomp_per_branch = self.base.ncomp_per_branch channel_names = [c._name for c in self.base.channels] channel_param_names = list( chain(*[c.channel_params for c in self.base.channels]) @@ -970,7 +993,7 @@ def set_ncomp( radius_fns=radius_generating_fns, branch_indices=branch_indices, min_radius=min_radius, - nseg=ncomp, + ncomp=ncomp, ) else: view["radius"] = within_branch_radiuses[0] * np.ones(ncomp) @@ -991,15 +1014,15 @@ def set_ncomp( all_nodes["global_comp_index"] = np.arange(len(all_nodes)) # Update compartment structure arguments. - nseg_per_branch[branch_indices] = ncomp - nseg = int(np.max(nseg_per_branch)) - cumsum_nseg = cumsum_leading_zero(nseg_per_branch) - internal_node_inds = np.arange(cumsum_nseg[-1]) + ncomp_per_branch[branch_indices] = ncomp + ncomp = int(np.max(ncomp_per_branch)) + cumsum_ncomp = cumsum_leading_zero(ncomp_per_branch) + internal_node_inds = np.arange(cumsum_ncomp[-1]) self.base.nodes = all_nodes - self.base.nseg_per_branch = nseg_per_branch - self.base.nseg = nseg - self.base.cumsum_nseg = cumsum_nseg + self.base.ncomp_per_branch = ncomp_per_branch + self.base.ncomp = ncomp + self.base.cumsum_ncomp = cumsum_ncomp self.base._internal_node_inds = internal_node_inds # Update the morphology indexing (e.g., `.comp_edges`). @@ -1031,11 +1054,11 @@ def make_trainable( assert ( self.allow_make_trainable ), "network.cell('all').make_trainable() is not supported. Use a for-loop over cells." - nsegs_per_branch = ( + ncomps_per_branch = ( self.base.nodes["global_branch_index"].value_counts().to_numpy() ) assert np.all( - nsegs_per_branch == nsegs_per_branch[0] + ncomps_per_branch == ncomps_per_branch[0] ), "Parameter sharing is not allowed for modules containing branches with different numbers of compartments." data = self.nodes if key in self.nodes.columns else None @@ -1141,9 +1164,8 @@ def distance(self, endpoint: "View") -> float: endpoint: The compartment to which to compute the distance to. """ assert len(self.xyzr) == 1 and len(endpoint.xyzr) == 1 - assert self.xyzr[0].shape[0] == 1 and endpoint.xyzr[0].shape[0] == 1 - start_xyz = self.xyzr[0][0, :3] - end_xyz = endpoint.xyzr[0][0, :3] + start_xyz = np.mean(self.xyzr[0][:, :3], axis=0) + end_xyz = np.mean(endpoint.xyzr[0][:, :3], axis=0) return np.sqrt(np.sum((start_xyz - end_xyz) ** 2)) def delete_trainables(self): @@ -1164,10 +1186,11 @@ def add_to_group(self, group_name: str): """Add a view of the module to a group. Groups can then be indexed. For example: - ```python - net.cell(0).add_to_group("excitatory") - net.excitatory.set("radius", 0.1) - ``` + + .. code-block:: python + + net.cell(0).add_to_group("excitatory") + net.excitatory.set("radius", 0.1) Args: group_name: The name of the group. @@ -1215,11 +1238,12 @@ def get_all_parameters( in `trainable_params()`. This function is run within `jx.integrate()`. pstate can be obtained by calling `params_to_pstate()`. - ``` - params = module.get_parameters() # i.e. [0, 1, 2] - pstate = params_to_pstate(params, module.indices_set_by_trainables) - module.to_jax() # needed for call to module.jaxnodes - ``` + + .. code-block:: python + + params = module.get_parameters() # i.e. [0, 1, 2] + pstate = params_to_pstate(params, module.indices_set_by_trainables) + module.to_jax() # needed for call to module.jaxnodes Args: pstate: The state of the trainable parameters. pstate takes the form @@ -1415,7 +1439,7 @@ def _init_morph_for_debugging(self): branchpoint_weights_parents[debug_states["par_inds"]], branchpoint_diags, branchpoint_solves, - debug_states["nseg"], + debug_states["ncomp"], nbranches, ) ) @@ -1425,17 +1449,17 @@ def _init_morph_for_debugging(self): ) solution = spsolve(sparse_matrix, solve) solution = solution[:start_ind_for_branchpoints] # Delete branchpoint voltages. - solves = jnp.reshape(solution, (debug_states["nseg"], nbranches)) + solves = jnp.reshape(solution, (debug_states["ncomp"], nbranches)) return solves ``` """ # For scipy and jax.scipy. row_and_col_inds = compute_morphology_indices( - len(self.base.par_inds), - self.base.child_belongs_to_branchpoint, - self.base.par_inds, - self.base.child_inds, - self.base.nseg, + len(self.base._par_inds), + self.base._child_belongs_to_branchpoint, + self.base._par_inds, + self.base._child_inds, + self.base.ncomp, self.base.total_nbranches, ) @@ -1451,9 +1475,9 @@ def _init_morph_for_debugging(self): self.base.debug_states["indices"] = indices self.base.debug_states["indptr"] = indptr - self.base.debug_states["nseg"] = self.base.nseg - self.base.debug_states["child_inds"] = self.base.child_inds - self.base.debug_states["par_inds"] = self.base.par_inds + self.base.debug_states["ncomp"] = self.base.ncomp + self.base.debug_states["child_inds"] = self.base._child_inds + self.base.debug_states["par_inds"] = self.base._par_inds def record(self, state: str = "v", verbose=True): comp_states, edge_states = self._get_state_names() @@ -1711,6 +1735,28 @@ def insert(self, channel: Channel): for key in channel.channel_states: self.base.nodes.loc[self._nodes_in_view, key] = channel.channel_states[key] + def delete_channel(self, channel: Channel): + """Remove a channel from the module. + + Args: + channel: The channel to remove.""" + name = channel._name + channel_names = [c._name for c in self.channels] + all_channel_names = [c._name for c in self.base.channels] + if name in channel_names: + channel_cols = list(channel.channel_params.keys()) + channel_cols += list(channel.channel_states.keys()) + self.base.nodes.loc[self._nodes_in_view, channel_cols] = float("nan") + self.base.nodes.loc[self._nodes_in_view, name] = False + + # only delete cols if no other comps in the module have the same channel + if np.all(~self.base.nodes[name]): + self.base.channels.pop(all_channel_names.index(name)) + self.base.membrane_current_names.remove(channel.current_name) + self.base.nodes.drop(columns=channel_cols + [name], inplace=True) + else: + raise ValueError(f"Channel {name} not found in the module.") + @only_allow_module def step( self, @@ -1813,12 +1859,12 @@ def step( "sinks": np.asarray(self._comp_edges["sink"].to_list()), "sources": np.asarray(self._comp_edges["source"].to_list()), "types": np.asarray(self._comp_edges["type"].to_list()), - "nseg_per_branch": self.nseg_per_branch, - "par_inds": self.par_inds, - "child_inds": self.child_inds, + "ncomp_per_branch": self.ncomp_per_branch, + "par_inds": self._par_inds, + "child_inds": self._child_inds, "nbranches": self.total_nbranches, "solver": voltage_solver, - "idx": self.solve_indexer, + "idx": self._solve_indexer, "debug_states": self.debug_states, } ) @@ -2070,7 +2116,7 @@ def vis( return plot_morph(self, dims=dims, ax=ax, col=col, **morph_plot_kwargs) assert not np.any( - [np.isnan(xyzr[:, dims]).any() for xyzr in self.xyzr] + [np.isnan(xyzr[:, dims]).all() for xyzr in self.xyzr] ), "No coordinates available. Use `vis(detail='point')` or run `.compute_xyz()` before running `.vis()`." ax = plot_graph( @@ -2147,7 +2193,7 @@ def compute_xyz(self): endpoints.append(np.zeros((2,))) def move( - self, x: float = 0.0, y: float = 0.0, z: float = 0.0, update_nodes: bool = True + self, x: float = 0.0, y: float = 0.0, z: float = 0.0, update_nodes: bool = False ): """Move cells or networks by adding to their (x, y, z) coordinates. @@ -2164,14 +2210,14 @@ def move( for i in self._branches_in_view: self.base.xyzr[i][:, :3] += np.array([x, y, z]) if update_nodes: - self._update_nodes_with_xyz() + self.compute_compartment_centers() def move_to( self, x: Union[float, np.ndarray] = 0.0, y: Union[float, np.ndarray] = 0.0, z: Union[float, np.ndarray] = 0.0, - update_nodes: bool = True, + update_nodes: bool = False, ): """Move cells or networks to a location (x, y, z). @@ -2211,10 +2257,10 @@ def move_to( for idx in cell._branches_in_view: self.base.xyzr[idx][:, :3] += offset if update_nodes: - self._update_nodes_with_xyz() + self.compute_compartment_centers() def rotate( - self, degrees: float, rotation_axis: str = "xy", update_nodes: bool = True + self, degrees: float, rotation_axis: str = "xy", update_nodes: bool = False ): """Rotate jaxley modules clockwise. Used only for visualization. @@ -2241,7 +2287,7 @@ def rotate( rot = np.dot(rotation_matrix, self.base.xyzr[i][:, dims].T).T self.base.xyzr[i][:, dims] = rot if update_nodes: - self._update_nodes_with_xyz() + self.compute_compartment_centers() def copy_node_property_to_edges( self, @@ -2294,7 +2340,7 @@ def copy_node_property_to_edges( self.nodes[[property_to_import, "global_comp_index"]].set_index( "global_comp_index" ), - on=f"global_{pre_or_post_val}_comp_index", + on=f"{pre_or_post_val}_global_comp_index", ) self.edges = self.edges.rename( columns={ @@ -2316,39 +2362,40 @@ class View(Module): `self.nodes` (currently in view) and returns the updated list such that we can set `self.channels = self._channels_in_view()`. + For developers: To allow seamless operation on Views and Modules as if they were + the same, the following needs to be ensured: - To allow seamless operation on Views and Modules as if they were the same, - the following needs to be ensured: 1. We consider a Module to have everything in view. 2. Views can display and keep track of how a module is traversed. But(!), - do not support making changes or setting variables. This still has to be - done in the base Module, i.e. `self.base`. In order to enssure that these - changes only affects whatever is currently in view `self._nodes_in_view`, - or `self._edges_in_view` among others have to be used. Operating on nodes - currently in view can for example be done with - `self.base.node.loc[self._nodes_in_view]` + do not support making changes or setting variables. This still has to be + done in the base Module, i.e. `self.base`. In order to enssure that these + changes only affects whatever is currently in view `self._nodes_in_view`, + or `self._edges_in_view` among others have to be used. Operating on nodes + currently in view can for example be done with + `self.base.node.loc[self._nodes_in_view]` 3. Every attribute of Module that changes based on what's in view, i.e. `xyzr`, - needs to modified when View is instantiated. I.e. `xyzr` of `cell.branch(0)`, - should be `[self.base.xyzr[0]]` This could be achieved via: - `[self.base.xyzr[b] for b in self._branches_in_view]`. - - - Example to make methods of Module compatible with View: - ``` - # use data in view to return something - def count_small_branches(self): - # no need to use self.base.attr + viewed indices, - # since no change is made to the attr in question (nodes) - comp_lens = self.nodes["length"] - branch_lens = comp_lens.groupby("global_branch_index").sum() - return np.sum(branch_lens < 10) - - # change data in view - def change_attr_in_view(self): - # changes to attrs have to be made via self.base.attr + viewed indices - a = func1(self.base.attr1[self._cells_in_view]) - b = func2(self.base.attr2[self._edges_in_view]) - self.base.attr3[self._branches_in_view] = a + b + needs to modified when View is instantiated. I.e. `xyzr` of `cell.branch(0)`, + should be `[self.base.xyzr[0]]` This could be achieved via: + `[self.base.xyzr[b] for b in self._branches_in_view]`. + + + For developers: Below is an example to make methods of Module compatible with View: + + .. code-block:: python + # Use data in view to return something. + def count_small_branches(self): + # no need to use self.base.attr + viewed indices, + # since no change is made to the attr in question (nodes) + comp_lens = self.nodes["length"] + branch_lens = comp_lens.groupby("global_branch_index").sum() + return np.sum(branch_lens < 10) + + # Change data in view. + def change_attr_in_view(self): + # changes to attrs have to be made via self.base.attr + viewed indices + a = func1(self.base.attr1[self._cells_in_view]) + b = func2(self.base.attr2[self._edges_in_view]) + self.base.attr3[self._branches_in_view] = a + b """ def __init__( @@ -2368,7 +2415,7 @@ def __init__( # attrs affected by view # indices need to be update first, since they are used in the following self._set_inds_in_view(pointer, nodes, edges) - self.nseg = pointer.nseg + self.ncomp = pointer.ncomp self.nodes = pointer.nodes.loc[self._nodes_in_view] ptr_edges = pointer.edges @@ -2377,14 +2424,14 @@ def __init__( ) self.xyzr = self._xyzr_in_view() - self.nseg = 1 if len(self.nodes) == 1 else pointer.nseg + self.ncomp = 1 if len(self.nodes) == 1 else pointer.ncomp self.total_nbranches = len(self._branches_in_view) self.nbranches_per_cell = self._nbranches_per_cell_in_view() - self.cumsum_nbranches = jnp.cumsum(np.asarray(self.nbranches_per_cell)) + self._cumsum_nbranches = jnp.cumsum(np.asarray(self.nbranches_per_cell)) self.comb_branches_in_each_level = pointer.comb_branches_in_each_level self.branch_edges = pointer.branch_edges.loc[self._branch_edges_in_view] - self.nseg_per_branch = self.base.nseg_per_branch[self._branches_in_view] - self.cumsum_nseg = cumsum_leading_zero(self.nseg_per_branch) + self.ncomp_per_branch = self.base.ncomp_per_branch[self._branches_in_view] + self.cumsum_ncomp = cumsum_leading_zero(self.ncomp_per_branch) self.synapse_names = np.unique(self.edges["type"]).tolist() self._set_synapses_in_view(pointer) @@ -2405,7 +2452,7 @@ def __init__( .item() ) - self.nseg_per_branch = pointer.base.nseg_per_branch[self._branches_in_view] + self.ncomp_per_branch = pointer.base.ncomp_per_branch[self._branches_in_view] self.comb_parents = self.base.comb_parents[self._branches_in_view] self._set_externals_in_view() self.groups = { @@ -2441,8 +2488,8 @@ def _set_inds_in_view( incl_comps = pointer.nodes.loc[ self._nodes_in_view, "global_comp_index" ].unique() - pre = base_edges["global_pre_comp_index"].isin(incl_comps).to_numpy() - post = base_edges["global_post_comp_index"].isin(incl_comps).to_numpy() + pre = base_edges["pre_global_comp_index"].isin(incl_comps).to_numpy() + post = base_edges["post_global_comp_index"].isin(incl_comps).to_numpy() possible_edges_in_view = base_edges.index.to_numpy()[(pre & post).flatten()] self._edges_in_view = np.intersect1d( possible_edges_in_view, self._edges_in_view @@ -2451,7 +2498,7 @@ def _set_inds_in_view( base_nodes = self.base.nodes self._edges_in_view = edges incl_comps = pointer.edges.loc[ - self._edges_in_view, ["global_pre_comp_index", "global_post_comp_index"] + self._edges_in_view, ["pre_global_comp_index", "post_global_comp_index"] ] incl_comps = np.unique(incl_comps.to_numpy().flatten()) where_comps = base_nodes["global_comp_index"].isin(incl_comps) @@ -2609,26 +2656,29 @@ def _xyzr_in_view(self) -> List[np.ndarray]: """Return xyzr coordinates of every branch that is in `_branches_in_view`. If a branch is not completely in view, the coordinates are interpolated.""" - xyzr = [self.base.xyzr[i] for i in self._branches_in_view].copy() - - # Currently viewing with `.loc` will show the closest compartment - # rather than the actual loc along the branch! - viewed_nseg_for_branch = self.nodes.groupby("global_branch_index").size() - incomplete_inds = np.where(viewed_nseg_for_branch != self.base.nseg)[0] - incomplete_branch_inds = self._branches_in_view[incomplete_inds] - - cond = self.nodes["global_branch_index"].isin(incomplete_branch_inds) - interp_inds = self.nodes.loc[cond] - local_inds_per_branch = interp_inds.groupby("global_branch_index")[ - "local_comp_index" - ] - locs = [ - loc_of_index(inds.to_numpy(), 0, self.base.nseg_per_branch) - for _, inds in local_inds_per_branch - ] - - for i, loc in zip(incomplete_inds, locs): - xyzr[i] = interpolate_xyz(loc, xyzr[i]).T + xyzr = [] + viewed_ncomp_for_branch = self.nodes.groupby("global_branch_index").size() + for i in self._branches_in_view: + xyzr_i = self.base.xyzr[i] + ncomp_i = self.base.ncomp_per_branch[i] + global_comp_offset = self.base.cumsum_ncomp[i] + global_comp_inds = self.nodes["global_comp_index"] + if viewed_ncomp_for_branch.loc[i] != ncomp_i: + local_inds = ( + global_comp_inds.loc[ + self.nodes["global_branch_index"] == i + ].to_numpy() + - global_comp_offset + ) + local_ind_range = np.arange(min(local_inds), max(local_inds) + 1) + inds = [i if i in local_inds else None for i in local_ind_range] + comp_ends = np.linspace(0, 1, ncomp_i + 1) + locs = np.hstack( + [comp_ends[[i, i + 1]] if i is not None else [np.nan] for i in inds] + ) + xyzr.append(interpolate_xyzr(locs, xyzr_i).T) + else: + xyzr.append(xyzr_i) return xyzr # needs abstract method to allow init of View diff --git a/jaxley/modules/branch.py b/jaxley/modules/branch.py index e0c42ec8..74ca31a4 100644 --- a/jaxley/modules/branch.py +++ b/jaxley/modules/branch.py @@ -2,6 +2,7 @@ # licensed under the Apache License Version 2.0, see from typing import Callable, Dict, List, Optional, Tuple, Union +from warnings import warn import jax.numpy as jnp import numpy as np @@ -10,7 +11,7 @@ from jaxley.modules.base import Module from jaxley.modules.compartment import Compartment from jaxley.utils.cell_utils import compute_children_and_parents -from jaxley.utils.misc_utils import cumsum_leading_zero +from jaxley.utils.misc_utils import cumsum_leading_zero, deprecated_kwargs from jaxley.utils.solver_utils import JaxleySolveIndexer, comp_edges_to_indices @@ -26,48 +27,57 @@ class Branch(Module): branch_params: Dict = {} branch_states: Dict = {} + @deprecated_kwargs("0.6.0", ["nseg"]) def __init__( self, compartments: Optional[Union[Compartment, List[Compartment]]] = None, + ncomp: Optional[int] = None, nseg: Optional[int] = None, ): """ Args: compartments: A single compartment or a list of compartments that make up the branch. - nseg: Number of segments to divide the branch into. If `compartments` is an - a single compartment, than the compartment is repeated `nseg` times to + ncomp: Number of segments to divide the branch into. If `compartments` is an + a single compartment, than the compartment is repeated `ncomp` times to create the branch. """ + # Warnings and errors that deal with the change from `nseg` to `ncomp` change + # in Jaxley v0.5.0. + if ncomp is not None and nseg is not None: + raise ValueError("You passed `ncomp` and `nseg`. Please pass only `ncomp`.") + if ncomp is None and nseg is not None: + ncomp = nseg + super().__init__() assert ( isinstance(compartments, (Compartment, List)) or compartments is None ), "Only Compartment or List[Compartment] is allowed." if isinstance(compartments, Compartment): assert ( - nseg is not None - ), "If `compartments` is not a list then you have to set `nseg`." + ncomp is not None + ), "If `compartments` is not a list then you have to set `ncomp`." compartments = Compartment() if compartments is None else compartments - nseg = 1 if nseg is None else nseg + ncomp = 1 if ncomp is None else ncomp if isinstance(compartments, Compartment): - compartment_list = [compartments] * nseg + compartment_list = [compartments] * ncomp else: compartment_list = compartments - self.nseg = len(compartment_list) - self.nseg_per_branch = np.asarray([self.nseg]) + self.ncomp = len(compartment_list) + self.ncomp_per_branch = np.asarray([self.ncomp]) self.total_nbranches = 1 self.nbranches_per_cell = [1] - self.cumsum_nbranches = jnp.asarray([0, 1]) - self.cumsum_nseg = cumsum_leading_zero(self.nseg_per_branch) + self._cumsum_nbranches = jnp.asarray([0, 1]) + self.cumsum_ncomp = cumsum_leading_zero(self.ncomp_per_branch) # Indexing. self.nodes = pd.concat([c.nodes for c in compartment_list], ignore_index=True) self._append_params_and_states(self.branch_params, self.branch_states) - self.nodes["global_comp_index"] = np.arange(self.nseg).tolist() - self.nodes["global_branch_index"] = [0] * self.nseg - self.nodes["global_cell_index"] = [0] * self.nseg + self.nodes["global_comp_index"] = np.arange(self.ncomp).tolist() + self.nodes["global_branch_index"] = [0] * self.ncomp + self.nodes["global_cell_index"] = [0] * self.ncomp self._update_local_indices() self._init_view() @@ -79,10 +89,10 @@ def __init__( ) # For morphology indexing. - self.par_inds, self.child_inds, self.child_belongs_to_branchpoint = ( + self._par_inds, self._child_inds, self._child_belongs_to_branchpoint = ( compute_children_and_parents(self.branch_edges) ) - self._internal_node_inds = jnp.arange(self.nseg) + self._internal_node_inds = jnp.arange(self.ncomp) self._initialize() @@ -90,8 +100,8 @@ def __init__( self.xyzr = [float("NaN") * np.zeros((2, 4))] def _init_morph_jaxley_spsolve(self): - self.solve_indexer = JaxleySolveIndexer( - cumsum_nseg=self.cumsum_nseg, + self._solve_indexer = JaxleySolveIndexer( + cumsum_ncomp=self.cumsum_ncomp, branchpoint_group_inds=np.asarray([]).astype(int), remapped_node_indices=self._internal_node_inds, children_in_level=[], @@ -111,8 +121,8 @@ def _init_morph_jax_spsolve(self): """ self._comp_edges = pd.DataFrame().from_dict( { - "source": list(range(self.nseg - 1)) + list(range(1, self.nseg)), - "sink": list(range(1, self.nseg)) + list(range(self.nseg - 1)), + "source": list(range(self.ncomp - 1)) + list(range(1, self.ncomp)), + "sink": list(range(1, self.ncomp)) + list(range(self.ncomp - 1)), } ) self._comp_edges["type"] = 0 @@ -123,4 +133,4 @@ def _init_morph_jax_spsolve(self): self._indptr_jax_spsolve = indptr def __len__(self) -> int: - return self.nseg + return self.ncomp diff --git a/jaxley/modules/cell.py b/jaxley/modules/cell.py index 99a09522..3d6b39da 100644 --- a/jaxley/modules/cell.py +++ b/jaxley/modules/cell.py @@ -2,14 +2,14 @@ # licensed under the Apache License Version 2.0, see from typing import Callable, Dict, List, Optional, Tuple, Union +from warnings import warn import jax.numpy as jnp import numpy as np import pandas as pd from jaxley.modules.base import Module -from jaxley.modules.branch import Branch, Compartment -from jaxley.synapses import Synapse +from jaxley.modules.branch import Branch from jaxley.utils.cell_utils import ( build_branchpoint_group_inds, compute_children_and_parents, @@ -19,13 +19,12 @@ compute_morphology_indices_in_levels, compute_parents_in_level, ) -from jaxley.utils.misc_utils import cumsum_leading_zero +from jaxley.utils.misc_utils import cumsum_leading_zero, deprecated_kwargs from jaxley.utils.solver_utils import ( JaxleySolveIndexer, comp_edges_to_indices, remap_index_to_masked, ) -from jaxley.utils.swc import build_radiuses_from_xyzr, swc_to_jaxley class Cell(Module): @@ -93,22 +92,22 @@ def __init__( self.nbranches_per_cell = [len(branch_list)] self.comb_parents = jnp.asarray(parents) self.comb_children = compute_children_indices(self.comb_parents) - self.cumsum_nbranches = np.asarray([0, len(branch_list)]) + self._cumsum_nbranches = np.asarray([0, len(branch_list)]) # Compartment structure. These arguments have to be rebuilt when `.set_ncomp()` # is run. - self.nseg_per_branch = np.asarray([branch.nseg for branch in branch_list]) - self.nseg = int(np.max(self.nseg_per_branch)) - self.cumsum_nseg = cumsum_leading_zero(self.nseg_per_branch) - self._internal_node_inds = np.arange(self.cumsum_nseg[-1]) + self.ncomp_per_branch = np.asarray([branch.ncomp for branch in branch_list]) + self.ncomp = int(np.max(self.ncomp_per_branch)) + self.cumsum_ncomp = cumsum_leading_zero(self.ncomp_per_branch) + self._internal_node_inds = np.arange(self.cumsum_ncomp[-1]) # Build nodes. Has to be changed when `.set_ncomp()` is run. self.nodes = pd.concat([c.nodes for c in branch_list], ignore_index=True) - self.nodes["global_comp_index"] = np.arange(self.cumsum_nseg[-1]) + self.nodes["global_comp_index"] = np.arange(self.cumsum_ncomp[-1]) self.nodes["global_branch_index"] = np.repeat( - np.arange(self.total_nbranches), self.nseg_per_branch + np.arange(self.total_nbranches), self.ncomp_per_branch ).tolist() - self.nodes["global_cell_index"] = np.repeat(0, self.cumsum_nseg[-1]).tolist() + self.nodes["global_cell_index"] = np.repeat(0, self.cumsum_ncomp[-1]).tolist() self._update_local_indices() self._init_view() @@ -127,7 +126,7 @@ def __init__( ) # For morphology indexing. - self.par_inds, self.child_inds, self.child_belongs_to_branchpoint = ( + self._par_inds, self._child_inds, self._child_belongs_to_branchpoint = ( compute_children_and_parents(self.branch_edges) ) @@ -142,15 +141,15 @@ def _init_morph_jaxley_spsolve(self): user will use. Therefore, we always run this function at `.__init__()`. """ children_and_parents = compute_morphology_indices_in_levels( - len(self.par_inds), - self.child_belongs_to_branchpoint, - self.par_inds, - self.child_inds, + len(self._par_inds), + self._child_belongs_to_branchpoint, + self._par_inds, + self._child_inds, ) branchpoint_group_inds = build_branchpoint_group_inds( - len(self.par_inds), - self.child_belongs_to_branchpoint, - self.cumsum_nseg[-1], + len(self._par_inds), + self._child_belongs_to_branchpoint, + self.cumsum_ncomp[-1], ) parents = self.comb_parents children_inds = children_and_parents["children"] @@ -158,30 +157,32 @@ def _init_morph_jaxley_spsolve(self): levels = compute_levels(parents) children_in_level = compute_children_in_level(levels, children_inds) - parents_in_level = compute_parents_in_level(levels, self.par_inds, parents_inds) - levels_and_nseg = pd.DataFrame().from_dict( + parents_in_level = compute_parents_in_level( + levels, self._par_inds, parents_inds + ) + levels_and_ncomp = pd.DataFrame().from_dict( { "levels": levels, - "nsegs": self.nseg_per_branch, + "ncomps": self.ncomp_per_branch, } ) - levels_and_nseg["max_nseg_in_level"] = levels_and_nseg.groupby("levels")[ - "nsegs" + levels_and_ncomp["max_ncomp_in_level"] = levels_and_ncomp.groupby("levels")[ + "ncomps" ].transform("max") - padded_cumsum_nseg = cumsum_leading_zero( - levels_and_nseg["max_nseg_in_level"].to_numpy() + padded_cumsum_ncomp = cumsum_leading_zero( + levels_and_ncomp["max_ncomp_in_level"].to_numpy() ) # Generate mapping to deal with the masking which allows using the custom - # sparse solver to deal with different nseg per branch. + # sparse solver to deal with different ncomp per branch. remapped_node_indices = remap_index_to_masked( self._internal_node_inds, self.nodes, - padded_cumsum_nseg, - self.nseg_per_branch, + padded_cumsum_ncomp, + self.ncomp_per_branch, ) - self.solve_indexer = JaxleySolveIndexer( - cumsum_nseg=padded_cumsum_nseg, + self._solve_indexer = JaxleySolveIndexer( + cumsum_ncomp=padded_cumsum_ncomp, branchpoint_group_inds=branchpoint_group_inds, children_in_level=children_in_level, parents_in_level=parents_in_level, @@ -209,14 +210,14 @@ def _init_morph_jax_spsolve(self): pd.DataFrame() .from_dict( { - "source": list(range(cumsum_nseg, nseg - 1 + cumsum_nseg)) - + list(range(1 + cumsum_nseg, nseg + cumsum_nseg)), - "sink": list(range(1 + cumsum_nseg, nseg + cumsum_nseg)) - + list(range(cumsum_nseg, nseg - 1 + cumsum_nseg)), + "source": list(range(cumsum_ncomp, ncomp - 1 + cumsum_ncomp)) + + list(range(1 + cumsum_ncomp, ncomp + cumsum_ncomp)), + "sink": list(range(1 + cumsum_ncomp, ncomp + cumsum_ncomp)) + + list(range(cumsum_ncomp, ncomp - 1 + cumsum_ncomp)), } ) .astype(int) - for nseg, cumsum_nseg in zip(self.nseg_per_branch, self.cumsum_nseg) + for ncomp, cumsum_ncomp in zip(self.ncomp_per_branch, self.cumsum_ncomp) ] ) self._comp_edges["type"] = 0 @@ -224,15 +225,15 @@ def _init_morph_jax_spsolve(self): # Edges from branchpoints to compartments. branchpoint_to_parent_edges = pd.DataFrame().from_dict( { - "source": np.arange(len(self.par_inds)) + self.cumsum_nseg[-1], - "sink": self.cumsum_nseg[self.par_inds + 1] - 1, + "source": np.arange(len(self._par_inds)) + self.cumsum_ncomp[-1], + "sink": self.cumsum_ncomp[self._par_inds + 1] - 1, "type": 1, } ) branchpoint_to_child_edges = pd.DataFrame().from_dict( { - "source": self.child_belongs_to_branchpoint + self.cumsum_nseg[-1], - "sink": self.cumsum_nseg[self.child_inds], + "source": self._child_belongs_to_branchpoint + self.cumsum_ncomp[-1], + "sink": self.cumsum_ncomp[self._child_inds], "type": 2, } ) @@ -269,79 +270,3 @@ def _init_morph_jax_spsolve(self): self._data_inds = data_inds self._indices_jax_spsolve = indices self._indptr_jax_spsolve = indptr - - -def read_swc( - fname: str, - nseg: int, - max_branch_len: float = 300.0, - min_radius: Optional[float] = None, - assign_groups: bool = False, -) -> Cell: - """Reads SWC file into a `jx.Cell`. - - Jaxley assumes cylindrical compartments and therefore defines length and radius - for every compartment. The surface area is then 2*pi*r*length. For branches - consisting of a single traced point we assume for them to have area 4*pi*r*r. - Therefore, in these cases, we set lenght=2*r. - - Args: - fname: Path to the swc file. - nseg: The number of compartments per branch. - max_branch_len: If a branch is longer than this value it is split into two - branches. - min_radius: If the radius of a reconstruction is below this value it is clipped. - assign_groups: If True, then the identity of reconstructed points in the SWC - file will be used to generate groups `undefined`, `soma`, `axon`, `basal`, - `apical`, `custom`. See here: - http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html - - Returns: - A `jx.Cell` object. - """ - parents, pathlengths, radius_fns, types, coords_of_branches = swc_to_jaxley( - fname, max_branch_len=max_branch_len, sort=True, num_lines=None - ) - nbranches = len(parents) - - comp = Compartment() - branch = Branch([comp for _ in range(nseg)]) - cell = Cell( - [branch for _ in range(nbranches)], parents=parents, xyzr=coords_of_branches - ) - # Also save the radius generating functions in case users post-hoc modify the number - # of compartments with `.set_ncomp()`. - cell._radius_generating_fns = radius_fns - - lengths_each = np.repeat(pathlengths, nseg) / nseg - cell.set("length", lengths_each) - - radiuses_each = build_radiuses_from_xyzr( - radius_fns, - range(len(parents)), - min_radius, - nseg, - ) - cell.set("radius", radiuses_each) - - # Description of SWC file format: - # http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html - ind_name_lookup = { - 0: "undefined", - 1: "soma", - 2: "axon", - 3: "basal", - 4: "apical", - 5: "custom", - } - types = np.asarray(types).astype(int) - if assign_groups: - for type_ind in np.unique(types): - if type_ind < 5.5: - name = ind_name_lookup[type_ind] - else: - name = f"custom{type_ind}" - indices = np.where(types == type_ind)[0].tolist() - if len(indices) > 0: - cell.branch(indices).add_to_group(name) - return cell diff --git a/jaxley/modules/compartment.py b/jaxley/modules/compartment.py index d79dfcc2..d5f00beb 100644 --- a/jaxley/modules/compartment.py +++ b/jaxley/modules/compartment.py @@ -32,12 +32,12 @@ class Compartment(Module): def __init__(self): super().__init__() - self.nseg = 1 - self.nseg_per_branch = np.asarray([1]) + self.ncomp = 1 + self.ncomp_per_branch = np.asarray([1]) self.total_nbranches = 1 self.nbranches_per_cell = [1] - self.cumsum_nbranches = np.asarray([0, 1]) - self.cumsum_nseg = cumsum_leading_zero(self.nseg_per_branch) + self._cumsum_nbranches = np.asarray([0, 1]) + self.cumsum_ncomp = cumsum_leading_zero(self.ncomp_per_branch) # Setting up the `nodes` for indexing. self.nodes = pd.DataFrame( @@ -53,7 +53,7 @@ def __init__(self): ) # For morphology indexing. - self.par_inds, self.child_inds, self.child_belongs_to_branchpoint = ( + self._par_inds, self._child_inds, self._child_belongs_to_branchpoint = ( compute_children_and_parents(self.branch_edges) ) self._internal_node_inds = jnp.asarray([0]) @@ -65,8 +65,8 @@ def __init__(self): self.xyzr = [float("NaN") * np.zeros((2, 4))] def _init_morph_jaxley_spsolve(self): - self.solve_indexer = JaxleySolveIndexer( - cumsum_nseg=self.cumsum_nseg, + self._solve_indexer = JaxleySolveIndexer( + cumsum_ncomp=self.cumsum_ncomp, branchpoint_group_inds=np.asarray([]).astype(int), children_in_level=[], parents_in_level=[], diff --git a/jaxley/modules/network.py b/jaxley/modules/network.py index c225545e..62d74045 100644 --- a/jaxley/modules/network.py +++ b/jaxley/modules/network.py @@ -53,24 +53,26 @@ def __init__( self.xyzr += deepcopy(cell.xyzr) self._cells_list = cells - self.nseg_per_branch = np.concatenate([cell.nseg_per_branch for cell in cells]) - self.nseg = int(np.max(self.nseg_per_branch)) - self.cumsum_nseg = cumsum_leading_zero(self.nseg_per_branch) - self._internal_node_inds = np.arange(self.cumsum_nseg[-1]) + self.ncomp_per_branch = np.concatenate( + [cell.ncomp_per_branch for cell in cells] + ) + self.ncomp = int(np.max(self.ncomp_per_branch)) + self.cumsum_ncomp = cumsum_leading_zero(self.ncomp_per_branch) + self._internal_node_inds = np.arange(self.cumsum_ncomp[-1]) self._append_params_and_states(self.network_params, self.network_states) self.nbranches_per_cell = [cell.total_nbranches for cell in cells] self.total_nbranches = sum(self.nbranches_per_cell) - self.cumsum_nbranches = cumsum_leading_zero(self.nbranches_per_cell) + self._cumsum_nbranches = cumsum_leading_zero(self.nbranches_per_cell) self.nodes = pd.concat([c.nodes for c in cells], ignore_index=True) - self.nodes["global_comp_index"] = np.arange(self.cumsum_nseg[-1]) + self.nodes["global_comp_index"] = np.arange(self.cumsum_ncomp[-1]) self.nodes["global_branch_index"] = np.repeat( - np.arange(self.total_nbranches), self.nseg_per_branch + np.arange(self.total_nbranches), self.ncomp_per_branch ).tolist() self.nodes["global_cell_index"] = list( itertools.chain( - *[[i] * int(cell.cumsum_nseg[-1]) for i, cell in enumerate(cells)] + *[[i] * int(cell.cumsum_ncomp[-1]) for i, cell in enumerate(cells)] ) ) self._update_local_indices() @@ -78,7 +80,7 @@ def __init__( parents = [cell.comb_parents for cell in cells] self.comb_parents = jnp.concatenate( - [p.at[1:].add(self.cumsum_nbranches[i]) for i, p in enumerate(parents)] + [p.at[1:].add(self._cumsum_nbranches[i]) for i, p in enumerate(parents)] ) # Two columns: `parent_branch_index` and `child_branch_index`. One row per @@ -94,13 +96,13 @@ def __init__( ) # For morphology indexing of both `jax.sparse` and the custom `jaxley` solvers. - self.par_inds, self.child_inds, self.child_belongs_to_branchpoint = ( + self._par_inds, self._child_inds, self._child_belongs_to_branchpoint = ( compute_children_and_parents(self.branch_edges) ) - # `nbranchpoints` in each cell == cell.par_inds (because `par_inds` are unique). - nbranchpoints = jnp.asarray([len(cell.par_inds) for cell in cells]) - self.cumsum_nbranchpoints_per_cell = cumsum_leading_zero(nbranchpoints) + # `nbranchpoints` in each cell == cell._par_inds (because `par_inds` are unique). + nbranchpoints = jnp.asarray([len(cell._par_inds) for cell in cells]) + self._cumsum_nbranchpoints_per_cell = cumsum_leading_zero(nbranchpoints) # Channels. self._gather_channels_from_constituents(cells) @@ -113,42 +115,42 @@ def __repr__(self): def _init_morph_jaxley_spsolve(self): branchpoint_group_inds = build_branchpoint_group_inds( - len(self.par_inds), - self.child_belongs_to_branchpoint, - self.cumsum_nseg[-1], + len(self._par_inds), + self._child_belongs_to_branchpoint, + self.cumsum_ncomp[-1], ) children_in_level = merge_cells( - self.cumsum_nbranches, - self.cumsum_nbranchpoints_per_cell, - [cell.solve_indexer.children_in_level for cell in self._cells_list], + self._cumsum_nbranches, + self._cumsum_nbranchpoints_per_cell, + [cell._solve_indexer.children_in_level for cell in self._cells_list], exclude_first=False, ) parents_in_level = merge_cells( - self.cumsum_nbranches, - self.cumsum_nbranchpoints_per_cell, - [cell.solve_indexer.parents_in_level for cell in self._cells_list], + self._cumsum_nbranches, + self._cumsum_nbranchpoints_per_cell, + [cell._solve_indexer.parents_in_level for cell in self._cells_list], exclude_first=False, ) - padded_cumsum_nseg = cumsum_leading_zero( + padded_cumsum_ncomp = cumsum_leading_zero( np.concatenate( - [np.diff(cell.solve_indexer.cumsum_nseg) for cell in self._cells_list] + [np.diff(cell._solve_indexer.cumsum_ncomp) for cell in self._cells_list] ) ) # Generate mapping to dealing with the masking which allows using the custom - # sparse solver to deal with different nseg per branch. + # sparse solver to deal with different ncomp per branch. remapped_node_indices = remap_index_to_masked( self._internal_node_inds, self.nodes, - padded_cumsum_nseg, - self.nseg_per_branch, + padded_cumsum_ncomp, + self.ncomp_per_branch, ) - self.solve_indexer = JaxleySolveIndexer( - cumsum_nseg=padded_cumsum_nseg, + self._solve_indexer = JaxleySolveIndexer( + cumsum_ncomp=padded_cumsum_ncomp, branchpoint_group_inds=branchpoint_group_inds, children_in_level=children_in_level, parents_in_level=parents_in_level, - root_inds=self.cumsum_nbranches[:-1], + root_inds=self._cumsum_nbranches[:-1], remapped_node_indices=remapped_node_indices, ) @@ -158,7 +160,7 @@ def _init_morph_jax_spsolve(self): The reason that this function is a bit involved for a `Network` is that Jaxley considers branchpoint nodes to be at the very end of __all__ nodes (i.e. the branchpoints of the first cell are even after the compartments of the second - cell. The reason for this is that, otherwise, `cumsum_nseg` becomes tricky). + cell. The reason for this is that, otherwise, `cumsum_ncomp` becomes tricky). To achieve this, we first loop over all compartments and append them, and then loop over all branchpoints and append those. The code for building the indices @@ -171,13 +173,13 @@ def _init_morph_jax_spsolve(self): `type == 3`: parent-compartment --> branchpoint `type == 4`: child-compartment --> branchpoint """ - self._cumsum_nseg_per_cell = cumsum_leading_zero( - jnp.asarray([cell.cumsum_nseg[-1] for cell in self.cells]) + self._cumsum_ncomp_per_cell = cumsum_leading_zero( + jnp.asarray([cell.cumsum_ncomp[-1] for cell in self.cells]) ) self._comp_edges = pd.DataFrame() # Add all the internal nodes. - for offset, cell in zip(self._cumsum_nseg_per_cell, self._cells_list): + for offset, cell in zip(self._cumsum_ncomp_per_cell, self._cells_list): condition = cell._comp_edges["type"].to_numpy() == 0 rows = cell._comp_edges[condition] self._comp_edges = pd.concat( @@ -185,13 +187,13 @@ def _init_morph_jax_spsolve(self): ) # All branchpoint-to-compartment nodes. - start_branchpoints = self.cumsum_nseg[-1] # Index of the first branchpoint. + start_branchpoints = self.cumsum_ncomp[-1] # Index of the first branchpoint. for offset, offset_branchpoints, cell in zip( - self._cumsum_nseg_per_cell, - self.cumsum_nbranchpoints_per_cell, + self._cumsum_ncomp_per_cell, + self._cumsum_nbranchpoints_per_cell, self._cells_list, ): - offset_within_cell = cell.cumsum_nseg[-1] + offset_within_cell = cell.cumsum_ncomp[-1] condition = cell._comp_edges["type"].isin([1, 2]) rows = cell._comp_edges[condition] self._comp_edges = pd.concat( @@ -209,11 +211,11 @@ def _init_morph_jax_spsolve(self): # All compartment-to-branchpoint nodes. for offset, offset_branchpoints, cell in zip( - self._cumsum_nseg_per_cell, - self.cumsum_nbranchpoints_per_cell, + self._cumsum_ncomp_per_cell, + self._cumsum_nbranchpoints_per_cell, self._cells_list, ): - offset_within_cell = cell.cumsum_nseg[-1] + offset_within_cell = cell.cumsum_ncomp[-1] condition = cell._comp_edges["type"].isin([3, 4]) rows = cell._comp_edges[condition] self._comp_edges = pd.concat( @@ -262,8 +264,8 @@ def _step_synapse_state( voltages = states["v"] grouped_syns = edges.groupby("type", sort=False, group_keys=False) - pre_syn_inds = grouped_syns["global_pre_comp_index"].apply(list) - post_syn_inds = grouped_syns["global_post_comp_index"].apply(list) + pre_syn_inds = grouped_syns["pre_global_comp_index"].apply(list) + post_syn_inds = grouped_syns["post_global_comp_index"].apply(list) synapse_names = list(grouped_syns.indices.keys()) for i, synapse_type in enumerate(syn_channels): @@ -309,8 +311,8 @@ def _synapse_currents( voltages = states["v"] grouped_syns = edges.groupby("type", sort=False, group_keys=False) - pre_syn_inds = grouped_syns["global_pre_comp_index"].apply(list) - post_syn_inds = grouped_syns["global_post_comp_index"].apply(list) + pre_syn_inds = grouped_syns["pre_global_comp_index"].apply(list) + post_syn_inds = grouped_syns["post_global_comp_index"].apply(list) synapse_names = list(grouped_syns.indices.keys()) syn_voltage_terms = jnp.zeros_like(voltages) @@ -471,10 +473,10 @@ def vis( pre_locs = self.edges["pre_locs"].to_numpy() post_locs = self.edges["post_locs"].to_numpy() - pre_comp = self.edges["global_pre_comp_index"].to_numpy() + pre_comp = self.edges["pre_global_comp_index"].to_numpy() nodes = self.nodes.set_index("global_comp_index") pre_branch = nodes.loc[pre_comp, "global_branch_index"].to_numpy() - post_comp = self.edges["global_post_comp_index"].to_numpy() + post_comp = self.edges["post_global_comp_index"].to_numpy() post_branch = nodes.loc[post_comp, "global_branch_index"].to_numpy() dims_np = np.asarray(dims) @@ -536,10 +538,10 @@ def build_extents(*subset_sizes): else: graph.add_nodes_from(range(len(self._cells_in_view))) - pre_comp = self.edges["global_pre_comp_index"].to_numpy() + pre_comp = self.edges["pre_global_comp_index"].to_numpy() nodes = self.nodes.set_index("global_comp_index") pre_cell = nodes.loc[pre_comp, "global_cell_index"].to_numpy() - post_comp = self.edges["global_post_comp_index"].to_numpy() + post_comp = self.edges["post_global_comp_index"].to_numpy() post_cell = nodes.loc[post_comp, "global_cell_index"].to_numpy() inds = np.stack([pre_cell, post_cell]).T @@ -573,19 +575,19 @@ def _append_multiple_synapses(self, pre_nodes, post_nodes, synapse_type): post_loc = loc_of_index( post_nodes["global_comp_index"].to_numpy(), post_nodes["global_branch_index"].to_numpy(), - self.nseg_per_branch, + self.ncomp_per_branch, ) pre_loc = loc_of_index( pre_nodes["global_comp_index"].to_numpy(), pre_nodes["global_branch_index"].to_numpy(), - self.nseg_per_branch, + self.ncomp_per_branch, ) # Define new synapses. Each row is one synapse. pre_nodes = pre_nodes[["global_comp_index"]] - pre_nodes.columns = ["global_pre_comp_index"] + pre_nodes.columns = ["pre_global_comp_index"] post_nodes = post_nodes[["global_comp_index"]] - post_nodes.columns = ["global_post_comp_index"] + post_nodes.columns = ["post_global_comp_index"] new_rows = pd.concat( [ global_edge_index, diff --git a/jaxley/solver_voltage.py b/jaxley/solver_voltage.py index 07738f6e..7895a15b 100644 --- a/jaxley/solver_voltage.py +++ b/jaxley/solver_voltage.py @@ -23,7 +23,7 @@ def step_voltage_explicit( sinks: jnp.ndarray, sources: jnp.ndarray, types: jnp.ndarray, - nseg_per_branch: jnp.ndarray, + ncomp_per_branch: jnp.ndarray, par_inds: jnp.ndarray, child_inds: jnp.ndarray, nbranches: int, @@ -66,7 +66,7 @@ def step_voltage_implicit_with_jaxley_spsolve( sinks: jnp.ndarray, sources: jnp.ndarray, types: jnp.ndarray, - nseg_per_branch: jnp.ndarray, + ncomp_per_branch: jnp.ndarray, par_inds: jnp.ndarray, child_inds: jnp.ndarray, nbranches: int, @@ -78,7 +78,7 @@ def step_voltage_implicit_with_jaxley_spsolve( """Solve one timestep of branched nerve equations with implicit (backward) Euler.""" # Build diagonals. c2c = np.isin(types, [0, 1, 2]) - total_ncomp = idx.cumsum_nseg[-1] + total_ncomp = idx.cumsum_ncomp[-1] diags = jnp.ones(total_ncomp) # if-case needed because `.at` does not allow empty inputs, but the input is @@ -179,7 +179,7 @@ def step_voltage_implicit_with_jaxley_spsolve( branchpoint_diags, branchpoint_solves, solver, - nseg_per_branch, + ncomp_per_branch, idx, debug_states, ) @@ -204,7 +204,7 @@ def step_voltage_implicit_with_jaxley_spsolve( branchpoint_diags, branchpoint_solves, solver, - nseg_per_branch, + ncomp_per_branch, idx, debug_states, ) @@ -317,7 +317,7 @@ def _triang_branched( branchpoint_diags, branchpoint_solves, tridiag_solver, - nseg_per_branch, + ncomp_per_branch, idx, debug_states, ): @@ -356,7 +356,7 @@ def _triang_branched( branchpoint_weights_parents, branchpoint_diags, branchpoint_solves, - nseg_per_branch, + ncomp_per_branch, idx, ) # At last level, we do not want to eliminate anymore. @@ -387,7 +387,7 @@ def _backsub_branched( branchpoint_diags, branchpoint_solves, tridiag_solver, - nseg_per_branch, + ncomp_per_branch, idx, debug_states, ): @@ -411,7 +411,7 @@ def _backsub_branched( solves, branchpoint_weights_parents, branchpoint_solves, - nseg_per_branch, + ncomp_per_branch, idx, ) branchpoint_conds_children, solves = _eliminate_children_upper( @@ -527,7 +527,7 @@ def _eliminate_parents_upper( branchpoint_weights_parents, branchpoint_diags, branchpoint_solves, - nseg_per_branch: jnp.ndarray, + ncomp_per_branch: jnp.ndarray, idx, ): bil = pil[:, 0] @@ -566,7 +566,7 @@ def _eliminate_parents_lower( solves, branchpoint_weights_parents, branchpoint_solves, - nseg_per_branch: jnp.ndarray, + ncomp_per_branch: jnp.ndarray, idx, ): bil = pil[:, 0] diff --git a/jaxley/utils/cell_utils.py b/jaxley/utils/cell_utils.py index 99babff3..d71014c2 100644 --- a/jaxley/utils/cell_utils.py +++ b/jaxley/utils/cell_utils.py @@ -1,8 +1,10 @@ # This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is # licensed under the Apache License Version 2.0, see +from functools import partial from math import pi -from typing import Dict, List, Optional, Tuple, Union +from typing import Callable, Dict, List, Optional, Tuple, Union +from warnings import warn import jax.numpy as jnp import numpy as np @@ -12,7 +14,291 @@ from jaxley.utils.misc_utils import cumsum_leading_zero -def equal_segments(branch_property: list, nseg_per_branch: int): +def _split_into_branches_and_sort( + content: np.ndarray, + max_branch_len: Optional[float], + is_single_point_soma: bool, + sort: bool = True, +) -> Tuple[np.ndarray, np.ndarray]: + branches, types = _split_into_branches(content, is_single_point_soma) + if max_branch_len is not None: + branches, types = _split_long_branches( + branches, + types, + content, + max_branch_len, + is_single_point_soma=is_single_point_soma, + ) + + if sort: + first_val = np.asarray([b[0] for b in branches]) + sorting = np.argsort(first_val, kind="mergesort") + sorted_branches = [branches[s] for s in sorting] + sorted_types = [types[s] for s in sorting] + else: + sorted_branches = branches + sorted_types = types + return sorted_branches, sorted_types + + +def _split_long_branches( + branches: np.ndarray, + types: np.ndarray, + content: np.ndarray, + max_branch_len: float, + is_single_point_soma: bool, +) -> Tuple[np.ndarray, np.ndarray]: + pathlengths = _compute_pathlengths( + branches, content[:, 1:6], is_single_point_soma=is_single_point_soma + ) + pathlengths = [np.sum(length_traced) for length_traced in pathlengths] + split_branches = [] + split_types = [] + for branch, type, length in zip(branches, types, pathlengths): + num_subbranches = 1 + split_branch = [branch] + while length > max_branch_len: + num_subbranches += 1 + split_branch = _split_branch_equally(branch, num_subbranches) + lengths_of_subbranches = _compute_pathlengths( + split_branch, + coords=content[:, 1:6], + is_single_point_soma=is_single_point_soma, + ) + lengths_of_subbranches = [ + np.sum(length_traced) for length_traced in lengths_of_subbranches + ] + length = max(lengths_of_subbranches) + if num_subbranches > 10: + warn( + """`num_subbranches > 10`, stopping to split. Most likely your + SWC reconstruction is not dense and some neighbouring traced + points are farther than `max_branch_len` apart.""" + ) + break + split_branches += split_branch + split_types += [type] * num_subbranches + + return split_branches, split_types + + +def _split_branch_equally(branch: np.ndarray, num_subbranches: int) -> List[np.ndarray]: + num_points_each = len(branch) // num_subbranches + branches = [branch[:num_points_each]] + for i in range(1, num_subbranches - 1): + branches.append(branch[i * num_points_each - 1 : (i + 1) * num_points_each]) + branches.append(branch[(num_subbranches - 1) * num_points_each - 1 :]) + return branches + + +def _split_into_branches( + content: np.ndarray, is_single_point_soma: bool +) -> Tuple[np.ndarray, np.ndarray]: + prev_ind = None + prev_type = None + n_branches = 0 + + # Branch inds will contain the row identifier at which a branch point occurs + # (i.e. the row of the parent of two branches). + branch_inds = [] + for c in content: + current_ind = c[0] + current_parent = c[-1] + current_type = c[1] + if current_parent != prev_ind or current_type != prev_type: + branch_inds.append(int(current_parent)) + n_branches += 1 + prev_ind = current_ind + prev_type = current_type + + all_branches = [] + current_branch = [] + all_types = [] + + # Loop over every line in the SWC file. + for c in content: + current_ind = c[0] # First col is row_identifier + current_parent = c[-1] # Last col is parent in SWC specification. + if current_parent == -1: + all_types.append(c[1]) + else: + current_type = c[1] + + if current_parent == -1 and is_single_point_soma and current_ind == 1: + all_branches.append([int(current_ind)]) + all_types.append(int(current_type)) + + # Either append the current point to the branch, or add the branch to + # `all_branches`. + if current_parent in branch_inds[1:]: + if len(current_branch) > 1: + all_branches.append(current_branch) + all_types.append(current_type) + current_branch = [int(current_parent), int(current_ind)] + else: + current_branch.append(int(current_ind)) + + # Append the final branch (intermediate branches are already appended five lines + # above.) + all_branches.append(current_branch) + return all_branches, all_types + + +def _build_parents(all_branches: List[np.ndarray]) -> List[int]: + parents = [None] * len(all_branches) + all_last_inds = [b[-1] for b in all_branches] + for i, branch in enumerate(all_branches): + parent_ind = branch[0] + ind = np.where(np.asarray(all_last_inds) == parent_ind)[0] + if len(ind) > 0 and ind != i: + parents[i] = ind[0] + else: + assert ( + parent_ind == 1 + ), """Trying to connect a segment to the beginning of + another segment. This is not allowed. Please create an issue on github.""" + parents[i] = -1 + + return parents + + +def _radius_generating_fns( + all_branches: np.ndarray, + radiuses: np.ndarray, + each_length: np.ndarray, + parents: np.ndarray, + types: np.ndarray, +) -> List[Callable]: + """For all branches in a cell, returns callable that return radius given loc.""" + radius_fns = [] + for i, branch in enumerate(all_branches): + rads_in_branch = radiuses[np.asarray(branch) - 1] + if parents[i] > -1 and types[i] != types[parents[i]]: + # We do not want to linearly interpolate between the radius of the previous + # branch if a new type of neurite is found (e.g. switch from soma to + # apical). From looking at the SWC from n140.swc I believe that this is + # also what NEURON does. + rads_in_branch[0] = rads_in_branch[1] + radius_fn = _radius_generating_fn( + radiuses=rads_in_branch, each_length=each_length[i] + ) + # Beause SWC starts counting at 1, but numpy counts from 0. + # ind_of_branch_endpoint = np.asarray(b) - 1 + radius_fns.append(radius_fn) + return radius_fns + + +def _padded_radius(loc: float, radiuses: np.ndarray) -> float: + return radiuses * np.ones_like(loc) + + +def _radius(loc: float, cutoffs: np.ndarray, radiuses: np.ndarray) -> float: + """Function which returns the radius via linear interpolation. + + Defined outside of `_radius_generating_fns` to allow for pickling of the resulting + Cell object.""" + index = np.digitize(loc, cutoffs, right=False) + left_rad = radiuses[index - 1] + right_rad = radiuses[index] + left_loc = cutoffs[index - 1] + right_loc = cutoffs[index] + loc_within_bin = (loc - left_loc) / (right_loc - left_loc) + return left_rad + (right_rad - left_rad) * loc_within_bin + + +def _padded_radius_generating_fn(radiuses: np.ndarray) -> Callable: + return partial(_padded_radius, radiuses=radiuses) + + +def _radius_generating_fn(radiuses: np.ndarray, each_length: np.ndarray) -> Callable: + # Avoid division by 0 with the `summed_len` below. + each_length[each_length < 1e-8] = 1e-8 + summed_len = np.sum(each_length) + cutoffs = np.cumsum(np.concatenate([np.asarray([0]), each_length])) / summed_len + cutoffs[0] -= 1e-8 + cutoffs[-1] += 1e-8 + + # We have to linearly interpolate radiuses, therefore we need at least two radiuses. + # However, jaxley allows somata which consist of a single traced point (i.e. + # just one radius). Therefore, we just `tile` in order to generate an artificial + # endpoint and startpoint radius of the soma. + if len(radiuses) == 1: + radiuses = np.tile(radiuses, 2) + + return partial(_radius, cutoffs=cutoffs, radiuses=radiuses) + + +def _compute_pathlengths( + all_branches: np.ndarray, coords: np.ndarray, is_single_point_soma: bool +) -> List[np.ndarray]: + """ + Args: + coords: Has shape (num_traced_points, 5), where `5` is (type, x, y, z, radius). + """ + branch_pathlengths = [] + for b in all_branches: + coords_in_branch = coords[np.asarray(b) - 1] + if len(coords_in_branch) > 1: + # If the branch starts at a different neurite (e.g. the soma) then NEURON + # ignores the distance from that initial point. To reproduce, use the + # following SWC dummy file and read it in NEURON (and Jaxley): + # 1 1 0.00 0.0 0.0 6.0 -1 + # 2 2 9.00 0.0 0.0 0.5 1 + # 3 2 10.0 0.0 0.0 0.3 2 + types = coords_in_branch[:, 0] + if int(types[0]) == 1 and int(types[1]) != 1 and is_single_point_soma: + coords_in_branch[0] = coords_in_branch[1] + + # Compute distances between all traced points in a branch. + point_diffs = np.diff(coords_in_branch, axis=0) + dists = np.sqrt( + point_diffs[:, 1] ** 2 + point_diffs[:, 2] ** 2 + point_diffs[:, 3] ** 2 + ) + else: + # Jaxley uses length and radius for every compartment and assumes the + # surface area to be 2*pi*r*length. For branches consisting of a single + # traced point we assume for them to have area 4*pi*r*r. Therefore, we have + # to set length = 2*r. + radius = coords_in_branch[0, 4] # txyzr -> 4 is radius. + dists = np.asarray([2 * radius]) + branch_pathlengths.append(dists) + return branch_pathlengths + + +def build_radiuses_from_xyzr( + radius_fns: List[Callable], + branch_indices: List[int], + min_radius: Optional[float], + ncomp: int, +) -> jnp.ndarray: + """Return the radiuses of branches given SWC file xyzr. + + Returns an array of shape `(num_branches, ncomp)`. + + Args: + radius_fns: Functions which, given compartment locations return the radius. + branch_indices: The indices of the branches for which to return the radiuses. + min_radius: If passed, the radiuses are clipped to be at least as large. + ncomp: The number of compartments that every branch is discretized into. + """ + # Compartment locations are at the center of the internal nodes. + non_split = 1 / ncomp + range_ = np.linspace(non_split / 2, 1 - non_split / 2, ncomp) + + # Build radiuses. + radiuses = np.asarray([radius_fns[b](range_) for b in branch_indices]) + radiuses_each = radiuses.ravel(order="C") + if min_radius is None: + assert np.all( + radiuses_each > 0.0 + ), "Radius 0.0 in SWC file. Set `read_swc(..., min_radius=...)`." + else: + radiuses_each[radiuses_each < min_radius] = min_radius + + return radiuses_each + + +def equal_segments(branch_property: list, ncomp_per_branch: int): """Generates segments where some property is the same in each segment. Args: @@ -20,11 +306,11 @@ def equal_segments(branch_property: list, nseg_per_branch: int): `len(branch_property) == num_branches`. """ assert isinstance(branch_property, list), "branch_property must be a list." - return jnp.asarray([branch_property] * nseg_per_branch).T + return jnp.asarray([branch_property] * ncomp_per_branch).T def linear_segments( - initial_val: float, endpoint_vals: list, parents: jnp.ndarray, nseg_per_branch: int + initial_val: float, endpoint_vals: list, parents: jnp.ndarray, ncomp_per_branch: int ): """Generates segments where some property is linearly interpolated. @@ -42,11 +328,11 @@ def compute_rad(branch_ind, loc): end = endpoint_radiuses[branch_ind] return (end - start) * loc + start - branch_inds_of_each_comp = jnp.tile(jnp.arange(num_branches), nseg_per_branch) - locs_of_each_comp = jnp.linspace(1, 0, nseg_per_branch).repeat(num_branches) + branch_inds_of_each_comp = jnp.tile(jnp.arange(num_branches), ncomp_per_branch) + locs_of_each_comp = jnp.linspace(1, 0, ncomp_per_branch).repeat(num_branches) rad_of_each_comp = compute_rad(branch_inds_of_each_comp, locs_of_each_comp) - return jnp.reshape(rad_of_each_comp, (nseg_per_branch, num_branches)).T + return jnp.reshape(rad_of_each_comp, (ncomp_per_branch, num_branches)).T def merge_cells( @@ -182,21 +468,23 @@ def compute_children_indices(parents) -> List[jnp.ndarray]: def get_num_neighbours( num_children: jnp.ndarray, - nseg_per_branch: int, + ncomp_per_branch: int, num_branches: int, ): """ Number of neighbours of each compartment. """ - num_neighbours = 2 * jnp.ones((num_branches * nseg_per_branch)) - num_neighbours = num_neighbours.at[nseg_per_branch - 1].set(1.0) - num_neighbours = num_neighbours.at[jnp.arange(num_branches) * nseg_per_branch].set( + num_neighbours = 2 * jnp.ones((num_branches * ncomp_per_branch)) + num_neighbours = num_neighbours.at[ncomp_per_branch - 1].set(1.0) + num_neighbours = num_neighbours.at[jnp.arange(num_branches) * ncomp_per_branch].set( num_children + 1.0 ) return num_neighbours -def local_index_of_loc(loc: float, global_branch_ind: int, nseg_per_branch: int) -> int: +def local_index_of_loc( + loc: float, global_branch_ind: int, ncomp_per_branch: int +) -> int: """Returns the local index of a comp given a loc [0, 1] and the index of a branch. This is used because we specify locations such as synapses as a value between 0 and @@ -205,23 +493,23 @@ def local_index_of_loc(loc: float, global_branch_ind: int, nseg_per_branch: int) Args: branch_ind: Index of the branch. loc: Location (in [0, 1]) along that branch. - nseg_per_branch: Number of segments of each branch. + ncomp_per_branch: Number of segments of each branch. Returns: The local index of the compartment. """ - nseg = nseg_per_branch[global_branch_ind] # only for convenience. - possible_locs = np.linspace(0.5 / nseg, 1 - 0.5 / nseg, nseg) + ncomp = ncomp_per_branch[global_branch_ind] # only for convenience. + possible_locs = np.linspace(0.5 / ncomp, 1 - 0.5 / ncomp, ncomp) ind_along_branch = np.argmin(np.abs(possible_locs - loc)) return ind_along_branch -def loc_of_index(global_comp_index, global_branch_index, nseg_per_branch): +def loc_of_index(global_comp_index, global_branch_index, ncomp_per_branch): """Return location corresponding to global compartment index.""" - cumsum_nseg = cumsum_leading_zero(nseg_per_branch) - index = global_comp_index - cumsum_nseg[global_branch_index] - nseg = nseg_per_branch[global_branch_index] - return (0.5 + index) / nseg + cumsum_ncomp = cumsum_leading_zero(ncomp_per_branch) + index = global_comp_index - cumsum_ncomp[global_branch_index] + ncomp = ncomp_per_branch[global_branch_index] + return (0.5 + index) / ncomp def compute_coupling_cond(rad1, rad2, r_a1, r_a2, l1, l2): @@ -288,7 +576,7 @@ def remap_to_consecutive(arr): v_interp = vmap(jnp.interp, in_axes=(None, None, 1)) -def interpolate_xyz(loc: float, coords: np.ndarray): +def interpolate_xyzr(loc: float, coords: np.ndarray): """Perform a linear interpolation between xyz-coordinates. Args: @@ -302,7 +590,7 @@ def interpolate_xyz(loc: float, coords: np.ndarray): pathlens = np.insert(np.cumsum(dl), 0, 0) # cummulative length of sections norm_pathlens = pathlens / np.maximum(1e-8, pathlens[-1]) # norm lengths to [0,1]. - return v_interp(loc, norm_pathlens, coords[:, :3]) + return v_interp(loc, norm_pathlens, coords) def params_to_pstate( diff --git a/jaxley/utils/debug_solver.py b/jaxley/utils/debug_solver.py index 84743e0c..1f999222 100644 --- a/jaxley/utils/debug_solver.py +++ b/jaxley/utils/debug_solver.py @@ -12,7 +12,7 @@ def compute_morphology_indices( child_belongs_to_branchpoint, par_inds, child_inds, - nseg, + ncomp, nbranches, ): """Return (row, col) to build the sparse matrix defining the voltage eqs. @@ -32,23 +32,23 @@ def compute_morphology_indices( 7) All child branchpoint rows 8) All branchpoint diagonals """ - diag_col_inds = jnp.arange(nseg * nbranches) - diag_row_inds = jnp.arange(nseg * nbranches) + diag_col_inds = jnp.arange(ncomp * nbranches) + diag_row_inds = jnp.arange(ncomp * nbranches) - upper_col_inds = drop_nseg_th_element(diag_col_inds, nseg, nbranches, 0) - upper_row_inds = drop_nseg_th_element(diag_row_inds, nseg, nbranches, nseg - 1) + upper_col_inds = drop_ncomp_th_element(diag_col_inds, ncomp, nbranches, 0) + upper_row_inds = drop_ncomp_th_element(diag_row_inds, ncomp, nbranches, ncomp - 1) - lower_col_inds = drop_nseg_th_element(diag_col_inds, nseg, nbranches, nseg - 1) - lower_row_inds = drop_nseg_th_element(diag_row_inds, nseg, nbranches, 0) + lower_col_inds = drop_ncomp_th_element(diag_col_inds, ncomp, nbranches, ncomp - 1) + lower_row_inds = drop_ncomp_th_element(diag_row_inds, ncomp, nbranches, 0) - start_ind_for_branchpoints = nseg * nbranches + start_ind_for_branchpoints = ncomp * nbranches branchpoint_inds_parents = start_ind_for_branchpoints + jnp.arange(num_branchpoints) branchpoint_inds_children = ( start_ind_for_branchpoints + child_belongs_to_branchpoint ) - branch_inds_parents = par_inds * nseg + (nseg - 1) - branch_inds_children = child_inds * nseg + branch_inds_parents = par_inds * ncomp + (ncomp - 1) + branch_inds_children = child_inds * ncomp branchpoint_parent_columns_col_inds = branchpoint_inds_parents branchpoint_parent_columns_row_inds = branch_inds_parents @@ -107,7 +107,7 @@ def build_voltage_matrix_elements( branchpoint_weights_parents, branchpoint_diags, branchpoint_solves, - nseg, + ncomp, nbranches, ): """Return data to build the sparse matrix defining the voltage equations. @@ -123,13 +123,13 @@ def build_voltage_matrix_elements( 8) All branchpoint diagonals """ num_branchpoints = len(branchpoint_conds_parents) - num_entries = nseg * nbranches + num_branchpoints + num_entries = ncomp * nbranches + num_branchpoints diag_elements = diags.flatten() upper_elements = uppers.flatten() lower_elements = lowers.flatten() - start_ind_for_branchpoints = nseg * nbranches + start_ind_for_branchpoints = ncomp * nbranches branchpoint_parent_columns_elements = branchpoint_conds_parents branchpoint_children_columns_elements = branchpoint_conds_children branchpoint_parent_row_elements = branchpoint_weights_parents @@ -161,8 +161,8 @@ def build_voltage_matrix_elements( ) -def drop_nseg_th_element( - arr: jnp.ndarray, nseg: int, nbranches: int, start: int +def drop_ncomp_th_element( + arr: jnp.ndarray, ncomp: int, nbranches: int, start: int ) -> jnp.ndarray: """ Create an array of integers from 0 to limit, dropping every n-th element. @@ -171,7 +171,7 @@ def drop_nseg_th_element( Args: arr: The array from which to drop elements. - nseg: The interval of elements to drop (every n-th element). + ncomp: The interval of elements to drop (every n-th element). start: An offset on where to start removing. Returns: @@ -179,7 +179,7 @@ def drop_nseg_th_element( """ # Drop every n-th element result = jnp.delete( - arr, jnp.arange(start, nseg * nbranches, nseg), assume_unique_indices=True + arr, jnp.arange(start, ncomp * nbranches, ncomp), assume_unique_indices=True ) return result diff --git a/jaxley/utils/misc_utils.py b/jaxley/utils/misc_utils.py index d2a441f3..2d221904 100644 --- a/jaxley/utils/misc_utils.py +++ b/jaxley/utils/misc_utils.py @@ -1,6 +1,7 @@ # This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is # licensed under the Apache License Version 2.0, see +import warnings from typing import List, Optional, Union import jax.numpy as jnp @@ -34,3 +35,66 @@ def is_str_all(arg, force: bool = True) -> bool: assert arg == "all", "Only 'all' is allowed" return arg == "all" return False + + +class deprecated: + """Decorator to mark a function as deprecated. + + Can be used to mark functions that will be removed in future versions. This will + also be tested in the CI pipeline to ensure that deprecated functions are removed. + + Warns with: "func_name is deprecated and will be removed in version version." + + Args: + version: The version in which the function will be removed, i.e. "0.1.0". + amend_msg: An optional message to append to the deprecation warning. + """ + + def __init__(self, version: str, amend_msg: str = ""): + self._version: str = version + self._amend_msg: str = amend_msg + + def __call__(self, func): + def wrapper(*args, **kwargs): + msg = ( + f"{func.__name__} is deprecated and will be removed in version " + f"{self._version}." + ) + warnings.warn(msg + self._amend_msg) + return func(*args, **kwargs) + + return wrapper + + +class deprecated_kwargs: + """Decorator to mark a keyword argument of a function as deprecated. + + Can be used to mark kwargs that will be removed in future versions. This will + also be tested in the CI pipeline to ensure that deprecated kwargs are removed. + + Warns with: "kwarg is deprecated and will be removed in version version." + + Args: + version: The version in which the keyword argument will be removed, i.e. + `0.1.0`. + deprecated_kwargs: A list of keyword arguments that are deprecated. + amend_msg: An optional message to append to the deprecation warning. + """ + + def __init__(self, version: str, kwargs: List = [], amend_msg: str = ""): + self._version: str = version + self._amend_msg: str = amend_msg + self._depcrecated_kwargs: List = kwargs + + def __call__(self, func): + def wrapper(*args, **kwargs): + for deprecated_kwarg in self._depcrecated_kwargs: + if deprecated_kwarg in kwargs and kwargs[deprecated_kwarg] is not None: + msg = ( + f"{deprecated_kwarg} is deprecated and will be removed in " + f"version {self._version}." + ) + warnings.warn(msg + self._amend_msg) + return func(*args, **kwargs) + + return wrapper diff --git a/jaxley/utils/plot_utils.py b/jaxley/utils/plot_utils.py index f91071a9..e7a0b13c 100644 --- a/jaxley/utils/plot_utils.py +++ b/jaxley/utils/plot_utils.py @@ -345,7 +345,7 @@ def plot_comps( np.isnan(module_or_view.xyzr[0][:, :3]) ), "missing xyz coordinates." if "x" not in module_or_view.nodes.columns: - module_or_view._update_nodes_with_xyz() + module_or_view.compute_compartment_centers() for idx, xyzr in zip(module_or_view._branches_in_view, module_or_view.xyzr): locs = xyzr[:, :3] @@ -369,7 +369,7 @@ def plot_comps( lens = np.sqrt(np.nansum(np.diff(locs, axis=0) ** 2, axis=1)) lens = np.cumsum([0] + lens.tolist()) comp_ends = v_interp( - np.linspace(0, lens[-1], module_or_view.nseg + 1), lens, locs + np.linspace(0, lens[-1], module_or_view.ncomp + 1), lens, locs ).T axes = np.diff(comp_ends, axis=0) cylinder_lens = np.sqrt(np.sum(axes**2, axis=1)) diff --git a/jaxley/utils/solver_utils.py b/jaxley/utils/solver_utils.py index 0125728f..c3b883f6 100644 --- a/jaxley/utils/solver_utils.py +++ b/jaxley/utils/solver_utils.py @@ -9,25 +9,25 @@ def remap_index_to_masked( - index, nodes: pd.DataFrame, padded_cumsum_nseg, nseg_per_branch: jnp.ndarray + index, nodes: pd.DataFrame, padded_cumsum_ncomp, ncomp_per_branch: jnp.ndarray ): """Convert actual index of the compartment to the index in the masked system. - E.g. if `nsegs = [2, 4]`, then the index `3` would be mapped to `5` because the - masked `nsegs` are `[4, 4]`. I.e.: + E.g. if `ncomps = [2, 4]`, then the index `3` would be mapped to `5` because the + masked `ncomps` are `[4, 4]`. I.e.: original: [0, 1, 2, 3, 4, 5] masked: [0, 1, (2) ,(3) ,4, 5, 6, 7] """ - cumsum_nseg_per_branch = jnp.concatenate( + cumsum_ncomp_per_branch = jnp.concatenate( [ jnp.asarray([0]), - jnp.cumsum(nseg_per_branch), + jnp.cumsum(ncomp_per_branch), ] ) branch_inds = nodes.loc[index, "global_branch_index"].to_numpy() - remainders = index - cumsum_nseg_per_branch[branch_inds] - return padded_cumsum_nseg[branch_inds] + remainders + remainders = index - cumsum_ncomp_per_branch[branch_inds] + return padded_cumsum_ncomp[branch_inds] + remainders def convert_to_csc( @@ -114,14 +114,14 @@ class JaxleySolveIndexer: def __init__( self, - cumsum_nseg: np.ndarray, + cumsum_ncomp: np.ndarray, branchpoint_group_inds: Optional[np.ndarray] = None, children_in_level: Optional[np.ndarray] = None, parents_in_level: Optional[np.ndarray] = None, root_inds: Optional[np.ndarray] = None, remapped_node_indices: Optional[np.ndarray] = None, ): - self.cumsum_nseg = np.asarray(cumsum_nseg) + self.cumsum_ncomp = np.asarray(cumsum_ncomp) # Save items for easier access. self.branchpoint_group_inds = branchpoint_group_inds @@ -132,11 +132,11 @@ def __init__( def first(self, branch_inds: np.ndarray) -> np.ndarray: """Return the indices of the first compartment of all `branch_inds`.""" - return self.cumsum_nseg[branch_inds] + return self.cumsum_ncomp[branch_inds] def last(self, branch_inds: np.ndarray) -> np.ndarray: """Return the indices of the last compartment of all `branch_inds`.""" - return self.cumsum_nseg[branch_inds + 1] - 1 + return self.cumsum_ncomp[branch_inds + 1] - 1 def branch(self, branch_inds: np.ndarray) -> np.ndarray: """Return indices of all compartments in all `branch_inds`.""" @@ -169,7 +169,7 @@ def _consecutive_indices( ) -> np.ndarray: """Return array of all indices in [start, end], for every start, end. - It also reshape the indices to `(nbranches, nseg)`. + It also reshape the indices to `(nbranches, ncomp)`. E.g.: ``` diff --git a/jaxley/utils/swc.py b/jaxley/utils/swc.py deleted file mode 100644 index 8659d418..00000000 --- a/jaxley/utils/swc.py +++ /dev/null @@ -1,354 +0,0 @@ -# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is -# licensed under the Apache License Version 2.0, see - -from copy import copy -from typing import Callable, List, Optional, Tuple -from warnings import warn - -import jax.numpy as jnp -import numpy as np - - -def swc_to_jaxley( - fname: str, - max_branch_len: float = 100.0, - sort: bool = True, - num_lines: Optional[int] = None, -) -> Tuple[List[int], List[float], List[Callable], List[float], List[np.ndarray]]: - """Read an SWC file and bring morphology into `jaxley` compatible formats. - - Args: - fname: Path to swc file. - max_branch_len: Maximal length of one branch. If a branch exceeds this length, - it is split into equal parts such that each subbranch is below - `max_branch_len`. - num_lines: Number of lines of the SWC file to read. - """ - content = np.loadtxt(fname)[:num_lines] - types = content[:, 1] - is_single_point_soma = types[0] == 1 and types[1] != 1 - - if is_single_point_soma: - # Warn here, but the conversion of the length happens in `_compute_pathlengths`. - warn( - "Found a soma which consists of a single traced point. `Jaxley` " - "interprets this soma as a spherical compartment with radius " - "specified in the SWC file, i.e. with surface area 4*pi*r*r." - ) - sorted_branches, types = _split_into_branches_and_sort( - content, - max_branch_len=max_branch_len, - is_single_point_soma=is_single_point_soma, - sort=sort, - ) - - parents = _build_parents(sorted_branches) - each_length = _compute_pathlengths( - sorted_branches, content[:, 1:6], is_single_point_soma=is_single_point_soma - ) - pathlengths = [np.sum(length_traced) for length_traced in each_length] - for i, pathlen in enumerate(pathlengths): - if pathlen == 0.0: - warn("Found a segment with length 0. Clipping it to 1.0") - pathlengths[i] = 1.0 - radius_fns = _radius_generating_fns( - sorted_branches, content[:, 5], each_length, parents, types - ) - - if np.sum(np.asarray(parents) == -1) > 1.0: - parents = np.asarray([-1] + parents) - parents[1:] += 1 - parents = parents.tolist() - pathlengths = [0.1] + pathlengths - radius_fns = [lambda x: content[0, 5] * np.ones_like(x)] + radius_fns - sorted_branches = [[0]] + sorted_branches - - # Type of padded section is assumed to be of `custom` type: - # http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html - types = [5.0] + types - - all_coords_of_branches = [] - for i, branch in enumerate(sorted_branches): - # Remove 1 because `content` is an array that is indexed from 0. - branch = np.asarray(branch) - 1 - - # Deal with additional branch that might have been added above in the lines - # `if np.sum(np.asarray(parents) == -1) > 1.0:` - branch[branch < 0] = 0 - - # Get traced coordinates of the branch. - coords_of_branch = content[branch, 2:6] - all_coords_of_branches.append(coords_of_branch) - - return parents, pathlengths, radius_fns, types, all_coords_of_branches - - -def _split_into_branches_and_sort( - content: np.ndarray, - max_branch_len: float, - is_single_point_soma: bool, - sort: bool = True, -) -> Tuple[np.ndarray, np.ndarray]: - branches, types = _split_into_branches(content, is_single_point_soma) - branches, types = _split_long_branches( - branches, - types, - content, - max_branch_len, - is_single_point_soma=is_single_point_soma, - ) - - if sort: - first_val = np.asarray([b[0] for b in branches]) - sorting = np.argsort(first_val, kind="mergesort") - sorted_branches = [branches[s] for s in sorting] - sorted_types = [types[s] for s in sorting] - else: - sorted_branches = branches - sorted_types = types - return sorted_branches, sorted_types - - -def _split_long_branches( - branches: np.ndarray, - types: np.ndarray, - content: np.ndarray, - max_branch_len: float, - is_single_point_soma: bool, -) -> Tuple[np.ndarray, np.ndarray]: - pathlengths = _compute_pathlengths( - branches, content[:, 1:6], is_single_point_soma=is_single_point_soma - ) - pathlengths = [np.sum(length_traced) for length_traced in pathlengths] - split_branches = [] - split_types = [] - for branch, type, length in zip(branches, types, pathlengths): - num_subbranches = 1 - split_branch = [branch] - while length > max_branch_len: - num_subbranches += 1 - split_branch = _split_branch_equally(branch, num_subbranches) - lengths_of_subbranches = _compute_pathlengths( - split_branch, - coords=content[:, 1:6], - is_single_point_soma=is_single_point_soma, - ) - lengths_of_subbranches = [ - np.sum(length_traced) for length_traced in lengths_of_subbranches - ] - length = max(lengths_of_subbranches) - if num_subbranches > 10: - warn( - """`num_subbranches > 10`, stopping to split. Most likely your - SWC reconstruction is not dense and some neighbouring traced - points are farther than `max_branch_len` apart.""" - ) - break - split_branches += split_branch - split_types += [type] * num_subbranches - - return split_branches, split_types - - -def _split_branch_equally(branch: np.ndarray, num_subbranches: int) -> List[np.ndarray]: - num_points_each = len(branch) // num_subbranches - branches = [branch[:num_points_each]] - for i in range(1, num_subbranches - 1): - branches.append(branch[i * num_points_each - 1 : (i + 1) * num_points_each]) - branches.append(branch[(num_subbranches - 1) * num_points_each - 1 :]) - return branches - - -def _split_into_branches( - content: np.ndarray, is_single_point_soma: bool -) -> Tuple[np.ndarray, np.ndarray]: - prev_ind = None - prev_type = None - n_branches = 0 - - # Branch inds will contain the row identifier at which a branch point occurs - # (i.e. the row of the parent of two branches). - branch_inds = [] - for c in content: - current_ind = c[0] - current_parent = c[-1] - current_type = c[1] - if current_parent != prev_ind or current_type != prev_type: - branch_inds.append(int(current_parent)) - n_branches += 1 - prev_ind = current_ind - prev_type = current_type - - all_branches = [] - current_branch = [] - all_types = [] - - # Loop over every line in the SWC file. - for c in content: - current_ind = c[0] # First col is row_identifier - current_parent = c[-1] # Last col is parent in SWC specification. - if current_parent == -1: - all_types.append(c[1]) - else: - current_type = c[1] - - if current_parent == -1 and is_single_point_soma and current_ind == 1: - all_branches.append([int(current_ind)]) - all_types.append(int(current_type)) - - # Either append the current point to the branch, or add the branch to - # `all_branches`. - if current_parent in branch_inds[1:]: - if len(current_branch) > 1: - all_branches.append(current_branch) - all_types.append(current_type) - current_branch = [int(current_parent), int(current_ind)] - else: - current_branch.append(int(current_ind)) - - # Append the final branch (intermediate branches are already appended five lines - # above.) - all_branches.append(current_branch) - return all_branches, all_types - - -def _build_parents(all_branches: List[np.ndarray]) -> List[int]: - parents = [None] * len(all_branches) - all_last_inds = [b[-1] for b in all_branches] - for i, branch in enumerate(all_branches): - parent_ind = branch[0] - ind = np.where(np.asarray(all_last_inds) == parent_ind)[0] - if len(ind) > 0 and ind != i: - parents[i] = ind[0] - else: - assert ( - parent_ind == 1 - ), """Trying to connect a segment to the beginning of - another segment. This is not allowed. Please create an issue on github.""" - parents[i] = -1 - - return parents - - -def _radius_generating_fns( - all_branches: np.ndarray, - radiuses: np.ndarray, - each_length: np.ndarray, - parents: np.ndarray, - types: np.ndarray, -) -> List[Callable]: - """For all branches in a cell, returns callable that return radius given loc.""" - radius_fns = [] - for i, branch in enumerate(all_branches): - rads_in_branch = radiuses[np.asarray(branch) - 1] - if parents[i] > -1 and types[i] != types[parents[i]]: - # We do not want to linearly interpolate between the radius of the previous - # branch if a new type of neurite is found (e.g. switch from soma to - # apical). From looking at the SWC from n140.swc I believe that this is - # also what NEURON does. - rads_in_branch[0] = rads_in_branch[1] - radius_fn = _radius_generating_fn( - radiuses=rads_in_branch, each_length=each_length[i] - ) - # Beause SWC starts counting at 1, but numpy counts from 0. - # ind_of_branch_endpoint = np.asarray(b) - 1 - radius_fns.append(radius_fn) - return radius_fns - - -def _radius_generating_fn(radiuses: np.ndarray, each_length: np.ndarray) -> Callable: - # Avoid division by 0 with the `summed_len` below. - each_length[each_length < 1e-8] = 1e-8 - summed_len = np.sum(each_length) - cutoffs = np.cumsum(np.concatenate([np.asarray([0]), each_length])) / summed_len - cutoffs[0] -= 1e-8 - cutoffs[-1] += 1e-8 - - # We have to linearly interpolate radiuses, therefore we need at least two radiuses. - # However, jaxley allows somata which consist of a single traced point (i.e. - # just one radius). Therefore, we just `tile` in order to generate an artificial - # endpoint and startpoint radius of the soma. - if len(radiuses) == 1: - radiuses = np.tile(radiuses, 2) - - def radius(loc: float) -> float: - """Function which returns the radius via linear interpolation.""" - index = np.digitize(loc, cutoffs, right=False) - left_rad = radiuses[index - 1] - right_rad = radiuses[index] - left_loc = cutoffs[index - 1] - right_loc = cutoffs[index] - loc_within_bin = (loc - left_loc) / (right_loc - left_loc) - return left_rad + (right_rad - left_rad) * loc_within_bin - - return radius - - -def _compute_pathlengths( - all_branches: np.ndarray, coords: np.ndarray, is_single_point_soma: bool -) -> List[np.ndarray]: - """ - Args: - coords: Has shape (num_traced_points, 5), where `5` is (type, x, y, z, radius). - """ - branch_pathlengths = [] - for b in all_branches: - coords_in_branch = coords[np.asarray(b) - 1] - if len(coords_in_branch) > 1: - # If the branch starts at a different neurite (e.g. the soma) then NEURON - # ignores the distance from that initial point. To reproduce, use the - # following SWC dummy file and read it in NEURON (and Jaxley): - # 1 1 0.00 0.0 0.0 6.0 -1 - # 2 2 9.00 0.0 0.0 0.5 1 - # 3 2 10.0 0.0 0.0 0.3 2 - types = coords_in_branch[:, 0] - if int(types[0]) == 1 and int(types[1]) != 1 and is_single_point_soma: - coords_in_branch[0] = coords_in_branch[1] - - # Compute distances between all traced points in a branch. - point_diffs = np.diff(coords_in_branch, axis=0) - dists = np.sqrt( - point_diffs[:, 1] ** 2 + point_diffs[:, 2] ** 2 + point_diffs[:, 3] ** 2 - ) - else: - # Jaxley uses length and radius for every compartment and assumes the - # surface area to be 2*pi*r*length. For branches consisting of a single - # traced point we assume for them to have area 4*pi*r*r. Therefore, we have - # to set length = 2*r. - radius = coords_in_branch[0, 4] # txyzr -> 4 is radius. - dists = np.asarray([2 * radius]) - branch_pathlengths.append(dists) - return branch_pathlengths - - -def build_radiuses_from_xyzr( - radius_fns: List[Callable], - branch_indices: List[int], - min_radius: Optional[float], - nseg: int, -) -> jnp.ndarray: - """Return the radiuses of branches given SWC file xyzr. - - Returns an array of shape `(num_branches, nseg)`. - - Args: - radius_fns: Functions which, given compartment locations return the radius. - branch_indices: The indices of the branches for which to return the radiuses. - min_radius: If passed, the radiuses are clipped to be at least as large. - nseg: The number of compartments that every branch is discretized into. - """ - # Compartment locations are at the center of the internal nodes. - non_split = 1 / nseg - range_ = np.linspace(non_split / 2, 1 - non_split / 2, nseg) - - # Build radiuses. - radiuses = np.asarray([radius_fns[b](range_) for b in branch_indices]) - radiuses_each = radiuses.ravel(order="C") - if min_radius is None: - assert np.all( - radiuses_each > 0.0 - ), "Radius 0.0 in SWC file. Set `read_swc(..., min_radius=...)`." - else: - radiuses_each[radiuses_each < min_radius] = min_radius - - return radiuses_each diff --git a/mkdocs/docs/index.md b/mkdocs/docs/index.md index ae59df38..bf51aa72 100644 --- a/mkdocs/docs/index.md +++ b/mkdocs/docs/index.md @@ -3,6 +3,9 @@

+> :warning: **The official documentation for Jaxley has moved to [jaxley.readthedocs.io](https://jaxley.readthedocs.io/en/latest/)**. +> The website you are currently on will be taken down in the future. + `Jaxley` is a differentiable simulator for biophysical neuron models in [JAX](https://github.com/google/jax). Its key features are: - automatic differentiation, allowing gradient-based optimization of thousands of parameters diff --git a/mkdocs/docs/reference/utils.md b/mkdocs/docs/reference/utils.md index 141ccca1..f54f8da0 100644 --- a/mkdocs/docs/reference/utils.md +++ b/mkdocs/docs/reference/utils.md @@ -1,5 +1,4 @@ ::: jaxley.utils.cell_utils ::: jaxley.utils.plot_utils -::: jaxley.utils.swc ::: jaxley.utils.jax_utils ::: jaxley.utils.syn_utils \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 67d1e970..d1072768 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,6 +52,7 @@ doc = [ "sphinx-math-dollar", "myst-nb", "jupytext", + "optax", "sphinx-book-theme", ] dev = [ @@ -62,6 +63,13 @@ dev = [ "pytest", "pyright", "optax", + "jupyter", +] + +[tool.pytest.ini_options] +markers = [ + "slow: marks tests as slow (T > 10s)", + "regression: marks regression tests", ] [tool.isort] diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 00000000..77bcb2c0 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,243 @@ +# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is +# licensed under the Apache License Version 2.0, see + +import json +import os +from copy import deepcopy +from typing import Optional + +import pytest + +import jaxley as jx +from jaxley.synapses import IonotropicSynapse +from tests.test_regression import generate_regression_report, load_json + + +@pytest.fixture(scope="session") +def SimpleComp(): + """Fixture for creating or retrieving an already created compartment.""" + comps = {} + + def get_or_build_comp( + copy: bool = True, force_init: bool = False + ) -> jx.Compartment: + """Create or retrieve a compartment. + + Args: + copy: Whether to return a copy of the compartment. Default is True. + force_init: Force the init from scratch. Default is False. + + Returns: + jx.Compartment().""" + if "comp" not in comps or force_init: + comps["comp"] = jx.Compartment() + return deepcopy(comps["comp"]) if copy and not force_init else comps["comp"] + + yield get_or_build_comp + comps = {} + + +@pytest.fixture(scope="session") +def SimpleBranch(SimpleComp): + """Fixture for creating or retrieving an already created branch.""" + branches = {} + + def get_or_build_branch( + ncomp: int, copy: bool = True, force_init: bool = False + ) -> jx.Branch: + """Create or retrieve a branch. + + If a branch with the same number of compartments already exists, it is returned. + + Args: + ncomp: Number of compartments in the branch. + copy: Whether to return a copy of the branch. Default is True. + force_init: Force the init from scratch. Default is False. + + Returns: + jx.Branch().""" + if ncomp not in branches or force_init: + comp = SimpleComp(force_init=force_init) + branches[ncomp] = jx.Branch([comp] * ncomp) + return deepcopy(branches[ncomp]) if copy and not force_init else branches[ncomp] + + yield get_or_build_branch + branches = {} + + +@pytest.fixture(scope="session") +def SimpleCell(SimpleBranch): + """Fixture for creating or retrieving an already created cell.""" + cells = {} + + def get_or_build_cell( + nbranches: int, ncomp: int, copy: bool = True, force_init: bool = False + ) -> jx.Cell: + """Create or retrieve a cell. + + If a cell with the same number of branches and compartments already exists, it + is returned. The branch strcuture is assumed as [-1, 0, 0, 1, 1, 2, 2, ...]. + + Args: + nbranches: Number of branches in the cell. + ncomp: Number of compartments in each branch. + copy: Whether to return a copy of the cell. Default is True. + force_init: Force the init from scratch. Default is False. + + Returns: + jx.Cell().""" + if key := (nbranches, ncomp) not in cells or force_init: + parents = [-1] + depth = 0 + while nbranches > len(parents): + parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] + depth += 1 + parents = parents[:nbranches] + branch = SimpleBranch(ncomp=ncomp, force_init=force_init) + cells[key] = jx.Cell([branch] * nbranches, parents) + return deepcopy(cells[key]) if copy and not force_init else cells[key] + + yield get_or_build_cell + cells = {} + + +@pytest.fixture(scope="session") +def SimpleNet(SimpleCell): + """Fixture for creating or retrieving an already created network.""" + nets = {} + + def get_or_build_net( + ncells: int, + nbranches: int, + ncomp: int, + connect: bool = False, + copy: bool = True, + force_init: bool = False, + ) -> jx.Network: + """Create or retrieve a network. + + If a network with the same number of cells, branches, compartments, and + connections already exists, it is returned. + + Args: + ncells: Number of cells in the network. + nbranches: Number of branches in each cell. + ncomp: Number of compartments in each branch. + connect: Whether to connect the first two cells in the network. + copy: Whether to return a copy of the network. Default is True. + force_init: Force the init from scratch. Default is False. + + Returns: + jx.Network().""" + if key := (ncells, nbranches, ncomp, connect) not in nets or force_init: + net = jx.Network( + [SimpleCell(nbranches=nbranches, ncomp=ncomp, force_init=force_init)] + * ncells + ) + if connect: + jx.connect(net[0, 0, 0], net[1, 0, 0], IonotropicSynapse()) + nets[key] = net + return deepcopy(nets[key]) if copy and not force_init else nets[key] + + yield get_or_build_net + nets = {} + + +@pytest.fixture(scope="session") +def SimpleMorphCell(): + """Fixture for creating or retrieving an already created morpholgy.""" + + cells = {} + + def get_or_build_cell( + fname: Optional[str] = None, + ncomp: int = 1, + max_branch_len: float = 2_000.0, + copy: bool = True, + force_init: bool = False, + ) -> jx.Cell: + """Create or retrieve a cell from an SWC file. + + If a cell with the same SWC file, number of compartments, and maximum branch + length already exists, it is returned. + + Args: + fname: Path to the SWC file. + ncomp: Number of compartments in each branch. + max_branch_len: Maximum length of a branch. + copy: Whether to return a copy of the cell. Default is True. + force_init: Force the init from scratch. Default is False. + + Returns: + jx.Cell().""" + dirname = os.path.dirname(__file__) + default_fname = os.path.join(dirname, "swc_files", "morph.swc") + fname = default_fname if fname is None else fname + if key := (fname, ncomp, max_branch_len) not in cells or force_init: + cells[key] = jx.read_swc( + fname, ncomp=ncomp, max_branch_len=max_branch_len, assign_groups=True + ) + return deepcopy(cells[key]) if copy and not force_init else cells[key] + + yield get_or_build_cell + cells = {} + + +@pytest.fixture(scope="session") +def swc2jaxley(): + """Fixture for creating or retrieving an already computed params of a morphology.""" + + params = {} + + def get_or_compute_swc2jaxley_params( + fname: str = None, + max_branch_len: float = 2_000.0, + sort: bool = True, + force_init: bool = False, + ): + dirname = os.path.dirname(__file__) + default_fname = os.path.join(dirname, "swc_files", "morph.swc") + fname = default_fname if fname is None else fname + if key := (fname, max_branch_len, sort) not in params or force_init: + params[key] = jx.io.swc.swc_to_jaxley(fname, max_branch_len, sort) + return params[key] + + yield get_or_compute_swc2jaxley_params + params = {} + + +@pytest.fixture(scope="session", autouse=True) +def print_session_report(request): + """Cleanup a testing directory once we are finished.""" + NEW_BASELINE = os.environ["NEW_BASELINE"] if "NEW_BASELINE" in os.environ else 0 + + dirname = os.path.dirname(__file__) + baseline_fname = os.path.join(dirname, "regression_test_baselines.json") + results_fname = os.path.join(dirname, "regression_test_results.json") + + def update_baseline(): + if NEW_BASELINE: + results = load_json(results_fname) + with open(baseline_fname, "w") as f: + json.dump(results, f, indent=2) + os.remove(results_fname) + + def print_regression_report(): + baselines = load_json(baseline_fname) + results = load_json(results_fname) + + report = generate_regression_report(baselines, results) + # "No baselines found. Run `git checkout main;UPDATE_BASELINE=1 pytest -m regression; git checkout -`" + with open(dirname + "/regression_test_report.txt", "w") as f: + f.write(report) + + # the following allows to print the report to the console despite pytest + # capturing the output and without specifying the "-s" flag + capmanager = request.config.pluginmanager.getplugin("capturemanager") + with capmanager.global_and_fixture_disabled(): + + print("\n\n\nRegression Test Report\n----------------------\n") + print(report) + + request.addfinalizer(update_baseline) + request.addfinalizer(print_regression_report) diff --git a/tests/jaxley_identical/test_basic_modules.py b/tests/jaxley_identical/test_basic_modules.py index 8faba4b3..61d201f2 100644 --- a/tests/jaxley_identical/test_basic_modules.py +++ b/tests/jaxley_identical/test_basic_modules.py @@ -23,10 +23,11 @@ @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_compartment(voltage_solver: str): +def test_compartment(voltage_solver, SimpleComp, SimpleBranch, SimpleCell, SimpleNet): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.02, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.02, delta_t=0.025, t_max=5.0 + ) tolerance = 1e-8 voltages_081123 = jnp.asarray( @@ -48,7 +49,7 @@ def test_compartment(voltage_solver: str): ) # Test compartment. - comp = jx.Compartment() + comp = SimpleComp() comp.insert(HH()) comp.record() comp.stimulate(current) @@ -57,7 +58,7 @@ def test_compartment(voltage_solver: str): assert max_error <= tolerance, f"Compartment error is {max_error} > {tolerance}" # Test branch of a single compartment. - branch = jx.Branch() + branch = SimpleBranch(ncomp=1) branch.insert(HH()) branch.record() branch.stimulate(current) @@ -66,7 +67,7 @@ def test_compartment(voltage_solver: str): assert max_error <= tolerance, f"Branch error is {max_error} > {tolerance}" # Test cell of a single compartment. - cell = jx.Cell() + cell = SimpleCell(1, 1) cell.insert(HH()) cell.record() cell.stimulate(current) @@ -75,8 +76,7 @@ def test_compartment(voltage_solver: str): assert max_error <= tolerance, f"Cell error is {max_error} > {tolerance}" # Test net of a single compartment. - cell = jx.Cell() - net = jx.Network([cell]) + net = SimpleNet(1, 1, 1) net.insert(HH()) net.record() net.stimulate(current) @@ -86,14 +86,13 @@ def test_compartment(voltage_solver: str): @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_branch(voltage_solver: str): - nseg_per_branch = 2 +def test_branch(voltage_solver, SimpleBranch): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.02, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.02, delta_t=0.025, t_max=5.0 + ) - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(nseg_per_branch)]) + branch = SimpleBranch(2) branch.insert(HH()) branch.loc(0.0).record() branch.loc(0.0).stimulate(current) @@ -122,13 +121,13 @@ def test_branch(voltage_solver: str): assert max_error <= tolerance, f"Error is {max_error} > {tolerance}" -def test_branch_fwd_euler_uneven_radiuses(): +def test_branch_fwd_euler_uneven_radiuses(SimpleBranch): dt = 0.025 # ms - t_max = 10.0 # ms - current = jx.step_current(0.5, 1.0, 2.0, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=2.0, delta_t=0.025, t_max=10.0 + ) - comp = jx.Compartment() - branch = jx.Branch(comp, 8) + branch = SimpleBranch(8) branch.set("axial_resistivity", 500.0) rands1 = np.linspace(20, 300, 8) @@ -161,18 +160,13 @@ def test_branch_fwd_euler_uneven_radiuses(): @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_cell(voltage_solver: str): - nseg_per_branch = 2 +def test_cell(voltage_solver, SimpleCell): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.02, dt, t_max) - - depth = 2 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.02, delta_t=0.025, t_max=5.0 + ) - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(nseg_per_branch)]) - cell = jx.Cell([branch for _ in range(len(parents))], parents=parents) + cell = SimpleCell(3, 2) cell.insert(HH()) cell.branch(1).loc(0.0).record() cell.branch(1).loc(0.0).stimulate(current) @@ -201,17 +195,17 @@ def test_cell(voltage_solver: str): assert max_error <= tolerance, f"Error is {max_error} > {tolerance}" -def test_cell_unequal_compartment_number(): +def test_cell_unequal_compartment_number(SimpleBranch): """Tests a cell where every branch has a different number of compartments.""" dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.1, dt, t_max) - - comp = jx.Compartment() - branch1 = jx.Branch(comp, nseg=1) - branch2 = jx.Branch(comp, nseg=2) - branch3 = jx.Branch(comp, nseg=3) - branch4 = jx.Branch(comp, nseg=4) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) + + branch1 = SimpleBranch(ncomp=1) + branch2 = SimpleBranch(ncomp=2) + branch3 = SimpleBranch(ncomp=3) + branch4 = SimpleBranch(ncomp=4) cell = jx.Cell([branch1, branch2, branch3, branch4], parents=[-1, 0, 0, 1]) cell.set("axial_resistivity", 10_000.0) cell.insert(HH()) @@ -236,40 +230,33 @@ def test_cell_unequal_compartment_number(): @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_net(voltage_solver: str): - nseg_per_branch = 2 +def test_net(voltage_solver, SimpleNet): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.02, dt, t_max) - - depth = 2 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.02, delta_t=0.025, t_max=5.0 + ) - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(nseg_per_branch)]) - cell1 = jx.Cell([branch for _ in range(len(parents))], parents=parents) - cell2 = jx.Cell([branch for _ in range(len(parents))], parents=parents) + net = SimpleNet(2, 3, 2) - network = jx.Network([cell1, cell2]) connect( - network.cell(0).branch(0).loc(0.0), - network.cell(1).branch(0).loc(0.0), + net.cell(0).branch(0).loc(0.0), + net.cell(1).branch(0).loc(0.0), IonotropicSynapse(), ) - network.insert(HH()) + net.insert(HH()) for cell_ind in range(2): - network.cell(cell_ind).branch(1).loc(0.0).record() + net.cell(cell_ind).branch(1).loc(0.0).record() for stim_ind in range(2): - network.cell(stim_ind).branch(1).loc(0.0).stimulate(current) + net.cell(stim_ind).branch(1).loc(0.0).stimulate(current) area = 2 * pi * 10.0 * 1.0 point_process_to_dist_factor = 100_000.0 / area - network.IonotropicSynapse.set( + net.IonotropicSynapse.set( "IonotropicSynapse_gS", 0.5 / point_process_to_dist_factor ) - voltages = jx.integrate(network, delta_t=dt, voltage_solver=voltage_solver) + voltages = jx.integrate(net, delta_t=dt, voltage_solver=voltage_solver) voltages_300724 = jnp.asarray( [ @@ -308,12 +295,8 @@ def test_net(voltage_solver: str): @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_complex_net(voltage_solver: str): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) - - net = jx.Network([cell for _ in range(7)]) +def test_complex_net(voltage_solver, SimpleNet): + net = SimpleNet(7, 5, 4) net.insert(HH()) _ = np.random.seed(0) @@ -338,7 +321,9 @@ def test_complex_net(voltage_solver: str): "TestSynapse_gC", 0.24 / point_process_to_dist_factor ) - current = jx.step_current(0.5, 0.5, 0.1, 0.025, 10.0) + current = jx.step_current( + i_delay=0.5, i_dur=0.5, i_amp=0.1, delta_t=0.025, t_max=10.0 + ) for i in range(3): net.cell(i).branch(0).loc(0.0).stimulate(current) diff --git a/tests/jaxley_identical/test_grad.py b/tests/jaxley_identical/test_grad.py index 198201bc..bfd1de84 100644 --- a/tests/jaxley_identical/test_grad.py +++ b/tests/jaxley_identical/test_grad.py @@ -14,6 +14,7 @@ import jax.numpy as jnp import numpy as np +import pytest from jax import value_and_grad import jaxley as jx @@ -22,12 +23,9 @@ from jaxley.synapses import IonotropicSynapse, TestSynapse -def test_network_grad(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) - - net = jx.Network([cell for _ in range(7)]) +@pytest.mark.slow +def test_network_grad(SimpleNet): + net = SimpleNet(7, 5, 4) net.insert(HH()) _ = np.random.seed(0) @@ -53,7 +51,9 @@ def test_network_grad(): "TestSynapse_gC", 0.24 / point_process_to_dist_factor ) - current = jx.step_current(0.5, 0.5, 0.1, 0.025, 10.0) + current = jx.step_current( + i_delay=0.5, i_dur=0.5, i_amp=0.1, delta_t=0.025, t_max=10.0 + ) for i in range(3): net.cell(i).branch(0).loc(0.0).stimulate(current) diff --git a/tests/jaxley_identical/test_radius_and_length.py b/tests/jaxley_identical/test_radius_and_length.py index c68a3e5f..e81aaf1e 100644 --- a/tests/jaxley_identical/test_radius_and_length.py +++ b/tests/jaxley_identical/test_radius_and_length.py @@ -23,12 +23,13 @@ @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_radius_and_length_compartment(voltage_solver: str): +def test_radius_and_length_compartment(voltage_solver, SimpleComp): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.02, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.02, delta_t=0.025, t_max=5.0 + ) - comp = jx.Compartment() + comp = SimpleComp() np.random.seed(1) comp.set("length", 5 * np.random.rand(1)) @@ -63,14 +64,13 @@ def test_radius_and_length_compartment(voltage_solver: str): @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_radius_and_length_branch(voltage_solver: str): - nseg_per_branch = 2 +def test_radius_and_length_branch(voltage_solver, SimpleBranch): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.02, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.02, delta_t=0.025, t_max=5.0 + ) - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(nseg_per_branch)]) + branch = SimpleBranch(ncomp=2) np.random.seed(1) branch.set("length", np.flip(5 * np.random.rand(2))) @@ -105,19 +105,14 @@ def test_radius_and_length_branch(voltage_solver: str): @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_radius_and_length_cell(voltage_solver: str): - nseg_per_branch = 2 +def test_radius_and_length_cell(voltage_solver, SimpleCell): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.02, dt, t_max) - - depth = 2 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] - num_branches = len(parents) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.02, delta_t=0.025, t_max=5.0 + ) - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(nseg_per_branch)]) - cell = jx.Cell([branch for _ in range(len(parents))], parents=parents) + num_branches = 3 + cell = SimpleCell(num_branches, ncomp=2) np.random.seed(1) rands1 = 5 * np.random.rand(2 * num_branches) @@ -155,57 +150,50 @@ def test_radius_and_length_cell(voltage_solver: str): @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_radius_and_length_net(voltage_solver: str): - nseg_per_branch = 2 +def test_radius_and_length_net(voltage_solver, SimpleNet): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.02, dt, t_max) - - depth = 2 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] - num_branches = len(parents) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.02, delta_t=0.025, t_max=5.0 + ) - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(nseg_per_branch)]) - cell1 = jx.Cell([branch for _ in range(len(parents))], parents=parents) - cell2 = jx.Cell([branch for _ in range(len(parents))], parents=parents) + num_branches = 3 + net = SimpleNet(2, num_branches, 2) np.random.seed(1) rands1 = 5 * np.random.rand(2 * num_branches) rands2 = np.random.rand(2 * num_branches) for b in range(num_branches): - cell1.branch(b).set("length", np.flip(rands1[2 * b : 2 * b + 2])) - cell1.branch(b).set("radius", np.flip(rands2[2 * b : 2 * b + 2])) + net.cell(0).branch(b).set("length", np.flip(rands1[2 * b : 2 * b + 2])) + net.cell(0).branch(b).set("radius", np.flip(rands2[2 * b : 2 * b + 2])) np.random.seed(2) rands1 = 5 * np.random.rand(2 * num_branches) rands2 = np.random.rand(2 * num_branches) for b in range(num_branches): - cell2.branch(b).set("length", np.flip(rands1[2 * b : 2 * b + 2])) - cell2.branch(b).set("radius", np.flip(rands2[2 * b : 2 * b + 2])) + net.cell(1).branch(b).set("length", np.flip(rands1[2 * b : 2 * b + 2])) + net.cell(1).branch(b).set("radius", np.flip(rands2[2 * b : 2 * b + 2])) - network = jx.Network([cell1, cell2]) connect( - network.cell(0).branch(0).loc(0.0), - network.cell(1).branch(0).loc(0.0), + net.cell(0).branch(0).loc(0.0), + net.cell(1).branch(0).loc(0.0), IonotropicSynapse(), ) - network.insert(HH()) + net.insert(HH()) # first cell, 0-eth branch, 0-st compartment because loc=0.0 - radius_post = network[1, 0, 0].nodes["radius"].item() - lenght_post = network[1, 0, 0].nodes["length"].item() + radius_post = net[1, 0, 0].nodes["radius"].item() + lenght_post = net[1, 0, 0].nodes["length"].item() area = 2 * pi * lenght_post * radius_post point_process_to_dist_factor = 100_000.0 / area - network.set("IonotropicSynapse_gS", 0.5 / point_process_to_dist_factor) + net.set("IonotropicSynapse_gS", 0.5 / point_process_to_dist_factor) for cell_ind in range(2): - network.cell(cell_ind).branch(1).loc(0.0).record() + net.cell(cell_ind).branch(1).loc(0.0).record() for stim_ind in range(2): - network.cell(stim_ind).branch(1).loc(0.0).stimulate(current) + net.cell(stim_ind).branch(1).loc(0.0).stimulate(current) - voltages = jx.integrate(network, delta_t=dt, voltage_solver=voltage_solver) + voltages = jx.integrate(net, delta_t=dt, voltage_solver=voltage_solver) voltages_300724 = jnp.asarray( [ diff --git a/tests/jaxley_identical/test_swc.py b/tests/jaxley_identical/test_swc.py index b2773a3b..fa50c9a6 100644 --- a/tests/jaxley_identical/test_swc.py +++ b/tests/jaxley_identical/test_swc.py @@ -21,16 +21,18 @@ from jaxley.synapses import IonotropicSynapse +@pytest.mark.slow @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) @pytest.mark.parametrize("file", ["morph_single_point_soma.swc", "morph.swc"]) -def test_swc_cell(voltage_solver: str, file: str): +def test_swc_cell(voltage_solver: str, file: str, SimpleMorphCell): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.2, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.2, delta_t=0.025, t_max=5.0 + ) dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "../swc_files", file) - cell = jx.read_swc(fname, nseg=2, max_branch_len=300.0, assign_groups=True) + cell = SimpleMorphCell(fname, ncomp=2, max_branch_len=300.0) _ = cell.soma # Only to test whether the `soma` group was created. cell.insert(HH()) cell.branch(1).loc(0.0).record() @@ -81,16 +83,18 @@ def test_swc_cell(voltage_solver: str, file: str): assert max_error <= tolerance, f"Error is {max_error} > {tolerance}" +@pytest.mark.slow @pytest.mark.parametrize("voltage_solver", ["jaxley.stone", "jax.sparse"]) -def test_swc_net(voltage_solver: str): +def test_swc_net(voltage_solver: str, SimpleMorphCell): dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.2, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.2, delta_t=0.025, t_max=5.0 + ) dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "../swc_files/morph.swc") - cell1 = jx.read_swc(fname, nseg=2, max_branch_len=300.0) - cell2 = jx.read_swc(fname, nseg=2, max_branch_len=300.0) + cell1 = SimpleMorphCell(fname, ncomp=2, max_branch_len=300.0) + cell2 = SimpleMorphCell(fname, ncomp=2, max_branch_len=300.0) network = jx.Network([cell1, cell2]) connect( @@ -100,7 +104,7 @@ def test_swc_net(voltage_solver: str): ) network.insert(HH()) - # first cell, 0-eth branch, 1-st compartment because loc=0.0 -> comp = nseg-1 = 1 + # first cell, 0-eth branch, 1-st compartment because loc=0.0 -> comp = ncomp-1 = 1 radius_post = network[1, 0, 1].nodes["radius"].item() lenght_post = network[1, 0, 1].nodes["length"].item() area = 2 * pi * lenght_post * radius_post diff --git a/tests/jaxley_vs_neuron/test_branch.py b/tests/jaxley_vs_neuron/test_branch.py index d818cc58..c829b718 100644 --- a/tests/jaxley_vs_neuron/test_branch.py +++ b/tests/jaxley_vs_neuron/test_branch.py @@ -43,13 +43,13 @@ def test_similarity(solver): def _run_jaxley(i_delay, i_dur, i_amp, dt, t_max, solver): - nseg_per_branch = 8 + ncomp_per_branch = 8 comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(nseg_per_branch)]) + branch = jx.Branch([comp for _ in range(ncomp_per_branch)]) branch.insert(HH()) - radiuses = np.linspace(3.0, 15.0, nseg_per_branch) - for i, loc in enumerate(np.linspace(0, 1, nseg_per_branch)): + radiuses = np.linspace(3.0, 15.0, ncomp_per_branch) + for i, loc in enumerate(np.linspace(0, 1, ncomp_per_branch)): branch.loc(loc).set("radius", radiuses[i]) branch.set("length", 10.0) @@ -64,7 +64,8 @@ def _run_jaxley(i_delay, i_dur, i_amp, dt, t_max, solver): branch.set("HH_n", 0.3644787002343737) branch.set("v", -62.0) - branch.loc(0.0).stimulate(jx.step_current(i_delay, i_dur, i_amp, dt, t_max)) + current = jx.step_current(i_delay, i_dur, i_amp, dt, t_max) + branch.loc(0.0).stimulate(current) branch.loc(0.0).record() branch.loc(1.0).record() @@ -81,19 +82,19 @@ def _run_neuron(i_delay, i_dur, i_amp, dt, t_max, solver): else: raise ValueError - nseg_per_branch = 8 + ncomp_per_branch = 8 h.dt = dt for sec in h.allsec(): h.delete_section(sec=sec) branch = h.Section() - branch.nseg = nseg_per_branch + branch.nseg = ncomp_per_branch branch.Ra = 1_000.0 - branch.L = 10.0 * nseg_per_branch + branch.L = 10.0 * ncomp_per_branch branch.cm = 5.0 - radiuses = np.linspace(3.0, 15.0, nseg_per_branch) + radiuses = np.linspace(3.0, 15.0, ncomp_per_branch) for i, comp in enumerate(branch): comp.diam = 2 * radiuses[i] @@ -177,9 +178,9 @@ def test_similarity_complex(solver): def _jaxley_complex(i_delay, i_dur, i_amp, dt, t_max, diams, capacitances, solver): - nseg = 16 + ncomp = 16 comp = jx.Compartment() - branch = jx.Branch(comp, nseg) + branch = jx.Branch(comp, ncomp) branch.insert(HH()) @@ -201,13 +202,14 @@ def _jaxley_complex(i_delay, i_dur, i_amp, dt, t_max, diams, capacitances, solve branch.loc(loc).set("axial_resistivity", 800.0) counter = 0 - for loc in np.linspace(0, 1, nseg): + for loc in np.linspace(0, 1, ncomp): branch.loc(loc).set("radius", diams[counter] / 2) branch.loc(loc).set("capacitance", capacitances[counter]) counter += 1 - # 0.02 is fine here because nseg=8 for NEURON, but nseg=16 for jaxley. - branch.loc(0.02).stimulate(jx.step_current(i_delay, i_dur, i_amp, dt, t_max)) + # 0.02 is fine here because ncomp=8 for NEURON, but ncomp=16 for jaxley. + current = jx.step_current(i_delay, i_dur, i_amp, dt, t_max) + branch.loc(0.02).stimulate(current) branch.loc(0.02).record() branch.loc(0.52).record() branch.loc(0.98).record() @@ -255,13 +257,13 @@ def _neuron_complex(i_delay, i_dur, i_amp, dt, t_max, diams, capacitances, solve seg.cm = capacitances[counter] counter += 1 - # 0.05 is fine here because nseg=8, but nseg=16 for jaxley. + # 0.05 is fine here because ncomp=8, but ncomp=16 for jaxley. stim = h.IClamp(branch1(0.05)) stim.delay = i_delay stim.dur = i_dur stim.amp = i_amp - # 0.05 is fine here because nseg=8, but nseg=16 for jaxley. + # 0.05 is fine here because ncomp=8, but ncomp=16 for jaxley. voltage_recs = {} v = h.Vector() v.record(branch1(0.05)._ref_v) diff --git a/tests/jaxley_vs_neuron/test_cell.py b/tests/jaxley_vs_neuron/test_cell.py index 06260a43..00f840fc 100644 --- a/tests/jaxley_vs_neuron/test_cell.py +++ b/tests/jaxley_vs_neuron/test_cell.py @@ -40,9 +40,9 @@ def test_similarity(solver): def _run_jaxley(i_delay, i_dur, i_amp, dt, t_max, solver): - nseg_per_branch = 8 + ncomp_per_branch = 8 comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) + branch = jx.Branch(comp, ncomp_per_branch) cell = jx.Cell(branch, parents=[-1, 0, 0]) cell.insert(HH()) @@ -59,7 +59,8 @@ def _run_jaxley(i_delay, i_dur, i_amp, dt, t_max, solver): cell.set("HH_n", 0.3644787002343737) cell.set("v", -62.0) - cell.branch(0).loc(0.0).stimulate(jx.step_current(i_delay, i_dur, i_amp, dt, t_max)) + current = jx.step_current(i_delay, i_dur, i_amp, dt, t_max) + cell.branch(0).loc(0.0).stimulate(current) cell.branch(0).loc(0.0).record() cell.branch(1).loc(1.0).record() cell.branch(2).loc(1.0).record() @@ -76,7 +77,7 @@ def _run_neuron(i_delay, i_dur, i_amp, dt, t_max, solver): else: raise ValueError - nseg_per_branch = 8 + ncomp_per_branch = 8 h.dt = dt for sec in h.allsec(): @@ -90,10 +91,10 @@ def _run_neuron(i_delay, i_dur, i_amp, dt, t_max, solver): branch3.connect(branch1, 1, 0) for sec in h.allsec(): - sec.nseg = nseg_per_branch + sec.nseg = ncomp_per_branch sec.Ra = 1_000.0 - sec.L = 10.0 * nseg_per_branch + sec.L = 10.0 * ncomp_per_branch sec.diam = 2 * 5.0 sec.cm = 7.0 @@ -151,10 +152,10 @@ def test_similarity_unequal_number_of_compartments(): def _run_jaxley_unequal_ncomp(i_delay, i_dur, i_amp, dt, t_max): comp = jx.Compartment() - branch1 = jx.Branch(comp, nseg=1) - branch2 = jx.Branch(comp, nseg=2) - branch3 = jx.Branch(comp, nseg=3) - branch4 = jx.Branch(comp, nseg=4) + branch1 = jx.Branch(comp, ncomp=1) + branch2 = jx.Branch(comp, ncomp=2) + branch3 = jx.Branch(comp, ncomp=3) + branch4 = jx.Branch(comp, ncomp=4) cell = jx.Cell([branch1, branch2, branch3, branch4], parents=[-1, 0, 0, 1]) cell.set("axial_resistivity", 10_000.0) cell.insert(HH()) @@ -200,12 +201,12 @@ def _run_neuron_unequal_ncomp(i_delay, i_dur, i_amp, dt, t_max): branch3.connect(branch1, 1, 0) branch4.connect(branch2, 1, 0) - nsegs = [1, 2, 3, 4] + ncomps = [1, 2, 3, 4] for i, sec in enumerate(h.allsec()): - sec.nseg = nsegs[i] + sec.nseg = ncomps[i] sec.Ra = 1_000.0 - sec.L = 20.0 * nsegs[i] + sec.L = 20.0 * ncomps[i] sec.diam = 2 * 5.0 sec.insert("hh") diff --git a/tests/jaxley_vs_neuron/test_comp.py b/tests/jaxley_vs_neuron/test_comp.py index d895af93..939bdad1 100644 --- a/tests/jaxley_vs_neuron/test_comp.py +++ b/tests/jaxley_vs_neuron/test_comp.py @@ -53,7 +53,8 @@ def _run_jaxley(i_delay, i_dur, i_amp, dt, t_max): comp.set("v", -62.0) comp.set("capacitance", 5.0) - comp.stimulate(jx.step_current(i_delay, i_dur, i_amp, dt, t_max)) + current = jx.step_current(i_delay, i_dur, i_amp, dt, t_max) + comp.stimulate(current) comp.record() voltages = jx.integrate(comp, delta_t=dt) diff --git a/tests/regression_test_baselines.json b/tests/regression_test_baselines.json new file mode 100644 index 00000000..03c10dee --- /dev/null +++ b/tests/regression_test_baselines.json @@ -0,0 +1,92 @@ +{ + "ec3a4fad11d2bfb1bc5f8f10529cb06f2ff9919b377e9c0a3419c7f7f237f06e": { + "test_name": "test_runtime", + "input_kwargs": { + "num_cells": 1, + "artificial": false, + "connect": false, + "connection_prob": 0.0, + "voltage_solver": "jaxley.stone" + }, + "runtimes": { + "build_time": 0.5469210942586263, + "compile_time": 18.876636425654095, + "run_time": 2.8356381257375083 + } + }, + "128cfe30d4ffb9c1abd9dc0fa25b0e86940437b3eb1d46584e21f2c780ed78e8": { + "test_name": "test_runtime", + "input_kwargs": { + "num_cells": 1, + "artificial": false, + "connect": false, + "connection_prob": 0.0, + "voltage_solver": "jax.sparse" + }, + "runtimes": { + "build_time": 0.3215004603068034, + "compile_time": 3.136414368947347, + "run_time": 2.462473233540853 + } + }, + "45cb5fa937517154a8d7bd2ac6d4542ff66c7cd3f5199976706ae44134eec301": { + "test_name": "test_runtime", + "input_kwargs": { + "num_cells": 10, + "artificial": false, + "connect": true, + "connection_prob": 0.1, + "voltage_solver": "jaxley.stone" + }, + "runtimes": { + "build_time": 1.6072161197662354, + "compile_time": 29.36460558573405, + "run_time": 18.947569131851196 + } + }, + "872ba2d409d18daf5e0e947953385c3d0967087ed122f72ba01990397429318e": { + "test_name": "test_runtime", + "input_kwargs": { + "num_cells": 10, + "artificial": false, + "connect": true, + "connection_prob": 0.1, + "voltage_solver": "jax.sparse" + }, + "runtimes": { + "build_time": 1.1171472867329915, + "compile_time": 26.5324444770813, + "run_time": 25.092686971028645 + } + }, + "da2f14fe319cf40d2ec65fdde6f3e0c997ef803e637d1ae7d2f2846c2369dbb2": { + "test_name": "test_runtime", + "input_kwargs": { + "num_cells": 1000, + "artificial": true, + "connect": true, + "connection_prob": 0.001, + "voltage_solver": "jaxley.stone" + }, + "runtimes": { + "build_time": 108.81107568740845, + "compile_time": 45.42118573188782, + "run_time": 41.27101055781046 + } + }, + "4a250131b8b31132e19d9f82ececa4d2dc26b0678326089f8a2c9de3696418fc": { + "test_name": "test_runtime", + "input_kwargs": { + "num_cells": 1000, + "artificial": true, + "connect": true, + "connection_prob": 0.001, + "voltage_solver": "jax.sparse" + }, + "runtimes": { + "build_time": 105.97441498438518, + "compile_time": 60.26486460367838, + "run_time": 58.21769714355469 + } + } +} \ No newline at end of file diff --git a/tests/test_api_equivalence.py b/tests/test_api_equivalence.py index 85207b93..1fbbfcd7 100644 --- a/tests/test_api_equivalence.py +++ b/tests/test_api_equivalence.py @@ -8,6 +8,7 @@ import jax.numpy as jnp import numpy as np +import pytest import jaxley as jx from jaxley.channels import HH @@ -16,9 +17,9 @@ from jaxley.synapses import IonotropicSynapse -def test_api_equivalence_morphology(): +def test_api_equivalence_morphology(SimpleComp): """Test the API for how one can build morphologies from scratch.""" - nseg_per_branch = 2 + ncomp_per_branch = 2 depth = 2 dt = 0.025 @@ -26,18 +27,20 @@ def test_api_equivalence_morphology(): parents = jnp.asarray(parents) num_branches = len(parents) - comp = jx.Compartment() + comp = SimpleComp() - branch1 = jx.Branch([comp for _ in range(nseg_per_branch)]) + branch1 = jx.Branch([comp for _ in range(ncomp_per_branch)]) cell1 = jx.Cell([branch1 for _ in range(num_branches)], parents=parents) - branch2 = jx.Branch(comp, nseg=nseg_per_branch) + branch2 = jx.Branch(comp, ncomp=ncomp_per_branch) cell2 = jx.Cell(branch2, parents=parents) cell1.branch(2).loc(0.4).record() cell2.branch(2).loc(0.4).record() - current = jx.step_current(0.5, 1.0, 1.0, dt, 3.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) cell1.branch(1).loc(1.0).stimulate(current) cell2.branch(1).loc(1.0).stimulate(current) @@ -48,11 +51,13 @@ def test_api_equivalence_morphology(): ), "Voltages do not match between morphology APIs." -def test_solver_backends_comp(): +def test_solver_backends_comp(SimpleComp): """Test whether ways of adding synapses are equivalent.""" - comp = jx.Compartment() + comp = SimpleComp() - current = jx.step_current(0.5, 1.0, 0.5, 0.025, 5.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) comp.stimulate(current) comp.record() @@ -64,12 +69,13 @@ def test_solver_backends_comp(): assert max_error < 1e-8, f"{message} thomas/stone. Error={max_error}" -def test_solver_backends_branch(): +def test_solver_backends_branch(SimpleBranch): """Test whether ways of adding synapses are equivalent.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) + branch = SimpleBranch(4) - current = jx.step_current(0.5, 1.0, 0.5, 0.025, 5.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) branch.loc(0.0).stimulate(current) branch.loc(0.5).record() @@ -81,16 +87,17 @@ def test_solver_backends_branch(): assert max_error < 1e-8, f"{message} thomas/stone. Error={max_error}" -def test_solver_backends_cell(): +@pytest.mark.slow +def test_solver_backends_cell(SimpleCell): """Test whether ways of adding synapses are equivalent.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) + cell = SimpleCell(4, 4) - current = jx.step_current(0.5, 1.0, 0.5, 0.025, 5.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) cell.branch(0).loc(0.0).stimulate(current) cell.branch(0).loc(0.5).record() - cell.branch(4).loc(0.5).record() + cell.branch(3).loc(0.5).record() voltages_jx_thomas = jx.integrate(cell, voltage_solver="jaxley.thomas") voltages_jx_stone = jx.integrate(cell, voltage_solver="jaxley.stone") @@ -100,29 +107,27 @@ def test_solver_backends_cell(): assert max_error < 1e-8, f"{message} thomas/stone. Error={max_error}" -def test_solver_backends_net(): +def test_solver_backends_net(SimpleNet): """Test whether ways of adding synapses are equivalent.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell1 = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) - cell2 = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) + net = SimpleNet(2, 4, 4) - net = jx.Network([cell1, cell2]) connect( net.cell(0).branch(0).loc(1.0), - net.cell(1).branch(4).loc(1.0), + net.cell(1).branch(3).loc(1.0), IonotropicSynapse(), ) connect( net.cell(1).branch(1).loc(0.8), - net.cell(0).branch(4).loc(0.1), + net.cell(0).branch(3).loc(0.1), IonotropicSynapse(), ) - current = jx.step_current(0.5, 1.0, 0.5, 0.025, 5.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) net.cell(0).branch(0).loc(0.0).stimulate(current) net.cell(0).branch(0).loc(0.5).record() - net.cell(1).branch(4).loc(0.5).record() + net.cell(1).branch(3).loc(0.5).record() voltages_jx_thomas = jx.integrate(net, voltage_solver="jaxley.thomas") voltages_jx_stone = jx.integrate(net, voltage_solver="jaxley.stone") @@ -132,39 +137,37 @@ def test_solver_backends_net(): assert max_error < 1e-8, f"{message} thomas/stone. Error={max_error}" -def test_api_equivalence_synapses(): +def test_api_equivalence_synapses(SimpleNet): """Test whether ways of adding synapses are equivalent.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell1 = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) - cell2 = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) + net1 = SimpleNet(2, 4, 4) - net1 = jx.Network([cell1, cell2]) connect( net1.cell(0).branch(0).loc(1.0), - net1.cell(1).branch(4).loc(1.0), + net1.cell(1).branch(3).loc(1.0), IonotropicSynapse(), ) connect( net1.cell(1).branch(1).loc(0.8), - net1.cell(0).branch(4).loc(0.1), + net1.cell(0).branch(3).loc(0.1), IonotropicSynapse(), ) - net2 = jx.Network([cell1, cell2]) + net2 = SimpleNet(2, 4, 4) pre = net2.cell(0).branch(0).loc(1.0) - post = net2.cell(1).branch(4).loc(1.0) + post = net2.cell(1).branch(3).loc(1.0) connect(pre, post, IonotropicSynapse()) pre = net2.cell(1).branch(1).loc(0.8) - post = net2.cell(0).branch(4).loc(0.1) + post = net2.cell(0).branch(3).loc(0.1) connect(pre, post, IonotropicSynapse()) for net in [net1, net2]: - current = jx.step_current(0.5, 1.0, 0.5, 0.025, 5.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) net.cell(0).branch(0).loc(0.0).stimulate(current) net.cell(0).branch(0).loc(0.5).record() - net.cell(1).branch(4).loc(0.5).record() + net.cell(1).branch(3).loc(0.5).record() voltages1 = jx.integrate(net1) voltages2 = jx.integrate(net2) @@ -174,10 +177,8 @@ def test_api_equivalence_synapses(): ), "Voltages do not match between synapse APIs." -def test_api_equivalence_continued_simulation(): - comp = jx.Compartment() - branch = jx.Branch(comp, 2) - cell = jx.Cell(branch, parents=[-1, 0, 0]) +def test_api_equivalence_continued_simulation(SimpleCell): + cell = SimpleCell(3, 2) cell.insert(HH()) cell[0, 1].record() @@ -189,18 +190,18 @@ def test_api_equivalence_continued_simulation(): assert np.max(np.abs(v1 - v2)) < 1e-8 -def test_api_equivalence_network_matches_cell(): +def test_api_equivalence_network_matches_cell(SimpleBranch): """Test whether a network with w=0 synapses equals the individual cells. This runs an unequal number of compartments per branch.""" dt = 0.025 # ms - t_max = 5.0 # ms - current = jx.step_current(0.5, 1.0, 0.1, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) - comp = jx.Compartment() - branch1 = jx.Branch(comp, nseg=1) - branch2 = jx.Branch(comp, nseg=2) - branch3 = jx.Branch(comp, nseg=3) + branch1 = SimpleBranch(ncomp=1) + branch2 = SimpleBranch(ncomp=2) + branch3 = SimpleBranch(ncomp=3) cell1 = jx.Cell([branch1, branch2, branch3], parents=[-1, 0, 0]) cell2 = jx.Cell([branch1, branch2], parents=[-1, 0]) cell1.insert(HH()) @@ -232,10 +233,8 @@ def test_api_equivalence_network_matches_cell(): assert max_error < 1e-8, f"Error is {max_error}" -def test_api_init_step_to_integrate(): - comp = jx.Compartment() - branch = jx.Branch(comp, 2) - cell = jx.Cell(branch, parents=[-1, 0, 0]) +def test_api_init_step_to_integrate(SimpleCell): + cell = SimpleCell(3, 2) cell.insert(HH()) cell[0, 1].record() diff --git a/tests/test_cell_matches_branch.py b/tests/test_cell_matches_branch.py index 4b43d4ad..d87d8ab8 100644 --- a/tests/test_cell_matches_branch.py +++ b/tests/test_cell_matches_branch.py @@ -9,24 +9,21 @@ import jax.numpy as jnp import numpy as np +import pytest from jax import jit, value_and_grad import jaxley as jx from jaxley.channels import HH -def _run_long_branch(dt, t_max): - nseg_per_branch = 8 - - comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) +def _run_long_branch(dt, t_max, current, branch): branch.insert(HH()) branch.loc("all").make_trainable("radius", 1.0) params = branch.get_parameters() branch.loc(0.0).record() - branch.loc(0.0).stimulate(jx.step_current(0.5, 5.0, 0.1, dt, t_max)) + branch.loc(0.0).stimulate(current) def loss(params): s = jx.integrate(branch, params=params) @@ -38,20 +35,14 @@ def loss(params): return l, g -def _run_short_branches(dt, t_max): - nseg_per_branch = 4 - parents = jnp.asarray([-1, 0]) - - comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) - cell = jx.Cell(branch, parents=parents) +def _run_short_branches(dt, t_max, current, cell): cell.insert(HH()) cell.branch("all").loc("all").make_trainable("radius", 1.0) params = cell.get_parameters() cell.branch(0).loc(0.0).record() - cell.branch(0).loc(0.0).stimulate(jx.step_current(0.5, 5.0, 0.1, dt, t_max)) + cell.branch(0).loc(0.0).stimulate(current) def loss(params): s = jx.integrate(cell, params=params) @@ -63,12 +54,16 @@ def loss(params): return l, g -def test_equivalence(): +@pytest.mark.slow +def test_equivalence(SimpleBranch, SimpleCell): """Test whether a single long branch matches a cell of two shorter branches.""" dt = 0.025 t_max = 5.0 # ms - l1, g1 = _run_long_branch(dt, t_max) - l2, g2 = _run_short_branches(dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) + l1, g1 = _run_long_branch(dt, t_max, current, SimpleBranch(8)) + l2, g2 = _run_short_branches(dt, t_max, current, SimpleCell(2, 4)) assert np.allclose(l1, l2), "Losses do not match." diff --git a/tests/test_channels.py b/tests/test_channels.py index 41024040..4063fd3e 100644 --- a/tests/test_channels.py +++ b/tests/test_channels.py @@ -152,7 +152,7 @@ def test_integration_with_renamed_channels(): standard_hh = HH() comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) + branch = jx.Branch(comp, ncomp=4) branch.loc(0.0).insert(standard_hh) branch.insert(neuron_hh) @@ -164,15 +164,14 @@ def test_integration_with_renamed_channels(): assert np.invert(np.any(np.isnan(v))) -def test_init_states(): +@pytest.mark.slow +def test_init_states(SimpleCell): """Functional test for `init_states()`. Checks whether, if everything is initialized in its steady state, the voltage after 10ms is almost exactly the same as after 0ms. """ - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, [-1, 0]) + cell = SimpleCell(2, 4) cell.branch(0).loc(0.0).record() cell.branch(0).insert(Na()) @@ -257,7 +256,7 @@ def m_gate(v, cai, q10): return m_inf, tau_m -def test_init_states_complex_channel(): +def test_init_states_complex_channel(SimpleCell): """Test for `init_states()` with a more complicated channel model. The channel model used for this test uses the `states` in `init_state` and it also @@ -265,9 +264,7 @@ def test_init_states_complex_channel(): an issue I had with Jaxley in v0.2.0 (fixed in v0.2.1). """ ## Create cell - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=1) - cell = jx.Cell(branch, parents=[-1, 0, 0]) + cell = SimpleCell(3, 1) # CA channels. cell.branch([0, 1]).insert(CaNernstReversal()) @@ -276,14 +273,16 @@ def test_init_states_complex_channel(): cell.init_states() - current = jx.step_current(1.0, 1.0, 0.1, 0.025, 3.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) cell.branch(2).comp(0).stimulate(current) cell.branch(2).comp(0).record() voltages = jx.integrate(cell) assert np.invert(np.any(np.isnan(voltages))), "NaN voltage found" -def test_multiple_channel_currents(): +def test_multiple_channel_currents(SimpleCell): """Test whether all channels can""" class User(Channel): @@ -333,11 +332,11 @@ def compute_current(self, states, v, params): return 0.01 * jnp.ones_like(v) dt = 0.025 # ms - t_max = 10.0 # ms - comp = jx.Compartment() - branch = jx.Branch(comp, 1) - cell = jx.Cell(branch, parents=[-1]) - cell.branch(0).loc(0.0).stimulate(jx.step_current(1.0, 2.0, 0.1, dt, t_max)) + t_max = 5.0 # ms + cell = SimpleCell(1, 1) + cell.branch(0).loc(0.0).stimulate( + jx.step_current(i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0) + ) cell.insert(User()) cell.insert(Dummy1()) @@ -349,3 +348,63 @@ def compute_current(self, states, v, params): num_channels = 2 target = (t_max // dt + 2) * 0.001 * 0.01 * num_channels assert np.abs(target - s[0, -1]) < 1e-8 + + +def test_delete_channel(SimpleBranch): + # test complete removal of a channel from a module + branch1 = SimpleBranch(ncomp=3) + branch1.comp(0).insert(K()) + branch1.delete_channel(K()) + + branch2 = SimpleBranch(ncomp=3) + branch2.comp(0).insert(K()) + branch2.comp(0).delete_channel(K()) + + branch3 = SimpleBranch(ncomp=3) + branch3.insert(K()) + branch3.delete_channel(K()) + + def channel_present(view, channel, partial=False): + states_and_params = list(channel.channel_states.keys()) + list( + channel.channel_params.keys() + ) + # none of the states or params should be in nodes + cols = view.nodes.columns.to_list() + channel_cols = [ + col + for col in cols + if col.startswith(channel._name) and col != channel._name + ] + diff = set(channel_cols).difference(set(states_and_params)) + has_params_or_states = len(diff) > 0 + has_channel_col = channel._name in view.nodes.columns + has_channel = channel._name in [c._name for c in view.channels] + has_mem_current = channel.current_name in view.membrane_current_names + if partial: + all_nans = ( + not view.nodes[channel_cols].isna().all().all() + & ~view.nodes[channel._name].all() + ) + return has_channel or has_mem_current or all_nans + return has_params_or_states or has_channel_col or has_channel or has_mem_current + + for branch in [branch1, branch2, branch3]: + assert len(branch.channels) == 0 + assert not channel_present(branch, K()) + + # test correct channels are removed only in the viewed part of the module + branch4 = SimpleBranch(ncomp=3) + branch4.insert(HH()) + branch4.comp(0).insert(K()) + branch4.comp([1, 2]).insert(Leak()) + + branch4.comp(1).delete_channel(Leak()) + # assert K in comp 0 and Leak still present in branch + assert channel_present(branch4.comp(0), K()) + assert channel_present(branch4.comp(2), Leak(), partial=True) + assert not channel_present(branch4.comp(1), Leak(), partial=True) + assert channel_present(branch4, Leak()) + + branch4.comp(2).delete_channel(Leak()) + # assert no more Leak + assert not channel_present(branch4, Leak()) diff --git a/tests/test_clamp.py b/tests/test_clamp.py index 8253cd5b..dd8f74f6 100644 --- a/tests/test_clamp.py +++ b/tests/test_clamp.py @@ -18,8 +18,8 @@ from jaxley.channels import HH, CaL, CaT, Channel, K, Km, Leak, Na -def test_clamp_pointneuron(): - comp = jx.Compartment() +def test_clamp_pointneuron(SimpleComp): + comp = SimpleComp() comp.insert(HH()) comp.record() comp.clamp("v", -50.0 * jnp.ones((1000,))) @@ -28,8 +28,8 @@ def test_clamp_pointneuron(): assert np.all(v[:, 1:] == -50.0) -def test_clamp_currents(): - comp = jx.Compartment() +def test_clamp_currents(SimpleComp): + comp = SimpleComp() comp.insert(HH()) comp.record("i_HH") @@ -49,12 +49,8 @@ def test_clamp_currents(): assert np.all(np.isclose(i1, i2)) -def test_clamp_synapse(): - comp = jx.Compartment() - branch = jx.Branch(comp, 1) - cell1 = jx.Cell(branch, [-1]) - cell2 = jx.Cell(branch, [-1]) - net = jx.Network([cell1, cell2]) +def test_clamp_synapse(SimpleNet): + net = SimpleNet(2, 1, 1) connect(net[0, 0, 0], net[1, 0, 0], IonotropicSynapse()) net.record("IonotropicSynapse_s") @@ -76,9 +72,8 @@ def test_clamp_synapse(): assert np.all(np.isclose(s1, s2)) -def test_clamp_multicompartment(): - comp = jx.Compartment() - branch = jx.Branch(comp, 4) +def test_clamp_multicompartment(SimpleBranch): + branch = SimpleBranch(4) branch.insert(HH()) branch.record() branch.comp(0).clamp("v", -50.0 * jnp.ones((1000,))) @@ -92,12 +87,10 @@ def test_clamp_multicompartment(): assert np.all(np.std(v[1:, 1:], axis=1) > 0.1) -def test_clamp_and_stimulate_api(): +def test_clamp_and_stimulate_api(SimpleCell): """Ensure proper behaviour when `.clamp()` and `.stimulate()` are combined.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell1 = jx.Cell(branch, [-1]) - cell2 = jx.Cell(branch, [-1]) + cell1 = SimpleCell(1, 4) + cell2 = SimpleCell(1, 4) net = jx.Network([cell1, cell2]) net.insert(HH()) @@ -123,9 +116,9 @@ def test_clamp_and_stimulate_api(): assert np.max(np.abs(vs1 - vs2)) < 1e-8 -def test_data_clamp(): +def test_data_clamp(SimpleComp): """Data clamp with no stimuli or data_stimuli, and no t_max (should get defined by the clamp).""" - comp = jx.Compartment() + comp = SimpleComp() comp.insert(HH()) comp.record() clamp = -50.0 * jnp.ones((1000,)) @@ -144,9 +137,9 @@ def simulate(clamp): assert np.all(s[:, 1:] == -50.0) -def test_data_clamp_and_data_stimulate(): +def test_data_clamp_and_data_stimulate(SimpleComp): """In theory people shouldn't use these two together, but at least it shouldn't break.""" - comp = jx.Compartment() + comp = SimpleComp() comp.insert(HH()) comp.record() clamp = -50.0 * jnp.ones((1000,)) @@ -167,9 +160,9 @@ def simulate(clamp, stim): assert np.all(s[:, 1:] == -50.0) -def test_data_clamp_and_stimulate(): +def test_data_clamp_and_stimulate(SimpleComp): """Test that data clamp overrides a previously set stimulus.""" - comp = jx.Compartment() + comp = SimpleComp() comp.insert(HH()) comp.record() clamp = -50.0 * jnp.ones((1000,)) @@ -187,9 +180,9 @@ def simulate(clamp): assert np.all(s[:, 1:] == -50.0) -def test_data_clamp_and_clamp(): +def test_data_clamp_and_clamp(SimpleComp): """Test that data clamp can override (same loc.) and add (another loc.) to clamp.""" - comp = jx.Compartment() + comp = SimpleComp() comp.insert(HH()) comp.record() clamp1 = -50.0 * jnp.ones((1000,)) @@ -208,7 +201,7 @@ def simulate(clamp): s = jitted_simulate(clamp2) assert np.all(s[:, 1:] == -60.0) - comp2 = jx.Compartment() + comp2 = SimpleComp() comp2.insert(HH()) branch1 = jx.Branch(comp, 4) branch2 = jx.Branch(comp2, 4) diff --git a/tests/test_composability_of_modules.py b/tests/test_composability_of_modules.py index f8d2cbbb..fd302731 100644 --- a/tests/test_composability_of_modules.py +++ b/tests/test_composability_of_modules.py @@ -15,8 +15,9 @@ def test_compose_branch(): """Test inserting to comp and composing to branch equals inserting to branch.""" dt = 0.025 - t_max = 3.0 - current = jx.step_current(1.0, 1.0, 0.1, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) comp1 = jx.Compartment() comp1.insert(HH()) @@ -26,7 +27,7 @@ def test_compose_branch(): branch1.loc(0.0).stimulate(current) comp = jx.Compartment() - branch2 = jx.Branch(comp, nseg=2) + branch2 = jx.Branch(comp, ncomp=2) branch2.loc(0.0).insert(HH()) branch2.loc(0.0).record() branch2.loc(0.0).stimulate(current) @@ -39,21 +40,22 @@ def test_compose_branch(): def test_compose_cell(): """Test inserting to branch and composing to cell equals inserting to cell.""" - nseg_per_branch = 4 + ncomp_per_branch = 4 dt = 0.025 - t_max = 3.0 - current = jx.step_current(1.0, 1.0, 0.1, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) comp = jx.Compartment() - branch1 = jx.Branch(comp, nseg_per_branch) + branch1 = jx.Branch(comp, ncomp_per_branch) branch1.insert(HH()) - branch2 = jx.Branch(comp, nseg_per_branch) + branch2 = jx.Branch(comp, ncomp_per_branch) cell1 = jx.Cell([branch1, branch2], parents=[-1, 0]) cell1.branch(0).loc(0.0).record() cell1.branch(0).loc(0.0).stimulate(current) - branch = jx.Branch(comp, nseg_per_branch) + branch = jx.Branch(comp, ncomp_per_branch) cell2 = jx.Cell(branch, parents=[-1, 0]) cell2.branch(0).insert(HH()) cell2.branch(0).loc(0.0).record() @@ -67,13 +69,14 @@ def test_compose_cell(): def test_compose_net(): """Test inserting to cell and composing to net equals inserting to net.""" - nseg_per_branch = 4 + ncomp_per_branch = 4 dt = 0.025 - t_max = 3.0 - current = jx.step_current(1.0, 1.0, 0.1, dt, t_max) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) + branch = jx.Branch(comp, ncomp_per_branch) cell1 = jx.Cell(branch, parents=[-1, 0, 0]) cell1.insert(HH()) diff --git a/tests/test_connection.py b/tests/test_connection.py index 5178d24b..d8277e5a 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -21,12 +21,11 @@ from jaxley.synapses import IonotropicSynapse, TestSynapse -def test_connect(): - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(8)]) - cell = jx.Cell([branch for _ in range(4)], parents=np.array([-1, 0, 0, 0])) - net1 = jx.Network([cell for _ in range(4)]) - net2 = jx.Network([cell for _ in range(4)]) +def test_connect(SimpleBranch, SimpleCell, SimpleNet): + branch = SimpleBranch(4) + cell = SimpleCell(3, 4) + net1 = SimpleNet(4, 3, 8) + net2 = SimpleNet(4, 3, 8) cell1_net1 = net1[0, 0, 0] cell2_net1 = net1[1, 0, 0] @@ -52,17 +51,17 @@ def test_connect(): # test after all connections are made, to catch "overwritten" connections get_comps = lambda locs: [ - local_index_of_loc(loc, 0, net2.nseg_per_branch) for loc in locs + local_index_of_loc(loc, 0, net2.ncomp_per_branch) for loc in locs ] # check if all connections are made correctly first_set_edges = net2.edges.iloc[:8] nodes = net2.nodes.set_index("global_comp_index") - cols = ["global_pre_comp_index", "global_post_comp_index"] + cols = ["pre_global_comp_index", "post_global_comp_index"] comp_inds = nodes.loc[first_set_edges[cols].to_numpy().flatten()] branch_inds = comp_inds["global_branch_index"].to_numpy().reshape(-1, 2) cell_inds = comp_inds["global_cell_index"].to_numpy().reshape(-1, 2) - assert np.all(branch_inds == (4, 8)) + assert np.all(branch_inds == (3, 6)) assert (cell_inds == (1, 2)).all() assert ( get_comps(first_set_edges["pre_locs"]) @@ -85,7 +84,7 @@ def test_fully_connect(): fully_connect(net[8:12], net[12:16], TestSynapse()) assert all( - net.edges.global_post_comp_index + net.edges.post_global_comp_index == [ 108, 135, @@ -123,11 +122,8 @@ def test_fully_connect(): ) -def test_sparse_connect(): - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(4)]) - cell = jx.Cell([branch for _ in range(3)], parents=np.array([-1, 0, 0])) - net = jx.Network([cell for _ in range(4 * 4)]) +def test_sparse_connect(SimpleNet): + net = SimpleNet(4 * 4, 4, 4) _ = np.random.seed(0) for i in range(4): @@ -160,10 +156,8 @@ def test_sparse_connect(): ) -def test_connectivity_matrix_connect(): - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(8)]) - cell = jx.Cell([branch for _ in range(3)], parents=np.array([-1, 0, 0])) +def test_connectivity_matrix_connect(SimpleNet): + net = SimpleNet(4 * 4, 3, 8) _ = np.random.seed(0) n_by_n_adjacency_matrix = np.array( @@ -172,13 +166,12 @@ def test_connectivity_matrix_connect(): incides_of_connected_cells = np.stack(np.where(n_by_n_adjacency_matrix)).T incides_of_connected_cells[:, 1] += 4 - net = jx.Network([cell for _ in range(4 * 4)]) connectivity_matrix_connect( net[:4], net[4:8], TestSynapse(), n_by_n_adjacency_matrix ) assert len(net.edges.index) == 4 nodes = net.nodes.set_index("global_comp_index") - cols = ["global_pre_comp_index", "global_post_comp_index"] + cols = ["pre_global_comp_index", "post_global_comp_index"] comp_inds = nodes.loc[net.edges[cols].to_numpy().flatten()] cell_inds = comp_inds["global_cell_index"].to_numpy().reshape(-1, 2) assert np.all(cell_inds == incides_of_connected_cells) @@ -188,7 +181,7 @@ def test_connectivity_matrix_connect(): ) incides_of_connected_cells = np.stack(np.where(m_by_n_adjacency_matrix)).T - net = jx.Network([cell for _ in range(4 * 4)]) + net = SimpleNet(4 * 4, 3, 8) with pytest.raises(AssertionError): connectivity_matrix_connect( net[:4], net[:4], TestSynapse(), m_by_n_adjacency_matrix @@ -199,7 +192,7 @@ def test_connectivity_matrix_connect(): ) assert len(net.edges.index) == 5 nodes = net.nodes.set_index("global_comp_index") - cols = ["global_pre_comp_index", "global_post_comp_index"] + cols = ["pre_global_comp_index", "post_global_comp_index"] comp_inds = nodes.loc[net.edges[cols].to_numpy().flatten()] cell_inds = comp_inds["global_cell_index"].to_numpy().reshape(-1, 2) assert np.all(cell_inds == incides_of_connected_cells) diff --git a/tests/test_data_feeding.py b/tests/test_data_feeding.py index a5d86565..1f6b5cdd 100644 --- a/tests/test_data_feeding.py +++ b/tests/test_data_feeding.py @@ -14,23 +14,25 @@ from jaxley.channels import HH -def test_constant_and_data_stimulus(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=2) - cell = jx.Cell(branch, parents=[-1, 0, 0]) +def test_constant_and_data_stimulus(SimpleCell): + cell = SimpleCell(3, 2) cell.branch(0).loc(0.0).record("v") # test data_stimulate and jit works with trainable parameters see #467 cell.make_trainable("radius") - i_amp_const = 0.02 + i_amp_const = 0.1 i_amps_data = jnp.asarray([0.01, 0.005]) - current = jx.step_current(1.0, 1.0, i_amp_const, 0.025, 5.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=i_amp_const, delta_t=0.025, t_max=5.0 + ) cell.branch(1).loc(0.6).stimulate(current) def provide_data(i_amps): - current = jx.datapoint_to_step_currents(1.0, 1.0, i_amps, 0.025, 5.0) + current = jx.datapoint_to_step_currents( + i_delay=0.5, i_dur=1.0, i_amp=i_amps, delta_t=0.025, t_max=5.0 + ) data_stimuli = None data_stimuli = cell.branch(1).loc(0.6).data_stimulate(current[0], data_stimuli) data_stimuli = cell.branch(1).loc(0.6).data_stimulate(current[1], data_stimuli) @@ -45,7 +47,9 @@ def simulate(i_amps): cell.delete_stimuli() i_amp_summed = i_amp_const + jnp.sum(i_amps_data) - current_sum = jx.step_current(1.0, 1.0, i_amp_summed, 0.025, 5.0) + current_sum = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=i_amp_summed, delta_t=0.025, t_max=5.0 + ) cell.branch(1).loc(0.6).stimulate(current_sum) v_stim = jx.integrate(cell) @@ -54,16 +58,14 @@ def simulate(i_amps): assert np.max(diff) < 1e-8 -def test_data_vs_constant_stimulus(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=2) - cell = jx.Cell(branch, parents=[-1, 0, 0]) +def test_data_vs_constant_stimulus(SimpleCell): + cell = SimpleCell(3, 2) cell.branch(0).loc(0.0).record("v") i_amps_data = jnp.asarray([0.01, 0.005]) def provide_data(i_amps): - current = jx.datapoint_to_step_currents(1.0, 1.0, i_amps, 0.025, 5.0) + current = jx.datapoint_to_step_currents(0.5, 1.0, i_amps, 0.025, 5.0) data_stimuli = None data_stimuli = cell.branch(1).loc(0.6).data_stimulate(current[0], data_stimuli) data_stimuli = cell.branch(1).loc(0.6).data_stimulate(current[1], data_stimuli) @@ -78,7 +80,9 @@ def simulate(i_amps): cell.delete_stimuli() i_amp_summed = jnp.sum(i_amps_data) - current_sum = jx.step_current(1.0, 1.0, i_amp_summed, 0.025, 5.0) + current_sum = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=i_amp_summed, delta_t=0.025, t_max=5.0 + ) cell.branch(1).loc(0.6).stimulate(current_sum) v_stim = jx.integrate(cell) diff --git a/tests/test_distance.py b/tests/test_distance.py index 29f9ee37..06c58955 100644 --- a/tests/test_distance.py +++ b/tests/test_distance.py @@ -6,36 +6,30 @@ jax.config.update("jax_enable_x64", True) jax.config.update("jax_platform_name", "cpu") -import jax.numpy as jnp -import numpy as np -from jax import jit - import jaxley as jx -def test_direct_distance(): - nseg = 4 +def test_direct_distance(SimpleCell): + ncomp = 4 length = 15.0 - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) - cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) + cell = SimpleCell(5, ncomp) cell.branch("all").loc("all").set("length", length) cell.compute_xyz() dist = cell.branch(0).loc(0.0).distance(cell.branch(0).loc(1.0)) - assert dist == (nseg - 1) * length + assert dist == (ncomp - 1) * length comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) + branch = jx.Branch(comp, ncomp=ncomp) cell = jx.Cell(branch, parents=[-1, 0, 1]) cell.branch("all").loc("all").set("length", length) cell.compute_xyz() dist = cell.branch(0).loc(0.0).distance(cell.branch(2).loc(1.0)) - assert dist == (3 * nseg - 1) * length + assert dist == (3 * ncomp - 1) * length move_x = 220.0 comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) + branch = jx.Branch(comp, ncomp=ncomp) cell = jx.Cell(branch, parents=[-1, 0, 1]) cell.branch("all").loc("all").set("length", length) net = jx.Network([cell for _ in range(2)]) @@ -51,4 +45,4 @@ def test_direct_distance(): assert dist == 0.0 dist = net.cell(1).branch(0).loc(0.0).distance(net.cell(1).branch(2).loc(1.0)) - assert dist == (3 * nseg - 1) * length + assert dist == (3 * ncomp - 1) * length diff --git a/tests/test_fixtures.py b/tests/test_fixtures.py new file mode 100644 index 00000000..590451e9 --- /dev/null +++ b/tests/test_fixtures.py @@ -0,0 +1,73 @@ +# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is +# licensed under the Apache License Version 2.0, see + +import time +import warnings + +import pytest + +import jaxley as jx + +pytest.skip(allow_module_level=True) + + +def test_module_retrieval(SimpleNet): + t0 = time.time() + comp = jx.Compartment() + branch = jx.Branch([comp] * 4) + cell = jx.Cell([branch] * 4, [-1, 0, 0, 1]) + net = jx.Network([cell] * 2) + t1 = time.time() + + net = SimpleNet(2, 4, 4, force_init=False) + t2 = time.time() + + assert ((t2 - t1) - (t1 - t0)) / ( + t1 - t0 + ) < 0.1, f"Fixture is slower than manual init." + + net = SimpleNet(2, 4, 4, force_init=False) + t3 = time.time() + assert ( + t1 - t0 > t2 - t1 > t3 - t2 + ), f"T_get: from pre-existing fixture {t3 - t2}, from fixture: {(t2 - t1)}, manual: {(t1 - t0)}" + + +def test_direct_submodule_retrieval(SimpleBranch): + t1 = time.time() + branch = SimpleBranch(2, 3, force_init=False) + t2 = time.time() + branch = SimpleBranch(4, 3, force_init=False) + t3 = time.time() + assert ( + t2 - t1 > t3 - t2 + ), f"T_get: from pre-existing fixture {t3 - t2}, from fixture: {(t2 - t1)}" + + +def test_recursive_submodule_retrieval(SimpleNet): + t1 = time.time() + net = SimpleNet(3, 4, 3, force_init=False) + t2 = time.time() + net = SimpleNet(3, 4, 3, force_init=False) + t3 = time.time() + assert ( + t2 - t1 > t3 - t2 + ), f"T_get: from pre-existing fixture {t3 - t2}, from fixture: {(t2 - t1)}" + + +def test_module_reinit(SimpleComp): + t0 = time.time() + comp = jx.Compartment() + t1 = time.time() + + comp = SimpleComp(force_init=False) + + t2 = time.time() + comp = SimpleComp(force_init=False) + t3 = time.time() + net = SimpleComp(force_init=True) + t4 = time.time() + + msg = f"T_get: reinit {t4 - t3}, from fixture: {(t3 - t2)}, manual: {(t1 - t0)}" + assert t1 - t0 > t4 - t3 or abs(((t1 - t0) - (t4 - t3)) / (t1 - t0)) < 0.3, msg + assert t4 - t3 > t3 - t2, msg diff --git a/tests/test_grad.py b/tests/test_grad.py index cf1c7141..b41b5d37 100644 --- a/tests/test_grad.py +++ b/tests/test_grad.py @@ -15,17 +15,19 @@ @pytest.mark.parametrize("key", ["HH_m", "v"]) -def test_grad_against_finite_diff_initial_state(key): +def test_grad_against_finite_diff_initial_state(key, SimpleComp): def simulate(): return jnp.sum(jx.integrate(comp)) def simulate_with_params(params): return jnp.sum(jx.integrate(comp, params=params)) - comp = jx.Compartment() + comp = SimpleComp(copy=True) comp.insert(HH()) comp.record() - comp.stimulate(jx.step_current(0.1, 0.2, 0.1, 0.025, 5.0)) + comp.stimulate( + jx.step_current(i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0) + ) val = 0.2 if key == "HH_m" else -70.0 step_size = 0.01 @@ -50,17 +52,18 @@ def simulate_with_params(params): @pytest.mark.parametrize("key", ["HH_m", "v"]) -def test_branch_grad_against_finite_diff_initial_state(key): +def test_branch_grad_against_finite_diff_initial_state(key, SimpleBranch): def simulate(): return jnp.sum(jx.integrate(branch)) def simulate_with_params(params): return jnp.sum(jx.integrate(branch, params=params)) - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) + branch = SimpleBranch(4) branch.loc(0.0).record() - branch.loc(0.0).stimulate(jx.step_current(0.1, 0.2, 0.1, 0.025, 5.0)) + branch.loc(0.0).stimulate( + jx.step_current(i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0) + ) branch.loc(0.0).insert(HH()) val = 0.2 if key == "HH_m" else -70.0 diff --git a/tests/test_groups.py b/tests/test_groups.py index 00e22ee5..8fd3cfee 100644 --- a/tests/test_groups.py +++ b/tests/test_groups.py @@ -18,10 +18,8 @@ from jaxley.synapses import IonotropicSynapse -def test_subclassing_groups_cell_api(): - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, [-1, 0, 0, 1, 1]) +def test_subclassing_groups_cell_api(SimpleCell): + cell = SimpleCell(5, 4) cell.branch([0, 3, 4]).add_to_group("subtree") @@ -30,11 +28,8 @@ def test_subclassing_groups_cell_api(): cell.subtree.branch(0).comp("all").make_trainable("length") -def test_subclassing_groups_net_api(): - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, [-1]) - net = jx.Network([cell for _ in range(10)]) +def test_subclassing_groups_net_api(SimpleNet): + net = SimpleNet(10, 2, 4) net.cell([0, 3, 5]).add_to_group("excitatory") @@ -43,13 +38,10 @@ def test_subclassing_groups_net_api(): net.excitatory.cell(0).branch("all").make_trainable("length") -def test_subclassing_groups_net_set_equivalence(): +def test_subclassing_groups_net_set_equivalence(SimpleNet): """Test whether calling `.set` on subclasses group is same as on view.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, [-1, 0]) - net1 = jx.Network([cell for _ in range(10)]) - net2 = jx.Network([cell for _ in range(10)]) + net1 = SimpleNet(10, 2, 4) + net2 = SimpleNet(10, 2, 4) net1.cell([0, 3, 5]).add_to_group("excitatory") @@ -65,13 +57,10 @@ def test_subclassing_groups_net_set_equivalence(): assert all(net1.nodes == net2.nodes) -def test_subclassing_groups_net_make_trainable_equivalence(): +def test_subclassing_groups_net_make_trainable_equivalence(SimpleNet): """Test whether calling `.maek_trainable` on subclasses group is same as on view.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, [-1, 0]) - net1 = jx.Network([cell for _ in range(10)]) - net2 = jx.Network([cell for _ in range(10)]) + net1 = SimpleNet(10, 2, 4) + net2 = SimpleNet(10, 2, 4) net1.cell([0, 3, 5]).add_to_group("excitatory") @@ -101,13 +90,10 @@ def test_subclassing_groups_net_make_trainable_equivalence(): assert jnp.array_equal(inds1, inds2) -def test_fully_connect_groups_equivalence(): +def test_fully_connect_groups_equivalence(SimpleNet): """Test whether groups can be used with `fully_connect`.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, [-1, 0]) - net1 = jx.Network([cell for _ in range(10)]) - net2 = jx.Network([cell for _ in range(10)]) + net1 = SimpleNet(10, 2, 4) + net2 = SimpleNet(10, 2, 4) net1.cell([0, 3, 5]).add_to_group("layer1") net1.cell([6, 8]).add_to_group("layer2") diff --git a/tests/test_license.py b/tests/test_license.py deleted file mode 100644 index 7c7041df..00000000 --- a/tests/test_license.py +++ /dev/null @@ -1,27 +0,0 @@ -# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is -# licensed under the Apache License Version 2.0, see - -import os - -import pytest - - -def list_files(directory): - for root, dirs, files in os.walk(directory): - for file in files: - if file.endswith(".py"): - yield os.path.join(root, file) - - -license_txt = """# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is -# licensed under the Apache License Version 2.0, see """ - - -@pytest.mark.parametrize("dir", ["../jaxley", "."]) -def test_license(dir): - for i, file in enumerate(list_files(dir)): - with open(file, "r") as f: - header = f.read(len(license_txt)) - assert ( - header == license_txt - ), f"File {file} does not have the correct license header" diff --git a/tests/test_make_trainable.py b/tests/test_make_trainable.py index b0fa508f..50ece696 100644 --- a/tests/test_make_trainable.py +++ b/tests/test_make_trainable.py @@ -18,17 +18,9 @@ from jaxley.utils.cell_utils import params_to_pstate -def test_make_trainable(): +def test_make_trainable(SimpleCell): """Test make_trainable.""" - nseg_per_branch = 8 - - depth = 5 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] - parents = jnp.asarray(parents) - - comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) - cell = jx.Cell(branch, parents=parents) + cell = SimpleCell(4, 4) cell.insert(HH()) cell.branch(0).loc(0.0).set("length", 12.0) @@ -44,17 +36,9 @@ def test_make_trainable(): cell.get_parameters() -def test_delete_trainables(): +def test_delete_trainables(SimpleCell): """Test make_trainable.""" - nseg_per_branch = 8 - - depth = 5 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] - parents = jnp.asarray(parents) - - comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) - cell = jx.Cell(branch, parents=parents) + cell = SimpleCell(4, 4) cell.branch(0).loc(0.0).make_trainable("length", 12.0) assert cell.num_trainable_params == 1 @@ -66,17 +50,9 @@ def test_delete_trainables(): cell.get_parameters() -def test_make_trainable_network(): +def test_make_trainable_network(SimpleCell): """Test make_trainable.""" - nseg_per_branch = 8 - - depth = 5 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] - parents = jnp.asarray(parents) - - comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) - cell = jx.Cell(branch, parents=parents) + cell = SimpleCell(4, 4) cell.insert(HH()) net = jx.Network([cell, cell]) @@ -99,13 +75,9 @@ def test_make_trainable_network(): assert cell.num_trainable_params == 8 # `set()` is ignored. -def test_diverse_synapse_types(): +def test_diverse_synapse_types(SimpleNet): """Runs `.get_all_parameters()` and checks if the output is as expected.""" - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=1) - cell = jx.Cell(branch, parents=[-1]) - - net = jx.Network([cell for _ in range(4)]) + net = SimpleNet(4, 1, 1) for pre_ind in [0, 1]: for post_ind, syn in zip([2, 3], [IonotropicSynapse(), TestSynapse()]): pre = net.cell(pre_ind).branch(0).loc(0.0) @@ -149,9 +121,10 @@ def test_diverse_synapse_types(): assert np.all(all_parameters["IonotropicSynapse_gS"][1] == 5.5) -def test_make_all_trainable_corresponds_to_set(): +def test_make_all_trainable_corresponds_to_set(SimpleNet): # Scenario 1. - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.insert(HH()) params1 = get_params_all_trainable(net1) net2.insert(HH()) @@ -159,7 +132,8 @@ def test_make_all_trainable_corresponds_to_set(): assert np.array_equal(params1["HH_gNa"], params2["HH_gNa"], equal_nan=True) # Scenario 2. - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.cell(1).insert(HH()) params1 = get_params_all_trainable(net1) net2.cell(1).insert(HH()) @@ -167,7 +141,8 @@ def test_make_all_trainable_corresponds_to_set(): assert np.array_equal(params1["HH_gNa"], params2["HH_gNa"], equal_nan=True) # Scenario 3. - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.cell(1).branch(0).insert(HH()) params1 = get_params_all_trainable(net1) net2.cell(1).branch(0).insert(HH()) @@ -175,7 +150,8 @@ def test_make_all_trainable_corresponds_to_set(): assert np.array_equal(params1["HH_gNa"], params2["HH_gNa"], equal_nan=True) # Scenario 4. - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.cell(1).branch(0).loc(0.4).insert(HH()) params1 = get_params_all_trainable(net1) net2.cell(1).branch(0).loc(0.4).insert(HH()) @@ -183,9 +159,10 @@ def test_make_all_trainable_corresponds_to_set(): assert np.array_equal(params1["HH_gNa"], params2["HH_gNa"], equal_nan=True) -def test_make_subset_trainable_corresponds_to_set(): +def test_make_subset_trainable_corresponds_to_set(SimpleNet): # Scenario 1. - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.insert(HH()) params1 = get_params_subset_trainable(net1) net2.insert(HH()) @@ -193,7 +170,8 @@ def test_make_subset_trainable_corresponds_to_set(): assert np.array_equal(params1["HH_gNa"], params2["HH_gNa"], equal_nan=True) # Scenario 2. - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.cell(0).insert(HH()) params1 = get_params_subset_trainable(net1) net2.cell(0).insert(HH()) @@ -201,7 +179,8 @@ def test_make_subset_trainable_corresponds_to_set(): assert np.array_equal(params1["HH_gNa"], params2["HH_gNa"], equal_nan=True) # Scenario 3. - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.cell(0).branch(1).insert(HH()) params1 = get_params_subset_trainable(net1) net2.cell(0).branch(1).insert(HH()) @@ -209,7 +188,8 @@ def test_make_subset_trainable_corresponds_to_set(): assert np.array_equal(params1["HH_gNa"], params2["HH_gNa"], equal_nan=True) # Scenario 4. - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.cell(0).branch(1).loc(0.4).insert(HH()) params1 = get_params_subset_trainable(net1) net2.cell(0).branch(1).loc(0.4).insert(HH()) @@ -217,16 +197,13 @@ def test_make_subset_trainable_corresponds_to_set(): assert np.array_equal(params1["HH_gNa"], params2["HH_gNa"], equal_nan=True) -def test_copy_node_property_to_edges(): +def test_copy_node_property_to_edges(SimpleNet): """Test synaptic parameter sharing via `.copy_node_property_to_edges()`. This test does not explicitly use `make_trainable`, but `copy_node_property_to_edges` is an important ingredient to parameter sharing. """ - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=2) - cell = jx.Cell(branch, parents=[-1, 0]) - net = jx.Network([cell for _ in range(6)]) + net = SimpleNet(6, 2, 2) net.insert(HH()) net.cell(1).set("HH_gNa", 1.0) net.cell(0).set("radius", 0.2) @@ -240,14 +217,14 @@ def test_copy_node_property_to_edges(): assert "post_HH_gNa" not in net.edges.columns # Query the second cell. Each cell has four compartments. - edges_gna_values = net.edges.query("global_pre_comp_index > 3") - edges_gna_values = edges_gna_values.query("global_pre_comp_index <= 7") + edges_gna_values = net.edges.query("pre_global_comp_index > 3") + edges_gna_values = edges_gna_values.query("pre_global_comp_index <= 7") assert np.all(edges_gna_values["pre_HH_gNa"] == 1.0) # Query the other cells. The first cell has four compartments. - edges_gna_values = net.edges.query("global_pre_comp_index <= 3") + edges_gna_values = net.edges.query("pre_global_comp_index <= 3") assert np.all(edges_gna_values["pre_HH_gNa"] == 0.12) - edges_gna_values = net.edges.query("global_pre_comp_index > 7") + edges_gna_values = net.edges.query("pre_global_comp_index > 7") assert np.all(edges_gna_values["pre_HH_gNa"] == 0.12) # Test whether multiple properties can be copied over. @@ -257,10 +234,10 @@ def test_copy_node_property_to_edges(): assert "pre_length" in net.edges.columns assert "post_length" in net.edges.columns - edges_gna_values = net.edges.query("global_pre_comp_index <= 3") + edges_gna_values = net.edges.query("pre_global_comp_index <= 3") assert np.all(edges_gna_values["pre_radius"] == 0.2) - edges_gna_values = net.edges.query("global_pre_comp_index > 3") + edges_gna_values = net.edges.query("pre_global_comp_index > 3") assert np.all(edges_gna_values["pre_radius"] == 1.0) # Test whether modifying an individual compartment also takes effect. @@ -268,28 +245,19 @@ def test_copy_node_property_to_edges(): assert "pre_capacitance" in net.edges.columns assert "post_capacitance" in net.edges.columns - edges_gna_values = net.edges.query("global_pre_comp_index == 4") + edges_gna_values = net.edges.query("pre_global_comp_index == 4") assert np.all(edges_gna_values["pre_capacitance"] == 0.3) - edges_gna_values = net.edges.query("global_post_comp_index == 4") + edges_gna_values = net.edges.query("post_global_comp_index == 4") assert np.all(edges_gna_values["post_capacitance"] == 0.3) - edges_gna_values = net.edges.query("global_pre_comp_index != 4") + edges_gna_values = net.edges.query("pre_global_comp_index != 4") assert np.all(edges_gna_values["pre_capacitance"] == 1.0) - edges_gna_values = net.edges.query("global_post_comp_index != 4") + edges_gna_values = net.edges.query("post_global_comp_index != 4") assert np.all(edges_gna_values["post_capacitance"] == 1.0) -def build_two_networks(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1, 0]) - net1 = jx.Network([cell, cell]) - net2 = jx.Network([cell, cell]) - return net1, net2 - - def get_params_subset_trainable(net): net.cell(0).branch(1).make_trainable("HH_gNa") params = net.get_parameters() @@ -324,9 +292,10 @@ def get_params_set(net): return net.get_all_parameters(pstate, voltage_solver="jaxley.thomas") -def test_make_trainable_corresponds_to_set_pospischil(): +def test_make_trainable_corresponds_to_set_pospischil(SimpleNet): """Test whether shared parameters are also set correctly.""" - net1, net2 = build_two_networks() + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.cell(0).insert(Na()) net1.insert(K()) net1.cell("all").branch("all").loc("all").make_trainable("vt") @@ -352,7 +321,9 @@ def test_make_trainable_corresponds_to_set_pospischil(): net1.cell(1).branch(1).loc(0.0).record() net2.cell(1).branch(1).loc(0.0).record() - current = jx.step_current(2.0, 3.0, 0.2, 0.025, 5.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) net1.cell(0).branch(1).loc(0.0).stimulate(current) net2.cell(0).branch(1).loc(0.0).stimulate(current) voltages1 = jx.integrate(net1, params=params1) @@ -365,7 +336,7 @@ def test_group_trainable_corresponds_to_set(): def build_net(): comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) + branch = jx.Branch(comp, ncomp=4) cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) net = jx.Network([cell for _ in range(4)]) net.cell(0).add_to_group("test") @@ -391,8 +362,9 @@ def build_net(): assert np.allclose(all_parameters1["radius"], all_parameters2["radius"]) -def test_data_set_vs_make_trainable_pospischil(): - net1, net2 = build_two_networks() +def test_data_set_vs_make_trainable_pospischil(SimpleNet): + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) net1.cell(0).insert(Na()) net1.insert(K()) net1.make_trainable("vt") @@ -416,7 +388,9 @@ def test_data_set_vs_make_trainable_pospischil(): net1.cell(1).branch(1).loc(0.0).record() net2.cell(1).branch(1).loc(0.0).record() - current = jx.step_current(2.0, 3.0, 0.2, 0.025, 5.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) net1.cell(0).branch(1).loc(0.0).stimulate(current) net2.cell(0).branch(1).loc(0.0).stimulate(current) voltages1 = jx.integrate(net1, params=params1) @@ -424,9 +398,12 @@ def test_data_set_vs_make_trainable_pospischil(): assert np.max(np.abs(voltages1 - voltages2)) < 1e-8 -def test_data_set_vs_make_trainable_network(): - net1, net2 = build_two_networks() - current = jx.step_current(0.1, 4.0, 0.1, 0.025, 5.0) +def test_data_set_vs_make_trainable_network(SimpleNet): + net1 = SimpleNet(2, 4, 1) + net2 = SimpleNet(2, 4, 1) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) for net in [net1, net2]: net.insert(HH()) pre = net.cell(0).branch(0).loc(0.0) @@ -468,11 +445,8 @@ def test_data_set_vs_make_trainable_network(): assert np.max(np.abs(voltages1 - voltages2)) < 1e-8 -def test_make_states_trainable_api(): - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, [-1, 0]) - net = jx.Network([cell for _ in range(2)]) +def test_make_states_trainable_api(SimpleNet): + net = SimpleNet(2, 2, 4) net.insert(HH()) net.cell(0).branch(0).comp(0).record() @@ -489,12 +463,9 @@ def simulate(params): assert np.invert(np.any(np.isnan(v))), "Found NaN in voltage." -def test_write_trainables(): +def test_write_trainables(SimpleNet): """Test whether `write_trainables()` gives the same result as using the trainables.""" - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, [-1, 0]) - net = jx.Network([cell for _ in range(2)]) + net = SimpleNet(2, 2, 4) connect( net.cell(0).branch(0).loc(0.9), net.cell(1).branch(1).loc(0.1), @@ -518,7 +489,9 @@ def test_write_trainables(): net.insert(HH()) net.cell(0).branch(0).comp(0).record() net.cell(1).branch(0).comp(0).record() - net.cell(0).branch(0).comp(0).stimulate(jx.step_current(0.1, 4.0, 0.1, 0.025, 5.0)) + net.cell(0).branch(0).comp(0).stimulate( + jx.step_current(i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0) + ) net.make_trainable("radius") net.cell(0).make_trainable("length") diff --git a/tests/test_misc.py b/tests/test_misc.py new file mode 100644 index 00000000..75698747 --- /dev/null +++ b/tests/test_misc.py @@ -0,0 +1,60 @@ +# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is +# licensed under the Apache License Version 2.0, see + +import os +import re +from pathlib import Path +from typing import List + +import numpy as np +import pytest + + +def list_files(directory): + for root, dirs, files in os.walk(directory): + for file in files: + if file.endswith(".py"): + yield os.path.join(root, file) + + +license_txt = """# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is +# licensed under the Apache License Version 2.0, see """ + + +@pytest.mark.parametrize("dir", ["../jaxley", "."]) +def test_license(dir): + for i, file in enumerate(list_files(dir)): + with open(file, "r") as f: + header = f.read(len(license_txt)) + assert ( + header == license_txt + ), f"File {file} does not have the correct license header" + + +def test_rm_all_deprecated_functions(): + from jaxley.__version__ import __version__ as package_version + + package_version = np.array([int(s) for s in package_version.split(".")]) + + decorator_pattern = r"@deprecated(?:_signature)?" + version_pattern = r"[v]?(\d+\.\d+\.\d+)" + + package_dir = Path(__file__).parent.parent / "jaxley" + + violations = [] + for py_file in package_dir.rglob("*.py"): + with open(py_file, "r") as f: + for line_num, line in enumerate(f, 1): + if re.search(decorator_pattern, line): + version_match = re.search(version_pattern, line) + if version_match: + depr_version_str = version_match.group(1) + depr_version = np.array( + [int(s) for s in depr_version_str.split(".")] + ) + if not np.all(package_version <= depr_version): + violations.append(f"{py_file}:L{line_num}") + + assert not violations, "\n".join( + ["Found deprecated items that should have been removed:", *violations] + ) diff --git a/tests/test_moving.py b/tests/test_moving.py index 75e77135..ca47b531 100644 --- a/tests/test_moving.py +++ b/tests/test_moving.py @@ -15,13 +15,9 @@ import jaxley as jx -def test_move_cell(): - nseg = 4 - +def test_move_cell(SimpleBranch, SimpleCell): # Test move on a cell with compute_xyz() - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) - cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) + cell = SimpleCell(5, ncomp=4) cell.compute_xyz() cell.move(20.0, 30.0, 5.0) assert cell.xyzr[0][0, 0] == 20.0 @@ -29,8 +25,7 @@ def test_move_cell(): assert cell.xyzr[0][0, 2] == 5.0 # Test move_to on a cell that starts with a specified xyzr - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) + branch = SimpleBranch(ncomp=4) cell = jx.Cell( branch, parents=[-1], @@ -50,11 +45,8 @@ def test_move_cell(): assert cell.xyzr[0][0, 3] == 10.0 -def test_move_network(): - nseg = 2 - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) - cell = jx.Cell([branch, branch, branch], parents=[-1, 0, 0]) +def test_move_network(SimpleCell): + cell = SimpleCell(3, 3) cell.compute_xyz() net = jx.Network([cell, cell, cell]) net.move(20.0, 30.0, 5.0) @@ -64,19 +56,15 @@ def test_move_network(): assert net.xyzr[i][0, 2] == 5.0 -def test_move_to_cell(): - nseg = 4 - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) - cell = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) +def test_move_to_cell(SimpleBranch, SimpleCell): + cell = SimpleCell(5, 4) cell.compute_xyz() cell.move_to(20.0, 30.0, 5.0) assert cell.xyzr[0][0, 0] == 20.0 assert cell.xyzr[0][0, 1] == 30.0 assert cell.xyzr[0][0, 2] == 5.0 - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) + branch = SimpleBranch(ncomp=4) cell = jx.Cell( branch, parents=[-1], @@ -96,13 +84,9 @@ def test_move_to_cell(): assert cell.xyzr[0][0, 3] == 10.0 -def test_move_to_network(): - nseg = 4 - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) - cell = jx.Cell([branch, branch, branch], parents=[-1, 0, 0]) - cell.compute_xyz() - net = jx.Network([cell, cell, cell]) +def test_move_to_network(SimpleNet): + net = SimpleNet(3, 3, 4) + net.compute_xyz() net.move_to(10.0, 20.0, 30.0) # Branch 0 of cell 0 assert net.xyzr[0][0, 0] == 10.0 @@ -114,20 +98,17 @@ def test_move_to_network(): assert net.xyzr[3][0, 2] == 30.0 -def test_move_to_arrays(): +def test_move_to_arrays(SimpleNet): """Test with network""" - nseg = 4 - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=nseg) - cell = jx.Cell([branch, branch, branch], parents=[-1, 0, 0]) - cell.compute_xyz() - net = jx.Network([cell, cell, cell]) + ncomp = 4 + net = SimpleNet(3, 3, ncomp) + net.compute_xyz() x_coords = np.array([10.0, 20.0, 30.0]) y_coords = np.array([5.0, 15.0, 25.0]) z_coords = np.array([1.0, 2.0, 3.0]) net.move_to(x_coords, y_coords, z_coords) assert net.xyzr[0][0, 0] == 10.0 - assert net.xyzr[0][1, 0] == nseg * 10.0 + 10.0 + assert net.xyzr[0][1, 0] == ncomp * 10.0 + 10.0 assert net.xyzr[0][0, 1] == 5.0 assert net.xyzr[0][0, 2] == 1.0 assert net.xyzr[3][0, 0] == 20.0 @@ -135,12 +116,9 @@ def test_move_to_arrays(): assert net.xyzr[6][0, 1] == 25.0 -def test_move_to_cellview(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=2) - cell = jx.Cell([branch, branch, branch], parents=[-1, 0, 0]) - cell.compute_xyz() - net = jx.Network([cell for _ in range(3)]) +def test_move_to_cellview(SimpleNet): + net = SimpleNet(3, 3, 2) + net.compute_xyz() # Test with float input net.cell(0).move_to(50.0, 3.0, 40.0) @@ -149,7 +127,8 @@ def test_move_to_cellview(): assert net.xyzr[0][0, 2] == 40.0 # Test with array input - net = jx.Network([cell for _ in range(4)]) + net = SimpleNet(4, 3, 2) + net.compute_xyz() testx = np.array([1.0, 2.0, 3.0]) testy = np.array([4.0, 5.0, 6.0]) testz = np.array([7.0, 8.0, 9.0]) @@ -160,12 +139,12 @@ def test_move_to_cellview(): assert net.xyzr[9][0, 0] == 0.0 -def test_move_to_swc_cell(): +def test_move_to_swc_cell(SimpleMorphCell): dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "swc_files", "morph.swc") - cell1 = jx.read_swc(fname, nseg=4) - cell2 = jx.read_swc(fname, nseg=4) - cell3 = jx.read_swc(fname, nseg=4) + cell1 = SimpleMorphCell(fname, ncomp=1) + cell2 = SimpleMorphCell(fname, ncomp=1) + cell3 = SimpleMorphCell(fname, ncomp=1) # Try move_to on a cell cell1.move_to(10.0, 20.0, 30.0) diff --git a/tests/test_optimize.py b/tests/test_optimize.py index 9da2b5df..d094604e 100644 --- a/tests/test_optimize.py +++ b/tests/test_optimize.py @@ -17,12 +17,15 @@ from jaxley.optimize.utils import l2_norm -def test_type_optimizer_api(): +def test_type_optimizer_api(SimpleComp): """Tests whether optimization recovers a ground truth parameter set.""" - comp = jx.Compartment() + comp = SimpleComp(copy=True) comp.insert(HH()) comp.record() - comp.stimulate(jx.step_current(0.1, 3.0, 0.1, 0.025, 5.0)) + current = jx.step_current( + i_delay=0.1, i_dur=3.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) + comp.stimulate(current) def simulate(params): return jx.integrate(comp, params=params) @@ -48,12 +51,15 @@ def loss_fn(params): opt_params = optax.apply_updates(opt_params, updates) -def test_type_optimizer(): +def test_type_optimizer(SimpleComp): """Tests whether optimization recovers a ground truth parameter set.""" - comp = jx.Compartment() + comp = SimpleComp(copy=True) comp.insert(HH()) comp.record() - comp.stimulate(jx.step_current(0.1, 3.0, 0.1, 0.025, 5.0)) + current = jx.step_current( + i_delay=0.1, i_dur=3.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) + comp.stimulate(current) comp.set("HH_gNa", 0.4) comp.set("radius", 30.0) diff --git a/tests/test_pickle.py b/tests/test_pickle.py index 49b58f1e..d12407eb 100644 --- a/tests/test_pickle.py +++ b/tests/test_pickle.py @@ -1,6 +1,7 @@ # This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is # licensed under the Apache License Version 2.0, see +import os import pickle import pytest @@ -9,11 +10,13 @@ from jaxley.channels import HH from jaxley.synapses import IonotropicSynapse -# create modules +# create modules (cannot use fixtures for pickling, since they rely on local func defs) comp = jx.Compartment() branch = jx.Branch(comp, 4) cell = jx.Cell([branch] * 3, [-1, 0, 0]) net = jx.Network([cell] * 2) +fname = os.path.join(os.path.dirname(__file__), "swc_files", "morph.swc") +morph_cell = jx.read_swc(fname, nseg=1, max_branch_len=2_000, assign_groups=True) # insert mechanisms net.cell(0).branch("all").insert(HH()) @@ -24,9 +27,14 @@ @pytest.mark.parametrize( - "module", [comp, branch, cell, net], ids=lambda x: x.__class__.__name__ + "module", [comp, branch, cell, morph_cell, net], ids=lambda x: x.__class__.__name__ ) def test_pickle(module): pickled = pickle.dumps(module) unpickled = pickle.loads(pickled) + + view = module.select(0) + pickled = pickle.dumps(view) + unpickled = pickle.loads(pickled) + # assert module == unpickled # TODO: implement __eq__ for all classes diff --git a/tests/test_plotting_api.py b/tests/test_plotting_api.py index d0be7190..a2e3b9e8 100644 --- a/tests/test_plotting_api.py +++ b/tests/test_plotting_api.py @@ -19,58 +19,32 @@ from jaxley.synapses import IonotropicSynapse -@pytest.fixture(scope="module") -def comp() -> jx.Compartment: - comp = jx.Compartment() - comp.compute_xyz() - return comp - - -@pytest.fixture(scope="module") -def branch(comp) -> jx.Branch: - branch = jx.Branch(comp, 4) - branch.compute_xyz() - return branch - - -@pytest.fixture(scope="module") -def cell(branch) -> jx.Cell: - cell = jx.Cell(branch, [-1, 0, 0, 1, 1]) - cell.compute_xyz() - return cell - - -@pytest.fixture(scope="module") -def simple_net(cell) -> jx.Network: - net = jx.Network([cell] * 4) - net.compute_xyz() - return net - - -@pytest.fixture(scope="module") -def morph_cell() -> jx.Cell: - morph_cell = jx.read_swc( - os.path.join(os.path.dirname(__file__), "swc_files", "morph.swc"), - nseg=1, - ) - return morph_cell +def test_cell(SimpleMorphCell): + dirname = os.path.dirname(__file__) + fname = os.path.join(dirname, "swc_files", "morph.swc") + cell = SimpleMorphCell(fname, ncomp=1) + cell.branch(0).set_ncomp(2) # test inhomogeneous ncomp - -def test_cell(morph_cell): # Plot 1. _, ax = plt.subplots(1, 1, figsize=(3, 3)) - ax = morph_cell.vis(ax=ax) - ax = morph_cell.branch([0, 1, 2]).vis(ax=ax, col="r") - ax = morph_cell.branch(1).loc(0.9).vis(ax=ax, col="b") + ax = cell.vis(ax=ax) + ax = cell.branch([0, 1, 2]).vis(ax=ax, col="r") + ax = cell.branch(1).loc(0.9).vis(ax=ax, col="b") # Plot 2. - morph_cell.branch(0).add_to_group("soma") - morph_cell.branch(1).add_to_group("soma") - ax = morph_cell.soma.vis() + cell.branch(0).add_to_group("soma") + cell.branch(1).add_to_group("soma") + ax = cell.soma.vis() + +def test_network(SimpleMorphCell): + dirname = os.path.dirname(__file__) + fname = os.path.join(dirname, "swc_files", "morph.swc") + cell1 = SimpleMorphCell(fname, ncomp=1) + cell2 = SimpleMorphCell(fname, ncomp=1) + cell3 = SimpleMorphCell(fname, ncomp=1) -def test_network(morph_cell): - net = jx.Network([morph_cell, morph_cell, morph_cell]) + net = jx.Network([cell1, cell2, cell3]) connect( net.cell(0).branch(0).loc(0.0), net.cell(1).branch(0).loc(0.0), @@ -108,7 +82,12 @@ def test_network(morph_cell): ax = net.excitatory.vis() -def test_vis_networks_built_from_scratch(comp, branch, cell): +def test_vis_networks_built_from_scratch(SimpleComp, SimpleBranch, SimpleCell): + comp = SimpleComp(copy=True) + branch = SimpleBranch(4) + cell = SimpleCell(5, 3) + cell.branch(0).set_ncomp(3) # test inhomogeneous ncomp + net = jx.Network([cell, cell]) connect( net.cell(0).branch(0).loc(0.0), @@ -133,15 +112,25 @@ def test_vis_networks_built_from_scratch(comp, branch, cell): # Plot 3. _, ax = plt.subplots(1, 1, figsize=(3, 3)) + comp.compute_xyz() ax = comp.vis(ax=ax) # Plot 4. _, ax = plt.subplots(1, 1, figsize=(3, 3)) + branch.compute_xyz() ax = branch.vis(ax=ax) -def test_mixed_network(morph_cell, cell): - net = jx.Network([morph_cell, cell]) +def test_mixed_network(SimpleMorphCell): + dirname = os.path.dirname(__file__) + fname = os.path.join(dirname, "swc_files", "morph.swc") + cell1 = SimpleMorphCell(fname, ncomp=1) + + comp = jx.Compartment() + branch = jx.Branch(comp, 4) + cell2 = jx.Cell(branch, parents=[-1, 0, 0, 1, 1]) + + net = jx.Network([cell1, cell2]) connect( net.cell(0).branch(0).loc(0.0), net.cell(1).branch(0).loc(0.0), @@ -158,9 +147,9 @@ def test_mixed_network(morph_cell, cell): net.cell(1).move(0, -800) net.rotate(180) - before_xyzrs = deepcopy(net.xyzr[len(morph_cell.xyzr) :]) + before_xyzrs = deepcopy(net.xyzr[len(cell1.xyzr) :]) net.cell(1).rotate(90) - after_xyzrs = net.xyzr[len(morph_cell.xyzr) :] + after_xyzrs = net.xyzr[len(cell1.xyzr) :] # Test that rotation worked as expected. for b, a in zip(before_xyzrs, after_xyzrs): assert np.allclose(b[:, 0], -a[:, 1], atol=1e-6) @@ -169,23 +158,33 @@ def test_mixed_network(morph_cell, cell): _ = net.vis(detail="full") -def test_volume_plotting_2d(comp, branch, cell, simple_net, morph_cell): +def test_volume_plotting( + SimpleComp, SimpleBranch, SimpleCell, SimpleNet, SimpleMorphCell +): + comp = SimpleComp() + branch = SimpleBranch(2) + cell = SimpleCell(2, 2) + cell.branch(0).set_ncomp(3) # test inhomogeneous ncomp + net = SimpleNet(2, 2, 2) + + for module in [comp, branch, cell, net]: + module.compute_xyz() + + fname = os.path.join(os.path.dirname(__file__), "swc_files", "morph.swc") + morph_cell = SimpleMorphCell(fname, ncomp=1) + fig, ax = plt.subplots() - for module in [comp, branch, cell, simple_net, morph_cell]: + for module in [comp, branch, cell, net, morph_cell]: module.vis(type="comp", ax=ax, morph_plot_kwargs={"resolution": 6}) plt.close(fig) - -def test_volume_plotting_3d(comp, branch, cell, simple_net, morph_cell): # test 3D plotting - for module in [comp, branch, cell, simple_net, morph_cell]: + for module in [comp, branch, cell, net, morph_cell]: module.vis(type="comp", dims=[0, 1, 2], morph_plot_kwargs={"resolution": 6}) plt.close() - -def test_morph_plotting(morph_cell): # test morph plotting (does not work if no radii in xyzr) - morph_cell.vis(type="morph", morph_plot_kwargs={"resolution": 6}) + morph_cell.branch(1).vis(type="morph") morph_cell.branch(1).vis( type="morph", dims=[0, 1, 2], morph_plot_kwargs={"resolution": 6} ) # plotting whole thing takes too long diff --git a/tests/test_record_and_stimulate.py b/tests/test_record_and_stimulate.py index 47bd5bfd..151c3474 100644 --- a/tests/test_record_and_stimulate.py +++ b/tests/test_record_and_stimulate.py @@ -16,39 +16,29 @@ from jaxley.synapses import IonotropicSynapse, TestSynapse -def test_record_and_stimulate_api(): +def test_record_and_stimulate_api(SimpleCell): """Test the API for recording and stimulating.""" - nseg_per_branch = 2 - depth = 2 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] - parents = jnp.asarray(parents) - - comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) - cell = jx.Cell(branch, parents=parents) + cell = SimpleCell(3, 2) cell.branch(0).loc(0.0).record() cell.branch(1).loc(1.0).record() - current = jx.step_current(0.0, 1.0, 1.0, 0.025, 3.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) cell.branch(1).loc(1.0).stimulate(current) cell.delete_recordings() cell.delete_stimuli() -def test_record_shape(): +def test_record_shape(SimpleCell): """Test the API for recording and stimulating.""" - nseg_per_branch = 2 - depth = 2 - parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] - parents = jnp.asarray(parents) - - comp = jx.Compartment() - branch = jx.Branch(comp, nseg_per_branch) - cell = jx.Cell(branch, parents=parents) + cell = SimpleCell(3, 2) - current = jx.step_current(0.0, 1.0, 1.0, 0.025, 3.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) cell.branch(1).loc(1.0).stimulate(current) cell.branch(0).loc(0.0).record() @@ -64,7 +54,7 @@ def test_record_shape(): ), f"Shape of recordings ({voltages.shape}) is not right." -def test_record_synaptic_and_membrane_states(): +def test_record_synaptic_and_membrane_states(SimpleNet): """Tests recording of synaptic and membrane states. Tests are functional, not just API. They test whether the voltage and synaptic @@ -73,17 +63,16 @@ def test_record_synaptic_and_membrane_states(): _ = np.random.seed(0) # Seed because connectivity is at random postsyn locs. - comp = jx.Compartment() - branch = jx.Branch(comp, 4) - cell = jx.Cell(branch, parents=[-1]) - net = jx.Network([cell for _ in range(3)]) + net = SimpleNet(3, 1, 4) net.insert(HH()) fully_connect(net.cell([0]), net.cell([1]), IonotropicSynapse()) fully_connect(net.cell([1]), net.cell([2]), TestSynapse()) fully_connect(net.cell([2]), net.cell([0]), IonotropicSynapse()) - current = jx.step_current(1.0, 80.0, 0.02, 0.025, 100.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) net.cell(0).branch(0).loc(0.0).stimulate(current) net.cell(2).branch(0).loc(0.0).record("v") @@ -124,9 +113,9 @@ def test_record_synaptic_and_membrane_states(): assert np.all(np.abs(maxima_3 - maxima_1 - offset_mem)) < 5.0 -def test_empty_recordings(): +def test_empty_recordings(SimpleComp): # Create an empty compartment - comp = jx.Compartment() + comp = SimpleComp() # Check if a ValueError is raised when integrating an empty compartment with pytest.raises(ValueError): diff --git a/tests/test_regression.py b/tests/test_regression.py new file mode 100644 index 00000000..eb920d61 --- /dev/null +++ b/tests/test_regression.py @@ -0,0 +1,241 @@ +# This file is part of Jaxley, a differentiable neuroscience simulator. Jaxley is +# licensed under the Apache License Version 2.0, see + +import hashlib +import json +import os +import time +from functools import wraps + +import numpy as np +import pytest +from jax import jit + +import jaxley as jx +from jaxley.channels import HH +from jaxley.connect import sparse_connect +from jaxley.synapses import IonotropicSynapse + +# Every runtime test needs to have the following structure: +# +# @compare_to_baseline() +# def test_runtime_of_x(**kwargs) -> Dict: +# t1 = time.time() +# time.sleep(0.1) +# # do something +# t2 = time.time() +# # do something else +# t3 = time.time() +# return {"sth": t2-t1, sth_else: t3-t2} + +def load_json(fpath): + dct = {} + if os.path.exists(fpath): + with open(fpath, "r") as f: + dct = json.load(f) + return dct + + +pytestmark = pytest.mark.regression # mark all tests as regression tests in this file +NEW_BASELINE = os.environ["NEW_BASELINE"] if "NEW_BASELINE" in os.environ else 0 +dirname = os.path.dirname(__file__) +fpath_baselines = os.path.join(dirname, "regression_test_baselines.json") +fpath_results = os.path.join(dirname, "regression_test_results.json") + +tolerance = 0.2 + +baselines = load_json(fpath_baselines) +with open(fpath_results, "w") as f: # clear previous results + f.write("{}") + + +def generate_regression_report(base_results, new_results): + """Compare two sets of benchmark results and generate a diff report.""" + report = [] + for key in new_results: + new_data = new_results[key] + base_data = base_results.get(key) + kwargs = ", ".join([f"{k}={v}" for k, v in new_data["input_kwargs"].items()]) + func_name = new_data["test_name"] + func_signature = f"{func_name}({kwargs})" + + new_runtimes = new_data["runtimes"] + base_runtimes = ( + {k: None for k in new_data.keys()} + if base_data is None + else base_data["runtimes"] + ) + + report.append(func_signature) + for key, new_time in new_runtimes.items(): + base_time = base_runtimes.get(key) + diff = None if base_time is None else ((new_time - base_time) / base_time) + + status = "" + if diff is None: + status = "🆕" + elif diff > tolerance: + status = "🔴" + elif diff < 0: + status = "🟢" + else: + status = "⚪" + + time_str = ( + f"({new_time:.3f}s)" + if diff is None + else f"({diff:+.2%} vs {base_time:.3f}s)" + ) + report.append(f"{status} {key}: {time_str}.") + report.append("") + + return "\n".join(report) + + +def generate_unique_key(d): + # Generate a unique key for each test case. Makes it possible to compare tests + # with different input_kwargs. + hash_obj = hashlib.sha256(bytes(json.dumps(d, sort_keys=True), encoding="utf-8")) + hash = hash_obj.hexdigest() + return str(hash) + + +def append_to_json(fpath, test_name, input_kwargs, runtimes): + header = {"test_name": test_name, "input_kwargs": input_kwargs} + data = {generate_unique_key(header): {**header, "runtimes": runtimes}} + + # Save data to a JSON file + result_data = load_json(fpath) + result_data.update(data) + + with open(fpath, "w") as f: + json.dump(result_data, f, indent=2) + + +class compare_to_baseline: + def __init__(self, baseline_iters=3, test_iters=1): + self.baseline_iters = baseline_iters + self.test_iters = test_iters + + def __call__(self, func): + @wraps(func) # ensures kwargs exposed to pytest + def test_wrapper(**kwargs): + header = {"test_name": func.__name__, "input_kwargs": kwargs} + key = generate_unique_key(header) + + runs = [] + num_iters = self.baseline_iters if NEW_BASELINE else self.test_iters + for _ in range(num_iters): + runtimes = func(**kwargs) + runs.append(runtimes) + runtimes = {k: np.mean([d[k] for d in runs]) for k in runs[0]} + + append_to_json(fpath_results, header["test_name"], header["input_kwargs"], runtimes) + + if not NEW_BASELINE: + assert key in baselines, f"No basline found for {header}" + func_baselines = baselines[key]["runtimes"] + for key, baseline in func_baselines.items(): + diff = ( + float("nan") + if np.isclose(baseline, 0) + else (runtimes[key] - baseline) / baseline + ) + assert runtimes[key] <= baseline * ( + 1 + tolerance + ), f"{key} is {diff:.2%} slower than the baseline." + + return test_wrapper + + +def build_net(num_cells, artificial=True, connect=True, connection_prob=0.0): + _ = np.random.seed(1) # For sparse connectivity matrix. + + if artificial: + comp = jx.Compartment() + branch = jx.Branch(comp, 2) + depth = 3 + parents = [-1] + [b // 2 for b in range(0, 2**depth - 2)] + cell = jx.Cell(branch, parents=parents) + else: + dirname = os.path.dirname(__file__) + fname = os.path.join(dirname, "swc_files", "morph.swc") + cell = jx.read_swc(fname, nseg=4) + net = jx.Network([cell for _ in range(num_cells)]) + + # Channels. + net.insert(HH()) + + # Synapses. + if connect: + sparse_connect( + net.cell("all"), net.cell("all"), IonotropicSynapse(), connection_prob + ) + + # Recordings. + net[0, 1, 0].record(verbose=False) + + # Trainables. + net.make_trainable("radius", verbose=False) + params = net.get_parameters() + + net.to_jax() + return net, params + + +@pytest.mark.parametrize( + "num_cells, artificial, connect, connection_prob, voltage_solver", + ( + # Test a single SWC cell with both solvers. + pytest.param(1, False, False, 0.0, "jaxley.stone"), + pytest.param(1, False, False, 0.0, "jax.sparse"), + # Test a network of SWC cells with both solvers. + pytest.param(10, False, True, 0.1, "jaxley.stone"), + pytest.param(10, False, True, 0.1, "jax.sparse"), + # Test a larger network of smaller neurons with both solvers. + pytest.param(1000, True, True, 0.001, "jaxley.stone"), + pytest.param(1000, True, True, 0.001, "jax.sparse"), + ), +) +@compare_to_baseline(baseline_iters=3) +def test_runtime( + num_cells: int, + artificial: bool, + connect: bool, + connection_prob: float, + voltage_solver: str, +): + delta_t = 0.025 + t_max = 100.0 + + def simulate(params): + return jx.integrate( + net, + params=params, + t_max=t_max, + delta_t=delta_t, + voltage_solver=voltage_solver, + ) + + runtimes = {} + + start_time = time.time() + net, params = build_net( + num_cells, + artificial=artificial, + connect=connect, + connection_prob=connection_prob, + ) + runtimes["build_time"] = time.time() - start_time + + jitted_simulate = jit(simulate) + + start_time = time.time() + _ = jitted_simulate(params).block_until_ready() + runtimes["compile_time"] = time.time() - start_time + params[0]["radius"] = params[0]["radius"].at[0].set(0.5) + + start_time = time.time() + _ = jitted_simulate(params).block_until_ready() + runtimes["run_time"] = time.time() - start_time + return runtimes # @compare_to_baseline decorator will compare this to the baseline diff --git a/tests/test_set_ncomp.py b/tests/test_set_ncomp.py index 81bff586..e98f709a 100644 --- a/tests/test_set_ncomp.py +++ b/tests/test_set_ncomp.py @@ -19,30 +19,27 @@ @pytest.mark.parametrize( "property", ["radius", "capacitance", "length", "axial_resistivity"] ) -def test_raise_for_heterogenous_modules(property): - comp = jx.Compartment() - branch0 = jx.Branch(comp, nseg=4) - branch1 = jx.Branch(comp, nseg=4) +def test_raise_for_heterogenous_modules(SimpleBranch, property): + branch0 = SimpleBranch(4) + branch1 = SimpleBranch(4) branch1.comp(1).set(property, 1.5) cell = jx.Cell([branch0, branch1], parents=[-1, 0]) with pytest.raises(ValueError): cell.branch(1).set_ncomp(2) -def test_raise_for_heterogenous_channel_existance(): - comp = jx.Compartment() - branch0 = jx.Branch(comp, nseg=4) - branch1 = jx.Branch(comp, nseg=4) +def test_raise_for_heterogenous_channel_existance(SimpleBranch): + branch0 = SimpleBranch(4) + branch1 = SimpleBranch(4) branch1.comp(2).insert(HH()) cell = jx.Cell([branch0, branch1], parents=[-1, 0]) with pytest.raises(ValueError): cell.branch(1).set_ncomp(2) -def test_raise_for_heterogenous_channel_properties(): - comp = jx.Compartment() - branch0 = jx.Branch(comp, nseg=4) - branch1 = jx.Branch(comp, nseg=4) +def test_raise_for_heterogenous_channel_properties(SimpleBranch): + branch0 = SimpleBranch(4) + branch1 = SimpleBranch(4) branch1.insert(HH()) branch1.comp(3).set("HH_gNa", 0.5) cell = jx.Cell([branch0, branch1], parents=[-1, 0]) @@ -50,54 +47,47 @@ def test_raise_for_heterogenous_channel_properties(): cell.branch(1).set_ncomp(2) -def test_raise_for_entire_cells(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1, 0, 0]) +def test_raise_for_entire_cells(SimpleCell): + cell = SimpleCell(3, 4) with pytest.raises(AssertionError): cell.set_ncomp(2) -def test_raise_for_networks(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell1 = jx.Cell(branch, parents=[-1, 0, 0]) - cell2 = jx.Cell(branch, parents=[-1, 0, 0]) +def test_raise_for_networks(SimpleCell): + cell1 = SimpleCell(3, 4) + cell2 = SimpleCell(3, 4) net = jx.Network([cell1, cell2]) with pytest.raises(AssertionError): net.cell(0).branch(1).set_ncomp(2) -def test_raise_for_recording(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1, 0]) +def test_raise_for_recording(SimpleCell): + cell = SimpleCell(3, 2) cell.branch(0).comp(0).record() with pytest.raises(AssertionError): cell.branch(1).set_ncomp(2) -def test_raise_for_stimulus(): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1, 0]) +def test_raise_for_stimulus(SimpleCell): + cell = SimpleCell(3, 2) cell.branch(0).comp(0).stimulate(0.4 * jnp.ones(100)) with pytest.raises(AssertionError): cell.branch(1).set_ncomp(2) @pytest.mark.parametrize("new_ncomp", [1, 2, 4, 5, 8]) -def test_simulation_accuracy_api_equivalence_init_vs_setncomp_branch(new_ncomp): +def test_simulation_accuracy_api_equivalence_init_vs_setncomp_branch( + SimpleBranch, new_ncomp +): """Test whether a module built from scratch matches module built with `set_ncomp()`. This makes one branch, whose `ncomp` is not modified, heterogenous. """ - comp = jx.Compartment() - branch1 = jx.Branch(comp, nseg=new_ncomp) + branch1 = SimpleBranch(new_ncomp) # The second branch is originally instantiated to have 4 ncomp, but is later # modified to have `new_ncomp` compartments. - branch2 = jx.Branch(comp, nseg=4) + branch2 = SimpleBranch(4) branch2.comp("all").set("length", 10.0) total_branch_len = 4 * 10.0 @@ -118,14 +108,15 @@ def test_simulation_accuracy_api_equivalence_init_vs_setncomp_branch(new_ncomp): @pytest.mark.parametrize("new_ncomp", [1, 2, 4, 5, 8]) -def test_simulation_accuracy_api_equivalence_init_vs_setncomp_cell(new_ncomp): +def test_simulation_accuracy_api_equivalence_init_vs_setncomp_cell( + SimpleBranch, new_ncomp +): """Test whether a module built from scratch matches module built with `set_ncomp()`.""" - comp = jx.Compartment() - branch1 = jx.Branch(comp, nseg=new_ncomp) + branch1 = SimpleBranch(new_ncomp) # The second branch is originally instantiated to have 4 ncomp, but is later # modified to have `new_ncomp` compartments. - branch2 = jx.Branch(comp, nseg=4) + branch2 = SimpleBranch(4) branch2.comp("all").set("length", 10.0) total_branch_len = 4 * 10.0 @@ -150,13 +141,13 @@ def test_simulation_accuracy_api_equivalence_init_vs_setncomp_cell(new_ncomp): @pytest.mark.parametrize("new_ncomp", [1, 2, 4, 5, 8]) @pytest.mark.parametrize("file", ["morph_250.swc"]) -def test_api_equivalence_swc_lengths_and_radiuses(new_ncomp, file): +def test_api_equivalence_swc_lengths_and_radiuses(SimpleMorphCell, new_ncomp, file): """Test if the radiuses and lenghts of an SWC morph are reconstructed correctly.""" dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "swc_files", file) - cell1 = jx.read_swc(fname, nseg=new_ncomp, max_branch_len=2000.0) - cell2 = jx.read_swc(fname, nseg=4, max_branch_len=2000.0) + cell1 = SimpleMorphCell(fname, ncomp=new_ncomp) + cell2 = SimpleMorphCell(fname, ncomp=1) for b in range(cell2.total_nbranches): cell2.branch(b).set_ncomp(new_ncomp) @@ -171,13 +162,13 @@ def test_api_equivalence_swc_lengths_and_radiuses(new_ncomp, file): @pytest.mark.parametrize("new_ncomp", [1, 2, 4, 5, 8]) @pytest.mark.parametrize("file", ["morph_250.swc"]) -def test_simulation_accuracy_swc_init_vs_set_ncomp(new_ncomp, file): +def test_simulation_accuracy_swc_init_vs_set_ncomp(SimpleMorphCell, new_ncomp, file): """Test whether an SWC initially built with 4 ncomp works after `set_ncomp()`.""" dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "swc_files", file) - cell1 = jx.read_swc(fname, nseg=new_ncomp, max_branch_len=2000.0) - cell2 = jx.read_swc(fname, nseg=4, max_branch_len=2000.0) + cell1 = SimpleMorphCell(fname, ncomp=new_ncomp) + cell2 = SimpleMorphCell(fname, ncomp=1) for b in range(cell2.total_nbranches): cell2.branch(b).set_ncomp(new_ncomp) diff --git a/tests/test_shared_state.py b/tests/test_shared_state.py index 3e7642ce..0de88bb5 100644 --- a/tests/test_shared_state.py +++ b/tests/test_shared_state.py @@ -202,7 +202,9 @@ def test_shared_state(): voltages = [] for comp in [comp1, comp2, comp3]: comp.record() - current = jx.step_current(0.1, 0.1, 0.1, 0.025, 0.3) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) comp.stimulate(current) voltages.append(jx.integrate(comp)) diff --git a/tests/test_solver.py b/tests/test_solver.py index 251b96b7..99577e69 100644 --- a/tests/test_solver.py +++ b/tests/test_solver.py @@ -23,24 +23,19 @@ def test_exp_euler(x_inf): assert np.abs(fwd_euler - exp_euler) / np.abs(fwd_euler) < 1e-4 -def test_fwd_euler_and_crank_nicolson(): +def test_fwd_euler_and_crank_nicolson(SimpleNet): """FWD Euler does not yet support branched cells, but comps, branches, nets work. Tests whether forward Euler and Crank-Nicolson are sufficiently close to implicit Euler.""" - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - branch.insert(HH()) - cell = jx.Cell(branch, parents=[-1]) - net = jx.Network([cell for _ in range(2)]) + net = SimpleNet(2, 1, 4, connect=True) - current = jx.step_current(1.0, 1.0, 0.1, 0.025, 10.0) + current = jx.step_current( + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 + ) net.cell(0).branch(0).comp(0).stimulate(current) net.cell(1).branch(0).comp(3).record() - pre = net.cell(0).branch(0).comp(0) - post = net.cell(1).branch(0).comp(0) - connect(pre, post, IonotropicSynapse()) net.IonotropicSynapse.set("IonotropicSynapse_gS", 0.001) # As expected, using significantly shorter compartments or lower r_a leads to NaN diff --git a/tests/test_swc.py b/tests/test_swc.py index 09c2b44c..745b2e70 100644 --- a/tests/test_swc.py +++ b/tests/test_swc.py @@ -23,11 +23,11 @@ # Test is failing for "morph.swc". This is because NEURON and Jaxley handle interrupted # soma differently, see issue #140. @pytest.mark.parametrize("file", ["morph_single_point_soma.swc", "morph_minimal.swc"]) -def test_swc_reader_lengths(file): +def test_swc_reader_lengths(file, swc2jaxley): dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "swc_files", file) - _, pathlengths, _, _, _ = jx.utils.swc.swc_to_jaxley(fname, max_branch_len=2000.0) + _, pathlengths, _, _, _ = swc2jaxley(fname, max_branch_len=2000.0) if pathlengths[0] == 0.1: pathlengths = pathlengths[1:] @@ -53,31 +53,27 @@ def test_swc_reader_lengths(file): ), "Number of branches does not match." -def test_dummy_compartment_length(): +def test_dummy_compartment_length(swc2jaxley): dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "swc_files", "morph_soma_both_ends.swc") - parents, pathlengths, _, _, _ = jx.utils.swc.swc_to_jaxley( - fname, max_branch_len=2000.0 - ) + parents, pathlengths, _, _, _ = swc2jaxley(fname, max_branch_len=2000.0) assert parents == [-1, 0, 0, 1] assert pathlengths == [0.1, 1.0, 2.6, 2.2] @pytest.mark.parametrize("file", ["morph_250_single_point_soma.swc", "morph_250.swc"]) -def test_swc_radius(file): - """We expect them to match for sufficiently large nseg. See #140.""" - nseg = 64 - non_split = 1 / nseg - range_16 = np.linspace(non_split / 2, 1 - non_split / 2, nseg) +def test_swc_radius(file, swc2jaxley): + """We expect them to match for sufficiently large ncomp. See #140.""" + ncomp = 64 + non_split = 1 / ncomp + range_16 = np.linspace(non_split / 2, 1 - non_split / 2, ncomp) # Can not use full morphology because of branch sorting. dirname = os.path.dirname(__file__) fname = os.path.join(dirname, "swc_files", file) - _, pathlen, radius_fns, _, _ = jx.utils.swc.swc_to_jaxley( - fname, max_branch_len=2000.0, sort=False - ) + _, pathlen, radius_fns, _, _ = swc2jaxley(fname, max_branch_len=2000.0, sort=False) jaxley_diams = [] for r in radius_fns: jaxley_diams.append(r(range_16) * 2) @@ -92,7 +88,7 @@ def test_swc_radius(file): neuron_diams = [] for sec in h.allsec(): - sec.nseg = nseg + sec.nseg = ncomp diams_in_branch = [] for seg in sec: diams_in_branch.append(seg.diam) @@ -105,7 +101,7 @@ def test_swc_radius(file): @pytest.mark.parametrize("file", ["morph_single_point_soma.swc", "morph.swc"]) -def test_swc_voltages(file): +def test_swc_voltages(file, SimpleMorphCell, swc2jaxley): """Check if voltages of SWC recording match. To match the branch indices between NEURON and jaxley, we rely on comparing the @@ -123,7 +119,7 @@ def test_swc_voltages(file): t_max = 20.0 dt = 0.025 - nseg_per_branch = 8 + ncomp_per_branch = 8 ##################### NEURON ################## h.secondorder = 0 @@ -137,13 +133,13 @@ def test_swc_voltages(file): i3d.instantiate(None) for sec in h.allsec(): - sec.nseg = nseg_per_branch + sec.nseg = ncomp_per_branch pathlengths_neuron = np.asarray([sec.L for sec in h.allsec()]) ####################### jaxley ################## - _, pathlengths, _, _, _ = jx.utils.swc.swc_to_jaxley(fname, max_branch_len=2_000) - cell = jx.read_swc(fname, nseg_per_branch, max_branch_len=2_000.0) + _, pathlengths, _, _, _ = swc2jaxley(fname, max_branch_len=2_000) + cell = SimpleMorphCell(fname, ncomp_per_branch, max_branch_len=2_000.0) cell.insert(HH()) trunk_inds = [1, 4, 5, 13, 15, 21, 23, 24, 29, 33] diff --git a/tests/test_syn.py b/tests/test_syn.py index 89d5ab6f..3159e036 100644 --- a/tests/test_syn.py +++ b/tests/test_syn.py @@ -16,12 +16,9 @@ from jaxley.synapses import IonotropicSynapse, Synapse, TestSynapse -def test_set_and_querying_params_one_type(): +def test_set_and_querying_params_one_type(SimpleNet): """Test if the correct parameters are set if one type of synapses is inserted.""" - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1]) - net = jx.Network([cell for _ in range(4)]) + net = SimpleNet(4, 1, 4) for pre_ind in [0, 1]: for post_ind in [2, 3]: diff --git a/tests/test_synapse_indexing.py b/tests/test_synapse_indexing.py index 136a38d7..150a5d83 100644 --- a/tests/test_synapse_indexing.py +++ b/tests/test_synapse_indexing.py @@ -17,16 +17,13 @@ from jaxley.synapses import IonotropicSynapse, Synapse, TanhRateSynapse, TestSynapse -def test_multiparameter_setting(): +def test_multiparameter_setting(SimpleNet): """ Test if the correct parameters are set if one type of synapses is inserted. Tests global index dropping: d4daaf019596589b9430219a15f1dda0b1c34d85 """ - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1]) - net = jx.Network([cell for _ in range(2)]) + net = SimpleNet(2, 1, 4) pre = net.cell(0).branch(0).loc(0.0) post = net.cell(1).branch(0).loc(0.0) @@ -59,13 +56,10 @@ def _get_synapse_view(net, synapse_name, single_idx=1, double_idxs=[2, 3]): @pytest.mark.parametrize( "synapse_type", [IonotropicSynapse, TanhRateSynapse, TestSynapse] ) -def test_set_and_querying_params_one_type(synapse_type): +def test_set_and_querying_params_one_type(synapse_type, SimpleNet): """Test if the correct parameters are set if one type of synapses is inserted.""" synapse_type = synapse_type() - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1]) - net = jx.Network([cell for _ in range(4)]) + net = SimpleNet(4, 1, 4) for pre_ind in [0, 1]: for post_ind in [2, 3]: @@ -100,13 +94,10 @@ def test_set_and_querying_params_one_type(synapse_type): @pytest.mark.parametrize("synapse_type", [TanhRateSynapse, TestSynapse]) -def test_set_and_querying_params_two_types(synapse_type): +def test_set_and_querying_params_two_types(synapse_type, SimpleNet): """Test whether the correct parameters are set.""" synapse_type = synapse_type() - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1]) - net = jx.Network([cell for _ in range(4)]) + net = SimpleNet(4, 1, 4) for pre_ind in [0, 1]: for post_ind, synapse in zip([2, 3], [IonotropicSynapse(), synapse_type]): @@ -159,15 +150,12 @@ def test_set_and_querying_params_two_types(synapse_type): @pytest.mark.parametrize("synapse_type", [TanhRateSynapse, TestSynapse]) -def test_shuffling_order_of_set(synapse_type): +def test_shuffling_order_of_set(synapse_type, SimpleNet): """Test whether the result is the same if the order of synapses is changed.""" synapse_type = synapse_type() - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=4) - cell = jx.Cell(branch, parents=[-1]) - net1 = jx.Network([cell for _ in range(4)]) - net2 = jx.Network([cell for _ in range(4)]) + net1 = SimpleNet(4, 1, 4) + net2 = SimpleNet(4, 1, 4) connect( net1.cell(0).branch(0).loc(1.0), diff --git a/tests/test_transforms.py b/tests/test_transforms.py index 323441fc..af227542 100644 --- a/tests/test_transforms.py +++ b/tests/test_transforms.py @@ -151,10 +151,8 @@ def test_correct(transform): "transform", [jt.SigmoidTransform(-2, 2), jt.SoftplusTransform(2), jt.NegSoftplusTransform(2)], ) -def test_user_api(transform): - comp = jx.Compartment() - branch = jx.Branch(comp, nseg=2) - cell = jx.Cell(branch, parents=[-1, 0, 0]) +def test_user_api(transform, SimpleCell): + cell = SimpleCell(3, 2) cell.branch("all").make_trainable("radius") cell.branch(2).make_trainable("radius") diff --git a/tests/test_viewing.py b/tests/test_viewing.py index ba09757f..f4fba00f 100644 --- a/tests/test_viewing.py +++ b/tests/test_viewing.py @@ -23,11 +23,10 @@ from jaxley.utils.solver_utils import JaxleySolveIndexer -def test_getitem(): - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(4)]) - cell = jx.Cell([branch for _ in range(3)], parents=jnp.asarray([-1, 0, 0])) - net = jx.Network([cell for _ in range(3)]) +def test_getitem(SimpleBranch, SimpleCell, SimpleNet): + branch = SimpleBranch(4) + cell = SimpleCell(3, 4) + net = SimpleNet(3, 3, 4) # test API equivalence assert all(net.cell(0).branch(0).show() == net[0, 0].show()) @@ -57,29 +56,26 @@ def test_getitem(): pass -def test_loc_v_comp(): - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(4)]) - - cum_nseg = branch.cumsum_nseg - nsegs = branch.nseg_per_branch +def test_loc_v_comp(SimpleBranch): + branch = SimpleBranch(4) + ncomps = branch.ncomp_per_branch branch_ind = 0 assert np.all(branch.comp(0).show() == branch.loc(0.0).show()) assert np.all(branch.comp(3).show() == branch.loc(1.0).show()) - inferred_loc = loc_of_index(2, branch_ind, nsegs) + inferred_loc = loc_of_index(2, branch_ind, ncomps) assert np.all(branch.loc(inferred_loc).show() == branch.comp(2).show()) - inferred_ind = local_index_of_loc(0.4, branch_ind, nsegs) + inferred_ind = local_index_of_loc(0.4, branch_ind, ncomps) assert np.all(branch.comp(inferred_ind).show() == branch.loc(0.4).show()) -def test_shape(): - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(4)]) - cell = jx.Cell([branch for _ in range(3)], parents=jnp.asarray([-1, 0, 0])) - net = jx.Network([cell for _ in range(3)]) +def test_shape(SimpleComp, SimpleBranch, SimpleCell, SimpleNet): + comp = SimpleComp() + branch = SimpleBranch(4) + cell = SimpleCell(3, 4) + net = SimpleNet(3, 3, 4) assert net.shape == (3, 3 * 3, 3 * 3 * 4) assert cell.shape == (3, 3 * 4) @@ -98,11 +94,10 @@ def test_shape(): assert net.cell(0).branch(0).comp(0).shape == (1, 1, 1) -def test_set_and_insert(): - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(4)]) - cell = jx.Cell([branch for _ in range(5)], parents=jnp.asarray([-1, 0, 0, 1, 1])) - net = jx.Network([cell for _ in range(5)]) +def test_set_and_insert(SimpleBranch, SimpleCell, SimpleNet): + branch = SimpleBranch(4) + cell = SimpleCell(5, 4) + net = SimpleNet(5, 5, 4) net1 = deepcopy(net) net2 = deepcopy(net) net3 = deepcopy(net) @@ -164,7 +159,7 @@ def test_set_and_insert(): # test insert multiple stimuli single_current = jx.step_current( - i_delay=10.0, i_dur=80.0, i_amp=5.0, delta_t=0.025, t_max=100.0 + i_delay=0.5, i_dur=1.0, i_amp=0.1, delta_t=0.025, t_max=5.0 ) batch_of_currents = np.vstack([single_current for _ in range(4)]) @@ -186,11 +181,8 @@ def test_set_and_insert(): assert np.all(cell1.recordings == cell2.recordings) -def test_local_indexing(): - comp = jx.Compartment() - branch = jx.Branch([comp for _ in range(4)]) - cell = jx.Cell([branch for _ in range(5)], parents=jnp.asarray([-1, 0, 0, 1, 1])) - net = jx.Network([cell for _ in range(2)]) +def test_local_indexing(SimpleNet): + net = SimpleNet(2, 5, 4) local_idxs = net.nodes[ ["local_cell_index", "local_branch_index", "local_comp_index"] @@ -206,11 +198,10 @@ def test_local_indexing(): global_index += 1 -def test_indexing_a_compartment_of_many_branches(): - comp = jx.Compartment() - branch1 = jx.Branch(comp, nseg=3) - branch2 = jx.Branch(comp, nseg=4) - branch3 = jx.Branch(comp, nseg=5) +def test_indexing_a_compartment_of_many_branches(SimpleBranch): + branch1 = SimpleBranch(ncomp=3) + branch2 = SimpleBranch(ncomp=4) + branch3 = SimpleBranch(ncomp=5) cell1 = jx.Cell([branch1, branch2, branch3], parents=[-1, 0, 0]) cell2 = jx.Cell([branch3, branch2], parents=[-1, 0]) net = jx.Network([cell1, cell2]) @@ -236,9 +227,9 @@ def test_indexing_a_compartment_of_many_branches(): def test_solve_indexer(): - nsegs = [4, 3, 4, 2, 2, 3, 3] - cumsum_nseg = cumsum_leading_zero(nsegs) - idx = JaxleySolveIndexer(cumsum_nseg) + ncomps = [4, 3, 4, 2, 2, 3, 3] + cumsum_ncomp = cumsum_leading_zero(ncomps) + idx = JaxleySolveIndexer(cumsum_ncomp) branch_inds = np.asarray([0, 2]) assert np.all(idx.first(branch_inds) == np.asarray([0, 7])) assert np.all(idx.last(branch_inds) == np.asarray([3, 10])) @@ -247,16 +238,8 @@ def test_solve_indexer(): assert np.all(idx.upper(branch_inds) == np.asarray([[0, 1, 2], [7, 8, 9]])) -comp = jx.Compartment() -branch = jx.Branch(comp, nseg=3) -cell = jx.Cell([branch] * 3, parents=[-1, 0, 0]) -net = jx.Network([cell] * 3) -connect(net[0, 0, 0], net[0, 0, 1], TestSynapse()) - - # make sure all attrs in module also have a corresponding attr in view -@pytest.mark.parametrize("module", [comp, branch, cell, net]) -def test_view_attrs(module: jx.Compartment | jx.Branch | jx.Cell | jx.Network): +def test_view_attrs(SimpleComp, SimpleBranch, SimpleCell, SimpleNet): """Check if all attributes of Module have a corresponding attribute in View. To ensure that View behaves like a Module as much as possible, View should support @@ -267,15 +250,15 @@ def test_view_attrs(module: jx.Compartment | jx.Branch | jx.Cell | jx.Network): exceptions = ["view"] # TODO: Types are inconsistent between different Modules - exceptions += ["cumsum_nbranches"] + exceptions += ["_cumsum_nbranches"] # TODO FROM #447: should be added to View in the future exceptions += [ "_internal_node_inds", - "par_inds", - "child_inds", - "child_belongs_to_branchpoint", - "solve_indexer", + "_par_inds", + "_child_inds", + "_child_belongs_to_branchpoint", + "_solve_indexer", "_comp_edges", "_n_nodes", "_data_inds", @@ -284,65 +267,82 @@ def test_view_attrs(module: jx.Compartment | jx.Branch | jx.Cell | jx.Network): ] # for base/comp exceptions += ["comb_children"] # for cell exceptions += [ - "cells_list", - "cumsum_nbranchpoints_per_cell", - "_cumsum_nseg_per_cell", + "_cells_list", + "_cumsum_nbranchpoints_per_cell", + "_cumsum_ncomp_per_cell", ] # for network - for name, attr in module.__dict__.items(): - if name not in exceptions: - # check if attr is in view - view = View(module) - assert hasattr(view, name), f"View missing attribute: {name}" - # check if types match - assert type(getattr(module, name)) == type( - getattr(view, name) - ), f"Type mismatch: {name}, Module type: {type(getattr(module, name))}, View type: {type(getattr(view, name))}" - + for module in [ + SimpleComp(), + SimpleBranch(2), + SimpleCell(2, 3), + SimpleNet(2, 2, 3, connect=True), + ]: + for name, attr in module.__dict__.items(): + if name not in exceptions: + # check if attr is in view + view = View(module) + assert hasattr(view, name), f"View missing attribute: {name}" + # check if types match + assert type(getattr(module, name)) == type( + getattr(view, name) + ), f"Type mismatch: {name}, Module type: {type(getattr(module, name))}, View type: {type(getattr(view, name))}" + + +def test_view_supported_index_types(SimpleComp, SimpleBranch, SimpleCell, SimpleNet): + """Check if different ways to index into Modules/Views work correctly.""" + # test int, range, slice, list, np.array, pd.Index -comp = jx.Compartment() -branch = jx.Branch([comp] * 4) -cell = jx.Cell([branch] * 4, parents=[-1, 0, 0, 0]) -net = jx.Network([cell] * 4) + for module in [ + SimpleComp(), + SimpleBranch(4), + SimpleCell(3, 4), + SimpleNet(2, 3, 4), + ]: + index_types = [ + 0, + range(3), + slice(0, 3), + [0, 1, 2], + np.array([0, 1, 2]), + pd.Index([0, 1, 2]), + np.array([True, False, True, False] * 100)[: len(module.nodes)], + ] + # comp.comp is not allowed + all_inds = module.nodes.index.to_numpy() + if not isinstance(module, jx.Compartment): + # `_reformat_index` should always return a np.ndarray + for index in index_types: + assert isinstance( + module._reformat_index(index), np.ndarray + ), f"Failed for {type(index)}" -@pytest.mark.parametrize("module", [comp, branch, cell, net]) -def test_view_supported_index_types(module): - """Check if different ways to index into Modules/Views work correctly.""" - # test int, range, slice, list, np.array, pd.Index - index_types = [ - 0, - range(3), - slice(0, 3), - [0, 1, 2], - np.array([0, 1, 2]), - pd.Index([0, 1, 2]), - ] + # test indexing into module and view + assert module.comp(index), f"Failed for {type(index)}" + assert View(module).comp(index), f"Failed for {type(index)}" - # comp.comp is not allowed - if not isinstance(module, jx.Compartment): - # `_reformat_index` should always return a np.ndarray - for index in index_types: - assert isinstance( - module._reformat_index(index), np.ndarray - ), f"Failed for {type(index)}" - assert module.comp(index), f"Failed for {type(index)}" - assert View(module).comp(index), f"Failed for {type(index)}" + expected_inds = all_inds[index] + assert np.all(module.select(nodes=index).nodes.index == expected_inds) # for loc test float and list of floats assert module.loc(0.0), "Failed for float" assert module.loc([0.0, 0.5, 1.0]), "Failed for List[float]" - else: - with pytest.raises(AssertionError): - module.comp(0) + else: + with pytest.raises(AssertionError): + module.comp(0) + + if isinstance(module, jx.Network): + connect(module[0, 0, :], module[1, 0, :], TestSynapse()) + all_inds = module.edges.index.to_numpy() + for index in index_types[:-1] + [np.array([True, False, True, False])]: + expected_inds = all_inds[index] + assert np.all(module.select(edges=index).edges.index == expected_inds) -def test_select(): +def test_select(SimpleNet): """Ensure `select` works correctly and returns expected View of Modules.""" - comp = jx.Compartment() - branch = jx.Branch([comp] * 3) - cell = jx.Cell([branch] * 3, parents=[-1, 0, 0]) - net = jx.Network([cell] * 3) + net = SimpleNet(3, 3, 2, connect=False) connect(net[0, 0, :], net[1, 0, :], TestSynapse()) np.random.seed(0) @@ -359,7 +359,7 @@ def test_select(): # check if pre and post comps of edges are in nodes edge_node_inds = np.unique( - view.edges[["global_pre_comp_index", "global_post_comp_index"]] + view.edges[["pre_global_comp_index", "post_global_comp_index"]] .to_numpy() .flatten() ) @@ -379,12 +379,10 @@ def test_select(): ), "Selecting nodes and edges by index failed for edges." -def test_viewing(): +def test_viewing(SimpleCell, SimpleNet): """Test that the View object is working correctly.""" - comp = jx.Compartment() - branch = jx.Branch([comp] * 3) - cell = jx.Cell([branch] * 3, parents=[-1, 0, 0]) - net = jx.Network([cell] * 3) + cell = SimpleCell(3, 3) + net = SimpleNet(3, 3, 3) # test parameter sharing works correctly nodes1 = net.branch(0).comp("all").nodes @@ -433,11 +431,9 @@ def test_viewing(): net.scope("global").comp(999) # Nothing should be in View -def test_scope(): +def test_scope(SimpleCell): """Ensure scope has the intended effect for Modules and Views.""" - comp = jx.Compartment() - branch = jx.Branch([comp] * 3) - cell = jx.Cell([branch] * 3, parents=[-1, 0, 0]) + cell = SimpleCell(3, 3) view = cell.scope("global").branch(1) assert view._scope == "global" @@ -467,11 +463,9 @@ def test_scope(): ) -def test_context_manager(): +def test_context_manager(SimpleCell): """Test that context manager works correctly for Module.""" - comp = jx.Compartment() - branch = jx.Branch([comp] * 3) - cell = jx.Cell([branch] * 3, parents=[-1, 0, 0]) + cell = SimpleCell(3, 3) with cell.branch(0).comp(0) as comp: comp.set("v", -71) @@ -492,11 +486,10 @@ def test_context_manager(): ), "Context management of View not working." -def test_iter(): +def test_iter(SimpleBranch): """Test that __iter__ works correctly for all modules.""" - comp = jx.Compartment() - branch1 = jx.Branch([comp] * 2) - branch2 = jx.Branch([comp] * 3) + branch1 = SimpleBranch(2) + branch2 = SimpleBranch(3) cell = jx.Cell([branch1, branch1, branch2], parents=[-1, 0, 0]) net = jx.Network([cell] * 2) @@ -552,12 +545,9 @@ def test_iter(): assert np.all(cell.nodes["v"] == -73), "Setting parameters with __iter__ failed." -def test_synapse_and_channel_filtering(): +def test_synapse_and_channel_filtering(SimpleNet): """Test that synapses and channels are filtered correctly by View.""" - comp = jx.Compartment() - branch = jx.Branch([comp] * 3) - cell = jx.Cell([branch] * 3, parents=[-1, 0, 0]) - net = jx.Network([cell] * 3) + net = SimpleNet(3, 3, 3, connect=False) net.insert(HH()) connect(net[0, 0, :], net[1, 0, :], TestSynapse()) @@ -581,10 +571,10 @@ def test_synapse_and_channel_filtering(): assert np.all(edges1 == edges2) -def test_view_equals_module(): +def test_view_equals_module(SimpleComp, SimpleBranch): """Test that View behaves the same as Module for important attrs and methods.""" - comp = jx.Compartment() - branch = jx.Branch([comp] * 3) + comp = SimpleComp(copy=True) + branch = SimpleBranch(3) comp.insert(HH()) branch.comp([0, 1]).insert(HH())