Repository: dPys/PyNets (language: python)

Issue:
Additions to test_netstats and removal of redundancy in netstats
Added tests for get_prop_type() and nx2gt().

Removed redundant code in pynets/stats/netstats


Discussion / hints:

Fix patch:
diff --git a/.circleci/config.yml b/.circleci/config.yml
index ad4a985e..a4c8e25d 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -274,12 +274,13 @@ jobs:
             mkdir test-results
             export PYTHONUNBUFFERED=1
             python -m coverage run -p --rcfile=.coveragerc -m pytest -s --circleci-parallelize --verbose --junitxml="test-results/junit.xml" tests/test_*.py
+            sudo chmod 777 -R /usr/lib/python3/dist-packages
       - persist_to_workspace:
           root: /tmp/src/pynets
           paths:
             - .coverage*
       - save_cache:
-          key: unit&integrationtests
+          key: unit&integrationtests-{{ arch}}
           paths:
             - ~/test_cache
       - store_test_results:
@@ -289,12 +290,16 @@ jobs:
 
   coverage:
     machine:
-      image: ubuntu-1604:201903-01
+      image: ubuntu-2004:202010-01
     working_directory: /tmp/src/pynets
+    environment:
+      - FSLDIR: /usr/local/fsl
+      - FSLOUTPUTTYPE: 'NIFTI'
+      - PYTHONUNBUFFERED: 1
     steps:
       - checkout
       - restore_cache:
-          key: unit&integrationtests
+          key: unit&integrationtests-{{ arch}}
       - attach_workspace:
           at: /tmp/src/pynets
       - run:
@@ -307,8 +312,7 @@ jobs:
             sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 5DC22404A6F9F1CA
             sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 78BD65473CB3BD13
             sudo apt-get update
-            sudo apt-get install -y make build-essential
-            sudo apt-get install -y software-properties-common libbz2-dev llvm libncurses5-dev libncursesw5-dev liblzma-dev
+            sudo apt-get install -y make build-essential software-properties-common libbz2-dev llvm libncurses5-dev libncursesw5-dev liblzma-dev libatlas-base-dev
             sudo apt-get upgrade
             pyenv install -f 3.6.5 || true
             eval "$(pyenv init -)"
@@ -320,7 +324,17 @@ jobs:
           name: Check Python version and upgrade pip
           command: |
             python -m pip install -U pip
-            python -m pip install --upgrade pip setuptools
+            python -m pip install --upgrade pip setuptools numpy pytess perlcompat scipy matplotlib
+      - run:
+          name: Install graph_tool
+          no_output_timeout: 30m
+          command: |
+            echo "deb [ arch=amd64 ] https://downloads.skewed.de/apt focal main" | sudo tee -a /etc/apt/sources.list
+            curl -fsSL https://keys.openpgp.org/vks/v1/by-fingerprint/793CEFE14DBC851A2BFB1222612DEFB798507F25 | sudo apt-key add -
+            sudo apt-get update
+            sudo apt-get install --allow-unauthenticated -y libatlas-base-dev python3-graph-tool
+            sudo ln -sf /usr/lib/python3/dist-packages/graph_tool /opt/circleci/.pyenv/versions/3.6.5/lib/python3.6/site-packages/graph_tool
+            python -c "import graph_tool.all as gt"
       - run:
           name: Update codecov
           command: |
diff --git a/.coveragerc b/.coveragerc
index 6b59c644..d16e20c8 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -1,5 +1,5 @@
 [run]
-omit = 
+omit =
 	*__init__*
 	*__pycache__*
 	tests/*
@@ -38,7 +38,7 @@ omit =
 	pynets/stats/benchmarking.py
 	pynets/stats/embeddings.py
 	pynets/stats/prediction.py
-        pynets/stats/utils.py
+    pynets/stats/utils.py
 	pynets/registration/register.py
 	pynets/core/interfaces.py
 	pynets/core/cloud_utils.py
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index b435b92f..a30dfee9 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -15,7 +15,7 @@ Types of Contributions
 Report Bugs
 ~~~~~~~~~~~
 
-Report bugs at https://github.com/dpisner453/pynets/issues.
+Report bugs at https://github.com/dPys/pynets/issues.
 
 If you are reporting a bug, please include:
 
@@ -54,6 +54,18 @@ If you are proposing a feature:
 * Remember that this is a volunteer-driven project, and that contributions
   are welcome :)
 
+Submit Pull-Requests using informative commit prefixes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    [ENH]: enhancements or new features.
+    [FIX]: bug fixes.
+    [TST]: new or updated tests.
+    [DOC]: new or updated documentation.
+    [STY]: style changes.
+    [REF]: refactoring existing code.
+    [CI]: updates to continuous integration infrastructure.
+    [MAINT]: general maintenance.
+    [WIP]: works-in-progress.
+
 Get Started!
 ------------
 
@@ -64,33 +76,40 @@ Ready to contribute? Here's how to set up `pynets` for local development.
 
     $ git clone git@github.com:your_name_here/pynets.git
 
-3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development::
+3. Configure your git remotes::
+
+    $ git remote add origin https://github.com/your_name_here/pynets.git
+    $ git remote add upstream https://github.com/dPys/pynets.git
+    $ git remote -v
+
+4. Install your local copy::
 
-    $ mkvirtualenv pynets
     $ cd pynets/
     $ python setup.py develop
 
-4. Create a branch for local development::
+5. Create a feature branch for local development::
 
     $ git checkout -b name-of-your-bugfix-or-feature
 
    Now you can make your changes locally.
 
-5. When you're done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox::
+6. When you're done making changes, ensure you are still in-sync with any
+   upstream changes that may have happened in the meantime::
 
-    $ flake8 pynets tests
-    $ python setup.py test or py.test
-    $ tox
+    $ git fetch upstream
+    $ git merge upstream/development
 
-   To get flake8 and tox, just pip install them into your virtualenv.
+7. It's also a good idea to check that your changes pass tests::
 
-6. Commit your changes and push your branch to GitHub::
+    $ pytest -vvv
+
+7. Commit your changes and push your branch to GitHub::
 
     $ git add .
-    $ git commit -m "Your detailed description of your changes."
-    $ git push origin name-of-your-bugfix-or-feature
+    $ git commit -m "[PREFIX] Your detailed description of your changes."
+    $ git push -u origin name-of-your-bugfix-or-feature
 
-7. Submit a pull request through the GitHub website.
+8. Submit a pull request through the GitHub website.
 
 Pull Request Guidelines
 -----------------------
@@ -102,13 +121,7 @@ Before you submit a pull request, check that it meets these guidelines:
    your new functionality into a function with a docstring, and add the
    feature to the list in README.rst.
 3. The pull request should work for Python 3.6+, and for PyPy. Check
-   https://travis-ci.org/dPys/pynets/pull_requests
+   https://app.circleci.com/pipelines/github/dPys/PyNets
    and make sure that the tests pass for all supported Python versions.
 
-Tips
-----
-
-To run a subset of tests::
-
-$ pytest PyNets
 
diff --git a/README.md b/README.md
index 6048286e..6b388466 100644
--- a/README.md
+++ b/README.md
@@ -26,8 +26,8 @@ installation of [Python3.6+](https://www.python.org/download/releases/3.0/) with
 or
 ```
 # Install git-lfs
-brew install git-lfs (macOS) or [sudo] apt-get install git-lfs (linux)
-git lfs install --skip-repo
+1. brew install git-lfs (macOS) or [sudo] apt-get install git-lfs (linux) or skip to step 2 (Windows)
+2. git lfs install --skip-repo
 
 # Clone the repository and install
 git clone https://github.com/dpys/pynets
@@ -37,7 +37,9 @@ cd PyNets
 
 Hardware Requirements
 ---------------------
-4 vCPUs, 8+ GB free RAM, and at least 8-16 GB of free disk space.
+4+ vCPU's, 8+ GB RSS memory, and at least 10 GB of free disk space though
+storage needs can vary considerably depending on the size of the input data
+at the type of analysis that you wish to run.
 
 Operating Systems
 -----------------
@@ -93,7 +95,7 @@ where the `-config` flag specifies that path to a .json configuration spec that
     "gen": { # These are general options that apply to all modalities
             "a":  "['BrainnetomeAtlasFan2016', 'atlas_harvard_oxford', 'destrieux2009_rois']", # Anatomical atlases to define nodes.
             "bin":  "False", # Binarize the resulting connectome graph before analyzing it. Note that undirected weighted graphs are analyzed by default.
-            "embed":  "False", # Activate omnibus and single-graph adjacency spectral embedding of connectome estimates sampled.
+            "embed":  "False", # Activate any of several available graph embedding methods
             "mplx":  0, # If both functional and structural data are provided, this parameter [0-3] indicates the type of multiplex connectome modeling to perform. See `pynets -h` for more details on multiplex modes.
             "n":  "['Cont', 'Default']", # Which, if any, Yeo-7/17 resting-state sub-networks to select from the given parcellation. If multiple are specified, all other options will iterate across each.
             "norm": "['6']", # Level of normalization to apply to graph (e.g. standardize betwee 0-1, Pass-to-Ranks (PTR), log10).
diff --git a/pynets/cli/pynets_benchmark.py b/pynets/cli/pynets_benchmark.py
index 99d3b8a6..d5604aab 100644
--- a/pynets/cli/pynets_benchmark.py
+++ b/pynets/cli/pynets_benchmark.py
@@ -32,17 +32,17 @@ def main():
         sys.exit(1)
 
     # Parse inputs
-    base_dir = '/scratch/04171/dpisner/HNU/HNU_outs/archives/triple_network'
+    base_dir = '/scratch/04171/dpisner/HNU/HNU_outs/triple'
     #base_dir = '/scratch/04171/dpisner/HNU/HNU_outs/outputs_language'
     thr_type = "MST"
     icc = True
-    disc = True
+    disc = False
     int_consist = False
-    modality = 'func'
+    modality = 'dwi'
 
-    embedding_types = ['betweenness']
+    embedding_types = ['OMNI']
     #rsns = ['language']
-    rsns = ['kmeans']
+    rsns = ['kmeans', 'triple']
     template = 'CN200'
     # template = 'MNI152_T1'
     mets = ["global_efficiency",
diff --git a/pynets/cli/pynets_run.py b/pynets/cli/pynets_run.py
index a47225e3..b489db7d 100755
--- a/pynets/cli/pynets_run.py
+++ b/pynets/cli/pynets_run.py
@@ -350,24 +350,24 @@ def get_parser():
     parser.add_argument(
         "-ml",
         metavar="Minimum fiber length for tracking",
-        default=20,
+        default=10,
         nargs="+",
         help="(metaparameter): Include this flag to manually specify a "
              "minimum tract length (mm) for dmri connectome tracking. Default "
-             "is 20. If you wish to iterate the pipeline across multiple "
+             "is 10. If you wish to iterate the pipeline across multiple "
              "minimums, separate the list by space (e.g. 10 30 50).\n",
     )
     parser.add_argument(
         "-tol",
         metavar="Error margin",
-        default=8,
+        default=5,
         nargs="+",
         help="(metaparameter): Distance (in the units of the streamlines, "
              "usually mm). If any coordinate in the streamline is within this "
              "distance from the center of any voxel in the ROI, the filtering "
              "criterion is set to True for this streamline, otherwise False. "
              "Defaults to the distance between the center of each voxel and "
-             "the corner of the voxel. Default is 8.\n",
+             "the corner of the voxel. Default is 5.\n",
     )
     parser.add_argument(
         "-dg",
@@ -394,7 +394,7 @@ def get_parser():
              "for all non-zero edges; (4) using pass-to-ranks for all non-zero"
              " edges relative to the number of nodes; (5) using pass-to-ranks"
              " with zero-edge boost; and (6) which standardizes the matrix to "
-             "values [0, 1]. Default is (1) which is maximum edge weight.\n",
+             "values [0, 1]. Default is (6).\n",
     )
     parser.add_argument(
         "-bin",
@@ -423,15 +423,15 @@ def get_parser():
     parser.add_argument(
         "-p",
         metavar="Pruning Strategy",
-        default=1,
+        default=0,
         nargs=1,
         choices=["0", "1", "2", "3"],
         help="Include this flag to (1) prune the graph of any "
              "isolated + fully disconnected nodes (i.e. anti-fragmentation),"
              " (2) prune the graph of all but hubs as defined by any of a "
              "variety of definitions (see ruconfig.yaml), or (3) retain only "
-             "the largest connected component subgraph. Default is 1. Include"
-             " `-p 0` to disable fragmentation-protection.\n",
+             "the largest connected component subgraph. Default is no pruning."
+             " Include `-p 1` to enable fragmentation-protection.\n",
     )
     parser.add_argument(
         "-df",
@@ -503,7 +503,7 @@ def get_parser():
              " (7-network or 17-network): Vis, SomMot, DorsAttn, SalVentAttn,"
              " Limbic, Cont, Default, VisCent, VisPeri, SomMotA, SomMotB, "
              "DorsAttnA, DorsAttnB, SalVentAttnA, SalVentAttnB, LimbicOFC, "
-        "LimbicTempPole, ContA, ContB, ContC, DefaultA, DefaultB, "
+             "LimbicTempPole, ContA, ContB, ContC, DefaultA, DefaultB, "
              "DefaultC, TempPar. If listing multiple RSNs, separate them by "
              "space. (e.g. -n 'Default' 'Cont' 'SalVentAttn')'.\n",
     )
@@ -511,9 +511,7 @@ def get_parser():
         "-vox",
         default="2mm",
         nargs=1,
-        choices=[
-            "1mm",
-            "2mm"],
+        choices=["1mm", "2mm"],
         help="Optionally use this flag if you wish to change the resolution of"
              " the images in the workflow. Default is 2mm.\n",
     )
@@ -583,16 +581,14 @@ def build_workflow(args, retval):
     import glob
     import ast
     import os.path as op
-    import sys
     import timeit
     from datetime import timedelta
     from colorama import Fore, Style
     from pathlib import Path
-    import pkg_resources
-    import yaml
     import datetime
     from os import environ
     from subprocess import check_output
+    from pynets.core.utils import load_runconfig
 
     try:
         import pynets
@@ -616,11 +612,15 @@ def build_workflow(args, retval):
     else:
         fsl_version = check_output('flirt -version | cut -f3 -d\" \"',
                                    shell=True).strip()
-        if fsl_version:
+        fsldir = os.environ['FSLDIR']
+
+        if fsl_version and os.path.isdir(fsldir):
             print(f"{Fore.MAGENTA}FSL {fsl_version.decode()} detected: "
-                  f"FSLDIR={os.environ['FSLDIR']}")
+                  f"FSLDIR={fsldir}")
         else:
-            print('Is your FSL installation corrupted? Check permissions.')
+            print('Is your FSL installation corrupted? Check permissions and'
+                  ' ensure that you have correctly configured your local '
+                  'profile (e.g. ~/.bashrc).')
             retval["return_code"] = 1
             return retval
 
@@ -632,7 +632,6 @@ def build_workflow(args, retval):
     print(Style.RESET_ALL)
 
     # Hard-coded:
-    from pynets.core.utils import load_runconfig
     hardcoded_params = load_runconfig()
 
     maxcrossing = hardcoded_params['tracking']["maxcrossing"][0]
@@ -647,7 +646,6 @@ def build_workflow(args, retval):
     nilearn_coord_atlases = hardcoded_params["nilearn_coord_atlases"]
     nilearn_prob_atlases = hardcoded_params["nilearn_prob_atlases"]
     local_atlases = hardcoded_params["local_atlases"]
-    template_name = hardcoded_params['template'][0]
     roi_neighborhood_tol = \
         hardcoded_params['tracking']["roi_neighborhood_tol"][0]
 
diff --git a/pynets/core/interfaces.py b/pynets/core/interfaces.py
index 20927d39..932f0a2f 100755
--- a/pynets/core/interfaces.py
+++ b/pynets/core/interfaces.py
@@ -2904,13 +2904,12 @@ def _run_interface(self, runtime):
                 bbox_valid_check=False,
             )
 
-            fa_img.uncache()
             streamlines = tractogram.streamlines
 
             # Create streamline density map
             try:
                 [dir_path, dm_path] = create_density_map(
-                    dwi_img,
+                    fa_img,
                     dir_path,
                     streamlines,
                     self.inputs.conn_model,
@@ -2929,6 +2928,7 @@ def _run_interface(self, runtime):
                 dm_path = None
 
             del streamlines, tractogram
+            fa_img.uncache()
             dwi_img.uncache()
             gc.collect()
             self._results["dm_path"] = dm_path
diff --git a/pynets/core/nodemaker.py b/pynets/core/nodemaker.py
index f3d2a48c..61da6869 100644
--- a/pynets/core/nodemaker.py
+++ b/pynets/core/nodemaker.py
@@ -11,7 +11,6 @@
 if sys.platform.startswith('win') is False:
     import indexed_gzip
 import nibabel as nib
-import yaml
 from pathlib import Path
 
 warnings.filterwarnings("ignore")
@@ -1324,7 +1323,7 @@ def parcel_naming(coords, vox_size):
         label_img = nib.load(label_img_path)
 
         label_img_res = resample_to_img(
-            label_img, template_img, interpolation="nearest"
+            label_img, template_img, interpolation="nearest", copy=False
         )
         label_img_dict[label_atlas]['affine'] = label_img_res.affine
         label_img_dict[label_atlas]['data'] = np.asarray(
diff --git a/pynets/core/utils.py b/pynets/core/utils.py
index b864f723..856d653e 100644
--- a/pynets/core/utils.py
+++ b/pynets/core/utils.py
@@ -7,7 +7,6 @@
 """
 import warnings
 import os
-import re
 import sys
 import os.path as op
 if sys.platform.startswith('win') is False:
diff --git a/pynets/dmri/track.py b/pynets/dmri/track.py
index 3fefe409..71a84e77 100644
--- a/pynets/dmri/track.py
+++ b/pynets/dmri/track.py
@@ -191,7 +191,7 @@ def prep_tissues(
 
 
 def create_density_map(
-    dwi_img,
+    fa_img,
     dir_path,
     streamlines,
     conn_model,
@@ -210,7 +210,7 @@ def create_density_map(
 
     Parameters
     ----------
-    dwi_img : Nifti1Image
+    fa_img : Nifti1Image
         Dwi data stored as a Nifti1image object.
     dir_path : str
         Path to directory containing subject derivative data for a given
@@ -252,15 +252,25 @@ def create_density_map(
     """
     import os.path as op
     from dipy.tracking import utils
+    from dipy.tracking._utils import _mapping_to_voxel
+
+    # Remove streamlines with negative voxel indices
+    lin_T, offset = _mapping_to_voxel(np.eye(4))
+    streams_filt = []
+    for sl in streamlines:
+        inds = np.dot(sl, lin_T)
+        inds += offset
+        if not inds.min().round(decimals=6) < 0:
+            streams_filt.append(sl)
 
     # Create density map
     dm = utils.density_map(
-        streamlines,
+        streams_filt,
         affine=np.eye(4),
-        vol_dims=dwi_img.shape)
+        vol_dims=fa_img.shape)
 
     # Save density map
-    dm_img = nib.Nifti1Image(dm.astype("float32"), dwi_img.affine)
+    dm_img = nib.Nifti1Image(dm.astype("float32"), fa_img.affine)
 
     dm_path = "%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s" % (
         namer_dir,
@@ -290,7 +300,7 @@ def create_density_map(
     )
     dm_img.to_filename(dm_path)
 
-    del streamlines
+    del streamlines, streams_filt
     dm_img.uncache()
 
     return dir_path, dm_path
@@ -430,6 +440,7 @@ def track_ensemble(
         hardcoded_params['tracking']["min_separation_angle"][0]
     min_streams = \
         hardcoded_params['tracking']["min_streams"][0]
+    seeding_mask_thr = hardcoded_params['tracking']["seeding_mask_thr"][0]
     timeout = hardcoded_params['tracking']["track_timeout"][0]
 
     all_combs = list(itertools.product(step_list, curv_thr_list))
@@ -437,7 +448,8 @@ def track_ensemble(
     # Construct seeding mask
     seeding_mask = f"{tmp_files_dir}/seeding_mask.nii.gz"
     if waymask is not None and os.path.isfile(waymask):
-        waymask_img = math_img("img > 0.0075", img=nib.load(waymask))
+        waymask_img = math_img(f"img > {seeding_mask_thr}",
+                               img=nib.load(waymask))
         waymask_img.to_filename(waymask)
         atlas_data_wm_gm_int_img = intersect_masks(
             [
diff --git a/pynets/fmri/estimation.py b/pynets/fmri/estimation.py
index 19c23fdd..e7b1fdda 100644
--- a/pynets/fmri/estimation.py
+++ b/pynets/fmri/estimation.py
@@ -615,6 +615,7 @@ def extract_ts_parc(self):
         m x n array is ultimately saved to file in .npy format.
         """
         import nibabel as nib
+        import pandas as pd
         from nilearn import input_data
         from pynets.fmri.estimation import fill_confound_nans
 
@@ -638,23 +639,51 @@ def extract_ts_parc(self):
         )
 
         if self.conf is not None:
-            import pandas as pd
             import os
 
             confounds = pd.read_csv(self.conf, sep="\t")
-            if confounds.isnull().values.any():
-                conf_corr = fill_confound_nans(confounds, self.dir_path)
-                self.ts_within_nodes = self._parcel_masker.fit_transform(
-                    self._func_img, confounds=conf_corr
-                )
-                os.remove(conf_corr)
+
+            cols = [i for i in confounds.columns if 'motion_outlier' in i
+                    or i == 'framewise_displacement'
+                    or i == 'white_matter' or i == 'csf'
+                    or i == 'std_dvars' or i == 'rot_z'
+                    or i == 'rot_y' or i == 'rot_x' or i == 'trans_z'
+                    or i == 'trans_y' or i == 'trans_x'
+                    or 'non_steady_state_outlier' in i]
+
+            if len(confounds.index) == self._func_img.shape[-1]:
+                if confounds.isnull().values.any():
+                    conf_corr = fill_confound_nans(confounds, self.dir_path)
+                    self.ts_within_nodes = self._parcel_masker.fit_transform(
+                        self._func_img.slicer[:,:,:,5:],
+                        confounds=pd.read_csv(conf_corr,
+                                              sep="\t").loc[5:][cols].values
+                    )
+                    os.remove(conf_corr)
+                else:
+                    self.ts_within_nodes = self._parcel_masker.fit_transform(
+                        self._func_img.slicer[:,:,:,5:],
+                        confounds=pd.read_csv(self.conf,
+                                              sep="\t").loc[5:][cols].values
+                    )
             else:
+                from nilearn.image import high_variance_confounds
+                print(f"Shape of confounds ({len(confounds.index)}) does not"
+                      f" equal the number of volumes "
+                      f"({self._func_img.shape[-1]}) in the time-series")
                 self.ts_within_nodes = self._parcel_masker.fit_transform(
-                    self._func_img, confounds=self.conf
-                )
+                    self._func_img.slicer[:,:,:,5:],
+                    confounds=pd.DataFrame(
+                        high_variance_confounds(
+                            self._func_img,
+                            percentile=1)).loc[5:].values)
         else:
+            from nilearn.image import high_variance_confounds
             self.ts_within_nodes = self._parcel_masker.fit_transform(
-                self._func_img)
+                self._func_img.slicer[:,:,:,5:],
+                confounds=pd.DataFrame(
+                    high_variance_confounds(self._func_img,
+                                            percentile=1)).loc[5:].values)
 
         self._func_img.uncache()
 
diff --git a/pynets/plotting/FD_graph.json b/pynets/plotting/FD_graph.json
deleted file mode 100644
index f3cc42f8..00000000
--- a/pynets/plotting/FD_graph.json
+++ /dev/null
@@ -1,4708 +0,0 @@
-{
-    "links": [
-        {
-            "source": "0",
-            "target": "0",
-            "value": -0.739296
-        },
-        {
-            "source": "0",
-            "target": "3",
-            "value": 0.002031
-        },
-        {
-            "source": "0",
-            "target": "7",
-            "value": 0.064852
-        },
-        {
-            "source": "0",
-            "target": "17",
-            "value": 0.058168
-        },
-        {
-            "source": "0",
-            "target": "20",
-            "value": 0.008733
-        },
-        {
-            "source": "0",
-            "target": "23",
-            "value": 0.007
-        },
-        {
-            "source": "0",
-            "target": "28",
-            "value": 0.100465
-        },
-        {
-            "source": "0",
-            "target": "33",
-            "value": 0.021338
-        },
-        {
-            "source": "0",
-            "target": "34",
-            "value": 0.043669
-        },
-        {
-            "source": "0",
-            "target": "39",
-            "value": 0.003795
-        },
-        {
-            "source": "0",
-            "target": "40",
-            "value": 0.009208
-        },
-        {
-            "source": "0",
-            "target": "47",
-            "value": 0.053125
-        },
-        {
-            "source": "0",
-            "target": "48",
-            "value": 0.004662
-        },
-        {
-            "source": "0",
-            "target": "49",
-            "value": 0.027077
-        },
-        {
-            "source": "0",
-            "target": "50",
-            "value": 0.01792
-        },
-        {
-            "source": "0",
-            "target": "58",
-            "value": 0.000869
-        },
-        {
-            "source": "0",
-            "target": "60",
-            "value": 0.008191
-        },
-        {
-            "source": "0",
-            "target": "62",
-            "value": 0.01657
-        },
-        {
-            "source": "0",
-            "target": "64",
-            "value": 0.056397
-        },
-        {
-            "source": "0",
-            "target": "69",
-            "value": 0.005058
-        },
-        {
-            "source": "0",
-            "target": "86",
-            "value": 0.075667
-        },
-        {
-            "source": "1",
-            "target": "1",
-            "value": -0.744653
-        },
-        {
-            "source": "1",
-            "target": "3",
-            "value": 0.020225
-        },
-        {
-            "source": "1",
-            "target": "4",
-            "value": 0.026335
-        },
-        {
-            "source": "1",
-            "target": "12",
-            "value": 0.046574
-        },
-        {
-            "source": "1",
-            "target": "15",
-            "value": 0.008483
-        },
-        {
-            "source": "1",
-            "target": "20",
-            "value": 0.034562
-        },
-        {
-            "source": "1",
-            "target": "21",
-            "value": 0.058469
-        },
-        {
-            "source": "1",
-            "target": "23",
-            "value": 0.024073
-        },
-        {
-            "source": "1",
-            "target": "25",
-            "value": 0.002196
-        },
-        {
-            "source": "1",
-            "target": "26",
-            "value": 0.013625
-        },
-        {
-            "source": "1",
-            "target": "30",
-            "value": 0.024292
-        },
-        {
-            "source": "1",
-            "target": "34",
-            "value": 0.01903
-        },
-        {
-            "source": "1",
-            "target": "35",
-            "value": 0.038127
-        },
-        {
-            "source": "1",
-            "target": "52",
-            "value": 0.060632
-        },
-        {
-            "source": "1",
-            "target": "56",
-            "value": 0.012824
-        },
-        {
-            "source": "1",
-            "target": "60",
-            "value": 0.021711
-        },
-        {
-            "source": "1",
-            "target": "61",
-            "value": 0.02816
-        },
-        {
-            "source": "1",
-            "target": "67",
-            "value": 0.017839
-        },
-        {
-            "source": "1",
-            "target": "72",
-            "value": 0.026843
-        },
-        {
-            "source": "1",
-            "target": "78",
-            "value": 0.035176
-        },
-        {
-            "source": "1",
-            "target": "80",
-            "value": 0.047003
-        },
-        {
-            "source": "2",
-            "target": "2",
-            "value": -0.876453
-        },
-        {
-            "source": "2",
-            "target": "5",
-            "value": 0.037803
-        },
-        {
-            "source": "2",
-            "target": "8",
-            "value": 0.021406
-        },
-        {
-            "source": "2",
-            "target": "9",
-            "value": 0.100617
-        },
-        {
-            "source": "2",
-            "target": "18",
-            "value": 0.063827
-        },
-        {
-            "source": "2",
-            "target": "36",
-            "value": 0.059497
-        },
-        {
-            "source": "2",
-            "target": "38",
-            "value": 0.018376
-        },
-        {
-            "source": "2",
-            "target": "40",
-            "value": 0.113248
-        },
-        {
-            "source": "2",
-            "target": "48",
-            "value": 0.014962
-        },
-        {
-            "source": "2",
-            "target": "59",
-            "value": 0.002654
-        },
-        {
-            "source": "2",
-            "target": "69",
-            "value": 0.013529
-        },
-        {
-            "source": "2",
-            "target": "76",
-            "value": 0.027911
-        },
-        {
-            "source": "2",
-            "target": "81",
-            "value": 0.140995
-        },
-        {
-            "source": "2",
-            "target": "83",
-            "value": 0.049106
-        },
-        {
-            "source": "2",
-            "target": "86",
-            "value": 0.103029
-        },
-        {
-            "source": "2",
-            "target": "87",
-            "value": 0.080313
-        },
-        {
-            "source": "3",
-            "target": "3",
-            "value": -0.856292
-        },
-        {
-            "source": "3",
-            "target": "6",
-            "value": 0.012423
-        },
-        {
-            "source": "3",
-            "target": "10",
-            "value": 0.007729
-        },
-        {
-            "source": "3",
-            "target": "11",
-            "value": 0.00104
-        },
-        {
-            "source": "3",
-            "target": "15",
-            "value": 0.02434
-        },
-        {
-            "source": "3",
-            "target": "19",
-            "value": 0.011465
-        },
-        {
-            "source": "3",
-            "target": "20",
-            "value": 0.021275
-        },
-        {
-            "source": "3",
-            "target": "21",
-            "value": 0.011294
-        },
-        {
-            "source": "3",
-            "target": "23",
-            "value": 0.036394
-        },
-        {
-            "source": "3",
-            "target": "29",
-            "value": 0.011498
-        },
-        {
-            "source": "3",
-            "target": "34",
-            "value": 0.064826
-        },
-        {
-            "source": "3",
-            "target": "41",
-            "value": 0.129204
-        },
-        {
-            "source": "3",
-            "target": "44",
-            "value": 0.026459
-        },
-        {
-            "source": "3",
-            "target": "48",
-            "value": 0.008134
-        },
-        {
-            "source": "3",
-            "target": "49",
-            "value": 0.029841
-        },
-        {
-            "source": "3",
-            "target": "50",
-            "value": 0.026952
-        },
-        {
-            "source": "3",
-            "target": "56",
-            "value": 0.109405
-        },
-        {
-            "source": "3",
-            "target": "57",
-            "value": 0.007089
-        },
-        {
-            "source": "3",
-            "target": "58",
-            "value": 0.020605
-        },
-        {
-            "source": "3",
-            "target": "60",
-            "value": 0.040174
-        },
-        {
-            "source": "3",
-            "target": "64",
-            "value": 0.037413
-        },
-        {
-            "source": "3",
-            "target": "65",
-            "value": 0.020392
-        },
-        {
-            "source": "3",
-            "target": "67",
-            "value": 0.027191
-        },
-        {
-            "source": "3",
-            "target": "72",
-            "value": 0.006328
-        },
-        {
-            "source": "3",
-            "target": "73",
-            "value": 0.004019
-        },
-        {
-            "source": "3",
-            "target": "77",
-            "value": 0.018483
-        },
-        {
-            "source": "3",
-            "target": "79",
-            "value": 0.084955
-        },
-        {
-            "source": "3",
-            "target": "80",
-            "value": 0.038355
-        },
-        {
-            "source": "4",
-            "target": "4",
-            "value": -0.913723
-        },
-        {
-            "source": "4",
-            "target": "6",
-            "value": 0.010394
-        },
-        {
-            "source": "4",
-            "target": "9",
-            "value": 0.121347
-        },
-        {
-            "source": "4",
-            "target": "10",
-            "value": 0.00816
-        },
-        {
-            "source": "4",
-            "target": "12",
-            "value": 0.023831
-        },
-        {
-            "source": "4",
-            "target": "15",
-            "value": 0.070218
-        },
-        {
-            "source": "4",
-            "target": "21",
-            "value": 0.144427
-        },
-        {
-            "source": "4",
-            "target": "23",
-            "value": 0.128726
-        },
-        {
-            "source": "4",
-            "target": "24",
-            "value": 0.003411
-        },
-        {
-            "source": "4",
-            "target": "26",
-            "value": 0.003813
-        },
-        {
-            "source": "4",
-            "target": "29",
-            "value": 0.026352
-        },
-        {
-            "source": "4",
-            "target": "35",
-            "value": 0.020524
-        },
-        {
-            "source": "4",
-            "target": "38",
-            "value": 0.03577
-        },
-        {
-            "source": "4",
-            "target": "48",
-            "value": 0.04459
-        },
-        {
-            "source": "4",
-            "target": "56",
-            "value": 0.004306
-        },
-        {
-            "source": "4",
-            "target": "60",
-            "value": 0.03571
-        },
-        {
-            "source": "4",
-            "target": "65",
-            "value": 0.00034
-        },
-        {
-            "source": "4",
-            "target": "68",
-            "value": 0.050064
-        },
-        {
-            "source": "4",
-            "target": "73",
-            "value": 0.00528
-        },
-        {
-            "source": "4",
-            "target": "77",
-            "value": 0.018398
-        },
-        {
-            "source": "4",
-            "target": "81",
-            "value": 0.018821
-        },
-        {
-            "source": "4",
-            "target": "87",
-            "value": 0.109262
-        },
-        {
-            "source": "5",
-            "target": "5",
-            "value": -0.691382
-        },
-        {
-            "source": "5",
-            "target": "17",
-            "value": 0.008919
-        },
-        {
-            "source": "5",
-            "target": "26",
-            "value": 0.044528
-        },
-        {
-            "source": "5",
-            "target": "40",
-            "value": 0.024543
-        },
-        {
-            "source": "5",
-            "target": "45",
-            "value": 0.071808
-        },
-        {
-            "source": "5",
-            "target": "46",
-            "value": 0.001703
-        },
-        {
-            "source": "5",
-            "target": "48",
-            "value": 0.00993
-        },
-        {
-            "source": "5",
-            "target": "51",
-            "value": 0.039956
-        },
-        {
-            "source": "5",
-            "target": "69",
-            "value": 0.096611
-        },
-        {
-            "source": "5",
-            "target": "86",
-            "value": 0.040733
-        },
-        {
-            "source": "6",
-            "target": "6",
-            "value": -0.806569
-        },
-        {
-            "source": "6",
-            "target": "11",
-            "value": 0.072032
-        },
-        {
-            "source": "6",
-            "target": "12",
-            "value": 0.027556
-        },
-        {
-            "source": "6",
-            "target": "15",
-            "value": 0.029023
-        },
-        {
-            "source": "6",
-            "target": "19",
-            "value": 0.03926
-        },
-        {
-            "source": "6",
-            "target": "20",
-            "value": 0.010817
-        },
-        {
-            "source": "6",
-            "target": "21",
-            "value": 0.043449
-        },
-        {
-            "source": "6",
-            "target": "23",
-            "value": 0.047721
-        },
-        {
-            "source": "6",
-            "target": "24",
-            "value": 0.00043
-        },
-        {
-            "source": "6",
-            "target": "34",
-            "value": 0.005026
-        },
-        {
-            "source": "6",
-            "target": "35",
-            "value": 0.010692
-        },
-        {
-            "source": "6",
-            "target": "38",
-            "value": 0.047003
-        },
-        {
-            "source": "6",
-            "target": "41",
-            "value": 0.012393
-        },
-        {
-            "source": "6",
-            "target": "43",
-            "value": 0.016147
-        },
-        {
-            "source": "6",
-            "target": "48",
-            "value": 0.036559
-        },
-        {
-            "source": "6",
-            "target": "50",
-            "value": 0.02973
-        },
-        {
-            "source": "6",
-            "target": "53",
-            "value": 0.034791
-        },
-        {
-            "source": "6",
-            "target": "57",
-            "value": 0.038215
-        },
-        {
-            "source": "6",
-            "target": "65",
-            "value": 0.009367
-        },
-        {
-            "source": "6",
-            "target": "67",
-            "value": 0.042507
-        },
-        {
-            "source": "6",
-            "target": "71",
-            "value": 0.114836
-        },
-        {
-            "source": "6",
-            "target": "77",
-            "value": 0.015214
-        },
-        {
-            "source": "6",
-            "target": "79",
-            "value": 0.023831
-        },
-        {
-            "source": "6",
-            "target": "85",
-            "value": 0.023115
-        },
-        {
-            "source": "7",
-            "target": "7",
-            "value": -0.700201
-        },
-        {
-            "source": "7",
-            "target": "17",
-            "value": 0.014766
-        },
-        {
-            "source": "7",
-            "target": "28",
-            "value": 0.138393
-        },
-        {
-            "source": "7",
-            "target": "33",
-            "value": 0.046405
-        },
-        {
-            "source": "7",
-            "target": "40",
-            "value": 0.001843
-        },
-        {
-            "source": "7",
-            "target": "47",
-            "value": 0.005957
-        },
-        {
-            "source": "7",
-            "target": "63",
-            "value": 0.044014
-        },
-        {
-            "source": "7",
-            "target": "64",
-            "value": 0.009756
-        },
-        {
-            "source": "7",
-            "target": "69",
-            "value": 0.004743
-        },
-        {
-            "source": "7",
-            "target": "84",
-            "value": 0.040799
-        },
-        {
-            "source": "7",
-            "target": "86",
-            "value": 0.021545
-        },
-        {
-            "source": "8",
-            "target": "8",
-            "value": -0.791508
-        },
-        {
-            "source": "8",
-            "target": "9",
-            "value": 0.034346
-        },
-        {
-            "source": "8",
-            "target": "18",
-            "value": 0.057308
-        },
-        {
-            "source": "8",
-            "target": "23",
-            "value": 0.010017
-        },
-        {
-            "source": "8",
-            "target": "24",
-            "value": 0.033473
-        },
-        {
-            "source": "8",
-            "target": "32",
-            "value": 0.016196
-        },
-        {
-            "source": "8",
-            "target": "36",
-            "value": 0.029042
-        },
-        {
-            "source": "8",
-            "target": "38",
-            "value": 0.009893
-        },
-        {
-            "source": "8",
-            "target": "40",
-            "value": 0.011741
-        },
-        {
-            "source": "8",
-            "target": "48",
-            "value": 0.041975
-        },
-        {
-            "source": "8",
-            "target": "53",
-            "value": 0.089689
-        },
-        {
-            "source": "8",
-            "target": "66",
-            "value": 0.02434
-        },
-        {
-            "source": "8",
-            "target": "68",
-            "value": 0.029947
-        },
-        {
-            "source": "8",
-            "target": "74",
-            "value": 0.051781
-        },
-        {
-            "source": "8",
-            "target": "83",
-            "value": 0.085006
-        },
-        {
-            "source": "8",
-            "target": "85",
-            "value": 0.090452
-        },
-        {
-            "source": "8",
-            "target": "86",
-            "value": 0.000206
-        },
-        {
-            "source": "8",
-            "target": "87",
-            "value": 0.074545
-        },
-        {
-            "source": "9",
-            "target": "9",
-            "value": -0.957501
-        },
-        {
-            "source": "9",
-            "target": "23",
-            "value": 0.066269
-        },
-        {
-            "source": "9",
-            "target": "38",
-            "value": 0.021642
-        },
-        {
-            "source": "9",
-            "target": "40",
-            "value": 0.029087
-        },
-        {
-            "source": "9",
-            "target": "48",
-            "value": 0.081894
-        },
-        {
-            "source": "9",
-            "target": "68",
-            "value": 0.030976
-        },
-        {
-            "source": "9",
-            "target": "69",
-            "value": 0.022277
-        },
-        {
-            "source": "9",
-            "target": "76",
-            "value": 0.010498
-        },
-        {
-            "source": "9",
-            "target": "81",
-            "value": 0.180021
-        },
-        {
-            "source": "9",
-            "target": "83",
-            "value": 0.047072
-        },
-        {
-            "source": "9",
-            "target": "86",
-            "value": 0.131889
-        },
-        {
-            "source": "9",
-            "target": "87",
-            "value": 0.106198
-        },
-        {
-            "source": "10",
-            "target": "10",
-            "value": -0.895071
-        },
-        {
-            "source": "10",
-            "target": "12",
-            "value": 0.006908
-        },
-        {
-            "source": "10",
-            "target": "21",
-            "value": 0.015242
-        },
-        {
-            "source": "10",
-            "target": "23",
-            "value": 0.050503
-        },
-        {
-            "source": "10",
-            "target": "25",
-            "value": 0.004032
-        },
-        {
-            "source": "10",
-            "target": "34",
-            "value": 0.050641
-        },
-        {
-            "source": "10",
-            "target": "35",
-            "value": 0.049135
-        },
-        {
-            "source": "10",
-            "target": "37",
-            "value": 0.078936
-        },
-        {
-            "source": "10",
-            "target": "38",
-            "value": 0.010292
-        },
-        {
-            "source": "10",
-            "target": "49",
-            "value": 0.060738
-        },
-        {
-            "source": "10",
-            "target": "50",
-            "value": 0.007132
-        },
-        {
-            "source": "10",
-            "target": "56",
-            "value": 0.073745
-        },
-        {
-            "source": "10",
-            "target": "59",
-            "value": 0.015497
-        },
-        {
-            "source": "10",
-            "target": "60",
-            "value": 0.059874
-        },
-        {
-            "source": "10",
-            "target": "61",
-            "value": 0.062741
-        },
-        {
-            "source": "10",
-            "target": "75",
-            "value": 0.09808
-        },
-        {
-            "source": "10",
-            "target": "76",
-            "value": 0.075999
-        },
-        {
-            "source": "10",
-            "target": "78",
-            "value": 0.074672
-        },
-        {
-            "source": "10",
-            "target": "80",
-            "value": 0.102811
-        },
-        {
-            "source": "11",
-            "target": "11",
-            "value": -0.84997
-        },
-        {
-            "source": "11",
-            "target": "12",
-            "value": 0.019814
-        },
-        {
-            "source": "11",
-            "target": "15",
-            "value": 0.073244
-        },
-        {
-            "source": "11",
-            "target": "21",
-            "value": 0.021818
-        },
-        {
-            "source": "11",
-            "target": "27",
-            "value": 0.202957
-        },
-        {
-            "source": "11",
-            "target": "29",
-            "value": 0.032752
-        },
-        {
-            "source": "11",
-            "target": "35",
-            "value": 0.04174
-        },
-        {
-            "source": "11",
-            "target": "41",
-            "value": 0.005188
-        },
-        {
-            "source": "11",
-            "target": "43",
-            "value": 0.051076
-        },
-        {
-            "source": "11",
-            "target": "53",
-            "value": 0.007726
-        },
-        {
-            "source": "11",
-            "target": "57",
-            "value": 0.044084
-        },
-        {
-            "source": "11",
-            "target": "67",
-            "value": 0.059074
-        },
-        {
-            "source": "11",
-            "target": "77",
-            "value": 0.107174
-        },
-        {
-            "source": "12",
-            "target": "12",
-            "value": -0.919561
-        },
-        {
-            "source": "12",
-            "target": "15",
-            "value": 0.028835
-        },
-        {
-            "source": "12",
-            "target": "19",
-            "value": 0.023447
-        },
-        {
-            "source": "12",
-            "target": "20",
-            "value": 0.00417
-        },
-        {
-            "source": "12",
-            "target": "21",
-            "value": 0.028743
-        },
-        {
-            "source": "12",
-            "target": "22",
-            "value": 0.019243
-        },
-        {
-            "source": "12",
-            "target": "24",
-            "value": 0.02423
-        },
-        {
-            "source": "12",
-            "target": "25",
-            "value": 0.107302
-        },
-        {
-            "source": "12",
-            "target": "30",
-            "value": 0.003188
-        },
-        {
-            "source": "12",
-            "target": "35",
-            "value": 0.044413
-        },
-        {
-            "source": "12",
-            "target": "39",
-            "value": 0.003149
-        },
-        {
-            "source": "12",
-            "target": "42",
-            "value": 0.039355
-        },
-        {
-            "source": "12",
-            "target": "43",
-            "value": 0.003504
-        },
-        {
-            "source": "12",
-            "target": "49",
-            "value": 0.029651
-        },
-        {
-            "source": "12",
-            "target": "50",
-            "value": 0.015726
-        },
-        {
-            "source": "12",
-            "target": "60",
-            "value": 0.057627
-        },
-        {
-            "source": "12",
-            "target": "61",
-            "value": 0.010279
-        },
-        {
-            "source": "12",
-            "target": "72",
-            "value": 0.135001
-        },
-        {
-            "source": "12",
-            "target": "78",
-            "value": 0.133296
-        },
-        {
-            "source": "12",
-            "target": "79",
-            "value": 0.092647
-        },
-        {
-            "source": "12",
-            "target": "80",
-            "value": 0.040287
-        },
-        {
-            "source": "13",
-            "target": "13",
-            "value": -0.719782
-        },
-        {
-            "source": "13",
-            "target": "16",
-            "value": 0.152847
-        },
-        {
-            "source": "13",
-            "target": "18",
-            "value": 0.111527
-        },
-        {
-            "source": "13",
-            "target": "32",
-            "value": 0.007974
-        },
-        {
-            "source": "13",
-            "target": "36",
-            "value": 0.072795
-        },
-        {
-            "source": "13",
-            "target": "66",
-            "value": 0.005308
-        },
-        {
-            "source": "13",
-            "target": "83",
-            "value": 0.012897
-        },
-        {
-            "source": "14",
-            "target": "14",
-            "value": -0.902666
-        },
-        {
-            "source": "14",
-            "target": "16",
-            "value": 0.066881
-        },
-        {
-            "source": "14",
-            "target": "30",
-            "value": 0.010224
-        },
-        {
-            "source": "14",
-            "target": "31",
-            "value": 0.000119
-        },
-        {
-            "source": "14",
-            "target": "32",
-            "value": 0.07666
-        },
-        {
-            "source": "14",
-            "target": "43",
-            "value": 0.00399
-        },
-        {
-            "source": "14",
-            "target": "46",
-            "value": 0.076623
-        },
-        {
-            "source": "14",
-            "target": "48",
-            "value": 0.003631
-        },
-        {
-            "source": "14",
-            "target": "50",
-            "value": 0.022277
-        },
-        {
-            "source": "14",
-            "target": "53",
-            "value": 0.10848
-        },
-        {
-            "source": "14",
-            "target": "54",
-            "value": 0.028442
-        },
-        {
-            "source": "14",
-            "target": "55",
-            "value": 0.006788
-        },
-        {
-            "source": "14",
-            "target": "58",
-            "value": 0.045201
-        },
-        {
-            "source": "14",
-            "target": "59",
-            "value": 0.020172
-        },
-        {
-            "source": "14",
-            "target": "66",
-            "value": 0.104529
-        },
-        {
-            "source": "14",
-            "target": "71",
-            "value": 0.101966
-        },
-        {
-            "source": "14",
-            "target": "77",
-            "value": 0.022076
-        },
-        {
-            "source": "14",
-            "target": "82",
-            "value": 0.101047
-        },
-        {
-            "source": "14",
-            "target": "85",
-            "value": 0.118716
-        },
-        {
-            "source": "15",
-            "target": "15",
-            "value": -0.988223
-        },
-        {
-            "source": "15",
-            "target": "19",
-            "value": 0.142856
-        },
-        {
-            "source": "15",
-            "target": "21",
-            "value": 0.018583
-        },
-        {
-            "source": "15",
-            "target": "23",
-            "value": 0.061152
-        },
-        {
-            "source": "15",
-            "target": "24",
-            "value": 0.008802
-        },
-        {
-            "source": "15",
-            "target": "27",
-            "value": 0.083436
-        },
-        {
-            "source": "15",
-            "target": "29",
-            "value": 0.082714
-        },
-        {
-            "source": "15",
-            "target": "30",
-            "value": 0.028556
-        },
-        {
-            "source": "15",
-            "target": "35",
-            "value": 0.063876
-        },
-        {
-            "source": "15",
-            "target": "38",
-            "value": 0.034552
-        },
-        {
-            "source": "15",
-            "target": "41",
-            "value": 0.06215
-        },
-        {
-            "source": "15",
-            "target": "43",
-            "value": 0.019313
-        },
-        {
-            "source": "15",
-            "target": "48",
-            "value": 0.008237
-        },
-        {
-            "source": "15",
-            "target": "52",
-            "value": 0.004738
-        },
-        {
-            "source": "15",
-            "target": "53",
-            "value": 0.00391
-        },
-        {
-            "source": "15",
-            "target": "56",
-            "value": 0.011709
-        },
-        {
-            "source": "15",
-            "target": "57",
-            "value": 0.137018
-        },
-        {
-            "source": "15",
-            "target": "60",
-            "value": 0.007239
-        },
-        {
-            "source": "15",
-            "target": "67",
-            "value": 0.004217
-        },
-        {
-            "source": "15",
-            "target": "77",
-            "value": 0.08607
-        },
-        {
-            "source": "15",
-            "target": "79",
-            "value": 0.005914
-        },
-        {
-            "source": "16",
-            "target": "16",
-            "value": -0.830657
-        },
-        {
-            "source": "16",
-            "target": "18",
-            "value": 0.089499
-        },
-        {
-            "source": "16",
-            "target": "31",
-            "value": 0.012733
-        },
-        {
-            "source": "16",
-            "target": "32",
-            "value": 0.101608
-        },
-        {
-            "source": "16",
-            "target": "36",
-            "value": 0.036055
-        },
-        {
-            "source": "16",
-            "target": "53",
-            "value": 0.055478
-        },
-        {
-            "source": "16",
-            "target": "55",
-            "value": 0.01449
-        },
-        {
-            "source": "16",
-            "target": "66",
-            "value": 0.108578
-        },
-        {
-            "source": "16",
-            "target": "74",
-            "value": 0.026601
-        },
-        {
-            "source": "16",
-            "target": "82",
-            "value": 0.016365
-        },
-        {
-            "source": "16",
-            "target": "85",
-            "value": 0.078339
-        },
-        {
-            "source": "16",
-            "target": "87",
-            "value": 0.025599
-        },
-        {
-            "source": "17",
-            "target": "17",
-            "value": -0.776108
-        },
-        {
-            "source": "17",
-            "target": "30",
-            "value": 0.000852
-        },
-        {
-            "source": "17",
-            "target": "33",
-            "value": 0.032888
-        },
-        {
-            "source": "17",
-            "target": "39",
-            "value": 0.074578
-        },
-        {
-            "source": "17",
-            "target": "40",
-            "value": 0.05149
-        },
-        {
-            "source": "17",
-            "target": "46",
-            "value": 0.046501
-        },
-        {
-            "source": "17",
-            "target": "47",
-            "value": 0.022492
-        },
-        {
-            "source": "17",
-            "target": "49",
-            "value": 0.075082
-        },
-        {
-            "source": "17",
-            "target": "50",
-            "value": 0.0064
-        },
-        {
-            "source": "17",
-            "target": "55",
-            "value": 0.042712
-        },
-        {
-            "source": "17",
-            "target": "58",
-            "value": 0.033096
-        },
-        {
-            "source": "17",
-            "target": "62",
-            "value": 0.129534
-        },
-        {
-            "source": "17",
-            "target": "64",
-            "value": 0.044121
-        },
-        {
-            "source": "17",
-            "target": "86",
-            "value": 0.012573
-        },
-        {
-            "source": "18",
-            "target": "18",
-            "value": -0.870972
-        },
-        {
-            "source": "18",
-            "target": "32",
-            "value": 0.008588
-        },
-        {
-            "source": "18",
-            "target": "36",
-            "value": 0.256875
-        },
-        {
-            "source": "18",
-            "target": "40",
-            "value": 0.059623
-        },
-        {
-            "source": "18",
-            "target": "53",
-            "value": 0.016375
-        },
-        {
-            "source": "18",
-            "target": "62",
-            "value": 0.056477
-        },
-        {
-            "source": "18",
-            "target": "66",
-            "value": 0.012107
-        },
-        {
-            "source": "18",
-            "target": "69",
-            "value": 0.054889
-        },
-        {
-            "source": "18",
-            "target": "86",
-            "value": 0.040875
-        },
-        {
-            "source": "19",
-            "target": "19",
-            "value": -0.898166
-        },
-        {
-            "source": "19",
-            "target": "20",
-            "value": 0.028355
-        },
-        {
-            "source": "19",
-            "target": "23",
-            "value": 0.029441
-        },
-        {
-            "source": "19",
-            "target": "24",
-            "value": 0.003929
-        },
-        {
-            "source": "19",
-            "target": "27",
-            "value": 0.003122
-        },
-        {
-            "source": "19",
-            "target": "28",
-            "value": 0.005244
-        },
-        {
-            "source": "19",
-            "target": "29",
-            "value": 0.099785
-        },
-        {
-            "source": "19",
-            "target": "38",
-            "value": 0.004727
-        },
-        {
-            "source": "19",
-            "target": "41",
-            "value": 0.007143
-        },
-        {
-            "source": "19",
-            "target": "43",
-            "value": 0.06005
-        },
-        {
-            "source": "19",
-            "target": "48",
-            "value": 0.071816
-        },
-        {
-            "source": "19",
-            "target": "49",
-            "value": 0.02552
-        },
-        {
-            "source": "19",
-            "target": "56",
-            "value": 0.002562
-        },
-        {
-            "source": "19",
-            "target": "57",
-            "value": 0.131888
-        },
-        {
-            "source": "19",
-            "target": "60",
-            "value": 0.013525
-        },
-        {
-            "source": "19",
-            "target": "64",
-            "value": 0.000124
-        },
-        {
-            "source": "19",
-            "target": "71",
-            "value": 0.038038
-        },
-        {
-            "source": "19",
-            "target": "72",
-            "value": 0.00877
-        },
-        {
-            "source": "19",
-            "target": "77",
-            "value": 0.104157
-        },
-        {
-            "source": "20",
-            "target": "20",
-            "value": -0.781297
-        },
-        {
-            "source": "20",
-            "target": "23",
-            "value": 0.001441
-        },
-        {
-            "source": "20",
-            "target": "26",
-            "value": 0.024924
-        },
-        {
-            "source": "20",
-            "target": "28",
-            "value": 0.010735
-        },
-        {
-            "source": "20",
-            "target": "29",
-            "value": 0.048148
-        },
-        {
-            "source": "20",
-            "target": "30",
-            "value": 0.028785
-        },
-        {
-            "source": "20",
-            "target": "35",
-            "value": 0.030588
-        },
-        {
-            "source": "20",
-            "target": "39",
-            "value": 0.129934
-        },
-        {
-            "source": "20",
-            "target": "44",
-            "value": 0.023896
-        },
-        {
-            "source": "20",
-            "target": "50",
-            "value": 0.008069
-        },
-        {
-            "source": "20",
-            "target": "52",
-            "value": 0.012603
-        },
-        {
-            "source": "20",
-            "target": "60",
-            "value": 0.011041
-        },
-        {
-            "source": "20",
-            "target": "61",
-            "value": 0.020742
-        },
-        {
-            "source": "20",
-            "target": "65",
-            "value": 0.065469
-        },
-        {
-            "source": "20",
-            "target": "68",
-            "value": 0.042199
-        },
-        {
-            "source": "20",
-            "target": "72",
-            "value": 0.085533
-        },
-        {
-            "source": "20",
-            "target": "78",
-            "value": 0.041782
-        },
-        {
-            "source": "21",
-            "target": "21",
-            "value": -0.82601
-        },
-        {
-            "source": "21",
-            "target": "23",
-            "value": 0.050917
-        },
-        {
-            "source": "21",
-            "target": "24",
-            "value": 0.021952
-        },
-        {
-            "source": "21",
-            "target": "27",
-            "value": 0.039065
-        },
-        {
-            "source": "21",
-            "target": "29",
-            "value": 0.018631
-        },
-        {
-            "source": "21",
-            "target": "35",
-            "value": 0.01169
-        },
-        {
-            "source": "21",
-            "target": "37",
-            "value": 0.030236
-        },
-        {
-            "source": "21",
-            "target": "38",
-            "value": 0.068324
-        },
-        {
-            "source": "21",
-            "target": "42",
-            "value": 0.021046
-        },
-        {
-            "source": "21",
-            "target": "52",
-            "value": 0.002219
-        },
-        {
-            "source": "21",
-            "target": "65",
-            "value": 0.035319
-        },
-        {
-            "source": "21",
-            "target": "67",
-            "value": 0.022071
-        },
-        {
-            "source": "21",
-            "target": "68",
-            "value": 0.047304
-        },
-        {
-            "source": "21",
-            "target": "70",
-            "value": 0.005851
-        },
-        {
-            "source": "21",
-            "target": "73",
-            "value": 0.014306
-        },
-        {
-            "source": "21",
-            "target": "77",
-            "value": 0.008735
-        },
-        {
-            "source": "21",
-            "target": "78",
-            "value": 0.010829
-        },
-        {
-            "source": "21",
-            "target": "87",
-            "value": 0.059438
-        },
-        {
-            "source": "22",
-            "target": "22",
-            "value": -0.888002
-        },
-        {
-            "source": "22",
-            "target": "26",
-            "value": 0.07475
-        },
-        {
-            "source": "22",
-            "target": "30",
-            "value": 0.005472
-        },
-        {
-            "source": "22",
-            "target": "42",
-            "value": 0.1927
-        },
-        {
-            "source": "22",
-            "target": "52",
-            "value": 0.024777
-        },
-        {
-            "source": "22",
-            "target": "54",
-            "value": 0.093919
-        },
-        {
-            "source": "22",
-            "target": "67",
-            "value": 0.04407
-        },
-        {
-            "source": "22",
-            "target": "70",
-            "value": 0.214591
-        },
-        {
-            "source": "22",
-            "target": "73",
-            "value": 0.028748
-        },
-        {
-            "source": "22",
-            "target": "75",
-            "value": 0.005016
-        },
-        {
-            "source": "22",
-            "target": "78",
-            "value": 0.002117
-        },
-        {
-            "source": "22",
-            "target": "79",
-            "value": 0.019324
-        },
-        {
-            "source": "22",
-            "target": "82",
-            "value": 0.072034
-        },
-        {
-            "source": "23",
-            "target": "23",
-            "value": -1.0
-        },
-        {
-            "source": "23",
-            "target": "24",
-            "value": 0.01111
-        },
-        {
-            "source": "23",
-            "target": "29",
-            "value": 0.040274
-        },
-        {
-            "source": "23",
-            "target": "34",
-            "value": 0.039994
-        },
-        {
-            "source": "23",
-            "target": "35",
-            "value": 0.016144
-        },
-        {
-            "source": "23",
-            "target": "38",
-            "value": 0.048047
-        },
-        {
-            "source": "23",
-            "target": "48",
-            "value": 0.086225
-        },
-        {
-            "source": "23",
-            "target": "52",
-            "value": 0.025303
-        },
-        {
-            "source": "23",
-            "target": "56",
-            "value": 0.061749
-        },
-        {
-            "source": "23",
-            "target": "57",
-            "value": 0.037568
-        },
-        {
-            "source": "23",
-            "target": "60",
-            "value": 0.048574
-        },
-        {
-            "source": "23",
-            "target": "65",
-            "value": 0.053032
-        },
-        {
-            "source": "23",
-            "target": "67",
-            "value": 0.026542
-        },
-        {
-            "source": "23",
-            "target": "68",
-            "value": 0.088727
-        },
-        {
-            "source": "23",
-            "target": "77",
-            "value": 0.049452
-        },
-        {
-            "source": "23",
-            "target": "78",
-            "value": 0.008964
-        },
-        {
-            "source": "23",
-            "target": "79",
-            "value": 0.010827
-        },
-        {
-            "source": "23",
-            "target": "85",
-            "value": 0.009633
-        },
-        {
-            "source": "23",
-            "target": "86",
-            "value": 0.0366
-        },
-        {
-            "source": "24",
-            "target": "24",
-            "value": -0.715863
-        },
-        {
-            "source": "24",
-            "target": "25",
-            "value": 0.02298
-        },
-        {
-            "source": "24",
-            "target": "38",
-            "value": 0.019514
-        },
-        {
-            "source": "24",
-            "target": "43",
-            "value": 0.032544
-        },
-        {
-            "source": "24",
-            "target": "53",
-            "value": 0.068444
-        },
-        {
-            "source": "24",
-            "target": "66",
-            "value": 0.072233
-        },
-        {
-            "source": "24",
-            "target": "71",
-            "value": 0.023353
-        },
-        {
-            "source": "24",
-            "target": "74",
-            "value": 0.108992
-        },
-        {
-            "source": "24",
-            "target": "82",
-            "value": 0.007982
-        },
-        {
-            "source": "24",
-            "target": "83",
-            "value": 0.024522
-        },
-        {
-            "source": "24",
-            "target": "85",
-            "value": 0.018705
-        },
-        {
-            "source": "25",
-            "target": "25",
-            "value": -0.816194
-        },
-        {
-            "source": "25",
-            "target": "30",
-            "value": 0.000444
-        },
-        {
-            "source": "25",
-            "target": "37",
-            "value": 0.005598
-        },
-        {
-            "source": "25",
-            "target": "39",
-            "value": 0.025143
-        },
-        {
-            "source": "25",
-            "target": "49",
-            "value": 0.036692
-        },
-        {
-            "source": "25",
-            "target": "50",
-            "value": 0.083969
-        },
-        {
-            "source": "25",
-            "target": "56",
-            "value": 0.034543
-        },
-        {
-            "source": "25",
-            "target": "58",
-            "value": 0.056072
-        },
-        {
-            "source": "25",
-            "target": "59",
-            "value": 0.014544
-        },
-        {
-            "source": "25",
-            "target": "66",
-            "value": 0.035468
-        },
-        {
-            "source": "25",
-            "target": "72",
-            "value": 0.062257
-        },
-        {
-            "source": "25",
-            "target": "73",
-            "value": 0.101858
-        },
-        {
-            "source": "25",
-            "target": "78",
-            "value": 0.078939
-        },
-        {
-            "source": "25",
-            "target": "80",
-            "value": 0.036117
-        },
-        {
-            "source": "26",
-            "target": "26",
-            "value": -0.754392
-        },
-        {
-            "source": "26",
-            "target": "29",
-            "value": 0.015315
-        },
-        {
-            "source": "26",
-            "target": "34",
-            "value": 0.022027
-        },
-        {
-            "source": "26",
-            "target": "35",
-            "value": 0.015059
-        },
-        {
-            "source": "26",
-            "target": "38",
-            "value": 0.03415
-        },
-        {
-            "source": "26",
-            "target": "39",
-            "value": 0.046645
-        },
-        {
-            "source": "26",
-            "target": "47",
-            "value": 0.006052
-        },
-        {
-            "source": "26",
-            "target": "50",
-            "value": 0.009416
-        },
-        {
-            "source": "26",
-            "target": "52",
-            "value": 0.060822
-        },
-        {
-            "source": "26",
-            "target": "54",
-            "value": 0.041402
-        },
-        {
-            "source": "26",
-            "target": "59",
-            "value": 0.019493
-        },
-        {
-            "source": "26",
-            "target": "61",
-            "value": 0.04433
-        },
-        {
-            "source": "26",
-            "target": "68",
-            "value": 0.03768
-        },
-        {
-            "source": "26",
-            "target": "75",
-            "value": 0.053978
-        },
-        {
-            "source": "26",
-            "target": "76",
-            "value": 0.065908
-        },
-        {
-            "source": "26",
-            "target": "78",
-            "value": 0.020566
-        },
-        {
-            "source": "26",
-            "target": "82",
-            "value": 0.012987
-        },
-        {
-            "source": "27",
-            "target": "27",
-            "value": -0.790361
-        },
-        {
-            "source": "27",
-            "target": "29",
-            "value": 0.014169
-        },
-        {
-            "source": "27",
-            "target": "35",
-            "value": 0.00412
-        },
-        {
-            "source": "27",
-            "target": "41",
-            "value": 0.006566
-        },
-        {
-            "source": "27",
-            "target": "43",
-            "value": 0.075676
-        },
-        {
-            "source": "27",
-            "target": "57",
-            "value": 0.040129
-        },
-        {
-            "source": "27",
-            "target": "67",
-            "value": 0.026739
-        },
-        {
-            "source": "27",
-            "target": "77",
-            "value": 0.052087
-        },
-        {
-            "source": "28",
-            "target": "28",
-            "value": -0.737627
-        },
-        {
-            "source": "28",
-            "target": "29",
-            "value": 0.000398
-        },
-        {
-            "source": "28",
-            "target": "33",
-            "value": 0.015464
-        },
-        {
-            "source": "28",
-            "target": "39",
-            "value": 0.011104
-        },
-        {
-            "source": "28",
-            "target": "47",
-            "value": 0.040601
-        },
-        {
-            "source": "28",
-            "target": "48",
-            "value": 0.017293
-        },
-        {
-            "source": "28",
-            "target": "58",
-            "value": 0.034795
-        },
-        {
-            "source": "28",
-            "target": "63",
-            "value": 0.0237
-        },
-        {
-            "source": "28",
-            "target": "64",
-            "value": 0.1131
-        },
-        {
-            "source": "28",
-            "target": "65",
-            "value": 0.007259
-        },
-        {
-            "source": "28",
-            "target": "69",
-            "value": 0.002983
-        },
-        {
-            "source": "28",
-            "target": "84",
-            "value": 0.000214
-        },
-        {
-            "source": "28",
-            "target": "86",
-            "value": 0.010199
-        },
-        {
-            "source": "29",
-            "target": "29",
-            "value": -0.768873
-        },
-        {
-            "source": "29",
-            "target": "35",
-            "value": 0.038597
-        },
-        {
-            "source": "29",
-            "target": "38",
-            "value": 0.007017
-        },
-        {
-            "source": "29",
-            "target": "41",
-            "value": 0.036052
-        },
-        {
-            "source": "29",
-            "target": "48",
-            "value": 0.049793
-        },
-        {
-            "source": "29",
-            "target": "61",
-            "value": 0.006106
-        },
-        {
-            "source": "29",
-            "target": "65",
-            "value": 0.021008
-        },
-        {
-            "source": "29",
-            "target": "67",
-            "value": 0.033647
-        },
-        {
-            "source": "29",
-            "target": "68",
-            "value": 0.014033
-        },
-        {
-            "source": "29",
-            "target": "79",
-            "value": 0.007138
-        },
-        {
-            "source": "30",
-            "target": "30",
-            "value": -0.874808
-        },
-        {
-            "source": "30",
-            "target": "34",
-            "value": 0.005272
-        },
-        {
-            "source": "30",
-            "target": "43",
-            "value": 0.002578
-        },
-        {
-            "source": "30",
-            "target": "46",
-            "value": 0.136081
-        },
-        {
-            "source": "30",
-            "target": "52",
-            "value": 0.091633
-        },
-        {
-            "source": "30",
-            "target": "54",
-            "value": 0.119409
-        },
-        {
-            "source": "30",
-            "target": "55",
-            "value": 0.003721
-        },
-        {
-            "source": "30",
-            "target": "57",
-            "value": 0.012013
-        },
-        {
-            "source": "30",
-            "target": "58",
-            "value": 0.109194
-        },
-        {
-            "source": "30",
-            "target": "63",
-            "value": 0.01811
-        },
-        {
-            "source": "30",
-            "target": "70",
-            "value": 0.035187
-        },
-        {
-            "source": "30",
-            "target": "71",
-            "value": 0.057742
-        },
-        {
-            "source": "30",
-            "target": "72",
-            "value": 0.104734
-        },
-        {
-            "source": "30",
-            "target": "73",
-            "value": 0.034578
-        },
-        {
-            "source": "30",
-            "target": "79",
-            "value": 0.019075
-        },
-        {
-            "source": "30",
-            "target": "82",
-            "value": 0.021816
-        },
-        {
-            "source": "31",
-            "target": "31",
-            "value": -0.706573
-        },
-        {
-            "source": "31",
-            "target": "33",
-            "value": 0.071289
-        },
-        {
-            "source": "31",
-            "target": "51",
-            "value": 0.09428
-        },
-        {
-            "source": "31",
-            "target": "55",
-            "value": 0.025245
-        },
-        {
-            "source": "31",
-            "target": "58",
-            "value": 0.05509
-        },
-        {
-            "source": "31",
-            "target": "63",
-            "value": 0.115951
-        },
-        {
-            "source": "32",
-            "target": "32",
-            "value": -0.838073
-        },
-        {
-            "source": "32",
-            "target": "40",
-            "value": 0.02963
-        },
-        {
-            "source": "32",
-            "target": "46",
-            "value": 0.033708
-        },
-        {
-            "source": "32",
-            "target": "48",
-            "value": 0.013293
-        },
-        {
-            "source": "32",
-            "target": "54",
-            "value": 0.007193
-        },
-        {
-            "source": "32",
-            "target": "55",
-            "value": 0.054521
-        },
-        {
-            "source": "32",
-            "target": "66",
-            "value": 0.105936
-        },
-        {
-            "source": "32",
-            "target": "71",
-            "value": 0.081406
-        },
-        {
-            "source": "32",
-            "target": "82",
-            "value": 0.158282
-        },
-        {
-            "source": "32",
-            "target": "85",
-            "value": 0.047943
-        },
-        {
-            "source": "33",
-            "target": "33",
-            "value": -0.82053
-        },
-        {
-            "source": "33",
-            "target": "45",
-            "value": 0.132561
-        },
-        {
-            "source": "33",
-            "target": "47",
-            "value": 0.13139
-        },
-        {
-            "source": "33",
-            "target": "49",
-            "value": 0.01488
-        },
-        {
-            "source": "33",
-            "target": "51",
-            "value": 0.066543
-        },
-        {
-            "source": "33",
-            "target": "59",
-            "value": 0.029454
-        },
-        {
-            "source": "33",
-            "target": "62",
-            "value": 0.092973
-        },
-        {
-            "source": "33",
-            "target": "63",
-            "value": 0.010222
-        },
-        {
-            "source": "33",
-            "target": "64",
-            "value": 0.020444
-        },
-        {
-            "source": "33",
-            "target": "69",
-            "value": 0.050148
-        },
-        {
-            "source": "33",
-            "target": "84",
-            "value": 0.081123
-        },
-        {
-            "source": "33",
-            "target": "86",
-            "value": 0.001702
-        },
-        {
-            "source": "34",
-            "target": "34",
-            "value": -0.802366
-        },
-        {
-            "source": "34",
-            "target": "35",
-            "value": 0.015833
-        },
-        {
-            "source": "34",
-            "target": "37",
-            "value": 0.011172
-        },
-        {
-            "source": "34",
-            "target": "41",
-            "value": 0.052414
-        },
-        {
-            "source": "34",
-            "target": "44",
-            "value": 0.045186
-        },
-        {
-            "source": "34",
-            "target": "47",
-            "value": 0.038979
-        },
-        {
-            "source": "34",
-            "target": "48",
-            "value": 0.018464
-        },
-        {
-            "source": "34",
-            "target": "52",
-            "value": 0.036234
-        },
-        {
-            "source": "34",
-            "target": "56",
-            "value": 0.039677
-        },
-        {
-            "source": "34",
-            "target": "59",
-            "value": 0.038137
-        },
-        {
-            "source": "34",
-            "target": "61",
-            "value": 0.022639
-        },
-        {
-            "source": "34",
-            "target": "64",
-            "value": 0.045838
-        },
-        {
-            "source": "34",
-            "target": "67",
-            "value": 0.043604
-        },
-        {
-            "source": "34",
-            "target": "75",
-            "value": 0.10263
-        },
-        {
-            "source": "34",
-            "target": "79",
-            "value": 0.015135
-        },
-        {
-            "source": "35",
-            "target": "35",
-            "value": -0.850515
-        },
-        {
-            "source": "35",
-            "target": "38",
-            "value": 0.013835
-        },
-        {
-            "source": "35",
-            "target": "41",
-            "value": 0.033837
-        },
-        {
-            "source": "35",
-            "target": "56",
-            "value": 0.017995
-        },
-        {
-            "source": "35",
-            "target": "57",
-            "value": 0.004325
-        },
-        {
-            "source": "35",
-            "target": "60",
-            "value": 0.11371
-        },
-        {
-            "source": "35",
-            "target": "61",
-            "value": 0.095657
-        },
-        {
-            "source": "35",
-            "target": "67",
-            "value": 0.082968
-        },
-        {
-            "source": "35",
-            "target": "78",
-            "value": 0.066867
-        },
-        {
-            "source": "36",
-            "target": "36",
-            "value": -0.810117
-        },
-        {
-            "source": "36",
-            "target": "38",
-            "value": 0.00685
-        },
-        {
-            "source": "36",
-            "target": "40",
-            "value": 0.06275
-        },
-        {
-            "source": "36",
-            "target": "68",
-            "value": 0.027746
-        },
-        {
-            "source": "36",
-            "target": "83",
-            "value": 0.037842
-        },
-        {
-            "source": "36",
-            "target": "86",
-            "value": 0.002708
-        },
-        {
-            "source": "36",
-            "target": "87",
-            "value": 0.028025
-        },
-        {
-            "source": "37",
-            "target": "37",
-            "value": -0.800891
-        },
-        {
-            "source": "37",
-            "target": "40",
-            "value": 0.007543
-        },
-        {
-            "source": "37",
-            "target": "42",
-            "value": 0.033541
-        },
-        {
-            "source": "37",
-            "target": "48",
-            "value": 0.021377
-        },
-        {
-            "source": "37",
-            "target": "49",
-            "value": 0.0173
-        },
-        {
-            "source": "37",
-            "target": "54",
-            "value": 0.027219
-        },
-        {
-            "source": "37",
-            "target": "56",
-            "value": 0.078477
-        },
-        {
-            "source": "37",
-            "target": "59",
-            "value": 0.155943
-        },
-        {
-            "source": "37",
-            "target": "72",
-            "value": 0.02525
-        },
-        {
-            "source": "37",
-            "target": "73",
-            "value": 0.007436
-        },
-        {
-            "source": "37",
-            "target": "75",
-            "value": 0.023437
-        },
-        {
-            "source": "37",
-            "target": "76",
-            "value": 0.004894
-        },
-        {
-            "source": "37",
-            "target": "78",
-            "value": 0.007863
-        },
-        {
-            "source": "37",
-            "target": "80",
-            "value": 0.099775
-        },
-        {
-            "source": "38",
-            "target": "38",
-            "value": -0.745619
-        },
-        {
-            "source": "38",
-            "target": "48",
-            "value": 0.050408
-        },
-        {
-            "source": "38",
-            "target": "53",
-            "value": 0.026638
-        },
-        {
-            "source": "38",
-            "target": "60",
-            "value": 0.00871
-        },
-        {
-            "source": "38",
-            "target": "68",
-            "value": 0.023971
-        },
-        {
-            "source": "38",
-            "target": "71",
-            "value": 0.0094
-        },
-        {
-            "source": "38",
-            "target": "72",
-            "value": 0.006191
-        },
-        {
-            "source": "38",
-            "target": "85",
-            "value": 0.020891
-        },
-        {
-            "source": "38",
-            "target": "86",
-            "value": 0.022135
-        },
-        {
-            "source": "38",
-            "target": "87",
-            "value": 0.026275
-        },
-        {
-            "source": "39",
-            "target": "39",
-            "value": -0.815253
-        },
-        {
-            "source": "39",
-            "target": "44",
-            "value": 0.030292
-        },
-        {
-            "source": "39",
-            "target": "47",
-            "value": 0.010829
-        },
-        {
-            "source": "39",
-            "target": "49",
-            "value": 0.029002
-        },
-        {
-            "source": "39",
-            "target": "50",
-            "value": 0.039644
-        },
-        {
-            "source": "39",
-            "target": "56",
-            "value": 0.009141
-        },
-        {
-            "source": "39",
-            "target": "59",
-            "value": 0.045422
-        },
-        {
-            "source": "39",
-            "target": "61",
-            "value": 0.007357
-        },
-        {
-            "source": "39",
-            "target": "62",
-            "value": 0.073685
-        },
-        {
-            "source": "39",
-            "target": "69",
-            "value": 0.00396
-        },
-        {
-            "source": "39",
-            "target": "72",
-            "value": 0.054925
-        },
-        {
-            "source": "39",
-            "target": "75",
-            "value": 0.010752
-        },
-        {
-            "source": "39",
-            "target": "76",
-            "value": 0.065276
-        },
-        {
-            "source": "39",
-            "target": "78",
-            "value": 0.080689
-        },
-        {
-            "source": "39",
-            "target": "80",
-            "value": 0.000366
-        },
-        {
-            "source": "40",
-            "target": "40",
-            "value": -0.932886
-        },
-        {
-            "source": "40",
-            "target": "46",
-            "value": 0.023922
-        },
-        {
-            "source": "40",
-            "target": "47",
-            "value": 0.005912
-        },
-        {
-            "source": "40",
-            "target": "48",
-            "value": 0.127234
-        },
-        {
-            "source": "40",
-            "target": "55",
-            "value": 0.018587
-        },
-        {
-            "source": "40",
-            "target": "59",
-            "value": 0.044765
-        },
-        {
-            "source": "40",
-            "target": "62",
-            "value": 0.107442
-        },
-        {
-            "source": "40",
-            "target": "65",
-            "value": 0.094231
-        },
-        {
-            "source": "40",
-            "target": "68",
-            "value": 0.021225
-        },
-        {
-            "source": "40",
-            "target": "69",
-            "value": 0.008326
-        },
-        {
-            "source": "40",
-            "target": "85",
-            "value": 0.048275
-        },
-        {
-            "source": "40",
-            "target": "86",
-            "value": 0.148276
-        },
-        {
-            "source": "41",
-            "target": "41",
-            "value": -0.814525
-        },
-        {
-            "source": "41",
-            "target": "43",
-            "value": 0.021039
-        },
-        {
-            "source": "41",
-            "target": "49",
-            "value": 0.046319
-        },
-        {
-            "source": "41",
-            "target": "52",
-            "value": 0.009196
-        },
-        {
-            "source": "41",
-            "target": "56",
-            "value": 0.021018
-        },
-        {
-            "source": "41",
-            "target": "57",
-            "value": 0.069991
-        },
-        {
-            "source": "41",
-            "target": "58",
-            "value": 0.000228
-        },
-        {
-            "source": "41",
-            "target": "67",
-            "value": 0.02248
-        },
-        {
-            "source": "41",
-            "target": "77",
-            "value": 0.028224
-        },
-        {
-            "source": "41",
-            "target": "79",
-            "value": 0.112327
-        },
-        {
-            "source": "41",
-            "target": "84",
-            "value": 0.049145
-        },
-        {
-            "source": "42",
-            "target": "42",
-            "value": -0.889497
-        },
-        {
-            "source": "42",
-            "target": "44",
-            "value": 0.017372
-        },
-        {
-            "source": "42",
-            "target": "54",
-            "value": 0.059093
-        },
-        {
-            "source": "42",
-            "target": "70",
-            "value": 0.186914
-        },
-        {
-            "source": "42",
-            "target": "72",
-            "value": 0.018612
-        },
-        {
-            "source": "42",
-            "target": "73",
-            "value": 0.134962
-        },
-        {
-            "source": "42",
-            "target": "78",
-            "value": 0.011601
-        },
-        {
-            "source": "42",
-            "target": "79",
-            "value": 0.024415
-        },
-        {
-            "source": "42",
-            "target": "80",
-            "value": 0.058057
-        },
-        {
-            "source": "42",
-            "target": "82",
-            "value": 0.021782
-        },
-        {
-            "source": "43",
-            "target": "43",
-            "value": -0.805338
-        },
-        {
-            "source": "43",
-            "target": "57",
-            "value": 0.142354
-        },
-        {
-            "source": "43",
-            "target": "58",
-            "value": 0.033617
-        },
-        {
-            "source": "43",
-            "target": "60",
-            "value": 0.005486
-        },
-        {
-            "source": "43",
-            "target": "71",
-            "value": 0.058978
-        },
-        {
-            "source": "43",
-            "target": "77",
-            "value": 0.11632
-        },
-        {
-            "source": "44",
-            "target": "44",
-            "value": -0.693412
-        },
-        {
-            "source": "44",
-            "target": "50",
-            "value": 0.021779
-        },
-        {
-            "source": "44",
-            "target": "59",
-            "value": 0.018448
-        },
-        {
-            "source": "44",
-            "target": "61",
-            "value": 0.068446
-        },
-        {
-            "source": "44",
-            "target": "64",
-            "value": 0.058586
-        },
-        {
-            "source": "44",
-            "target": "67",
-            "value": 0.029774
-        },
-        {
-            "source": "44",
-            "target": "75",
-            "value": 0.027698
-        },
-        {
-            "source": "44",
-            "target": "76",
-            "value": 0.006117
-        },
-        {
-            "source": "44",
-            "target": "78",
-            "value": 0.006566
-        },
-        {
-            "source": "44",
-            "target": "79",
-            "value": 0.028731
-        },
-        {
-            "source": "44",
-            "target": "82",
-            "value": 0.015045
-        },
-        {
-            "source": "45",
-            "target": "45",
-            "value": -0.791756
-        },
-        {
-            "source": "45",
-            "target": "51",
-            "value": 0.170083
-        },
-        {
-            "source": "45",
-            "target": "55",
-            "value": 0.019861
-        },
-        {
-            "source": "45",
-            "target": "62",
-            "value": 0.095856
-        },
-        {
-            "source": "45",
-            "target": "69",
-            "value": 0.108942
-        },
-        {
-            "source": "46",
-            "target": "46",
-            "value": -0.92568
-        },
-        {
-            "source": "46",
-            "target": "51",
-            "value": 0.051843
-        },
-        {
-            "source": "46",
-            "target": "54",
-            "value": 0.03153
-        },
-        {
-            "source": "46",
-            "target": "55",
-            "value": 0.232182
-        },
-        {
-            "source": "46",
-            "target": "58",
-            "value": 0.117901
-        },
-        {
-            "source": "46",
-            "target": "59",
-            "value": 0.000105
-        },
-        {
-            "source": "46",
-            "target": "63",
-            "value": 0.091641
-        },
-        {
-            "source": "46",
-            "target": "65",
-            "value": 0.003471
-        },
-        {
-            "source": "46",
-            "target": "66",
-            "value": 0.0264
-        },
-        {
-            "source": "46",
-            "target": "72",
-            "value": 0.03774
-        },
-        {
-            "source": "46",
-            "target": "82",
-            "value": 0.020579
-        },
-        {
-            "source": "46",
-            "target": "85",
-            "value": 0.01447
-        },
-        {
-            "source": "47",
-            "target": "47",
-            "value": -0.801017
-        },
-        {
-            "source": "47",
-            "target": "59",
-            "value": 0.069014
-        },
-        {
-            "source": "47",
-            "target": "62",
-            "value": 0.087907
-        },
-        {
-            "source": "47",
-            "target": "64",
-            "value": 0.006709
-        },
-        {
-            "source": "47",
-            "target": "69",
-            "value": 0.031199
-        },
-        {
-            "source": "47",
-            "target": "75",
-            "value": 0.087
-        },
-        {
-            "source": "47",
-            "target": "76",
-            "value": 0.101747
-        },
-        {
-            "source": "48",
-            "target": "48",
-            "value": -0.926231
-        },
-        {
-            "source": "48",
-            "target": "53",
-            "value": 0.002902
-        },
-        {
-            "source": "48",
-            "target": "56",
-            "value": 0.024671
-        },
-        {
-            "source": "48",
-            "target": "57",
-            "value": 0.000848
-        },
-        {
-            "source": "48",
-            "target": "59",
-            "value": 0.015585
-        },
-        {
-            "source": "48",
-            "target": "60",
-            "value": 0.005635
-        },
-        {
-            "source": "48",
-            "target": "64",
-            "value": 0.012318
-        },
-        {
-            "source": "48",
-            "target": "65",
-            "value": 0.0302
-        },
-        {
-            "source": "48",
-            "target": "66",
-            "value": 0.001246
-        },
-        {
-            "source": "48",
-            "target": "68",
-            "value": 0.070099
-        },
-        {
-            "source": "48",
-            "target": "71",
-            "value": 0.022217
-        },
-        {
-            "source": "48",
-            "target": "77",
-            "value": 0.05588
-        },
-        {
-            "source": "48",
-            "target": "85",
-            "value": 0.050635
-        },
-        {
-            "source": "48",
-            "target": "86",
-            "value": 0.053338
-        },
-        {
-            "source": "49",
-            "target": "49",
-            "value": -0.846084
-        },
-        {
-            "source": "49",
-            "target": "50",
-            "value": 0.047565
-        },
-        {
-            "source": "49",
-            "target": "56",
-            "value": 0.060445
-        },
-        {
-            "source": "49",
-            "target": "57",
-            "value": 0.007009
-        },
-        {
-            "source": "49",
-            "target": "58",
-            "value": 0.012712
-        },
-        {
-            "source": "49",
-            "target": "60",
-            "value": 0.131664
-        },
-        {
-            "source": "49",
-            "target": "62",
-            "value": 0.026834
-        },
-        {
-            "source": "49",
-            "target": "64",
-            "value": 0.022324
-        },
-        {
-            "source": "49",
-            "target": "78",
-            "value": 0.051541
-        },
-        {
-            "source": "49",
-            "target": "80",
-            "value": 0.073404
-        },
-        {
-            "source": "50",
-            "target": "50",
-            "value": -0.78249
-        },
-        {
-            "source": "50",
-            "target": "54",
-            "value": 0.000631
-        },
-        {
-            "source": "50",
-            "target": "56",
-            "value": 0.015628
-        },
-        {
-            "source": "50",
-            "target": "58",
-            "value": 0.095152
-        },
-        {
-            "source": "50",
-            "target": "59",
-            "value": 0.031377
-        },
-        {
-            "source": "50",
-            "target": "61",
-            "value": 0.022348
-        },
-        {
-            "source": "50",
-            "target": "71",
-            "value": 0.019514
-        },
-        {
-            "source": "50",
-            "target": "72",
-            "value": 0.017492
-        },
-        {
-            "source": "50",
-            "target": "73",
-            "value": 0.050205
-        },
-        {
-            "source": "50",
-            "target": "78",
-            "value": 0.034803
-        },
-        {
-            "source": "50",
-            "target": "79",
-            "value": 0.053655
-        },
-        {
-            "source": "50",
-            "target": "80",
-            "value": 0.006801
-        },
-        {
-            "source": "51",
-            "target": "51",
-            "value": -0.762381
-        },
-        {
-            "source": "51",
-            "target": "55",
-            "value": 0.071894
-        },
-        {
-            "source": "51",
-            "target": "58",
-            "value": 0.015949
-        },
-        {
-            "source": "51",
-            "target": "63",
-            "value": 0.054424
-        },
-        {
-            "source": "51",
-            "target": "84",
-            "value": 0.006685
-        },
-        {
-            "source": "52",
-            "target": "52",
-            "value": -0.793126
-        },
-        {
-            "source": "52",
-            "target": "54",
-            "value": 0.096257
-        },
-        {
-            "source": "52",
-            "target": "57",
-            "value": 0.010435
-        },
-        {
-            "source": "52",
-            "target": "58",
-            "value": 0.002246
-        },
-        {
-            "source": "52",
-            "target": "65",
-            "value": 0.020662
-        },
-        {
-            "source": "52",
-            "target": "67",
-            "value": 0.06138
-        },
-        {
-            "source": "52",
-            "target": "68",
-            "value": 0.071717
-        },
-        {
-            "source": "52",
-            "target": "70",
-            "value": 0.083199
-        },
-        {
-            "source": "52",
-            "target": "75",
-            "value": 0.004616
-        },
-        {
-            "source": "52",
-            "target": "77",
-            "value": 0.015621
-        },
-        {
-            "source": "52",
-            "target": "82",
-            "value": 0.025793
-        },
-        {
-            "source": "53",
-            "target": "53",
-            "value": -0.873219
-        },
-        {
-            "source": "53",
-            "target": "56",
-            "value": 0.043719
-        },
-        {
-            "source": "53",
-            "target": "66",
-            "value": 0.162501
-        },
-        {
-            "source": "53",
-            "target": "77",
-            "value": 0.078594
-        },
-        {
-            "source": "53",
-            "target": "85",
-            "value": 0.105854
-        },
-        {
-            "source": "53",
-            "target": "87",
-            "value": 0.064076
-        },
-        {
-            "source": "54",
-            "target": "54",
-            "value": -0.849782
-        },
-        {
-            "source": "54",
-            "target": "56",
-            "value": 0.018442
-        },
-        {
-            "source": "54",
-            "target": "58",
-            "value": 0.038413
-        },
-        {
-            "source": "54",
-            "target": "59",
-            "value": 0.042658
-        },
-        {
-            "source": "54",
-            "target": "70",
-            "value": 0.007019
-        },
-        {
-            "source": "54",
-            "target": "73",
-            "value": 0.086552
-        },
-        {
-            "source": "54",
-            "target": "82",
-            "value": 0.110509
-        },
-        {
-            "source": "55",
-            "target": "55",
-            "value": -0.842451
-        },
-        {
-            "source": "55",
-            "target": "58",
-            "value": 0.030912
-        },
-        {
-            "source": "55",
-            "target": "62",
-            "value": 0.037213
-        },
-        {
-            "source": "55",
-            "target": "63",
-            "value": 0.138173
-        },
-        {
-            "source": "55",
-            "target": "66",
-            "value": 0.011039
-        },
-        {
-            "source": "55",
-            "target": "72",
-            "value": 0.026562
-        },
-        {
-            "source": "56",
-            "target": "56",
-            "value": -0.958794
-        },
-        {
-            "source": "56",
-            "target": "59",
-            "value": 0.065213
-        },
-        {
-            "source": "56",
-            "target": "60",
-            "value": 0.116409
-        },
-        {
-            "source": "56",
-            "target": "62",
-            "value": 0.033663
-        },
-        {
-            "source": "56",
-            "target": "64",
-            "value": 0.007255
-        },
-        {
-            "source": "56",
-            "target": "68",
-            "value": 0.006037
-        },
-        {
-            "source": "56",
-            "target": "72",
-            "value": 0.026904
-        },
-        {
-            "source": "56",
-            "target": "73",
-            "value": 0.026846
-        },
-        {
-            "source": "56",
-            "target": "75",
-            "value": 0.00688
-        },
-        {
-            "source": "56",
-            "target": "76",
-            "value": 0.033848
-        },
-        {
-            "source": "56",
-            "target": "77",
-            "value": 0.056725
-        },
-        {
-            "source": "56",
-            "target": "78",
-            "value": 0.050461
-        },
-        {
-            "source": "56",
-            "target": "80",
-            "value": 0.020355
-        },
-        {
-            "source": "57",
-            "target": "57",
-            "value": -0.909676
-        },
-        {
-            "source": "57",
-            "target": "60",
-            "value": 0.018007
-        },
-        {
-            "source": "57",
-            "target": "77",
-            "value": 0.130683
-        },
-        {
-            "source": "58",
-            "target": "58",
-            "value": -0.919664
-        },
-        {
-            "source": "58",
-            "target": "59",
-            "value": 0.015051
-        },
-        {
-            "source": "58",
-            "target": "63",
-            "value": 0.152547
-        },
-        {
-            "source": "58",
-            "target": "64",
-            "value": 0.018992
-        },
-        {
-            "source": "58",
-            "target": "71",
-            "value": 0.040343
-        },
-        {
-            "source": "58",
-            "target": "72",
-            "value": 0.004307
-        },
-        {
-            "source": "58",
-            "target": "73",
-            "value": 0.0739
-        },
-        {
-            "source": "58",
-            "target": "79",
-            "value": 0.040422
-        },
-        {
-            "source": "58",
-            "target": "80",
-            "value": 0.000107
-        },
-        {
-            "source": "58",
-            "target": "84",
-            "value": 0.033238
-        },
-        {
-            "source": "59",
-            "target": "59",
-            "value": -0.910247
-        },
-        {
-            "source": "59",
-            "target": "60",
-            "value": 0.026968
-        },
-        {
-            "source": "59",
-            "target": "62",
-            "value": 0.076231
-        },
-        {
-            "source": "59",
-            "target": "65",
-            "value": 0.026687
-        },
-        {
-            "source": "59",
-            "target": "68",
-            "value": 0.001978
-        },
-        {
-            "source": "59",
-            "target": "72",
-            "value": 0.023864
-        },
-        {
-            "source": "59",
-            "target": "73",
-            "value": 0.009349
-        },
-        {
-            "source": "59",
-            "target": "75",
-            "value": 0.085924
-        },
-        {
-            "source": "59",
-            "target": "76",
-            "value": 0.076602
-        },
-        {
-            "source": "59",
-            "target": "78",
-            "value": 0.021496
-        },
-        {
-            "source": "59",
-            "target": "80",
-            "value": 0.017252
-        },
-        {
-            "source": "59",
-            "target": "82",
-            "value": 0.028563
-        },
-        {
-            "source": "60",
-            "target": "60",
-            "value": -0.899533
-        },
-        {
-            "source": "60",
-            "target": "64",
-            "value": 0.001982
-        },
-        {
-            "source": "60",
-            "target": "72",
-            "value": 0.002114
-        },
-        {
-            "source": "60",
-            "target": "77",
-            "value": 0.060876
-        },
-        {
-            "source": "60",
-            "target": "78",
-            "value": 0.06417
-        },
-        {
-            "source": "60",
-            "target": "86",
-            "value": 0.013495
-        },
-        {
-            "source": "61",
-            "target": "61",
-            "value": -0.755386
-        },
-        {
-            "source": "61",
-            "target": "67",
-            "value": 0.045296
-        },
-        {
-            "source": "61",
-            "target": "75",
-            "value": 0.027094
-        },
-        {
-            "source": "61",
-            "target": "76",
-            "value": 0.040498
-        },
-        {
-            "source": "61",
-            "target": "78",
-            "value": 0.035939
-        },
-        {
-            "source": "61",
-            "target": "79",
-            "value": 0.030884
-        },
-        {
-            "source": "61",
-            "target": "80",
-            "value": 0.035961
-        },
-        {
-            "source": "62",
-            "target": "62",
-            "value": -0.952048
-        },
-        {
-            "source": "62",
-            "target": "64",
-            "value": 0.02736
-        },
-        {
-            "source": "62",
-            "target": "69",
-            "value": 0.138721
-        },
-        {
-            "source": "62",
-            "target": "76",
-            "value": 0.041082
-        },
-        {
-            "source": "62",
-            "target": "86",
-            "value": 0.078235
-        },
-        {
-            "source": "63",
-            "target": "63",
-            "value": -0.864731
-        },
-        {
-            "source": "63",
-            "target": "64",
-            "value": 0.005612
-        },
-        {
-            "source": "63",
-            "target": "79",
-            "value": 0.059083
-        },
-        {
-            "source": "63",
-            "target": "84",
-            "value": 0.143953
-        },
-        {
-            "source": "64",
-            "target": "64",
-            "value": -0.738163
-        },
-        {
-            "source": "64",
-            "target": "84",
-            "value": 0.087793
-        },
-        {
-            "source": "64",
-            "target": "86",
-            "value": 0.028855
-        },
-        {
-            "source": "65",
-            "target": "65",
-            "value": -0.724556
-        },
-        {
-            "source": "65",
-            "target": "68",
-            "value": 0.001524
-        },
-        {
-            "source": "65",
-            "target": "71",
-            "value": 0.027446
-        },
-        {
-            "source": "65",
-            "target": "72",
-            "value": 0.008447
-        },
-        {
-            "source": "65",
-            "target": "85",
-            "value": 0.019365
-        },
-        {
-            "source": "65",
-            "target": "86",
-            "value": 0.048466
-        },
-        {
-            "source": "66",
-            "target": "66",
-            "value": -0.847036
-        },
-        {
-            "source": "66",
-            "target": "71",
-            "value": 0.056015
-        },
-        {
-            "source": "66",
-            "target": "82",
-            "value": 0.032284
-        },
-        {
-            "source": "66",
-            "target": "85",
-            "value": 0.01011
-        },
-        {
-            "source": "67",
-            "target": "67",
-            "value": -0.804137
-        },
-        {
-            "source": "67",
-            "target": "70",
-            "value": 0.036592
-        },
-        {
-            "source": "67",
-            "target": "75",
-            "value": 0.023071
-        },
-        {
-            "source": "67",
-            "target": "78",
-            "value": 0.021066
-        },
-        {
-            "source": "67",
-            "target": "79",
-            "value": 0.103623
-        },
-        {
-            "source": "68",
-            "target": "68",
-            "value": -0.800248
-        },
-        {
-            "source": "68",
-            "target": "72",
-            "value": 0.001657
-        },
-        {
-            "source": "68",
-            "target": "77",
-            "value": 0.038753
-        },
-        {
-            "source": "68",
-            "target": "78",
-            "value": 0.026185
-        },
-        {
-            "source": "68",
-            "target": "82",
-            "value": 0.035489
-        },
-        {
-            "source": "68",
-            "target": "85",
-            "value": 0.010392
-        },
-        {
-            "source": "68",
-            "target": "87",
-            "value": 0.046133
-        },
-        {
-            "source": "69",
-            "target": "69",
-            "value": -0.788665
-        },
-        {
-            "source": "69",
-            "target": "76",
-            "value": 0.05692
-        },
-        {
-            "source": "69",
-            "target": "86",
-            "value": 0.062621
-        },
-        {
-            "source": "70",
-            "target": "70",
-            "value": -0.849602
-        },
-        {
-            "source": "70",
-            "target": "72",
-            "value": 0.020732
-        },
-        {
-            "source": "70",
-            "target": "73",
-            "value": 0.045095
-        },
-        {
-            "source": "70",
-            "target": "78",
-            "value": 0.01022
-        },
-        {
-            "source": "70",
-            "target": "82",
-            "value": 0.029942
-        },
-        {
-            "source": "71",
-            "target": "71",
-            "value": -0.820152
-        },
-        {
-            "source": "71",
-            "target": "72",
-            "value": 0.012298
-        },
-        {
-            "source": "71",
-            "target": "82",
-            "value": 0.090127
-        },
-        {
-            "source": "71",
-            "target": "85",
-            "value": 0.013035
-        },
-        {
-            "source": "72",
-            "target": "72",
-            "value": -0.910922
-        },
-        {
-            "source": "72",
-            "target": "78",
-            "value": 0.112062
-        },
-        {
-            "source": "72",
-            "target": "79",
-            "value": 0.068196
-        },
-        {
-            "source": "72",
-            "target": "80",
-            "value": 0.036314
-        },
-        {
-            "source": "72",
-            "target": "82",
-            "value": 0.035555
-        },
-        {
-            "source": "73",
-            "target": "73",
-            "value": -0.810643
-        },
-        {
-            "source": "73",
-            "target": "80",
-            "value": 0.074939
-        },
-        {
-            "source": "74",
-            "target": "74",
-            "value": -0.701697
-        },
-        {
-            "source": "74",
-            "target": "83",
-            "value": 0.15027
-        },
-        {
-            "source": "75",
-            "target": "75",
-            "value": -0.794394
-        },
-        {
-            "source": "75",
-            "target": "76",
-            "value": 0.085836
-        },
-        {
-            "source": "75",
-            "target": "78",
-            "value": 0.018781
-        },
-        {
-            "source": "76",
-            "target": "76",
-            "value": -0.808983
-        },
-        {
-            "source": "76",
-            "target": "78",
-            "value": 0.028398
-        },
-        {
-            "source": "76",
-            "target": "80",
-            "value": 0.010157
-        },
-        {
-            "source": "77",
-            "target": "77",
-            "value": -0.977204
-        },
-        {
-            "source": "77",
-            "target": "85",
-            "value": 0.01527
-        },
-        {
-            "source": "78",
-            "target": "78",
-            "value": -0.988209
-        },
-        {
-            "source": "78",
-            "target": "79",
-            "value": 0.053209
-        },
-        {
-            "source": "78",
-            "target": "80",
-            "value": 0.039507
-        },
-        {
-            "source": "79",
-            "target": "79",
-            "value": -0.858719
-        },
-        {
-            "source": "79",
-            "target": "80",
-            "value": 0.009014
-        },
-        {
-            "source": "80",
-            "target": "80",
-            "value": -0.822412
-        },
-        {
-            "source": "81",
-            "target": "81",
-            "value": -0.824098
-        },
-        {
-            "source": "81",
-            "target": "83",
-            "value": 0.107834
-        },
-        {
-            "source": "81",
-            "target": "86",
-            "value": 0.020932
-        },
-        {
-            "source": "81",
-            "target": "87",
-            "value": 0.113355
-        },
-        {
-            "source": "82",
-            "target": "82",
-            "value": -0.867485
-        },
-        {
-            "source": "82",
-            "target": "85",
-            "value": 0.040717
-        },
-        {
-            "source": "83",
-            "target": "83",
-            "value": -0.819193
-        },
-        {
-            "source": "83",
-            "target": "87",
-            "value": 0.173476
-        },
-        {
-            "source": "84",
-            "target": "84",
-            "value": -0.718463
-        },
-        {
-            "source": "85",
-            "target": "85",
-            "value": -0.820507
-        },
-        {
-            "source": "85",
-            "target": "87",
-            "value": 0.008847
-        },
-        {
-            "source": "86",
-            "target": "86",
-            "value": -0.908699
-        },
-        {
-            "source": "86",
-            "target": "87",
-            "value": 0.032599
-        },
-        {
-            "source": "87",
-            "target": "87",
-            "value": -0.91676
-        }
-    ],
-    "nodes": [
-        {
-            "group": 1.0,
-            "id": "0"
-        },
-        {
-            "group": 1.0,
-            "id": "1"
-        },
-        {
-            "group": 1.0,
-            "id": "2"
-        },
-        {
-            "group": 1.0,
-            "id": "3"
-        },
-        {
-            "group": 1.0,
-            "id": "4"
-        },
-        {
-            "group": 1.0,
-            "id": "5"
-        },
-        {
-            "group": 1.0,
-            "id": "6"
-        },
-        {
-            "group": 1.0,
-            "id": "7"
-        },
-        {
-            "group": 1.0,
-            "id": "8"
-        },
-        {
-            "group": 1.0,
-            "id": "9"
-        },
-        {
-            "group": 1.0,
-            "id": "10"
-        },
-        {
-            "group": 1.0,
-            "id": "11"
-        },
-        {
-            "group": 1.0,
-            "id": "12"
-        },
-        {
-            "group": 1.0,
-            "id": "13"
-        },
-        {
-            "group": 1.0,
-            "id": "14"
-        },
-        {
-            "group": 1.0,
-            "id": "15"
-        },
-        {
-            "group": 1.0,
-            "id": "16"
-        },
-        {
-            "group": 1.0,
-            "id": "17"
-        },
-        {
-            "group": 1.0,
-            "id": "18"
-        },
-        {
-            "group": 1.0,
-            "id": "19"
-        },
-        {
-            "group": 1.0,
-            "id": "20"
-        },
-        {
-            "group": 1.0,
-            "id": "21"
-        },
-        {
-            "group": 1.0,
-            "id": "22"
-        },
-        {
-            "group": 1.0,
-            "id": "23"
-        },
-        {
-            "group": 1.0,
-            "id": "24"
-        },
-        {
-            "group": 1.0,
-            "id": "25"
-        },
-        {
-            "group": 1.0,
-            "id": "26"
-        },
-        {
-            "group": 1.0,
-            "id": "27"
-        },
-        {
-            "group": 1.0,
-            "id": "28"
-        },
-        {
-            "group": 1.0,
-            "id": "29"
-        },
-        {
-            "group": 1.0,
-            "id": "30"
-        },
-        {
-            "group": 1.0,
-            "id": "31"
-        },
-        {
-            "group": 1.0,
-            "id": "32"
-        },
-        {
-            "group": 1.0,
-            "id": "33"
-        },
-        {
-            "group": 1.0,
-            "id": "34"
-        },
-        {
-            "group": 1.0,
-            "id": "35"
-        },
-        {
-            "group": 1.0,
-            "id": "36"
-        },
-        {
-            "group": 1.0,
-            "id": "37"
-        },
-        {
-            "group": 1.0,
-            "id": "38"
-        },
-        {
-            "group": 1.0,
-            "id": "39"
-        },
-        {
-            "group": 1.0,
-            "id": "40"
-        },
-        {
-            "group": 1.0,
-            "id": "41"
-        },
-        {
-            "group": 1.0,
-            "id": "42"
-        },
-        {
-            "group": 1.0,
-            "id": "43"
-        },
-        {
-            "group": 1.0,
-            "id": "44"
-        },
-        {
-            "group": 1.0,
-            "id": "45"
-        },
-        {
-            "group": 1.0,
-            "id": "46"
-        },
-        {
-            "group": 1.0,
-            "id": "47"
-        },
-        {
-            "group": 1.0,
-            "id": "48"
-        },
-        {
-            "group": 1.0,
-            "id": "49"
-        },
-        {
-            "group": 1.0,
-            "id": "50"
-        },
-        {
-            "group": 1.0,
-            "id": "51"
-        },
-        {
-            "group": 1.0,
-            "id": "52"
-        },
-        {
-            "group": 1.0,
-            "id": "53"
-        },
-        {
-            "group": 1.0,
-            "id": "54"
-        },
-        {
-            "group": 1.0,
-            "id": "55"
-        },
-        {
-            "group": 1.0,
-            "id": "56"
-        },
-        {
-            "group": 1.0,
-            "id": "57"
-        },
-        {
-            "group": 1.0,
-            "id": "58"
-        },
-        {
-            "group": 1.0,
-            "id": "59"
-        },
-        {
-            "group": 1.0,
-            "id": "60"
-        },
-        {
-            "group": 1.0,
-            "id": "61"
-        },
-        {
-            "group": 1.0,
-            "id": "62"
-        },
-        {
-            "group": 1.0,
-            "id": "63"
-        },
-        {
-            "group": 1.0,
-            "id": "64"
-        },
-        {
-            "group": 1.0,
-            "id": "65"
-        },
-        {
-            "group": 1.0,
-            "id": "66"
-        },
-        {
-            "group": 1.0,
-            "id": "67"
-        },
-        {
-            "group": 1.0,
-            "id": "68"
-        },
-        {
-            "group": 1.0,
-            "id": "69"
-        },
-        {
-            "group": 1.0,
-            "id": "70"
-        },
-        {
-            "group": 1.0,
-            "id": "71"
-        },
-        {
-            "group": 1.0,
-            "id": "72"
-        },
-        {
-            "group": 1.0,
-            "id": "73"
-        },
-        {
-            "group": 1.0,
-            "id": "74"
-        },
-        {
-            "group": 1.0,
-            "id": "75"
-        },
-        {
-            "group": 1.0,
-            "id": "76"
-        },
-        {
-            "group": 1.0,
-            "id": "77"
-        },
-        {
-            "group": 1.0,
-            "id": "78"
-        },
-        {
-            "group": 1.0,
-            "id": "79"
-        },
-        {
-            "group": 1.0,
-            "id": "80"
-        },
-        {
-            "group": 1.0,
-            "id": "81"
-        },
-        {
-            "group": 1.0,
-            "id": "82"
-        },
-        {
-            "group": 1.0,
-            "id": "83"
-        },
-        {
-            "group": 1.0,
-            "id": "84"
-        },
-        {
-            "group": 1.0,
-            "id": "85"
-        },
-        {
-            "group": 1.0,
-            "id": "86"
-        },
-        {
-            "group": 1.0,
-            "id": "87"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/pynets/plotting/connectogram.js b/pynets/plotting/connectogram.js
deleted file mode 100644
index 7caa2b7d..00000000
--- a/pynets/plotting/connectogram.js
+++ /dev/null
@@ -1,141 +0,0 @@
-var diameter = 960,
-    radius = diameter / 2,
-    innerRadius = radius - 120;
-
-var cluster = d3.cluster()
-    .size([360, innerRadius]);
-
-var line = d3.radialLine()
-    .curve(d3.curveBundle.beta(0.90))
-    .radius(function(d) { return d.y; })
-    .angle(function(d) { return d.x / 180 * Math.PI; });
-
-var svg = d3.select("body").append("svg")
-    .attr("width", diameter)
-    .attr("height", diameter)
-  .append("g")
-    .attr("transform", "translate(" + radius + "," + radius + ")");
-
-var link = svg.append("g").selectAll(".link"),
-    node = svg.append("g").selectAll(".node");
-d3.json(
-  "template.json",
-  function(error, classes) {
-
-    if (error) throw error;
-
-  var root = packageHierarchy(classes)
-      .sum(function(d) { return d.size; });
-
-  cluster(root);
-
-
-  link = link
-    .data(packageImports(root.leaves()))
-    .enter().append("path")
-      .each(function(d) { d.source = d[0], d.target = d[d.length - 1]; })
-      .attr("class", "link")
-      .each(function(d,i){
-
-      //bake the weight data in
-      var base = d[0].data.name
-      var target = d[d.length - 1].data.name
-      var target_idx = d[d.length - 1].data.imports.indexOf(target)
-      if (target_idx < 0){
-        var weight = 0
-      } else {
-        var weight = d[d.length - 1].data.weights[target_idx]
-      }
-      //
-
-      d.weight = weight
-    })
-      .attr("d", line)
-      /*.transition()
-      .duration(1000)*/
-      .style("stroke", function(d){
-        var weight = (d.weight + 0.5)
-        return d3.interpolateCool(weight)
-      });
-
-
-  node = node
-    .data(root.leaves())
-    .enter().append("text")
-      .attr("class", "node")
-      .attr("dy", "0.31em")
-      .attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + (d.y + 8) + ",0)" + (d.x < 180 ? "" : "rotate(180)"); })
-      .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; })
-      .text(function(d) { return d.data.key; })
-      .on("mouseover", mouseovered)
-      .on("mouseout", mouseouted);
-  }
-);
-
-function mouseovered(d) {
-  node
-      .each(function(n) { n.target = n.source = false; });
-
-  link
-    .classed("link--source", function(l) { if (l.source === d) return l.target.target = true; })
-    .filter(function(l) { return l.target === d || l.source === d; })
-    .raise();
-
-  node
-      .classed("node--target", function(n) { return n.target; })
-      .classed("node--source", function(n) { return n.source; });
-}
-
-function mouseouted(d) {
-  link
-      .classed("link--target", false)
-      .classed("link--source", false);
-
-  node
-      .classed("node--target", false)
-      .classed("node--source", false);
-}
-
-// Lazily construct the package hierarchy from class names.
-function packageHierarchy(classes) {
-  var map = {};
-
-  function find(name, data) {
-    var node = map[name], i;
-    if (!node) {
-      node = map[name] = data || {name: name, children: []};
-      if (name.length) {
-        node.parent = find(name.substring(0, i = name.lastIndexOf(".")));
-        node.parent.children.push(node);
-        node.key = name.substring(i + 1);
-      }
-    }
-    return node;
-  }
-
-  classes.forEach(function(d) {
-    find(d.name, d);
-  });
-
-  return d3.hierarchy(map[""]);
-}
-
-// Return a list of imports for the given array of nodes.
-function packageImports(nodes) {
-  var map = {},
-      imports = [];
-
-  // Compute a map from name to node.
-  nodes.forEach(function(d) {
-    map[d.data.name] = d;
-  });
-
-  // For each import, construct a link from the source to target node.
-  nodes.forEach(function(d) {
-    if (d.data.imports) d.data.imports.forEach(function(i) {
-      imports.push(map[d.data.name].path(map[i]));
-    });
-  });
-  console.log(imports)
-  return imports;
-}
diff --git a/pynets/plotting/fdg.js b/pynets/plotting/fdg.js
deleted file mode 100644
index 51565ead..00000000
--- a/pynets/plotting/fdg.js
+++ /dev/null
@@ -1,81 +0,0 @@
-var svg = d3.select("svg"),
-    width = +svg.attr("width"),
-    height = +svg.attr("height");
-
-var color = d3.scaleOrdinal(d3.schemeCategory20);
-
-var simulation = d3.forceSimulation()
-    .force("link", d3.forceLink().id(function(d) { return d.id; }))
-    .force("charge", d3.forceManyBody())
-    .force("center", d3.forceCenter(width / 2, height / 2));
-
-d3.json("FD_graph.json", function(error, graph) {
-  if (error) throw error;
-
-  var link = svg.append("g")
-      .attr("class", "links")
-    .selectAll("line")
-    .data(graph.links)
-    .enter().append("line")
-      .attr("stroke-width", function(d) { return Math.sqrt(d.value); });
-
-  var node = svg.append("g")
-      .attr("class", "nodes")
-    .selectAll("circle")
-    .data(graph.nodes)
-    .enter().append("circle")
-      .attr("r", 4)
-      .attr("fill", function(d) { return color(d.group); })
-      .call(d3.drag()
-          .on("start", dragstarted)
-          .on("drag", dragged)
-          .on("end", dragended));
-
-    node.append("title")
-        .text(function(d) { return d.id; });
-
-  var text = svg.append("g")
-      .attr("class", "labels")
-    .selectAll("text")
-      .data(graph.nodes)
-    .enter().append("text")
-      .attr("dx", 12)
-      .attr("dy", ".35em")
-      .text(function(d) { return d.name });
-
-  simulation
-      .nodes(graph.nodes)
-      .on("tick", ticked);
-
-  simulation.force("link")
-      .links(graph.links);
-
-  function ticked() {
-    link
-        .attr("x1", function(d) { return d.source.x; })
-        .attr("y1", function(d) { return d.source.y; })
-        .attr("x2", function(d) { return d.target.x; })
-        .attr("y2", function(d) { return d.target.y; });
-
-    node
-        .attr("cx", function(d) { return d.x; })
-        .attr("cy", function(d) { return d.y; });
-  }
-});
-
-function dragstarted(d) {
-  if (!d3.event.active) simulation.alphaTarget(0.3).restart();
-  d.fx = d.x;
-  d.fy = d.y;
-}
-
-function dragged(d) {
-  d.fx = d3.event.x;
-  d.fy = d3.event.y;
-}
-
-function dragended(d) {
-  if (!d3.event.active) simulation.alphaTarget(0);
-  d.fx = null;
-  d.fy = null;
-}
diff --git a/pynets/plotting/index.html b/pynets/plotting/index.html
deleted file mode 100644
index 8fcc2a49..00000000
--- a/pynets/plotting/index.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<html>
-  <head>
-    <style>
-      .node {
-        font: 300 11px "Helvetica Neue", Helvetica, Arial, sans-serif;
-        fill: #bbb;
-      }
-
-      .node:hover {
-        fill: #000;
-      }
-
-      .link {
-        stroke: steelblue;
-        stroke-opacity: 0.2;
-        fill: none;
-        pointer-events: none;
-      }
-
-      .node:hover,
-      .node--source,
-      .node--target {
-        font-weight: 700;
-        font-size: 13px !important;
-      }
-
-      .node--source {
-        fill: #2ca02c;
-      }
-
-      .node--target {
-        fill: #d62728;
-      }
-
-      .link--source,
-      .link--target {
-        stroke-opacity: 1;
-        stroke-width: 4px;
-      }
-
-      .link--source {
-        stroke: #000000 !important;
-      }
-
-      .link--target {
-        stroke: #2ca02c;
-      }
-    </style>
-  </head>
-  <div style="float: bottom;">
-    <body>
-      <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.9.1/d3.min.js"></script>
-      <script src="https://d3js.org/d3.v4.min.js"></script>
-      <script src="https://d3js.org/d3-scale-chromatic.v1.min.js"></script>
-      <script src="connectogram.js"></script>
-    </body>
-    <meta charset="utf-8">
-    <style>
-      .links line {
-        stroke: #999;
-        stroke-opacity: 0.6;
-      }
-
-      .nodes circle {
-        stroke: #fff;
-        stroke-width: 1.5px;
-      }
-    </style>
-    <svg width="2000" height="2000"></svg>
-    <script src="https://d3js.org/d3.v4.min.js"></script>
-    <script src="fdg.js"></script>
-  </div>
-</html>
diff --git a/pynets/plotting/plot_gen.py b/pynets/plotting/plot_gen.py
index 0fcec339..e6a99234 100644
--- a/pynets/plotting/plot_gen.py
+++ b/pynets/plotting/plot_gen.py
@@ -21,283 +21,6 @@
 matplotlib.use("agg")
 
 
-def plot_connectogram(
-    conn_matrix,
-    conn_model,
-    atlas,
-    dir_path,
-    ID,
-    network,
-    labels,
-    comm="nodes",
-    color_scheme="interpolateBlues",
-    prune=False,
-):
-    """
-    Plot a connectogram for a given connectivity matrix.
-
-    Parameters
-    ----------
-    conn_matrix : array
-        NxN matrix.
-    conn_model : str
-       Connectivity estimation model (e.g. corr for correlation, cov for
-       covariance, sps for precision covariance, partcorr for partial
-       correlation). sps type is used by default.
-    atlas : str
-        Name of atlas parcellation used.
-    dir_path : str
-        Path to directory containing subject derivative data for given run.
-    ID : str
-        A subject id or other unique identifier.
-    network : str
-        Resting-state network based on Yeo-7 and Yeo-17 naming (e.g.
-        'Default') used to filter nodes in the study of brain subgraphs.
-    labels : list
-        List of string labels corresponding to ROI nodes.
-    comm : str, optional default: 'nodes'
-        Communitity setting, either 'nodes' or 'links'
-    color_scheme : str, optional, default: 'interpolateBlues'
-        Color scheme in json.
-    prune : bool
-        Indicates whether to prune final graph of disconnected nodes/isolates.
-
-    """
-    import json
-    from pathlib import Path
-    from networkx.readwrite import json_graph
-    from pynets.core.thresholding import normalize
-    from pynets.stats.netstats import most_important
-
-    # from scipy.cluster.hierarchy import linkage, fcluster
-    from nipype.utils.filemanip import save_json
-
-    conn_matrix = normalize(conn_matrix)
-    G = nx.from_numpy_matrix(np.abs(conn_matrix))
-    if prune is True:
-        [G, pruned_nodes] = most_important(G)
-        conn_matrix = nx.to_numpy_array(G)
-
-        pruned_nodes.sort(reverse=True)
-        for j in pruned_nodes:
-            del labels[labels.index(labels[j])]
-
-    if comm == "nodes" and len(conn_matrix) > 40:
-        from pynets.stats.netstats import community_resolution_selection
-
-        G = nx.from_numpy_matrix(np.abs(conn_matrix))
-        _, node_comm_aff_mat, resolution, num_comms = \
-            community_resolution_selection(G)
-        clust_levels = len(node_comm_aff_mat)
-        clust_levels_tmp = int(clust_levels) - 1
-        mask_mat = np.squeeze(np.array([node_comm_aff_mat == 0]).astype("int"))
-        label_arr = (
-            node_comm_aff_mat *
-            np.expand_dims(
-                np.arange(
-                    1,
-                    clust_levels +
-                    1),
-                axis=1) +
-            mask_mat)
-    elif comm == "links" and len(conn_matrix) > 40:
-        from pynets.stats.netstats import link_communities
-
-        # Plot link communities
-        link_comm_aff_mat = link_communities(
-            conn_matrix, type_clustering="single")[0]
-        print(f"{'Found '}{str(len(link_comm_aff_mat))}{' communities...'}")
-        clust_levels = len(link_comm_aff_mat)
-        clust_levels_tmp = int(clust_levels) - 1
-        mask_mat = np.squeeze(np.array([link_comm_aff_mat == 0]).astype("int"))
-        label_arr = (
-            link_comm_aff_mat *
-            np.expand_dims(
-                np.arange(
-                    1,
-                    clust_levels +
-                    1),
-                axis=1) +
-            mask_mat)
-    else:
-        return
-
-    def _get_node_label(node_idx, labels, clust_levels_tmp):
-        """
-        Tag a label to a given node based on its community/cluster assignment
-        """
-        from collections import OrderedDict
-
-        def _write_roman(num):
-            """
-            Create community/cluster assignments using a Roman-Numeral
-            generator.
-            """
-            roman = OrderedDict()
-            roman[1000] = "M"
-            roman[900] = "CM"
-            roman[500] = "D"
-            roman[400] = "CD"
-            roman[100] = "C"
-            roman[90] = "XC"
-            roman[50] = "L"
-            roman[40] = "XL"
-            roman[10] = "X"
-            roman[9] = "IX"
-            roman[5] = "V"
-            roman[4] = "IV"
-            roman[1] = "I"
-
-            def roman_num(num):
-                """
-
-                :param num:
-                """
-                for r in roman.keys():
-                    x, y = divmod(num, r)
-                    yield roman[r] * x
-                    num -= r * x
-                    if num > 0:
-                        roman_num(num)
-                    else:
-                        break
-
-            return "".join([a for a in roman_num(num)])
-
-        rn_list = []
-        node_idx = node_idx - 1
-        node_labels = labels[:, node_idx]
-        for k in [int(l) for i, l in enumerate(node_labels)]:
-            rn_list.append(json.dumps(_write_roman(k)))
-        abet = rn_list
-        node_lab_alph = ".".join(
-            ["{}{}".format(abet[i], int(l)) for i, l in enumerate(node_labels)]
-        ) + ".{}".format(labels[node_idx])
-        return node_lab_alph
-
-    output = []
-
-    adj_dict = {}
-    for i in list(G.adjacency()):
-        source = list(i)[0]
-        target = list(list(i)[1])
-        adj_dict[source] = target
-
-    for node_idx, connections in adj_dict.items():
-        weight_vec = []
-        for i in connections:
-            wei = G.get_edge_data(node_idx, int(i))["weight"]
-            weight_vec.append(wei)
-        entry = {}
-        nodes_label = _get_node_label(node_idx, label_arr, clust_levels_tmp)
-        entry["name"] = nodes_label
-        entry["size"] = len(connections)
-        entry["imports"] = [
-            _get_node_label(int(d) - 1, label_arr, clust_levels_tmp)
-            for d in connections
-        ]
-        entry["weights"] = weight_vec
-        output.append(entry)
-
-    if network:
-        json_file_name = (
-            f"{str(ID)}{'_'}{network}{'_connectogram_'}{conn_model}"
-            f"{'_network.json'}"
-        )
-        json_fdg_file_name = (
-            f"{str(ID)}{'_'}{network}{'_fdg_'}{conn_model}{'_network.json'}"
-        )
-        connectogram_plot = f"{dir_path}{'/'}{json_file_name}"
-        fdg_js_sub = f"{dir_path}{'/'}{str(ID)}{'_'}{network}{'_fdg_'}" \
-                     f"{conn_model}{'_network.js'}"
-        fdg_js_sub_name = f"{str(ID)}{'_'}{network}{'_fdg_'}{conn_model}" \
-                          f"{'_network.js'}"
-        connectogram_js_sub = (
-            f"{dir_path}/{str(ID)}_{network}_connectogram_{conn_model}"
-            f"_network.js"
-        )
-        connectogram_js_name = (
-            f"{str(ID)}{'_'}{network}{'_connectogram_'}{conn_model}"
-            f"{'_network.js'}"
-        )
-    else:
-        json_file_name = f"{str(ID)}{'_connectogram_'}{conn_model}{'.json'}"
-        json_fdg_file_name = f"{str(ID)}{'_fdg_'}{conn_model}{'.json'}"
-        connectogram_plot = f"{dir_path}{'/'}{json_file_name}"
-        connectogram_js_sub = (
-            f"{dir_path}{'/'}{str(ID)}{'_connectogram_'}{conn_model}{'.js'}"
-        )
-        fdg_js_sub = f"{dir_path}{'/'}{str(ID)}{'_fdg_'}{conn_model}{'.js'}"
-        fdg_js_sub_name = f"{str(ID)}{'_fdg_'}{conn_model}{'.js'}"
-        connectogram_js_name = f"{str(ID)}{'_connectogram_'}{conn_model}" \
-                               f"{'.js'}"
-    save_json(connectogram_plot, output)
-
-    # Force-directed graphing
-    G = nx.from_numpy_matrix(
-        np.round(
-            np.abs(conn_matrix).astype("float64"),
-            6))
-    data = json_graph.node_link_data(G)
-    data.pop("directed", None)
-    data.pop("graph", None)
-    data.pop("multigraph", None)
-    for k in range(len(data["links"])):
-        data["links"][k]["value"] = data["links"][k].pop("weight")
-    for k in range(len(data["nodes"])):
-        data["nodes"][k]["id"] = str(data["nodes"][k]["id"])
-    for k in range(len(data["links"])):
-        data["links"][k]["source"] = str(data["links"][k]["source"])
-        data["links"][k]["target"] = str(data["links"][k]["target"])
-
-    # Add community structure
-    for k in range(len(data["nodes"])):
-        data["nodes"][k]["group"] = str(label_arr[0][k])
-
-    # Add node labels
-    for k in range(len(data["nodes"])):
-        data["nodes"][k]["name"] = str(labels[k])
-
-    out_file = f"{dir_path}{'/'}{str(json_fdg_file_name)}"
-    save_json(out_file, data)
-
-    # Copy index.html and json to dir_path
-    conn_js_path = str(Path(__file__).parent / "connectogram.js")
-    index_html_path = str(Path(__file__).parent / "index.html")
-    fdg_replacements_js = {"FD_graph.json": str(json_fdg_file_name)}
-    replacements_html = {
-        "connectogram.js": str(connectogram_js_name),
-        "fdg.js": str(fdg_js_sub_name),
-    }
-    fdg_js_path = str(Path(__file__).parent / "fdg.js")
-    with open(index_html_path) as infile, open(
-        str(dir_path + "/index.html"), "w"
-    ) as outfile:
-        for line in infile:
-            for src, target in replacements_html.items():
-                line = line.replace(src, target)
-            outfile.write(line)
-
-    replacements_js = {
-        "template.json": str(json_file_name),
-        "interpolateCool": str(color_scheme),
-    }
-    with open(conn_js_path) as infile, open(connectogram_js_sub, "w") as \
-            outfile:
-        for line in infile:
-            for src, target in replacements_js.items():
-                line = line.replace(src, target)
-            outfile.write(line)
-
-    with open(fdg_js_path) as infile, open(fdg_js_sub, "w") as outfile:
-        for line in infile:
-            for src, target in fdg_replacements_js.items():
-                line = line.replace(src, target)
-            outfile.write(line)
-
-    return
-
-
 def plot_timeseries(time_series, network, ID, dir_path, atlas, labels):
     """
     Plot time-series.
diff --git a/pynets/runconfig.yaml b/pynets/runconfig.yaml
index 7792f748..b3d2bdce 100755
--- a/pynets/runconfig.yaml
+++ b/pynets/runconfig.yaml
@@ -52,8 +52,10 @@ tracking:
         - 20
     min_streams: # To prevent infinite loops searching for streamlines that cannot be tracked.
         - 25
+    seeding_mask_thr:
+        - 0.0075
     track_timeout:
-        - 10800 # number of seconds until automatic joblib termination for tractography (prevents inefficient loops).
+        - 3600 # number of seconds until automatic joblib termination for tractography (prevents inefficient loops).
 clustering_local_conn: # If you are running agglomerative-type clustering (e.g. ward, average, single, complete) this setting indicates which spatially constrained local connectivity definition to use. Options are 'allcorr' (all voxels have equal weight), 'scorr' (spatial-connectivity across time-series), and 'tcorr' (temporal-connectivity across time-series).
     - 'tcorr'
 c_boot: # Number of bootstrapped iterations for spatially-constrained clustering
diff --git a/pynets/stats/benchmarking.py b/pynets/stats/benchmarking.py
index ce5ef6fd..3f93c36e 100644
--- a/pynets/stats/benchmarking.py
+++ b/pynets/stats/benchmarking.py
@@ -290,7 +290,6 @@ def benchmark_reproducibility(base_dir, comb, modality, alg, par_dict, disc,
                 return df_summary
             del df_long
     elif icc is True and alg != 'topology':
-        import re
         from pynets.stats.utils import parse_closest_ixs
         try:
             import pingouin as pg
@@ -352,8 +351,7 @@ def benchmark_reproducibility(base_dir, comb, modality, alg, par_dict, disc,
                                         template=template)
                                     if len(ixs) != emb_shape:
                                         ixs, node_dict = parse_closest_ixs(
-                                            node_files,
-                                            emb_shape)
+                                            node_files, emb_shape)
                                     if isinstance(node_dict, dict):
                                         coords = [node_dict[i]['coord'] for i
                                                   in node_dict.keys()]
@@ -362,6 +360,14 @@ def benchmark_reproducibility(base_dir, comb, modality, alg, par_dict, disc,
                                             'BrainnetomeAtlas'
                                             'Fan2016'] for i in
                                             node_dict.keys()]
+                                    elif isinstance(node_dict, list):
+                                        coords = [node_dict[i]['coord'] for i
+                                                  in range(len(node_dict))]
+                                        labels = [node_dict[i][
+                                            'label'][
+                                            'BrainnetomeAtlas'
+                                            'Fan2016'] for i in
+                                            range(len(node_dict))]
                                     else:
                                         print(f"Failed to parse coords/"
                                               f"labels from {node_files}. "
diff --git a/pynets/stats/embeddings.py b/pynets/stats/embeddings.py
index 76447e79..f8681ba8 100644
--- a/pynets/stats/embeddings.py
+++ b/pynets/stats/embeddings.py
@@ -59,6 +59,7 @@ def _omni_embed(pop_array, atlas, graph_path_list, ID,
       python. Journal of Machine Learning Research.
 
     """
+    import os
     import networkx as nx
     import numpy as np
     from pynets.core.utils import flatten
@@ -84,9 +85,7 @@ def _omni_embed(pop_array, atlas, graph_path_list, ID,
         else:
             mat_clean = pop_array[i]
 
-        mat_clean = np.nan_to_num(mat_clean)
-        mat_clean = mat_clean[
-            (np.isnan(mat_clean) == False) & (np.isinf(mat_clean) == False)]
+        mat_clean[np.where(np.isnan(mat_clean) | np.isinf(mat_clean))] = 0
         if np.isnan(np.sum(mat_clean)) == False:
             clean_mats.append(mat_clean)
         i += 1
@@ -135,7 +134,8 @@ def _omni_embed(pop_array, atlas, graph_path_list, ID,
         out_path = f"{namer_dir}/gradient-OMNI" \
                    f"_{atlas}_{subgraph_name}_" \
                    f"{os.path.basename(graph_path_list[0])}_NULL"
-        os.mknod(out_path)
+        if not os.path.exists(out_path):
+            os.mknod(out_path)
     return out_path
 
 
@@ -190,6 +190,7 @@ def _mase_embed(pop_array, atlas, graph_path, ID, subgraph_name="all_nodes",
       python. Journal of Machine Learning Research.
 
     """
+    import os
     import numpy as np
     from graspologic.embed.mase import MultipleASE
     from joblib import dump
@@ -206,7 +207,7 @@ def _mase_embed(pop_array, atlas, graph_path, ID, subgraph_name="all_nodes",
     if len(pop_array) != len(clean_mats):
         return None
 
-    mase_fit = mase.fit_transform(clean_mats)
+    mase.fit_transform(clean_mats)
 
     dir_path = str(Path(os.path.dirname(graph_path)))
     namer_dir = f"{dir_path}/mplx_embeddings"
@@ -225,7 +226,7 @@ def _mase_embed(pop_array, atlas, graph_path, ID, subgraph_name="all_nodes",
 
     print("Saving...")
     np.save(out_path, mase.scores_)
-    del mase, mase_fit
+    del mase
 
     return out_path
 
@@ -302,12 +303,8 @@ def _ase_embed(mat, atlas, graph_path, ID, subgraph_name="all_nodes",
     if float(prune) >= 1:
         graph_path_tmp = cg.prune_graph()[1]
         mat_clean = np.load(graph_path_tmp)
-    else:
-        mat_clean = mat
 
-    mat_clean = np.nan_to_num(mat_clean)
-    mat_clean = mat_clean[(np.isnan(mat_clean) == False) &
-                          (np.isinf(mat_clean) == False)]
+    mat_clean[np.where(np.isnan(mat_clean) | np.isinf(mat_clean))] = 0
 
     if (np.abs(mat_clean) < 0.0000001).all() or np.isnan(np.sum(mat_clean)):
         return None
@@ -347,6 +344,8 @@ def build_asetomes(est_path_iterlist, ID):
         A subject id or other unique identifier.
 
     """
+    from pathlib import Path
+    import os
     import numpy as np
     from pynets.core.utils import prune_suffices, flatten
     from pynets.stats.embeddings import _ase_embed
@@ -395,7 +394,8 @@ def build_asetomes(est_path_iterlist, ID):
                 os.makedirs(namer_dir, exist_ok=True)
             out_path = f"{namer_dir}/gradient-ASE" \
                        f"_{atlas}_{subgraph}_{os.path.basename(file_)}_NULL"
-            os.mknod(out_path)
+            if not os.path.exists(out_path):
+                os.mknod(out_path)
             out_paths.append(out_path)
 
     return out_paths
@@ -423,6 +423,8 @@ def build_masetome(est_path_iterlist, ID):
       https://doi.org/10.1038/s41467-018-04614-w
 
     """
+    from pathlib import Path
+    import os
     import numpy as np
     from pynets.core.utils import prune_suffices
     from pynets.stats.embeddings import _mase_embed
@@ -477,7 +479,8 @@ def build_masetome(est_path_iterlist, ID):
                 f"{namer_dir}/gradient-MASE_{atlas}_{subgraph}"
                 f"_{os.path.basename(pairs[0])}_NULL"
             )
-            os.mknod(out_path)
+            if not os.path.exists(out_path):
+                os.mknod(out_path)
             out_paths.append(out_path)
 
     return out_paths
@@ -506,6 +509,7 @@ def build_omnetome(est_path_iterlist, ID):
       2017 IEEE International Conference on (pp. 964-967). IEEE.
 
     """
+    from pathlib import Path
     import sys
     import numpy as np
     from pynets.core.utils import flatten
diff --git a/pynets/stats/utils.py b/pynets/stats/utils.py
index 5f744c8c..2885074d 100644
--- a/pynets/stats/utils.py
+++ b/pynets/stats/utils.py
@@ -845,10 +845,8 @@ def dwi_grabber(comb, subject_dict, missingness_frame,
             # print(f"Found {ID}, {ses}, {modality}, {comb_tuple}...")
             try:
                 if embedding.endswith('.npy'):
-                    with np.load(embedding, allow_pickle=True,
-                                 mmap_mode=None) as a:
-                        emb_shape = a.shape[0]
-                    del a
+                    emb_shape = np.load(embedding, allow_pickle=True,
+                                        mmap_mode=None).shape[0]
                 elif embedding.endswith('.csv'):
                     with open(embedding, "r+") as a:
                         emb_shape = len(pd.read_csv(a).columns)
@@ -861,7 +859,7 @@ def dwi_grabber(comb, subject_dict, missingness_frame,
                 gc.collect()
             except:
                 print(
-                    f"{Fore.RED}Failed to load functional embeddings found "
+                    f"{Fore.RED}Failed to load structural embeddings found "
                     f"for ID: {ID}, SESSION: {ses}, EMBEDDING: {alg}, and "
                     f"UNIVERSE: {comb_tuple}...{Style.RESET_ALL}"
                 )
@@ -1078,10 +1076,8 @@ def func_grabber(comb, subject_dict, missingness_frame,
             # print(f"Found {ID}, {ses}, {modality}, {comb_tuple}...")
             try:
                 if embedding.endswith('.npy'):
-                    with np.load(embedding, allow_pickle=True,
-                                 mmap_mode=None) as a:
-                        emb_shape = a.shape[0]
-                    del a
+                    emb_shape = np.load(embedding, allow_pickle=True,
+                                        mmap_mode=None).shape[0]
                 elif embedding.endswith('.csv'):
                     with open(embedding, "r+") as a:
                         emb_shape = len(pd.read_csv(a).columns)
diff --git a/requirements.txt b/requirements.txt
index 258fc398..4f0fffbb 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,4 @@
+matplotlib<=3.3.0,>=3.0.0
 dill>=0.3.2
 statsmodels>=0.11.1
 Sphinx>=1.4.8
@@ -15,7 +16,6 @@ setuptools>=47.3.0
 nibabel>=3.1.1
 indexed_gzip==1.2.0
 seaborn>=0.10.0
-matplotlib>=3.2.2
 networkx==2.4
 nipype==1.5.1
 scikit_learn>=0.23.0
@@ -36,3 +36,4 @@ git+https://github.com/dPys/nilearn.git@enh/parc_conn
 git+https://github.com/dPys/deepbrain.git@master
 urllib3>=1.25.4
 mplcyberpunk>=0.1.11
+numba>=0.51.2
diff --git a/setup.py b/setup.py
index 4043a7a5..b0efa207 100644
--- a/setup.py
+++ b/setup.py
@@ -38,7 +38,7 @@
     },
     include_package_data=True,
     install_requires=['nilearn==0.6.2', 'deepbrain==0.1.0'] + requirements,
-    dependency_links=['git+https://github.com/dPys/nilearn.git@enh/parc_conn#egg=nilearn-0.6.2',
+    dependency_links=['git+https://github.com/dPys/nilearn.git@enh/parc_conn#egg=nilearn',
                       'git+https://github.com/dPys/deepbrain.git@master#egg=deepbrain-0.1.0'],
     license="GNU General Public License v3",
     zip_safe=False,


Test patch:
diff --git a/tests/test_clustering.py b/tests/test_clustering.py
index c311aec7..43d4509b 100644
--- a/tests/test_clustering.py
+++ b/tests/test_clustering.py
@@ -56,12 +56,15 @@ def test_make_local_connectivity_tcorr():
     """
     print("testing make_local_connectivity_tcorr")
     base_dir = str(Path(__file__).parent/"examples")
-    mask_file = f"{base_dir}/miscellaneous/triple_net_ICA_overlap_3_sig_bin.nii.gz"
-    func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-MNI152NLin6Asym_desc-" \
+    mask_file = f"{base_dir}/miscellaneous/triple_net_ICA_overlap_3_sig_" \
+                f"bin.nii.gz"
+    func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-" \
+                f"rest_space-MNI152NLin6Asym_desc-" \
         f"smoothAROMAnonaggr_bold_short.nii.gz"
     func_img = nib.load(func_file)
     mask_img = nib.load(mask_file)
-    W = clustools.make_local_connectivity_tcorr(func_img, mask_img, thresh=0.50)
+    W = clustools.make_local_connectivity_tcorr(func_img, mask_img,
+                                                thresh=0.50)
 
     assert W is not None
 
@@ -76,8 +79,10 @@ def test_make_local_connectivity_scorr():
     """
     print("testing make_local_connectivity_scorr")
     base_dir = str(Path(__file__).parent/"examples")
-    mask_file = f"{base_dir}/miscellaneous/triple_net_ICA_overlap_3_sig_bin.nii.gz"
-    func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-MNI152NLin6Asym_desc-" \
+    mask_file = f"{base_dir}/miscellaneous/triple_net_ICA_overlap_3_sig_" \
+                f"bin.nii.gz"
+    func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_" \
+                f"task-rest_space-MNI152NLin6Asym_desc-" \
         f"smoothAROMAnonaggr_bold_short.nii.gz"
     func_img = nib.load(func_file)
     mask_img = nib.load(mask_file)
@@ -91,8 +96,10 @@ def test_make_local_connectivity_scorr():
     assert out_img is not None
 
 
-@pytest.mark.parametrize("clust_type", ['kmeans', 'rena', 'average', 'complete', 'ward', 'ncut',
-                                        pytest.param('single', marks=pytest.mark.xfail)])
+@pytest.mark.parametrize("clust_type", ['kmeans', 'rena', 'average',
+                                        'complete', 'ward', 'ncut',
+                                        pytest.param('single',
+                                                     marks=pytest.mark.xfail)])
 # 1 connected component
 def test_ni_parcellate(clust_type):
     """
@@ -109,12 +116,16 @@ def test_ni_parcellate(clust_type):
     else:
         local_corr = 'tcorr'
     clust_mask = f"{base_dir}/miscellaneous/rMFG_node6mm.nii.gz"
-    mask = f"{base_dir}/BIDS/sub-25659/ses-1/anat/sub-25659_desc-brain_mask.nii.gz"
-    func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-MNI152NLin6Asym_desc-" \
+    mask = f"{base_dir}/BIDS/sub-25659/ses-1/anat/sub-25659_desc-brain_" \
+           f"mask.nii.gz"
+    func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_" \
+                f"task-rest_space-MNI152NLin6Asym_desc-" \
         f"smoothAROMAnonaggr_bold_short.nii.gz"
     func_img = nib.load(func_file)
-    nip = clustools.NiParcellate(func_file=func_file, clust_mask=clust_mask, k=k, clust_type=clust_type,
-                                 local_corr=local_corr, outdir=out_dir, conf=None, mask=mask)
+    nip = clustools.NiParcellate(func_file=func_file, clust_mask=clust_mask,
+                                 k=k, clust_type=clust_type,
+                                 local_corr=local_corr, outdir=out_dir,
+                                 conf=None, mask=mask)
     atlas = nip.create_clean_mask()
     nip.create_local_clustering(overwrite=True, r_thresh=0.4)
     out_path = f"{str(tmpdir.name)}/parc_tmp.nii.gz"
@@ -133,8 +144,10 @@ def test_ni_parcellate(clust_type):
 
 
 @pytest.mark.parametrize("clust_type", ['ward', 'ncut', 'kmeans', 'rena',
-                                        pytest.param('average', marks=pytest.mark.xfail),
-                                        pytest.param('complete', marks=pytest.mark.xfail)])
+                                        pytest.param('average',
+                                                     marks=pytest.mark.xfail),
+                                        pytest.param('complete',
+                                                     marks=pytest.mark.xfail)])
 # >1 connected components
 def test_ni_parcellate_mult_conn_comps(clust_type):
     """
diff --git a/tests/test_estimation.py b/tests/test_estimation.py
index 7b9479b3..d99dcc7e 100755
--- a/tests/test_estimation.py
+++ b/tests/test_estimation.py
@@ -30,8 +30,18 @@
 from pynets.dmri.estimation import (create_anisopowermap, tens_mod_fa_est,
                                     tens_mod_est, csa_mod_est, csd_mod_est,
                                     streams2graph, sfm_mod_est)
+from nilearn._utils import as_ndarray
+from nilearn.tests.test_signal import generate_signals
+from nilearn._utils.extmath import is_spd
+from numpy.testing import assert_array_almost_equal
 
 
+def generate_random_img(shape, length=1, affine=np.eye(4),
+                        rand_gen=np.random.RandomState(0)):
+    data = rand_gen.standard_normal(size=(shape + (length,)))
+    return nib.Nifti1Image(data, affine), nib.Nifti1Image(
+        as_ndarray(data[..., 0] > 0.2, dtype=np.int8), affine)
+
 # fMRI
 @pytest.mark.parametrize("conn_model_in",
     [
@@ -46,13 +56,13 @@
         pytest.param(None, marks=pytest.mark.xfail(raises=ValueError))
     ]
 )
-@pytest.mark.parametrize("time_series",
+@pytest.mark.parametrize("n_features",
     [
-        np.random.rand(5, 5),
-        pytest.param(np.ones((10, 10)), marks=pytest.mark.xfail)
+        50,
+        pytest.param(2, marks=pytest.mark.xfail)
     ]
 )
-def test_get_conn_matrix(conn_model_in, time_series):
+def test_get_conn_matrix(conn_model_in, n_features):
     """ Test computing a functional connectivity matrix."""
 
     network = 'Default'
@@ -66,6 +76,11 @@ def test_get_conn_matrix(conn_model_in, time_series):
     uatlas = None
     labels = [1, 2, 3]
 
+    time_series = generate_signals(n_features=n_features,
+                                            n_confounds=5,
+                                            length=n_features,
+                                            same_variance=False)[0]
+
     outs = get_conn_matrix(
         time_series,
         conn_model_in,
@@ -96,6 +111,17 @@ def test_get_conn_matrix(conn_model_in, time_series):
     assert np.shape(conn_matrix_out) == np.shape(time_series)
     assert conn_model_in == conn_model_out
 
+    if "corr" in conn_model_in:
+        assert (is_spd(conn_matrix_out, decimal=7))
+        d = np.sqrt(np.diag(np.diag(conn_matrix_out)))
+        assert_array_almost_equal(np.diag(conn_matrix_out),
+                                  np.ones((n_features)))
+    elif "partcorr" in conn_model_in:
+        prec = np.linalg.inv(conn_matrix_out)
+        d = np.sqrt(np.diag(np.diag(prec)))
+        assert_array_almost_equal(d.dot(conn_matrix_out).dot(d), -prec +
+                                  2 * np.diag(np.diag(prec)))
+
 
 def test_timeseries_bootstrap():
     """Test bootstrapping a sample of time series."""
@@ -214,10 +240,15 @@ def test_timseries_extraction_extract(conf):
     dir_path_tmp = tempfile.TemporaryDirectory()
     dir_path = dir_path_tmp.name
 
+    shape1 = (13, 11, 12)
+    affine1 = np.eye(4)
+    length = 30
+
+    func_img, mask_img = generate_random_img(shape1, affine=affine1,
+                                             length=length)
+
     func_file = tempfile.NamedTemporaryFile(mode='w+', suffix='.nii.gz')
-    img_data = np.random.rand(50, 50, 50, 20)
-    img = nib.Nifti1Image(img_data, np.eye(4))
-    img.to_filename(func_file.name)
+    func_img.to_filename(func_file.name)
 
     # Create a temp parcel file
     parcels_tmp = tempfile.NamedTemporaryFile(mode='w+', suffix='.nii.gz')
@@ -228,13 +259,12 @@ def test_timseries_extraction_extract(conf):
 
     # Create empty mask file
     mask_tmp = tempfile.NamedTemporaryFile(mode='w+', suffix='.nii.gz')
-    mask = np.zeros((50, 50, 50))
-    nib.Nifti1Image(parcels, np.eye(4)).to_filename(mask_tmp.name)
+    mask_img.to_filename(mask_tmp.name)
     mask = mask_tmp.name
 
     if conf:
         conf_file = tempfile.NamedTemporaryFile(mode='w+', suffix='.tsv')
-        conf_mat = np.random.rand(20)
+        conf_mat = np.random.rand(length)
         conf_df = pd.DataFrame({'Conf1': conf_mat, "Conf2": [np.nan]*len(conf_mat)})
         conf_df.to_csv(conf_file.name, sep='\t', index=False)
         conf = conf_file.name
@@ -261,7 +291,7 @@ def test_timseries_extraction_extract(conf):
 
     # Test parc extraction
     te.extract_ts_parc()
-    assert np.shape(te.ts_within_nodes) == (np.shape(img_data)[-1], len(np.unique(parcels)) - 1)
+    assert np.shape(te.ts_within_nodes) == (np.shape(func_img)[-1] - 5, len(np.unique(parcels)) - 1)
 
     # Test save and clean up
     te._mask_path = te._mask_img
diff --git a/tests/test_netstats.py b/tests/test_netstats.py
index f8b86ba5..9ce6c703 100644
--- a/tests/test_netstats.py
+++ b/tests/test_netstats.py
@@ -16,6 +16,70 @@
 logger.setLevel(50)
 
 
+@pytest.mark.parametrize("value", [True, 2, 3.14, "word", {}])
+def test_get_prop_type(value):
+    """
+    Test for get_prop_type() functionality
+    """
+    start_time = time.time()
+    tname, value, key = netstats.get_prop_type(value)
+    if value == 2:
+        value = int(value)
+    print("%s%s%s" % ('thresh_and_fit (Functional, proportional thresholding) --> finished: ',
+                      np.round(time.time() - start_time, 1), 's'))
+
+    if type(value) == bool:
+        assert tname is 'bool'
+
+    elif type(value) == float or type(value) == int:
+        assert tname is 'float'
+
+    elif type(value) == dict:
+        assert tname is 'object'
+
+    elif type(value) == bytes:
+        assert tname is 'string'
+
+
+def test_nx2gt():
+    """
+    Test for nx2gt() functionality
+    """
+    base_dir = str(Path(__file__).parent/"examples")
+    in_mat = np.load(f"{base_dir}/miscellaneous/graphs/002_modality-func_rsn-Default_model-cov_nodetype-spheres-2mm_smooth-2fwhm_hpass-0.1Hz_thrtype-PROP_thr-0.95.npy")
+    nxG = nx.from_numpy_array(in_mat)
+
+    start_time = time.time()
+    gtG = netstats.nx2gt(nxG)
+    print("%s%s%s" % ('thresh_and_fit (Functional, proportional thresholding) --> finished: ',
+                      np.round(time.time() - start_time, 1), 's'))
+    try:
+        import graph_tool.all as gt
+        assert type(gtG) is gt.graph_tool.Graph
+    except ImportError as e:
+        print(e, "graph_tool not installed!")
+        assert gtG is not None
+
+
+def test_np2gt():
+    """
+    Test for np2gt() functionality
+    """
+    base_dir = str(Path(__file__).parent/"examples")
+    in_mat = np.load(f"{base_dir}/miscellaneous/graphs/002_modality-func_rsn-Default_model-cov_nodetype-spheres-2mm_smooth-2fwhm_hpass-0.1Hz_thrtype-PROP_thr-0.95.npy")
+
+    start_time = time.time()
+    Gt = netstats.np2gt(in_mat)
+    print("%s%s%s" % ('thresh_and_fit (Functional, proportional thresholding) --> finished: ',
+                      np.round(time.time() - start_time, 1), 's'))
+    try:
+        import graph_tool.all as gt
+        assert type(Gt) is gt.graph_tool.Graph
+    except ImportError as e:
+        print(e, "graph_tool not installed!")
+        assert Gt is not None
+
+
 def test_average_shortest_path_length_for_all():
     """
     Test for average_shortest_path_length_for_all functionality
@@ -63,7 +127,8 @@ def test_create_communities():
                       np.round(time.time() - start_time, 1), 's'))
     assert len(com_assign) > 0
 
-@pytest.mark.parametrize("degree", ['in', 'out'])
+    
+@pytest.mark.parametrize("degree", ['undirected', 'in', 'out'])
 def test_participation_coef(degree):
     """
     Test for participation_coef functionality
@@ -75,7 +140,7 @@ def test_participation_coef(degree):
     W = np.random.rand(ci_dim, ci_dim)
 
     start_time = time.time()
-    P = netstats.participation_coef(W, ci, degree='undirected')
+    P = netstats.participation_coef(W, ci, degree=degree)
     print("%s%s%s" % ('thresh_and_fit (Functional, proportional thresholding) --> finished: ',
                       str(np.round(time.time() - start_time, 1)), 's'))
     assert P.size > 0
@@ -136,6 +201,7 @@ def test_link_communities(clustering):
     assert type(M) is np.ndarray
     assert np.sum(M) == 24
 
+    
 @pytest.mark.parametrize("connected_case", [True, False])
 @pytest.mark.parametrize("fallback_lcc", [True, False])
 def test_prune_disconnected(connected_case, fallback_lcc):
@@ -151,7 +217,7 @@ def test_prune_disconnected(connected_case, fallback_lcc):
         G.add_edge(1, 2)
         G.add_node(3)
     start_time = time.time()
-    [G_out, pruned_nodes] = netstats.prune_disconnected(G)
+    [G_out, pruned_nodes] = netstats.prune_disconnected(G, fallback_lcc = fallback_lcc)
     print("%s%s%s" % ('Pruning disconnected test --> finished: ',
                       str(np.round(time.time() - start_time, 1)), 's'))
     assert type(G_out) is nx.Graph
@@ -162,7 +228,8 @@ def test_prune_disconnected(connected_case, fallback_lcc):
         assert len(pruned_nodes) > 0
         assert len(list(G_out.nodes())) < len(list(G.nodes()))
 
-@pytest.mark.parametrize("method", ["betweenness", "coreness", "richclub", "eigenvector"])
+        
+@pytest.mark.parametrize("method", ["betweenness", "richclub", "coreness", "eigenvector"])
 def test_most_important(method):
     """
     Test pruning for most important nodes functionality
@@ -172,9 +239,10 @@ def test_most_important(method):
     G = nx.from_numpy_array(in_mat)
 
     start_time = time.time()
-    [Gt, pruned_nodes] = netstats.most_important(G)
+    Gt, pruned_nodes = netstats.most_important(G, method=method)
     print("%s%s%s" % ('thresh_and_fit (Functional, proportional thresholding) --> finished: ',
                       str(np.round(time.time() - start_time, 1)), 's'))
+
     assert Gt is not None
     assert pruned_nodes is not None
 
@@ -182,7 +250,8 @@ def test_most_important(method):
 @pytest.mark.parametrize("binary", ['True', 'False'])
 @pytest.mark.parametrize("prune", ['0', '1', '2'])
 @pytest.mark.parametrize("norm", ['0', '1', '2', '3', '4', '5', '6'])
-def test_extractnetstats(binary, prune, norm):
+@pytest.mark.parametrize("conn_model", ['corr', 'cov', 'sps', 'partcorr'])
+def test_extractnetstats(binary, prune, norm, conn_model):
     """
     Test extractnetstats functionality
     """
@@ -190,7 +259,7 @@ def test_extractnetstats(binary, prune, norm):
     ID = '002'
     network = 'Default'
     thr = 0.95
-    conn_model = 'cov'
+    #conn_model = 'cov'
     est_path = f"{base_dir}/miscellaneous/sub-0021001_rsn-Default_nodetype-parc_model-sps_template-MNI152_T1_thrtype-DENS_thr-0.19.npy"
     #prune = 1
     #norm = 1
@@ -227,21 +296,19 @@ def test_raw_mets():
     Test raw_mets extraction functionality
     """
     from pynets.stats.netstats import global_efficiency, average_local_efficiency
-    from networkx.algorithms import degree_assortativity_coefficient, average_clustering, \
-        average_shortest_path_length, degree_pearson_correlation_coefficient, graph_number_of_cliques, transitivity, \
-        sigma
+    from networkx.algorithms import degree_assortativity_coefficient, average_clustering, average_shortest_path_length, degree_pearson_correlation_coefficient, graph_number_of_cliques, transitivity, sigma
     base_dir = str(Path(__file__).parent/"examples")
     est_path = f"{base_dir}/miscellaneous/sub-0021001_rsn-Default_nodetype-parc_model-sps_template-MNI152_T1_thrtype-DENS_thr-0.19.npy"
     in_mat = np.load(est_path)
     G = nx.from_numpy_array(in_mat)
     [G, _] = netstats.prune_disconnected(G)
-    metric_list_glob = [global_efficiency, average_local_efficiency, degree_assortativity_coefficient,
-                        average_clustering, average_shortest_path_length, degree_pearson_correlation_coefficient,
+    metric_list_glob = [global_efficiency, average_local_efficiency, 
+                        degree_assortativity_coefficient,
+                        average_clustering, average_shortest_path_length, 
+                        degree_pearson_correlation_coefficient,
                         graph_number_of_cliques, transitivity]
     for i in metric_list_glob:
         net_met_val = netstats.raw_mets(G, i, engine='nx')
-        print(i)
-        print(net_met_val)
         assert net_met_val is not np.nan
         assert type(net_met_val) == float
 
@@ -285,7 +352,9 @@ def test_smallworldness(approach, reference):
     in_mat = np.load(est_path)
     G = nx.from_numpy_array(in_mat)
 
-    sigma = netstats.smallworldness(G, niter=5, nrand=5, approach=approach, reference=reference, engine='nx')
+    sigma = netstats.smallworldness(G, niter=5, nrand=5, 
+                                    approach=approach, 
+                                    reference=reference, engine='nx')
 
     # A network is smallworld if sigma > 1
     assert sigma < 1
@@ -305,8 +374,7 @@ def test_participation_coef_sign():
 
     Ppos, Pneg = netstats.participation_coef_sign(W, ci)
 
-    assert len(Ppos) == ci_dim
-    assert len(Pneg) == ci_dim
+    assert len(Ppos) == ci_dim and len(Pneg) == ci_dim
 
 
 @pytest.mark.parametrize("binarize", [True, False])
@@ -322,17 +390,20 @@ def test_weighted_transitivity(binarize):
     if binarize:
         in_mat = binarize(in_mat)
 
+
     G = nx.from_numpy_array(in_mat)
 
     transitivity = netstats.weighted_transitivity(G)
 
-    assert transitivity <= 3
-    assert transitivity >= 0
+    assert transitivity <= 3 and transitivity >= 0
 
 
 @pytest.mark.parametrize("fmt", ['npy', 'txt'])
-@pytest.mark.parametrize("conn_model", ['corr', 'partcorr', 'cov', 'sps'])
-@pytest.mark.parametrize("prune", [pytest.param(0, marks=pytest.mark.xfail(raises=UnboundLocalError)), 1, 2, 3])
+@pytest.mark.parametrize("conn_model", 
+                         ['corr', 'partcorr', 'cov', 'sps'])
+@pytest.mark.parametrize("prune", 
+                         [pytest.param(0, 
+                                       marks=pytest.mark.xfail(raises=UnboundLocalError)), 1, 2, 3])
 @pytest.mark.parametrize("norm", [i for i in range(1, 7)])
 def test_clean_graphs(fmt, conn_model, prune, norm):
     #test_CleanGraphs
@@ -410,8 +481,7 @@ def test_community_resolution_selection(sim_num_comms, sim_size):
     assert num_comms == sim_num_comms
     assert resolution is not None
 
-
-#@pytest.mark.parametrize("metric", ['rich_club_coeff'])
+    
 @pytest.mark.parametrize("metric", ['participation', 'diversity', 'local_efficiency',
                                     'comm_centrality', 'rich_club_coeff'])
 def test_get_metrics(metric):
@@ -465,6 +535,7 @@ def test_get_metrics(metric):
                                        2])
 def test_collect_pandas_df_make(plot_switch, sql_out, embed, create_summary, graph_num):
     """
+    Test for collect_pandas_df_make() functionality
     """
     base_dir = str(Path(__file__).parent/"examples")
     network = None
@@ -480,7 +551,7 @@ def test_collect_pandas_df_make(plot_switch, sql_out, embed, create_summary, gra
         net_mets_csv_list = [f"{base_dir}/topology/metrics_sub-0021001_modality-dwi_nodetype-parc_model-csa_thrtype-PROP_thr-0.2.csv",
                              f"{base_dir}/topology/metrics_sub-0021001_modality-dwi_nodetype-parc_model-csa_thrtype-PROP_thr-0.3.csv"]
 
-    combination_complete = netstats.collect_pandas_df_make(net_mets_csv_list, ID, network, plot_switch,
+    combination_complete = netstats.collect_pandas_df_make(net_mets_csv_list, ID, network, plot_switch=plot_switch,
                                                            embed=embed, create_summary=create_summary,
                                                            sql_out=sql_out)
 
diff --git a/tests/test_nodemaker.py b/tests/test_nodemaker.py
index 9b040e34..1eebc345 100755
--- a/tests/test_nodemaker.py
+++ b/tests/test_nodemaker.py
@@ -10,9 +10,7 @@
 import numpy as np
 import time
 import nibabel as nib
-import sys
-if sys.platform.startswith('win') is False:
-    import indexed_gzip
+import os
 from pathlib import Path
 from pynets.core import nodemaker
 try:
@@ -25,15 +23,28 @@
 logger.setLevel(50)
 
 
-# @pytest.mark.parametrize("atlas", ['atlas_aal', 'atlas_talairach_gyrus', 'atlas_talairach_ba', 'atlas_talairach_lobe',
-#                                    'atlas_harvard_oxford', 'atlas_destrieux_2009'])
-# def test_nilearn_atlas_helper(atlas):
-#     parc = False
-#     [labels, networks_list, parlistfile] = nodemaker.nilearn_atlas_helper(atlas, parc)
-#     print(labels)
-#     print(networks_list)
-#     print(parlistfile)
-#     assert labels is not None
+@pytest.mark.parametrize("atlas", ['atlas_aal', 'atlas_talairach_gyrus',
+                                   'atlas_talairach_ba',
+                                   'atlas_talairach_lobe',
+                                   'atlas_harvard_oxford',
+                                   'atlas_destrieux_2009'])
+def test_nilearn_atlas_helper(atlas):
+    parc = False
+    [labels, networks_list, parlistfile] = \
+        nodemaker.nilearn_atlas_helper(atlas, parc)
+    print(labels)
+    print(networks_list)
+    print(parlistfile)
+    assert labels is not None
+    if (parlistfile is not None) and isinstance(labels[0], str) and \
+        isinstance(parlistfile, str) and (atlas != 'atlas_aal') and \
+        os.path.isfile(parlistfile):
+        parcel_data = nib.load(parlistfile).get_fdata()
+        assert len(labels) == len(np.unique(parcel_data)) or \
+               len(labels) == len(np.unique(parcel_data)) - 1 or \
+               len(labels)-1 == len(np.unique(parcel_data)) or \
+               float(2*len(labels)) == float(len(np.unique(parcel_data)) - 1) \
+               or float(2*(len(labels))-1) == len(np.unique(parcel_data))
 
 
 def test_nodemaker_tools_parlistfile_RSN():
@@ -272,7 +283,6 @@ def test_nodemaker_tools_masking_parlistfile_WB():
 
     start_time = time.time()
 
-    parcels_map_nifti_image = nib.load(parlistfile)
     WB_parcel_list = nodemaker.gen_img_list(parlistfile)
 
     start_time = time.time()
@@ -291,16 +301,20 @@ def test_nodemaker_tools_masking_parlistfile_WB():
     start_time = time.time()
     WB_parcel_list = nodemaker.gen_img_list(parlistfile)
     [WB_net_parcels_map_nifti_masked, WB_coords_masked, WB_labels_masked,
-     _, _, _] = nodemaker.node_gen_masking(roi, WB_coords, WB_parcel_list, WB_labels, dir_path, ID, parc, atlas,
-                                           parlistfile, vox_size='2mm')
+     _, _, _] = nodemaker.node_gen_masking(roi, WB_coords, WB_parcel_list,
+                                           WB_labels, dir_path, ID, parc,
+                                           atlas, parlistfile, vox_size='2mm')
 
     WB_parcel_list = nodemaker.gen_img_list(parlistfile)
-    [_, _, WB_parcel_list_masked] = nodemaker.parcel_masker(roi, WB_coords, WB_parcel_list, WB_labels,
-                                                            dir_path, ID, perc_overlap, vox_size='2mm')
-    print("%s%s%s" % ('parcel_masker (Masking whole-brain version) --> finished: ',
+    [_, _, WB_parcel_list_masked] = nodemaker.parcel_masker(
+        roi, WB_coords, WB_parcel_list, WB_labels, dir_path, ID,
+        perc_overlap, vox_size='2mm')
+    print("%s%s%s" % ('parcel_masker (Masking whole-brain version) --> '
+                      'finished: ',
     np.round(time.time() - start_time, 1), 's'))
 
-    print("%s%s%s" % ('node_gen_masking (Masking whole-brain version) --> finished: ',
+    print("%s%s%s" % ('node_gen_masking (Masking whole-brain version) --> '
+                      'finished: ',
                       np.round(time.time() - start_time, 1), 's'))
 
     assert WB_coords is not None
@@ -317,7 +331,8 @@ def test_nodemaker_tools_masking_parlistfile_WB():
     assert WB_coords_masked is not None
 
 
-@pytest.mark.parametrize("atlas", ['coords_dosenbach_2010', 'coords_power_2011'])
+@pytest.mark.parametrize("atlas", ['coords_dosenbach_2010',
+                                   'coords_power_2011'])
 def test_nodemaker_tools_masking_coords_WB(atlas):
     """
     Test nodemaker_tools_masking_coords_WB functionality
@@ -329,12 +344,15 @@ def test_nodemaker_tools_masking_coords_WB(atlas):
 
     start_time = time.time()
     [WB_coords, _, _, WB_labels] = nodemaker.fetch_nilearn_atlas_coords(atlas)
-    print("%s%s%s" % ('fetch_nilearn_atlas_coords (Masking whole-brain coords version) --> finished: ',
+    print("%s%s%s" % ('fetch_nilearn_atlas_coords (Masking whole-brain '
+                      'coords version) --> finished: ',
                       str(np.round(time.time() - start_time, 1)), 's'))
 
     start_time = time.time()
-    [WB_coords_masked, WB_labels_masked] = nodemaker.coords_masker(roi, WB_coords, WB_labels, error)
-    print("%s%s%s" % ('coords_masker (Masking whole-brain coords version) --> finished: ',
+    [WB_coords_masked, WB_labels_masked] = nodemaker.coords_masker(
+        roi, WB_coords, WB_labels, error)
+    print("%s%s%s" % ('coords_masker (Masking whole-brain coords version) '
+                      '--> finished: ',
                       str(np.round(time.time() - start_time, 1)), 's'))
 
     assert WB_coords is not None
@@ -344,131 +362,17 @@ def test_nodemaker_tools_masking_coords_WB(atlas):
     assert WB_labels_masked is not None
 
 
-# def test_WB_fetch_nodes_and_labels1():
-#     """
-#     Test WB_fetch_nodes_and_labels1 functionality
-#     """
-#     # Set example inputs
-#     base_dir = str(Path(__file__).parent/"examples")
-#     func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-T1w_desc-preproc_bold.nii.gz"
-#     dir_path = f"{base_dir}/BIDS/sub-25659/ses-1/func"
-#     parlistfile = f"{base_dir}/miscellaneous/whole_brain_cluster_labels_PCA200.nii.gz"
-#     atlas = 'whole_brain_cluster_labels_PCA200'
-#     use_AAL_naming = True
-#     ref_txt = None
-#     parc = True
-#     vox_size = '2mm'
-#
-#     start_time = time.time()
-#     [_, coords, atlas_name, _, parcel_list, par_max, parlistfile,
-#      dir_path] = nodemaker.fetch_nodes_and_labels(atlas, parlistfile, ref_txt, parc, func_file, use_AAL_naming,
-#                                                   dir_path, vox_size)
-#     print("%s%s%s" % ('WB_fetch_nodes_and_labels (Parcel Nodes) --> finished: ',
-#     str(np.round(time.time() - start_time, 1)), 's'))
-#
-#     assert parlistfile is not None
-#     assert par_max is not None
-#     assert parcel_list is not None
-#     assert atlas_name is not None
-#     assert coords is not None
-#     assert dir_path is not None
-#
-#
-# def test_WB_fetch_nodes_and_labels2():
-#     """
-#     Test WB_fetch_nodes_and_labels2 functionality
-#     """
-#     # Set example inputs
-#     base_dir = str(Path(__file__).parent/"examples")
-#     func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-T1w_desc-preproc_bold.nii.gz"
-#     dir_path = f"{base_dir}/BIDS/sub-25659/ses-1/func"
-#     parlistfile = f"{base_dir}/miscellaneous/whole_brain_cluster_labels_PCA200.nii.gz"
-#     atlas = 'whole_brain_cluster_labels_PCA200'
-#     ref_txt = None
-#     parc = False
-#     use_AAL_naming = True
-#     vox_size = '2mm'
-#
-#     start_time = time.time()
-#     [_, coords, atlas_name, _, _, par_max, parlistfile,
-#      _] = nodemaker.fetch_nodes_and_labels(atlas, parlistfile, ref_txt, parc, func_file, use_AAL_naming, dir_path,
-#                                            vox_size)
-#     print("%s%s%s" % ('WB_fetch_nodes_and_labels (Spherical Nodes) --> finished: ',
-#     str(np.round(time.time() - start_time, 1)), 's'))
-#
-#     assert parlistfile is not None
-#     assert par_max is not None
-#     assert atlas_name is not None
-#     assert coords is not None
-#
-#
-# def test_RSN_fetch_nodes_and_labels1():
-#     """
-#     Test RSN_fetch_nodes_and_labels1 functionality
-#     """
-#     # Set example inputs
-#     base_dir = str(Path(__file__).parent/"examples")
-#     func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-T1w_desc-preproc_bold.nii.gz"
-#     dir_path = f"{base_dir}/BIDS/sub-25659/ses-1/func"
-#     parlistfile = f"{base_dir}/miscellaneous/whole_brain_cluster_labels_PCA200.nii.gz"
-#     atlas = 'whole_brain_cluster_labels_PCA200'
-#     ref_txt = None
-#     parc = True
-#     use_AAL_naming = True
-#     vox_size = '2mm'
-#
-#     start_time = time.time()
-#     [RSN_labels, RSN_coords, atlas_name, _, parcel_list, par_max,
-#      parlistfile, _] = nodemaker.fetch_nodes_and_labels(atlas, parlistfile, ref_txt, parc,
-#                                                         func_file, use_AAL_naming, dir_path, vox_size)
-#     print("%s%s%s" % ('RSN_fetch_nodes_and_labels (Parcel Nodes) --> finished: ',
-#                       str(np.round(time.time() - start_time, 1)), 's'))
-#
-#     assert parlistfile is not None
-#     assert par_max is not None
-#     assert parcel_list is not None
-#     assert atlas_name is not None
-#     assert RSN_coords is not None
-#     assert RSN_labels is not None
-#
-#
-# def test_RSN_fetch_nodes_and_labels2():
-#     """
-#     Test RSN_fetch_nodes_and_labels2 functionality
-#     """
-#     # Set example inputs
-#     base_dir = str(Path(__file__).parent/"examples")
-#     func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-T1w_desc-preproc_bold.nii.gz"
-#     dir_path = f"{base_dir}/BIDS/sub-25659/ses-1/func"
-#     parlistfile = f"{base_dir}/miscellaneous/whole_brain_cluster_labels_PCA200.nii.gz"
-#     atlas = 'whole_brain_cluster_labels_PCA200'
-#     ref_txt = None
-#     parc = False
-#     use_AAL_naming = True
-#     vox_size = '2mm'
-#
-#     start_time = time.time()
-#     [RSN_labels, RSN_coords, atlas_name, _, _,
-#      par_max, parlistfile, _] = nodemaker.fetch_nodes_and_labels(atlas, parlistfile, ref_txt, parc, func_file,
-#                                                                  use_AAL_naming, dir_path, vox_size)
-#     print("%s%s%s" % ('RSN_fetch_nodes_and_labels (Spherical Nodes) --> finished: ',
-#                       str(np.round(time.time() - start_time, 1)), 's'))
-#
-#     assert parlistfile is not None
-#     assert par_max is not None
-#     assert atlas_name is not None
-#     assert RSN_coords is not None
-#     assert RSN_labels is not None
-
-
 def test_create_spherical_roi_volumes():
     """
     Test create_spherical_roi_volumes functionality
     """
     import pkg_resources
     node_size = 2
-    template_mask = pkg_resources.resource_filename("pynets", "templates/MNI152_T1_brain_mask_2mm.nii.gz")
-    [parcel_list, _, _, _] = nodemaker.create_spherical_roi_volumes(node_size, [(0, 0, 0), (5, 5, 5)], template_mask)
+    template_mask = pkg_resources.resource_filename("pynets",
+                                                    "templates/MNI152_T1_"
+                                                    "brain_mask_2mm.nii.gz")
+    [parcel_list, _, _, _] = nodemaker.create_spherical_roi_volumes(
+        node_size, [(0, 0, 0), (5, 5, 5)], template_mask)
     assert len([i for i in parcel_list]) > 0
 
 
@@ -477,14 +381,17 @@ def test_get_sphere():
     Test get_sphere functionality
     """
     base_dir = str(Path(__file__).parent/"examples")
-    img_file = f"{base_dir}/BIDS/sub-25659/ses-1/anat/sub-25659_desc-brain_mask.nii.gz"
+    img_file = f"{base_dir}/BIDS/sub-25659/ses-1/anat/sub-25659_desc-brain_" \
+               f"mask.nii.gz"
     img = nib.load(img_file)
     r = 4
     vox_dims = (2.0, 2.0, 2.0)
-    coords = [[0, 0, 0], [-5, -5, -5], [5, 5, 5], [-10, -10, -10], [10, 10, 10]]
+    coords = [[0, 0, 0], [-5, -5, -5], [5, 5, 5], [-10, -10, -10],
+              [10, 10, 10]]
     neighbors = []
     for coord in coords:
-        neighbors.append(nodemaker.get_sphere(coord, r, vox_dims, img.shape[0:3]))
+        neighbors.append(nodemaker.get_sphere(coord, r, vox_dims,
+                                              img.shape[0:3]))
     neighbors = [i for i in neighbors if len(i) > 0]
     assert len(neighbors) == 3
 
@@ -493,14 +400,16 @@ def test_parcel_naming():
     """
     Test parcel_namiing functionality
     """
-    coords = [[0, 0, 0], [-5, -5, -5], [5, 5, 5], [-10, -10, -10], [10, 10, 10]]
+    coords = [(0, 0, 0), (-5, -5, -5), (5, 5, 5), (-10, -10, -10),
+              (10, 10, 10)]
     labels = nodemaker.parcel_naming(coords, vox_size='2mm')
     assert len(coords) == len(labels)
 
 
 def test_enforce_hem_distinct_consecutive_labels():
     base_dir = str(Path(__file__).parent/"examples")
-    parlistfile = f"{base_dir}/miscellaneous/whole_brain_cluster_labels_PCA200.nii.gz"
+    parlistfile = f"{base_dir}/miscellaneous/whole_brain_cluster_labels_" \
+                  f"PCA200.nii.gz"
     uatlas = nodemaker.enforce_hem_distinct_consecutive_labels(parlistfile)[0]
     uatlas_img = nib.load(uatlas)
     parcels_uatlas = len(np.unique(uatlas_img.get_fdata())) - 1
@@ -512,7 +421,8 @@ def test_drop_coords_labels_from_restricted_parcellation():
     from nipype.utils.filemanip import copyfile
 
     base_dir = str(Path(__file__).parent/"examples")
-    parlistfile = f"{base_dir}/miscellaneous/whole_brain_cluster_labels_PCA200.nii.gz"
+    parlistfile = f"{base_dir}/miscellaneous/whole_brain_cluster_labels_" \
+                  f"PCA200.nii.gz"
 
     [coords, _, _, label_intensities] = \
         nodemaker.get_names_and_coords_of_parcels(parlistfile)
@@ -577,10 +487,13 @@ def test_mask_roi():
     Test mask_roi functionality
     """
     import pkg_resources
-    mask = pkg_resources.resource_filename("pynets", "templates/MNI152_T1_brain_mask_2mm.nii.gz")
+    mask = pkg_resources.resource_filename("pynets",
+                                           "templates/MNI152_T1_brain_mask_"
+                                           "2mm.nii.gz")
     base_dir = str(Path(__file__).parent/"examples")
     dir_path = f"{base_dir}/BIDS/sub-25659/ses-1/func"
-    func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-T1w_desc-preproc_bold.nii.gz"
+    func_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_" \
+                f"task-rest_space-T1w_desc-preproc_bold.nii.gz"
     roi = f"{base_dir}/miscellaneous/pDMN_3_bin.nii.gz"
     roi_masked = nodemaker.mask_roi(dir_path, roi, mask, func_file)
     assert roi_masked is not None
diff --git a/tests/test_plotting.py b/tests/test_plotting.py
index 8c3a7dfc..311854ff 100755
--- a/tests/test_plotting.py
+++ b/tests/test_plotting.py
@@ -167,44 +167,6 @@ def test_plot_all_nonet_with_mask(plotting_data):
     temp_dir.cleanup()
 
 
-@pytest.mark.parametrize("comm, network",
-    [
-        pytest.param('nodes', 'Default'),
-        pytest.param('links', None),
-        pytest.param(None, None)
-    ]
-)
-def test_plot_connectogram(comm, network, plotting_data):
-    """
-    Test plot_connectogram functionality
-    """
-
-    temp_dir = tempfile.TemporaryDirectory()
-    dir_path = str(temp_dir.name)
-
-    ID = '002'
-    conn_model = 'sps'
-    atlas = 'whole_brain_cluster_labels_PCA200'
-    prune = 2
-
-    conn_matrix = plotting_data['conn_matrix']
-    labels = np.arange(conn_matrix.shape[0] + 1)[np.arange(conn_matrix.shape[0] + 1) != 0].tolist()
-
-    # Force an isolate in the matrix
-    conn_matrix[:, 0] = 0
-    conn_matrix[0, :] = 0
-
-    start_time = time.time()
-    plot_gen.plot_connectogram(conn_matrix, conn_model, atlas, dir_path, ID, network, labels,
-                               comm=comm, prune=prune)
-    print("%s%s%s" % ('plot_connectogram --> finished: ', str(np.round(time.time() - start_time, 1)), 's'))
-
-    if comm:
-        assert os.path.isfile(f"{dir_path}/index.html")
-
-    temp_dir.cleanup()
-
-
 @pytest.mark.parametrize("network", ["Default", None])
 def test_plot_timeseries(plotting_data, network):
     """
diff --git a/tests/test_reg_utils.py b/tests/test_reg_utils.py
index 7825150c..9aca7907 100644
--- a/tests/test_reg_utils.py
+++ b/tests/test_reg_utils.py
@@ -33,11 +33,14 @@ def test_align():
     base_dir = str(Path(__file__).parent/"examples")
     anat_dir = f"{base_dir}/003/anat"
     inp = f"{anat_dir}/sub-003_T1w_brain.nii.gz"
-    ref = pkg_resources.resource_filename("pynets", f"templates/MNI152_T1_brain_2mm.nii.gz")
+    ref = pkg_resources.resource_filename("pynets",
+                                          f"templates/MNI152_T1_brain_"
+                                          f"2mm.nii.gz")
     out = f"{anat_dir}/highres2standard.nii.gz"
     xfm_out = f"{anat_dir}/highres2standard.mat"
 
-    utils.align(inp, ref, xfm=xfm_out, out=out, dof=12, searchrad=True, bins=256, interp=None, cost="mutualinfo",
+    utils.align(inp, ref, xfm=xfm_out, out=out, dof=12, searchrad=True,
+                bins=256, interp=None, cost="mutualinfo",
                 sch=None, wmseg=None, init=None)
 
     highres2standard_linear = nib.load(out)
@@ -93,13 +96,16 @@ def test_align_nonlinear():
     base_dir = str(Path(__file__).parent/"examples")
     anat_dir = f"{base_dir}/003/anat"
     inp = f"{anat_dir}/sub-003_T1w.nii.gz"
-    ref = pkg_resources.resource_filename("pynets", f"templates/MNI152_T1_brain_2mm.nii.gz")
+    ref = pkg_resources.resource_filename("pynets",
+                                          f"templates/"
+                                          f"MNI152_T1_brain_2mm.nii.gz")
     out = f"{anat_dir}/highres2standard_nonlinear.nii.gz"
     warp = f"{anat_dir}/highres2standard_warp"
     # affine mat created from test_align above.
     xfm = f"{anat_dir}/highres2standard.mat"
 
-    utils.align_nonlinear(inp, ref, xfm, out, warp, ref_mask=None, in_mask=None, config=None)
+    utils.align_nonlinear(inp, ref, xfm, out, warp, ref_mask=None,
+                          in_mask=None, config=None)
 
     highres2standard_nonlin = nib.load(out)
     assert highres2standard_nonlin is not None
@@ -134,16 +140,20 @@ def test_invwarp():
 
 def test_apply_warp():
     import pkg_resources
-    # Warp original anat to standard space using warp img (had to invwarp first) and linear mats
+    # Warp original anat to standard space using warp img (had to
+    # invwarp first) and linear mats
     base_dir = str(Path(__file__).parent/"examples")
     anat_dir = f"{base_dir}/003/anat"
-    ref = pkg_resources.resource_filename("pynets", f"templates/MNI152_T1_brain_2mm.nii.gz")
+    ref = pkg_resources.resource_filename("pynets",
+                                          f"templates/MNI152_T1_brain_"
+                                          f"2mm.nii.gz")
     inp = f"{anat_dir}/sub-003_T1w.nii.gz"
     out = f"{anat_dir}/highres2standard_test_apply_warp.nii.gz"
     warp = f"{anat_dir}/highres2standard_warp.nii.gz"
     xfm = f"{anat_dir}/highres2standard.mat"
 
-    utils.apply_warp(ref, inp, out, warp, xfm=xfm, mask=None, interp=None, sup=False)
+    utils.apply_warp(ref, inp, out, warp, xfm=xfm, mask=None, interp=None,
+                     sup=False)
     # highres2standard_apply_warp = f"{anat_dir}/highres2standard_test_apply_warp.nii.gz"
     # highres2standard_apply_warp = nib.load(highres2standard_apply_warp)
     # highres2standard_apply_warp = highres2standard_apply_warp.get_data()
@@ -356,9 +366,59 @@ def test_check_orient_and_dims():
 
 
 def test_make_median_b0():
-
     base_dir = str(Path(__file__).parent/"examples")
-    dwi_file = f"{base_dir}/BIDS/sub-25659/ses-1/dwi/final_preprocessed_dwi.nii.gz"
+    dwi_file = f"{base_dir}/BIDS/sub-25659/ses-1/dwi/final_preprocessed_" \
+               f"dwi.nii.gz"
     mean_file_out = utils.median(dwi_file)
 
     assert os.path.isfile(mean_file_out)
+
+
+def test_gen_mask():
+    base_dir = str(Path(__file__).parent/"examples")
+    t1w_head = f"{base_dir}/003/anat/sub-003_T1w.nii.gz"
+    t1w_brain = f"{base_dir}/003/anat/t1w_brain.nii.gz"
+    mask = f"{base_dir}/003/anat/t1w_brain_mask.nii.gz"
+    utils.gen_mask(t1w_head, t1w_brain, mask)
+
+
+def test_deep_skull_strip():
+    base_dir = str(Path(__file__).parent/"examples")
+    t1w_head = f"{base_dir}/003/anat/sub-003_T1w.nii.gz"
+    img = nib.load(t1w_head)
+    t1w_brain_mask = f"{base_dir}/003/anat/t1w_brain_mask.nii.gz"
+    t1w_data = img.get_fdata()
+    t1w_brain_mask = utils.deep_skull_strip(t1w_data, t1w_brain_mask, img)
+
+    assert os.path.isfile(t1w_brain_mask)
+
+
+def test_rescale_affine_to_center():
+    base_dir = str(Path(__file__).parent/"examples")
+
+    input_affine = nib.load(f"{base_dir}/003/anat/sub-003_T1w.nii.gz").affine
+
+    out_aff = utils.rescale_affine_to_center(input_affine)
+    assert np.allclose(out_aff, input_affine)
+
+    out_aff = utils.rescale_affine_to_center(input_affine,
+                                             voxel_dims=[2, 2, 2])
+    assert np.allclose(out_aff, input_affine* np.array([2, 2, 2, 1]))
+
+
+def test_wm_syn():
+    from dipy.align import imwarp, imaffine
+
+    base_dir = str(Path(__file__).parent/"examples")
+    t1w_brain = f"{base_dir}/003/anat/t1w_brain.nii.gz"
+    fa_path = f"{base_dir}/003/anat/tensor_fa.nii.gz"
+    ap_path = f"{base_dir}/003/anat/aniso_power_tmp.nii.gz"
+
+    [mapping, affine_map, warped_fa] = utils.wm_syn(t1w_brain, ap_path,
+                                                    f"{base_dir}/003/dmri",
+                                                    fa_path,
+                                                    template_fa_path=None)
+    assert os.path.isfile(warped_fa) is True
+    assert isinstance(mapping, imwarp.DiffeomorphicMap)
+    assert isinstance(affine_map, imaffine.AffineMap) and \
+           affine_map.affine.shape == (4, 4)
diff --git a/tests/test_utils.py b/tests/test_utils.py
index c0d4dfba..aafa7592 100755
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -36,11 +36,13 @@ def test_save_coords_and_labels_to_json():
     coord_file_path = f"{base_dir}/miscellaneous/Default_func_coords_wb.pkl"
     coord_file = open(coord_file_path, 'rb')
     coords = pickle.load(coord_file)
-    labels_file_path = f"{base_dir}/miscellaneous/Default_func_labelnames_wb.pkl"
+    labels_file_path = f"{base_dir}/miscellaneous/Default_func_labelnames_" \
+                       f"wb.pkl"
     labels_file = open(labels_file_path, 'rb')
     labels = pickle.load(labels_file)
     network = 'Default'
-    indices = np.arange(len(coords) + 1)[np.arange(len(coords) + 1) != 0].tolist()
+    indices = np.arange(len(coords) + 1)[np.arange(len(coords) + 1)
+                                         != 0].tolist()
 
     nodes_path = utils.save_coords_and_labels_to_json(coords, labels,
                                                       dir_path, network,
@@ -100,11 +102,26 @@ def test_check_est_path_existence():
     Test check_est_path_existence functionality
     """
     base_dir = str(Path(__file__).parent/"examples")
-    est_path_iterlist = [f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_rsn-Default_model-csd_nodetype-parc_samples-100000streams_tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-DENS_thr-0.09.npy",
-                         f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_rsn-Default_model-csd_nodetype-parc_samples-100000streams_tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-DENS_thr-0.08.npy",
-                         f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_rsn-Default_model-csd_nodetype-parc_samples-100000streams_tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-DENS_thr-0.07.npy",
-                         f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_rsn-Default_model-csd_nodetype-parc_samples-100000streams_tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-DENS_thr-0.06.npy",
-                         f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_rsn-Default_model-csd_nodetype-parc_samples-100000streams_tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-DENS_thr-0.1.npy",
+    est_path_iterlist = [f"{base_dir}/miscellaneous/sub-0021001_modality-dwi"
+                         f"_rsn-Default_model-csd_nodetype-parc_samples-"
+                         f"100000streams_tt-particle_dg-prob_ml-10_template-"
+                         f"MNI152_T1_thrtype-DENS_thr-0.09.npy",
+                         f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_"
+                         f"rsn-Default_model-csd_nodetype-parc_samples-"
+                         f"100000streams_tt-particle_dg-prob_ml-10_template-"
+                         f"MNI152_T1_thrtype-DENS_thr-0.08.npy",
+                         f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_"
+                         f"rsn-Default_model-csd_nodetype-parc_samples-"
+                         f"100000streams_tt-particle_dg-prob_ml-10_template-"
+                         f"MNI152_T1_thrtype-DENS_thr-0.07.npy",
+                         f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_"
+                         f"rsn-Default_model-csd_nodetype-parc_samples-"
+                         f"100000streams_tt-particle_dg-prob_ml-10_template-"
+                         f"MNI152_T1_thrtype-DENS_thr-0.06.npy",
+                         f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_"
+                         f"rsn-Default_model-csd_nodetype-parc_samples-"
+                         f"100000streams_tt-particle_dg-prob_ml-10_template-"
+                         f"MNI152_T1_thrtype-DENS_thr-0.1.npy",
                          f"{base_dir}/miscellaneous/bad_path.npy"]
     [est_path_list_ex, _] = utils.check_est_path_existence(est_path_iterlist)
     assert est_path_list_ex is not None
@@ -280,7 +297,8 @@ def test_create_unthr_path(node_size, hpass, smooth, parc):
 
 @pytest.mark.parametrize("atlas", ['Power', 'Shirer', 'Shen', 'Smith',
                                     pytest.param(None,
-                                                 marks=pytest.mark.xfail(raises=ValueError))])
+                                                 marks=pytest.mark.xfail(
+                                                     raises=ValueError))])
 @pytest.mark.parametrize("input", ['fmri', 'dmri'])
 def test_do_dir_path(atlas, input):
     """
@@ -293,9 +311,11 @@ def test_do_dir_path(atlas, input):
     base_dir = str(Path(__file__).parent/"examples")
 
     if input == 'fmri':
-        in_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1_task-rest_space-T1w_desc-preproc_bold.nii.gz"
+        in_file = f"{base_dir}/BIDS/sub-25659/ses-1/func/sub-25659_ses-1" \
+                  f"_task-rest_space-T1w_desc-preproc_bold.nii.gz"
     elif input == 'dmri':
-        in_file = f"{base_dir}/BIDS/sub-25659/ses-1/dwi/final_preprocessed_dwi.nii.gz"
+        in_file = f"{base_dir}/BIDS/sub-25659/ses-1/dwi/final_preprocessed" \
+                  f"_dwi.nii.gz"
 
     # Delete existing atlas dirs in in_file parent
     atlas_dir = os.path.dirname(os.path.realpath(in_file)) + '/' + str(atlas)
@@ -356,7 +376,10 @@ def test_pass_meta_ins():
     os.makedirs(dir_path)
     base_dir = str(Path(__file__).parent/"examples")
     conn_model = 'corr'
-    est_path = f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_rsn-Default_model-tensor_nodetype-parc_samples-100000streams_tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-DENS_thr-0.09.npy"
+    est_path = f"{base_dir}/miscellaneous/sub-0021001_modality-dwi_rsn-" \
+               f"Default_model-tensor_nodetype-parc_samples-100000streams_" \
+               f"tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-DENS_" \
+               f"thr-0.09.npy"
     network = 'Default'
     thr = 0.09
     prune = True
@@ -365,9 +388,10 @@ def test_pass_meta_ins():
     norm = 10
     binary = True
 
-    [conn_model_iterlist, est_path_iterlist, network_iterlist, thr_iterlist, prune_iterlist, ID_iterlist, roi_iterlist,
-        norm_iterlist, binary_iterlist] = utils.pass_meta_ins(conn_model, est_path, network, thr, prune, ID, roi, norm,
-                                                              binary)
+    [conn_model_iterlist, est_path_iterlist, network_iterlist, thr_iterlist,
+     prune_iterlist, ID_iterlist, roi_iterlist,
+        norm_iterlist, binary_iterlist] = utils.pass_meta_ins(
+        conn_model, est_path, network, thr, prune, ID, roi, norm, binary)
 
     assert conn_model_iterlist is not None
     assert est_path_iterlist is not None
@@ -388,8 +412,14 @@ def test_pass_meta_ins_multi():
 
     conn_model_func = 'cor'
     conn_model_struct = 'cov'
-    est_path_func = f"{base_dir}/miscellaneous/002_modality-func_rsn-Default_model-cov_nodetype-spheres-2mm_smooth-2fwhm_hpass-0.1Hz_template-MNI152_T1_thrtype-PROP_thr-0.95.npy"
-    est_path_struct = f"{base_dir}/miscellaneous/0025427_modality-dwi_model-csd_nodetype-parc_samples-10000streams_tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-PROP_thr-1.0.npy"
+    est_path_func = f"{base_dir}/miscellaneous/002_modality-func_rsn" \
+                    f"-Default_model-cov_nodetype-spheres-2mm_smooth-2fwhm" \
+                    f"_hpass-0.1Hz_template-MNI152_T1_thrtype-PROP_thr-" \
+                    f"0.95.npy"
+    est_path_struct = f"{base_dir}/miscellaneous/0025427_modality-dwi_model-" \
+                      f"csd_nodetype-parc_samples-10000streams_tt-particle_" \
+                      f"dg-prob_ml-10_template-MNI152_T1_thrtype-PROP_thr-" \
+                      f"1.0.npy"
     network_func = 'Default'
     network_struct = 'Default'
     thr_func = 0.95
@@ -405,10 +435,13 @@ def test_pass_meta_ins_multi():
     binary_func = False
     binary_struct = True
 
-    [conn_model_iterlist, est_path_iterlist, network_iterlist, thr_iterlist, prune_iterlist, ID_iterlist, roi_iterlist,
+    [conn_model_iterlist, est_path_iterlist, network_iterlist, thr_iterlist,
+     prune_iterlist, ID_iterlist, roi_iterlist,
      norm_iterlist, binary_iterlist] = utils.pass_meta_ins_multi(
-        conn_model_func, est_path_func, network_func, thr_func, prune_func, ID_func, roi_func, norm_func, binary_func,
-        conn_model_struct, est_path_struct, network_struct, thr_struct, prune_struct, ID_struct, roi_struct,
+        conn_model_func, est_path_func, network_func, thr_func, prune_func,
+        ID_func, roi_func, norm_func, binary_func,
+        conn_model_struct, est_path_struct, network_struct, thr_struct,
+        prune_struct, ID_struct, roi_struct,
         norm_struct, binary_struct)
 
     assert len(conn_model_iterlist) == 2
@@ -424,7 +457,9 @@ def test_pass_meta_ins_multi():
 
 def test_collectpandasjoin():
     base_dir = str(Path(__file__).parent/"examples")
-    net_mets_csv = f"{base_dir}/miscellaneous/002_rsn-Default_nodetype-parc_model-cov_template-MNI152_T1_thrtype-PROP_thr-0.95_net_metrics.csv"
+    net_mets_csv = f"{base_dir}/miscellaneous/002_rsn-Default_nodetype-parc_" \
+                   f"model-cov_template-MNI152_T1_thrtype-PROP_thr-0.95_" \
+                   f"net_metrics.csv"
     net_mets_csv_out = utils.collectpandasjoin(net_mets_csv)
 
     assert net_mets_csv == net_mets_csv_out
@@ -458,9 +493,16 @@ def test_build_mp_dict(modality):
     base_dir = str(Path(__file__).parent / "examples")
 
     if modality == 'func':
-        file_renamed = f"{base_dir}/miscellaneous/graphs/graph_sub-002_modality-func_rsn-Default_model-cov_template-MNI152_T1_nodetype-spheres-2mm_smooth-2fwhm_hpass-0.1Hz_template-MNI152_T1_thrtype-PROP_thr-0.95.npy"
+        file_renamed = f"{base_dir}/miscellaneous/graphs/graph_sub-002_" \
+                       f"modality-func_rsn-Default_model-cov_template-" \
+                       f"MNI152_T1_nodetype-spheres-2mm_smooth-2fwhm_" \
+                       f"hpass-0.1Hz_template-MNI152_T1_thrtype-PROP_" \
+                       f"thr-0.95.npy"
     elif modality == 'dwi':
-        file_renamed = f"{base_dir}/miscellaneous/graphs/0025427_modality-dwi_model-csd_nodetype-parc_samples-10000streams_tt-particle_dg-prob_ml-10_template-MNI152_T1_thrtype-PROP_thr-1.0.npy"
+        file_renamed = f"{base_dir}/miscellaneous/graphs/0025427_modality-" \
+                       f"dwi_model-csd_nodetype-parc_samples-10000streams_" \
+                       f"tt-particle_dg-prob_ml-10_template-MNI152_T1_" \
+                       f"thrtype-PROP_thr-1.0.npy"
     gen_metaparams = ['modality', 'model', 'nodetype', 'template']
 
     metaparam_dict = {}