diff --git a/.flake8 b/.flake8
index a40b8e4cf..2540cc475 100644
--- a/.flake8
+++ b/.flake8
@@ -1,7 +1,8 @@
[flake8]
-
-ignore = F401
-
+ignore = E203, E501, W503
+max-line-length = 80
+max-complexity = 18
+select = B,C,E,F,W,T4,B9
exclude =
__pycache__,
__pyphi_cache__,
diff --git a/.gitignore b/.gitignore
index cf741b414..c4c4c93a6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,30 +1,20 @@
__pycache__
.cache
-.ropeproject
.venv
.env
-.pythonrc*
.agignore
-.projectile
-**/*.pyc
+.tox
+.coverage
**/*.egg-info
**/*.log
**/*.BACKUP
-.tox
-pyphi/data/hamming_matrices/10.npy
__pyphi_cache__
dist
build
-profiling
docs/_build
-.coverage
htmlcov
-results
-html
-env
+profiling
benchmarks/pyphi_config.yml
-profiling/pyphi_config.yml
+benchmarks/env
+benchmarks/results
ignore
-.ignore
-startup.py
-my_requirements.txt
diff --git a/.isort.cfg b/.isort.cfg
index bd170cf33..9bae4bf1b 100644
--- a/.isort.cfg
+++ b/.isort.cfg
@@ -1,5 +1,9 @@
[settings]
-line_length=80
+multi_line_output=3
+include_trailing_comma=True
+force_grid_wrap=0
+use_parentheses=True
+line_length=88
indent=' '
default_section=THIRDPARTY
known_first_party=pyphi
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 000000000..c2f5f531c
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,77 @@
+exclude: '^$'
+fail_fast: false
+repos:
+
+- repo: https://github.com/pre-commit/pre-commit-hooks.git
+ rev: v2.2.3
+ hooks:
+ - id: autopep8-wrapper
+ - id: check-added-large-files
+ - id: debug-statements
+ - id: double-quote-string-fixer
+ - id: end-of-file-fixer
+ - id: fix-encoding-pragma
+ - id: flake8
+ additional_dependencies: [
+ 'flake8-blind-except',
+ 'flake8-coding',
+ 'flake8-comprehensions',
+ 'flake8-debugger',
+ 'flake8-deprecated',
+ 'flake8-docstrings',
+ 'flake8-meiqia',
+ 'flake8-mutable',
+ 'flake8-pep3101',
+ 'flake8-print',
+ 'flake8-quotes',
+ 'flake8-string-format',
+ 'flake8-tidy-imports',
+ 'flake8-todo']
+ exclude: 'test_oauth.py'
+ - id: trailing-whitespace
+
+- repo: https://github.com/ambv/black
+ rev: 19.3b0
+ hooks:
+ - id: black
+ name: black
+ description: 'Black: The uncompromising Python code formatter'
+ entry: black
+ language: python
+ language_version: python3
+ require_serial: true
+ types: [python]
+
+# - repo: git@github.com:pre-commit/mirrors-yapf.git
+# sha: v0.20.0
+# hooks:
+# - id: yapf
+# exclude: 'migrations|settings|scripts'
+# additional_dependencies: ['futures']
+# args: ['--style=.style.yapf', '--parallel', '--in-place']
+
+# - repo: git@github.com:FalconSocial/pre-commit-python-sorter.git
+# sha: b57843b0b874df1d16eb0bef00b868792cb245c2
+# hooks:
+# - id: python-import-sorter
+# args: ['--silent-overwrite']
+
+# - repo: git@github.com:humitos/mirrors-docformatter.git
+# sha: v0.0.1
+# hooks:
+# - id: docformatter
+# args: ['--in-place', '--wrap-summaries=80', '--wrap-descriptions=80', '--pre-summary-newline', '--no-blank']
+
+# - repo: git@github.com:humitos/mirrors-autoflake.git
+# sha: v1.0
+# hooks:
+# - id: autoflake
+# args: ['--in-place', '--remove-all-unused-imports', '--remove-unused-variable']
+
+# - repo: git://github.com/guykisel/prospector-mirror
+# sha: 'b27f281eb9398fc8504415d7fbdabf119ea8c5e1'
+# hooks:
+# - id: prospector
+# # https://github.com/pre-commit/pre-commit/issues/178
+# language: system
+# args: ['--profile=prospector']
diff --git a/.pylintrc b/.pylintrc
index b44cff81b..7dc3241cc 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -60,6 +60,7 @@ disable =
no-name-in-module,
no-self-use,
super-on-old-class,
+ bad-continuation,
[REPORTS]
diff --git a/.travis.yml b/.travis.yml
index baed50436..30248be1d 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,3 +1,5 @@
+dist: xenial
+
language: python
sudo: false
@@ -14,14 +16,15 @@ services:
- redis-server # port 6379 (default)
python:
- - "3.4"
- - "3.5"
- - "3.6"
+ - 3.4
+ - 3.5
+ - 3.6
+ - 3.7
# Install packages
install:
- pip install --upgrade pip setuptools wheel
- - pip install --only-binary=numpy numpy==1.14
+ - if [[ $TRAVIS_PYTHON_VERSION == 3.4 ]]; then pip install --only-binary=numpy numpy==1.15.4; else pip install --only-binary=numpy numpy==1.16.4; fi
- pip install --only-binary=scipy -r requirements.txt
- pip install coveralls
- pip freeze
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ba2e72cf3..dc9faa8fa 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,49 @@
Changelog
=========
+1.2.0
+-----
+_2019-06-21_
+
+### Fixes
+
+- Fixed a bug introduced into `pyphi.utils.load_data()` by a breaking change
+ in recent versions of NumPy that caused an error on import.
+- Fixed a bug where changing `config.PRECISION` dynamically did not change
+ `constants.EPSILON`, causing some comparisons that relied on
+ `constants.EPSILON` to not reflect the new precision.
+- Changing `config.FS_CACHE_DIRECTORY` and `config.FS_CACHE_VERBOSITY` now
+ causes a new `joblib.Memory` cache to be created. Previously, changing these
+ options dynamically had no effect.
+- Made test suite compatible with stricter usage of `pytest` fixtures
+ required by recent versions of `pytest`.
+
+### API additions
+
+- Added `pyphi.tpm.reconstitute_tpm()`.
+
+### API changes
+
+- Renamed `pyphi.partition.partition_registry` to
+ `pyphi.partition.partition_types`.
+- Renamed `pyphi.distance.bld()` to `pyphi.distance.klm()`.
+- Fixed the connectivity matrix of the `def
+ disjunction_conjunction_network()`.
+- Removed `'expanded_*_reperotire'` attributes of JSON-serialized `Concept`s.
+
+### Config
+
+- Added the `WELCOME_OFF` option to turn off the new welcome message.
+
+### Documentation
+
+- Added documentation for the `partition_types` registry.
+- Added documentation for the filesystem and database caches.
+
+
1.1.0
-----
+_2018-05-30_
### Fixes
@@ -15,6 +56,7 @@ Changelog
- Made model hashes deterministic (6b59061). This fixes an issue with the Redis
MICE cache in which cached values were not shared between processes and
program invokations.
+- Fixed the connectivity matrix in `examples.disjunction_conjunction.network()`.
### API additions
diff --git a/INSTALLATION.rst b/INSTALLATION.rst
index 4e5869376..c5aeea21e 100644
--- a/INSTALLATION.rst
+++ b/INSTALLATION.rst
@@ -40,7 +40,7 @@ Now that we're using our shiny new Python versions, it is highly recommended to
set up a **virtual environment** in which to install PyPhi. Virtual
environments allow different projects to isolate their dependencies from one
another, so that they don't interact in unexpected ways. Please see `this guide
-`__ for more information.
+`__ for more information.
To do this, you must install ``virtualenvwrapper``, a `tool for manipulating
virtual environments `__. This tool
diff --git a/Makefile b/Makefile
index 51eba8fb1..da3ab56f7 100644
--- a/Makefile
+++ b/Makefile
@@ -69,3 +69,6 @@ build-dist: clean-dist
clean-dist:
rm -rf $(dist_dir)
+
+clean:
+ rm -rf **/__pycache__
diff --git a/README.md b/README.md
index 10dd7df61..5dcd08f6f 100644
--- a/README.md
+++ b/README.md
@@ -13,18 +13,17 @@
PyPhi is a Python library for computing integrated information (𝚽), and the
associated quantities and objects.
-**If you use this code, please cite the manuscript:**
+**If you use this code, please cite the paper:**
---
-Mayner WGP, Marshall W, Albantakis L, Findlay G, Marchman R, Tononi G (2017).
-[PyPhi: A toolbox for integrated
-information](https://arxiv.org/abs/1712.09644). arXiv:1712.09644 \[q-bio.NC\].
+Mayner WGP, Marshall W, Albantakis L, Findlay G, Marchman R, Tononi G. (2018)
+[PyPhi: A toolbox for integrated information
+theory](https://doi.org/10.1371/journal.pcbi.1006343). PLOS Computational
+Biology 14(7): e1006343.
---
-The manuscript is available at .
-
## Usage, Examples, and API documentation
@@ -113,25 +112,47 @@ before installing the requirements:
sudo apt-get install python3-dev python3-scipy python3-numpy
```
+### Developing on Windows
+
+If you're just looking for an editable install, pip may work better than the conda develop utility included in the conda-build package. When using pip on Windows, the build of pyemd may fail. The simplest solution to this is to obtain pyemd through conda.
+
+```bash
+conda create -n pyphi_dev
+conda activate pyphi_dev
+conda install -c wmayner pyemd
+cd path/to/local/editable/copy/of/pyphi
+pip install -e .
+```
+
+Unfortunately, pip isn't great at managing the DLLs that some packages (especially scipy) rely on. If you have missing DLL errors, try reinstalling the offending package (here, scipy) with conda.
+
+```bash
+conda activate pyphi_dev
+pip uninstall scipy
+conda install scipy
+```
## Credit
### Please cite these papers if you use this code:
-Mayner WGP, Marshall W, Albantakis L, Findlay G, Marchman R, Tononi G (2017).
-[PyPhi: A toolbox for integrated
-information](https://arxiv.org/abs/1712.09644). arXiv:1712.09644 \[q-bio.NC\].
+Mayner WGP, Marshall W, Albantakis L, Findlay G, Marchman R, Tononi G. (2018)
+[PyPhi: A toolbox for integrated information
+theory](https://doi.org/10.1371/journal.pcbi.1006343). PLOS Computational
+Biology 14(7): e1006343.
```
-@article{mayner2017pyphi,
- title={PyPhi: A toolbox for integrated information},
- author={Mayner, William, Gerald Paul AND Marshall, William AND
- Albantakis, Larissa AND Findlay, Graham AND
- Marchman, Robert AND Tononi, Giulio},
- journal={arXiv:1712.09644 [q-bio.NC]},
- year={2017},
- month={12},
- url={https://arxiv.org/abs/1712.09644}
+@article{mayner2018pyphi,
+ title={PyPhi: A toolbox for integrated information theory},
+ author={Mayner, William GP and Marshall, William and Albantakis, Larissa and Findlay, Graham and Marchman, Robert and Tononi, Giulio},
+ journal={PLoS Computational Biology},
+ volume={14},
+ number={7},
+ pages={e1006343},
+ year={2018},
+ publisher={Public Library of Science},
+ doi={10.1371/journal.pcbi.1006343},
+ url={https://doi.org/10.1371/journal.pcbi.1006343}
}
```
diff --git a/docs/caching.rst b/docs/caching.rst
new file mode 100644
index 000000000..b308cd367
--- /dev/null
+++ b/docs/caching.rst
@@ -0,0 +1 @@
+.. include:: ../CACHING.rst
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
index 7be162619..41f653359 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -62,7 +62,7 @@
# General information about the project.
project = 'PyPhi'
-copyright = '2014--2017 {}'.format(__author__)
+copyright = '2014--2018 {}'.format(__author__)
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@@ -121,7 +121,10 @@
.. |big_phi_max| replace:: :math:`\Phi^{\textrm{max}}`
.. |small_phi| replace:: :math:`\varphi`
.. |small_phi > 0| replace:: :math:`\varphi > 0`
+.. |small_phi = 0| replace:: :math:`\varphi = 0`
.. |small_phi_max| replace:: :math:`\varphi^{\textrm{max}}`
+.. |small_phi = 1/6| replace:: :math:`\varphi = \frac{1}{6}`
+.. |small_phi = 1/10| replace:: :math:`\varphi = \frac{1}{10}`
.. |big_alpha| replace:: :math:`\mathcal{A}`
.. |big_alpha > 0| replace:: :math:`\mathcal{A} > 0`
.. |alpha| replace:: :math:`\alpha`
@@ -150,8 +153,6 @@
.. |(AB / DE) x (∅ / C)| replace:: :math:`\frac{AB}{DE} \times \frac{\varnothing}{C}`
.. |(A / CD) x (∅ / E)| replace:: :math:`\frac{A}{CD} \times \frac{\varnothing}{E}`
.. |(∅ / C) x (A / D)| replace:: :math:`\frac{\varnothing}{C} \times \frac{A}{D}`
-.. |small_phi = 1/6| replace:: :math:`\varphi = \frac{1}{6}`
-.. |small_phi = 1/10| replace:: :math:`\varphi = \frac{1}{10}`
.. |t| replace:: :math:`t`
.. |t-1| replace:: :math:`t-1`
.. |t+1| replace:: :math:`t+1`
@@ -168,6 +169,8 @@
.. |N| replace:: :math:`N`
.. |n x n| replace:: :math:`N \times N`
.. |2^n x 2^n| replace:: :math:`2^N \times 2^N`
+.. |2^m x 2| replace:: :math:`2^m \times 2`
+.. |m| replace:: :math:`m`
.. |i| replace:: :math:`i`
.. |j| replace:: :math:`j`
.. |i,jth| replace:: :math:`(i,j)^{\textrm{th}}`
diff --git a/docs/examples/actual_causation.rst b/docs/examples/actual_causation.rst
index 2c4462e5e..97a8c3fa8 100644
--- a/docs/examples/actual_causation.rst
+++ b/docs/examples/actual_causation.rst
@@ -1,12 +1,16 @@
Actual Causation
================
-This section demonstrates how to use PyPhi to evaluate actual causation as
+This section demonstrates how to use PyPhi to evaluate actual causation, as
described in
-`Albantakis L, Marshall W, Hoel E, Tononi G (2017). What caused what? An
-irreducible account of actual causation. arXiv:1708.06716 [cs.AI]
-`_.
+ Albantakis L, Marshall W, Hoel E, Tononi G (2019).
+ What Caused What? A quantitative Account of Actual Causation Using
+ Dynamical Causal Networks.
+ *Entropy*, 21 (5), pp. 459.
+ ``_
+
+First, we'll import the modules we need:
>>> import pyphi
>>> from pyphi import actual, config, Direction
diff --git a/docs/index.rst b/docs/index.rst
index 253fc09ba..fadec7160 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -3,6 +3,13 @@ PyPhi
PyPhi is a Python library for computing integrated information.
+If you use this software in your research, please cite the paper:
+
+ Mayner WGP, Marshall W, Albantakis L, Findlay G, Marchman R, Tononi G.
+ (2018) PyPhi: A toolbox for integrated information theory. *PLOS
+ Computational Biology* 14(7): e1006343.
+ https://doi.org/10.1371/journal.pcbi.1006343
+
To report issues, use the issue tracker on the `GitHub repository
`_. Bug reports and pull requests are
welcome.
@@ -43,6 +50,7 @@ For general discussion, you are welcome to join the `pyphi-users group
:maxdepth: 1
configuration
+ caching
.. toctree::
:caption: API Reference
diff --git a/paper/journal.pcbi.1006343.pdf b/paper/journal.pcbi.1006343.pdf
new file mode 100644
index 000000000..253fe8813
Binary files /dev/null and b/paper/journal.pcbi.1006343.pdf differ
diff --git a/paper/pcbi.1006343.s001.pdf b/paper/pcbi.1006343.s001.pdf
new file mode 100644
index 000000000..1611d234b
Binary files /dev/null and b/paper/pcbi.1006343.s001.pdf differ
diff --git a/profiling/code_to_profile.py b/profiling/code_to_profile.py
deleted file mode 100644
index 12fee7961..000000000
--- a/profiling/code_to_profile.py
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-
-"""
-Profiling tool for PyPhi.
-"""
-
-import argparse
-import cProfile
-import json
-import logging
-import os
-import pickle
-import sys
-from time import time
-
-from joblib import Parallel, delayed
-
-import pyphi
-
-pyphidir = os.path.abspath('..')
-if pyphidir not in sys.path:
- sys.path.insert(0, pyphidir)
-
-
-formatter = logging.Formatter(
- fmt='%(asctime)s [%(name)s] %(levelname)s: %(message)s')
-
-PSTATS = 'pstats'
-LOGS = 'logs'
-RESULTS = 'results'
-NETWORKS = 'networks'
-
-
-def load_json_network(json_dict):
- """Load a network from a json file"""
- network = pyphi.Network.from_json(json_dict['network'])
- state = json_dict['state']
- return (network, state)
-
-
-def all_network_files():
- """All network files"""
- # TODO: list explicitly since some are missing?
- network_types = [
- 'AND-circle',
- 'MAJ-specialized',
- 'MAJ-complete',
- 'iit-3.0-modular'
- ]
- network_sizes = range(5, 8)
- network_files = []
- for n in network_sizes:
- for t in network_types:
- network_files.append('{}-{}'.format(n, t))
- return network_files
-
-
-def profile_network(filename):
- """Profile a network.
-
- Saves PyPhi results, pstats, and logs to respective directories.
- """
- log = logging.getLogger(filename)
- logfile = os.path.join(LOGS, filename + '.log')
- os.makedirs(os.path.dirname(logfile), exist_ok=True)
- handler = logging.FileHandler(logfile)
- handler.setFormatter(formatter)
- log.addHandler(handler)
- log.setLevel(logging.INFO)
-
- try:
- with open(os.path.join(NETWORKS, filename + '.json')) as f:
-
- network, state = load_json_network(json.load(f))
-
- log.info('Profiling %s...', filename)
- log.info('PyPhi configuration:\n%s',
- pyphi.config.get_config_string())
-
- start = time()
- pr = cProfile.Profile()
- pr.enable()
-
- results = tuple(pyphi.compute.complexes(network, state))
-
- pr.disable()
- end = time()
-
- pstatsfile = os.path.join(PSTATS, filename + '.pstats')
- os.makedirs(os.path.dirname(pstatsfile), exist_ok=True)
- pr.dump_stats(pstatsfile)
-
- log.info('Finished in %i seconds.', end - start)
-
- resultfile = os.path.join(RESULTS, filename + '-results.pkl')
- os.makedirs(os.path.dirname(resultfile), exist_ok=True)
- with open(resultfile, 'wb') as f:
- pickle.dump(results, f)
- except Exception as e:
- log.error(e)
- raise e
-
-
-if __name__ == "__main__":
- # Setup directories
- os.makedirs(PSTATS, exist_ok=True)
- os.makedirs(LOGS, exist_ok=True)
- os.makedirs(RESULTS, exist_ok=True)
-
- # Parse arguments
- parser = argparse.ArgumentParser(description=(
- "Program to profile PyPhi on sample networks. \n\n"
- "After running this code, either\n"
- " - Use `python -m pstats [file.pstats]` for an interactive "
- "pstats prompt.\n"
- " - Use `loadprofile.sh [file.pstats] && print_stats.py` to print "
- "the most offensive functions.\n"
- " - Use the `makecallgraph` script to visualize the call graph.\n\n"
- "For the most descriptive results, disable any parallelization in "
- "PyPhi."))
- parser.add_argument('network_file', nargs='?', help=(
- "The network to profile, e.g. '5-AND-circle'."
- "Defaults to all networks."))
- parser.add_argument('-p', nargs='?',
- help=('Profile networks in parallel.'),
- default=False)
- args = parser.parse_args()
-
- # Network to profile
- if args.network_file:
- network_files = [args.network_file]
- else:
- network_files = all_network_files()
-
- # Do it
- if len(network_files) > 1:
- Parallel(n_jobs=(-5), verbose=20)(
- delayed(profile_network)(filename) for filename in network_files)
- else:
- for filename in network_files:
- profile_network(filename)
diff --git a/profiling/loadprofile.sh b/profiling/loadprofile.sh
deleted file mode 100755
index 4050ec88f..000000000
--- a/profiling/loadprofile.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-outputfile="profile.pstats"
-echo "Loaded $1 to $outputfile"
-cp $1 $outputfile
diff --git a/profiling/makecallgraph b/profiling/makecallgraph
index 015227e82..d8c7f9621 100755
--- a/profiling/makecallgraph
+++ b/profiling/makecallgraph
@@ -1,3 +1,3 @@
#!/bin/sh
-./gprof2dot -f pstats profile.pstats | dot -Tsvg -o callgraph.svg
+./gprof2dot -f pstats $1 | dot -Tsvg -o callgraph.svg
diff --git a/profiling/networks/5-AND-circle.json b/profiling/networks/5-AND-circle.json
deleted file mode 100644
index ed9067d15..000000000
--- a/profiling/networks/5-AND-circle.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 0.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]]]]], "cm": [[0, 1, 0, 0, 1], [1, 0, 1, 0, 0], [0, 1, 0, 1, 0], [0, 0, 1, 0, 1], [1, 0, 0, 1, 0]], "size": 5, "labels": ["n0", "n1", "n2", "n3", "n4"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723368}, "state": [1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/5-MAJ-complete.json b/profiling/networks/5-MAJ-complete.json
deleted file mode 100644
index 274dde45f..000000000
--- a/profiling/networks/5-MAJ-complete.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]], [[[1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]]]]], "cm": [[1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 0, 1, 1, 1]], "size": 5, "labels": ["n0", "n1", "n2", "n3", "n4"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723256}, "state": [1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/5-MAJ-specialized.json b/profiling/networks/5-MAJ-specialized.json
deleted file mode 100644
index 78b61fd42..000000000
--- a/profiling/networks/5-MAJ-specialized.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 0.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 0.0, 1.0, 1.0, 1.0]], [[1.0, 0.0, 0.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 1.0, 0.0, 0.0]], [[0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 0.0]], [[1.0, 1.0, 0.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 1.0, 1.0, 0.0], [0.0, 1.0, 1.0, 1.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0]]]]]], "cm": [[0, 1, 1, 1, 0], [0, 0, 1, 1, 1], [1, 0, 0, 1, 1], [1, 1, 0, 0, 1], [1, 1, 1, 0, 0]], "size": 5, "labels": ["n0", "n1", "n2", "n3", "n4"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723144}, "state": [1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/6-AND-circle.json b/profiling/networks/6-AND-circle.json
deleted file mode 100644
index ffc31bd75..000000000
--- a/profiling/networks/6-AND-circle.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0, 1.0, 0.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [1.0, 0.0, 0.0, 1.0, 0.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 1.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0, 0.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 1.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 1.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 1.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 1.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 1.0, 1.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]], "cm": [[0, 1, 0, 0, 0, 1], [1, 0, 1, 0, 0, 0], [0, 1, 0, 1, 0, 0], [0, 0, 1, 0, 1, 0], [0, 0, 0, 1, 0, 1], [1, 0, 0, 0, 1, 0]], "size": 6, "labels": ["n0", "n1", "n2", "n3", "n4", "n5"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723816}, "state": [1, 1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/6-MAJ-complete.json b/profiling/networks/6-MAJ-complete.json
deleted file mode 100644
index bb34c6d0f..000000000
--- a/profiling/networks/6-MAJ-complete.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]], "cm": [[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]], "size": 6, "labels": ["n0", "n1", "n2", "n3", "n4", "n5"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723144}, "state": [1, 1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/6-MAJ-specialized.json b/profiling/networks/6-MAJ-specialized.json
deleted file mode 100644
index 39f2d1a38..000000000
--- a/profiling/networks/6-MAJ-specialized.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 0.0, 0.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 0.0, 0.0, 0.0, 1.0, 1.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 1.0, 0.0, 0.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 1.0, 1.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 1.0, 1.0, 0.0], [0.0, 0.0, 1.0, 1.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 0.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 1.0, 0.0, 0.0, 0.0]], [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0]], [[1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 1.0, 0.0, 0.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 1.0, 1.0, 1.0, 0.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 0.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 1.0, 1.0, 0.0, 0.0], [0.0, 1.0, 1.0, 1.0, 0.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 0.0, 0.0]]], [[[0.0, 0.0, 1.0, 1.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 0.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 1.0, 1.0, 1.0, 0.0], [0.0, 1.0, 1.0, 1.0, 1.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]], "cm": [[0, 1, 1, 1, 0, 0], [0, 0, 1, 1, 1, 0], [0, 0, 0, 1, 1, 1], [1, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 1], [1, 1, 1, 0, 0, 0]], "size": 6, "labels": ["n0", "n1", "n2", "n3", "n4", "n5"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723816}, "state": [1, 1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/6-iit-3.0-modular.json b/profiling/networks/6-iit-3.0-modular.json
deleted file mode 100644
index b3e3293c1..000000000
--- a/profiling/networks/6-iit-3.0-modular.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]], [[[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 0.0, 1.0], [0.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 1.0, 0.0, 1.0, 1.0, 1.0]]], [[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 1.0, 1.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]], "cm": [[0, 1, 0, 1, 0, 1], [1, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 0, 0], [0, 1, 0, 1, 0, 1], [0, 0, 0, 0, 1, 0]], "size": 6, "labels": ["n0", "n1", "n2", "n3", "n4", "n5"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723144}, "state": [1, 1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/7-AND-circle.json b/profiling/networks/7-AND-circle.json
deleted file mode 100644
index 5230f0090..000000000
--- a/profiling/networks/7-AND-circle.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0], [1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]], [[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]], [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]], [[0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0], [0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0]], [[0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]], [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0]], [[0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0]], [[0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]]], "cm": [[0, 1, 0, 0, 0, 0, 1], [1, 0, 1, 0, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0], [0, 0, 1, 0, 1, 0, 0], [0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 1, 0, 1], [1, 0, 0, 0, 0, 1, 0]], "size": 7, "labels": ["n0", "n1", "n2", "n3", "n4", "n5", "n6"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723872}, "state": [1, 1, 1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/7-MAJ-complete.json b/profiling/networks/7-MAJ-complete.json
deleted file mode 100644
index 1520acf96..000000000
--- a/profiling/networks/7-MAJ-complete.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]], [[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]]], "cm": [[1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1]], "size": 7, "labels": ["n0", "n1", "n2", "n3", "n4", "n5", "n6"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723144}, "state": [1, 1, 1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/7-MAJ-specialized.json b/profiling/networks/7-MAJ-specialized.json
deleted file mode 100644
index aa5b00c42..000000000
--- a/profiling/networks/7-MAJ-specialized.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0], [1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0], [0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]], [[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0]], [[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0], [1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0]], [[1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0], [1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0], [0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]], [[[[[[0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0]]], [[[0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0]], [[1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0]]]], [[[[0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0], [0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0]]], [[[0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0], [0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0]]], [[[0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]], [[[[0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0], [0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]]], "cm": [[0, 1, 1, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 0, 1, 1, 1, 0], [0, 0, 0, 0, 1, 1, 1], [1, 0, 0, 0, 0, 1, 1], [1, 1, 0, 0, 0, 0, 1], [1, 1, 1, 0, 0, 0, 0]], "size": 7, "labels": ["n0", "n1", "n2", "n3", "n4", "n5", "n6"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723872}, "state": [1, 1, 1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/8-iit-3.0-modular.json b/profiling/networks/8-iit-3.0-modular.json
deleted file mode 100644
index 48ad1ddaa..000000000
--- a/profiling/networks/8-iit-3.0-modular.json
+++ /dev/null
@@ -1 +0,0 @@
-{"network": {"tpm": [[[[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]], [[[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]], [[[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]]]], [[[[[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]], [[[[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]]], [[[[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]], [[[[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]]]]], [[[[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]], [[[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]]], [[[[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0], [0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0], [0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0]]], [[[0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0], [0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]], [[[[[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]], [[[[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]]]], [[[[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0]]], [[[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0], [1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]], [[[[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]]], [[[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]]]], [[[[1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0]], [[1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0]]], [[[1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0]], [[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0], [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]]]]]]], "cm": [[0, 1, 0, 1, 0, 1, 0, 1], [1, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 1, 0, 1], [0, 0, 1, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 1, 0, 1], [0, 0, 0, 0, 1, 0, 0, 0], [0, 1, 0, 1, 0, 1, 0, 1], [0, 0, 0, 0, 0, 0, 1, 0]], "size": 8, "labels": ["n0", "n1", "n2", "n3", "n4", "n5", "n6", "n7"], "__class__": "Network", "__version__": "0.8.1", "__id__": 4552723368}, "state": [1, 1, 1, 1, 1, 1, 1, 1]}
\ No newline at end of file
diff --git a/profiling/networks/old/5-AND-circle.json b/profiling/networks/old/5-AND-circle.json
deleted file mode 100644
index a1c1f5bf4..000000000
--- a/profiling/networks/old/5-AND-circle.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":278.922327303175,"y":110.86931173967922,"px":278.93341191522353,"py":110.92458407922327,"fixed":false,"selected":true},{"index":1,"label":"B","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":434.8655805111256,"y":175.05784140575832,"px":434.8132175866244,"py":175.09136378110455,"selected":true,"fixed":false},{"index":2,"label":"C","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":404.41316136527365,"y":342.72184603054757,"px":404.3702956276063,"py":342.68186052234637,"fixed":0,"selected":true},{"index":3,"label":"D","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":239.27389612347915,"y":384.76840745951,"px":239.30370076967472,"py":384.71386446287426,"selected":true,"fixed":false},{"index":4,"label":"E","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":164.39503051262244,"y":233.66031349728834,"px":164.45093708276121,"py":233.6675026938178,"selected":true,"fixed":false}],"tpm":[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,1,0,0,0],[0,0,0,0,0],[0,1,0,0,0],[0,0,0,0,0],[0,0,0,0,1],[0,0,1,0,0],[0,0,1,0,1],[0,0,0,0,0],[0,1,0,0,1],[0,0,1,0,0],[0,1,1,0,1],[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[0,0,0,1,0],[0,1,0,1,0],[1,0,0,1,0],[1,1,0,1,0],[0,0,0,0,0],[0,0,0,0,1],[1,0,1,0,0],[1,0,1,0,1],[0,0,0,1,0],[0,1,0,1,1],[1,0,1,1,0],[1,1,1,1,1]],"connectivityMatrix":[[0,1,0,0,1],[1,0,1,0,0],[0,1,0,1,0],[0,0,1,0,1],[1,0,0,1,0]],"currentState":[1,1,1,1,1],"pastState":[1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/5-MAJ-complete.json b/profiling/networks/old/5-MAJ-complete.json
deleted file mode 100644
index 2da677109..000000000
--- a/profiling/networks/old/5-MAJ-complete.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":4,"x":332.60147613875904,"y":141.1991060024458,"px":332.7746476223027,"py":142.21304668585995,"fixed":0},{"index":1,"label":"B","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":4,"x":444.3997112423021,"y":202.17676175661654,"px":443.4431635161501,"py":202.7416454884443,"fixed":false},{"index":2,"label":"C","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":4,"x":237.48688534893165,"y":225.78652956587723,"px":238.50068862556432,"py":225.9279434877939,"fixed":false},{"index":3,"label":"D","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":4,"x":419.5189458630763,"y":330.82492283047645,"px":418.7659478577547,"py":330.0709509480691,"fixed":false},{"index":4,"label":"E","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":4,"x":287.87013738796566,"y":345.5862241421262,"px":288.41975278076995,"py":344.6413487630764,"fixed":false}],"tpm":[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[1,0,1,1,1],[0,0,0,0,0],[1,0,1,1,1],[1,0,1,1,1],[1,1,1,1,1],[0,0,0,0,0],[1,0,1,1,1],[1,0,1,1,1],[1,1,1,1,1],[1,0,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]],"connectivityMatrix":[[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1],[1,0,1,1,1]],"currentState":[1,1,1,1,1],"pastState":[1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/5-MAJ-specialized.json b/profiling/networks/old/5-MAJ-specialized.json
deleted file mode 100644
index 361b6d8bb..000000000
--- a/profiling/networks/old/5-MAJ-specialized.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":4,"x":401.4491476759855,"y":345.1447051066806,"px":401.2399171091728,"py":344.81163223988557,"selected":true},{"index":1,"label":"B","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":4,"x":271.7894388450578,"y":331.12488683677634,"px":272.05697997812655,"py":330.8501047365263,"selected":true},{"index":2,"label":"C","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":4,"x":244.77101293642664,"y":203.15074095561653,"px":245.11329545388082,"py":203.34714199846303,"selected":true},{"index":3,"label":"D","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":4,"x":357.3206303234166,"y":140.4660675751261,"px":357.26710603089,"py":140.824677381782,"selected":true},{"index":4,"label":"E","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":4,"x":452.7746839316022,"y":226.59233930113191,"px":452.4178533755859,"py":226.65448715110767,"selected":true}],"tpm":[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,1,1,0],[0,0,0,0,0],[0,0,0,1,0],[0,0,0,1,1],[0,0,1,1,1],[0,0,0,0,0],[0,1,0,0,0],[0,0,0,0,1],[0,1,1,1,1],[1,0,0,0,1],[1,1,0,1,1],[1,0,0,1,1],[1,1,1,1,1],[0,0,0,0,0],[0,1,1,0,0],[0,0,1,0,0],[0,1,1,1,0],[1,0,0,0,0],[1,1,1,1,0],[1,0,1,1,1],[1,1,1,1,1],[1,1,0,0,0],[1,1,1,0,0],[1,1,1,0,1],[1,1,1,1,1],[1,1,0,0,1],[1,1,1,1,1],[1,1,1,1,1],[1,1,1,1,1]],"connectivityMatrix":[[0,1,1,1,0],[0,0,1,1,1],[1,0,0,1,1],[1,1,0,0,1],[1,1,1,0,0]],"currentState":[1,1,1,1,1],"pastState":[1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/6-AND-circle.json b/profiling/networks/old/6-AND-circle.json
deleted file mode 100644
index ffa2c6b34..000000000
--- a/profiling/networks/old/6-AND-circle.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":304.3914655524606,"y":136.22088245887124,"px":304.3914655524606,"py":136.22088245887124,"fixed":1,"selected":false},{"index":1,"label":"B","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":459.2213397395085,"y":193.2263535075456,"px":459.2213397395085,"py":193.2263535075456,"selected":false,"fixed":1},{"index":2,"label":"C","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":457.70457853740857,"y":362.4362656008429,"px":457.70457853740857,"py":362.4362656008429,"fixed":1,"selected":false},{"index":3,"label":"D","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":309.8245225719486,"y":428.0530201374073,"px":309.8245225719486,"py":428.0530201374073,"selected":false,"fixed":1},{"index":4,"label":"E","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":172.73040958139816,"y":357.72380867803906,"px":172.73040958139816,"py":357.72380867803906,"selected":false,"fixed":1},{"index":5,"label":"F","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":172.34924674233304,"y":203.2074377027802,"weight":2,"px":172.34924674233304,"py":203.2074377027802,"fixed":1,"selected":false}],"tpm":[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,1,0,0,0,0],[0,0,0,0,0,0],[0,1,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,1,0,0,0],[0,0,1,0,0,0],[0,0,0,0,0,0],[0,1,0,0,0,0],[0,0,1,0,0,0],[0,1,1,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,1],[0,0,0,0,0,0],[0,0,0,0,0,1],[0,0,0,1,0,0],[0,1,0,1,0,1],[0,0,0,1,0,0],[0,1,0,1,0,1],[0,0,0,0,0,0],[0,0,0,0,0,1],[0,0,1,0,0,0],[0,0,1,0,0,1],[0,0,0,1,0,0],[0,1,0,1,0,1],[0,0,1,1,0,0],[0,1,1,1,0,1],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,0,0,0,0,0],[1,0,0,0,0,0],[0,0,0,0,0,0],[0,1,0,0,0,0],[1,0,0,0,0,0],[1,1,0,0,0,0],[0,0,0,0,1,0],[0,0,0,0,1,0],[1,0,1,0,1,0],[1,0,1,0,1,0],[0,0,0,0,1,0],[0,1,0,0,1,0],[1,0,1,0,1,0],[1,1,1,0,1,0],[0,0,0,0,0,0],[0,0,0,0,0,1],[1,0,0,0,0,0],[1,0,0,0,0,1],[0,0,0,1,0,0],[0,1,0,1,0,1],[1,0,0,1,0,0],[1,1,0,1,0,1],[0,0,0,0,1,0],[0,0,0,0,1,1],[1,0,1,0,1,0],[1,0,1,0,1,1],[0,0,0,1,1,0],[0,1,0,1,1,1],[1,0,1,1,1,0],[1,1,1,1,1,1]],"connectivityMatrix":[[0,1,0,0,0,1],[1,0,1,0,0,0],[0,1,0,1,0,0],[0,0,1,0,1,0],[0,0,0,1,0,1],[1,0,0,0,1,0]],"currentState":[1,1,1,1,1,1],"pastState":[1,1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/6-MAJ-complete.json b/profiling/networks/old/6-MAJ-complete.json
deleted file mode 100644
index 5eea26c17..000000000
--- a/profiling/networks/old/6-MAJ-complete.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":5,"x":239.3174527346224,"y":213.89774770877966,"px":240.49141177017614,"py":214.44516006757868,"fixed":0},{"index":1,"label":"B","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":5,"x":321.7495618627804,"y":140.98258827721338,"px":321.8201416443577,"py":142.28698878115298,"fixed":0},{"index":2,"label":"C","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":5,"x":429.3546762880245,"y":173.88638479145425,"px":428.18909625647814,"py":174.6803689895098,"fixed":false},{"index":3,"label":"D","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":5,"x":451.9490642667863,"y":284.58715708361393,"px":450.7849704839994,"py":284.0229654747098,"fixed":false},{"index":4,"label":"E","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"weight":5,"x":368.46307222183316,"y":360.03497549183106,"px":368.39498759539504,"py":358.74151052966823,"fixed":0},{"index":5,"label":"F","on":1,"mechanism":"MAJ","reflexive":true,"selected":true,"threshold":2,"inSubsystem":false,"x":258.94791863602256,"y":325.12777598687757,"weight":5,"px":260.0961492393515,"py":324.3295434381386,"fixed":0}],"tpm":[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,1,1,1,1,1],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,1,1,1,1,1],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,1,1,1,1,1],[0,0,0,0,0,0],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,1,1,1,1,1],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,1,1,1,1,1],[0,0,0,0,0,0],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,1,1,1,1,1],[0,0,0,0,0,0],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[0,0,0,0,0,0],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1]],"connectivityMatrix":[[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1]],"currentState":[1,1,1,1,1,1],"pastState":[1,1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/6-MAJ-specialized.json b/profiling/networks/old/6-MAJ-specialized.json
deleted file mode 100644
index 37a46958c..000000000
--- a/profiling/networks/old/6-MAJ-specialized.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":5,"x":220.4808124972226,"y":326.4993546996903,"px":221.3407146680289,"py":325.83499654233657,"selected":true},{"index":1,"label":"B","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":5,"x":281.9733382874501,"y":140.83145938198314,"px":282.10092304352435,"py":141.8278624401145,"selected":true,"fixed":0},{"index":2,"label":"C","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":5,"x":389.3678950762129,"y":173.02104598045435,"px":388.507013734718,"py":173.68091761196112,"selected":true},{"index":3,"label":"D","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":5,"x":327.3809312508097,"y":360.25083109044533,"px":327.24554311324994,"py":359.26462176103547,"selected":true},{"index":4,"label":"E","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":5,"x":199.0005315530663,"y":215.14923294995953,"px":199.93239579544016,"py":215.51830898613667,"selected":true,"fixed":0},{"index":5,"label":"F","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":5,"x":411.2760327681865,"y":284.53805719567384,"px":410.3499784129406,"py":284.165829783648,"selected":true,"fixed":0}],"tpm":[[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,1,1,0,0],[0,0,0,0,0,0],[0,0,0,1,0,0],[0,0,0,1,1,0],[0,0,1,1,1,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,1,0],[0,0,1,1,1,0],[0,0,0,0,1,1],[0,0,0,1,1,1],[0,0,0,1,1,1],[0,0,1,1,1,1],[0,0,0,0,0,0],[0,1,0,0,0,0],[0,0,0,0,0,0],[0,1,1,1,0,0],[0,0,0,0,0,1],[0,1,0,1,0,1],[0,0,0,1,1,1],[0,1,1,1,1,1],[1,0,0,0,0,1],[1,1,0,0,0,1],[1,0,0,0,1,1],[1,1,1,1,1,1],[1,0,0,0,1,1],[1,1,0,1,1,1],[1,0,0,1,1,1],[1,1,1,1,1,1],[0,0,0,0,0,0],[0,1,1,0,0,0],[0,0,1,0,0,0],[0,1,1,1,0,0],[0,0,0,0,0,0],[0,1,1,1,0,0],[0,0,1,1,1,0],[0,1,1,1,1,0],[1,0,0,0,0,0],[1,1,1,0,0,0],[1,0,1,0,1,0],[1,1,1,1,1,0],[1,0,0,0,1,1],[1,1,1,1,1,1],[1,0,1,1,1,1],[1,1,1,1,1,1],[1,1,0,0,0,0],[1,1,1,0,0,0],[1,1,1,0,0,0],[1,1,1,1,0,0],[1,1,0,0,0,1],[1,1,1,1,0,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,0,0,0,1],[1,1,1,0,0,1],[1,1,1,0,1,1],[1,1,1,1,1,1],[1,1,0,0,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1],[1,1,1,1,1,1]],"connectivityMatrix":[[0,1,1,1,0,0],[0,0,1,1,1,0],[0,0,0,1,1,1],[1,0,0,0,1,1],[1,1,0,0,0,1],[1,1,1,0,0,0]],"currentState":[1,1,1,1,1,1],"pastState":[1,1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/6-iit-3.0-modular.json b/profiling/networks/old/6-iit-3.0-modular.json
deleted file mode 100644
index ec1cfe07d..000000000
--- a/profiling/networks/old/6-iit-3.0-modular.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"OR","reflexive":false,"threshold":2,"inSubsystem":false,"x":153.27256150815407,"y":193.54932820085787,"weight":3,"px":153.27256150815407,"py":193.54932820085787,"selected":true,"fixed":1},{"index":1,"label":"B","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":144.0299467735382,"y":367.4245906492675,"weight":3,"px":144.0299467735382,"py":367.4245906492675,"selected":true,"fixed":1},{"index":2,"label":"C","on":1,"mechanism":"OR","reflexive":false,"threshold":2,"inSubsystem":false,"x":297.09974170539647,"y":191.5680967185557,"weight":3,"px":297.09974170539647,"py":191.5680967185557,"selected":true,"fixed":1},{"index":3,"label":"D","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":297.1423528990964,"y":364.0455938259867,"weight":3,"px":297.1423528990964,"py":364.0455938259867,"selected":true,"fixed":1},{"index":4,"label":"E","on":1,"mechanism":"OR","reflexive":false,"threshold":2,"inSubsystem":false,"x":448.9216856693354,"y":197.86731366170454,"weight":3,"px":448.9216856693354,"py":197.86731366170454,"selected":true,"fixed":1},{"index":5,"label":"F","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":450.9152060701569,"y":366.1440476565852,"weight":3,"px":450.9152060701569,"py":366.1440476565852,"fixed":1,"selected":true}],"tpm":[[0,0,0,0,0,0],[0,0,0,0,0,0],[1,0,0,0,0,0],[1,0,0,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,0,0,0,0,0],[1,0,0,0,0,0],[0,0,1,0,0,0],[0,0,1,0,0,0],[1,0,1,0,0,0],[1,0,1,0,0,0],[0,0,1,0,0,0],[0,0,1,0,0,0],[1,0,1,0,0,0],[1,0,1,0,0,0],[0,0,0,0,0,0],[0,0,0,0,0,0],[1,0,0,0,0,0],[1,0,0,0,0,0],[0,0,0,0,0,0],[0,1,0,1,0,1],[1,0,0,0,0,0],[1,1,0,1,0,1],[0,0,1,0,0,0],[0,0,1,0,0,0],[1,0,1,0,0,0],[1,0,1,0,0,0],[0,0,1,0,0,0],[0,1,1,1,0,1],[1,0,1,0,0,0],[1,1,1,1,0,1],[0,0,0,0,1,0],[0,0,0,0,1,0],[1,0,0,0,1,0],[1,0,0,0,1,0],[0,0,0,0,1,0],[0,0,0,0,1,0],[1,0,0,0,1,0],[1,0,0,0,1,0],[0,0,1,0,1,0],[0,0,1,0,1,0],[1,0,1,0,1,0],[1,0,1,0,1,0],[0,0,1,0,1,0],[0,0,1,0,1,0],[1,0,1,0,1,0],[1,0,1,0,1,0],[0,0,0,0,1,0],[0,0,0,0,1,0],[1,0,0,0,1,0],[1,0,0,0,1,0],[0,0,0,0,1,0],[0,1,0,1,1,1],[1,0,0,0,1,0],[1,1,0,1,1,1],[0,0,1,0,1,0],[0,0,1,0,1,0],[1,0,1,0,1,0],[1,0,1,0,1,0],[0,0,1,0,1,0],[0,1,1,1,1,1],[1,0,1,0,1,0],[1,1,1,1,1,1]],"connectivityMatrix":[[0,1,0,1,0,1],[1,0,0,0,0,0],[0,1,0,1,0,1],[0,0,1,0,0,0],[0,1,0,1,0,1],[0,0,0,0,1,0]],"currentState":[1,1,1,1,1,1],"pastState":[1,1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/7-AND-circle.json b/profiling/networks/old/7-AND-circle.json
deleted file mode 100644
index 45e291a47..000000000
--- a/profiling/networks/old/7-AND-circle.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":455.2686010418421,"y":96.48379154361075,"px":455.2686010418421,"py":96.48379154361075,"fixed":1,"selected":true},{"index":1,"label":"B","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":515.3361800382808,"y":246.61529363916367,"px":515.3361800382808,"py":246.61529363916367,"selected":true,"fixed":1},{"index":2,"label":"C","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":494.183612507285,"y":393.4787568212817,"px":494.183612507285,"py":393.4787568212817,"fixed":1,"selected":true},{"index":3,"label":"D","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":328.4071869149115,"y":430.47399028796985,"px":328.4071869149115,"py":430.47399028796985,"selected":true,"fixed":1},{"index":4,"label":"E","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"weight":2,"x":184.6170429711838,"y":363.6187000622663,"px":184.6170429711838,"py":363.6187000622663,"selected":true,"fixed":1},{"index":5,"label":"F","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":165.4360441867527,"y":200.698157853545,"weight":2,"px":165.4360441867527,"py":200.698157853545,"fixed":1,"selected":true},{"index":6,"label":"G","on":1,"mechanism":"OR","reflexive":false,"threshold":2,"inSubsystem":false,"x":280.4286403192627,"y":88.64143440072291,"weight":2,"px":280.4286403192627,"py":88.64143440072291,"fixed":1,"selected":true}],"tpm":[[0,0,0,0,0,0,0],[0,0,0,0,0,0,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1],[0,0,0,0,0,0,0],[0,1,0,0,0,0,1],[0,0,0,0,0,0,0],[0,1,0,0,0,0,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1],[0,0,1,0,0,0,0],[0,0,1,0,0,0,1],[0,0,0,0,0,0,0],[0,1,0,0,0,0,1],[0,0,1,0,0,0,0],[0,1,1,0,0,0,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1],[0,0,0,1,0,0,0],[0,1,0,1,0,0,1],[0,0,0,1,0,0,0],[0,1,0,1,0,0,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1],[0,0,1,0,0,0,0],[0,0,1,0,0,0,1],[0,0,0,1,0,0,0],[0,1,0,1,0,0,1],[0,0,1,1,0,0,0],[0,1,1,1,0,0,1],[0,0,0,0,0,0,1],[0,0,0,0,0,0,1],[0,0,0,0,0,0,1],[0,0,0,0,0,0,1],[0,0,0,0,0,0,1],[0,1,0,0,0,0,1],[0,0,0,0,0,0,1],[0,1,0,0,0,0,1],[0,0,0,0,1,0,1],[0,0,0,0,1,0,1],[0,0,1,0,1,0,1],[0,0,1,0,1,0,1],[0,0,0,0,1,0,1],[0,1,0,0,1,0,1],[0,0,1,0,1,0,1],[0,1,1,0,1,0,1],[0,0,0,0,0,0,1],[0,0,0,0,0,0,1],[0,0,0,0,0,0,1],[0,0,0,0,0,0,1],[0,0,0,1,0,0,1],[0,1,0,1,0,0,1],[0,0,0,1,0,0,1],[0,1,0,1,0,0,1],[0,0,0,0,1,0,1],[0,0,0,0,1,0,1],[0,0,1,0,1,0,1],[0,0,1,0,1,0,1],[0,0,0,1,1,0,1],[0,1,0,1,1,0,1],[0,0,1,1,1,0,1],[0,1,1,1,1,0,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1],[1,0,0,0,0,0,0],[1,0,0,0,0,0,1],[0,0,0,0,0,0,0],[0,1,0,0,0,0,1],[1,0,0,0,0,0,0],[1,1,0,0,0,0,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,1],[1,0,1,0,0,0,0],[1,0,1,0,0,0,1],[0,0,0,0,0,0,0],[0,1,0,0,0,0,1],[1,0,1,0,0,0,0],[1,1,1,0,0,0,1],[0,0,0,0,0,1,0],[0,0,0,0,0,1,1],[1,0,0,0,0,1,0],[1,0,0,0,0,1,1],[0,0,0,1,0,1,0],[0,1,0,1,0,1,1],[1,0,0,1,0,1,0],[1,1,0,1,0,1,1],[0,0,0,0,0,1,0],[0,0,0,0,0,1,1],[1,0,1,0,0,1,0],[1,0,1,0,0,1,1],[0,0,0,1,0,1,0],[0,1,0,1,0,1,1],[1,0,1,1,0,1,0],[1,1,1,1,0,1,1],[0,0,0,0,0,0,1],[0,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[0,0,0,0,0,0,1],[0,1,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,0,0,0,0,1],[0,0,0,0,1,0,1],[0,0,0,0,1,0,1],[1,0,1,0,1,0,1],[1,0,1,0,1,0,1],[0,0,0,0,1,0,1],[0,1,0,0,1,0,1],[1,0,1,0,1,0,1],[1,1,1,0,1,0,1],[0,0,0,0,0,1,1],[0,0,0,0,0,1,1],[1,0,0,0,0,1,1],[1,0,0,0,0,1,1],[0,0,0,1,0,1,1],[0,1,0,1,0,1,1],[1,0,0,1,0,1,1],[1,1,0,1,0,1,1],[0,0,0,0,1,1,1],[0,0,0,0,1,1,1],[1,0,1,0,1,1,1],[1,0,1,0,1,1,1],[0,0,0,1,1,1,1],[0,1,0,1,1,1,1],[1,0,1,1,1,1,1],[1,1,1,1,1,1,1]],"connectivityMatrix":[[0,1,0,0,0,0,1],[1,0,1,0,0,0,0],[0,1,0,1,0,0,0],[0,0,1,0,1,0,0],[0,0,0,1,0,1,0],[0,0,0,0,1,0,1],[1,0,0,0,0,1,0]],"currentState":[1,1,1,1,1,1,1],"pastState":[1,1,1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/7-MAJ-complete.json b/profiling/networks/old/7-MAJ-complete.json
deleted file mode 100644
index cc59a0035..000000000
--- a/profiling/networks/old/7-MAJ-complete.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"MAJ","reflexive":true,"selected":false,"threshold":2,"inSubsystem":false,"weight":6,"x":231.38341598532665,"y":281.93739960371386,"px":231.89450719505953,"py":281.8027817782387,"fixed":0},{"index":1,"label":"B","on":1,"mechanism":"MAJ","reflexive":true,"selected":false,"threshold":2,"inSubsystem":false,"weight":6,"x":251.66924136654995,"y":188.57872537449492,"px":252.1474992619341,"py":188.98392449304922,"fixed":false},{"index":2,"label":"C","on":1,"mechanism":"MAJ","reflexive":true,"selected":false,"threshold":2,"inSubsystem":false,"weight":6,"x":343.4339363794787,"y":151.11093312822533,"px":343.42481108417076,"py":151.73347334995523,"fixed":0},{"index":3,"label":"D","on":1,"mechanism":"MAJ","reflexive":true,"selected":false,"threshold":2,"inSubsystem":false,"weight":6,"x":429.22558327428686,"y":199.13590280690627,"px":428.7578572113039,"py":199.49455216651572,"fixed":false},{"index":4,"label":"E","on":1,"mechanism":"MAJ","reflexive":true,"selected":false,"threshold":2,"inSubsystem":false,"weight":6,"x":449.1676937202152,"y":296.91143323483686,"px":448.52391986344344,"py":296.76113154259383,"fixed":0},{"index":5,"label":"F","on":1,"mechanism":"MAJ","reflexive":true,"selected":false,"threshold":2,"inSubsystem":false,"x":378.789988977867,"y":363.2577251077865,"weight":6,"px":378.6054034649439,"py":362.7484898518281,"fixed":0},{"index":6,"label":"G","on":1,"mechanism":"MAJ","reflexive":true,"selected":false,"threshold":2,"inSubsystem":false,"x":275.37781940404534,"y":376.2330515912473,"weight":6,"px":275.37781940404534,"py":376.2330515912473,"fixed":1}],"tpm":[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1]],"connectivityMatrix":[[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1]],"currentState":[1,1,1,1,1,1,1],"pastState":[1,1,1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/7-MAJ-specialized.json b/profiling/networks/old/7-MAJ-specialized.json
deleted file mode 100644
index daf9eb34c..000000000
--- a/profiling/networks/old/7-MAJ-specialized.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":6,"x":342.85709657617184,"y":143.67404057962761,"px":342.5888289846238,"py":144.3402526750801,"selected":true},{"index":1,"label":"B","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":6,"x":191.20743247753916,"y":236.87464317643372,"px":191.9362980625894,"py":236.98334411722217,"selected":true,"fixed":0},{"index":2,"label":"C","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":6,"x":316.7289603052141,"y":364.4112064768832,"px":316.6700728458933,"py":363.67657661776076,"selected":true},{"index":3,"label":"D","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":6,"x":399.7614614248169,"y":311.5835709640917,"px":399.16754007660944,"py":311.1917455497849,"selected":true},{"index":4,"label":"E","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":6,"x":224.41656612172386,"y":329.44683894800727,"px":224.9348016269168,"py":328.96007367369197,"selected":true,"fixed":0},{"index":5,"label":"F","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":6,"x":244.8040302610636,"y":152.81990900991622,"px":245.1635276376324,"py":153.42847902286493,"selected":true,"fixed":0},{"index":6,"label":"G","on":1,"mechanism":"MAJ","reflexive":false,"threshold":2,"inSubsystem":false,"weight":6,"x":413.0551970628408,"y":213.50123891231084,"px":412.37541478922924,"py":213.72677836912698,"selected":true}],"tpm":[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,1,0,0,0],[0,0,0,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,1,1,0],[0,0,0,1,1,1,0],[0,0,0,1,1,1,0],[0,0,1,1,1,1,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,0,0,0],[0,0,0,0,0,1,0],[0,0,0,1,0,1,0],[0,0,0,1,1,1,0],[0,0,1,1,1,1,0],[0,0,0,0,0,1,1],[0,0,0,0,0,1,1],[0,0,0,0,1,1,1],[0,0,1,1,1,1,1],[0,0,0,0,1,1,1],[0,0,0,1,1,1,1],[0,0,0,1,1,1,1],[0,0,1,1,1,1,1],[0,0,0,0,0,0,0],[0,1,0,0,0,0,0],[0,0,0,0,0,0,0],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0],[0,1,0,1,0,0,0],[0,0,0,1,1,0,0],[0,1,1,1,1,0,0],[0,0,0,0,0,0,1],[0,1,0,0,0,0,1],[0,0,0,0,1,0,1],[0,1,1,1,1,0,1],[0,0,0,0,1,1,1],[0,1,0,1,1,1,1],[0,0,0,1,1,1,1],[0,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,1,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,0,0,1],[1,0,0,0,0,1,1],[1,1,0,1,0,1,1],[1,0,0,1,1,1,1],[1,1,1,1,1,1,1],[1,0,0,0,0,1,1],[1,1,0,0,0,1,1],[1,0,0,0,1,1,1],[1,1,1,1,1,1,1],[1,0,0,0,1,1,1],[1,1,0,1,1,1,1],[1,0,0,1,1,1,1],[1,1,1,1,1,1,1],[0,0,0,0,0,0,0],[0,1,1,0,0,0,0],[0,0,1,0,0,0,0],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0],[0,1,1,1,0,0,0],[0,0,1,1,1,0,0],[0,1,1,1,1,0,0],[0,0,0,0,0,0,0],[0,1,1,0,0,0,0],[0,0,1,0,1,0,0],[0,1,1,1,1,0,0],[0,0,0,0,1,1,0],[0,1,1,1,1,1,0],[0,0,1,1,1,1,0],[0,1,1,1,1,1,0],[1,0,0,0,0,0,0],[1,1,1,0,0,0,0],[1,0,1,0,0,0,0],[1,1,1,1,0,0,0],[1,0,0,0,0,1,0],[1,1,1,1,0,1,0],[1,0,1,1,1,1,0],[1,1,1,1,1,1,0],[1,0,0,0,0,1,1],[1,1,1,0,0,1,1],[1,0,1,0,1,1,1],[1,1,1,1,1,1,1],[1,0,0,0,1,1,1],[1,1,1,1,1,1,1],[1,0,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,0,0,0,0,0],[1,1,1,0,0,0,0],[1,1,1,0,0,0,0],[1,1,1,1,0,0,0],[1,1,0,0,0,0,0],[1,1,1,1,0,0,0],[1,1,1,1,1,0,0],[1,1,1,1,1,0,0],[1,1,0,0,0,0,1],[1,1,1,0,0,0,1],[1,1,1,0,1,0,1],[1,1,1,1,1,0,1],[1,1,0,0,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,0,0,0,0,1],[1,1,1,0,0,0,1],[1,1,1,0,0,0,1],[1,1,1,1,0,0,1],[1,1,0,0,0,1,1],[1,1,1,1,0,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,0,0,0,1,1],[1,1,1,0,0,1,1],[1,1,1,0,1,1,1],[1,1,1,1,1,1,1],[1,1,0,0,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1],[1,1,1,1,1,1,1]],"connectivityMatrix":[[0,1,1,1,0,0,0],[0,0,1,1,1,0,0],[0,0,0,1,1,1,0],[0,0,0,0,1,1,1],[1,0,0,0,0,1,1],[1,1,0,0,0,0,1],[1,1,1,0,0,0,0]],"currentState":[1,1,1,1,1,1,1],"pastState":[1,1,1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/networks/old/8-iit-3.0-modular.json b/profiling/networks/old/8-iit-3.0-modular.json
deleted file mode 100644
index ab7282161..000000000
--- a/profiling/networks/old/8-iit-3.0-modular.json
+++ /dev/null
@@ -1 +0,0 @@
-{"nodes":[{"index":0,"label":"A","on":1,"mechanism":"OR","reflexive":false,"threshold":2,"inSubsystem":false,"x":153.4283539598144,"y":182.0415709193519,"weight":4,"px":153.4283539598144,"py":182.0415709193519,"selected":false,"fixed":1},{"index":1,"label":"B","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":158.04457161727058,"y":331.3574296877908,"weight":4,"px":158.04457161727058,"py":331.3574296877908,"selected":false,"fixed":1},{"index":2,"label":"C","on":1,"mechanism":"OR","reflexive":false,"threshold":2,"inSubsystem":false,"x":251.2382796076859,"y":173.45339842109428,"weight":4,"px":251.2382796076859,"py":173.45339842109428,"selected":false,"fixed":1},{"index":3,"label":"D","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":259.76497198276803,"y":338.50581010442284,"weight":4,"px":259.76497198276803,"py":338.50581010442284,"selected":false,"fixed":1},{"index":4,"label":"E","on":1,"mechanism":"OR","reflexive":false,"threshold":2,"inSubsystem":false,"x":356.28452024643076,"y":173.9977076048531,"weight":4,"px":356.28452024643076,"py":173.9977076048531,"selected":false,"fixed":1},{"index":5,"label":"F","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":363.37080772138245,"y":333.9077527029692,"weight":4,"px":363.37080772138245,"py":333.9077527029692,"fixed":1,"selected":false},{"index":6,"label":"G","on":1,"mechanism":"OR","reflexive":false,"threshold":2,"inSubsystem":false,"x":456.9989043184415,"y":174.83856297506958,"weight":4,"px":456.9989043184415,"py":174.83856297506958,"selected":false,"fixed":1},{"index":7,"label":"H","on":1,"mechanism":"AND","reflexive":false,"threshold":2,"inSubsystem":false,"x":461.8495641232846,"y":329.0813331813447,"weight":4,"px":461.8495641232846,"py":329.0813331813447,"fixed":1,"selected":false}],"tpm":[[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[0,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[0,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[0,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[0,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0],[0,1,0,1,0,1,0,1],[1,0,0,0,0,0,0,0],[1,1,0,1,0,1,0,1],[0,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[1,0,1,0,0,0,0,0],[0,0,1,0,0,0,0,0],[0,1,1,1,0,1,0,1],[1,0,1,0,0,0,0,0],[1,1,1,1,0,1,0,1],[0,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[0,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[0,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[1,0,0,0,1,0,0,0],[0,0,0,0,1,0,0,0],[0,1,0,1,1,1,0,1],[1,0,0,0,1,0,0,0],[1,1,0,1,1,1,0,1],[0,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[1,0,1,0,1,0,0,0],[0,0,1,0,1,0,0,0],[0,1,1,1,1,1,0,1],[1,0,1,0,1,0,0,0],[1,1,1,1,1,1,0,1],[0,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[0,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[0,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[0,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[0,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[0,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[0,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[0,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[0,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[0,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[0,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[1,0,0,0,0,0,1,0],[0,0,0,0,0,0,1,0],[0,1,0,1,0,1,1,1],[1,0,0,0,0,0,1,0],[1,1,0,1,0,1,1,1],[0,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[1,0,1,0,0,0,1,0],[0,0,1,0,0,0,1,0],[0,1,1,1,0,1,1,1],[1,0,1,0,0,0,1,0],[1,1,1,1,0,1,1,1],[0,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[0,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[0,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[1,0,0,0,1,0,1,0],[0,0,0,0,1,0,1,0],[0,1,0,1,1,1,1,1],[1,0,0,0,1,0,1,0],[1,1,0,1,1,1,1,1],[0,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,1,0],[0,0,1,0,1,0,1,0],[0,1,1,1,1,1,1,1],[1,0,1,0,1,0,1,0],[1,1,1,1,1,1,1,1]],"connectivityMatrix":[[0,1,0,1,0,1,0,1],[1,0,0,0,0,0,0,0],[0,1,0,1,0,1,0,1],[0,0,1,0,0,0,0,0],[0,1,0,1,0,1,0,1],[0,0,0,0,1,0,0,0],[0,1,0,1,0,1,0,1],[0,0,0,0,0,0,1,0]],"currentState":[1,1,1,1,1,1,1,1],"pastState":[1,1,1,1,1,1,1,1]}
\ No newline at end of file
diff --git a/profiling/print_stats.py b/profiling/print_stats.py
old mode 100644
new mode 100755
index eaa5ede3b..553c6ef02
--- a/profiling/print_stats.py
+++ b/profiling/print_stats.py
@@ -1,17 +1,19 @@
-import pstats
-
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
"""
-Prints the pstats results for the functions in which the most
-time was spent.
-
-Use `load_profile.sh` to load a pstats file into `profile.pstats`.
-TODO: take the pstats file as command line arg.
+Prints the pstats results for the functions in which the most time was spent.
"""
-FILE = "profile.pstats"
+import argparse
+import pstats
+
if __name__ == "__main__":
- p = pstats.Stats(FILE)
+ parser = argparse.ArgumentParser()
+ parser.add_argument("pstats_file", help="the profile file to print")
+ args = parser.parse_args()
+
+ p = pstats.Stats(args.pstats_file)
p.strip_dirs()
- p.sort_stats('tottime', 'calls', 'name')
+ p.sort_stats("tottime", "calls", "name")
p.print_stats(25)
diff --git a/profiling/profile_script.py b/profiling/profile_script.py
new file mode 100755
index 000000000..2f52e310a
--- /dev/null
+++ b/profiling/profile_script.py
@@ -0,0 +1,49 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""Profiling tool for PyPhi."""
+
+import argparse
+import cProfile
+from pathlib import Path
+from time import time
+
+import pyphi
+
+
+def profile_file(path):
+ """Profile the execution of the script at ``path``."""
+ start = time()
+ pr = cProfile.Profile()
+ pr.enable()
+
+ exec(path.read_text())
+
+ pr.disable()
+ end = time()
+
+ pstatsfile = path.with_suffix(".pstats")
+ pr.dump_stats(pstatsfile)
+
+ elapsed = round(end - start, 2)
+ print(f"Finished in {elapsed} seconds.")
+
+
+if __name__ == "__main__":
+ # Parse arguments
+ parser = argparse.ArgumentParser(
+ description=(
+ "Program to profile PyPhi on sample networks. \n\n"
+ "After running this code, either\n"
+ " - Use `python -m pstats [file.pstats]` for an interactive "
+ "pstats prompt.\n"
+ " - Use `loadprofile.sh [file.pstats] && print_stats.py` to print "
+ "the most offensive functions.\n"
+ " - Use the `makecallgraph` script to visualize the call graph.\n\n"
+ "For the most descriptive results, disable any parallelization in "
+ "PyPhi."
+ )
+ )
+ parser.add_argument("script", nargs="?", help="the script to profile.")
+ args = parser.parse_args()
+
+ profile_file(Path(args.script))
diff --git a/profiling/quickprofile.sh b/profiling/quickprofile.sh
deleted file mode 100755
index 9e78fbe52..000000000
--- a/profiling/quickprofile.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-#
-# Script to quickly profile a single network, produce a call graph,
-# and display the top pstats results.
-#
-# The network should be passed in as "5-AND-circle", "6-MAJ-complete", etc.
-
-NETWORK=$1
-
-python code_to_profile.py $NETWORK &&
-./loadprofile.sh pstats/$NETWORK.pstats &&
-./makecallgraph &&
-python print_stats.py &&
-open -a Firefox callgraph.svg
diff --git a/profiling/saveprofile.sh b/profiling/saveprofile.sh
deleted file mode 100755
index 3d98b3b19..000000000
--- a/profiling/saveprofile.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-outputfile="profile.pstats"
-path="profile_data/"
-prefix="profile"
-sep="."
-extension=".pstats"
-if [ -z $1 ]
-then
- filename="`date +%s`"
-else
- filename=$1
-fi
-save=$path$prefix$sep$filename$extension
-echo "Saved '$outputfile' to '$save'"
-cp $outputfile $save
diff --git a/pyphi/__about__.py b/pyphi/__about__.py
index 61f9b7bdc..2c54a80b0 100644
--- a/pyphi/__about__.py
+++ b/pyphi/__about__.py
@@ -5,12 +5,12 @@
"""PyPhi metadata."""
__title__ = 'pyphi'
-__version__ = '1.1.0'
+__version__ = '1.2.0'
__description__ = 'Python library for computing integrated information.'
__author__ = 'William GP Mayner'
__author_email__ = 'wmayner@gmail.com'
__author_website__ = 'http://willmayner.com'
-__copyright__ = 'Copyright 2014-2018 Will Mayner'
+__copyright__ = 'Copyright 2014-2019 William GP Mayner'
__license__ = 'GNU General Public License v3.0'
__url__ = 'http://github.com/wmayner/pyphi'
diff --git a/pyphi/__init__.py b/pyphi/__init__.py
index 45699dae5..e8cf469e7 100644
--- a/pyphi/__init__.py
+++ b/pyphi/__init__.py
@@ -19,8 +19,12 @@
PyPhi is a Python library for computing integrated information.
-See the documentation for the |examples| module for information on how to use
-it.
+If you use this software in your research, please cite the paper:
+
+ Mayner WGP, Marshall W, Albantakis L, Findlay G, Marchman R, Tononi G.
+ (2018). PyPhi: A toolbox for integrated information theory.
+ PLOS Computational Biology 14(7): e1006343.
+ https://doi.org/10.1371/journal.pcbi.1006343
Online documentation is available at ``_.
@@ -63,6 +67,8 @@
and their defaults.
"""
+import os
+
from .__about__ import * # pylint: disable=wildcard-import
# Initialize config object
@@ -75,7 +81,32 @@
from .subsystem import Subsystem
from .actual import Transition
-
__all__ = ['Network', 'Subsystem', 'actual', 'config', 'constants', 'convert',
'db', 'examples', 'jsonify', 'macro', 'models', 'network', 'node',
'subsystem', 'utils', 'validate']
+
+if not (config.WELCOME_OFF or 'PYPHI_WELCOME_OFF' in os.environ):
+ print("""
+Welcome to PyPhi!
+
+If you use PyPhi in your research, please cite the paper:
+
+ Mayner WGP, Marshall W, Albantakis L, Findlay G, Marchman R, Tononi G.
+ (2018). PyPhi: A toolbox for integrated information theory.
+ PLOS Computational Biology 14(7): e1006343.
+ https://doi.org/10.1371/journal.pcbi.1006343
+
+Documentation is available online (or with the built-in `help()` function):
+ https://pyphi.readthedocs.io
+
+To report issues, please use the issue tracker on the GitHub repository:
+ https://github.com/wmayner/pyphi
+
+For general discussion, you are welcome to join the pyphi-users group:
+ https://groups.google.com/forum/#!forum/pyphi-users
+
+To suppress this message, either:
+ - Set `WELCOME_OFF: true` in your `pyphi_config.yml` file, or
+ - Set the environment variable PYPHI_WELCOME_OFF to any value in your shell:
+ export PYPHI_WELCOME_OFF='yes'
+""")
diff --git a/pyphi/actual.py b/pyphi/actual.py
index 4541128b6..3e991d5f7 100644
--- a/pyphi/actual.py
+++ b/pyphi/actual.py
@@ -4,6 +4,19 @@
"""
Methods for computing actual causation of subsystems and mechanisms.
+
+If you use this module, please cite the following papers:
+
+ Albantakis L, Marshall W, Hoel E, Tononi G (2019).
+ What Caused What? A quantitative Account of Actual Causation Using
+ Dynamical Causal Networks.
+ *Entropy*, 21 (5), pp. 459.
+ ``_
+
+ Mayner WGP, Marshall W, Albantakis L, Findlay G, Marchman R, Tononi G. (2018).
+ PyPhi: A toolbox for integrated information theory.
+ *PLOS Computational Biology* 14(7): e1006343.
+ ``_
"""
import logging
diff --git a/pyphi/conf.py b/pyphi/conf.py
index 5d901c19c..58f9b0ac6 100644
--- a/pyphi/conf.py
+++ b/pyphi/conf.py
@@ -110,12 +110,13 @@
Logging
~~~~~~~
-These settings control how PyPhi handles log messages. Logs can be written to
+These settings control how PyPhi handles messages. Logs can be written to
standard output, a file, both, or none. If these simple default controls are
not flexible enough for you, you can override the entire logging configuration.
See the `documentation on Python's logger
`_ for more information.
+- :attr:`~pyphi.conf.PyphiConfig.WELCOME_OFF`
- :attr:`~pyphi.conf.PyphiConfig.LOG_STDOUT_LEVEL`
- :attr:`~pyphi.conf.PyphiConfig.LOG_FILE_LEVEL`
- :attr:`~pyphi.conf.PyphiConfig.LOG_FILE`
@@ -143,9 +144,10 @@
import pprint
from copy import copy
+import joblib
import yaml
-from . import __about__
+from . import __about__, constants
log = logging.getLogger(__name__)
@@ -260,7 +262,7 @@ def __setattr__(self, name, value):
@classmethod
def options(cls):
- """Return a dictionary the ``Option`` objects for this config"""
+ """Return a dictionary of the ``Option`` objects for this config."""
return {k: v for k, v in cls.__dict__.items() if isinstance(v, Option)}
def defaults(self):
@@ -277,7 +279,7 @@ def load_file(self, filename):
filename = os.path.abspath(filename)
with open(filename) as f:
- self.load_dict(yaml.load(f))
+ self.load_dict(yaml.safe_load(f))
self._loaded_files.append(filename)
@@ -357,6 +359,17 @@ def configure_logging(conf):
})
+def configure_joblib(conf):
+ constants.joblib_memory = joblib.Memory(
+ location=conf.FS_CACHE_DIRECTORY,
+ verbose=conf.FS_CACHE_VERBOSITY
+ )
+
+
+def configure_precision(conf):
+ constants.EPSILON = 10**(-conf.PRECISION)
+
+
class PyphiConfig(Config):
"""``pyphi.config`` is an instance of this class."""
@@ -364,7 +377,7 @@ class PyphiConfig(Config):
In certain cases, making a cut can actually cause a previously reducible
concept to become a proper, irreducible concept. Assuming this can never
happen can increase performance significantly, however the obtained results
- are not strictly accurate. """)
+ are not strictly accurate.""")
CUT_ONE_APPROXIMATION = Option(False, doc="""
When determining the MIP for |big_phi|, this restricts the set of system
@@ -390,7 +403,7 @@ class PyphiConfig(Config):
def always_zero(a, b):
return 0
- This measures can then be used by setting
+ This measure can then be used by setting
``config.MEASURE = 'ALWAYS_ZERO'``.
If the measure is asymmetric you should register it using the
@@ -452,11 +465,12 @@ def always_zero(a, b):
filesystem-based cache in the current directory or from a database. Set
this to ``'fs'`` for the filesystem, ``'db'`` for the database.""")
- FS_CACHE_VERBOSITY = Option(0, doc="""
+ FS_CACHE_VERBOSITY = Option(0, on_change=configure_joblib, doc="""
Controls how much caching information is printed if the filesystem cache is
used. Takes a value between ``0`` and ``11``.""")
- FS_CACHE_DIRECTORY = Option('__pyphi_cache__', doc="""
+ FS_CACHE_DIRECTORY = Option('__pyphi_cache__', on_change=configure_joblib,
+ doc="""
If the filesystem is used for caching, the cache will be stored in this
directory. This directory can be copied and moved around if you want to
reuse results *e.g.* on a another computer, but it must be in the same
@@ -483,6 +497,19 @@ def always_zero(a, b):
Configure the Redis database backend. These are the defaults in the
provided ``redis.conf`` file.""")
+ WELCOME_OFF = Option(False, doc="""
+ Specifies whether to suppress the welcome message when PyPhi is imported.
+
+ Alternatively, you may suppress the message by setting the environment
+ variable ``PYPHI_WELCOME_OFF`` to any value in your shell:
+
+ .. code-block:: bash
+
+ export PYPHI_WELCOME_OFF='yes'
+
+ The message will not print if either this option is ``True`` or the
+ environment variable is set.""")
+
LOG_FILE = Option('pyphi.log', on_change=configure_logging, doc="""
Controls the name of the log file.""")
@@ -506,7 +533,7 @@ def always_zero(a, b):
If you are iterating over many systems rather than doing one
long-running calculation, consider disabling this for speed.""")
- PRECISION = Option(6, doc="""
+ PRECISION = Option(6, on_change=configure_precision, doc="""
If ``MEASURE`` is ``EMD``, then the Earth Mover's Distance is calculated
with an external C++ library that a numerical optimizer to find a good
approximation. Consequently, systems with analytically zero |big_phi| will
@@ -560,8 +587,8 @@ def always_zero(a, b):
If set to ``'TRI'``, partitions will have three parts. In addition,
computations will only consider partitions that strictly partition the
- mechanism the mechanism. That is, for the mechanism ``(A, B)`` and purview
- ``(B, C, D)`` the partition::
+ mechanism. That is, for the mechanism ``(A, B)`` and purview ``(B, C, D)``
+ the partition::
A,B ∅
─── ✕ ───
@@ -587,11 +614,33 @@ def always_zero(a, b):
where the mechanism in the third part is always empty.
- In addition, in the case of a |small_phi|-tie when computing a |MIC| or
- |MIE|, The ``'TRIPARTITION'`` setting choses the MIP with smallest purview
- instead of the largest (which is the default).
+ Finally, if set to ``'ALL'``, all possible partitions will be tested.
+
+ You can experiment with custom partitioning strategies using the
+ ``pyphi.partition.partition_types.register`` decorator. For example::
+
+ from pyphi.models import KPartition, Part
+ from pyphi.partition import partition_types
+
+ @partition_types.register('SINGLE_NODE')
+ def single_node_partitions(mechanism, purview, node_labels=None):
+ for element in mechanism:
+ element = tuple([element])
+ others = tuple(sorted(set(mechanism) - set(element)))
+
+ part1 = Part(mechanism=element, purview=())
+ part2 = Part(mechanism=others, purview=purview)
+
+ yield KPartition(part1, part2, node_labels=node_labels)
+
+ This generates the set of partitions that cut connections between a single
+ mechanism element and the entire purview. The mechanism and purview of each
+ |Part| remain undivided - only connections *between* parts are severed.
+
+ You can use this new partititioning scheme by setting
+ ``config.PARTITION_TYPE = 'SINGLE_NODE'``.
- Finally, if set to ``'ALL'``, all possible partitions will be tested.""")
+ See :mod:`~pyphi.partition` for more examples.""")
PICK_SMALLEST_PURVIEW = Option(False, doc="""
When computing a |MIC| or |MIE|, it is possible for several MIPs to have
@@ -617,8 +666,9 @@ def log(self):
if self._loaded_files:
log.info('Loaded configuration from %s', self._loaded_files)
else:
- log.info('Using default configuration (no config file provided)')
- log.info('Current PyPhi configuration:\n %s', str(config))
+ log.info('Using default configuration (no configuration file '
+ 'provided)')
+ log.info('Current PyPhi configuration:\n %s', str(self))
PYPHI_CONFIG_FILENAME = 'pyphi_config.yml'
diff --git a/pyphi/connectivity.py b/pyphi/connectivity.py
index 6bfc43520..cf851b917 100644
--- a/pyphi/connectivity.py
+++ b/pyphi/connectivity.py
@@ -113,7 +113,7 @@ def inputs_to(nodes):
sink_inputs = inputs_to(sinks)
while True:
- if np.all(sink_inputs == sources):
+ if np.array_equal(sink_inputs, sources):
# sources exclusively connect to sinks.
# There are no other nodes which connect sink nodes,
# hence set(sources) + set(sinks) form a component
@@ -126,7 +126,7 @@ def inputs_to(nodes):
sink_inputs = inputs_to(sinks)
# Considering all output nodes?
- if np.all(sinks == outputs):
+ if np.array_equal(sinks, outputs):
return False
diff --git a/pyphi/constants.py b/pyphi/constants.py
index c2a4e606e..c367a9cb2 100644
--- a/pyphi/constants.py
+++ b/pyphi/constants.py
@@ -8,12 +8,10 @@
import pickle
-import joblib
-
-from . import config
-
#: The threshold below which we consider differences in phi values to be zero.
-EPSILON = 10 ** - config.PRECISION
+EPSILON = None
+# NOTE: This is set dynamically by `conf.py` when PRECISION is changed; see
+# `conf.py` for default value.
#: Label for the filesystem cache backend.
FILESYSTEM = 'fs'
@@ -25,8 +23,9 @@
PICKLE_PROTOCOL = pickle.HIGHEST_PROTOCOL
#: The joblib ``Memory`` object for persistent caching without a database.
-joblib_memory = joblib.Memory(cachedir=config.FS_CACHE_DIRECTORY,
- verbose=config.FS_CACHE_VERBOSITY)
+joblib_memory = None
+# NOTE: This is set dynamically by `conf.py` when PRECISION is changed; see
+# `conf.py` for default value.
#: Node states
OFF = (0,)
diff --git a/pyphi/distance.py b/pyphi/distance.py
index d18b7ddeb..7a5057d63 100644
--- a/pyphi/distance.py
+++ b/pyphi/distance.py
@@ -230,10 +230,11 @@ def mp2q(p, q):
return sum(entropy_dist * np.nan_to_num((p ** 2) / q * np.log(p / q)))
-@measures.register('BLD', asymmetric=True)
+@measures.register('KLM', asymmetric=True)
+@measures.register('BLD', asymmetric=True) # Backwards-compatible alias
@np_suppress()
-def bld(p, q):
- """Compute the Buzz Lightyear (Billy-Leo) Divergence."""
+def klm(p, q):
+ """Compute the KLM divergence."""
p, q = flatten(p), flatten(q)
return max(abs(p * np.nan_to_num(np.log(p / q))))
diff --git a/pyphi/distribution.py b/pyphi/distribution.py
index 31b8b4b97..6d9466192 100644
--- a/pyphi/distribution.py
+++ b/pyphi/distribution.py
@@ -52,7 +52,7 @@ def marginal_zero(repertoire, node_index):
index = [slice(None)] * repertoire.ndim
index[node_index] = 0
- return repertoire[index].sum()
+ return repertoire[tuple(index)].sum()
def marginal(repertoire, node_index):
diff --git a/pyphi/examples.py b/pyphi/examples.py
index b4909b64e..00faae33d 100644
--- a/pyphi/examples.py
+++ b/pyphi/examples.py
@@ -1102,10 +1102,10 @@ def disjunction_conjunction_network():
[0, 0, 0, 1]
])
cm = np.array([
- [0, 0, 0, 0],
[0, 0, 0, 1],
[0, 0, 0, 1],
- [0, 0, 0, 1]
+ [0, 0, 0, 1],
+ [0, 0, 0, 0]
])
return Network(tpm, cm, node_labels=LABELS[:tpm.shape[1]])
diff --git a/pyphi/labels.py b/pyphi/labels.py
index 800be2a6a..14400aef8 100644
--- a/pyphi/labels.py
+++ b/pyphi/labels.py
@@ -22,7 +22,7 @@ def default_labels(indices):
return tuple(default_label(i) for i in indices)
-class NodeLabels(collections.abc.Sequence):
+class NodeLabels(collections.Sequence):
'''Text labels for nodes in a network.
Labels can either be instantiated as a tuple of strings:
diff --git a/pyphi/models/cuts.py b/pyphi/models/cuts.py
index 95cccd44d..7c461f9c6 100644
--- a/pyphi/models/cuts.py
+++ b/pyphi/models/cuts.py
@@ -266,7 +266,7 @@ def to_json(self):
return {'mechanism': self.mechanism, 'purview': self.purview}
-class KPartition(collections.abc.Sequence):
+class KPartition(collections.Sequence):
"""A partition with an arbitrary number of parts."""
__slots__ = ['parts', 'node_labels']
diff --git a/pyphi/models/mechanism.py b/pyphi/models/mechanism.py
index 54343c4ca..3410b4c36 100644
--- a/pyphi/models/mechanism.py
+++ b/pyphi/models/mechanism.py
@@ -448,7 +448,7 @@ def emd_eq(self, other):
self.mechanism == other.mechanism and
self.eq_repertoires(other))
- # TODO: remove
+ # These methods are used by phiserver
# TODO Rename to expanded_cause_repertoire, etc
def expand_cause_repertoire(self, new_purview=None):
"""See |Subsystem.expand_repertoire()|."""
@@ -472,31 +472,12 @@ def expand_partitioned_effect_repertoire(self):
def to_json(self):
"""Return a JSON-serializable representation."""
- dct = {
+ return {
attr: getattr(self, attr)
for attr in _concept_attributes + ['time']
}
- # These flattened, little-endian repertoires are passed to `vphi` via
- # `phiserver`.
- dct.update({
- 'expanded_cause_repertoire': distribution.flatten(
- self.expand_cause_repertoire()),
- 'expanded_effect_repertoire': distribution.flatten(
- self.expand_effect_repertoire()),
- 'expanded_partitioned_cause_repertoire': distribution.flatten(
- self.expand_partitioned_cause_repertoire()),
- 'expanded_partitioned_effect_repertoire': distribution.flatten(
- self.expand_partitioned_effect_repertoire()),
- })
- return dct
@classmethod
def from_json(cls, dct):
- # Remove extra attributes
del dct['phi']
- del dct['expanded_cause_repertoire']
- del dct['expanded_effect_repertoire']
- del dct['expanded_partitioned_cause_repertoire']
- del dct['expanded_partitioned_effect_repertoire']
-
return cls(**dct)
diff --git a/pyphi/network.py b/pyphi/network.py
index 8e43eeda9..14df335ef 100644
--- a/pyphi/network.py
+++ b/pyphi/network.py
@@ -9,7 +9,7 @@
import numpy as np
-from . import cache, connectivity, convert, jsonify, utils, validate
+from . import cache, connectivity, convert, jsonify, utils, validate, config
from .labels import NodeLabels
from .tpm import is_state_by_state
@@ -80,7 +80,7 @@ def _build_tpm(tpm):
"""
tpm = np.array(tpm)
- validate.tpm(tpm)
+ validate.tpm(tpm, check_independence=config.VALIDATE_CONDITIONAL_INDEPENDENCE)
# Convert to multidimensional state-by-node form
if is_state_by_state(tpm):
diff --git a/pyphi/node.py b/pyphi/node.py
index 497c88cc1..1c723a48b 100644
--- a/pyphi/node.py
+++ b/pyphi/node.py
@@ -30,11 +30,16 @@ class Node:
node_labels (|NodeLabels|): Labels for these nodes.
Attributes:
- tpm (np.ndarray): The node TPM is a 2^(n_inputs)-by-2 matrix, where
- node.tpm[i][j] gives the marginal probability that the node is in
- state j at t+1 if the state of its inputs is i at t. If the node is
- a single element with a cut selfloop, (i.e. it has no inputs), the
- tpm is simply its unconstrained effect repertoire.
+ tpm (np.ndarray): The node TPM is an array with shape ``(2,)*(n + 1)``,
+ where ``n`` is the size of the |Network|. The first ``n``
+ dimensions correspond to each node in the system. Dimensions
+ corresponding to nodes that provide input to this node are of size
+ 2, while those that do not correspond to inputs are of size 1, so
+ that the TPM has |2^m x 2| elements where |m| is the number of
+ inputs. The last dimension corresponds to the state of the node in
+ the next timestep, so that ``node.tpm[..., 0]`` gives probabilities
+ that the node will be 'OFF' and ``node.tpm[..., 1]`` gives
+ probabilities that the node will be 'ON'.
"""
def __init__(self, tpm, cm, index, state, node_labels):
diff --git a/pyphi/partition.py b/pyphi/partition.py
index 97f327bde..c76e85abe 100644
--- a/pyphi/partition.py
+++ b/pyphi/partition.py
@@ -15,7 +15,7 @@
# From stackoverflow.com/questions/19368375/set-partitions-in-python
-def partitions(collection): # pylint: disable=inconsistent-return-statements
+def partitions(collection):
"""Generate all set partitions of a collection.
Example:
@@ -30,7 +30,8 @@ def partitions(collection): # pylint: disable=inconsistent-return-statements
# Special cases
if not collection:
- return []
+ return
+
if len(collection) == 1:
yield [collection]
return
@@ -362,7 +363,7 @@ class PartitionRegistry(Registry):
Users can define custom partitions:
Examples:
- >>> @partition_registry.register('NONE') # doctest: +SKIP
+ >>> @partition_types.register('NONE') # doctest: +SKIP
... def no_partitions(mechanism, purview):
... return []
@@ -371,18 +372,18 @@ class PartitionRegistry(Registry):
desc = 'partitions'
-partition_registry = PartitionRegistry()
+partition_types = PartitionRegistry()
def mip_partitions(mechanism, purview, node_labels=None):
"""Return a generator over all mechanism-purview partitions, based on the
current configuration.
"""
- func = partition_registry[config.PARTITION_TYPE]
+ func = partition_types[config.PARTITION_TYPE]
return func(mechanism, purview, node_labels)
-@partition_registry.register('BI')
+@partition_types.register('BI')
def mip_bipartitions(mechanism, purview, node_labels=None):
r"""Return an generator of all |small_phi| bipartitions of a mechanism over
a purview.
@@ -438,7 +439,7 @@ def mip_bipartitions(mechanism, purview, node_labels=None):
node_labels=node_labels)
-@partition_registry.register('TRI')
+@partition_types.register('TRI')
def wedge_partitions(mechanism, purview, node_labels=None):
"""Return an iterator over all wedge partitions.
@@ -510,7 +511,7 @@ def compressible(tripart):
yield tripart
-@partition_registry.register('ALL')
+@partition_types.register('ALL')
def all_partitions(mechanism, purview, node_labels=None):
"""Return all possible partitions of a mechanism and purview.
diff --git a/pyphi/registry.py b/pyphi/registry.py
index 8bfab5cf8..94dda74b8 100644
--- a/pyphi/registry.py
+++ b/pyphi/registry.py
@@ -6,10 +6,10 @@
A function registry for storing custom measures and partition strategies.
"""
-from collections.abc import Mapping
+import collections
-class Registry(Mapping):
+class Registry(collections.Mapping):
"""Generic registry for user-supplied functions.
See ``pyphi.subsystem.PartitionRegistry`` and
diff --git a/pyphi/tpm.py b/pyphi/tpm.py
index cc1887035..e2ca244ce 100644
--- a/pyphi/tpm.py
+++ b/pyphi/tpm.py
@@ -43,7 +43,7 @@ def condition_tpm(tpm, fixed_nodes, state):
conditioning_indices = list(chain.from_iterable(conditioning_indices))
# Obtain the actual conditioned TPM by indexing with the conditioning
# indices.
- return tpm[conditioning_indices]
+ return tpm[tuple(conditioning_indices)]
def expand_tpm(tpm):
@@ -111,3 +111,26 @@ def infer_cm(tpm):
for a, b in np.ndindex(cm.shape):
cm[a][b] = infer_edge(tpm, a, b, all_contexts)
return cm
+
+
+def reconstitute_tpm(subsystem):
+ """Reconstitute the TPM of a subsystem using the individual node TPMs."""
+ # The last axis of the node TPMs correponds to ON or OFF probabilities
+ # (used in the conditioning step when calculating the repertoires); we want
+ # ON probabilities.
+ node_tpms = [node.tpm[..., 1] for node in subsystem.nodes]
+ # Remove the singleton dimensions corresponding to external nodes
+ node_tpms = [
+ tpm.squeeze(axis=subsystem.external_indices)
+ for tpm in node_tpms
+ ]
+ # We add a new singleton axis at the end so that we can use
+ # pyphi.tpm.expand_tpm, which expects a state-by-node TPM (where the last
+ # axis corresponds to nodes.)
+ node_tpms = [np.expand_dims(tpm, -1) for tpm in node_tpms]
+ # Now we expand the node TPMs to the full state space, so we can combine
+ # them all (this uses the maximum entropy distribution).
+ node_tpms = list(map(expand_tpm, node_tpms))
+ # We concatenate the node TPMs along a new axis to get a multidimensional
+ # state-by-node TPM (where the last axis corresponds to nodes).
+ return np.concatenate(node_tpms, axis=-1)
diff --git a/pyphi/utils.py b/pyphi/utils.py
index ba1faa4a6..c6bffbabc 100644
--- a/pyphi/utils.py
+++ b/pyphi/utils.py
@@ -14,7 +14,7 @@
import decorator
import numpy as np
-from scipy.misc import comb
+from scipy.special import comb
from . import config, constants
@@ -198,7 +198,7 @@ def load_data(directory, num):
def get_path(i): # pylint: disable=missing-docstring
return os.path.join(root, 'data', directory, str(i) + '.npy')
- return [np.load(get_path(i)) for i in range(num)]
+ return [np.load(get_path(i), allow_pickle=True) for i in range(num)]
# Using ``decorator`` preserves the function signature of the wrapped function,
diff --git a/pyphi/validate.py b/pyphi/validate.py
index ee4432e56..2424d67c4 100644
--- a/pyphi/validate.py
+++ b/pyphi/validate.py
@@ -9,7 +9,6 @@
import numpy as np
from . import Direction, config, convert, exceptions
-from .constants import EPSILON
from .tpm import is_state_by_state
# pylint: disable=redefined-outer-name
@@ -73,8 +72,6 @@ def tpm(tpm, check_independence=True):
def conditionally_independent(tpm):
"""Validate that the TPM is conditionally independent."""
- if not config.VALIDATE_CONDITIONAL_INDEPENDENCE:
- return True
tpm = np.array(tpm)
if is_state_by_state(tpm):
there_and_back_again = convert.state_by_node2state_by_state(
@@ -82,7 +79,7 @@ def conditionally_independent(tpm):
else:
there_and_back_again = convert.state_by_state2state_by_node(
convert.state_by_node2state_by_state(tpm))
- if np.any((tpm - there_and_back_again) >= EPSILON):
+ if not np.allclose((tpm - there_and_back_again), 0.0):
raise exceptions.ConditionallyDependentError(
'TPM is not conditionally independent.\n'
'See the conditional independence example in the documentation '
diff --git a/pyphi_config.yml b/pyphi_config.yml
index 94d2ce98c..654086c34 100644
--- a/pyphi_config.yml
+++ b/pyphi_config.yml
@@ -96,6 +96,8 @@ REDIS_CONFIG:
# Logging
# ~~~~~~~
+# Whether to suppress the welcome message.
+WELCOME_OFF: false
# The log level to write to stdout.
LOG_STDOUT_LEVEL: "WARNING"
# The log level to write to `LOG_FILE`.
diff --git a/pytest.ini b/pytest.ini
index ac6dfd065..d850a04c2 100644
--- a/pytest.ini
+++ b/pytest.ini
@@ -1,3 +1,6 @@
[pytest]
addopts = --maxfail=1 --durations=5 --color=yes --tb=auto --doctest-glob='*.rst' --doctest-modules --ignore ./profiling --ignore ./benchmarks -vv
norecursedirs = docs/_*
+markers =
+ slow: marks tests as slow (deselect with '-m "not slow"')
+ veryslow: marks tests as very slow (deselect with '-m "not veryslow"')
diff --git a/setup.py b/setup.py
index ffe68631e..c33641849 100644
--- a/setup.py
+++ b/setup.py
@@ -20,7 +20,7 @@
'psutil >=2.1.1',
'pyemd >=0.3.0',
'pymongo >=2.7.1',
- 'pyyaml >=3.11',
+ 'pyyaml >=3.13',
'redis >=2.10.5',
'scipy >=0.13.3',
'tblib >=1.3.2',
@@ -52,6 +52,7 @@
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
'Topic :: Scientific/Engineering',
],
project_urls={
@@ -59,7 +60,6 @@
'Documentation': 'https://pyphi.readthedocs.io',
'IIT Website': 'http://integratedinformationtheory.org/',
'Online Interface': 'http://integratedinformationtheory.org/calculate.html',
- 'Source': 'https://github.com/wmayner/pyphi',
'User Group': 'https://groups.google.com/forum/#!forum/pyphi-users'
}
)
diff --git a/test/example_networks.py b/test/example_networks.py
index 645a8fc39..e1a4fa390 100644
--- a/test/example_networks.py
+++ b/test/example_networks.py
@@ -12,8 +12,6 @@
# TODO pass just the subsystem (contains a reference to the network)
-use_connectivity_matrices = True
-
standard = pyphi.examples.basic_network
s = pyphi.examples.basic_subsystem
s_state = pyphi.examples.basic_state()
@@ -44,7 +42,7 @@ def s_complete():
return Subsystem(net, s_state, range(net.size))
-def noised(cm=False):
+def noised():
tpm = np.array([
[0.0, 0.0, 0.0],
[0.0, 0.0, 0.8],
@@ -55,13 +53,11 @@ def noised(cm=False):
[1.0, 1.0, 0.3],
[0.1, 1.0, 0.0]
])
- if cm is False:
- cm = np.array([
- [1, 1, 1],
- [1, 1, 1],
- [1, 1, 1]
- ])
- cm = cm if use_connectivity_matrices else None
+ cm = np.array([
+ [1, 1, 1],
+ [1, 1, 1],
+ [1, 1, 1]
+ ])
return Network(tpm, cm=cm)
@@ -71,12 +67,6 @@ def s_noised():
return Subsystem(n, state, range(n.size))
-def s_noised_complete():
- n = noised(cm=None)
- state = (1, 0, 0)
- return Subsystem(n, state, range(n.size))
-
-
def noisy_selfloop_single():
net = pyphi.examples.basic_noisy_selfloop_network()
state = (1, 0, 0)
diff --git a/test/test_actual.py b/test/test_actual.py
index 91ec18e19..de1ca181e 100644
--- a/test/test_actual.py
+++ b/test/test_actual.py
@@ -50,7 +50,7 @@ def prevention():
# Testing background conditions
-#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@pytest.fixture
def background_all_on():
@@ -85,13 +85,13 @@ def background_all_off():
@pytest.mark.parametrize('transition,direction,mechanism,purview,ratio', [
- (background_all_off, Direction.EFFECT, (0,), (1,), 1),
- (background_all_off, Direction.CAUSE, (1,), (0,), 1),
- (background_all_on, Direction.EFFECT, (0,), (1,), 0),
- (background_all_on, Direction.CAUSE, (1,), (0,), 0)])
+ (pytest.lazy_fixture('background_all_off'), Direction.EFFECT, (0,), (1,), 1),
+ (pytest.lazy_fixture('background_all_off'), Direction.CAUSE, (1,), (0,), 1),
+ (pytest.lazy_fixture('background_all_on'), Direction.EFFECT, (0,), (1,), 0),
+ (pytest.lazy_fixture('background_all_on'), Direction.CAUSE, (1,), (0,), 0)])
def test_background_conditions(transition, direction, mechanism, purview,
ratio):
- assert transition()._ratio(direction, mechanism, purview) == ratio
+ assert transition._ratio(direction, mechanism, purview) == ratio
def test_background_noised():
diff --git a/test/test_big_phi.py b/test/test_big_phi.py
index 855a98e67..ac821ed24 100644
--- a/test/test_big_phi.py
+++ b/test/test_big_phi.py
@@ -395,8 +395,8 @@ def test_sia_complete_graph_standard_example(s_complete):
check_sia(sia, standard_answer)
-def test_sia_complete_graph_s_noised(s_noised_complete):
- sia = compute.sia(s_noised_complete)
+def test_sia_complete_graph_s_noised(s_noised):
+ sia = compute.sia(s_noised)
check_sia(sia, noised_answer)
@@ -480,7 +480,6 @@ def test_rule152_complexes_no_caching(rule152):
assert major.cut == result['cut']
-@pytest.mark.dev
def test_sia_macro(macro_s):
sia = compute.sia(macro_s)
check_sia(sia, macro_answer)
diff --git a/test/test_cache.py b/test/test_cache.py
index 3b6e42c24..69f9a4740 100644
--- a/test/test_cache.py
+++ b/test/test_cache.py
@@ -127,11 +127,11 @@ def all_caches(test_func):
Any decorated test must add a `redis_cache` argument.
"""
@pytest.mark.parametrize("redis_cache,", [
- require_redis((True,)),
- (False,),
+ pytest.param(True, marks=require_redis),
+ pytest.param(False)
])
def wrapper(redis_cache, *args, **kwargs):
- with config.override(REDIS_CACHE=redis_cache[0]):
+ with config.override(REDIS_CACHE=redis_cache):
return test_func(redis_cache, *args, **kwargs)
return functools.wraps(test_func)(wrapper)
diff --git a/test/test_config.py b/test/test_config.py
index 58717ae83..30f96fbe7 100644
--- a/test/test_config.py
+++ b/test/test_config.py
@@ -4,10 +4,12 @@
import logging
import os
+from pathlib import Path
+import shutil
import pytest
-from pyphi import config
+from pyphi import config, constants
from pyphi.conf import Config, Option
@@ -148,6 +150,40 @@ def test_reconfigure_logging_on_change(capsys):
assert err == ''
+def test_reconfigure_precision_on_change():
+ with config.override(PRECISION=100):
+ assert constants.EPSILON == 1e-100
+
+ with config.override(PRECISION=3):
+ assert constants.EPSILON == 1e-3
+
+ with config.override(PRECISION=123):
+ assert constants.EPSILON == 1e-123
+
+
+def test_reconfigure_joblib_on_change(capsys):
+ cachedir = './__testing123__'
+ try:
+ with config.override(FS_CACHE_DIRECTORY=cachedir):
+ assert constants.joblib_memory.location == cachedir
+ assert Path(cachedir).exists()
+ finally:
+ shutil.rmtree(cachedir)
+
+ def f(x):
+ return x + 1
+
+ with config.override(FS_CACHE_VERBOSITY=0):
+ constants.joblib_memory.cache(f)(42)
+ out, err = capsys.readouterr()
+ assert len(out) == 0
+
+ with config.override(FS_CACHE_VERBOSITY=100):
+ constants.joblib_memory.cache(f)(42)
+ out, err = capsys.readouterr()
+ assert len(out) > 0
+
+
@config.override()
@pytest.mark.parametrize('name,valid,invalid', [
('SYSTEM_CUTS', ['3.0_STYLE', 'CONCEPT_STYLE'], ['OTHER']),
diff --git a/test/test_distance.py b/test/test_distance.py
index b4debc716..ffc961f53 100644
--- a/test/test_distance.py
+++ b/test/test_distance.py
@@ -81,14 +81,14 @@ def test_mp2q():
assert distance.mp2q(a, b) == 2.7725887222397811
-def test_bld():
+def test_klm():
a = np.ones((2, 2, 2)) / 8
b = np.ones((2, 2, 2)) / 8
- assert distance.bld(a, b) == 0
+ assert distance.klm(a, b) == 0
a = np.array([[[1]], [[0]]])
b = np.array([[[0.25]], [[0.75]]])
- assert distance.bld(a, b) == 1.3862943611198906
+ assert distance.klm(a, b) == 1.3862943611198906
def test_default_measures():
@@ -99,11 +99,16 @@ def test_default_measures():
'ENTROPY_DIFFERENCE',
'PSQ2',
'MP2Q',
+ 'KLM',
'BLD'])
def test_default_asymmetric_measures():
- assert set(distance.measures.asymmetric()) == set(['KLD', 'MP2Q', 'BLD'])
+ assert set(distance.measures.asymmetric()) == set([
+ 'KLD',
+ 'MP2Q',
+ 'KLM',
+ 'BLD'])
def test_system_repertoire_distance_must_be_symmetric():
diff --git a/test/test_models.py b/test/test_models.py
index 3d6a4b823..db04ba09d 100644
--- a/test/test_models.py
+++ b/test/test_models.py
@@ -742,26 +742,27 @@ def test_tripartion_str(tripartition):
'A,E B C ')
-@pytest.fixture
def k_partition(node_labels=None):
return models.KPartition(
models.Part((0,), (0, 4)),
models.Part((), (1,)),
models.Part((6,), (5,)),
models.Part((2,), (2,)),
- node_labels=node_labels)
+ node_labels=node_labels
+ )
-def test_partition_normalize(k_partition):
- assert k_partition.normalize() == models.KPartition(
+def test_partition_normalize():
+ assert k_partition().normalize() == models.KPartition(
models.Part((), (1,)),
models.Part((0,), (0, 4)),
models.Part((2,), (2,)),
- models.Part((6,), (5,)))
+ models.Part((6,), (5,))
+ )
-def test_partition_normalize_preserves_labels():
- k = k_partition(node_labels=node_labels())
+def test_partition_normalize_preserves_labels(node_labels):
+ k = k_partition(node_labels=node_labels)
assert k.normalize().node_labels == k.node_labels
diff --git a/test/test_network.py b/test/test_network.py
index 6510ad3bc..08cdd67ba 100644
--- a/test/test_network.py
+++ b/test/test_network.py
@@ -5,7 +5,7 @@
import numpy as np
import pytest
-from pyphi import Direction
+from pyphi import Direction, config, exceptions
from pyphi.network import Network
@@ -26,6 +26,19 @@ def test_network_init_validation(network):
tpm = np.ones((4, 4, 4, 3)).astype(float)
Network(tpm)
+ # Conditionally dependent
+ tpm = np.array([
+ [1, 0.0, 0.0, 0],
+ [0, 0.5, 0.5, 0],
+ [0, 0.5, 0.5, 0],
+ [0, 0.0, 0.0, 1],
+ ])
+ with config.override(VALIDATE_CONDITIONAL_INDEPENDENCE=False):
+ Network(tpm)
+ with config.override(VALIDATE_CONDITIONAL_INDEPENDENCE=True):
+ with pytest.raises(exceptions.ConditionallyDependentError):
+ Network(tpm)
+
def test_network_creates_fully_connected_cm_by_default():
tpm = np.zeros((2 * 2 * 2, 3))
diff --git a/test/test_partition.py b/test/test_partition.py
index c0f183842..b34c4c5c7 100644
--- a/test/test_partition.py
+++ b/test/test_partition.py
@@ -9,7 +9,7 @@
from pyphi import Direction, config
from pyphi.partition import (directed_bipartition,
directed_tripartition_indices, k_partitions,
- partitions, partition_registry, mip_bipartitions,
+ partitions, partition_types, mip_bipartitions,
wedge_partitions, all_partitions)
from pyphi.models import Part, KPartition, Bipartition, Tripartition
@@ -289,8 +289,8 @@ def test_all_partitions():
KPartition(Part((0,), (2,)), Part((1,), (3,)), Part((), ()))])
-def test_partition_registry():
- assert partition_registry['BI'] == mip_bipartitions
- assert partition_registry['TRI'] == wedge_partitions
- assert partition_registry['ALL'] == all_partitions
- assert set(partition_registry.all()) == set(['BI', 'TRI', 'ALL'])
+def test_partition_types():
+ assert partition_types['BI'] == mip_bipartitions
+ assert partition_types['TRI'] == wedge_partitions
+ assert partition_types['ALL'] == all_partitions
+ assert set(partition_types.all()) == set(['BI', 'TRI', 'ALL'])
diff --git a/test/test_tpm.py b/test/test_tpm.py
index 0b85bba24..ae425e285 100644
--- a/test/test_tpm.py
+++ b/test/test_tpm.py
@@ -4,7 +4,11 @@
import numpy as np
-from pyphi.tpm import expand_tpm, infer_cm, is_state_by_state, marginalize_out
+from pyphi import Subsystem
+from pyphi.tpm import (
+ expand_tpm, infer_cm, is_state_by_state, marginalize_out,
+ reconstitute_tpm
+)
def test_is_state_by_state():
@@ -48,3 +52,31 @@ def test_marginalize_out(s):
def test_infer_cm(rule152):
assert np.array_equal(infer_cm(rule152.tpm), rule152.cm)
+
+def test_reconstitute_tpm(standard, s_complete, rule152, noised):
+ # Check subsystem and network TPM are the same when the subsystem is the
+ # whole network
+ assert np.array_equal(reconstitute_tpm(s_complete), standard.tpm)
+
+ # Regression tests
+ answer = np.array([
+ [[[0., 0., 0.],
+ [0., 0., 0.]],
+ [[0., 0., 1.],
+ [0., 1., 0.]]],
+ [[[0., 1., 0.],
+ [0., 0., 0.]],
+ [[1., 0., 1.],
+ [1., 1., 0.]]]
+ ])
+ subsystem = Subsystem(rule152, (0,)*5, (0, 1, 2))
+ assert np.array_equal(answer, reconstitute_tpm(subsystem))
+
+ subsystem = Subsystem(noised, (0, 0, 0), (0, 1))
+ answer = np.array([
+ [[0. , 0. ],
+ [0.7, 0. ]],
+ [[0. , 0. ],
+ [1. , 0. ]]
+ ])
+ assert np.array_equal(answer, reconstitute_tpm(subsystem))
\ No newline at end of file
diff --git a/test/test_validate.py b/test/test_validate.py
index 85e4b038e..43c466493 100644
--- a/test/test_validate.py
+++ b/test/test_validate.py
@@ -39,11 +39,9 @@ def test_validate_tpm_conditional_independence():
[0, 0.5, 0.5, 0],
[0, 0.0, 0.0, 1],
])
- with pytest.raises(ValueError):
- validate.conditionally_independent(tpm)
- with config.override(VALIDATE_CONDITIONAL_INDEPENDENCE=False):
+ with pytest.raises(exceptions.ConditionallyDependentError):
validate.conditionally_independent(tpm)
- with pytest.raises(ValueError):
+ with pytest.raises(exceptions.ConditionallyDependentError):
validate.tpm(tpm)
validate.tpm(tpm, check_independence=False)
diff --git a/test_requirements.txt b/test_requirements.txt
index 5b741eb5c..beb9d72c4 100644
--- a/test_requirements.txt
+++ b/test_requirements.txt
@@ -1,5 +1,6 @@
numpy >=1.1.4
-pytest
+pytest >=3.1.0
+pytest-lazy-fixture
coverage
asv
virtualenv
diff --git a/tox.ini b/tox.ini
index ef78a9dd0..18a0c1fae 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
[tox]
-envlist = py{34,35,36}
+envlist = py{34,35,36,37}
[testenv]
deps = -r{toxinidir}/requirements.txt