From cdc8aa038ca304d74f08a5fc3b6752a6e6854a4b Mon Sep 17 00:00:00 2001
From: didihou <didi.hou@rwth-aachen.de>
Date: Thu, 14 Sep 2023 13:50:33 +0200
Subject: [PATCH] /

---
 .../.ipynb_checkpoints/helpers-checkpoint.py  | 164 ++++++++++++++++++
 1 file changed, 164 insertions(+)
 create mode 100644 figures/Schmidt2018/.ipynb_checkpoints/helpers-checkpoint.py

diff --git a/figures/Schmidt2018/.ipynb_checkpoints/helpers-checkpoint.py b/figures/Schmidt2018/.ipynb_checkpoints/helpers-checkpoint.py
new file mode 100644
index 0000000..1c2de12
--- /dev/null
+++ b/figures/Schmidt2018/.ipynb_checkpoints/helpers-checkpoint.py
@@ -0,0 +1,164 @@
+import numpy as np
+
+"""
+Helper file collecting a number of necessary
+imports for the plot scripts
+"""
+
+area_list = ['V1', 'V2', 'VP', 'V3', 'V3A', 'MT', 'V4t', 'V4', 'VOT', 'MSTd',
+             'PIP', 'PO', 'DP', 'MIP', 'MDP', 'VIP', 'LIP', 'PITv', 'PITd',
+             'MSTl', 'CITv', 'CITd', 'FEF', 'TF', 'AITv', 'FST', '7a', 'STPp',
+             'STPa', '46', 'AITd', 'TH']
+
+
+population_list = ['23E', '23I', '4E', '4I', '5E', '5I', '6E', '6I']
+
+datapath = '../../multiarea_model/data_multiarea'
+raw_datapath = '../../multiarea_model/data_multiarea/raw_data/'
+
+population_labels = ['2/3E', '2/3I', '4E', '4I', '5E', '5I', '6E', '6I']
+layer_labels = ['L1', 'L2', 'L3', 'L4', 'L5', 'L6']
+tex_names = {'23': 'twothree', '4': 'four', '5': 'five', '6': 'six'}
+
+# This path determines the location of the infomap
+# installation and needs to be provided to execute the script for Fig. 7
+infomap_path = None
+
+
+def hierarchical_relation(target_area, source_area, SLN_completed, thresh=(0.35, 0.65)):
+    """
+    Returns the hierarchical relation between
+    two areas based on their SLN value (data + estimated).
+
+    Parameters
+    ----------
+    target_area : str
+        Name of target area.
+    source_area : str
+        Name of source area.
+    SLN_completed : dict
+        Dictionary of SLN values for pairs of areas.
+    thresh : tuple of floats
+        Threshold values to classify connections
+        as FF/FB/lateral.
+
+    Returns
+    -------
+    hierarchical_relation : str
+        Hierarchical relation between source
+        and target area.
+    """
+
+    if (target_area != source_area and
+            source_area in SLN_completed[target_area]):
+        if SLN_completed[target_area][source_area] > thresh[1]:
+            return 'FF'
+        elif SLN_completed[target_area][source_area] < thresh[0]:
+            return 'FB'
+        else:
+            return 'lateral'
+    else:
+        return 'same-area'
+
+
+def structural_gradient(target_area, source_area, arch_types):
+    """
+    Returns the structural gradient between two areas
+    See Schmidt, M., Bakker, R., Hilgetag, C.C. et al.
+    Brain Structure and Function (2018), 223:1409,
+    for a definition.
+
+    Parameters
+    ----------
+    target_area : str
+        Name of target area.
+    source_area : str
+        Name of source area.
+    arch_types : dict
+       Dictionary containing the architectural type for each area.
+    """
+    if target_area != source_area:
+        if arch_types[target_area] < arch_types[source_area]:
+            return 'HL'
+        elif arch_types[target_area] > arch_types[source_area]:
+            return 'LH'
+        else:
+            return 'HZ'
+    else:
+        return 'same-area'
+
+
+def write_out_lw(fn, C, std=False):
+    """
+    Stores line widths for arrows in path figures
+    generated by pstricks to a txt file.
+
+    Parameters
+    ----------
+    fn : str
+        Filename of output file.
+    C : dict
+        Dictionary with line width values.
+    std : bool
+        Whether to write out mean or std values.
+    """
+    if not std:
+        max_lw = 0.3  # This is an empirically determined value
+        scale_factor = max_lw / np.max(list(C.values()))
+        with open(fn, 'w') as f:
+            for pair, count in list(C.items()):
+                s = '\setboolean{{DRAW{}{}{}{}}}{{true}}'.format(tex_names[pair[0][:-1]],
+                                                                  pair[0][-1],
+                                                                  tex_names[pair[1][:-1]],
+                                                                  pair[1][-1])
+                f.write(s)
+                f.write('\n')
+                s = '\def\{}{}{}{}{{{}}}'.format(tex_names[pair[0][:-1]],
+                                                 pair[0][-1],
+                                                 tex_names[pair[1][:-1]],
+                                                 pair[1][-1],
+                                                 float(count) * scale_factor)
+                f.write(s)
+                f.write('\n')
+    else:
+        max_lw = 0.3
+        scale_factor = max_lw / np.max(list(C['mean'].values()))
+        with open(fn, 'w') as f:
+            for pair, count in list(C['mean'].items()):
+                s = '\setboolean{{DRAW\{}{}{}{}}}{{true}}'.format(tex_names[pair[0][:-1]],
+                                                                  pair[0][-1],
+                                                                  tex_names[pair[1][:-1]],
+                                                                  pair[1][-1])
+                f.write('\n')
+                s = '\def\{}{}{}{}{{{}}}'.format(tex_names[pair[0][:-1]],
+                                                 pair[0][-1],
+                                                 tex_names[pair[1][:-1]],
+                                                 pair[1][-1],
+                                                 float(count) * scale_factor)
+                f.write('\n')
+
+            for pair, count in list(C['1sigma'].items()):
+                f.write('\n')
+                s = '\def\{}{}{}{}sigma{{{}}}'.format(tex_names[pair[0][:-1]],
+                                                      pair[0][-1],
+                                                      tex_names[pair[1][:-1]],
+                                                      pair[1][-1],
+                                                      float(count) * scale_factor)
+                f.write('\n')
+
+
+def area_population_list(structure, area):
+    """
+    Construct list of all populations in an area.
+
+    Parameters
+    ----------
+    structure : dict
+        Dictionary defining the structure of each area.
+    area : str
+        Area to construct list for.
+    """
+    complete = []
+    for pop in structure[area]:
+        complete.append(area + '-' + pop)
+    return complete
-- 
GitLab