diff --git a/README.md b/README.md index 05d0541e2..79824f276 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,19 @@ On the third anniversary of the first lock-down, we look back at how #MachineLea + +## An extended and improved CCFv3 annotation + +The Blue Brain Project presents the first comprehensive mouse brain atlas based on the Allen Institute’s Common Coordinate Framework version 3. This atlas includes anatomical Nissl reference data that has been precisely aligned within this reference space, providing the scientific community with a crucial tool for automated and accurate mapping of a wide range of histological slices or volumes of the mouse brain. We have also integrated additional layers, such as the spinal cord, barrel columns, as well as the granular and molecular layers in the cerebellum. This allowed us to create an enhanced version of our cell atlas, mapping every cell in the mouse brain by location, region, and type. From this data, properties such as neuron soma and morphology can be derived, paving the way for increasingly accurate simulation models. + +
+ + + +
+ +* [An extended and improved CCFv3 annotation and Nissl atlas of the entire mouse brain](https://www.biorxiv.org/content/10.1101/2024.11.06.622212v1) + ## The Harvard Brain Do you want want to know more about the full story? Read the [Studies In Silico: An Interview With Cyrille Favreau On EPFL’s Blue Brain Project](http://www.theharvardbrain.com/spring-2023-8203lara-ota-buse-toksoumlz-and-kei-hayashi.html). diff --git a/bioexplorer/pythonsdk/doc/source/images/ccfv3_movie_preview.png b/bioexplorer/pythonsdk/doc/source/images/ccfv3_movie_preview.png new file mode 100644 index 000000000..64eda3b90 Binary files /dev/null and b/bioexplorer/pythonsdk/doc/source/images/ccfv3_movie_preview.png differ diff --git a/bioexplorer/pythonsdk/notebooks/bioexplorer_ccfv3_banner.png b/bioexplorer/pythonsdk/notebooks/bioexplorer_ccfv3_banner.png new file mode 100644 index 000000000..3bc641eae Binary files /dev/null and b/bioexplorer/pythonsdk/notebooks/bioexplorer_ccfv3_banner.png differ diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_add_material_to_meshes.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_add_material_to_meshes.ipynb new file mode 100644 index 000000000..933b0851d --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_add_material_to_meshes.ipynb @@ -0,0 +1,111 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "import glob\n", + "from tqdm import tqdm\n", + "\n", + "atlas_data_folder = os.getenv('ATLAS_DATA_FOLDER')\n", + "\n", + "data_folder = os.path.join(atlas_data_folder, 'mouse', 'v3')\n", + "f = open(os.path.join(data_folder, 'brain_regions.json'))\n", + "obj = json.load(f)\n", + "\n", + "region_colors=dict()\n", + "def node_color(node):\n", + " node_id = node['id']\n", + " color = node['color_hex_triplet']\n", + " region_colors[node_id] = color\n", + " for child in node['children']:\n", + " node_color(child)\n", + "\n", + "for node in obj['msg']:\n", + " node_color(node)\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ca01b536", + "metadata": {}, + "outputs": [], + "source": [ + "def add_material_to_obj(obj_file, material_name, diffuse_color):\n", + " # Open the OBJ file in read mode\n", + " with open(obj_file, 'r') as file:\n", + " lines = file.readlines()\n", + "\n", + " # Insert the material definition before the first usemtl line\n", + " lines.insert(0, 'mtllib {}\\n'.format(os.path.basename(obj_file).replace('.obj', '.mtl')))\n", + "\n", + " # Write the modified lines back to the OBJ file\n", + " with open(obj_file, 'w') as file:\n", + " file.writelines(lines)\n", + "\n", + " # Create the material file with diffuse color\n", + " mtl_filename = obj_file.replace('.obj', '.mtl')\n", + " with open('{}'.format(mtl_filename), 'w') as mtl_file:\n", + " mtl_file.write('newmtl {}\\n'.format(material_name))\n", + " mtl_file.write('Kd {} {} {}\\n'.format(*[int(diffuse_color[i:i+2], 16)/255 for i in (1, 3, 5)]))\n", + " # You might want to add more properties like specular color, shininess, etc. if needed\n", + "\n", + " # print(\"Material '{}' added to '{}' with diffuse color '{}' successfully.\".format(material_name, obj_file, diffuse_color))\n", + "\n", + "\n", + "# Example usage:\n", + "mesh_folder = os.path.join(data_folder, 'meshes', 'obj')\n", + "mesh_files = glob.glob(mesh_folder + '/*.obj')\n", + "for mesh_file in tqdm(mesh_files):\n", + " base_name = os.path.basename(mesh_file).split('.')[0]\n", + " color = region_colors[int(base_name)]\n", + " add_material_to_obj(mesh_file, 'default', color)\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('env': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_annotation_ccfv2_l23split_barrelsplit.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_annotation_ccfv2_l23split_barrelsplit.ipynb new file mode 100644 index 000000000..bf491287c --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_annotation_ccfv2_l23split_barrelsplit.ipynb @@ -0,0 +1,484 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "dc6d2cbb", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'annotation_ccfv2_l23split_barrelsplit'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765\n", + "]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "82ad851e", + "metadata": {}, + "outputs": [], + "source": [ + "cerrebelum_filter = str(cerebellum_ids).replace('[','').replace(']','')\n", + "cerebellum_granular_layer_filter = str(cerebellum_granular_layer_ids).replace('[','').replace(']','')\n", + "cerebellum_molecular_layer_filter = str(cerebellum_molecular_layer_ids).replace('[','').replace(']','')\n", + "olfactory_bulb_filter = str(olfactory_bulb_ids).replace('[','').replace(']','')\n", + "medula_filter = str(medula_ids).replace('[','').replace(']','')\n", + "fibers_filter = str(fibers_ids).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "# status = be.reset_scene()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa65b308", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerrebelum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s)' % (cerrebelum_filter, cerebellum_granular_layer_filter, cerebellum_molecular_layer_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48f8514c", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerebellum_granular_layer'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % cerebellum_granular_layer_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9eda5d4e", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerebellum_molecular_layer'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % cerebellum_molecular_layer_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b823a7d2", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerrebelum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s)' % (cerrebelum_filter, cerebellum_granular_layer_filter, cerebellum_molecular_layer_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'olfactory_bulb'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % olfactory_bulb_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9a11e2b", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'medula'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % medula_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00721fa3", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'atlas_v2'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='level=6 AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) ' % (cerrebelum_filter, medula_filter, olfactory_bulb_filter, fibers_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "atlas_data_folder = os.getenv('ATLAS_DATA_FOLDER')\n", + "data_folder = os.path.join(atlas_data_folder, 'mouse', 'CCFv2', 'barrel_split')\n", + "\n", + "region_file_name = 'hierarchy_ccfv2_l23split_barrelsplit.json' # 'brain_regions.json'\n", + "f = open(os.path.join(data_folder, region_file_name))\n", + "obj = json.load(f)\n", + "\n", + "region_colors=dict()\n", + "def node_color(node):\n", + " node_id = node['id']\n", + " color = node['color_hex_triplet']\n", + " region_colors[node_id] = color\n", + " for child in node['children']:\n", + " node_color(child)\n", + "\n", + "for node in obj['msg']:\n", + " node_color(node)\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))\n", + "\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " material_ids = be.get_material_ids(model_id)['ids'][:-1]\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " reflection_indices = list()\n", + " for material_id in material_ids:\n", + " c = [255, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " id = region_colors[m_id]\n", + " c = hex_to_rgb(id)\n", + " alpha = 1.0\n", + " if (m_id in cerebellum_ids and m_id not in cerebellum_granular_layer_ids and m_id not in cerebellum_molecular_layer_ids) or m_id in olfactory_bulb_ids or m_id in medula_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(be.shading_mode.PERLIN)\n", + " alpha = 1.0\n", + " user_params.append(0.0001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(5.0)\n", + " reflection_indices.append(0.0)\n", + " elif m_id in cerebellum_granular_layer_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(be.shading_mode.PERLIN)\n", + " alpha = 0.5\n", + " user_params.append(0.0001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(5.0)\n", + " reflection_indices.append(0.0)\n", + " elif m_id in cerebellum_molecular_layer_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(be.shading_mode.PERLIN)\n", + " alpha = 1.0\n", + " user_params.append(0.0001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(5.0)\n", + " reflection_indices.append(0.0)\n", + " else:\n", + " opacities.append(0.2)\n", + " alpha = 1.0\n", + " shading_modes.append(be.shading_mode.ELECTRON_TRANSPARENCY)\n", + " user_params.append(3.0)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " reflection_indices.append(0.0)\n", + " refraction_indices.append(0.95)\n", + " palette.append([alpha * c[0] / 255.0, alpha * c[1] / 255.0, alpha * c[2] / 255.0])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " reflection_indices=reflection_indices,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " current='advanced', background_color=[7.0/256.0, 33/256.0, 53/256.0],\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1000.0\n", + "params.shadow_intensity = 0.8\n", + "params.soft_shadow_strength = 1.0\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 30\n", + "params.epsilon_multiplier = 100.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " orientation=[0.7071067811865475, 0.0, 0.0, 0.7071067811865476],\n", + " position=[7299.9903886725315, -9735.360746995771, 5664.455351434031],\n", + " target=[7299.9903886725315, 4453.4564756351165, 5664.455351434029], \n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d22e512f", + "metadata": {}, + "source": [ + "## Movies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41cbc831", + "metadata": {}, + "outputs": [], + "source": [ + "mm.get_camera()" + ] + }, + { + "cell_type": "markdown", + "id": "b85548e2", + "metadata": {}, + "source": [ + "### Orbital navigation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e336967a", + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "from tqdm import tqdm\n", + "output_folder = '/scratch/ccfv3a/orbital/v2'\n", + "k = 4\n", + "\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "\n", + "\n", + "r = params.height\n", + "t = [7062, 3849, 5687]\n", + "frame = 0\n", + "for i in tqdm(range(270, -90, -1)):\n", + " o = [\n", + " t[0] + r * math.cos(i * math.pi / 180.0),\n", + " t[1],\n", + " t[2] + r * math.sin(i * math.pi / 180.0)\n", + " ]\n", + " l = 0.0\n", + " d = [0,0,0]\n", + " for k in range(3):\n", + " d[k] = t[k] - o[k]\n", + " l += d[k] * d[k]\n", + "\n", + " l = math.sqrt(l)\n", + " for k in range(3):\n", + " d[k] /= l\n", + "\n", + " mm.set_camera(origin=o, up=[0,-1,0], direction=d)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n", + " frame += 1" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('env': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas.ipynb new file mode 100644 index 000000000..70108b1f0 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas.ipynb @@ -0,0 +1,1180 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "34dd28a4", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "load_cells = True\n", + "load_meshes = False\n", + "cell_radius = 1.0 # Micrometters\n", + "\n", + "nissl_enabled = False\n" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a_averaged'\n", + "if nissl_enabled:\n", + " population_name = 'atlas_ccfv3a_all_cells'\n", + " cell_radius = 1.0 # Micrometters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765, 1557651847\n", + "]\n", + "\n", + "hippocampus_ids = [391, 775, 782, 399, 766, 19, 790, 407, 415, 799, 423, 807, 431, 815, 438, 823, 1080, 446, 454, 10702, 463, 10703, 10704, 726, 471, 982, 734, 479, 486, 742, 632, 495, 751, 758, 375, 504, 382]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109, 698]\n", + "regions_to_ignore = [\n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "82ad851e", + "metadata": {}, + "outputs": [], + "source": [ + "cerrebelum_filter = str(cerebellum_ids).replace('[','').replace(']','')\n", + "cerebellum_granular_layer_filter = str(cerebellum_granular_layer_ids).replace('[','').replace(']','')\n", + "cerebellum_molecular_layer_filter = str(cerebellum_molecular_layer_ids).replace('[','').replace(']','')\n", + "olfactory_bulb_filter = str(olfactory_bulb_ids).replace('[','').replace(']','')\n", + "medula_filter = str(medula_ids).replace('[','').replace(']','')\n", + "ignore_filter = str(fibers_ids + regions_to_ignore).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa65b308", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerrebelum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s)' % (cerrebelum_filter, cerebellum_granular_layer_filter, cerebellum_molecular_layer_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48f8514c", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerebellum_granular_layer'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s)' % cerebellum_granular_layer_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9eda5d4e", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerebellum_molecular_layer'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s)' % cerebellum_molecular_layer_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b823a7d2", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerrebelum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s)' % (cerrebelum_filter, cerebellum_granular_layer_filter, cerebellum_molecular_layer_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'olfactory_bulb'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s)' % olfactory_bulb_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9a11e2b", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'medula'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s)' % medula_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00721fa3", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'other_regions'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='level>=6 AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) ' % (cerrebelum_filter, medula_filter, olfactory_bulb_filter, ignore_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b375e8a4", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49aefad8", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % population_name)\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " k = 0\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " for material_id in material_ids:\n", + " if nissl_enabled:\n", + " c = [0.8, 0.3, 0.8]\n", + " else:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " alpha = [1.0, 1.0, 1.0]\n", + "\n", + " if material_id in olfactory_bulb_ids:\n", + " value = 0.5 * float(k) / float(len(olfactory_bulb_ids))\n", + " alpha[0] -= value\n", + " alpha[1] -= value\n", + " alpha[2] -= value\n", + " k += 1\n", + "\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " palette.append([alpha[0] * c[0], alpha[1] * c[1], alpha[2] * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, \n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "if nissl_enabled:\n", + " background_color = [1.0, 1.0, 1.0]\n", + "\n", + "status = core.set_renderer(\n", + " head_light=True,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d22e512f", + "metadata": {}, + "source": [ + "## Movies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "34910091", + "metadata": {}, + "outputs": [], + "source": [ + "k = 4\n", + "spp = 128" + ] + }, + { + "cell_type": "markdown", + "id": "37e69d98", + "metadata": {}, + "source": [ + "### Slicing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "76516499", + "metadata": {}, + "outputs": [], + "source": [ + "plane_id = core.add_clip_plane([1,0,0,0])['id']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10e833d2", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/slices/v1' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "frame = 0\n", + "for i in tqdm(range(0, 14500, 50)):\n", + " core.update_clip_plane(plane_id, [1.0, 0.0, 0.0, -i])\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n", + " frame += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1792e8a", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/slices/v2' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "frame = 0\n", + "for i in tqdm(range(0, 8000, 50)):\n", + " core.update_clip_plane(plane_id, [0.0, 1.0, 0.0, -i])\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n", + " frame += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9994b426-9da0-4a71-8605-76a8c8fa5f46", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/slices/v3' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "frame = 0\n", + "for i in tqdm(range(0, 11000, 50)):\n", + " core.update_clip_plane(plane_id, [0.0, 0.0, 1.0, -i])\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n", + " frame += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41f82115", + "metadata": {}, + "outputs": [], + "source": [ + "planes = core.get_clip_planes()\n", + "if planes:\n", + " for plane in planes:\n", + " core.remove_clip_planes([plane['id']])" + ] + }, + { + "cell_type": "markdown", + "id": "b85548e2", + "metadata": {}, + "source": [ + "### Orbital navigation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e336967a", + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "from tqdm import tqdm\n", + "output_folder = '/scratch/videos/atlas/%s/orbital/v1' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "\n", + "k = 4\n", + "\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "\n", + "\n", + "r = params.height\n", + "t = [7062, 3849, 5687]\n", + "frame = 0\n", + "for i in tqdm(range(270, -90, -1)):\n", + " o = [\n", + " t[0] + r * math.cos(i * math.pi / 180.0),\n", + " t[1],\n", + " t[2] + r * math.sin(i * math.pi / 180.0)\n", + " ]\n", + " l = 0.0\n", + " d = [0,0,0]\n", + " for k in range(3):\n", + " d[k] = t[k] - o[k]\n", + " l += d[k] * d[k]\n", + "\n", + " l = math.sqrt(l)\n", + " for k in range(3):\n", + " d[k] /= l\n", + "\n", + " mm.set_camera(origin=o, up=[0,-1,0], direction=d)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n", + " frame += 1\n" + ] + }, + { + "cell_type": "markdown", + "id": "24e5466a", + "metadata": {}, + "source": [ + "### Navigation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "098f9dee", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87caaf1a", + "metadata": {}, + "outputs": [], + "source": [ + "keys = [\n", + " # Initial view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.6553724423068927, 0.5218272307970103, 0.5460616293637766],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " 'up': [0.36593474619134375, -0.8518192703488876, 0.37482754993752265]\n", + " }\n", + " ,\n", + " # Olfactory bulb\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.7469370424463216, 0.3606491560448456, 0.5585850345880041],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [-3120.532189038173, 1835.5169097748767, 2165.927051941915],\n", + " 'up': [0.3224948767666639, -0.9311843737781622, 0.16997857656370974]\n", + " }\n", + " ,\n", + " # Side view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-1.3331370380301985e-16, -1.2246467991473532e-16, 1.0],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [7236.727651380601, 4482.658523559142, -9145.317280084804],\n", + " 'up': [-4.440892098500626e-16, -1.0, -1.2246467991473537e-16]\n", + " }\n", + " ,\n", + " # Cerebellum\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-0.5191155653746677, 0.17713002641529518, 0.836148302353031],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [15391.238801629486, 2988.224146474133, -1927.6054642919696],\n", + " 'up': [-0.11693830913040375, -0.9838094070689234, 0.13581046506221545]\n", + " }\n", + " ,\n", + " # Side view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-1.3331370380301985e-16, -1.2246467991473532e-16, 1.0],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [7236.727651380601, 4482.658523559142, -9145.317280084804],\n", + " 'up': [-4.440892098500626e-16, -1.0, -1.2246467991473537e-16]\n", + " }\n", + " ,\n", + " # Initial view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.6553724423068927, 0.5218272307970103, 0.5460616293637766],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " 'up': [0.36593474619134375, -0.8518192703488876, 0.37482754993752265]\n", + " }\n", + "]\n", + "\n", + "double_keys = list()\n", + "for key in keys:\n", + " double_keys.append(key)\n", + " double_keys.append(key)\n", + "mm.build_camera_path(double_keys, 50, 25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e1945aa4", + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "output_folder = '/scratch/videos/atlas/%s/regions_of_interest/v1' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "if nissl_enabled:\n", + " output_folder += '/nissl'\n", + "k = 4\n", + "\n", + "for frame in tqdm(range(mm.get_nb_frames())):\n", + " mm.set_current_frame(frame)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e5f0b7ed", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/regions_of_interest/stills' % population_name\n", + "k = 4\n", + "\n", + "frame = 325\n", + "mm.set_current_frame(frame)\n", + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(-0.5, 0.5, 1.2),\n", + " intensity=1.0, is_visible=False)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)" + ] + }, + { + "cell_type": "markdown", + "id": "273efd4d", + "metadata": {}, + "source": [ + "## Snapshots" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3c4d91a0", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/regions_of_interest/stills' % population_name\n", + "k = 4" + ] + }, + { + "cell_type": "markdown", + "id": "9f98bc76", + "metadata": {}, + "source": [ + "### Cerebellum" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bfe6f574", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "i = 0\n", + "for model_id in model_ids:\n", + " visible = True\n", + " if i > 2:\n", + " visible = False\n", + " status = core.update_model(id=model_id, visible=visible)\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6206e0f3", + "metadata": {}, + "outputs": [], + "source": [ + "frame = 3 * 100\n", + "mm.set_current_frame(frame)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='cerebellum_%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n" + ] + }, + { + "cell_type": "markdown", + "id": "0ca415f5", + "metadata": {}, + "source": [ + "### Medula" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51846b4d", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "i = 0\n", + "for model_id in model_ids:\n", + " visible = False\n", + " if i == 4:\n", + " visible = True\n", + " status = core.update_model(id=model_id, visible=visible)\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8a5eb715", + "metadata": {}, + "outputs": [], + "source": [ + "frame = 3 * 100\n", + "mm.set_current_frame(frame)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='medula_%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n" + ] + }, + { + "cell_type": "markdown", + "id": "535322c4", + "metadata": {}, + "source": [ + "### Olfactory bulb" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "095376f4", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "i = 0\n", + "for model_id in model_ids:\n", + " visible = False\n", + " if i == 3:\n", + " visible = True\n", + " status = core.update_model(id=model_id, visible=visible)\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "69c26663", + "metadata": {}, + "outputs": [], + "source": [ + "frame = 1 * 100\n", + "mm.set_current_frame(frame)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='olfactory_bulb_%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n" + ] + }, + { + "cell_type": "markdown", + "id": "f6dbdb8d", + "metadata": {}, + "source": [ + "### Full Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66260ec8", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " status = core.update_model(id=model_id, visible=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c1b11400", + "metadata": {}, + "outputs": [], + "source": [ + "frame = 250\n", + "status = core.set_camera(current='perspective')\n", + "mm.set_current_frame(frame)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='full_atlas_%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=256)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "debec857", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_camera(\n", + " current='orthographic',\n", + " orientation=[0.7071067811865474, 0.0, 0.0, 0.7071067811865477],\n", + " position=[7062.54170513153, -7715.915540555949, 5687.530700683599],\n", + " target=[7062.54170513153, 3849.934432983398, 5687.530700683594], \n", + ")\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='full_atlas_bottom_v1',\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=256)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fd5cd9f7", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='orthographic',\n", + " orientation=[-0.7071067811865478, 0.0, 0.0, 0.7071067811865472],\n", + " position=[7775.074817794507, 16943.902861164934, 5669.875790550629],\n", + " target=[7775.074817794507, 3849.934432983398, 5669.87579055064], \n", + ")\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='full_atlas_top_v1',\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=256)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b2ce6d64", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_camera(\n", + " current='orthographic',\n", + " orientation=[-0.707, 0.0, 0.707, 0.0],\n", + " position=[-5889.359840327096, 3849.934432983402, 5687.530700683581],\n", + " target=[7062.54170513153, 3849.934432983398, 5687.530700683594], \n", + ")\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='full_atlas_right_v1',\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=256)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7859682", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_camera(\n", + " current='orthographic',\n", + " orientation=[-0.707, 0.0, -0.707, 0.0],\n", + " position=[20014.443250590157, 3849.934432983398, 5687.5307006835965],\n", + " target=[7062.54170513153, 3849.934432983398, 5687.530700683594],\n", + ")\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='full_atlas_left_v1',\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=256)" + ] + }, + { + "cell_type": "markdown", + "id": "ff28070b", + "metadata": {}, + "source": [ + "### 3D Views" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad655709", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + ")\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='full_atlas_3d_v1',\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=256)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64e67ae8", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.9234260390393976,-0.0711274916493321,0.3483845350423471, 0.14440722315386545],\n", + " position=[16442.269375863238, 897.7563172345881, -4024.93839031792],\n", + " target=[7604.451628771938, 5385.086344680354, 6127.863236386175],\n", + ")\n", + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='full_atlas_3d_v2',\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=256)" + ] + }, + { + "cell_type": "markdown", + "id": "d218c2bb-b46b-427a-a516-47d52cf43ca5", + "metadata": {}, + "source": [ + "### Fancy Slicing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "89c6ab2b-1062-4472-9087-34b2d2a4eeb8", + "metadata": {}, + "outputs": [], + "source": [ + "t = [7062, 3849, 5687]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1783a146-5d96-4133-bead-414aa1806f6f", + "metadata": {}, + "outputs": [], + "source": [ + "tf = {\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [-t[0], -t[1], -t[2]]\n", + "}\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " core.update_model(model_id, transformation=tf)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8ee14686-82a6-4adb-b2bb-3f119a323689", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646 - t[0], -2607.8377454106976 - t[1], -1731.3329308640486 - t[2]],\n", + " target=[6733.589672442965 - t[0], 4796.273454159725 - t[1], 6016.635720470601 - t[2]]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8e7bec47-b3f9-4173-9513-eb97fdef05dc", + "metadata": {}, + "outputs": [], + "source": [ + "core.add_clip_plane([0, 1, 0, 0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5553a1c0-b3ab-4bc3-8f95-8385be777803", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "def rotate_vector(vector, angle_degrees, axis):\n", + " \"\"\"\n", + " Rotate a vector around a given axis by a specified angle in degrees.\n", + " \n", + " :param vector: The vector to rotate (numpy array).\n", + " :param angle_degrees: The angle by which to rotate the vector (in degrees).\n", + " :param axis: The axis around which to rotate the vector (numpy array).\n", + " :return: The rotated vector (numpy array).\n", + " \"\"\"\n", + " angle_radians = np.radians(angle_degrees)\n", + " axis = axis / np.linalg.norm(axis) # Normalize the rotation axis\n", + " cos_theta = np.cos(angle_radians)\n", + " sin_theta = np.sin(angle_radians)\n", + " \n", + " # Rotation matrix using the Rodrigues' rotation formula\n", + " rotation_matrix = np.array([\n", + " [cos_theta + axis[0] * axis[0] * (1 - cos_theta),\n", + " axis[0] * axis[1] * (1 - cos_theta) - axis[2] * sin_theta,\n", + " axis[0] * axis[2] * (1 - cos_theta) + axis[1] * sin_theta],\n", + " [axis[1] * axis[0] * (1 - cos_theta) + axis[2] * sin_theta,\n", + " cos_theta + axis[1] * axis[1] * (1 - cos_theta),\n", + " axis[1] * axis[2] * (1 - cos_theta) - axis[0] * sin_theta],\n", + " [axis[2] * axis[0] * (1 - cos_theta) - axis[1] * sin_theta,\n", + " axis[2] * axis[1] * (1 - cos_theta) + axis[0] * sin_theta,\n", + " cos_theta + axis[2] * axis[2] * (1 - cos_theta)]\n", + " ])\n", + " \n", + " return np.dot(rotation_matrix, vector)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "70528ca4-8949-4c41-ac1a-22ad1f6cf4c4", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/slices/v4' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "k = 4\n", + "\n", + "# Initial up vector (for example, pointing along the Y-axis)\n", + "up_vector = np.array([0, 1, 0])\n", + "\n", + "# Axis of rotation (for example, the Z-axis)\n", + "rotation_axis = np.array([0, -1, -1])\n", + "\n", + "# Loop to rotate the vector over 360 degrees\n", + "for frame in tqdm(range(361)): # Adjust step size as needed\n", + " rotated_vector = rotate_vector(up_vector, frame, rotation_axis)\n", + " core.update_clip_plane(0, [rotated_vector[0], rotated_vector[1], rotated_vector[2], 500])\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540], samples_per_pixel=64)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_as_single_model.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_as_single_model.ipynb new file mode 100644 index 000000000..04cc90e44 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_as_single_model.ipynb @@ -0,0 +1,310 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "34dd28a4", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "load_cells = True\n", + "load_meshes = False\n", + "cell_radius = 5.0 # Micrometters\n", + "\n", + "nissl_enabled = False\n" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "# population_name = 'atlas_ccfv3a_averaged'\n", + "population_name = 'atlas_ccfv3a'\n", + "if nissl_enabled:\n", + " population_name = 'atlas_ccfv3a_all_cells'\n", + " cell_radius = 1.0 # Micrometters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "fibers_ids = [960, 1000, 1009, 396, 109, 698]\n", + "regions_to_ignore = [\n", + " \n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "82ad851e", + "metadata": {}, + "outputs": [], + "source": [ + "ignore_filter = str(fibers_ids + regions_to_ignore).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00721fa3", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'Cell Atlas'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid NOT IN (%s)' % ignore_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b375e8a4", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49aefad8", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % population_name)\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " k = 0\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " for material_id in material_ids:\n", + " if nissl_enabled:\n", + " c = [0.8, 0.3, 0.8]\n", + " else:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " alpha = [1.0, 1.0, 1.0]\n", + "\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " palette.append([alpha[0] * c[0], alpha[1] * c[1], alpha[2] * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, \n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8814e6b", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(0.5, 0.5, 1.2),\n", + " intensity=1.0, is_visible=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "if nissl_enabled:\n", + " background_color = [1.0, 1.0, 1.0]\n", + "\n", + "status = core.set_renderer(\n", + " head_light=False,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "301ddaec", + "metadata": {}, + "source": [ + "### Save to cache" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "05621f7d", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import SonataExplorer\n", + "se = SonataExplorer(be)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bafd72ba", + "metadata": {}, + "outputs": [], + "source": [ + "se.save_model_to_cache(model_id=1, path='ccfv3a.soc')" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_cells_densities.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_cells_densities.ipynb new file mode 100644 index 000000000..ed9ef3783 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_cells_densities.ipynb @@ -0,0 +1,156 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "df49679c", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "18978f9d", + "metadata": {}, + "source": [ + "### Neurons only" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eff26fc5", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import nrrd\n", + "\n", + "all_cells = False\n", + "\n", + "if all_cells:\n", + " db_schema = 'atlas_ccfv3a_averaged'\n", + " density_filename = '/gpfs/bbp.cscs.ch/project/proj84/piluso/share/Cyrille/CCFv3a/neuron_density_averaged_all_cells.nrrd'\n", + "else:\n", + " db_schema = 'atlas_ccfv3a_averaged'\n", + " density_filename = '/gpfs/bbp.cscs.ch/project/proj84/piluso/share/Cyrille/CCFv3a/neuron_density_averaged.nrrd'\n", + "\n", + "density_data, density_header = nrrd.read(density_filename)\n", + "\n", + "region_filename = os.path.join('/gpfs/bbp.cscs.ch/home/piluso/cell_atlas/05_final_run/blue_brain_atlas_pipeline/leaves_only', 'annotation_ccfv2_l23split_barrelsplit.nrrd')\n", + "region_data, region_header = nrrd.read(region_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2dfd6570-1b2e-4ea9-a68c-9c1ac283dab9", + "metadata": {}, + "outputs": [], + "source": [ + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string + ', schema: ' + db_schema)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3fba4353", + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import random\n", + "from tqdm import tqdm\n", + "\n", + "try:\n", + " space_directions = density_header['space directions']\n", + " scale = [\n", + " space_directions[0][0],\n", + " space_directions[1][1],\n", + " space_directions[2][2]\n", + " ]\n", + "except:\n", + " scale = [25.0, 25.0, 25.0]\n", + "\n", + "voxel_volume_um = scale[0] * scale[1] * scale[2]\n", + "millimeter_cube_um = 1000 * 1000 * 1000\n", + "D = millimeter_cube_um / voxel_volume_um\n", + "\n", + "print('Deleting existing cells')\n", + "with Session(engine) as session:\n", + " session.execute('DELETE FROM %s.cell' % db_schema)\n", + " session.commit()\n", + "\n", + "guid = 0\n", + "total = 0\n", + "\n", + "with Session(engine) as session:\n", + " volume_size = density_data.shape\n", + " for x in tqdm(range(volume_size[0])):\n", + " for y in range(volume_size[1]):\n", + " for z in range(volume_size[2]):\n", + " nb_cells = math.ceil(density_data[x][y][z] / D)\n", + " total += nb_cells\n", + " if nb_cells > 0:\n", + " region_id = region_data[x][y][z]\n", + " for i in range(nb_cells):\n", + " pos_x = (x + random.random()) * scale[0]\n", + " pos_y = (y + random.random()) * scale[1]\n", + " pos_z = (z + random.random()) * scale[2]\n", + "\n", + " session.execute(\n", + " 'INSERT INTO %s.cell VALUES (:guid, 0, :region_id, 0, :x, :y, :z, 0.0, 0.0, 0.0, 1.0)' % db_schema,\n", + " {\n", + " 'guid': int(guid),\n", + " 'region_id': int(region_id),\n", + " 'x': float(pos_x),\n", + " 'y': float(pos_y),\n", + " 'z': float(pos_z)\n", + " }\n", + " )\n", + " guid += 1\n", + " session.commit()\n", + " print(total)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "vscode": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_desconstruction.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_desconstruction.ipynb new file mode 100644 index 000000000..a5c7bc3a4 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_desconstruction.ipynb @@ -0,0 +1,438 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "34dd28a4", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "load_cells = True\n", + "load_meshes = False\n", + "cell_radius = 5.0 # Micrometters\n" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a_averaged'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765\n", + "]\n", + "\n", + "hippocampus_ids = [391, 775, 782, 399, 766, 19, 790, 407, 415, 799, 423, 807, 431, 815, 438, 823, 1080, 446, 454, 10702, 463, 10703, 10704, 726, 471, 982, 734, 479, 486, 742, 632, 495, 751, 758, 375, 504, 382]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109, 698]\n", + "regions_to_ignore = [\n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "82ad851e", + "metadata": {}, + "outputs": [], + "source": [ + "cerrebelum_filter = str(cerebellum_ids).replace('[','').replace(']','')\n", + "cerebellum_granular_layer_filter = str(cerebellum_granular_layer_ids).replace('[','').replace(']','')\n", + "cerebellum_molecular_layer_filter = str(cerebellum_molecular_layer_ids).replace('[','').replace(']','')\n", + "olfactory_bulb_filter = str(olfactory_bulb_ids).replace('[','').replace(']','')\n", + "medula_filter = str(medula_ids).replace('[','').replace(']','')\n", + "ignore_filter = str(fibers_ids + regions_to_ignore).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b375e8a4", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0fc758b1", + "metadata": {}, + "outputs": [], + "source": [ + "regions = list()\n", + "with Session(engine) as session:\n", + " data = session.execute('select distinct(region_guid) from %s.cell' % population_name)\n", + " for d in data.all():\n", + " regions.append(int(d[0]))\n", + "regions = list(set(regions) - set(regions_to_ignore))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "058958ec", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.start_model_loading_transaction()\n", + "status = core.set_application_parameters(image_stream_fps=0)\n", + "status = be.reset_scene()\n", + "for region in tqdm(regions):\n", + " atlas_assembly_name = '%d' % region\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid=%d' % region,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + " )\n", + "status = be.commit_model_loading_transaction()\n", + "status = core.set_application_parameters(image_stream_fps=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49aefad8", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % population_name)\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " k = 0\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " for material_id in material_ids:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " alpha = [1.0, 1.0, 1.0]\n", + "\n", + " if material_id in olfactory_bulb_ids:\n", + " value = 0.5 * float(k) / float(len(olfactory_bulb_ids))\n", + " alpha[0] -= value\n", + " alpha[1] -= value\n", + " alpha[2] -= value\n", + " k += 1\n", + "\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " palette.append([alpha[0] * c[0], alpha[1] * c[1], alpha[2] * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, \n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "status = core.set_renderer(\n", + " head_light=True,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eca612f0", + "metadata": {}, + "outputs": [], + "source": [ + "models = core.scene.models\n", + "centers = dict()\n", + "\n", + "delta = 0.0001\n", + "for model in models:\n", + " bounds = model['bounds']\n", + " aabb_min = bounds['min']\n", + " aabb_max = bounds['max']\n", + " aabb_center = [0, 0, 0]\n", + " for k in range(3):\n", + " aabb_center[k] = (aabb_min[k] + aabb_max[k]) / 2.0\n", + " centers[aabb_center[1]] = model['id']\n", + "sorted_centers = sorted(centers)" + ] + }, + { + "cell_type": "markdown", + "id": "d22e512f", + "metadata": {}, + "source": [ + "### Movie" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df067ebd-82e3-47f3-b8a5-02c124a85a8a", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "nb_models = len(model_ids)\n", + "nb_models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87caaf1a", + "metadata": {}, + "outputs": [], + "source": [ + "keys = [\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.6553724423068927, 0.5218272307970103, 0.5460616293637766],\n", + " 'focalDistance': 1.0,\n", + " 'origin': [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " 'up': [0.36593474619134375, -0.8518192703488876, 0.37482754993752265]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.0, 1.0, -4.440892098500626e-16],\n", + " 'focalDistance': 1.0,\n", + " 'origin': [7075.004011154174, -8914.854648733952, 5699.994689941412],\n", + " 'up': [0.0, 4.440892098500626e-16, 1.0]\n", + " }\n", + "]\n", + "\n", + "double_keys = list()\n", + "for key in keys:\n", + " double_keys.append(key)\n", + " double_keys.append(key)\n", + "nb_frames_per_key = int(nb_models / (len(double_keys) - 1))\n", + "mm.build_camera_path(double_keys, nb_frames_per_key, nb_frames_per_key / 10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "40ef076e-70c3-4caf-ad71-762813912b84", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " core.update_model(model_id, visible=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41a3e790-281c-409d-bd99-766307f9a69e", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/reconstruction/v1' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "k = 4\n", + "reversed_sorted_centers = list(reversed(sorted_centers))\n", + "\n", + "'''Show models in Y increasing order'''\n", + "frame = 0\n", + "for sorted_center in tqdm(reversed_sorted_centers):\n", + " model_id = centers[sorted_center]\n", + " core.update_model(model_id, visible=True)\n", + " mm.set_current_frame(frame)\n", + " mm.create_snapshot(\n", + " renderer='advanced', base_name='%05d' % frame,\n", + " path=output_folder, samples_per_pixel=64, size=[3840, 2160]\n", + " )\n", + " frame += 1" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_exploded.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_exploded.ipynb new file mode 100644 index 000000000..293b9e3c9 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_exploded.ipynb @@ -0,0 +1,485 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "2b356712", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "import os\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "cell_radius = 5.0" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ba25401", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a_averaged'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee9481b3", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "db_schema = population_name\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string + ', schema: ' + db_schema)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765, \n", + " 1557651847\n", + "]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109, 698]\n", + "regions_to_ignore = [\n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]\n", + "\n", + "regions_to_add = set(cerebellum_ids + cerebellum_granular_layer_ids + cerebellum_molecular_layer_ids + olfactory_bulb_ids + medula_ids)\n", + "regions_to_ignore = set(fibers_ids + regions_to_ignore)\n", + "\n", + "other_regions_ids = list()\n", + "with Session(engine) as session:\n", + " data = session.execute('SELECT guid FROM %s.region WHERE level>=6' % db_schema)\n", + " for d in data.all():\n", + " region_id = int(d[0])\n", + " if region_id not in regions_to_add and region_id not in regions_to_ignore:\n", + " regions_to_add.add(region_id)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d1b4bc0", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_center = [7075.026185864174,3862.47588645537,5699.969406561653]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "004cb724-f063-4cb1-990b-ee998aae85b0", + "metadata": {}, + "outputs": [], + "source": [ + "regions = list()\n", + "with Session(engine) as session:\n", + " data = session.execute('SELECT DISTINCT(region_guid) FROM %s.cell' % population_name)\n", + " for d in data.all():\n", + " regions.append(int(d[0]))\n", + "regions = list(set(regions) - set(regions_to_ignore))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.start_model_loading_transaction()\n", + "status = core.set_application_parameters(image_stream_fps=0)\n", + "status = be.reset_scene()\n", + "errors = list()\n", + "for hemisphere_id in range(2):\n", + " for region_id in tqdm(regions):\n", + " try:\n", + " filter = 'region_guid=%d AND z>%f' % (region_id, atlas_center[2])\n", + " if hemisphere_id == 1:\n", + " filter = 'region_guid=%d AND z<=%f' % (region_id, atlas_center[2])\n", + "\n", + " atlas_assembly_name = '%d_%d' % (region_id, hemisphere_id)\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=True, load_meshes=False, cell_radius=cell_radius,\n", + " cell_sql_filter=filter\n", + " )\n", + " except Exception as e:\n", + " errors.append(e)\n", + "status = be.commit_model_loading_transaction()\n", + "status = core.set_application_parameters(image_stream_fps=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % 'atlas_ccfv3a')\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2d01ab4", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " model_name = be.get_model_name(model_id)['name']\n", + " region_id = int(model_name.split('_')[0])\n", + " c = [1, 0, 0] # Error color\n", + " if region_id in region_colors:\n", + " c = region_colors[region_id]\n", + " alpha = 1.0\n", + " color = [alpha * c[0], alpha * c[1], alpha * c[2]]\n", + "\n", + " material_ids = be.get_material_ids(model_id)['ids'][:-1]\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " reflection_indices = list()\n", + " for material_id in material_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " user_params.append(0.0001)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(5.0)\n", + " reflection_indices.append(0.0)\n", + " refraction_indices.append(0.95)\n", + " palette.append(color)\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " reflection_indices=reflection_indices,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "status = core.set_renderer(\n", + " head_light=True,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b895919", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "nb_models = len(model_ids)\n", + "model_center = Vector3()\n", + "\n", + "model_bounds = dict()\n", + "for model_id in model_ids:\n", + " bounds = be.get_model_bounds(model_id)\n", + " model_bounds[model_id] = bounds\n", + " model_center.x += bounds.center.x\n", + " model_center.y += bounds.center.y\n", + " model_center.z += bounds.center.z\n", + "model_center.x /= nb_models\n", + "model_center.y /= nb_models\n", + "model_center.z /= nb_models" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "1e772f66", + "metadata": {}, + "outputs": [], + "source": [ + "def explode(factor, speed):\n", + " import math\n", + " model_ids = be.get_model_ids()['ids']\n", + " status = core.set_renderer(subsampling=64, max_accum_frames=0)\n", + " status = core.set_application_parameters(image_stream_fps=0)\n", + " for model_id in model_ids:\n", + " aabb = model_bounds[model_id]\n", + "\n", + " normal = Vector3(aabb.center.x - model_center.x, aabb.center.y - model_center.y, aabb.center.z - model_center.z)\n", + " length = math.sqrt(normal.x*normal.x + normal.y*normal.y + normal.z*normal.z)\n", + " normal.x /= length\n", + " normal.y /= length\n", + " normal.z /= length\n", + "\n", + " transformation={\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [\n", + " normal.x * speed * factor, \n", + " normal.y * speed * factor,\n", + " normal.z * speed * factor\n", + " ]\n", + " }\n", + " core.update_model(model_id, transformation=transformation)\n", + " status = core.set_renderer(subsampling=4, max_accum_frames=64)\n", + " status = core.set_application_parameters(image_stream_fps=20) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + " current='perspective'\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "a6cc0dad", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/explosion/v1' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "k = 4\n", + "spp = 64\n", + "image_size = [k*960, k*540]" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "ba096983", + "metadata": {}, + "outputs": [], + "source": [ + "camera_keys = [\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.0, 1.0, 0.0],\n", + " 'focalDistance': 1.0,\n", + " 'origin': [7075.004011154174, -8914.854648733952, 5699.994689941412],\n", + " 'up': [0.0, 0.0, 1.0]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.0, 1.0, 0.0],\n", + " 'focalDistance': 9834.88625865745,\n", + " 'origin': [6771.526760062025, -27624.77339430373, 5775.864168719532],\n", + " 'up': [0.0, 0.0, 1.0]\n", + " } \n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "5f0cc4b6", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 89%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ | 90/101 [16:25:23<2:00:26, 656.93s/it]\n" + ] + }, + { + "ename": "RequestError", + "evalue": "Socket connection closed", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mRequestError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[51], line 6\u001b[0m\n\u001b[1;32m 4\u001b[0m factor \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mfloat\u001b[39m(frame) \u001b[38;5;241m/\u001b[39m \u001b[38;5;28mfloat\u001b[39m(nb_frames)\n\u001b[1;32m 5\u001b[0m mm\u001b[38;5;241m.\u001b[39mset_current_frame(frame)\n\u001b[0;32m----> 6\u001b[0m \u001b[43mexplode\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfactor\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m10000\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m mm\u001b[38;5;241m.\u001b[39mcreate_snapshot(\n\u001b[1;32m 8\u001b[0m renderer\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124madvanced\u001b[39m\u001b[38;5;124m'\u001b[39m, path\u001b[38;5;241m=\u001b[39moutput_folder,\n\u001b[1;32m 9\u001b[0m base_name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%05d\u001b[39;00m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m frame,\n\u001b[1;32m 10\u001b[0m size\u001b[38;5;241m=\u001b[39mimage_size, samples_per_pixel\u001b[38;5;241m=\u001b[39mspp)\n", + "Cell \u001b[0;32mIn[50], line 25\u001b[0m, in \u001b[0;36mexplode\u001b[0;34m(factor, speed)\u001b[0m\n\u001b[1;32m 13\u001b[0m normal\u001b[38;5;241m.\u001b[39mz \u001b[38;5;241m/\u001b[39m\u001b[38;5;241m=\u001b[39m length\n\u001b[1;32m 15\u001b[0m transformation\u001b[38;5;241m=\u001b[39m{\n\u001b[1;32m 16\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrotation\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;241m0.0\u001b[39m, \u001b[38;5;241m0.0\u001b[39m, \u001b[38;5;241m0.0\u001b[39m, \u001b[38;5;241m1.0\u001b[39m],\n\u001b[1;32m 17\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mrotation_center\u001b[39m\u001b[38;5;124m'\u001b[39m: [\u001b[38;5;241m0.0\u001b[39m, \u001b[38;5;241m0.0\u001b[39m, \u001b[38;5;241m0.0\u001b[39m],\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 23\u001b[0m ]\n\u001b[1;32m 24\u001b[0m }\n\u001b[0;32m---> 25\u001b[0m \u001b[43mcore\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mupdate_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel_id\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtransformation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtransformation\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 26\u001b[0m status \u001b[38;5;241m=\u001b[39m core\u001b[38;5;241m.\u001b[39mset_renderer(subsampling\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m4\u001b[39m, max_accum_frames\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m64\u001b[39m)\n\u001b[1;32m 27\u001b[0m status \u001b[38;5;241m=\u001b[39m core\u001b[38;5;241m.\u001b[39mset_application_parameters(image_stream_fps\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m20\u001b[39m)\n", + "File \u001b[0;32m~/Notebooks/env/lib/python3.10/site-packages/bioexplorer/core/utils.py:193\u001b[0m, in \u001b[0;36madd_method.._decorator.._wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(func)\n\u001b[1;32m 192\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_wrapper\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m--> 193\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/Notebooks/env/lib/python3.10/site-packages/bioexplorer/core/utils.py:211\u001b[0m, in \u001b[0;36madd_progress_cancel_widget.._wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(func)\n\u001b[1;32m 210\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_wrapper\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs): \u001b[38;5;66;03m# pylint: disable=too-many-locals\u001b[39;00m\n\u001b[0;32m--> 211\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 213\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(result, rockets\u001b[38;5;241m.\u001b[39mRequestTask) \u001b[38;5;129;01mand\u001b[39;00m in_notebook():\n\u001b[1;32m 214\u001b[0m progress \u001b[38;5;241m=\u001b[39m FloatProgress(\u001b[38;5;28mmin\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m, \u001b[38;5;28mmax\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m, value\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m)\n", + "File \u001b[0;32m:4\u001b[0m, in \u001b[0;36mfunction\u001b[0;34m(self, id, bounding_box, bounds, metadata, name, path, transformation, visible, response_timeout)\u001b[0m\n", + "File \u001b[0;32m~/Notebooks/env/lib/python3.10/site-packages/rockets/client.py:100\u001b[0m, in \u001b[0;36mClient.request\u001b[0;34m(self, method, params, response_timeout)\u001b[0m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;129m@copydoc\u001b[39m(AsyncClient\u001b[38;5;241m.\u001b[39mrequest)\n\u001b[1;32m 93\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mrequest\u001b[39m(\n\u001b[1;32m 94\u001b[0m \u001b[38;5;28mself\u001b[39m, method, params\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, response_timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 95\u001b[0m ): \u001b[38;5;66;03m# noqa: D102,D205 pylint: disable=C0111,W9011,W9012,W9015,W9016\u001b[39;00m\n\u001b[1;32m 96\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 97\u001b[0m \u001b[38;5;124;03m :param int response_timeout: number of seconds to wait for the response\u001b[39;00m\n\u001b[1;32m 98\u001b[0m \u001b[38;5;124;03m :raises TimeoutError: if request was not answered within given response_timeout\u001b[39;00m\n\u001b[1;32m 99\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 100\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_sync\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mresponse_timeout\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/Notebooks/env/lib/python3.10/site-packages/rockets/client.py:119\u001b[0m, in \u001b[0;36mClient._call_sync\u001b[0;34m(self, original_function, response_timeout)\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_thread:\n\u001b[1;32m 116\u001b[0m future \u001b[38;5;241m=\u001b[39m asyncio\u001b[38;5;241m.\u001b[39mrun_coroutine_threadsafe(\n\u001b[1;32m 117\u001b[0m original_function, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_client\u001b[38;5;241m.\u001b[39mloop\n\u001b[1;32m 118\u001b[0m )\n\u001b[0;32m--> 119\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfuture\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43mresponse_timeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 120\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_client\u001b[38;5;241m.\u001b[39mloop\u001b[38;5;241m.\u001b[39mrun_until_complete(original_function)\n", + "File \u001b[0;32m/usr/lib/python3.10/concurrent/futures/_base.py:458\u001b[0m, in \u001b[0;36mFuture.result\u001b[0;34m(self, timeout)\u001b[0m\n\u001b[1;32m 456\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m CancelledError()\n\u001b[1;32m 457\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_state \u001b[38;5;241m==\u001b[39m FINISHED:\n\u001b[0;32m--> 458\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m__get_result\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 459\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 460\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m()\n", + "File \u001b[0;32m/usr/lib/python3.10/concurrent/futures/_base.py:403\u001b[0m, in \u001b[0;36mFuture.__get_result\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 401\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception:\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 403\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_exception\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 405\u001b[0m \u001b[38;5;66;03m# Break a reference cycle with the exception in self._exception\u001b[39;00m\n\u001b[1;32m 406\u001b[0m \u001b[38;5;28mself\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/Notebooks/env/lib/python3.10/site-packages/rockets/async_client.py:171\u001b[0m, in \u001b[0;36mAsyncClient.request\u001b[0;34m(self, method, params)\u001b[0m\n\u001b[1;32m 168\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setup_progress_filter(response_future, request_id)\n\u001b[1;32m 170\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msend(request\u001b[38;5;241m.\u001b[39mjson)\n\u001b[0;32m--> 171\u001b[0m \u001b[38;5;28;01mawait\u001b[39;00m response_future\n\u001b[1;32m 172\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response_future\u001b[38;5;241m.\u001b[39mresult()\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m asyncio\u001b[38;5;241m.\u001b[39mCancelledError:\n", + "\u001b[0;31mRequestError\u001b[0m: Socket connection closed" + ] + } + ], + "source": [ + "mm.build_camera_path(camera_keys, 100, 1)\n", + "nb_frames = mm.get_nb_frames()\n", + "for frame in tqdm(range(nb_frames)):\n", + " factor = float(frame) / float(nb_frames)\n", + " mm.set_current_frame(frame)\n", + " explode(factor, 10000)\n", + " mm.create_snapshot(\n", + " renderer='advanced', path=output_folder,\n", + " base_name='%05d' % frame,\n", + " size=image_size, samples_per_pixel=spp)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dab567c1-c758-488b-9c45-cbb6749788ab", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_movie_key_frames.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_movie_key_frames.ipynb new file mode 100644 index 000000000..3ab056b22 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_movie_key_frames.ipynb @@ -0,0 +1,134 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "34dd28a4", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, MovieMaker\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "366f18ed", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'OK'" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "keys = [\n", + " # Initial view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.6553724423068927, 0.5218272307970103, 0.5460616293637766],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " 'up': [0.36593474619134375, -0.8518192703488876, 0.37482754993752265]\n", + " }\n", + " ,\n", + " # Olfactory bulb\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.7469370424463216, 0.3606491560448456, 0.5585850345880041],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [-3120.532189038173, 1835.5169097748767, 2165.927051941915],\n", + " 'up': [0.3224948767666639, -0.9311843737781622, 0.16997857656370974]\n", + " }\n", + " ,\n", + " # Side view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-1.3331370380301985e-16, -1.2246467991473532e-16, 1.0],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [7236.727651380601, 4482.658523559142, -9145.317280084804],\n", + " 'up': [-4.440892098500626e-16, -1.0, -1.2246467991473537e-16]\n", + " }\n", + " ,\n", + " # Cerebellum\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-0.5191155653746677, 0.17713002641529518, 0.836148302353031],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [15391.238801629486, 2988.224146474133, -1927.6054642919696],\n", + " 'up': [-0.11693830913040375, -0.9838094070689234, 0.13581046506221545]\n", + " }\n", + " ,\n", + " # Side view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-1.3331370380301985e-16, -1.2246467991473532e-16, 1.0],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [7236.727651380601, 4482.658523559142, -9145.317280084804],\n", + " 'up': [-4.440892098500626e-16, -1.0, -1.2246467991473537e-16]\n", + " }\n", + " ,\n", + " # Initial view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.6553724423068927, 0.5218272307970103, 0.5460616293637766],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " 'up': [0.36593474619134375, -0.8518192703488876, 0.37482754993752265]\n", + " }\n", + "]\n", + "mm.attach_camera_handler(keys, 50, 25)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_nissl.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_nissl.ipynb new file mode 100644 index 000000000..1c4fd077c --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_nissl.ipynb @@ -0,0 +1,577 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "34dd28a4", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "load_cells = True\n", + "load_meshes = False\n", + "cell_radius = 1.0 # Micrometters\n", + "\n", + "nissl_enabled = True\n" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a'\n", + "if nissl_enabled:\n", + " population_name = 'atlas_ccfv3a_all_cells'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765\n", + "]\n", + "\n", + "hippocampus_ids = [391, 775, 782, 399, 766, 19, 790, 407, 415, 799, 423, 807, 431, 815, 438, 823, 1080, 446, 454, 10702, 463, 10703, 10704, 726, 471, 982, 734, 479, 486, 742, 632, 495, 751, 758, 375, 504, 382]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109, 698]\n", + "regions_to_ignore = [\n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "82ad851e", + "metadata": {}, + "outputs": [], + "source": [ + "cerrebelum_filter = str(cerebellum_ids).replace('[','').replace(']','')\n", + "cerebellum_granular_layer_filter = str(cerebellum_granular_layer_ids).replace('[','').replace(']','')\n", + "cerebellum_molecular_layer_filter = str(cerebellum_molecular_layer_ids).replace('[','').replace(']','')\n", + "olfactory_bulb_filter = str(olfactory_bulb_ids).replace('[','').replace(']','')\n", + "medula_filter = str(medula_ids).replace('[','').replace(']','')\n", + "ignore_filter = str(fibers_ids + regions_to_ignore).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa65b308", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerrebelum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s)' % (cerrebelum_filter, cerebellum_granular_layer_filter, cerebellum_molecular_layer_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "48f8514c", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerebellum_granular_layer'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s)' % cerebellum_granular_layer_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9eda5d4e", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerebellum_molecular_layer'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s)' % cerebellum_molecular_layer_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b823a7d2", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerrebelum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s)' % (cerrebelum_filter, cerebellum_granular_layer_filter, cerebellum_molecular_layer_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'olfactory_bulb'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s)' % olfactory_bulb_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9a11e2b", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'medula'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='guid IN (%s)' % medula_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00721fa3", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'other_regions'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " region_sql_filter='level>=6 AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) ' % (cerrebelum_filter, medula_filter, olfactory_bulb_filter, ignore_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b375e8a4", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "49aefad8", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % population_name)\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " k = 0\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " user_parameters = list()\n", + " for material_id in material_ids:\n", + " if not nissl_enabled:\n", + " c = [0.8, 0.3, 0.8]\n", + " else:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " alpha = [2.0, 2.0, 2.0]\n", + "\n", + " if material_id in olfactory_bulb_ids:\n", + " value = 0.5 * float(k) / float(len(olfactory_bulb_ids))\n", + " alpha[0] -= value\n", + " alpha[1] -= value\n", + " alpha[2] -= value\n", + " k += 1\n", + "\n", + " shading_modes.append(be.shading_mode.BASIC)\n", + " user_parameters.append(3.0)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " palette.append([alpha[0] * c[0], alpha[1] * c[1], alpha[2] * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_parameters,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8814e6b", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(0.5, 0.5, 1.2),\n", + " intensity=1.0, is_visible=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "status = core.set_renderer(\n", + " head_light=False,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 2000\n", + "params.shadow_intensity = 0.75\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 1.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "d22e512f", + "metadata": {}, + "source": [ + "## Movies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "34910091", + "metadata": {}, + "outputs": [], + "source": [ + "k = 4\n", + "spp = 128" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ee46eb5", + "metadata": {}, + "outputs": [], + "source": [ + "mm.set_current_frame(360, camera_params=core.PerspectiveCameraParams())\n", + "# " + ] + }, + { + "cell_type": "markdown", + "id": "24e5466a", + "metadata": {}, + "source": [ + "### Navigation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87caaf1a", + "metadata": {}, + "outputs": [], + "source": [ + "aperture = 0.025\n", + "keys = [\n", + " # Initial view\n", + "{'apertureRadius': aperture,\n", + " 'direction': [0.6854871487785866, 0.5030206306269551, 0.5263816239412848],\n", + " 'focalDistance': 9253.397008627542,\n", + " 'origin': [-2527.6921523606516, -2245.5463934403388, -1339.1154343307448],\n", + " 'up': [0.3547020737415614, -0.8620920242723422, 0.3619168144331669]}\n", + " ,\n", + "\n", + "{'apertureRadius': aperture,\n", + " 'direction': [0.9975381609399205, 0.04844860180797254, 0.050698623762920114],\n", + " 'focalDistance': 2387.7733912277613,\n", + " 'origin': [-1720.2286994653537, 3634.2226785222274, 5026.336826831128],\n", + " 'up': [0.04671215209119187, -0.998298780497687, 0.034892974992694815]}\n", + " ,\n", + "\n", + "{'apertureRadius': aperture,\n", + " 'direction': [0.9999993657561829,\n", + " 0.0007781206247115814,\n", + " 0.0008142576529535095],\n", + " 'focalDistance': 5859.641666636447,\n", + " 'origin': [1862.7944308086023, 4243.750431897813, 5686.213051301703],\n", + " 'up': [0.0007776645989116045, -0.9999995406967854, 0.0005602178057298285]}\n", + " ,\n", + "\n", + "{'apertureRadius': aperture,\n", + " 'direction': [0.7308813935839826, 0.07575503852793797, 0.6782872272499065],\n", + " 'focalDistance': 30.807409739895085,\n", + " 'origin': [6458.6508079842415, 3421.2281248833124, 1180.0342772712302],\n", + " 'up': [0.03898281377442966, -0.9968320745778512, 0.06932644028828852]}\n", + " ,\n", + "\n", + "{'apertureRadius': aperture,\n", + " 'direction': [0.42515353348261525, 0.0025447669944821706, 0.905117670321484],\n", + " 'focalDistance': 636.1168762759829,\n", + " 'origin': [10006.001482705391, 3638.5421392848107, 626.3684581192696],\n", + " 'up': [0.08352786230975352, -0.9958391360990704, -0.036435027534231265]}\n", + " ,\n", + "\n", + "{'apertureRadius': aperture,\n", + " 'direction': [-0.5870523621453636, 0.29694338283650284, 0.7531229325210882],\n", + " 'focalDistance': 2103.72572082172,\n", + " 'origin': [13026.51177665402, 2036.3563402845139, 465.3209265548437],\n", + " 'up': [-0.15184808309939798, -0.9541775161225008, 0.25785156075799415]}\n", + " ,\n", + "\n", + "{'apertureRadius': aperture,\n", + " 'direction': [-0.012183419094194578,\n", + " 0.9998127860875813,\n", + " 0.015031868645106305],\n", + " 'focalDistance': 9389.921671658274,\n", + " 'origin': [7850.708136173812, -5682.044848407617, 5581.320612252858],\n", + " 'up': [-0.0031777874249825566, -0.015071623301217585, 0.9998813668821657]}\n", + " \n", + " ,\n", + "{'apertureRadius': aperture,\n", + " 'direction': [0.6854871487785866, 0.5030206306269551, 0.5263816239412848],\n", + " 'focalDistance': 9253.397008627542,\n", + " 'origin': [-2527.6921523606516, -2245.5463934403388, -1339.1154343307448],\n", + " 'up': [0.3547020737415614, -0.8620920242723422, 0.3619168144331669]}\n", + "\n", + " ]\n", + "\n", + "double_keys = list()\n", + "for key in keys:\n", + " double_keys.append(key)\n", + " double_keys.append(key)\n", + "mm.build_camera_path(double_keys, 50, 25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e1945aa4", + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "output_folder = '/scratch/videos/atlas/ccfv3_fly_through/v1'\n", + "k = 4\n", + "\n", + "for frame in tqdm(range(mm.get_nb_frames())):\n", + " mm.set_current_frame(frame)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_simple_slices.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_simple_slices.ipynb new file mode 100644 index 000000000..32afa6433 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_simple_slices.ipynb @@ -0,0 +1,486 @@ +{ + "cells": [ + { + "cell_type": "mark + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "088a33a2", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "load_cells = True\n", + "load_meshes = False\n", + "\n", + "all_cell_types = True\n", + "nissl_enabled = True" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dfa698ae", + "metadata": {}, + "outputs": [], + "source": [ + "prefix = ''\n", + "cell_radius = 2.5 # Micrometters\n", + "if nissl_enabled:\n", + " prefix = 'nissl'" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "if all_cell_types:\n", + " population_name = 'atlas_ccfv3a_all_cells'\n", + " output_folder = '/scratch/images/atlas/%s/slices/all_cell_types/%s' % (population_name, prefix)\n", + "else:\n", + " population_name = 'atlas_ccfv3a_averaged'\n", + " output_folder = '/scratch/images/atlas/%s/slices/neuron_only/%s' % (population_name, prefix)\n", + "\n", + "print(output_folder)\n", + "os.makedirs(output_folder, exist_ok=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()\n", + "atlas_center = [7075.026185864174,3862.47588645537,5699.969406561653]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9396d113", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765\n", + "]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109, 698]\n", + "regions_to_ignore = [\n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]\n", + "ignore_filter = str(fibers_ids + regions_to_ignore).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f26843ef", + "metadata": {}, + "outputs": [], + "source": [ + "coronal_ids = [65, 176, 243, 287, 318, 346, 400, 461, 498]\n", + "axial_ids = [85, 142, 218, 231]\n", + "sagittal_ids = [102, 141, 168, 182, 199]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ccfa1642", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "070ecf1b", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % population_name)\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "481bfae6", + "metadata": {}, + "outputs": [], + "source": [ + "def set_materials():\n", + " model_ids = be.get_model_ids()['ids']\n", + " for model_id in model_ids:\n", + " k = 0\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " for material_id in material_ids:\n", + " alpha = [1.0, 1.0, 1.0]\n", + " if nissl_enabled:\n", + " c = [0.8, 0.3, 0.8]\n", + " else:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + "\n", + " if material_id in olfactory_bulb_ids:\n", + " value = 0.5 * float(k) / float(len(olfactory_bulb_ids))\n", + " alpha[0] -= value\n", + " alpha[1] -= value\n", + " alpha[2] -= value\n", + " k += 1\n", + "\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " palette.append([alpha[0] * c[0], alpha[1] * c[1], alpha[2] * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, \n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d9a9d84", + "metadata": {}, + "outputs": [], + "source": [ + "params = core.OrthographicCameraParams()\n", + "params.height = 18000\n", + "status = core.set_camera_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93cc1bae", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "if nissl_enabled:\n", + " background_color = [1.0, 1.0, 1.0]\n", + "\n", + "status = core.set_renderer(\n", + " head_light=False,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)\n", + "\n", + "params = core.AmbientOcclusionRendererParams()\n", + "params.gi_ray_length = 1000\n", + "params.gi_samples = 1\n", + "params.max_ray_depth = 1\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e93f9596", + "metadata": {}, + "outputs": [], + "source": [ + "k = 4\n", + "spp = 64" + ] + }, + { + "cell_type": "markdown", + "id": "beb4efed", + "metadata": {}, + "source": [ + "### Coronal" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d53503a", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " orientation=[0.707, 0.0, -0.707, 0.0],\n", + " position=[-5368.310679624959, 4324.6929931640625, 5700.034912109377],\n", + " target=[1637.5000610351565, 4324.6929931640625, 5700.034912109375], \n", + ")\n", + "\n", + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(1.0, 0.0, 0.0),\n", + " intensity=1.0, is_visible=False)\n", + "\n", + "for coronal_id in tqdm(coronal_ids):\n", + " try:\n", + " be.reset_scene()\n", + " filter = 'x>=%f * 25.0 AND x<(%f + 1) * 25.0' % (coronal_id, coronal_id)\n", + " atlas_assembly_name = 'Slice'\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " cell_sql_filter='%s AND region_guid IN (SELECT guid FROM %s.region WHERE guid NOT IN (%s))' % (filter, population_name, ignore_filter)\n", + " )\n", + " set_materials()\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='ccfv3a_coronal_%05d_radius_%dnm_color_v1' % (coronal_id, cell_radius * 1000),\n", + " size=[k * 960, k * 960],\n", + " samples_per_pixel=spp)\n", + " \n", + " if not nissl_enabled:\n", + " mm.create_snapshot(\n", + " renderer='ambient_occlusion',\n", + " path=output_folder, base_name='ccfv3a_coronal_%05d_radius_%dnm_black_and_white_v1' % (coronal_id, cell_radius * 1000),\n", + " size=[k * 960, k * 960],\n", + " samples_per_pixel=spp)\n", + " except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93a77ae0", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " orientation=[-0.5, 0.5,-0.5,-0.5],\n", + " position=[7937.414306640625, -16869.667221804862, 5697.8657226562555],\n", + " target=[7937.414306640625, 2137.5, 5697.86572265625], \n", + ")\n", + "\n", + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(0.0, 1.0, 0.0),\n", + " intensity=1.0, is_visible=False)\n", + "\n", + "for id in tqdm(axial_ids):\n", + " try:\n", + " be.reset_scene()\n", + " filter = 'y>=%f * 25.0 AND y<(%f + 1) * 25.0' % (id, id)\n", + " atlas_assembly_name = 'Slice'\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " cell_sql_filter='%s AND region_guid IN (SELECT guid FROM %s.region WHERE guid NOT IN (%s))' % (filter, population_name, ignore_filter)\n", + " )\n", + " set_materials()\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='ccfv3a_axial_%05d_radius_%dnm_color_v1' % (id, cell_radius * 1000),\n", + " size=[k * 960, k * 960],\n", + " samples_per_pixel=spp)\n", + " if not nissl_enabled:\n", + " mm.create_snapshot(\n", + " renderer='ambient_occlusion',\n", + " path=output_folder, base_name='ccfv3a_axial_%05d_radius_%dnm_black_and_white_v1' % (id, cell_radius * 1000),\n", + " size=[k * 960, k * 960],\n", + " samples_per_pixel=spp)\n", + " except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f01b3e71", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " orientation=[-1.0, 0.0, 0.0, 0.0],\n", + " position=[8226.36230468751, 4174.857452392578, -18319.90144367743],\n", + " target=[8226.3623046875, 4174.857452392578, 2562.5001220703125]\n", + ")\n", + "\n", + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(0.0, 0.0, 1.0),\n", + " intensity=1.0, is_visible=False)\n", + "\n", + "for id in tqdm(sagittal_ids):\n", + " try:\n", + " be.reset_scene()\n", + " filter = 'z>=%f * 25.0 AND z<(%f + 1) * 25.0' % (id, id)\n", + " atlas_assembly_name = 'Slice'\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " cell_sql_filter='%s AND region_guid IN (SELECT guid FROM %s.region WHERE guid NOT IN (%s))' % (filter, population_name, ignore_filter)\n", + " )\n", + " set_materials()\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='ccfv3a_sagittal_%05d_radius_color_%dnm_v1' % (id, cell_radius * 1000),\n", + " size=[k * 960, k * 960],\n", + " samples_per_pixel=spp)\n", + " if not nissl_enabled:\n", + " mm.create_snapshot(\n", + " renderer='ambient_occlusion',\n", + " path=output_folder, base_name='ccfv3a_sagittal_%05d_radius_%dnm_black_and_white_v1' % (id, cell_radius * 1000),\n", + " size=[k * 960, k * 960],\n", + " samples_per_pixel=spp)\n", + " except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "markdown", + "id": "e81ee38e-74ef-45fc-9ce4-8268966068a3", + "metadata": {}, + "source": [ + "##### " + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_slices.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_slices.ipynb new file mode 100644 index 000000000..8d96f7d37 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_slices.ipynb @@ -0,0 +1,509 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "d2ce7887", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "load_cells = True\n", + "load_meshes = False\n", + "cell_radius = 5.0 # Micrometters" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a_averaged'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()\n", + "atlas_center = [7075.026185864174,3862.47588645537,5699.969406561653]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9396d113", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765\n", + "]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109, 698]\n", + "regions_to_ignore = [\n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]\n", + "ignore_filter = str(fibers_ids + regions_to_ignore).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8bfd696b", + "metadata": {}, + "outputs": [], + "source": [ + "for x in range(2):\n", + " for y in range(2):\n", + " for z in range(2):\n", + " filter = '('\n", + " if x == 0:\n", + " filter += 'x>7075'\n", + " else:\n", + " filter += 'x<=7075'\n", + " filter += ' AND '\n", + " if y == 0:\n", + " filter += 'y>3862'\n", + " else:\n", + " filter += 'y<=3862'\n", + " filter += ' AND '\n", + " if z == 0:\n", + " filter += 'z>5699'\n", + " else:\n", + " filter += 'z<=5699'\n", + " filter += ')'\n", + " atlas_assembly_name = filter\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " cell_sql_filter='%s AND region_guid IN (SELECT guid FROM %s.region WHERE guid NOT IN (%s))' % (filter, population_name, ignore_filter),\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1ec752d8", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d05be2f4", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % 'atlas_ccfv3a')\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " k = 0\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " for material_id in material_ids:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " alpha = [1.0, 1.0, 1.0]\n", + "\n", + " if material_id in olfactory_bulb_ids:\n", + " value = 0.5 * float(k) / float(len(olfactory_bulb_ids))\n", + " alpha[0] -= value\n", + " alpha[1] -= value\n", + " alpha[2] -= value\n", + " k += 1\n", + "\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " palette.append([alpha[0] * c[0], alpha[1] * c[1], alpha[2] * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, \n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "status = core.set_renderer(\n", + " head_light=True,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d13f9bb5", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " head_light=False,\n", + " current='ambient_occlusion', background_color=[0,0,0],\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AmbientOcclusionRendererParams()\n", + "params.gi_ray_length = 1000\n", + "params.gi_samples = 1\n", + "params.max_ray_depth = 1\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "273efd4d", + "metadata": {}, + "source": [ + "## Snapshots" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1beadb37", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "output_folder = '/scratch/images/atlas/%s' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "k = 4\n", + "spp = 64" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc60f45f", + "metadata": {}, + "outputs": [], + "source": [ + "cameras = [\n", + " [\n", + " [0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " [6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + " 'perspective'\n", + " ]\n", + " ,\n", + " [\n", + " [0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " [6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + " 'orthographic'\n", + " ]\n", + " ,\n", + " [\n", + " [0.7071067811865474, 0.0, 0.0, 0.7071067811865477],\n", + " [7037.267621994019, -6075.033398596237, 5699.9692382812555],\n", + " [7037.267621994019, 3812.2357177734375, 5699.96923828125], \n", + " 'orthographic'\n", + " ]\n", + "]\n", + "\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ad89941", + "metadata": {}, + "outputs": [], + "source": [ + "def show_models(visible_ids):\n", + " model_ids = be.get_model_ids()['ids']\n", + " i = 0\n", + " for model_id in model_ids:\n", + " visible = (visible_ids[i] == 1)\n", + " core.update_model(model_id, visible=visible)\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d408145f", + "metadata": {}, + "outputs": [], + "source": [ + "models_to_show = [\n", + " [1, 1, 1, 1, 1, 1, 1, 1],\n", + " [1, 1, 1, 1, 0, 0, 0, 0],\n", + " [1, 1, 1, 1, 1, 1, 0, 0],\n", + " [1, 1, 1, 1, 1, 1, 1, 0],\n", + " [1, 1, 1, 0, 1, 1, 1, 0],\n", + " [1, 1, 0, 0, 1, 1, 0, 0],\n", + "]\n", + "\n", + "version = 0\n", + "for camera in cameras:\n", + " core.set_camera(\n", + " current=camera[3],\n", + " orientation=camera[0], position=camera[1], target=camera[2]\n", + " )\n", + " for mts in models_to_show:\n", + " show_models(mts)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%s_radius_%dnm_%s_set1_%03d' % (population_name, cell_radius * 1000, camera[3], version),\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=128)\n", + " mm.create_snapshot(\n", + " renderer='ambient_occlusion',\n", + " path=output_folder, base_name='%s_bw_radius_%dnm_%s_set1_%03d' % (population_name, cell_radius * 1000, camera[3], version),\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=128)\n", + " version += 1" + ] + }, + { + "cell_type": "markdown", + "id": "75d6bda1", + "metadata": {}, + "source": [ + "### Set 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72a93dde", + "metadata": {}, + "outputs": [], + "source": [ + "cameras = [\n", + " [\n", + " [0.3568657918956826, -0.2889789424949062, 0.878446217895065, 0.132174958426507],\n", + " [18142.5437226011, -5635.84419998349, 16204.894769982748],\n", + " [8028.432262684154, 5423.561490312162, 5582.073515085155],\n", + " 'perspective'\n", + " ]\n", + " ,\n", + " [\n", + " [0.3568657918956826, -0.2889789424949062, 0.878446217895065, 0.132174958426507],\n", + " [18142.5437226011, -5635.84419998349, 16204.894769982748],\n", + " [8028.432262684154, 5423.561490312162, 5582.073515085155],\n", + " 'orthographic'\n", + " ]\n", + "]\n", + "\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c63a53a2", + "metadata": {}, + "outputs": [], + "source": [ + "models_to_show = [\n", + " [1, 1, 1, 1, 1, 1, 1, 1],\n", + " [0, 0, 0, 0, 1, 1, 1, 1],\n", + " [1, 1, 0, 0, 1, 1, 1, 1],\n", + " [1, 1, 0, 1, 1, 1, 1, 1],\n", + " [1, 1, 0, 1, 1, 1, 0, 1],\n", + " [1, 1, 0, 0, 1, 1, 0, 0],\n", + "]\n", + "\n", + "version = 0\n", + "for camera in cameras:\n", + " core.set_camera(\n", + " current=camera[3],\n", + " orientation=camera[0], position=camera[1], target=camera[2]\n", + " )\n", + " for mts in models_to_show:\n", + " show_models(mts)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%s_radius_%dnm_%s_set2_%03d' % (population_name, cell_radius * 1000, camera[3], version),\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=128)\n", + " mm.create_snapshot(\n", + " renderer='ambient_occlusion',\n", + " path=output_folder, base_name='%s_bw_radius_%dnm_%s_set2_%03d' % (population_name, cell_radius * 1000, camera[3], version),\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=128)\n", + " version += 1" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_slices_hippocampus.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_slices_hippocampus.ipynb new file mode 100644 index 000000000..784210e8b --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_slices_hippocampus.ipynb @@ -0,0 +1,541 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "load_cells = True\n", + "load_meshes = False\n", + "cell_radius = 2.5 # Micrometters" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()\n", + "atlas_center = [7075.026185864174,3862.47588645537,5699.969406561653]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9396d113", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765\n", + "]\n", + "\n", + "hippocampus_ids = [391, 775, 782, 399, 766, 19, 790, 407, 415, 799, 423, 807, 431, 815, 438, 823, 1080, 446, 454, 10702, 463, 10703, 10704, 726, 471, 982, 734, 479, 486, 742, 632, 495, 751, 758, 375, 504, 382]\n", + "hippocampus_filter = str(hippocampus_ids).replace('[','').replace(']','')\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109, 698]\n", + "regions_to_ignore = [\n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]\n", + "ignore_filter = str(hippocampus_ids + fibers_ids + regions_to_ignore).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8bfd696b", + "metadata": {}, + "outputs": [], + "source": [ + "for x in range(2):\n", + " for y in range(2):\n", + " for z in range(2):\n", + " filter = '('\n", + " if x == 0:\n", + " filter += 'x>7075'\n", + " else:\n", + " filter += 'x<=7075'\n", + " filter += ' AND '\n", + " if y == 0:\n", + " filter += 'y>3862'\n", + " else:\n", + " filter += 'y<=3862'\n", + " filter += ' AND '\n", + " if z == 0:\n", + " filter += 'z>5699'\n", + " else:\n", + " filter += 'z<=5699'\n", + " filter += ')'\n", + " # atlas_assembly_name = filter\n", + " # be.remove_assembly(atlas_assembly_name)\n", + " # atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " # atlas_model = be.add_atlas(\n", + " # assembly_name=atlas_assembly_name,\n", + " # population_name=population_name,\n", + " # load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " # cell_sql_filter='%s AND region_guid IN (SELECT guid FROM %s.region WHERE guid NOT IN (%s))' % (filter, population_name, ignore_filter),\n", + " # )\n", + "\n", + " assembly_name = 'hippocampus ' + filter\n", + " be.remove_assembly(assembly_name)\n", + " atlas_assembly = be.add_assembly(assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=assembly_name,\n", + " population_name=population_name,\n", + " load_cells=load_cells, load_meshes=load_meshes, cell_radius=cell_radius,\n", + " cell_sql_filter='%s AND region_guid IN (%s)' % (filter, hippocampus_filter)\n", + " ) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "import math\n", + "f = open('brain_regions.json')\n", + "obj = json.load(f)\n", + "\n", + "region_colors=dict()\n", + "def node_color(node):\n", + " node_id = node['id']\n", + " color = node['color_hex_triplet']\n", + " region_colors[node_id] = color\n", + " for child in node['children']:\n", + " node_color(child)\n", + "\n", + "for node in obj['msg']:\n", + " node_color(node)\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))\n", + "\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " k = 0\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " for material_id in material_ids:\n", + " c = [255, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " id = region_colors[m_id]\n", + " c = hex_to_rgb(id)\n", + " alpha = [1.0, 1.0, 1.0]\n", + "\n", + " if material_id in olfactory_bulb_ids:\n", + " value = 0.5 * float(k) / float(len(olfactory_bulb_ids))\n", + " alpha[0] -= value\n", + " alpha[1] -= value\n", + " alpha[2] -= value\n", + " k += 1\n", + "\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " palette.append([alpha[0] * c[0] / 255.0, alpha[1] * c[1] / 255.0, alpha[2] * c[2] / 255.0])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, \n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d13f9bb5", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " head_light=False,\n", + " current='ambient_occlusion', background_color=[0,0,0],\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AmbientOcclusionRendererParams()\n", + "params.gi_ray_length = 1000\n", + "params.gi_samples = 1\n", + "params.max_ray_depth = 1\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "51bf5f0e", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " head_light=False,\n", + " current='advanced', background_color=[7.0/256.0, 33/256.0, 53/256.0],\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7cbc9a5e", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(0.5, 0.5, 0.2),\n", + " intensity=1.0, is_visible=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " position=[-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " target=[6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "id": "273efd4d", + "metadata": {}, + "source": [ + "## Snapshots" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1beadb37", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/images/atlas/inside'\n", + "k = 6" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc60f45f", + "metadata": {}, + "outputs": [], + "source": [ + "cameras = [\n", + " [\n", + " [0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " [6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + " 'perspective'\n", + " ]\n", + " ,\n", + " [\n", + " [0.8744458160476791, 0.09151682620478456, -0.401564627390352, 0.25634943991934056],\n", + " [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " [6733.589672442965, 4796.273454159725, 6016.635720470601],\n", + " 'orthographic'\n", + " ]\n", + " ,\n", + " [\n", + " [0.7071067811865474, 0.0, 0.0, 0.7071067811865477],\n", + " [7037.267621994019, -6075.033398596237, 5699.9692382812555],\n", + " [7037.267621994019, 3812.2357177734375, 5699.96923828125], \n", + " 'orthographic'\n", + " ]\n", + "]\n", + "\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "\n", + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(0.5, 0.5, 0.2),\n", + " intensity=1.0, is_visible=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5ad89941", + "metadata": {}, + "outputs": [], + "source": [ + "def show_models(visible_ids):\n", + " model_ids = be.get_model_ids()['ids']\n", + " i = 0\n", + " for model_id in model_ids:\n", + " visible = (visible_ids[i] == 1)\n", + " core.update_model(model_id, visible=visible)\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f4ffebed", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(0.5, 0.5, 0.2),\n", + " intensity=0.8, is_visible=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d408145f", + "metadata": {}, + "outputs": [], + "source": [ + "models_to_show = [\n", + " [1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0],\n", + " [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0],\n", + " [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0],\n", + " [1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0],\n", + " [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0],\n", + "]\n", + "\n", + "for camera in cameras:\n", + " core.set_camera(\n", + " current=camera[3],\n", + " orientation=camera[0], position=camera[1], target=camera[2]\n", + " )\n", + " version = 0\n", + " for mts in models_to_show:\n", + " show_models(mts)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='ccfv3a_inside_regions_radius_%dnm_%s_v3%03d' % (cell_radius * 1000, camera[3], version),\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=128)\n", + " mm.create_snapshot(\n", + " renderer='ambient_occlusion',\n", + " path=output_folder, base_name='black_and_white_ccfv3a_inside_regions_radius_%dnm_%s_v3%03d' % (cell_radius * 1000, camera[3], version),\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=128)\n", + " version += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7acae008", + "metadata": {}, + "outputs": [], + "source": [ + "show_models(models_to_show[4])\n" + ] + }, + { + "cell_type": "markdown", + "id": "75d6bda1", + "metadata": {}, + "source": [ + "### Set 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "72a93dde", + "metadata": {}, + "outputs": [], + "source": [ + "cameras = [\n", + " [\n", + " [0.3568657918956826, -0.2889789424949062, 0.878446217895065, 0.132174958426507],\n", + " [18142.5437226011, -5635.84419998349, 16204.894769982748],\n", + " [8028.432262684154, 5423.561490312162, 5582.073515085155],\n", + " 'perspective'\n", + " ]\n", + " ,\n", + " [\n", + " [0.3568657918956826, -0.2889789424949062, 0.878446217895065, 0.132174958426507],\n", + " [18142.5437226011, -5635.84419998349, 16204.894769982748],\n", + " [8028.432262684154, 5423.561490312162, 5582.073515085155],\n", + " 'orthographic'\n", + " ]\n", + "]\n", + "\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "\n", + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(-0.5, 0.5, -0.2),\n", + " intensity=1.0, is_visible=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c63a53a2", + "metadata": {}, + "outputs": [], + "source": [ + "models_to_show = [\n", + " [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],\n", + " [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1],\n", + " [1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n", + " [1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1],\n", + " [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0],\n", + "]\n", + "\n", + "for camera in cameras:\n", + " core.set_camera(\n", + " current=camera[3],\n", + " orientation=camera[0], position=camera[1], target=camera[2]\n", + " )\n", + " version = 0\n", + " for mts in models_to_show:\n", + " show_models(mts)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='ccfv3a_inside_regions_radius_%dnm_%s_v4%03d' % (cell_radius * 1000, camera[3], version),\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=128)\n", + " mm.create_snapshot(\n", + " renderer='ambient_occlusion',\n", + " path=output_folder, base_name='black_and_white_ccfv3a_inside_regions_radius_%dnm_%s_v4%03d' % (cell_radius * 1000, camera[3], version),\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=128)\n", + " version += 1" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('env': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_spinalcord_deconstruction.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_spinalcord_deconstruction.ipynb new file mode 100644 index 000000000..d3a953351 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_spinalcord_deconstruction.ipynb @@ -0,0 +1,1053 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "084953fe", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "697e36dd", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer\n", + "from tqdm import tqdm\n", + "from bioexplorer import MovieMaker\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "core = be.core_api()\n", + "mm =MovieMaker(be)\n", + "status = be.reset_scene()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "383eb057", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "from tqdm.notebook import tqdm\n", + "import numpy as np\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "982876b0", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_camera(\n", + " orientation=[0.8801387842784558, 0.11818122404707795, -0.40388361204937695, 0.2196973978214685],\n", + " position=[-4191.013516748137, -3784.5413794088663, -4906.869303155961],\n", + " target=[7302.957953133075, 4625.372263887771, 5160.480177797744]\n", + ")\n", + "status = core.set_renderer()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd3b94e5", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " background_color=[1,1,1],\n", + " current='advanced',subsampling=4, max_accum_frames=256)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_distance = 10000.0 \n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 1.0\n", + "params.epsilon_factor = 1000.0\n", + "params.max_ray_depth = 1\n", + "params.show_background = True\n", + "params.main_exposure = 1.0\n", + "status = core.set_renderer_params(params)\n", + "status = core.set_renderer()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "199fa6a5", + "metadata": {}, + "source": [ + "### Root model (Single mesh for full brain)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "26b46aba", + "metadata": {}, + "outputs": [], + "source": [ + "# atlas_assembly_name = 'root'\n", + "# be.remove_assembly(atlas_assembly_name)\n", + "# atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "# atlas_model = be.add_atlas(\n", + "# assembly_name=atlas_assembly_name,\n", + "# load_cells=False, load_meshes=True,\n", + "# region_sql_filter='guid=997',\n", + "# mesh_rotation=Quaternion(0.0, 1.0, 0.0, 0.0),\n", + "# mesh_position=Vector3(-274, -140, -227),\n", + "# mesh_scale=Vector3(25.0, 25.0, 25.0)\n", + "# )" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "634582a8", + "metadata": {}, + "source": [ + "## Spinal cord" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "adbce1ad", + "metadata": {}, + "outputs": [], + "source": [ + "def get_color_from_name(model_name):\n", + " areas = [\n", + " \"BG\", \"GRAY\", \"WHITE\",\n", + " \n", + " \"CE\", \"CC\",\n", + "\n", + " \"1Sp\", \"2SpO\", \"2SpI\", \"3Sp\", \"4Sp\",\n", + " \"5SpL\", \"5SpL_1\", \"5SpM\", \"6SpL\", \"6SpL_1\", \"6SpM\", \"6SpM_1\", \n", + " \"7Sp\", \"8Sp\", \"10Sp\",\n", + "\n", + " \"9Sp\",\n", + " \"Ad9\", \"Ax9\", \"Ax9_1\", \"Ax9_2\", \"Bi9\", \"CEx9\", \"CFl9\", \n", + " \"Cr9\", \"De9\", \"ExA9\", \"ExU9\", \"FEx9\", \n", + " \"FFl9\", \"Gl9\", \"Hm9\", \"ICo9\", \"IH9\", \n", + " \"LD9\", \"LS9\", \"Man9\", \"Pec9\", \"Pes9\", \n", + " \"Ph9\", \"Ps9\", \"Q9\", \"QL9\", \"Rh9\", \n", + " \"SI9\", \"SM9\", \"SM9_1\", \"SM9_2\", \"Sr9\", \"Tail9\", \"ThAb9\", \"ThAb9_1\", \"ThAb9_2\",\n", + " \"Tr9\", \"Tz9\", \"TzSM9\", \"FA9\",\n", + "\n", + " \"CeCv\", \"D\", \"IB\", \"ICl\", \"ICl_1\", \"ICl_2\", \n", + " \"IML\", \"IML_1\", \"IML_2\",\n", + " \"IMM\", \"IMM_1\", \"LDCom\", \"LPrCb\", \"LPrCb_1\", \"LPrCb_2\", \"SDCom\", \"SPrCb\", \n", + " \"SPSy\",\n", + " \n", + " \"cu\", \"dcs\", \"dl\", \"dr\", \"gr\", \"psdc\", \"df\", \n", + " \n", + " \"LatC\", \"LSp\",\n", + " \n", + " \"crts\", \"dlst\", \"dsc\", \"lst\", \"lvs\",\n", + " \"mvs\", \"rrts\", \"rs\", \"vsc\", \"vst\",\n", + " \"vl\", \"lcs\", \"acs\", \"vf\", \"lf\", 'lvf',\n", + "\n", + " \"main\"\n", + " ]\n", + "\n", + "\n", + " colors = [\n", + " (130, 130, 130), (128, 128, 128), (129, 129, 129), \n", + "\n", + " (100, 100, 100), (200, 200, 200), \n", + "\n", + " (0, 45, 255), (0, 50, 255), (0, 55, 255), (0, 65, 255), (0, 75, 255), \n", + " (0, 85, 255), (0, 85, 255), (0, 90, 255), (0, 100, 255), (0, 100, 255), (0, 105, 255), (0, 105, 255), \n", + " (0, 115, 255), (0, 125, 255), (0, 135, 255), \n", + "\n", + " (0, 255, 165), \n", + " (0, 255, 0), (0, 255, 5), (0, 255, 5), (0, 255, 5), (0, 255, 10), (0, 255, 15), (0, 255, 20), \n", + " (0, 255, 25), (0, 255, 30), (0, 255, 35), (0, 255, 40), (0, 255, 45), \n", + " (0, 255, 50), (0, 255, 55), (0, 255, 60), (0, 255, 65), (0, 255, 70), \n", + " (0, 255, 75), (0, 255, 80), (0, 255, 85), (0, 255, 90), (0, 255, 95), \n", + " (0, 255, 100), (0, 255, 105), (0, 255, 110), (0, 255, 115), (0, 255, 120), \n", + " (0, 255, 125), (0, 255, 130), (0, 255, 130), (0, 255, 130), (0, 255, 135), (0, 255, 140), (0, 255, 145), (0, 255, 145), (0, 255, 145), \n", + " (0, 255, 150), (0, 255, 155), (0, 255, 160), (0, 255, 165), \n", + "\n", + " (0, 205, 255), (0, 210, 255), (0, 215, 255), (0, 220, 255), (0, 220, 255), (0, 220, 255), \n", + " (0, 225, 255), (0, 225, 255), (0, 225, 255), \n", + " (0, 230, 255), (0, 230, 255), (0, 235, 255), (0, 240, 255), (0, 240, 255), (0, 240, 255), (0, 245, 255), (0, 250, 255), \n", + " (0, 255, 255), \n", + "\n", + " (255, 70, 0), (255, 75, 0), (255, 80, 0), (255, 110, 0), (255, 85, 0), (255, 90, 0), (255, 100, 0), \n", + "\n", + " (255, 125, 0), (255, 130, 0), \n", + "\n", + " (255, 180, 0), (255, 185, 0), (255, 190, 0), (255, 195, 0), (255, 200, 0), \n", + " (255, 205, 0), (255, 210, 0), (255, 215, 0), (255, 220, 0), (255, 225, 0), \n", + " (255, 235, 0), (255, 250, 0), (255, 255, 0), (255, 245, 0), (255, 240, 0), (255, 245, 0),\n", + "\n", + " (127, 127, 127)\n", + " ]\n", + "\n", + " result = [0.5, 0.5, 0.5]\n", + " for i in range(len(areas)):\n", + " if model_name in areas[i]:\n", + " # print(model_name, areas[i])\n", + " c = colors[i]\n", + " return [c[0] / 256.0, c[1] / 256.0, c[2] / 256.0]\n", + " print('ERROR: Color was not found for region %s' % model_name)\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "727fbe2b", + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "\n", + "population = 'spinal_cord'\n", + "criteria = 'region'\n", + "\n", + "criteria_types = list()\n", + "criteria_names = list()\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, code from %s.%s' % (population, criteria))\n", + " for d in data.all():\n", + " criteria_types.append(d[0])\n", + " criteria_names.append(d[1])\n", + "\n", + "errors = list()\n", + "for criteria_type in tqdm(criteria_types):\n", + " try:\n", + " assembly_name = 'SpinalCord_%s' % (criteria_names[criteria_type])\n", + " be.remove_assembly(assembly_name)\n", + " neurons_assembly = be.add_assembly(assembly_name)\n", + " neurons_model = be.add_neurons(\n", + " assembly_name=assembly_name,\n", + " population_name=population,\n", + " radius_multiplier=0.005,\n", + " load_basal_dendrites=False,\n", + " load_axon=False,\n", + " load_apical_dendrites=False,\n", + " show_membrane=True,\n", + " sql_node_filter='%s_guid=%d' % (criteria, criteria_type)\n", + " )\n", + " model_ids = be.get_model_ids()['ids']\n", + " model_id = model_ids[len(model_ids) - 1] \n", + " tf = {\n", + " 'rotation': [0.5, -0.5, 0.5, -0.5],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1050.0, 1050.0, 1050.0],\n", + " 'translation': [13.1, 5.8, 5.5]\n", + " }\n", + " core.update_model(model_id, transformation=tf)\n", + " status = core.set_renderer()\n", + " except RuntimeError as e:\n", + " errors.append(e)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e02a81ab", + "metadata": {}, + "outputs": [], + "source": [ + "def set_spinal_cord_materials(model_id, color):\n", + " colors = list()\n", + " opacities = list()\n", + " refraction_indices = list()\n", + " specular_exponents = list()\n", + " shading_modes = list()\n", + " user_params = list()\n", + " glossinesses = list()\n", + " emissions = list()\n", + " \n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " for _ in material_ids:\n", + " colors.append(color)\n", + " opacities.append(1.0)\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " glossinesses.append(1.0)\n", + " user_params.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " emissions.append(0.0)\n", + " refraction_indices.append(1.0)\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " diffuse_colors=colors, specular_colors=colors,\n", + " opacities=opacities, refraction_indices=refraction_indices,\n", + " shading_modes=shading_modes, specular_exponents=specular_exponents,\n", + " user_parameters=user_params, glossinesses=glossinesses,\n", + " emissions=emissions\n", + " )\n", + " \n", + "model_ids = be.get_model_ids()['ids']\n", + "i = 0\n", + "for model_id in model_ids:\n", + " model_name = be.get_model_name(model_id)['name'].split('_')[1]\n", + " color = get_color_from_name(model_name)\n", + " set_spinal_cord_materials(model_id, color)\n", + " i += 1\n", + "status = core.set_renderer()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "cac3f64b", + "metadata": {}, + "source": [ + "## Brain atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da0450be", + "metadata": {}, + "outputs": [], + "source": [ + "db_schema = 'atlas_ccfv3'\n", + "region_guids = dict()\n", + "region_codes = dict()\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, code from %s.region' % db_schema)\n", + " for d in data.all():\n", + " region_guids[d[0]] = d[1]\n", + " region_codes[d[1]] = d[0]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4f0d88f0", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select code, color_hex_triplet from %s.region' % db_schema)\n", + " for d in data.all():\n", + " region_colors[d[0]] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "385d94fb", + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n", + "def set_regions_materials(model_id, color, cast_user_data=False):\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " nb_material_ids = len(material_ids)\n", + " palette = list()\n", + " shading_modes = list()\n", + " user_params = list()\n", + " cast_user_datas = list()\n", + " for _ in material_ids:\n", + " palette.append(color)\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " user_params.append(3.0)\n", + " cast_user_datas.append(cast_user_data)\n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " diffuse_colors=palette, specular_colors=palette,\n", + " cast_user_datas=cast_user_datas)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d276484", + "metadata": {}, + "outputs": [], + "source": [ + "errors = list()\n", + "for guid in tqdm(region_guids):\n", + " try:\n", + " region_code = region_guids[guid]\n", + " color = region_colors[region_code]\n", + " assembly_name = 'Atlas_%s' % region_code\n", + " be.remove_assembly(assembly_name)\n", + " neurons_assembly = be.add_assembly(assembly_name)\n", + " neurons_model = be.add_neurons(\n", + " assembly_name=assembly_name,\n", + " population_name=db_schema,\n", + " radius_multiplier=10.0,\n", + " load_somas=True,\n", + " load_axon=False, load_basal_dendrites=False, load_apical_dendrites=False,\n", + " sql_node_filter='region_guid=%d' % guid\n", + " )\n", + " model_ids = be.get_model_ids()['ids']\n", + " model_id = model_ids[len(model_ids)-1]\n", + " set_regions_materials(model_id, color)\n", + " except Exception as e:\n", + " # print(e)\n", + " errors.append(e)\n", + "print(errors)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "27e2fbe8", + "metadata": {}, + "source": [ + "### Meshes between spinal cord and brain atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aac94252", + "metadata": {}, + "outputs": [], + "source": [ + "mesh_folder = '/medias/spinal_cord/BrainStem_and_C1'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a80cc76b", + "metadata": {}, + "outputs": [], + "source": [ + "def set_mesh_materials(model_id, color, cast_user_data=False, opacity=1.0):\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " nb_material_ids = len(material_ids)\n", + " palette = list()\n", + " shading_modes = list()\n", + " user_params = list()\n", + " cast_user_datas = list()\n", + " opacities = list()\n", + " for _ in material_ids:\n", + " palette.append(color)\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " user_params.append(3.0)\n", + " cast_user_datas.append(cast_user_data)\n", + " opacities.append(opacity)\n", + " be.set_material_extra_attributes(model_id)\n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " diffuse_colors=palette, specular_colors=palette,\n", + " cast_user_datas=cast_user_datas, opacities=opacities)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8001167a", + "metadata": {}, + "outputs": [], + "source": [ + "vert01_model = core.add_model(\n", + " name='vert00_main_figure',\n", + " path=os.path.join(mesh_folder, 'vert01_main_figure.obj'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd3e274c", + "metadata": {}, + "outputs": [], + "source": [ + "model_id = vert01_model['id'] \n", + "tf = {\n", + " 'rotation': [0.7071067811865476, 4.329780281177466e-17, -0.7071067811865475, 4.329780281177467e-17],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1050.0, 1050.0, 1050.0],\n", + " 'translation': [13.1, 5.8, 5.5]\n", + "}\n", + "core.update_model(model_id, transformation=tf)\n", + "set_mesh_materials(model_id, [0.99, 0.99, 0.99], False, 0.4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b076772", + "metadata": {}, + "outputs": [], + "source": [ + "vert00_model = core.add_model(\n", + " name='vert00_main_figure',\n", + " path=os.path.join(mesh_folder, 'vert00_main_figure.obj'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00088b28", + "metadata": {}, + "outputs": [], + "source": [ + "model_id = vert00_model['id'] \n", + "tf = {\n", + " 'rotation': [0.7071067811865476, 4.329780281177466e-17, -0.7071067811865475, 4.329780281177467e-17],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1050.0, 1050.0, 1050.0],\n", + " 'translation': [13.1, 5.8, 5.5]\n", + "}\n", + "core.update_model(model_id, transformation=tf)\n", + "set_mesh_materials(model_id, [0.99, 0.99, 0.99], False, 0.4)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "5fea4461", + "metadata": {}, + "source": [ + "### Ground" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19ae304b", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import Vector3\n", + "if use_ground:\n", + " status = be.add_box(\n", + " name='Floor',\n", + " bottom_left_corner=Vector3(-300000, 7900, -300000),\n", + " top_right_corner=Vector3(300000, 8000, 300000))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "152c1a19", + "metadata": {}, + "outputs": [], + "source": [ + "stop" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "c5c1b84c", + "metadata": {}, + "source": [ + "## Deconstruction" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "8b9306ae", + "metadata": {}, + "source": [ + "### Show all models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54b92ba9", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " core.update_model(model_id, visible=True)\n", + "core.set_renderer()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ede7adae", + "metadata": {}, + "source": [ + "### Hide gray regions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1d8c33e", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "errors = list()\n", + "gray_models = list()\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " try:\n", + " model_name = be.get_model_name(model_id)['name'].replace('Atlas_', '')\n", + " color = region_colors[model_name]\n", + " if color[0]==color[1] and color[1]==color[2]:\n", + " core.update_model(model_id, visible=False)\n", + " gray_models.append(model_id)\n", + " except Exception as e:\n", + " errors.append(e)\n", + "status = core.set_renderer()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c34688ea", + "metadata": {}, + "outputs": [], + "source": [ + "mm.create_snapshot(\n", + " renderer='bio_explorer', base_name='full_brain_spinal_cord_%s_4k_v1' % filename_suffix,\n", + " path='/images/full_brain_spinal_cord',\n", + " samples_per_pixel=spp, size=[3840, 2160], show_progress=True)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e976d809", + "metadata": {}, + "source": [ + "### Hide spinal cord" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2f8fea94", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " try:\n", + " model_name = be.get_model_name(model_id)['name']\n", + " if 'SpinalCord_' in model_name or 'main_figure' in model_name:\n", + " core.update_model(model_id, visible=False)\n", + " except Exception as e:\n", + " print(e)\n", + "core.set_renderer()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "91e7f274", + "metadata": {}, + "outputs": [], + "source": [ + "mm.create_snapshot(\n", + " renderer='bio_explorer', base_name='full_brain_%s_4k_v2' % filename_suffix,\n", + " path='/images/full_brain_spinal_cord',\n", + " samples_per_pixel=spp, size=[3840, 2160], show_progress=True)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "00310768", + "metadata": {}, + "source": [ + "## Video sequence" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "9ccc9d00", + "metadata": {}, + "source": [ + "### Get all models that should to be deconstructed" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7761cd0", + "metadata": {}, + "outputs": [], + "source": [ + "models = core.scene.models\n", + "centers = dict()\n", + "\n", + "''' Ignore thalamus'''\n", + "regions_to_ignore, sql_filter = get_leaf_regions('TH')\n", + "\n", + "delta = 0.0001\n", + "for model in models:\n", + " model_name = model['name'].replace('Atlas_', '')\n", + " if 'SpinalCord' in model_name or 'Floor' in model_name or 'main_figure' in model_name:\n", + " continue\n", + " \n", + " ''' Ignore thalamus'''\n", + " color = region_colors[model_name]\n", + " region_code = regions_code[model_name]\n", + " if region_code in regions_to_ignore:\n", + " continue\n", + " \n", + " bounds = model['bounds']\n", + " aabb_min = bounds['min']\n", + " aabb_max = bounds['max']\n", + " aabb_center = [0, 0, 0]\n", + " for k in range(3):\n", + " aabb_center[k] = (aabb_min[k] + aabb_max[k]) / 2.0\n", + " centers[aabb_center[1]] = model['id']\n", + "sorted_centers = sorted(centers)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "4c843441", + "metadata": {}, + "source": [ + "### Zoom in and progressive removal of regions (except Thalamus)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6994786", + "metadata": {}, + "outputs": [], + "source": [ + "control_points = [\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.6590190478092622, 0.48219132054455616, 0.5772221626168477],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [-4191.013516748137, -3784.5413794088663, -4906.869303155961],\n", + " 'up': [0.3854961148946372, -0.8755325033464196, 0.29126548196635405]\n", + " },\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.6590190478092619, 0.4821913205445562, 0.5772221626168479],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [1644.1182612103266, 484.9101742579678, 204.0108682504224],\n", + " 'up': [0.38549611489463737, -0.8755325033464194, 0.291265481966354]\n", + " }\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c5054d63", + "metadata": {}, + "outputs": [], + "source": [ + "mm.build_camera_path(control_points, len(sorted_centers), 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e72b7bf", + "metadata": {}, + "outputs": [], + "source": [ + "'''Hide models in Y decreasing order'''\n", + "output_folder = '/movies/thalamus/full/publication/v5'\n", + "frame = 0\n", + "for sorted_center in tqdm(sorted_centers):\n", + " model_id = centers[sorted_center]\n", + " core.update_model(model_id, visible=False)\n", + " mm.set_current_frame(frame)\n", + " core.set_renderer()\n", + " import time\n", + " time.sleep(1)\n", + " continue\n", + " mm.create_snapshot(\n", + " renderer='bio_explorer', base_name='%05d' % frame,\n", + " path=output_folder, samples_per_pixel=64, size=[3840, 2160]\n", + " )\n", + " frame += 1" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "b1961211", + "metadata": {}, + "source": [ + "## Construction on Y axis" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "a789e1af", + "metadata": {}, + "source": [ + "### Hide all models except floor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22b8a5fb", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " orientation=[-0.5, 0.5, -0.5, -0.5],\n", + " position=[6600.004397392287, -17209.48340301513, 5699.9679260253915],\n", + " target=[6600.004397392273, 3862.50252532959, 5699.967926025391]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fb412cdf", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " model_name = be.get_model_name(model_id)['name']\n", + " model_name = model_name.replace('Atlas_', '')\n", + " if 'Floor' in model_name:\n", + " continue\n", + " core.update_model(model_id, visible=True)\n", + "core.set_renderer()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "89fd2688", + "metadata": {}, + "source": [ + "### Get all models that should to be constructed" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "490c652f", + "metadata": {}, + "outputs": [], + "source": [ + "models = core.scene.models\n", + "centers = dict()\n", + "for model in models:\n", + " model_name = model['name'].replace('Atlas_', '')\n", + " if 'SpinalCord' in model_name or 'Floor' in model_name or 'main_figure' in model_name:\n", + " continue\n", + "\n", + " bounds = model['bounds']\n", + " aabb_min = bounds['min']\n", + " aabb_max = bounds['max']\n", + " aabb_center = [0, 0, 0]\n", + " for k in range(3):\n", + " aabb_center[k] = (aabb_min[k] + aabb_max[k]) / 2.0\n", + " centers[aabb_center[1]] = model['id']\n", + "sorted_centers = sorted(centers, reverse=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d0efb68", + "metadata": {}, + "outputs": [], + "source": [ + "'''Hide models in Y increasing order'''\n", + "output_folder = '/movies/atlas/4k/v5'\n", + "frame = 0\n", + "for sorted_center in tqdm(sorted_centers):\n", + " model_id = centers[sorted_center]\n", + " if model_id in gray_models:\n", + " continue\n", + " core.update_model(model_id, visible=True)\n", + " mm.create_snapshot(\n", + " renderer='bio_explorer', base_name='%05d' % frame,\n", + " path=output_folder, samples_per_pixel=64, size=[2160, 2160]\n", + " )\n", + " frame += 1" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "42c6f95a", + "metadata": {}, + "source": [ + "## Construction on Z axis" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "56c52365", + "metadata": {}, + "source": [ + "### Hide all models except floor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "940edf33", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " model_name = be.get_model_name(model_id)['name']\n", + " model_name = model_name.replace('Atlas_', '')\n", + " if 'Floor' in model_name:\n", + " continue\n", + " core.update_model(model_id, visible=False)\n", + "core.set_renderer()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d16f46a", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_camera(\n", + " orientation=[0.8801387842784558, 0.11818122404707795, -0.40388361204937695, 0.2196973978214685],\n", + " position=[-4191.013516748137, -3784.5413794088663, -4906.869303155961],\n", + " target=[7302.957953133075, 4625.372263887771, 5160.480177797744]\n", + ")\n", + "status = core.set_renderer()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "4a5d21e5", + "metadata": {}, + "source": [ + "### Get all models that should to be constructed" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a18437e9", + "metadata": {}, + "outputs": [], + "source": [ + "models = core.scene.models\n", + "centers = dict()\n", + "for model in models:\n", + " model_name = model['name'].replace('Atlas_', '')\n", + " if 'SpinalCord' in model_name or 'Floor' in model_name or 'main_figure' in model_name:\n", + " continue\n", + " \n", + " bounds = model['bounds']\n", + " print(bounds)\n", + " aabb_min = bounds['min']\n", + " aabb_max = bounds['max']\n", + " aabb_center = [0, 0, 0]\n", + " for k in range(3):\n", + " aabb_center[k] = (aabb_min[k] + aabb_max[k]) / 2.0\n", + " centers[aabb_center[0]] = model['id']\n", + "sorted_centers = sorted(centers, reverse=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71d2087e", + "metadata": {}, + "outputs": [], + "source": [ + "'''Hide models in X increasing order'''\n", + "output_folder = '/movies/atlas/4k/v8'\n", + "frame = 0\n", + "for sorted_center in tqdm(sorted_centers):\n", + " model_id = centers[sorted_center]\n", + " if model_id in gray_models:\n", + " continue\n", + " core.update_model(model_id, visible=True)\n", + " import time\n", + " time.sleep(0.1)\n", + " core.set_renderer()\n", + " mm.create_snapshot(\n", + " renderer='advanced', base_name='%05d' % frame,\n", + " path=output_folder, samples_per_pixel=64, size=[3840, 2160]\n", + " )\n", + " frame += 1" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "vscode": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_spinalcord_movie.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_spinalcord_movie.ipynb new file mode 100644 index 000000000..a278c2148 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlas_spinalcord_movie.ipynb @@ -0,0 +1,804 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "084953fe", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "697e36dd", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, MovieMaker\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "core = be.core_api()\n", + "mm =MovieMaker(be)\n", + "status = be.reset_scene()\n", + "\n", + "cache_folder = '/caches/neuroscience/full_brain_spinal_cord'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d03c30a6", + "metadata": {}, + "outputs": [], + "source": [ + "use_cache = False" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "383eb057", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "982876b0", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_camera(\n", + " orientation=[0.8801387842784558, 0.11818122404707795, -0.40388361204937695, 0.2196973978214685],\n", + " position=[-4191.013516748137, -3784.5413794088663, -4906.869303155961],\n", + " target=[7302.957953133075, 4625.372263887771, 5160.480177797744]\n", + ")\n", + "status = core.set_renderer()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd3b94e5", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " background_color=[0, 0, 0], current='advanced', \n", + " samples_per_pixel=1, subsampling=4, max_accum_frames=1024)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_samples = 0\n", + "params.gi_strength = 0.1\n", + "params.gi_ray_length = 10000.0\n", + "params.shadow_intensity = 0.7\n", + "params.soft_shadow_strength = 1.0\n", + "params.epsilon_multiplier = 100.0\n", + "params.max_ray_depth = 10\n", + "params.show_background = True\n", + "params.use_hardware_randomizer = True\n", + "params.fog_start = 1e6\n", + "params.fog_thickness = 1e6\n", + "status = core.set_renderer_params(params)\n", + "status = core.set_renderer()" + ] + }, + { + "cell_type": "markdown", + "id": "199fa6a5", + "metadata": {}, + "source": [ + "### Root model (Single mesh for full brain)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "26b46aba", + "metadata": {}, + "outputs": [], + "source": [ + "# atlas_assembly_name = 'root'\n", + "# be.remove_assembly(atlas_assembly_name)\n", + "# atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "# atlas_model = be.add_atlas(\n", + "# assembly_name=atlas_assembly_name,\n", + "# load_cells=False, load_meshes=True,\n", + "# region_sql_filter='guid=997',\n", + "# mesh_rotation=Quaternion(0.0, 1.0, 0.0, 0.0),\n", + "# mesh_position=Vector3(-274, -140, -227),\n", + "# mesh_scale=Vector3(25.0, 25.0, 25.0)\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "id": "634582a8", + "metadata": {}, + "source": [ + "## Spinal cord" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "adbce1ad", + "metadata": {}, + "outputs": [], + "source": [ + "def get_color_from_name(model_name):\n", + " areas = [\n", + " \"BG\", \"GRAY\", \"WHITE\",\n", + " \n", + " \"CE\", \"CC\",\n", + "\n", + " \"1Sp\", \"2SpO\", \"2SpI\", \"3Sp\", \"4Sp\",\n", + " \"5SpL\", \"5SpL_1\", \"5SpM\", \"6SpL\", \"6SpL_1\", \"6SpM\", \"6SpM_1\", \n", + " \"7Sp\", \"8Sp\", \"10Sp\",\n", + "\n", + " \"9Sp\",\n", + " \"Ad9\", \"Ax9\", \"Ax9_1\", \"Ax9_2\", \"Bi9\", \"CEx9\", \"CFl9\", \n", + " \"Cr9\", \"De9\", \"ExA9\", \"ExU9\", \"FEx9\", \n", + " \"FFl9\", \"Gl9\", \"Hm9\", \"ICo9\", \"IH9\", \n", + " \"LD9\", \"LS9\", \"Man9\", \"Pec9\", \"Pes9\", \n", + " \"Ph9\", \"Ps9\", \"Q9\", \"QL9\", \"Rh9\", \n", + " \"SI9\", \"SM9\", \"SM9_1\", \"SM9_2\", \"Sr9\", \"Tail9\", \"ThAb9\", \"ThAb9_1\", \"ThAb9_2\",\n", + " \"Tr9\", \"Tz9\", \"TzSM9\", \"FA9\",\n", + "\n", + " \"CeCv\", \"D\", \"IB\", \"ICl\", \"ICl_1\", \"ICl_2\", \n", + " \"IML\", \"IML_1\", \"IML_2\",\n", + " \"IMM\", \"IMM_1\", \"LDCom\", \"LPrCb\", \"LPrCb_1\", \"LPrCb_2\", \"SDCom\", \"SPrCb\", \n", + " \"SPSy\",\n", + " \n", + " \"cu\", \"dcs\", \"dl\", \"dr\", \"gr\", \"psdc\", \"df\", \n", + " \n", + " \"LatC\", \"LSp\",\n", + " \n", + " \"crts\", \"dlst\", \"dsc\", \"lst\", \"lvs\",\n", + " \"mvs\", \"rrts\", \"rs\", \"vsc\", \"vst\",\n", + " \"vl\", \"lcs\", \"acs\", \"vf\", \"lf\", 'lvf',\n", + "\n", + " \"main\"\n", + " ]\n", + "\n", + "\n", + " colors = [\n", + " (130, 130, 130), (128, 128, 128), (129, 129, 129), \n", + "\n", + " (100, 100, 100), (200, 200, 200), \n", + "\n", + " (0, 45, 255), (0, 50, 255), (0, 55, 255), (0, 65, 255), (0, 75, 255), \n", + " (0, 85, 255), (0, 85, 255), (0, 90, 255), (0, 100, 255), (0, 100, 255), (0, 105, 255), (0, 105, 255), \n", + " (0, 115, 255), (0, 125, 255), (0, 135, 255), \n", + "\n", + " (0, 255, 165), \n", + " (0, 255, 0), (0, 255, 5), (0, 255, 5), (0, 255, 5), (0, 255, 10), (0, 255, 15), (0, 255, 20), \n", + " (0, 255, 25), (0, 255, 30), (0, 255, 35), (0, 255, 40), (0, 255, 45), \n", + " (0, 255, 50), (0, 255, 55), (0, 255, 60), (0, 255, 65), (0, 255, 70), \n", + " (0, 255, 75), (0, 255, 80), (0, 255, 85), (0, 255, 90), (0, 255, 95), \n", + " (0, 255, 100), (0, 255, 105), (0, 255, 110), (0, 255, 115), (0, 255, 120), \n", + " (0, 255, 125), (0, 255, 130), (0, 255, 130), (0, 255, 130), (0, 255, 135), (0, 255, 140), (0, 255, 145), (0, 255, 145), (0, 255, 145), \n", + " (0, 255, 150), (0, 255, 155), (0, 255, 160), (0, 255, 165), \n", + "\n", + " (0, 205, 255), (0, 210, 255), (0, 215, 255), (0, 220, 255), (0, 220, 255), (0, 220, 255), \n", + " (0, 225, 255), (0, 225, 255), (0, 225, 255), \n", + " (0, 230, 255), (0, 230, 255), (0, 235, 255), (0, 240, 255), (0, 240, 255), (0, 240, 255), (0, 245, 255), (0, 250, 255), \n", + " (0, 255, 255), \n", + "\n", + " (255, 70, 0), (255, 75, 0), (255, 80, 0), (255, 110, 0), (255, 85, 0), (255, 90, 0), (255, 100, 0), \n", + "\n", + " (255, 125, 0), (255, 130, 0), \n", + "\n", + " (255, 180, 0), (255, 185, 0), (255, 190, 0), (255, 195, 0), (255, 200, 0), \n", + " (255, 205, 0), (255, 210, 0), (255, 215, 0), (255, 220, 0), (255, 225, 0), \n", + " (255, 235, 0), (255, 250, 0), (255, 255, 0), (255, 245, 0), (255, 240, 0), (255, 245, 0),\n", + "\n", + " (127, 127, 127)\n", + " ]\n", + "\n", + " result = [0.5, 0.5, 0.5]\n", + " for i in range(len(areas)):\n", + " if model_name in areas[i]:\n", + " # print(model_name, areas[i])\n", + " c = colors[i]\n", + " return [c[0] / 256.0, c[1] / 256.0, c[2] / 256.0]\n", + " print('ERROR: Color was not found for region %s' % model_name)\n", + " return result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "727fbe2b", + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "\n", + "population = 'spinal_cord'\n", + "criteria = 'region'\n", + "\n", + "criteria_types = list()\n", + "criteria_names = list()\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, code from %s.%s' % (population, criteria))\n", + " for d in data.all():\n", + " criteria_types.append(d[0])\n", + " criteria_names.append(d[1])\n", + "\n", + "errors = list()\n", + "for criteria_type in tqdm(criteria_types):\n", + " try:\n", + " assembly_name = 'SpinalCord_%s' % (criteria_names[criteria_type])\n", + " be.remove_assembly(assembly_name)\n", + " neurons_assembly = be.add_assembly(assembly_name)\n", + " neurons_model = be.add_neurons(\n", + " assembly_name=assembly_name,\n", + " population_name=population,\n", + " radius_multiplier=0.005,\n", + " load_basal_dendrites=False,\n", + " load_axon=False,\n", + " load_apical_dendrites=False,\n", + " show_membrane=True,\n", + " sql_node_filter='%s_guid=%d' % (criteria, criteria_type)\n", + " )\n", + " model_ids = be.get_model_ids()['ids']\n", + " model_id = model_ids[len(model_ids) - 1] \n", + " tf = {\n", + " 'rotation': [0.5, -0.5, 0.5, -0.5],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1050.0, 1050.0, 1050.0],\n", + " 'translation': [13.1, 5.8, 5.5]\n", + " }\n", + " core.update_model(model_id, transformation=tf)\n", + " status = core.set_renderer()\n", + " except RuntimeError as e:\n", + " errors.append(e)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e02a81ab", + "metadata": {}, + "outputs": [], + "source": [ + "def set_spinal_cord_materials(model_id, color):\n", + " colors = list()\n", + " opacities = list()\n", + " refraction_indices = list()\n", + " specular_exponents = list()\n", + " shading_modes = list()\n", + " user_params = list()\n", + " glossinesses = list()\n", + " emissions = list()\n", + " \n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " for _ in material_ids:\n", + " colors.append(color)\n", + " opacities.append(1.0)\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " glossinesses.append(1.0)\n", + " user_params.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " emissions.append(0.0)\n", + " refraction_indices.append(1.0)\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " diffuse_colors=colors, specular_colors=colors,\n", + " opacities=opacities, refraction_indices=refraction_indices,\n", + " shading_modes=shading_modes, specular_exponents=specular_exponents,\n", + " user_parameters=user_params, glossinesses=glossinesses,\n", + " emissions=emissions\n", + " )\n", + " \n", + "model_ids = be.get_model_ids()['ids']\n", + "i = 0\n", + "for model_id in model_ids:\n", + " model_name = be.get_model_name(model_id)['name'].split('_')[1]\n", + " color = get_color_from_name(model_name)\n", + " set_spinal_cord_materials(model_id, color)\n", + " i += 1\n", + "status = core.set_renderer()" + ] + }, + { + "cell_type": "markdown", + "id": "cac3f64b", + "metadata": {}, + "source": [ + "## Brain atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da0450be", + "metadata": {}, + "outputs": [], + "source": [ + "db_schema = 'atlas_ccfv3a'\n", + "region_guids = list()\n", + "with Session(engine) as session:\n", + " data = session.execute('select distinct(region_guid) from %s.cell' % db_schema)\n", + " for d in data.all():\n", + " region_guids.append(d[0])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4f0d88f0", + "metadata": {}, + "outputs": [], + "source": [ + "db_schema = 'atlas'\n", + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select code, color_hex_triplet from %s.region' % db_schema)\n", + " for d in data.all():\n", + " region_colors[d[0]] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "385d94fb", + "metadata": {}, + "outputs": [], + "source": [ + "def set_regions_materials(model_id, color, cast_user_data=False):\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " nb_material_ids = len(material_ids)\n", + " palette = list()\n", + " shading_modes = list()\n", + " user_params = list()\n", + " cast_user_datas = list()\n", + " for _ in material_ids:\n", + " palette.append(color)\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " user_params.append(3.0)\n", + " cast_user_datas.append(cast_user_data)\n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " diffuse_colors=palette, specular_colors=palette,\n", + " cast_user_datas=cast_user_datas)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d276484", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'full_brain'\n", + "errors = list()\n", + "for guid in tqdm(region_guids):\n", + " try:\n", + " assembly_name = '%d' % guid\n", + " if use_cache:\n", + " model = core.add_model(\n", + " name=assembly_name,\n", + " path=os.path.join(cache_folder, '%d.soc' % guid))\n", + " else:\n", + " be.remove_assembly(assembly_name)\n", + " neurons_assembly = be.add_assembly(assembly_name)\n", + " neurons_model = be.add_neurons(\n", + " assembly_name=assembly_name,\n", + " population_name=population_name,\n", + " radius_multiplier=10.0,\n", + " load_somas=True,\n", + " load_axon=False, load_basal_dendrites=False, load_apical_dendrites=False,\n", + " sql_node_filter='region_guid=%d' % guid\n", + " )\n", + " except Exception as e:\n", + " errors.append(e)\n", + "print(errors)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e75e5f5a", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % db_schema)\n", + " for d in data.all():\n", + " region_colors[d[0]] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eeb8eb9b", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "f = open('/gpfs/bbp.cscs.ch/home/piluso/cell_atlas/05_final_run/blue_brain_atlas_pipeline/leaves_only/hierarchy_ccfv2_l23split_barrelsplit.json')\n", + "obj = json.load(f)\n", + "\n", + "region_colors=dict()\n", + "\n", + "def node_color(node):\n", + " node_id = node['id']\n", + " color = node['color_hex_triplet']\n", + " region_colors[node_id] = hex_to_rgb(color)\n", + " for child in node['children']:\n", + " node_color(child)\n", + "\n", + "for node in obj['msg']:\n", + " node_color(node)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b4bd075", + "metadata": {}, + "outputs": [], + "source": [ + "errors = list()\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " model_name = be.get_model_name(model_id)['name']\n", + " try:\n", + " region_id = int(model_name)\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " palette = list()\n", + " shading_modes = list()\n", + " color = region_colors[region_id]\n", + " for _ in material_ids:\n", + " palette.append(color)\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, diffuse_colors=palette, specular_colors=palette)\n", + " except Exception as e:\n", + " errors.append(e)" + ] + }, + { + "cell_type": "markdown", + "id": "27e2fbe8", + "metadata": {}, + "source": [ + "### Meshes between spinal cord and brain atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aac94252", + "metadata": {}, + "outputs": [], + "source": [ + "mesh_folder = '/scratch/spinal_cord/BrainStem_and_C1'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a80cc76b", + "metadata": {}, + "outputs": [], + "source": [ + "def set_region_materials(model_id, color, cast_user_data=False, opacity=1.0):\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " nb_material_ids = len(material_ids)\n", + " palette = list()\n", + " shading_modes = list()\n", + " user_params = list()\n", + " cast_user_datas = list()\n", + " opacities = list()\n", + " for _ in material_ids:\n", + " palette.append(color)\n", + " shading_modes.append(be.shading_mode.NONE)\n", + " user_params.append(3.0)\n", + " cast_user_datas.append(cast_user_data)\n", + " opacities.append(opacity)\n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " diffuse_colors=palette, specular_colors=palette,\n", + " cast_user_datas=cast_user_datas, opacities=opacities)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8001167a", + "metadata": {}, + "outputs": [], + "source": [ + "vert01_model = core.add_model(\n", + " name='vert00_main_figure',\n", + " path=os.path.join(mesh_folder, 'vert01_main_figure.obj'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd3e274c", + "metadata": {}, + "outputs": [], + "source": [ + "model_id = vert01_model['id'] \n", + "tf = {\n", + " 'rotation': [0.7071067811865476, 4.329780281177466e-17, -0.7071067811865475, 4.329780281177467e-17],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1050.0, 1050.0, 1050.0],\n", + " 'translation': [13.1, 5.8, 5.5]\n", + "}\n", + "core.update_model(model_id, transformation=tf)\n", + "set_mesh_materials(model_id, [0.99, 0.99, 0.99], False, 0.2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b076772", + "metadata": {}, + "outputs": [], + "source": [ + "vert00_model = core.add_model(\n", + " name='vert00_main_figure',\n", + " path=os.path.join(mesh_folder, 'vert00_main_figure.obj'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00088b28", + "metadata": {}, + "outputs": [], + "source": [ + "model_id = vert00_model['id'] \n", + "tf = {\n", + " 'rotation': [0.7071067811865476, 4.329780281177466e-17, -0.7071067811865475, 4.329780281177467e-17],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1050.0, 1050.0, 1050.0],\n", + " 'translation': [13.1, 5.8, 5.5]\n", + "}\n", + "core.update_model(model_id, transformation=tf)\n", + "set_mesh_materials(model_id, [0.99, 0.99, 0.99], False, 0.2)" + ] + }, + { + "cell_type": "markdown", + "id": "5fea4461", + "metadata": {}, + "source": [ + "### Ground" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19ae304b", + "metadata": {}, + "outputs": [], + "source": [ + "# from bioexplorer import Vector3\n", + "# status = be.add_box(\n", + "# name='Floor',\n", + "# bottom_left_corner=Vector3(-300000, 7900, -300000),\n", + "# top_right_corner=Vector3(300000, 8000, 300000))" + ] + }, + { + "cell_type": "markdown", + "id": "c5c1b84c", + "metadata": {}, + "source": [ + "## Movie" + ] + }, + { + "cell_type": "markdown", + "id": "ede7adae", + "metadata": {}, + "source": [ + "### Hide gray regions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f1d8c33e", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "fibers_ids = [960, 1000, 1009, 396, 109, 698, 1024543562]\n", + "regions_to_ignore = [1024543562, 2358040414, 3263488087, 2416897036, 3034756217, 2165415682, 2614168502, 1842735199, 3101970431, 1140764290, 3092369320, 1811993763]\n", + "\n", + "errors = list()\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " try:\n", + " region_id = int(be.get_model_name(model_id)['name'])\n", + " if region_id in fibers_ids or region_id in regions_to_ignore:\n", + " core.update_model(model_id, visible=False)\n", + " except Exception as e:\n", + " errors.append(e)" + ] + }, + { + "cell_type": "markdown", + "id": "00310768", + "metadata": {}, + "source": [ + "## Video sequence" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6994786", + "metadata": {}, + "outputs": [], + "source": [ + "control_points = [\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [4.388292466713249e-16, -0.00243902197201667, 0.999997025581487],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [7302.957953133062, 4696.142127314982, -23855.106290866657],\n", + " 'up': [-1.0703141745950342e-18, -0.999997025581487, -0.00243902197201667]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [4.388292466713249e-16, -0.00243902197201667, 0.999997025581487],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [7302.957953133062, 4696.142127314982, -23855.106290866657],\n", + " 'up': [-1.0703141745950342e-18, -0.999997025581487, -0.00243902197201667]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-1.0, 2.465190328815662e-32, -2.220446049250313e-16],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [59608.832374115256, 4589.525862228616, 5683.538922007581],\n", + " 'up': [2.465190328815662e-32, -1.0, -3.14018491736755e-16]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-1.0, -2.465190328815662e-32, 2.220446049250313e-16],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [36634.95760886356, 4589.525862228616, 5683.538922007581],\n", + " 'up': [0.0, -1.0, -1.2246467991473532e-16]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.0, 1.0, -2.220446049250313e-16],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [24920.303299251897, -32337.04403654696, 6574.064753904917],\n", + " 'up': [1.2246467991473532e-16, -2.220446049250313e-16, -1.0]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.0, 1.0, -2.220446049250313e-16],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [24920.303299251897, -32337.04403654696, 6574.064753904917],\n", + " 'up': [1.2246467991473532e-16, -2.220446049250313e-16, -1.0]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.0, 1.0, -2.220446049250313e-16],\n", + " 'focusDistance': 1000000.0,\n", + " 'origin': [24920.303299251897, -32337.04403654696, 6574.064753904917],\n", + " 'up': [1.2246467991473532e-16, -2.220446049250313e-16, -1.0]\n", + " }\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c5054d63", + "metadata": {}, + "outputs": [], + "source": [ + "mm.build_camera_path(control_points, 200, 100)\n", + "nb_frames = mm.get_nb_frames()\n", + "print(nb_frames)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e72b7bf", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/movies/atlas/4k/v7'\n", + "for frame in tqdm(range(150, nb_frames-150)):\n", + " mm.set_current_frame(frame)\n", + " mm.create_snapshot(\n", + " renderer='bio_explorer', base_name='%05d' % frame,\n", + " path=output_folder, samples_per_pixel=64, size=[3840, 2160]\n", + " )\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "vscode": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlases.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlases.ipynb new file mode 100644 index 000000000..85a098e19 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlases.ipynb @@ -0,0 +1,719 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "071b89cd", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe98a938", + "metadata": {}, + "outputs": [], + "source": [ + "ignore_model_with_spinal_cord = False\n", + "mesh_offset = 250" + ] + }, + { + "cell_type": "markdown", + "id": "25d41a5e", + "metadata": {}, + "source": [ + "### Load Atlases" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765, \n", + " 1557651847\n", + "]\n", + "\n", + "test_list = [\n", + " 256, 260, 517, 1034, 267, 268, 1042, 276, 788, 535, 1050, 284, 1059, 291,\n", + " 297, 1067, 814, 306, 1075, 566, 1082, 584, 589, 592, 597, 605, 360, 619,\n", + " 1139, 1140, 1141, 1142, 631, 376, 639, 383, 646, 647, 392, 655, 400, 151,\n", + " 152, 663, 408, 159, 160, 416, 167, 168, 424, 175, 183, 698, 188, 191,\n", + " 192, 961, 196, 199, 200, 204, 208, 216, 224, 232, 496, 240, 248, \n", + " # 507, 212, 228, 236, 244, 220\n", + "]\n", + "\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109]\n", + "\n", + "tracts_ids = [619, 392, 260, 268, 1139, 292, 628, 66, 75, 58, 651, 659, 666, 674, 682, 691, 2316153360, 1009, 21, 665, 459, 876, 125, 705, 794, 237, 932, 871, 29, 389, 245, 627, 960, 85, 866, 553, 499, 490, 404, 410, 373, 784, 1036, 1012, 1003, 994, 1019, 1028, 2718688460, 102, 109, 863, 221, 1428498274, 855, 205, 213, 428, 405, 753, 690, 681, 653, 2500193001]\n", + "\n", + "seb_ids = [\n", + " 256, 260, 517, 1034, 267, 268, 1042, 276, 788, 535, 1050, 284, 1059, 291, 1209357605,\n", + " 297, 1067, 814, 306, 1075, 566, 1668688439, 1082, 584, 1024543562, 589, 592, 597,\n", + " 1992072790, 605, 2358040414, 1860102496, 360, 619, 1953921139, 1139, 1375046773, 1140,\n", + " 631, 376, 1141, 1142, 383, 639, 646, 647, 392, 655, 400, 151, 152, 663, 1203939479,\n", + " 408, 159, 160, 416, 167, 168, 424, 175, 183, 3389528505, 698, 188, 191, 192, 961,\n", + " 196, 199, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 1466095084, 496, 240,\n", + " 244, 248, 507, 2561915647\n", + "]\n", + "\n", + "regions_to_ignore = [\n", + " 1557651848, # Cell excluded from region 1557651847 (x<540)\n", + " 1024543562, 2358040414, 3263488087, 2416897036,\n", + " 3034756217, 2165415682, 2614168502, 1842735199,\n", + " 3101970431, 1140764290, 3092369320, 1811993763]\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "82ad851e", + "metadata": {}, + "outputs": [], + "source": [ + "cerrebelum_filter = str(cerebellum_ids).replace('[','').replace(']','')\n", + "cerebellum_granular_layer_filter = str(cerebellum_granular_layer_ids).replace('[','').replace(']','')\n", + "cerebellum_molecular_layer_filter = str(cerebellum_molecular_layer_ids).replace('[','').replace(']','')\n", + "olfactory_bulb_filter = str(olfactory_bulb_ids).replace('[','').replace(']','')\n", + "medula_filter = str(medula_ids).replace('[','').replace(']','')\n", + "ignore_filter = str(fibers_ids + regions_to_ignore).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00fb153b", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa65b308", + "metadata": {}, + "outputs": [], + "source": [ + "def load_atlas(population_name, scale, translation_z, translation_x):\n", + "\n", + " position = Vector3(translation_x, 0, translation_z)\n", + " atlas_assembly_name = '%s_cerrebelum' % population_name\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % cerrebelum_filter,\n", + " mesh_scale=scale, mesh_position=position\n", + " )\n", + "\n", + " atlas_assembly_name = '%s_olfactory_bulb' % population_name\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % olfactory_bulb_filter,\n", + " mesh_scale=scale, mesh_position=position\n", + " ) \n", + "\n", + " atlas_assembly_name = '%s_medulla' % population_name\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % medula_filter,\n", + " mesh_scale=scale, mesh_position=position\n", + " )\n", + "\n", + " atlas_assembly_name = '%s_other_regions' % population_name\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='level>=6 AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) ' % (cerrebelum_filter, medula_filter, olfactory_bulb_filter, ignore_filter),\n", + " mesh_scale=scale, mesh_position=position\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()\n", + "z = 0.0\n", + "population_names = [\n", + " ['atlas_ccfv3a', Vector3(1,1,1), 0],\n", + " ['atlas_ccfv3a_no_barrels', Vector3(1,1,1), -340],\n", + " ['atlas_ccfv3', Vector3(1,1,1), 0],\n", + " ['atlas_ccfv2', Vector3(1,1,1), 0],\n", + "]\n", + "for population_name in population_names:\n", + " if ignore_model_with_spinal_cord and population_name[0]=='annotation_ccfv2_l23split_barrelsplit':\n", + " continue\n", + " load_atlas(population_name[0], population_name[1], z, population_name[2])\n", + " z += 12000" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "329cd0a9", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8dd78b24", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % 'atlas_ccfv3a')\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c4743949", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " material_ids = be.get_material_ids(model_id)['ids'][:-1]\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " reflection_indices = list()\n", + " for material_id in material_ids:\n", + " c = [255, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " alpha = 1.0\n", + " if m_id in cerebellum_ids or m_id in olfactory_bulb_ids or m_id in medula_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(be.shading_mode.PERLIN)\n", + " alpha = 1.0\n", + " user_params.append(0.0001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(5.0)\n", + " reflection_indices.append(0.0)\n", + " else:\n", + " opacities.append(0.25)\n", + " alpha = 1.0\n", + " shading_modes.append(be.shading_mode.ELECTRON_TRANSPARENCY)\n", + " user_params.append(3.0)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " reflection_indices.append(0.0)\n", + " refraction_indices.append(0.95)\n", + " palette.append([alpha * c[0], alpha * c[1], alpha * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " reflection_indices=reflection_indices,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa4e5187", + "metadata": {}, + "outputs": [], + "source": [ + "''' Meshes are shifted compared to cells, they need to be realigned '''\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " transformation={\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [mesh_offset, 0.0, 0.0]\n", + " }\n", + " core.update_model(model_id, transformation=transformation)" + ] + }, + { + "cell_type": "markdown", + "id": "bb2fbf81", + "metadata": {}, + "source": [ + "### Spinal cord" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "329afed2", + "metadata": {}, + "outputs": [], + "source": [ + "import glob\n", + "import time\n", + "from tqdm import tqdm\n", + "import seaborn as sns\n", + "\n", + "species_folder = '/scratch/spinal_cord/3D_Mouse_SC_Atlas/Mouse_Spinal_Cord_3D_Atlas'\n", + "\n", + "def set_spinal_cord_materials(model_id, color, opacity):\n", + " colors = list()\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " shading_modes = list()\n", + " opacities = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " specular_exponents = list()\n", + " glossinesses = list()\n", + " for _ in material_ids:\n", + " colors.append(color)\n", + " opacities.append(opacity)\n", + " shading_modes.append(be.shading_mode.PERLIN)\n", + " user_params.append(0.0001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(5.0)\n", + " reflection_indices.append(0.0)\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, opacities=opacities, user_parameters=user_params,\n", + " diffuse_colors=colors, specular_colors=colors, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses)\n", + "\n", + "def load_spinal_cord_element(folder_name, sample_folder, color):\n", + " files = glob.glob(os.path.join(sample_folder, '*.obj'))\n", + " model_bounds_list = list()\n", + " group_model_ids = list()\n", + " to_show = ['df', 'lvf']\n", + "\n", + " for file in files:\n", + " base_name = os.path.basename(file)\n", + " values = base_name.split('_')\n", + " model_name = values[1].replace('.obj', '')\n", + " \n", + " if model_name not in to_show:\n", + " continue\n", + "\n", + " model = core.add_model(name=folder_name + '_' + model_name, path=file)\n", + " model_id = model['id']\n", + " group_model_ids.append(model_id)\n", + " model_bounds_list.append(model['bounds'])\n", + " time.sleep(0.1)\n", + "\n", + "def load_spinal_cord():\n", + " sample_folders = glob.glob(os.path.join(species_folder, '*'))\n", + " sample_folders.sort()\n", + "\n", + " sections = ['C', 'T', 'L', 'S', 'Co']\n", + " section_colors = dict()\n", + " palette = sns.color_palette('rainbow', len(sections))\n", + "\n", + " i = 0\n", + " for section_name in sections:\n", + " section_colors[section_name] = palette[i]\n", + " i += 1\n", + "\n", + " for sample_folder in tqdm(sample_folders):\n", + " values = sample_folder.split('/')\n", + " folder_name = values[len(values) - 1]\n", + " section_name = folder_name.split('_')[1].replace('vert', '')\n", + " section_name = ''.join([i for i in section_name if not i.isdigit()])\n", + " load_spinal_cord_element(\n", + " section_name,\n", + " sample_folder,\n", + " section_colors[section_name] # Colored by section\n", + " )\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ca7cafa", + "metadata": {}, + "outputs": [], + "source": [ + "if not ignore_model_with_spinal_cord:\n", + " load_spinal_cord()\n", + "\n", + " color_offset = dict()\n", + " color_offset['C'] = [0.0, 0.0, 0.0]\n", + " color_offset['T'] = [0.0, -0.05, 0.05]\n", + " color_offset['L'] = [0.0, -0.1, 0.1]\n", + " color_offset['S'] = [0.0, -0.15, 0.15]\n", + " color_offset['Co'] = [0.0, -0.2, 0.2]\n", + " model_ids = be.get_model_ids()['ids']\n", + " for i in range(68):\n", + " model_id = model_ids[len(model_ids) - 68 + i]\n", + " model_name = be.get_model_name(model_id)['name']\n", + " prefix = model_name.split('_')[0]\n", + " color = [255.0/256.0, 155.0/256.0, 205.0/256.0]\n", + " color[1] += color_offset[prefix][1] * 2\n", + " color[2] += color_offset[prefix][2] * 2\n", + " set_spinal_cord_materials(model_id, color, 1.0)\n", + "\n", + " model_ids = be.get_model_ids()['ids']\n", + " for i in range(68):\n", + " model_id = model_ids[len(model_ids) - 68 + i]\n", + " tf = {\n", + " 'rotation': [-0.5, -0.5, -0.5, 0.5],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1200.0, 1200.0, 1200.0],\n", + " 'translation': [mesh_offset / 1200.0 + 10.95, 5.45, 4.75]\n", + " }\n", + " core.update_model(model_id, transformation=tf)\n" + ] + }, + { + "cell_type": "markdown", + "id": "bc83dded", + "metadata": {}, + "source": [ + "### Grid" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0e534e9e", + "metadata": {}, + "outputs": [], + "source": [ + "if True:\n", + " status = be.add_grid(\n", + " min_value=0, max_value=1000000,\n", + " interval=1000, colored=False, radius=10.0,\n", + " show_axis=False,\n", + " position=Vector3(-500000, 10000, -500000)\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a3419e8", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(0.0, 1.0, 0.0),\n", + " intensity=1.0, is_visible=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " head_light=False,\n", + " current='advanced', background_color=[7.0/256.0, 33/256.0, 53/256.0],\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 0.7\n", + "params.soft_shadow_strength = 1.0\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 10\n", + "params.epsilon_multiplier = 500.0\n", + "params.use_hardware_randomizer = False\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "eec01e9e", + "metadata": {}, + "outputs": [], + "source": [ + "if ignore_model_with_spinal_cord:\n", + " status = core.set_camera(\n", + " current='orthographic',\n", + " orientation=[0.7071067811865475, 0.0, 0.0, 0.7071067811865476],\n", + " position=[6693.768048528529, -243452.42175483832, -6195.826160508945],\n", + " target=[6693.768048528529, 54999.42000699043, -6195.826160508996], \n", + " )\n", + " params = core.OrthographicCameraParams()\n", + " params.height = 37000\n", + " status = core.set_camera_params(params)\n", + "else:\n", + " status = core.set_camera(\n", + " current='orthographic',\n", + " orientation=[0.7071067811865475, 0.0, 0.0, 0.7071067811865476],\n", + " position=[27780.63062521215, -243452.42175483832, 23824.35556662828],\n", + " target=[27780.63062521215, 54999.42000699043, 23824.35556662823]\n", + " )\n", + " params = core.OrthographicCameraParams()\n", + " params.height = 55000\n", + " status = core.set_camera_params(params)" + ] + }, + { + "cell_type": "markdown", + "id": "0966ae96", + "metadata": {}, + "source": [ + "## Snapshots" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3bca0b18", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/images/atlases'\n", + "k = 8\n", + "spp = 256\n", + "square_image_size = [k*960, k*960]\n", + "portrait_image_size = [k*540, k*960]\n", + "landscape_image_size = [k*960, k*540]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86174773", + "metadata": {}, + "outputs": [], + "source": [ + "if ignore_model_with_spinal_cord:\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, show_progress=True,\n", + " base_name='atlases_top_view_%dx%d_%dspp_v3' % (portrait_image_size[0], portrait_image_size[1], spp),\n", + " size=portrait_image_size, samples_per_pixel=spp)\n", + "else:\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, show_progress=True,\n", + " base_name='atlases_with_spinal_cord_top_view_%dx%d_%dspp_v3' % (landscape_image_size[0], landscape_image_size[1], spp),\n", + " size=landscape_image_size, samples_per_pixel=spp)" + ] + }, + { + "cell_type": "markdown", + "id": "d22e512f", + "metadata": {}, + "source": [ + "### Movie" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87caaf1a", + "metadata": {}, + "outputs": [], + "source": [ + "keys = [\n", + "{'apertureRadius': 0.0,\n", + " 'direction': [0.0, 1.0, -4.440892098500626e-16],\n", + " 'focalDistance': 1.0,\n", + " 'origin': [27780.63062521215, -44979.85170420971, 23824.35556662828],\n", + " 'up': [0.0, 4.440892098500626e-16, 1.0]}\n", + " ,\n", + "{'apertureRadius': 0.0,\n", + " 'direction': [0.0, 1.0, -4.440892098500626e-16],\n", + " 'focalDistance': 1.0,\n", + " 'origin': [27780.63062521215, -44979.85170420971, 23824.35556662828],\n", + " 'up': [0.0, 4.440892098500626e-16, 1.0]}\n", + " ,\n", + "{'apertureRadius': 0.0,\n", + " 'direction': [0.6553724423068932, 0.5218272307970104, 0.5460616293637752],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [-15830.878814470148, -17948.049683837973, -8347.027793523213],\n", + " 'up': [0.3659347461913439, -0.8518192703488869, 0.37482754993752265]}\n", + ",\n", + "{'apertureRadius': 0.0,\n", + " 'direction': [0.6553724423068927, 0.5218272307970103, 0.5460616293637766],\n", + " 'focalDistance': 1.0,\n", + " 'origin': [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " 'up': [0.36593474619134375, -0.8518192703488876, 0.37482754993752265]}\n", + " ,\n", + "{'apertureRadius': 0.0,\n", + " 'direction': [0.6553724423068927, 0.5218272307970103, 0.5460616293637766],\n", + " 'focalDistance': 1.0,\n", + " 'origin': [-2565.3701241987646, -2607.8377454106976, -1731.3329308640486],\n", + " 'up': [0.36593474619134375, -0.8518192703488876, 0.37482754993752265]}\n", + "]\n", + "mm.build_camera_path(keys, 100, 100)\n", + "nb_frames = mm.get_nb_frames()\n", + "print(nb_frames)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c8435b8b", + "metadata": {}, + "outputs": [], + "source": [ + "mm.set_current_frame(400)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e1945aa4", + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "output_folder = '/scratch/videos/atlas/ccfv3a_atlases/v1'\n", + "k = 4\n", + "spp = 64\n", + "\n", + "nb_frames = mm.get_nb_frames()\n", + "for frame in tqdm(range(nb_frames)):\n", + " mm.set_current_frame(frame)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=spp)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('env': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlases_all_views.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlases_all_views.ipynb new file mode 100644 index 000000000..8f4b66d45 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_atlases_all_views.ipynb @@ -0,0 +1,611 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "75186674", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "071b89cd", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()" + ] + }, + { + "cell_type": "markdown", + "id": "25d41a5e", + "metadata": {}, + "source": [ + "### Atlases" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [\n", + " 10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705,\n", + " 10735, 10687, 10681, 10729, 10672, 10732\n", + "]\n", + "\n", + "cerebellum_molecular_layer_ids = [\n", + " 10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707,\n", + " 10737, 10689, 10683, 10731, 10674, 10734\n", + "]\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765, \n", + " 1557651847\n", + "]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109]\n", + "\n", + "tracts_ids = [\n", + " 619, 392, 260, 268, 1139, 292, 628, 66, 75, 58, 651, 659, 666, 674,\n", + " 682, 691, 2316153360, 1009, 21, 665, 459, 876, 125, 705, 794, 237,\n", + " 932, 871, 29, 389, 245, 627, 960, 85, 866, 553, 499, 490, 404, 410,\n", + " 373, 784, 1036, 1012, 1003, 994, 1019, 1028, 2718688460, 102, 109,\n", + " 863, 221, 1428498274, 855, 205, 213, 428, 405, 753, 690, 681, 653,\n", + " 2500193001\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "82ad851e", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "cerrebelum_filter = str(cerebellum_ids).replace('[','').replace(']','')\n", + "olfactory_bulb_filter = str(olfactory_bulb_ids).replace('[','').replace(']','')\n", + "medula_filter = str(medula_ids).replace('[','').replace(']','')\n", + "fibers_filter = str(fibers_ids).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "aa65b308", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "def load_atlas(population_name, scale, translation_z, translation_x):\n", + "\n", + " position = Vector3(translation_x, 0, translation_z)\n", + " atlas_assembly_name = '%s_cerrebelum' % population_name\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % cerrebelum_filter,\n", + " mesh_scale=scale, mesh_position=position\n", + " )\n", + "\n", + " atlas_assembly_name = '%s_olfactory_bulb' % population_name\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % olfactory_bulb_filter,\n", + " mesh_scale=scale, mesh_position=position\n", + " ) \n", + "\n", + " atlas_assembly_name = '%s_medulla' % population_name\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % medula_filter,\n", + " mesh_scale=scale, mesh_position=position\n", + " )\n", + "\n", + " atlas_assembly_name = '%s_other_regions' % population_name\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='level=6 AND guid NOT IN (1024543562) AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s) ' % (cerrebelum_filter, medula_filter, olfactory_bulb_filter, fibers_filter),\n", + " mesh_scale=scale, mesh_position=position\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9e3cad9", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "\n", + "atlas_data_folder = '/medias/atlas/mouse/CCFv3a/barrel_split'\n", + "data_folder = os.path.join(atlas_data_folder, 'mouse', 'CCFv3a', 'barrel_split')\n", + "region_file_name = 'hierarchy_ccfv2_l23split_barrelsplit.json'\n", + "\n", + "f = open(os.path.join(data_folder, region_file_name))\n", + "obj = json.load(f)\n", + "\n", + "region_colors=dict()\n", + "def node_color(node):\n", + " node_id = node['id']\n", + " color = node['color_hex_triplet']\n", + " region_colors[node_id] = color\n", + " for child in node['children']:\n", + " node_color(child)\n", + "\n", + "for node in obj['msg']:\n", + " node_color(node)\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))\n", + "\n", + "def set_atlas_materials():\n", + " model_ids = be.get_model_ids()['ids']\n", + " for model_id in model_ids:\n", + " material_ids = be.get_material_ids(model_id)['ids'][:-1]\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " reflection_indices = list()\n", + " for material_id in material_ids:\n", + " c = [255, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " id = region_colors[m_id]\n", + " c = hex_to_rgb(id)\n", + " alpha = 1.0\n", + " if m_id in cerebellum_ids or m_id in olfactory_bulb_ids or m_id in medula_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(be.shading_mode.PERLIN)\n", + " alpha = 1.0\n", + " user_params.append(0.0001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(5.0)\n", + " reflection_indices.append(0.0)\n", + " else:\n", + " opacities.append(0.2)\n", + " alpha = 1.0\n", + " shading_modes.append(be.shading_mode.ELECTRON_TRANSPARENCY)\n", + " user_params.append(3.0)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " reflection_indices.append(0.0)\n", + " refraction_indices.append(0.95)\n", + " palette.append([alpha * c[0] / 255.0, alpha * c[1] / 255.0, alpha * c[2] / 255.0])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " reflection_indices=reflection_indices,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "markdown", + "id": "1e5836aa", + "metadata": {}, + "source": [ + "### Spinal Cord" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9cc3bc7b", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "import glob\n", + "import time\n", + "from tqdm import tqdm\n", + "import seaborn as sns\n", + "import os\n", + "\n", + "base_folder = '/scratch/spinal_cord'\n", + "species_folder = os.path.join(base_folder, '3D_Mouse_SC_Atlas', 'Mouse_Spinal_Cord_3D_Atlas')\n", + "\n", + "def set_spinal_cord_materials(model_id, color, opacity):\n", + " colors = list()\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " shading_modes = list()\n", + " opacities = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " specular_exponents = list()\n", + " glossinesses = list()\n", + " for _ in material_ids:\n", + " colors.append(color)\n", + " opacities.append(opacity)\n", + " shading_modes.append(be.shading_mode.DIFFUSE)\n", + " user_params.append(0.00005)\n", + " refraction_indices.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " glossinesses.append(0.1)\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, opacities=opacities, user_parameters=user_params,\n", + " diffuse_colors=colors, specular_colors=colors, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses)\n", + "\n", + "def load_spinal_cord_element(folder_name, sample_folder, color):\n", + " files = glob.glob(os.path.join(sample_folder, '*.obj'))\n", + " model_bounds_list = list()\n", + " group_model_ids = list()\n", + " to_show = ['df', 'lvf']\n", + "\n", + " for file in files:\n", + " base_name = os.path.basename(file)\n", + " values = base_name.split('_')\n", + " model_name = values[1].replace('.obj', '')\n", + " \n", + " if model_name not in to_show:\n", + " continue\n", + "\n", + " model = core.add_model(name=folder_name + '_' + model_name, path=file)\n", + " model_id = model['id']\n", + " group_model_ids.append(model_id)\n", + " model_bounds_list.append(model['bounds'])\n", + " time.sleep(0.1)\n", + "\n", + "def load_spinal_cord_geometry():\n", + " sample_folders = glob.glob(os.path.join(species_folder, '*'))\n", + " sample_folders.sort()\n", + "\n", + " sections = ['C', 'T', 'L', 'S', 'Co']\n", + " section_colors = dict()\n", + " palette = sns.color_palette('rainbow', len(sections))\n", + "\n", + " i = 0\n", + " for section_name in sections:\n", + " section_colors[section_name] = palette[i]\n", + " i += 1\n", + "\n", + " for sample_folder in tqdm(sample_folders):\n", + " values = sample_folder.split('/')\n", + " folder_name = values[len(values) - 1]\n", + " section_name = folder_name.split('_')[1].replace('vert', '')\n", + " section_name = ''.join([i for i in section_name if not i.isdigit()])\n", + " load_spinal_cord_element(\n", + " section_name,\n", + " sample_folder,\n", + " section_colors[section_name] # Colored by section\n", + " )\n", + " i += 1\n", + "\n", + "def add_missing_segment():\n", + " return core.add_model(\n", + " name='C_missing_segment',\n", + " path=os.path.join(base_folder, 'BrainStem_and_C1', 'vert01_main_figure.obj'))\n", + "\n", + "def finalize_spinal_cord():\n", + " nb_spinal_cord_models = 69\n", + " color_offset = dict()\n", + " color_offset['C'] = [0.0, 0.0, 0.0]\n", + " color_offset['T'] = [0.0, -0.05, 0.05]\n", + " color_offset['L'] = [0.0, -0.1, 0.1]\n", + " color_offset['S'] = [0.0, -0.15, 0.15]\n", + " color_offset['Co'] = [0.0, -0.2, 0.2]\n", + " model_ids = be.get_model_ids()['ids']\n", + " for i in range(nb_spinal_cord_models):\n", + " model_id = model_ids[len(model_ids) - nb_spinal_cord_models + i]\n", + " model_name = be.get_model_name(model_id)['name']\n", + " prefix = model_name.split('_')[0]\n", + " color = [255.0/256.0, 155.0/256.0, 205.0/256.0]\n", + " color[1] += color_offset[prefix][1] * 2\n", + " color[2] += color_offset[prefix][2] * 2\n", + " set_spinal_cord_materials(model_id, color, 1.0)\n", + "\n", + " model_ids = be.get_model_ids()['ids']\n", + " for i in range(nb_spinal_cord_models):\n", + " model_id = model_ids[len(model_ids) - nb_spinal_cord_models + i]\n", + " tf = {\n", + " 'rotation': [-0.5, -0.5, -0.5, 0.5],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " # 'scale': [1200.0, 1200.0, 1200.0],\n", + " # 'translation': [10.95, 5.45, 4.75]\n", + " 'scale': [1000.0, 1000.0, 1000.0],\n", + " # 'translation': [11.95 * 1.2, 5.45 * 1.2, 4.75 * 1.2]\n", + " 'translation': [13.1, 6.4, 5.7]\n", + " }\n", + " core.update_model(model_id, transformation=tf)\n", + "\n", + "def load_spinal_cord():\n", + " load_spinal_cord_geometry()\n", + " add_missing_segment()\n", + " finalize_spinal_cord()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3899cbbc", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "camera_positions = [\n", + " [\n", + " [0.707, 0.0, 0.0, 0.707],\n", + " [6712.570602416991, -20625.231898204915, 5687.532684326177],\n", + " [6712.570602416991, 3849.942932128906, 5687.532684326172],\n", + " \"horizontal_top\",\n", + " 15000\n", + " ]\n", + " ,\n", + " [\n", + " [1.0, 0.0, 0.0, 0.0],\n", + " [6712.570602416991, 3849.942932128895, -18787.64214600765],\n", + " [6712.570602416991, 3849.942932128906, 5687.532684326172], \n", + " \"sagittal_left\",\n", + " 15000\n", + " ]\n", + " ,\n", + " [\n", + " [-0.707, 0.0, 0.0 , 0.707],\n", + " [6712.570602416991, 28325.11776246271, 5687.53268432616],\n", + " [6712.570602416991, 3849.942932128906, 5687.532684326172], \n", + " \"horizontal_bottom\",\n", + " 15000\n", + " ]\n", + " ,\n", + " [\n", + " [-0.707, 0.0, -0.707, 0.0],\n", + " [31187.74543275076, 3849.9429321289094, 5687.532684326178],\n", + " [6712.570602416991, 3849.942932128906, 5687.532684326172], \n", + " \"coronal_back\",\n", + " 15000\n", + " ]\n", + " ,\n", + " [\n", + " [-0.707, 0.0, 0.707, 0.0],\n", + " [-17762.60422791676, 3849.942932128902, 5687.53268432616],\n", + " [6712.570602416991, 3849.942932128906, 5687.532684326172], \n", + " \"coronal_front\",\n", + " 15000\n", + " ]\n", + "]\n", + "\n", + "spinal_cord_camera_positions = [\n", + " [\n", + " [0.7071067811865475, 0.0, 0.0, 0.7071067811865476],\n", + " [27688.203451693324, -70864.8187057275, 5412.764513015763],\n", + " [27688.203451693324, 3073.0527750299707, 5412.764513015747],\n", + " \"horizontal_top\",\n", + " 75000\n", + " ]\n", + " ,\n", + " [\n", + " [1.0, 0.0, 0.0, 2.220446049250313e-16],\n", + " [27688.203451693324, 3073.052775029938, -68525.10696774173],\n", + " [27688.203451693324, 3073.0527750299707, 5412.764513015747],\n", + " \"sagittal_left\",\n", + " 75000\n", + " ]\n", + " ,\n", + " [\n", + " [0.7071067811865477, 0.0, 0.0, -0.7071067811865474],\n", + " [27688.203451693324, 77010.92425578744, 5412.764513015714],\n", + " [27688.203451693324, 3073.0527750299707, 5412.764513015747],\n", + " \"horizontal_bottom\",\n", + " 75000\n", + " ]\n", + " ,\n", + " [\n", + " [-0.707, 0.0, -0.707, 0.0],\n", + " [31187.74543275076, 3849.9429321289094, 5687.532684326178],\n", + " [6712.570602416991, 3849.942932128906, 5687.532684326172], \n", + " \"coronal_back\",\n", + " 15000\n", + " ]\n", + " ,\n", + " [\n", + " [-0.707, 0.0, 0.707, 0.0],\n", + " [-17762.60422791676, 3849.942932128902, 5687.53268432616],\n", + " [6712.570602416991, 3849.942932128906, 5687.532684326172], \n", + " \"coronal_front\",\n", + " 15000\n", + " ]\n", + "]\n", + "\n", + "def set_camera(camera):\n", + " core.set_camera(\n", + " current = 'orthographic',\n", + " orientation = camera[0],\n", + " position = camera[1],\n", + " target = camera[2]\n", + " )\n", + " params = core.OrthographicCameraParams()\n", + " params.height = camera[4]\n", + " core.set_camera_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d21ae471", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "output_folder = '/scratch/images/atlas'\n", + "k = 4\n", + "spp = 128\n", + "square_image_size = [k*960, k*960]\n", + "portrait_image_size = [k*540, k*960]\n", + "landscape_image_size = [k*960, k*540]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c3b8be3b", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " current='advanced', background_color=[0.0, 36.0/256.0, 0.0],\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.fog_start = 1e6\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 30\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": { + "metadata": {} + }, + "outputs": [], + "source": [ + "atlases = [\n", + " ['ccfv3a_barrels', 'annotation_ccfv2_l23split_barrelsplit', Vector3(1,1,1), 0],\n", + " ['ccfv3a', 'atlas_ccfv3a', Vector3(1,1,1), 0],\n", + " ['ccfv3', 'atlas_ccfv3', Vector3(1,1,1), 0],\n", + " ['ccfv2', 'atlas_ccfv2', Vector3(1,1,1), 0],\n", + " ['ccfv3a_barrels_spinal_cord', 'annotation_ccfv2_l23split_barrelsplit', Vector3(1,1,1), 0],\n", + "]\n", + "\n", + "image_size = square_image_size\n", + "for atlas in tqdm([['ccfv3a_barrels_spinal_cord', 'annotation_ccfv2_l23split_barrelsplit', Vector3(1,1,1), 0]]):\n", + " spinal_cord = (atlas[0] == 'ccfv3a_barrels_spinal_cord')\n", + " cameras = camera_positions\n", + " status = be.reset_scene()\n", + " load_atlas(atlas[1], atlas[2], 0.0, atlas[3])\n", + " set_atlas_materials()\n", + " if spinal_cord:\n", + " load_spinal_cord()\n", + " cameras = spinal_cord_camera_positions\n", + "\n", + " for camera in cameras:\n", + " set_camera(camera)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, show_progress=True,\n", + " base_name='atlas_%s_%s_%dx%d_%dspp_v1' % (atlas[0], camera[3], image_size[0], image_size[1], spp),\n", + " size=image_size, samples_per_pixel=spp)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_cerebelum_exploded.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_cerebelum_exploded.ipynb new file mode 100644 index 000000000..290310b48 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_cerebelum_exploded.ipynb @@ -0,0 +1,408 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "import os\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "\n", + "cell_radius = 5.0" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a_averaged'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [\n", + " 10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732\n", + "]\n", + "cerebellum_molecular_layer_ids = [\n", + " 10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734\n", + "]\n", + "\n", + "cerebellum_leaf_ids = [\n", + " 10672, 10674, 10675, 10677, 10678, 10680, 10681, 10683, 10684, 10686, 10687, 10689, 10690, 10692, 846, 10705,\n", + " 10707, 10708, 10710, 10711, 10713, 91, 989, 10720, 10722, 10723, 10725, 10726, 589508455, 10728, 10729, 10731,\n", + " 10732, 10734, 10735, 10737 \n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d1b4bc0", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_center = [7075.026185864174,3862.47588645537,5699.969406561653]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()\n", + "errors = list()\n", + "\n", + "for hemisphere_id in range(2):\n", + " for region_id in tqdm(cerebellum_leaf_ids):\n", + " try:\n", + " filter = 'region_guid=%d AND z>%f' % (region_id, atlas_center[2])\n", + " if hemisphere_id == 1:\n", + " filter = 'region_guid=%d AND z<=%f' % (region_id, atlas_center[2])\n", + "\n", + " atlas_assembly_name = '%d_%d' % (region_id, hemisphere_id)\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=True, load_meshes=False, cell_radius=cell_radius,\n", + " cell_sql_filter=filter\n", + " )\n", + " except Exception as e:\n", + " errors.append(e)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "312f078c", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % population_name)\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2d01ab4", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " material_ids = be.get_material_ids(model_id)['ids'][:-1]\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " reflection_indices = list()\n", + " for material_id in material_ids:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " alpha = 1.0\n", + " opacities.append(1.0)\n", + " alpha = 1.0\n", + " shading_modes.append(be.shading_mode.ELECTRON_TRANSPARENCY)\n", + " user_params.append(3.0)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " reflection_indices.append(0.0)\n", + " refraction_indices.append(0.95)\n", + " palette.append([alpha * c[0], alpha * c[1], alpha * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " reflection_indices=reflection_indices,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "status = core.set_renderer(\n", + " head_light=True,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b895919", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "nb_models = len(model_ids)\n", + "model_center = Vector3()\n", + "\n", + "model_bounds = dict()\n", + "for model_id in model_ids:\n", + " bounds = be.get_model_bounds(model_id)\n", + " model_bounds[model_id] = bounds\n", + " model_center.x += bounds.center.x\n", + " model_center.y += bounds.center.y\n", + " model_center.z += bounds.center.z\n", + "model_center.x /= nb_models\n", + "model_center.y /= nb_models\n", + "model_center.z /= nb_models\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e772f66", + "metadata": {}, + "outputs": [], + "source": [ + "def explode(factor, speed):\n", + " import math\n", + " model_ids = be.get_model_ids()['ids']\n", + " for model_id in model_ids:\n", + " aabb = model_bounds[model_id]\n", + "\n", + " normal = Vector3(aabb.center.x - model_center.x, aabb.center.y - model_center.y, aabb.center.z - model_center.z)\n", + " length = math.sqrt(normal.x*normal.x + normal.y*normal.y + normal.z*normal.z)\n", + " normal.x /= length\n", + " normal.y /= length\n", + " normal.z /= length\n", + "\n", + " transformation={\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [\n", + " normal.x * speed * factor, \n", + " normal.y * speed * factor,\n", + " normal.z * speed * factor\n", + " ]\n", + " }\n", + " core.update_model(model_id, transformation=transformation)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fe177e5e", + "metadata": {}, + "outputs": [], + "source": [ + "keys = [\n", + " # Cerebellum\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-0.5191155653746677, 0.17713002641529518, 0.836148302353031],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [15391.238801629486, 2988.224146474133, -1927.6054642919696],\n", + " 'up': [-0.11693830913040375, -0.9838094070689234, 0.13581046506221545]\n", + " }\n", + " ,\n", + " # Side view\n", + "{'apertureRadius': 0.0,\n", + " 'direction': [1.0, 2.465190328815662e-32, 2.220446049250313e-16],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [1518.35936833469, 3762.4869995117183, 5699.971252441411],\n", + " 'up': [0.0, -1.0, 1.2246467991473532e-16]}\n", + "]\n", + "double_keys = list()\n", + "for key in keys:\n", + " double_keys.append(key)\n", + " double_keys.append(key)\n", + "mm.build_camera_path(double_keys, 50, 25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "for i in range(mm.get_nb_frames()):\n", + " mm.set_current_frame(i)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7592f94f", + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "import os\n", + "\n", + "output_folder = '/scratch/videos/atlas/%s/cerebellum_explosion/v1' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "k = 4\n", + "\n", + "nb_frames = mm.get_nb_frames()\n", + "model_ids = be.get_model_ids()['ids']\n", + "\n", + "mm.set_current_frame(0)\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " transformation={\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [0.0, 0.0, 0.0]\n", + " }\n", + " core.update_model(model_id, transformation=transformation)\n", + "\n", + "\n", + "explosion_frame = 0\n", + "for frame in tqdm(range(nb_frames)):\n", + " mm.set_current_frame(frame)\n", + "\n", + " if frame >= nb_frames / 2.0:\n", + " explode(float(explosion_frame) / float(nb_frames / 2.0), 3000)\n", + " explosion_frame += 1\n", + "\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('env': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_cerebelum_layers.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_cerebelum_layers.ipynb new file mode 100644 index 000000000..20181c20c --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_cerebelum_layers.ipynb @@ -0,0 +1,351 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "id": "214711a3", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "import os\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()\n", + "be.reset_scene()\n", + "\n", + "cell_radius = 5.0" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a_averaged'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [\n", + " 10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732\n", + "]\n", + "cerebellum_molecular_layer_ids = [\n", + " 10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734\n", + "]\n", + "\n", + "cerebellum_leaf_ids = [\n", + " 10672, 10674, 10675, 10677, 10678, 10680, 10681, 10683, 10684, 10686, 10687, 10689, 10690, 10692, 846, 10705,\n", + " 10707, 10708, 10710, 10711, 10713, 91, 989, 10720, 10722, 10723, 10725, 10726, 589508455, 10728, 10729, 10731,\n", + " 10732, 10734, 10735, 10737 \n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3d1b4bc0", + "metadata": {}, + "outputs": [], + "source": [ + "cerrebelum_filter = str(cerebellum_ids).replace('[','').replace(']','')\n", + "cerebellum_granular_layer_filter = str(cerebellum_granular_layer_ids).replace('[','').replace(']','')\n", + "cerebellum_molecular_layer_filter = str(cerebellum_molecular_layer_ids).replace('[','').replace(']','')\n", + "cerebellum_leaf_filter = str(cerebellum_leaf_ids).replace('[','').replace(']','')\n", + "\n", + "atlas_center = [7075.026185864174,3862.47588645537,5699.969406561653]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'Cerebellum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=True, load_meshes=False, cell_radius=cell_radius,\n", + " # cell_sql_filter='(y>%f OR z>%f)' % (4350.0, atlas_center[2]),\n", + " cell_sql_filter='(y>%f OR z>%f)' % (atlas_center[1], atlas_center[2]),\n", + " region_sql_filter='guid IN (%s)' % cerebellum_leaf_filter\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "312f078c", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % population_name)\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2d01ab4", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " material_ids = be.get_material_ids(model_id)['ids'][:-1]\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " reflection_indices = list()\n", + " for material_id in material_ids:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " alpha = 1.0\n", + " opacities.append(1.0)\n", + " alpha = 1.0\n", + " shading_modes.append(be.shading_mode.ELECTRON_TRANSPARENCY)\n", + " user_params.append(3.0)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " reflection_indices.append(0.0)\n", + " refraction_indices.append(0.95)\n", + " palette.append([alpha * c[0], alpha * c[1], alpha * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " reflection_indices=reflection_indices,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "status = core.set_renderer(\n", + " head_light=True,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "08caf2df", + "metadata": {}, + "outputs": [], + "source": [ + "mm.set_camera(\n", + " direction=[-0.5191155653746677, 0.17713002641529518, 0.836148302353031],\n", + " origin=[15391.238801629486, 2988.224146474133, -1927.6054642919696],\n", + " up=[-0.11693830913040375, -0.9838094070689234, 0.13581046506221545]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7592f94f", + "metadata": {}, + "outputs": [], + "source": [ + "# output_folder = '/scratch/images/atlas/cerebellum'\n", + "\n", + "# k = 4\n", + "# spp = 128\n", + "\n", + "# image_size = [k * 960, k * 540]\n", + "\n", + "# mm.create_snapshot(\n", + "# renderer='advanced', show_progress=True,\n", + "# path=output_folder, base_name='cerebellum_layers_%dx%d_%dspp_v1' % (image_size[0], image_size[1], spp),\n", + "# size=image_size, samples_per_pixel=spp)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b8ae7c6", + "metadata": {}, + "outputs": [], + "source": [ + "keys = [\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-0.5191155653740487, 0.17713002641548445, 0.836148302353376],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [15391.238801629486, 2988.224146474133, -1927.6054642919696],\n", + " 'up': [-0.11693830913051373, -0.9838094070688865, 0.1358104650623926]\n", + " }\n", + " ,\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-0.12377833427232945, 0.4338101678600587, 0.8924615746495728],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [12782.796248964276, 1336.183560987327, -2003.7937903171176],\n", + " 'up': [-0.16784283904235042, -0.895571900564365, 0.41204338643125266]\n", + " }\n", + "]\n", + "\n", + "double_keys = list()\n", + "for key in keys:\n", + " double_keys.append(key)\n", + " double_keys.append(key)\n", + "mm.build_camera_path(double_keys, 50, 25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd4ee07c", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/cerebellum_explosion/v2' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "k = 4\n", + "\n", + "nb_frames = mm.get_nb_frames()\n", + "for frame in tqdm(range(nb_frames)):\n", + " mm.set_current_frame(frame)\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_create_raw_volume_from_nrrd.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_create_raw_volume_from_nrrd.ipynb new file mode 100644 index 000000000..b3c780a28 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_create_raw_volume_from_nrrd.ipynb @@ -0,0 +1,230 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "fb2e47ae", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "497b3c52", + "metadata": {}, + "outputs": [], + "source": [ + "import nrrd\n", + "import os\n", + "\n", + "# Path to your NRRD file\n", + "data_folder = '/medias/atlas/mouse/CCFv3a/barrel_split'\n", + "\n", + "path = os.path.join(data_folder, 'annotation_ccfv2_l23split_barrelsplit.nrrd')\n", + "\n", + "# Reading the NRRD file\n", + "data, header = nrrd.read(path)\n", + "\n", + "# `data` contains the image data as a numpy array\n", + "# `header` contains the metadata as a dictionary\n", + "\n", + "print(\"Data Shape:\", data.shape)\n", + "print(\"Header Information:\", header)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0006be54", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "\n", + "f = open(os.path.join(data_folder, 'hierarchy_ccfv2_l23split_barrelsplit.json'))\n", + "obj = json.load(f)\n", + "\n", + "region_colors=dict()\n", + "def node_color(node):\n", + " node_id = node['id']\n", + " color = node['color_hex_triplet']\n", + " region_colors[node_id] = color\n", + " for child in node['children']:\n", + " node_color(child)\n", + "\n", + "for node in obj['msg']:\n", + " node_color(node)\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9b1c3138", + "metadata": {}, + "outputs": [], + "source": [ + "region_mapping = dict()\n", + "region_mapping_index = dict()\n", + "region_mapping[0] = 0\n", + "i = 0\n", + "for key in region_colors.keys():\n", + " region_mapping[key] = i\n", + " region_mapping_index[i] = key\n", + " i += 1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c97e5e65", + "metadata": {}, + "outputs": [], + "source": [ + "volume = list()\n", + "for z in range(data.shape[2]):\n", + " for y in range(data.shape[1]):\n", + " for x in range(data.shape[0]):\n", + " voxel_value = data[x][y][z]\n", + " volume.append(region_mapping[voxel_value])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d102ffb6", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "array = np.array(volume, dtype=np.uint16)\n", + "\n", + "# Write the binary data to a file\n", + "volume_filename = os.path.join(data_folder, 'annotation_ccfv2_l23split_barrelsplit.raw')\n", + "array.tofile(volume_filename)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e57e4bbd", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765\n", + "]\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109]\n", + "\n", + "all_regions = list(set(cerebellum_ids + cerebellum_granular_layer_ids + cerebellum_molecular_layer_ids + olfactory_bulb_ids + medula_ids))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "47270e60", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, TransferFunction\n", + "\n", + "colormap_filename = os.path.join(data_folder, 'annotation_ccfv2_l23split_barrelsplit.1dt')\n", + "with open(colormap_filename, 'w') as file:\n", + " file.write('%d\\n' % len(region_mapping_index))\n", + " for index in region_mapping_index:\n", + " alpha = 0.0\n", + " color = [0,0,0]\n", + " region_id = region_mapping_index[index]\n", + " # if region_id in all_regions and region_id not in fibers_ids:\n", + " if region_id not in[0, 997]:\n", + " color = hex_to_rgb(region_colors[region_id])\n", + " #alpha = 0.05\n", + " alpha = 0.1\n", + " file.write('%f %f %f %f\\n' % (color[0] / 255.0, color[1] / 255.0, color[2] / 255.0, alpha))\n", + "\n", + "be = BioExplorer()\n", + "model_ids = be.get_model_ids()['ids']\n", + "tf = TransferFunction(\n", + " bioexplorer=be, model_id=model_ids[0],\n", + " filename=colormap_filename,\n", + " show_widget=False,\n", + " value_range=[0, len(region_mapping)]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57c3dec1", + "metadata": {}, + "outputs": [], + "source": [ + "core = be.core_api()\n", + "core.set_volume_parameters(\n", + " pre_integration=True, specular=(0,0,0),gradient_shading=True, single_shade=False, gradient_offset=0.5,\n", + " adaptive_sampling=False, adaptive_max_sampling_rate=1.0, sampling_rate=5.0)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_full_spinal_cord_images.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_full_spinal_cord_images.ipynb new file mode 100644 index 000000000..35b5987d1 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_full_spinal_cord_images.ipynb @@ -0,0 +1,895 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b6ad4e23", + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, MovieMaker, Vector3\n", + "from tqdm import tqdm\n", + "import glob\n", + "import os\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "core = be.core_api()\n", + "mm = MovieMaker(be)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e80b8839", + "metadata": {}, + "source": [ + "## Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "33e76b8b", + "metadata": {}, + "outputs": [], + "source": [ + "species_folder = '/scratch/spinal_cord/3D_Mouse_SC_Atlas/Mouse_Spinal_Cord_3D_Atlas'\n", + "create_snapshot = False\n", + "transparency = 0.1\n", + "\n", + "output_folder = '/scratch/images/atlas/'\n", + "os.makedirs(output_folder, exist_ok=True)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "ebec9aee", + "metadata": {}, + "source": [ + "## Images" + ] + }, + { + "cell_type": "markdown", + "id": "3f427296", + "metadata": {}, + "source": [ + "### Spinal cord" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e53088f5", + "metadata": {}, + "outputs": [], + "source": [ + "def set_materials(model_id, color, opacity):\n", + " colors = list()\n", + " material_ids = be.get_material_ids(model_id)['ids']\n", + " shading_modes = list()\n", + " opacities = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " specular_exponents = list()\n", + " glossinesses = list()\n", + " for _ in material_ids:\n", + " colors.append(color)\n", + " opacities.append(opacity)\n", + " shading_modes.append(be.shading_mode.DIFFUSE)\n", + " user_params.append(0.00005)\n", + " refraction_indices.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " glossinesses.append(0.1)\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, opacities=opacities, user_parameters=user_params,\n", + " diffuse_colors=colors, specular_colors=colors, specular_exponents=specular_exponents,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13e395e4", + "metadata": {}, + "outputs": [], + "source": [ + "def create_image(folder_name, sample_folder, color):\n", + " files = glob.glob(os.path.join(sample_folder, '*.obj'))\n", + " model_bounds_list = list()\n", + " group_model_ids = list()\n", + " to_show = ['df', 'lvf']\n", + "\n", + " for file in files:\n", + " base_name = os.path.basename(file)\n", + " values = base_name.split('_')\n", + " model_name = values[1].replace('.obj', '')\n", + " \n", + " if model_name not in to_show:\n", + " continue\n", + "\n", + " model = core.add_model(name=folder_name + '_' + model_name, path=file)\n", + " model_id = model['id']\n", + " group_model_ids.append(model_id)\n", + " model_bounds_list.append(model['bounds'])\n", + " import time\n", + " time.sleep(0.1)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e26f123b", + "metadata": {}, + "outputs": [], + "source": [ + "def load_data():\n", + " import seaborn as sns\n", + " be.reset_scene()\n", + " sample_folders = glob.glob(os.path.join(species_folder, '*'))\n", + " sample_folders.sort()\n", + "\n", + " sections = ['C', 'T', 'L', 'S', 'Co']\n", + " section_colors = dict()\n", + " palette = sns.color_palette('rainbow', len(sections))\n", + "\n", + " i = 0\n", + " for section_name in sections:\n", + " section_colors[section_name] = palette[i]\n", + " i += 1\n", + "\n", + " for sample_folder in tqdm(sample_folders):\n", + " values = sample_folder.split('/')\n", + " folder_name = values[len(values) - 1]\n", + " section_name = folder_name.split('_')[1].replace('vert', '')\n", + " section_name = ''.join([i for i in section_name if not i.isdigit()])\n", + " create_image(\n", + " section_name,\n", + " sample_folder,\n", + " section_colors[section_name] # Colored by section\n", + " )\n", + " i += 1\n", + "\n", + "load_data()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba2388a3", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for i in range(68):\n", + " model_id = model_ids[i]\n", + " tf = {\n", + " 'rotation': [-0.5, -0.5, -0.5, 0.5],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1200.0, 1200.0, 1200.0],\n", + " 'translation': [10.95, 5.45, 4.75]\n", + " }\n", + " core.update_model(model_id, transformation=tf)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3baba697", + "metadata": {}, + "outputs": [], + "source": [ + "color_offset = dict()\n", + "color_offset['C'] = [0.0, 0.0, 0.0]\n", + "color_offset['T'] = [0.0, -0.05, 0.05]\n", + "color_offset['L'] = [0.0, -0.1, 0.1]\n", + "color_offset['S'] = [0.0, -0.15, 0.15]\n", + "color_offset['Co'] = [0.0, -0.2, 0.2]\n", + "model_ids = be.get_model_ids()['ids']\n", + "for i in range(68):\n", + " model_id = model_ids[i]\n", + " model_name = be.get_model_name(model_id)['name']\n", + " prefix = model_name.split('_')[0]\n", + " color = [255.0/256.0, 155.0/256.0, 205.0/256.0]\n", + " color[1] += color_offset[prefix][1] * 2\n", + " color[2] += color_offset[prefix][2] * 2\n", + " set_materials(model_id, color, 1.0)" + ] + }, + { + "cell_type": "markdown", + "id": "2087aea0", + "metadata": {}, + "source": [ + "### Brain" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "703ec4a7", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'ccfv3a'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "57da040a", + "metadata": {}, + "outputs": [], + "source": [ + "cerebellum_ids = [\n", + " 512, 1025, 519, 1033, 528, 1041, 1049,\n", + " 1056, 1064, 1073, 1091, 846, 91, 589508455,\n", + " 989, 1143, 1144, 1145, 645, 912, 920,\n", + " 928, 936, 944, 10672, 10673, 10674, 10675,\n", + " 10676, 10677, 951, 10680, 10679, 10678, 10681,\n", + " 10682, 957, 10683, 10687, 10688, 10689, 10690,\n", + " 10691, 10692, 10684, 10686, 968, 976, 10705,\n", + " 10706, 10707, 10708, 10709, 10710, 10711, 10712,\n", + " 10713, 984, 10714, 10715, 10716, 10717, 10718,\n", + " 992, 10720, 10721, 10722, 10719, 10723, 10724,\n", + " 10725, 10728, 1001, 10726, 10727, 10729, 10730,\n", + " 10731, 10733, 10732, 10734, 10737, 10736, 10735,\n", + " 1007, 1017, 10685\n", + "]\n", + "\n", + "cerebellum_granular_layer_ids = [10675, 10678, 10708, 10711, 10684, 10720, 10723, 10690, 10726, 10705, 10735, 10687, 10681, 10729, 10672, 10732]\n", + "cerebellum_molecular_layer_ids = [10677, 10680, 10710, 10713, 10686, 10722, 10725, 10692, 10728, 10707, 10737, 10689, 10683, 10731, 10674, 10734]\n", + "\n", + "\n", + "olfactory_bulb_ids = [507, 212, 228, 236, 244, 220]\n", + "\n", + "medula_ids = [\n", + " 773, 781, 1039, 789, 1048, 45, 1069,\n", + " 560, 307, 53, 568, 61, 576, 69,\n", + " 839, 1098, 76, 77, 83, 1107, 852,\n", + " 859, 607, 96, 354, 589508451, 101, 106,\n", + " 112, 370, 372, 887, 379, 640, 386,\n", + " 642, 903, 135, 136, 651, 395, 653,\n", + " 143, 659, 661, 666, 154, 161, 674,\n", + " 169, 682, 938, 939, 429, 177, 691,\n", + " 437, 185, 955, 445, 701, 193, 963,\n", + " 711, 970, 203, 202, 206, 207, 720,\n", + " 209, 978, 217, 222, 225, 995, 230,\n", + " 235, 765, \n", + " 1557651847\n", + "]\n", + "\n", + "test_list = [\n", + " 256, 260, 517, 1034, 267, 268, 1042, 276, 788, 535, 1050, 284, 1059, 291,\n", + " 297, 1067, 814, 306, 1075, 566, 1082, 584, 589, 592, 597, 605, 360, 619,\n", + " 1139, 1140, 1141, 1142, 631, 376, 639, 383, 646, 647, 392, 655, 400, 151,\n", + " 152, 663, 408, 159, 160, 416, 167, 168, 424, 175, 183, 698, 188, 191,\n", + " 192, 961, 196, 199, 200, 204, 208, 216, 224, 232, 496, 240, 248, \n", + " # 507, 212, 228, 236, 244, 220\n", + "]\n", + "\n", + "\n", + "fibers_ids = [960, 1000, 1009, 396, 109]\n", + "\n", + "tracts_ids = [619, 392, 260, 268, 1139, 292, 628, 66, 75, 58, 651, 659, 666, 674, 682, 691, 2316153360, 1009, 21, 665, 459, 876, 125, 705, 794, 237, 932, 871, 29, 389, 245, 627, 960, 85, 866, 553, 499, 490, 404, 410, 373, 784, 1036, 1012, 1003, 994, 1019, 1028, 2718688460, 102, 109, 863, 221, 1428498274, 855, 205, 213, 428, 405, 753, 690, 681, 653, 2500193001]\n", + "\n", + "seb_ids = [\n", + " 256, 260, 517, 1034, 267, 268, 1042, 276, 788, 535, 1050, 284, 1059, 291, 1209357605,\n", + " 297, 1067, 814, 306, 1075, 566, 1668688439, 1082, 584, 1024543562, 589, 592, 597,\n", + " 1992072790, 605, 2358040414, 1860102496, 360, 619, 1953921139, 1139, 1375046773, 1140,\n", + " 631, 376, 1141, 1142, 383, 639, 646, 647, 392, 655, 400, 151, 152, 663, 1203939479,\n", + " 408, 159, 160, 416, 167, 168, 424, 175, 183, 3389528505, 698, 188, 191, 192, 961,\n", + " 196, 199, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 1466095084, 496, 240,\n", + " 244, 248, 507, 2561915647\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5fb6a48d", + "metadata": {}, + "outputs": [], + "source": [ + "cerrebelum_filter = str(cerebellum_ids).replace('[','').replace(']','')\n", + "cerebellum_granular_layer_filter = str(cerebellum_granular_layer_ids).replace('[','').replace(']','')\n", + "cerebellum_molecular_layer_filter = str(cerebellum_molecular_layer_ids).replace('[','').replace(']','')\n", + "olfactory_bulb_filter = str(olfactory_bulb_ids).replace('[','').replace(']','')\n", + "medula_filter = str(medula_ids).replace('[','').replace(']','')\n", + "fibers_filter = str(fibers_ids).replace('[','').replace(']','')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11d87bdf", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import os\n", + "atlas_data_folder = '/home/favreau/medias/atlas'\n", + "data_folder = os.path.join(atlas_data_folder, 'mouse', 'CCFv2', 'barrel_split')\n", + "\n", + "region_file_name = 'hierarchy_ccfv2_l23split_barrelsplit.json'\n", + "# f = open(os.path.join(data_folder, region_file_name))\n", + "\n", + "\n", + "f = open('brain_regions.json')\n", + "obj = json.load(f)\n", + "\n", + "regions_with_no_children = list()\n", + "region_colors=dict()\n", + "def node_color(node, level):\n", + " node_id = node['id']\n", + " color = node['color_hex_triplet']\n", + " region_colors[node_id] = color\n", + " children = node['children']\n", + " if not children:\n", + " regions_with_no_children.append(node_id)\n", + " for child in children:\n", + " node_color(child, level + 1)\n", + "\n", + "for node in obj['msg']:\n", + " node_color(node, 0)\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5bd48e72", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerrebelum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % cerrebelum_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4abfeae5", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerebellum_granular_layer'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % cerebellum_granular_layer_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8d55624a", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerebellum_molecular_layer'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % cerebellum_molecular_layer_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "460a22b6", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'cerrebelum'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s) AND guid NOT IN (%s) AND guid NOT IN (%s)' % (cerrebelum_filter, cerebellum_granular_layer_filter, cerebellum_molecular_layer_filter),\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41fe1fc8", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'olfactory_bulb'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % olfactory_bulb_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f19f321d", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'medula'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid IN (%s)' % medula_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cc8f1fed", + "metadata": {}, + "outputs": [], + "source": [ + "atlas_assembly_name = 'other_regions'\n", + "be.remove_assembly(atlas_assembly_name)\n", + "atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + "all_filter = olfactory_bulb_ids + medula_ids + cerebellum_ids + cerebellum_granular_layer_ids + cerebellum_molecular_layer_ids\n", + "all_filter = str(all_filter).replace('[', '').replace(']', '')\n", + "atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='level in (6) AND guid NOT IN (1024543562) AND guid NOT IN (%s)' % all_filter,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a600897a", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids'][-6:]\n", + "\n", + "shading_mode = be.shading_mode.DIFFUSE\n", + "exponent = 50.0\n", + "\n", + "for model_id in tqdm(model_ids):\n", + " material_ids = be.get_material_ids(model_id)['ids'][:-1]\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " reflection_indices = list()\n", + " for material_id in material_ids:\n", + " c = [255, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " id = region_colors[m_id]\n", + " c = hex_to_rgb(id)\n", + " alpha = 1.0\n", + " if (m_id in cerebellum_ids and m_id not in cerebellum_granular_layer_ids and m_id not in cerebellum_molecular_layer_ids) or m_id in olfactory_bulb_ids or m_id in medula_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(shading_mode)\n", + " alpha = 1.0\n", + " user_params.append(0.00001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(exponent)\n", + " reflection_indices.append(0.0)\n", + " elif m_id in cerebellum_granular_layer_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(shading_mode)\n", + " alpha = 0.5\n", + " user_params.append(0.00001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(exponent)\n", + " reflection_indices.append(0.0)\n", + " elif m_id in cerebellum_molecular_layer_ids:\n", + " opacities.append(1.0)\n", + " shading_modes.append(shading_mode)\n", + " alpha = 1.0\n", + " user_params.append(0.00001)\n", + " glossinesses.append(0.1)\n", + " specular_exponents.append(exponent)\n", + " reflection_indices.append(0.0)\n", + " else:\n", + " opacities.append(0.3)\n", + " alpha = 2.0\n", + " # opacities.append(1.0)\n", + " # alpha = 0.5\n", + " shading_modes.append(shading_mode)\n", + " user_params.append(3.0)\n", + " glossinesses.append(0.5)\n", + " specular_exponents.append(50.0)\n", + " reflection_indices.append(0.0)\n", + " refraction_indices.append(1.0)\n", + " palette.append([alpha * c[0] / 255.0, alpha * c[1] / 255.0, alpha * c[2] / 255.0])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " reflection_indices=reflection_indices,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6d0df245", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_renderer(\n", + " head_light=False,\n", + " current='advanced',\n", + " background_color=[11.0/256.0, 67/256.0, 14/256.0],\n", + " subsampling=4, max_accum_frames=512)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 200.0\n", + "params.shadow_intensity = 0.5\n", + "params.soft_shadow_strength = 0.25\n", + "params.main_exposure = 1.25\n", + "params.max_ray_depth = 30\n", + "params.epsilon_multiplier = 5.0\n", + "params.use_hardware_randomizer = False\n", + "params.show_background = False\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cdb97865", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.clear_lights()\n", + "core.add_light_directional(\n", + " angularDiameter=45, color=(1,1,1), direction=(-0.5, 0.5, 0.2),\n", + " intensity=0.8, is_visible=False)" + ] + }, + { + "cell_type": "markdown", + "id": "5e674de1", + "metadata": {}, + "source": [ + "### Floor" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2cc1508f", + "metadata": {}, + "outputs": [], + "source": [ + "if False:\n", + "\n", + " from bioexplorer import Vector3\n", + " status = be.add_box(\n", + " name='Floor',\n", + " bottom_left_corner=Vector3(-500000, 8000, -500000), top_right_corner=Vector3(500000, 8200, 500000))\n", + "\n", + " model_id = be.get_model_ids()['ids'][:-1][0]\n", + " set_materials(model_id, [1, 1, 1], 1.0)\n", + "\n", + " status = core.set_renderer(\n", + " head_light=False,\n", + " current='advanced',\n", + " background_color=[11.0/256.0, 67/256.0, 14/256.0],\n", + " subsampling=4, max_accum_frames=512)\n", + " params = core.AdvancedRendererParams()\n", + " params.gi_ray_length = 5000.0\n", + " params.shadow_intensity = 0.8\n", + " params.soft_shadow_strength = 1.0\n", + " params.main_exposure = 1.5\n", + " params.max_ray_depth = 30\n", + " params.epsilon_multiplier = 4.0\n", + " params.use_hardware_randomizer = False\n", + " params.show_background = False\n", + " status = core.set_renderer_params(params) " + ] + }, + { + "cell_type": "markdown", + "id": "4ac8e20e", + "metadata": {}, + "source": [ + "## Snapshots" + ] + }, + { + "cell_type": "markdown", + "id": "2a7470f4", + "metadata": {}, + "source": [ + "### 3D view" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b129ef98", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/images/atlas'\n", + "k = 4\n", + "spp = 256\n", + "image_size = [k*960, k*540]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bdc76570", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.8541502729779541, 0.0622479784707429, -0.3074297814156883, 0.41477636124385714],\n", + " position=[624.61022325259, -16843.11224754929, -9430.324215398294],\n", + " target=[14712.6758305083, 5375.456994337424, 4459.917593163967],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28fcddcc", + "metadata": {}, + "outputs": [], + "source": [ + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, show_progress=True,\n", + " base_name='ccfv2_with_spinal_cord_figure_%dx%d_%dspp_v1' % (image_size[0], image_size[1], spp),\n", + " size=image_size, samples_per_pixel=spp)" + ] + }, + { + "cell_type": "markdown", + "id": "38bc2495", + "metadata": {}, + "source": [ + "### Sagital view" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b876926d", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_camera(\n", + " current='orthographic',\n", + " orientation=[-1.0, 0.0, 0.0, 0.0],\n", + " position=[25277.44517898313, 5087.062515237374, -41859.262825475045],\n", + " target=[25277.44517898312, 5087.062515237374, 5.777407429365563e-11],\n", + ")\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 55000\n", + "status = core.set_camera_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ebca88b5", + "metadata": {}, + "outputs": [], + "source": [ + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, show_progress=True,\n", + " base_name='ccfv2_with_spinal_cord_figure_%dx%d_%dspp_v2' % (image_size[0], image_size[1], spp),\n", + " size=image_size, samples_per_pixel=spp)" + ] + }, + { + "cell_type": "markdown", + "id": "53bd62a2", + "metadata": {}, + "source": [ + "### Coronal view" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36837d45", + "metadata": {}, + "outputs": [], + "source": [ + "status = core.set_camera(\n", + " current='orthographic',\n", + " orientation=[0.7071067811865475, 0.0, 0.0, 0.7071067811865476],\n", + " position=[25246.78033755872, -21000.118117022015, 5290.873373618535],\n", + " target=[25246.78033755872, 3717.4600460529327, 5290.8733736185295],\n", + ")\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 55000\n", + "status = core.set_camera_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e5273d85", + "metadata": {}, + "outputs": [], + "source": [ + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, show_progress=True,\n", + " base_name='ccfv2_with_spinal_cord_figure_%dx%d_%dspp_v3' % (image_size[0], image_size[1], spp),\n", + " size=image_size, samples_per_pixel=spp)" + ] + }, + { + "cell_type": "markdown", + "id": "38f14c52", + "metadata": {}, + "source": [ + "### Closeup on spinal cord junction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2df7d1aa", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='perspective',\n", + " orientation=[0.9026660109835698, -0.12968665364956194, 0.3442263848492494, 0.22334645834175407],\n", + " position=[21663.61582469972, -1876.340583461724, -5053.494020929131],\n", + " target=[11437.838731368503, 7060.760982298247, 6982.146512926149]\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0ef462b4", + "metadata": {}, + "outputs": [], + "source": [ + "mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, show_progress=True,\n", + " base_name='ccfv2_with_spinal_cord_figure_%dx%d_%dspp_v4' % (image_size[0], image_size[1], spp),\n", + " size=image_size, samples_per_pixel=spp)" + ] + }, + { + "cell_type": "markdown", + "id": "ad1c045a", + "metadata": {}, + "source": [ + "## Debug" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e2c7899", + "metadata": {}, + "outputs": [], + "source": [ + "import ipywidgets as widgets\n", + "\n", + "class TreeWidget(widgets.VBox):\n", + " def __init__(self, json_data):\n", + " super().__init__()\n", + " self._tree = self._build_tree(json_data)\n", + " self.children = [self._tree]\n", + " \n", + " def _build_tree(self, data):\n", + " tree = widgets.VBox()\n", + " for item in data:\n", + " label = widgets.Label(f\"{item['id']}: {item['acronym']}\")\n", + " if 'children' in item and item['children']:\n", + " children_tree = self._build_tree(item['children'])\n", + " tree.children += (widgets.HBox([label, children_tree]),)\n", + " else:\n", + " tree.children += (label,)\n", + " return tree\n", + "\n", + "f = open(os.path.join(data_folder, region_file_name))\n", + "json_data = json.load(f)['msg']\n", + "tree = TreeWidget(json_data)\n", + "tree" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "vscode": { + "interpreter": { + "hash": "65a2a94abf2eb3adb4d28c55c7f89ac02d1645ee89635d66151f00605bd11d84" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_import_to_db.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_import_to_db.ipynb new file mode 100644 index 000000000..05a3d7629 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_import_to_db.ipynb @@ -0,0 +1,255 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# Notebook to import Sonata-based files into the database\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "code", + "execution_count": + "id": "345ec844", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "from tqdm.notebook import tqdm\n", + "import numpy as np\n", + "from glob import glob\n", + "from bioexplorer import Quaternion\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "db_schema = 'atlas_ccfv3a_averaged'\n", + "atlas_data_folder = '/home/favreau/medias/atlas'\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string + ', schema: ' + db_schema)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd093f2f", + "metadata": {}, + "outputs": [], + "source": [ + "data_folder = os.path.join(atlas_data_folder, 'mouse', 'CCFv3a', 'averaged')" + ] + }, + { + "cell_type": "markdown", + "id": "209b0cf5", + "metadata": {}, + "source": [ + "### Regions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b866c5ba", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "f = open('brain_regions.json')\n", + "obj = json.load(f)\n", + "update_only = False\n", + "\n", + "def insert_region(session, node, level):\n", + " guid = node['id']\n", + " if 'atlas_id' not in node:\n", + " atlas_guid = -1\n", + " else:\n", + " atlas_guid = node['atlas_id']\n", + " acronym = node['acronym']\n", + " name = node['name']\n", + " \n", + " ontology_guid = node['ontology_id']\n", + " color_hex_triplet = node['color_hex_triplet']\n", + " graph_order = 0 # node['graph_order']\n", + " hemisphere_guid = node['hemisphere_id']\n", + " parent_guid = node['parent_structure_id']\n", + " if not parent_guid:\n", + " parent_guid = -1\n", + " session.execute(\n", + " 'INSERT INTO %s.region VALUES (:guid, :code, :description, :parent_guid, :level, :atlas_guid, :ontology_guid, :color_hex_triplet, :graph_order, :hemisphere_guid)' % db_schema,\n", + " {\n", + " 'guid': guid,\n", + " 'code': acronym,\n", + " 'description': name,\n", + " 'parent_guid': parent_guid,\n", + " 'level': level,\n", + " 'atlas_guid': atlas_guid,\n", + " 'ontology_guid': ontology_guid,\n", + " 'color_hex_triplet': color_hex_triplet,\n", + " 'graph_order': graph_order,\n", + " 'hemisphere_guid': hemisphere_guid\n", + " }\n", + " )\n", + " children = node['children']\n", + " for child in children:\n", + " insert_region(session, child, level + 1)\n", + "\n", + "def update_region(session, node, level):\n", + " guid = node['id']\n", + " if 'atlas_id' not in node:\n", + " atlas_guid = -1\n", + " else:\n", + " atlas_guid = node['atlas_id']\n", + " if not atlas_guid:\n", + " return\n", + "\n", + " name = node['name']\n", + " ontology_guid = node['ontology_id']\n", + " color_hex_triplet = node['color_hex_triplet']\n", + " graph_order = 0 # node['graph_order']\n", + " hemisphere_guid = node['hemisphere_id']\n", + " parent_guid = node['parent_structure_id']\n", + " if not parent_guid:\n", + " parent_guid = -1\n", + " if not atlas_guid:\n", + " parent_guid = -1\n", + " session.execute(\n", + " 'UPDATE %s.region SET description=:name, parent_guid=parent_guid, level=:level, atlas_guid=:atlas_guid, ontology_guid=:ontology_guid, color_hex_triplet=:color_hex_triplet, graph_order=:graph_order, hemisphere_guid=:hemisphere_guid WHERE guid=:guid' % db_schema,\n", + " {\n", + " 'name': name,\n", + " 'parent_guid': parent_guid,\n", + " 'level': level,\n", + " 'atlas_guid': atlas_guid,\n", + " 'ontology_guid': ontology_guid,\n", + " 'color_hex_triplet': color_hex_triplet,\n", + " 'graph_order': graph_order,\n", + " 'hemisphere_guid': hemisphere_guid,\n", + " 'guid': guid\n", + " }\n", + " )\n", + " for child in node['children']:\n", + " update_region(session, child, level + 1)\n", + " session.commit()\n", + "\n", + "if update_only:\n", + " print('Updating existing regions')\n", + " with Session(engine) as session:\n", + " for node in obj['msg']:\n", + " update_region(session, node, 0)\n", + " session.commit()\n", + "else:\n", + " print('Deleting existing regions')\n", + " with Session(engine) as session:\n", + " session.execute('DELETE FROM %s.region' % db_schema)\n", + " session.commit()\n", + "\n", + " with Session(engine) as session:\n", + " for node in obj['msg']:\n", + " insert_region(session, node, 0)\n", + " session.commit()\n", + "\n", + "f.close()" + ] + }, + { + "cell_type": "markdown", + "id": "f1b0774d", + "metadata": {}, + "source": [ + "## Meshes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5046e6c3", + "metadata": {}, + "outputs": [], + "source": [ + "mesh_folder = os.path.join(data_folder, 'meshes')" + ] + }, + { + "cell_type": "markdown", + "id": "8ef6d4f4", + "metadata": {}, + "source": [ + "### Import meshes into DB" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bce72403", + "metadata": {}, + "outputs": [], + "source": [ + "import trimesh\n", + "\n", + "def get_id_from_name(name):\n", + " basename = os.path.basename(name).split('.')[0]\n", + " return int(basename)\n", + "\n", + "print('Deleting existing meshes')\n", + "with Session(engine) as session:\n", + " session.execute('DELETE FROM %s.mesh' % db_schema)\n", + " session.commit()\n", + "\n", + "errors = list()\n", + "files = glob(os.path.join(mesh_folder, '*.obj'))\n", + "with Session(engine) as session:\n", + " for filename in tqdm(files):\n", + " try:\n", + " guid = get_id_from_name(filename)\n", + " mesh = trimesh.load(filename)\n", + " session.execute(\n", + " 'INSERT INTO %s.mesh VALUES (:guid, :vertices, :indices, :normals, NULL)' % db_schema,\n", + " {\n", + " 'guid': guid,\n", + " 'vertices': np.array(mesh.vertices, dtype=np.float32).tobytes(),\n", + " 'indices': np.array(mesh.faces, dtype=np.uint32).tobytes(),\n", + " 'normals': np.array(mesh.vertex_normals, dtype=np.float32).tobytes(),\n", + " }\n", + " )\n", + " except Exception as e:\n", + " errors.append(e)\n", + " session.commit() " + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('env': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_main_olfactory_bulb_exploded.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_main_olfactory_bulb_exploded.ipynb new file mode 100644 index 000000000..c895f5c96 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_main_olfactory_bulb_exploded.ipynb @@ -0,0 +1,399 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Connect to back-end" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "255fc219", + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, Vector3, MovieMaker\n", + "from tqdm import tqdm\n", + "import os\n", + "\n", + "url = 'localhost:5000'\n", + "be = BioExplorer(url)\n", + "mm = MovieMaker(be)\n", + "core = be.core_api()" + ] + }, + { + "cell_type": "markdown", + "id": "d7c658d2", + "metadata": {}, + "source": [ + "### Load Atlas" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cd5c7162", + "metadata": {}, + "outputs": [], + "source": [ + "population_name = 'atlas_ccfv3a_averaged'" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a1d7bdc6", + "metadata": {}, + "outputs": [], + "source": [ + "olfactory_bulb_ids = [212, 244, 236, 228, 220]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1e1c80f3", + "metadata": {}, + "outputs": [], + "source": [ + "status = be.reset_scene()\n", + "for region_id in olfactory_bulb_ids:\n", + " try:\n", + " atlas_assembly_name = 'Cells %d' % region_id\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=True, load_meshes=False, cell_radius=5.0,\n", + " region_sql_filter='guid=%d' % region_id,\n", + " )\n", + "\n", + " if False:\n", + " atlas_assembly_name = 'Mesh %d' % region_id\n", + " be.remove_assembly(atlas_assembly_name)\n", + " atlas_assembly = be.add_assembly(atlas_assembly_name)\n", + " atlas_model = be.add_atlas(\n", + " assembly_name=atlas_assembly_name,\n", + " population_name=population_name,\n", + " load_cells=False, load_meshes=True,\n", + " region_sql_filter='guid=%d' % region_id,\n", + " mesh_scale=Vector3(1, 1, 1)\n", + " )\n", + " except Exception as e:\n", + " print(e)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "65dd97e3", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "x = 0\n", + "for model_id in model_ids:\n", + " transformation={\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [x, 0.0, 0.0]\n", + " }\n", + " core.update_model(model_id, transformation=transformation)\n", + " x += 2200\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ef4a1ad", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from sqlalchemy import create_engine\n", + "from sqlalchemy.orm import Session\n", + "\n", + "db_host = os.getenv('DB_HOST')\n", + "db_name = os.getenv('DB_NAME')\n", + "db_user = os.getenv('DB_USER')\n", + "db_password = os.getenv('DB_PASSWORD')\n", + "db_schema = population_name\n", + "\n", + "db_connection_string = 'postgresql+psycopg2://%s:%s@%s:5432/%s' % (db_user, db_password, db_host, db_name)\n", + "print('Connection string: ' + db_connection_string + ', schema: ' + db_schema)\n", + "\n", + "engine = create_engine(db_connection_string)\n", + "conn = engine.connect()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "region_colors = dict()\n", + "\n", + "def hex_to_rgb(value):\n", + " value = value.lstrip('#')\n", + " lv = len(value)\n", + " return tuple(int(value[i:i + lv // 3], 16) / 256.0 for i in range(0, lv, lv // 3))\n", + "\n", + "with Session(engine) as session:\n", + " data = session.execute('select guid, color_hex_triplet from %s.region' % 'atlas_ccfv3a')\n", + " for d in data.all():\n", + " region_colors[int(d[0])] = hex_to_rgb(d[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c2d01ab4", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in tqdm(model_ids):\n", + " material_ids = be.get_material_ids(model_id)['ids'][:-1]\n", + " palette = list()\n", + " opacities = list()\n", + " shading_modes = list()\n", + " specular_exponents = list()\n", + " user_params = list()\n", + " refraction_indices = list()\n", + " glossinesses = list()\n", + " reflection_indices = list()\n", + " for material_id in material_ids:\n", + " c = [1, 0, 0]\n", + " m_id = material_id\n", + " if m_id in region_colors:\n", + " c = region_colors[m_id]\n", + " opacities.append(1.0)\n", + " alpha = 1.0\n", + " shading_modes.append(be.shading_mode.ELECTRON_TRANSPARENCY)\n", + " user_params.append(3.0)\n", + " glossinesses.append(1.0)\n", + " specular_exponents.append(50.0)\n", + " reflection_indices.append(0.0)\n", + " refraction_indices.append(0.95)\n", + " palette.append([alpha * c[0], alpha * c[1], alpha * c[2]])\n", + " \n", + " be.set_materials(\n", + " model_ids=[model_id], material_ids=material_ids,\n", + " shading_modes=shading_modes, user_parameters=user_params,\n", + " opacities=opacities, specular_exponents=specular_exponents,\n", + " reflection_indices=reflection_indices,\n", + " refraction_indices=refraction_indices, glossinesses=glossinesses,\n", + " diffuse_colors=palette, specular_colors=palette)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "111cb1ac", + "metadata": {}, + "outputs": [], + "source": [ + "background_color = [0.0, 0.0, 0.0]\n", + "status = core.set_renderer(\n", + " head_light=True,\n", + " current='advanced', background_color=background_color,\n", + " subsampling=4, max_accum_frames=128)\n", + "params = core.AdvancedRendererParams()\n", + "params.gi_ray_length = 1e6\n", + "params.shadow_intensity = 1.0\n", + "params.soft_shadow_strength = 0.5\n", + "params.main_exposure = 1.5\n", + "params.max_ray_depth = 1\n", + "params.epsilon_multiplier = 50.0\n", + "params.use_hardware_randomizer = True\n", + "status = core.set_renderer_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9f215b3b", + "metadata": {}, + "outputs": [], + "source": [ + "keys = [\n", + " # Olfactory bulb\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [0.7469370424463216, 0.3606491560448456, 0.5585850345880041],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [-3120.532189038173, 1835.5169097748767, 2165.927051941915],\n", + " 'up': [0.3224948767666639, -0.9311843737781622, 0.16997857656370974]\n", + " }\n", + " ,\n", + " # Side view\n", + " {\n", + " 'apertureRadius': 0.0,\n", + " 'direction': [-1.3331370380301985e-16, -1.2246467991473532e-16, 1.0],\n", + " 'focalDistance': 1000000.0,\n", + " 'origin': [7236.727651380601, 4482.658523559142, -9145.317280084804],\n", + " 'up': [-4.440892098500626e-16, -1.0, -1.2246467991473537e-16]\n", + " }\n", + "]\n", + "double_keys = list()\n", + "for key in keys:\n", + " double_keys.append(key)\n", + " double_keys.append(key)\n", + "mm.build_camera_path(double_keys, 50, 25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "95f31dac", + "metadata": {}, + "outputs": [], + "source": [ + "from tqdm import tqdm\n", + "import os\n", + "\n", + "output_folder = '/scratch/videos/atlas/%s/olfactory_bulb_explosion/v1' % population_name\n", + "os.makedirs(output_folder, exist_ok=True)\n", + "\n", + "k = 4\n", + "\n", + "nb_frames = mm.get_nb_frames()\n", + "model_ids = be.get_model_ids()['ids']\n", + "\n", + "mm.set_current_frame(0)\n", + "model_ids = be.get_model_ids()['ids']\n", + "for model_id in model_ids:\n", + " transformation={\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [0.0, 0.0, 0.0]\n", + " }\n", + " core.update_model(model_id, transformation=transformation)\n", + "\n", + "\n", + "explosion_frame = 0\n", + "for frame in tqdm(range(nb_frames)):\n", + " mm.set_current_frame(frame)\n", + "\n", + " if frame >= nb_frames / 2.0:\n", + " x = 0\n", + " for model_id in model_ids:\n", + " transformation={\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [x, 0.0, 0.0]\n", + " }\n", + " core.update_model(model_id, transformation=transformation)\n", + " x += 600 * float(explosion_frame) / float(nb_frames / 2.0)\n", + " explosion_frame += 1\n", + "\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=[k * 960, k * 540],\n", + " samples_per_pixel=64)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbffd507", + "metadata": {}, + "outputs": [], + "source": [ + "core.set_camera(\n", + " current='orthographic',\n", + " orientation=[1.0, 0.0, 0.0, 2.83276944882399e-16],\n", + " position=[7576.438343030802, 4265.342891871651, -8852.298404831818],\n", + " target=[7576.438343030802, 4265.342891871657, 5687.5],\n", + ")\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 10000\n", + "status = core.set_camera_params(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a6cc0dad", + "metadata": {}, + "outputs": [], + "source": [ + "output_folder = '/scratch/videos/atlas/%s/olfactory_bulb_explosion/v2' % population_name\n", + "k = 4\n", + "spp = 128\n", + "image_size = [k*960, k*270]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8b6a302", + "metadata": {}, + "outputs": [], + "source": [ + "model_ids = be.get_model_ids()['ids']\n", + "step = 2200\n", + "x = 0\n", + "for frame in tqdm(range(100)):\n", + " i = 0\n", + " for model_id in model_ids:\n", + " transformation={\n", + " 'rotation': [0.0, 0.0, 0.0, 1.0],\n", + " 'rotation_center': [0.0, 0.0, 0.0],\n", + " 'scale': [1.0, 1.0, 1.0],\n", + " 'translation': [i * x * step, 0.0, 0.0]\n", + " }\n", + " core.update_model(model_id, transformation=transformation)\n", + " i += 1\n", + " mm.create_snapshot(\n", + " renderer='advanced',\n", + " path=output_folder, base_name='%05d' % frame,\n", + " size=image_size, samples_per_pixel=spp) \n", + " x += 0.01" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('env': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_regions_color_codes.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_regions_color_codes.ipynb new file mode 100644 index 000000000..e913e335b --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/BioExplorer_regions_color_codes.ipynb @@ -0,0 +1,106 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f992ef9f", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5b2edd2b", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Load the JSON file with color codes\n", + "with open('brain_regions.json') as f:\n", + " brain_data = json.load(f)\n", + "\n", + "# Extract brain regions and their color codes\n", + "def extract_brain_regions(data):\n", + " regions = []\n", + " colors = []\n", + " \n", + " def recursive_extraction(children):\n", + " for child in children:\n", + " regions.append(child['name'])\n", + " colors.append(\"#\" + child['color_hex_triplet'])\n", + " if 'children' in child:\n", + " recursive_extraction(child['children'])\n", + " \n", + " recursive_extraction(data['msg'][0]['children'])\n", + " return regions, colors\n", + "\n", + "brain_regions, brain_colors = extract_brain_regions(brain_data)\n", + "\n", + "# Create a dataframe to display\n", + "brain_df = pd.DataFrame({\n", + " 'Brain Region': brain_regions,\n", + " 'Color': brain_colors\n", + "})\n", + "\n", + "# Display the updated colormap\n", + "fig, ax = plt.subplots(figsize=(1, 10))\n", + "\n", + "brain_regions.reverse()\n", + "brain_colors.reverse()\n", + "\n", + "regions_to_label = ['isocortex', 'hippocampus', 'striatum', 'thalamus', 'hypothalamus', 'midbrain', 'pons', 'medulla', 'cerebellum']\n", + "\n", + "for i, region in enumerate(brain_regions):\n", + " if region.lower() in regions_to_label:\n", + " ax.barh(i, 1, 10, color=brain_colors[i])\n", + " ax.text(1.2, i, region, ha='left', va='top', color='black', fontsize=15)\n", + " elif i%10 == 0:\n", + " ax.barh(i, 1, 10,color=brain_colors[i])\n", + " ax.text(0, i, '', ha='center', va='center', color='black', fontsize=15)\n", + "\n", + "ax.xaxis.set_visible(False)\n", + "ax.yaxis.set_visible(False)\n", + "\n", + "# Remove the rectangle surrounding the plot\n", + "for spine in ax.spines.values():\n", + " spine.set_visible(False)\n", + "\n", + "plt.tight_layout()\n", + "\n", + "# Save the updated plot\n", + "plt.savefig('detailed_allen_brain_colormap.png')\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "interpreter": { + "hash": "ea9a5fa46eb6bad2806a8ea1d08e15bb1e255a2d4320b81e765591579963c56b" + }, + "kernelspec": { + "display_name": "Python 3.8.10 64-bit ('env': venv)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/brain_regions.json b/bioexplorer/pythonsdk/notebooks/ccfv3/brain_regions.json new file mode 100644 index 000000000..a68b73e6e --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/brain_regions.json @@ -0,0 +1,23589 @@ +{ + "success": true, + "id": 0, + "start_row": 0, + "num_rows": 1, + "total_rows": 1, + "msg": [ + { + "id": 997, + "atlas_id": -1, + "ontology_id": 1, + "acronym": "root", + "name": "root", + "color_hex_triplet": "FFFFFF", + "graph_order": 0, + "st_level": 0, + "hemisphere_id": 3, + "parent_structure_id": null, + "children": [ + { + "id": 8, + "atlas_id": 0, + "ontology_id": 1, + "acronym": "grey", + "name": "Basic cell groups and regions", + "color_hex_triplet": "BFDAE3", + "graph_order": 1, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [ + { + "id": 567, + "atlas_id": 70, + "ontology_id": 1, + "acronym": "CH", + "name": "Cerebrum", + "color_hex_triplet": "B0F0FF", + "graph_order": 2, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 8, + "children": [ + { + "id": 688, + "atlas_id": 85, + "ontology_id": 1, + "acronym": "CTX", + "name": "Cerebral cortex", + "color_hex_triplet": "B0FFB8", + "graph_order": 3, + "st_level": 3, + "hemisphere_id": 3, + "parent_structure_id": 567, + "children": [ + { + "id": 695, + "atlas_id": 86, + "ontology_id": 1, + "acronym": "CTXpl", + "name": "Cortical plate", + "color_hex_triplet": "70FF70", + "graph_order": 4, + "st_level": 4, + "hemisphere_id": 3, + "parent_structure_id": 688, + "children": [ + { + "id": 315, + "atlas_id": 746, + "ontology_id": 1, + "acronym": "Isocortex", + "name": "Isocortex", + "color_hex_triplet": "70FF71", + "graph_order": 5, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 695, + "children": [ + { + "id": 184, + "atlas_id": 871, + "ontology_id": 1, + "acronym": "FRP", + "name": "Frontal pole, cerebral cortex", + "color_hex_triplet": "268F45", + "graph_order": 6, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 68, + "atlas_id": 998, + "ontology_id": 1, + "acronym": "FRP1", + "name": "Frontal pole, layer 1", + "color_hex_triplet": "268F45", + "graph_order": 7, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + }, + { + "id": 667, + "atlas_id": 1073, + "ontology_id": 1, + "acronym": "FRP2/3", + "name": "Frontal pole, layer 2/3", + "color_hex_triplet": "268F45", + "graph_order": 8, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [ + { + "id": 2646114338, + "atlas_id": 1073, + "ontology_id": 1, + "acronym": "FRP2", + "name": "Frontal pole, layer 2", + "color_hex_triplet": "268F45", + "graph_order": 8, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 667, + "children": [] + }, + { + "id": 2536061413, + "atlas_id": 1073, + "ontology_id": 1, + "acronym": "FRP3", + "name": "Frontal pole, layer 3", + "color_hex_triplet": "268F45", + "graph_order": 8, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 667, + "children": [] + } + ] + }, + { + "id": 526157192, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FRP5", + "name": "Frontal pole, layer 5", + "color_hex_triplet": "268F45", + "graph_order": 9, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + }, + { + "id": 526157196, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FRP6a", + "name": "Frontal pole, layer 6a", + "color_hex_triplet": "268F45", + "graph_order": 10, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + }, + { + "id": 526322264, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FRP6b", + "name": "Frontal pole, layer 6b", + "color_hex_triplet": "268F45", + "graph_order": 11, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 184, + "children": [] + } + ] + }, + { + "id": 500, + "atlas_id": 203, + "ontology_id": 1, + "acronym": "MO", + "name": "Somatomotor areas", + "color_hex_triplet": "1F9D5A", + "graph_order": 12, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 107, + "atlas_id": 1003, + "ontology_id": 1, + "acronym": "MO1", + "name": "Somatomotor areas, layer 1", + "color_hex_triplet": "1F9D5A", + "graph_order": 13, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 219, + "atlas_id": 1017, + "ontology_id": 1, + "acronym": "MO2/3", + "name": "Somatomotor areas, layer 2/3", + "color_hex_triplet": "1F9D5A", + "graph_order": 14, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [ + { + "id": 2546495501, + "atlas_id": 1017, + "ontology_id": 1, + "acronym": "MO2", + "name": "Somatomotor areas, layer 2", + "color_hex_triplet": "1F9D5A", + "graph_order": 14, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 219, + "children": [] + }, + { + "id": 2906756445, + "atlas_id": 1017, + "ontology_id": 1, + "acronym": "MO3", + "name": "Somatomotor areas, layer 3", + "color_hex_triplet": "1F9D5A", + "graph_order": 14, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 219, + "children": [] + } + ] + }, + { + "id": 299, + "atlas_id": 1027, + "ontology_id": 1, + "acronym": "MO5", + "name": "Somatomotor areas, layer 5", + "color_hex_triplet": "1F9D5A", + "graph_order": 15, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 644, + "atlas_id": 787, + "ontology_id": 1, + "acronym": "MO6a", + "name": "Somatomotor areas, layer 6a", + "color_hex_triplet": "1F9D5A", + "graph_order": 16, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 947, + "atlas_id": 825, + "ontology_id": 1, + "acronym": "MO6b", + "name": "Somatomotor areas, layer 6b", + "color_hex_triplet": "1F9D5A", + "graph_order": 17, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [] + }, + { + "id": 985, + "atlas_id": 830, + "ontology_id": 1, + "acronym": "MOp", + "name": "Primary motor area", + "color_hex_triplet": "1F9D5A", + "graph_order": 18, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [ + { + "id": 320, + "atlas_id": 888, + "ontology_id": 1, + "acronym": "MOp1", + "name": "Primary motor area, layer 1", + "color_hex_triplet": "1F9D5A", + "graph_order": 19, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + }, + { + "id": 943, + "atlas_id": 966, + "ontology_id": 1, + "acronym": "MOp2/3", + "name": "Primary motor area, layer 2/3", + "color_hex_triplet": "1F9D5A", + "graph_order": 20, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [ + { + "id": 3718675619, + "atlas_id": 966, + "ontology_id": 1, + "acronym": "MOp2", + "name": "Primary motor area, layer 2", + "color_hex_triplet": "1F9D5A", + "graph_order": 20, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 943, + "children": [] + }, + { + "id": 1758306548, + "atlas_id": 966, + "ontology_id": 1, + "acronym": "MOp3", + "name": "Primary motor area, layer 3", + "color_hex_triplet": "1F9D5A", + "graph_order": 20, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 943, + "children": [] + } + ] + }, + { + "id": 648, + "atlas_id": 929, + "ontology_id": 1, + "acronym": "MOp5", + "name": "Primary motor area, layer 5", + "color_hex_triplet": "1F9D5A", + "graph_order": 21, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + }, + { + "id": 844, + "atlas_id": 1095, + "ontology_id": 1, + "acronym": "MOp6a", + "name": "Primary motor area, layer 6a", + "color_hex_triplet": "1F9D5A", + "graph_order": 22, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + }, + { + "id": 882, + "atlas_id": 1100, + "ontology_id": 1, + "acronym": "MOp6b", + "name": "Primary motor area, layer 6b", + "color_hex_triplet": "1F9D5A", + "graph_order": 23, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 985, + "children": [] + } + ] + }, + { + "id": 993, + "atlas_id": 831, + "ontology_id": 1, + "acronym": "MOs", + "name": "Secondary motor area", + "color_hex_triplet": "1F9D5A", + "graph_order": 24, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 500, + "children": [ + { + "id": 656, + "atlas_id": 930, + "ontology_id": 1, + "acronym": "MOs1", + "name": "Secondary motor area, layer 1", + "color_hex_triplet": "1F9D5A", + "graph_order": 25, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + }, + { + "id": 962, + "atlas_id": 1110, + "ontology_id": 1, + "acronym": "MOs2/3", + "name": "Secondary motor area, layer 2/3", + "color_hex_triplet": "1F9D5A", + "graph_order": 26, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [ + { + "id": 3412423041, + "atlas_id": 1110, + "ontology_id": 1, + "acronym": "MOs2", + "name": "Secondary motor area, layer 2", + "color_hex_triplet": "1F9D5A", + "graph_order": 26, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 962, + "children": [] + }, + { + "id": 2511156654, + "atlas_id": 1110, + "ontology_id": 1, + "acronym": "MOs3", + "name": "Secondary motor area, layer 3", + "color_hex_triplet": "1F9D5A", + "graph_order": 26, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 962, + "children": [] + } + ] + }, + { + "id": 767, + "atlas_id": 944, + "ontology_id": 1, + "acronym": "MOs5", + "name": "Secondary motor area, layer 5", + "color_hex_triplet": "1F9D5A", + "graph_order": 27, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + }, + { + "id": 1021, + "atlas_id": 1117, + "ontology_id": 1, + "acronym": "MOs6a", + "name": "Secondary motor area, layer 6a", + "color_hex_triplet": "1F9D5A", + "graph_order": 28, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + }, + { + "id": 1085, + "atlas_id": 1125, + "ontology_id": 1, + "acronym": "MOs6b", + "name": "Secondary motor area, layer 6b", + "color_hex_triplet": "1F9D5A", + "graph_order": 29, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 993, + "children": [] + } + ] + } + ] + }, + { + "id": 453, + "atlas_id": 339, + "ontology_id": 1, + "acronym": "SS", + "name": "Somatosensory areas", + "color_hex_triplet": "188064", + "graph_order": 30, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 12993, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS1", + "name": "Somatosensory areas, layer 1", + "color_hex_triplet": "188064", + "graph_order": 31, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12994, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS2/3", + "name": "Somatosensory areas, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 32, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [ + { + "id": 1355885073, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS2", + "name": "Somatosensory areas, layer 2", + "color_hex_triplet": "188064", + "graph_order": 32, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 12994, + "children": [] + }, + { + "id": 3937412080, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS3", + "name": "Somatosensory areas, layer 3", + "color_hex_triplet": "188064", + "graph_order": 32, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 12994, + "children": [] + } + ] + }, + { + "id": 12995, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS4", + "name": "Somatosensory areas, layer 4", + "color_hex_triplet": "188064", + "graph_order": 33, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12996, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS5", + "name": "Somatosensory areas, layer 5", + "color_hex_triplet": "188064", + "graph_order": 34, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12997, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS6a", + "name": "Somatosensory areas, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 35, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 12998, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SS6b", + "name": "Somatosensory areas, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 36, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [] + }, + { + "id": 322, + "atlas_id": 747, + "ontology_id": 1, + "acronym": "SSp", + "name": "Primary somatosensory area", + "color_hex_triplet": "188064", + "graph_order": 37, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [ + { + "id": 793, + "atlas_id": 1089, + "ontology_id": 1, + "acronym": "SSp1", + "name": "Primary somatosensory area, layer 1", + "color_hex_triplet": "188064", + "graph_order": 38, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 346, + "atlas_id": 1033, + "ontology_id": 1, + "acronym": "SSp2/3", + "name": "Primary somatosensory area, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 39, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 2691358660, + "atlas_id": 1033, + "ontology_id": 1, + "acronym": "SSp2", + "name": "Primary somatosensory area, layer 2", + "color_hex_triplet": "188064", + "graph_order": 39, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 346, + "children": [] + }, + { + "id": 3099716140, + "atlas_id": 1033, + "ontology_id": 1, + "acronym": "SSp3", + "name": "Primary somatosensory area, layer 3", + "color_hex_triplet": "188064", + "graph_order": 39, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 346, + "children": [] + } + ] + }, + { + "id": 865, + "atlas_id": 1098, + "ontology_id": 1, + "acronym": "SSp4", + "name": "Primary somatosensory area, layer 4", + "color_hex_triplet": "188064", + "graph_order": 40, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 921, + "atlas_id": 1105, + "ontology_id": 1, + "acronym": "SSp5", + "name": "Primary somatosensory area, layer 5", + "color_hex_triplet": "188064", + "graph_order": 41, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 686, + "atlas_id": 934, + "ontology_id": 1, + "acronym": "SSp6a", + "name": "Primary somatosensory area, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 42, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 719, + "atlas_id": 938, + "ontology_id": 1, + "acronym": "SSp6b", + "name": "Primary somatosensory area, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 43, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [] + }, + { + "id": 353, + "atlas_id": 751, + "ontology_id": 1, + "acronym": "SSp-n", + "name": "Primary somatosensory area, nose", + "color_hex_triplet": "188064", + "graph_order": 44, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 558, + "atlas_id": 635, + "ontology_id": 1, + "acronym": "SSp-n1", + "name": "Primary somatosensory area, nose, layer 1", + "color_hex_triplet": "188064", + "graph_order": 45, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 838, + "atlas_id": 953, + "ontology_id": 1, + "acronym": "SSp-n2/3", + "name": "Primary somatosensory area, nose, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 46, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [ + { + "id": 3591549811, + "atlas_id": 953, + "ontology_id": 1, + "acronym": "SSp-n2", + "name": "Primary somatosensory area, nose, layer 2", + "color_hex_triplet": "188064", + "graph_order": 46, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 838, + "children": [] + }, + { + "id": 1624848466, + "atlas_id": 953, + "ontology_id": 1, + "acronym": "SSp-n3", + "name": "Primary somatosensory area, nose, layer 3", + "color_hex_triplet": "188064", + "graph_order": 46, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 838, + "children": [] + } + ] + }, + { + "id": 654, + "atlas_id": 647, + "ontology_id": 1, + "acronym": "SSp-n4", + "name": "Primary somatosensory area, nose, layer 4", + "color_hex_triplet": "188064", + "graph_order": 47, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 702, + "atlas_id": 653, + "ontology_id": 1, + "acronym": "SSp-n5", + "name": "Primary somatosensory area, nose, layer 5", + "color_hex_triplet": "188064", + "graph_order": 48, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 889, + "atlas_id": 1101, + "ontology_id": 1, + "acronym": "SSp-n6a", + "name": "Primary somatosensory area, nose, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 49, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + }, + { + "id": 929, + "atlas_id": 1106, + "ontology_id": 1, + "acronym": "SSp-n6b", + "name": "Primary somatosensory area, nose, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 50, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 353, + "children": [] + } + ] + }, + { + "id": 329, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd", + "name": "Primary somatosensory area, barrel field", + "color_hex_triplet": "188064", + "graph_order": 51, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 981, + "atlas_id": 971, + "ontology_id": 1, + "acronym": "SSp-bfd1", + "name": "Primary somatosensory area, barrel field, layer 1", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 201, + "atlas_id": 1015, + "ontology_id": 1, + "acronym": "SSp-bfd2/3", + "name": "Primary somatosensory area, barrel field, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 2835688982, + "atlas_id": 1015, + "ontology_id": 1, + "acronym": "SSp-bfd2", + "name": "Primary somatosensory area, barrel field, layer 2", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 201, + "children": [] + }, + { + "id": 2598818153, + "atlas_id": 1015, + "ontology_id": 1, + "acronym": "SSp-bfd3", + "name": "Primary somatosensory area, barrel field, layer 3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 201, + "children": [] + } + ] + }, + { + "id": 1047, + "atlas_id": 979, + "ontology_id": 1, + "acronym": "SSp-bfd4", + "name": "Primary somatosensory area, barrel field, layer 4", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 1070, + "atlas_id": 982, + "ontology_id": 1, + "acronym": "SSp-bfd5", + "name": "Primary somatosensory area, barrel field, layer 5", + "color_hex_triplet": "188064", + "graph_order": 55, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 1038, + "atlas_id": 978, + "ontology_id": 1, + "acronym": "SSp-bfd6a", + "name": "Primary somatosensory area, barrel field, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 56, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 1062, + "atlas_id": 981, + "ontology_id": 1, + "acronym": "SSp-bfd6b", + "name": "Primary somatosensory area, barrel field, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 57, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [] + }, + { + "id": 480149202, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll", + "name": "Rostrolateral lateral visual area", + "color_hex_triplet": "188064", + "graph_order": 58, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 480149206, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll1", + "name": "Rostrolateral lateral visual area, layer 1", + "color_hex_triplet": "188064", + "graph_order": 59, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149210, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll2/3", + "name": "Rostrolateral lateral visual area, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 60, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [ + { + "id": 1720700944, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll2", + "name": "Rostrolateral lateral visual area, layer 2", + "color_hex_triplet": "188064", + "graph_order": 60, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149210, + "children": [] + }, + { + "id": 3582777032, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll3", + "name": "Rostrolateral lateral visual area, layer 3", + "color_hex_triplet": "188064", + "graph_order": 60, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149210, + "children": [] + } + ] + }, + { + "id": 480149214, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll4", + "name": "Rostrolateral lateral visual area, layer 4", + "color_hex_triplet": "188064", + "graph_order": 61, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149218, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll5", + "name": "Rostrolateral lateral visual area, layer 5", + "color_hex_triplet": "188064", + "graph_order": 62, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149222, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll6a", + "name": "Rostrolateral lateral visual area, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 63, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + }, + { + "id": 480149226, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrll6b", + "name": "Rostrolateral lateral visual area, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 64, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149202, + "children": [] + } + ] + }, + { + "id": 1370229894, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1", + "name": "Primary somatosensory area, barrel field, A1 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1344105173, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1-1", + "name": "Primary somatosensory area, barrel field, A1 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1370229894, + "children": [] + }, + { + "id": 2615618683, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1-2/3", + "name": "Primary somatosensory area, barrel field, A1 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1370229894, + "children": [ + { + "id": 3116469840, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1-2", + "name": "Primary somatosensory area, barrel field, A1 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2615618683, + "children": [] + }, + { + "id": 3379356047, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1-3", + "name": "Primary somatosensory area, barrel field, A1 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2615618683, + "children": [] + } + ] + }, + { + "id": 1315119484, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1-4", + "name": "Primary somatosensory area, barrel field, A1 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1370229894, + "children": [] + }, + { + "id": 2436888515, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1-5", + "name": "Primary somatosensory area, barrel field, A1 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1370229894, + "children": [] + }, + { + "id": 3577346235, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1-6a", + "name": "Primary somatosensory area, barrel field, A1 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1370229894, + "children": [] + }, + { + "id": 3902978127, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A1-6b", + "name": "Primary somatosensory area, barrel field, A1 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1370229894, + "children": [] + } + ] + }, + { + "id": 3651721123, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2", + "name": "Primary somatosensory area, barrel field, A2 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1310126712, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2-1", + "name": "Primary somatosensory area, barrel field, A2 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3651721123, + "children": [] + }, + { + "id": 1446874462, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2-2/3", + "name": "Primary somatosensory area, barrel field, A2 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3651721123, + "children": [ + { + "id": 3324056088, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2-2", + "name": "Primary somatosensory area, barrel field, A2 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1446874462, + "children": [] + }, + { + "id": 2593521448, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2-3", + "name": "Primary somatosensory area, barrel field, A2 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1446874462, + "children": [] + } + ] + }, + { + "id": 3685934448, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2-4", + "name": "Primary somatosensory area, barrel field, A2 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3651721123, + "children": [] + }, + { + "id": 3575805529, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2-5", + "name": "Primary somatosensory area, barrel field, A2 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3651721123, + "children": [] + }, + { + "id": 1210837267, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2-6a", + "name": "Primary somatosensory area, barrel field, A2 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3651721123, + "children": [] + }, + { + "id": 1258169895, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A2-6b", + "name": "Primary somatosensory area, barrel field, A2 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3651721123, + "children": [] + } + ] + }, + { + "id": 2732283703, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3", + "name": "Primary somatosensory area, barrel field, A3 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1994494334, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3-1", + "name": "Primary somatosensory area, barrel field, A3 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2732283703, + "children": [] + }, + { + "id": 1447791371, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3-2/3", + "name": "Primary somatosensory area, barrel field, A3 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2732283703, + "children": [ + { + "id": 2590882612, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3-2", + "name": "Primary somatosensory area, barrel field, A3 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1447791371, + "children": [] + }, + { + "id": 3761146439, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3-3", + "name": "Primary somatosensory area, barrel field, A3 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1447791371, + "children": [] + } + ] + }, + { + "id": 3139552203, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3-4", + "name": "Primary somatosensory area, barrel field, A3 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2732283703, + "children": [] + }, + { + "id": 2692580507, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3-5", + "name": "Primary somatosensory area, barrel field, A3 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2732283703, + "children": [] + }, + { + "id": 1677451927, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3-6a", + "name": "Primary somatosensory area, barrel field, A3 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2732283703, + "children": [] + }, + { + "id": 3379749055, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-A3-6b", + "name": "Primary somatosensory area, barrel field, A3 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2732283703, + "children": [] + } + ] + }, + { + "id": 3896406483, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha", + "name": "Primary somatosensory area, barrel field, Alpha barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 2835342929, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha-1", + "name": "Primary somatosensory area, barrel field, Alpha barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3896406483, + "children": [] + }, + { + "id": 1897248316, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha-2/3", + "name": "Primary somatosensory area, barrel field, Alpha barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3896406483, + "children": [ + { + "id": 3173729836, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha-2", + "name": "Primary somatosensory area, barrel field, Alpha barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1897248316, + "children": [] + }, + { + "id": 3926962776, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha-3", + "name": "Primary somatosensory area, barrel field, Alpha barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1897248316, + "children": [] + } + ] + }, + { + "id": 2168807353, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha-4", + "name": "Primary somatosensory area, barrel field, Alpha barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3896406483, + "children": [] + }, + { + "id": 3137025327, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha-5", + "name": "Primary somatosensory area, barrel field, Alpha barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3896406483, + "children": [] + }, + { + "id": 2406188897, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha-6a", + "name": "Primary somatosensory area, barrel field, Alpha barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3896406483, + "children": [] + }, + { + "id": 3670777223, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Alpha-6b", + "name": "Primary somatosensory area, barrel field, Alpha barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3896406483, + "children": [] + } + ] + }, + { + "id": 2525641171, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1", + "name": "Primary somatosensory area, barrel field, B1 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1516851569, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1-1", + "name": "Primary somatosensory area, barrel field, B1 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2525641171, + "children": [] + }, + { + "id": 3913053667, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1-2/3", + "name": "Primary somatosensory area, barrel field, B1 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2525641171, + "children": [ + { + "id": 2196657368, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1-2", + "name": "Primary somatosensory area, barrel field, B1 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3913053667, + "children": [] + }, + { + "id": 3986345576, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1-3", + "name": "Primary somatosensory area, barrel field, B1 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3913053667, + "children": [] + } + ] + }, + { + "id": 3495145594, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1-4", + "name": "Primary somatosensory area, barrel field, B1 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2525641171, + "children": [] + }, + { + "id": 1644849336, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1-5", + "name": "Primary somatosensory area, barrel field, B1 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2525641171, + "children": [] + }, + { + "id": 3289019263, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1-6a", + "name": "Primary somatosensory area, barrel field, B1 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2525641171, + "children": [] + }, + { + "id": 2194674250, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B1-6b", + "name": "Primary somatosensory area, barrel field, B1 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2525641171, + "children": [] + } + ] + }, + { + "id": 1673450198, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2", + "name": "Primary somatosensory area, barrel field, B2 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 3853526235, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2-1", + "name": "Primary somatosensory area, barrel field, B2 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1673450198, + "children": [] + }, + { + "id": 3456985752, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2-2/3", + "name": "Primary somatosensory area, barrel field, B2 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1673450198, + "children": [ + { + "id": 1311366798, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2-2", + "name": "Primary somatosensory area, barrel field, B2 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3456985752, + "children": [] + }, + { + "id": 1126601402, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2-3", + "name": "Primary somatosensory area, barrel field, B2 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3456985752, + "children": [] + } + ] + }, + { + "id": 3966633210, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2-4", + "name": "Primary somatosensory area, barrel field, B2 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1673450198, + "children": [] + }, + { + "id": 2812530569, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2-5", + "name": "Primary somatosensory area, barrel field, B2 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1673450198, + "children": [] + }, + { + "id": 1641347046, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2-6a", + "name": "Primary somatosensory area, barrel field, B2 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1673450198, + "children": [] + }, + { + "id": 3416776496, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B2-6b", + "name": "Primary somatosensory area, barrel field, B2 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1673450198, + "children": [] + } + ] + }, + { + "id": 1626685236, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3", + "name": "Primary somatosensory area, barrel field, B3 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 3565367498, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3-1", + "name": "Primary somatosensory area, barrel field, B3 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1626685236, + "children": [] + }, + { + "id": 2657138906, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3-2/3", + "name": "Primary somatosensory area, barrel field, B3 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1626685236, + "children": [ + { + "id": 1881029055, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3-2", + "name": "Primary somatosensory area, barrel field, B3 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2657138906, + "children": [] + }, + { + "id": 3080022137, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3-3", + "name": "Primary somatosensory area, barrel field, B3 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2657138906, + "children": [] + } + ] + }, + { + "id": 1547817274, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3-4", + "name": "Primary somatosensory area, barrel field, B3 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1626685236, + "children": [] + }, + { + "id": 2369238059, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3-5", + "name": "Primary somatosensory area, barrel field, B3 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1626685236, + "children": [] + }, + { + "id": 2478012832, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3-6a", + "name": "Primary somatosensory area, barrel field, B3 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1626685236, + "children": [] + }, + { + "id": 2739084189, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B3-6b", + "name": "Primary somatosensory area, barrel field, B3 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1626685236, + "children": [] + } + ] + }, + { + "id": 3347675430, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4", + "name": "Primary somatosensory area, barrel field, B4 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 2006047173, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4-1", + "name": "Primary somatosensory area, barrel field, B4 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3347675430, + "children": [] + }, + { + "id": 2180527067, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4-2/3", + "name": "Primary somatosensory area, barrel field, B4 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3347675430, + "children": [ + { + "id": 1456682260, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4-2", + "name": "Primary somatosensory area, barrel field, B4 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2180527067, + "children": [] + }, + { + "id": 3562601313, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4-3", + "name": "Primary somatosensory area, barrel field, B4 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2180527067, + "children": [] + } + ] + }, + { + "id": 1970686062, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4-4", + "name": "Primary somatosensory area, barrel field, B4 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3347675430, + "children": [] + }, + { + "id": 3890169311, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4-5", + "name": "Primary somatosensory area, barrel field, B4 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3347675430, + "children": [] + }, + { + "id": 2936441103, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4-6a", + "name": "Primary somatosensory area, barrel field, B4 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3347675430, + "children": [] + }, + { + "id": 3215542274, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-B4-6b", + "name": "Primary somatosensory area, barrel field, B4 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3347675430, + "children": [] + } + ] + }, + { + "id": 1521759875, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta", + "name": "Primary somatosensory area, barrel field, Beta barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 3486673188, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta-1", + "name": "Primary somatosensory area, barrel field, Beta barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1521759875, + "children": [] + }, + { + "id": 3783583602, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta-2/3", + "name": "Primary somatosensory area, barrel field, Beta barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1521759875, + "children": [ + { + "id": 3970522306, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta-2", + "name": "Primary somatosensory area, barrel field, Beta barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3783583602, + "children": [] + }, + { + "id": 1054221329, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta-3", + "name": "Primary somatosensory area, barrel field, Beta barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3783583602, + "children": [] + } + ] + }, + { + "id": 3895794866, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta-4", + "name": "Primary somatosensory area, barrel field, Beta barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1521759875, + "children": [] + }, + { + "id": 1496257237, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta-5", + "name": "Primary somatosensory area, barrel field, Beta barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1521759875, + "children": [] + }, + { + "id": 2152572352, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta-6a", + "name": "Primary somatosensory area, barrel field, Beta barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1521759875, + "children": [] + }, + { + "id": 3048883337, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Beta-6b", + "name": "Primary somatosensory area, barrel field, Beta barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1521759875, + "children": [] + } + ] + }, + { + "id": 1013068637, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1", + "name": "Primary somatosensory area, barrel field, C1 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1337935688, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1-1", + "name": "Primary somatosensory area, barrel field, C1 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1013068637, + "children": [] + }, + { + "id": 1667660763, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1-2/3", + "name": "Primary somatosensory area, barrel field, C1 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1013068637, + "children": [ + { + "id": 1558550786, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1-2", + "name": "Primary somatosensory area, barrel field, C1 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1667660763, + "children": [] + }, + { + "id": 2563782304, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1-3", + "name": "Primary somatosensory area, barrel field, C1 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1667660763, + "children": [] + } + ] + }, + { + "id": 3219108088, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1-4", + "name": "Primary somatosensory area, barrel field, C1 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1013068637, + "children": [] + }, + { + "id": 1420546517, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1-5", + "name": "Primary somatosensory area, barrel field, C1 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1013068637, + "children": [] + }, + { + "id": 1945434117, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1-6a", + "name": "Primary somatosensory area, barrel field, C1 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1013068637, + "children": [] + }, + { + "id": 2866280389, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C1-6b", + "name": "Primary somatosensory area, barrel field, C1 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1013068637, + "children": [] + } + ] + }, + { + "id": 2072239244, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2", + "name": "Primary somatosensory area, barrel field, C2 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1082141991, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2-1", + "name": "Primary somatosensory area, barrel field, C2 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2072239244, + "children": [] + }, + { + "id": 2157537321, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2-2/3", + "name": "Primary somatosensory area, barrel field, C2 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2072239244, + "children": [ + { + "id": 2525505631, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2-2", + "name": "Primary somatosensory area, barrel field, C2 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2157537321, + "children": [] + }, + { + "id": 1714311201, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2-3", + "name": "Primary somatosensory area, barrel field, C2 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2157537321, + "children": [] + } + ] + }, + { + "id": 2930307508, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2-4", + "name": "Primary somatosensory area, barrel field, C2 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2072239244, + "children": [] + }, + { + "id": 3188993656, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2-5", + "name": "Primary somatosensory area, barrel field, C2 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2072239244, + "children": [] + }, + { + "id": 1843338795, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2-6a", + "name": "Primary somatosensory area, barrel field, C2 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2072239244, + "children": [] + }, + { + "id": 3291535006, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C2-6b", + "name": "Primary somatosensory area, barrel field, C2 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2072239244, + "children": [] + } + ] + }, + { + "id": 2937437636, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3", + "name": "Primary somatosensory area, barrel field, C3 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 3835740469, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3-1", + "name": "Primary somatosensory area, barrel field, C3 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2937437636, + "children": [] + }, + { + "id": 1125438717, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3-2/3", + "name": "Primary somatosensory area, barrel field, C3 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2937437636, + "children": [ + { + "id": 2629778705, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3-2", + "name": "Primary somatosensory area, barrel field, C3 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1125438717, + "children": [] + }, + { + "id": 3581771805, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3-3", + "name": "Primary somatosensory area, barrel field, C3 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1125438717, + "children": [] + } + ] + }, + { + "id": 3877358805, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3-4", + "name": "Primary somatosensory area, barrel field, C3 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2937437636, + "children": [] + }, + { + "id": 1667278413, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3-5", + "name": "Primary somatosensory area, barrel field, C3 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2937437636, + "children": [] + }, + { + "id": 2743616995, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3-6a", + "name": "Primary somatosensory area, barrel field, C3 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2937437636, + "children": [] + }, + { + "id": 1093211310, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C3-6b", + "name": "Primary somatosensory area, barrel field, C3 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2937437636, + "children": [] + } + ] + }, + { + "id": 3404738524, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4", + "name": "Primary somatosensory area, barrel field, C4 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 2151167540, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4-1", + "name": "Primary somatosensory area, barrel field, C4 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3404738524, + "children": [] + }, + { + "id": 2460702429, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4-2/3", + "name": "Primary somatosensory area, barrel field, C4 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3404738524, + "children": [ + { + "id": 3167765177, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4-2", + "name": "Primary somatosensory area, barrel field, C4 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2460702429, + "children": [] + }, + { + "id": 1639524986, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4-3", + "name": "Primary somatosensory area, barrel field, C4 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2460702429, + "children": [] + } + ] + }, + { + "id": 1549069626, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4-4", + "name": "Primary somatosensory area, barrel field, C4 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3404738524, + "children": [] + }, + { + "id": 3085221154, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4-5", + "name": "Primary somatosensory area, barrel field, C4 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3404738524, + "children": [] + }, + { + "id": 2659044087, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4-6a", + "name": "Primary somatosensory area, barrel field, C4 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3404738524, + "children": [] + }, + { + "id": 2700046659, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C4-6b", + "name": "Primary somatosensory area, barrel field, C4 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3404738524, + "children": [] + } + ] + }, + { + "id": 2062992388, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5", + "name": "Primary somatosensory area, barrel field, C5 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1246610280, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5-1", + "name": "Primary somatosensory area, barrel field, C5 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2062992388, + "children": [] + }, + { + "id": 3880590912, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5-2/3", + "name": "Primary somatosensory area, barrel field, C5 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2062992388, + "children": [ + { + "id": 1035739465, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5-2", + "name": "Primary somatosensory area, barrel field, C5 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3880590912, + "children": [] + }, + { + "id": 1105483506, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5-3", + "name": "Primary somatosensory area, barrel field, C5 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3880590912, + "children": [] + } + ] + }, + { + "id": 1792980078, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5-4", + "name": "Primary somatosensory area, barrel field, C5 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2062992388, + "children": [] + }, + { + "id": 3556494715, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5-5", + "name": "Primary somatosensory area, barrel field, C5 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2062992388, + "children": [] + }, + { + "id": 1706307657, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5-6a", + "name": "Primary somatosensory area, barrel field, C5 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2062992388, + "children": [] + }, + { + "id": 1869881498, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C5-6b", + "name": "Primary somatosensory area, barrel field, C5 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2062992388, + "children": [] + } + ] + }, + { + "id": 1261138116, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6", + "name": "Primary somatosensory area, barrel field, C6 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 2933568634, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6-1", + "name": "Primary somatosensory area, barrel field, C6 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1261138116, + "children": [] + }, + { + "id": 2013207018, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6-2/3", + "name": "Primary somatosensory area, barrel field, C6 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1261138116, + "children": [ + { + "id": 1805611561, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6-2", + "name": "Primary somatosensory area, barrel field, C6 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2013207018, + "children": [] + }, + { + "id": 3719447735, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6-3", + "name": "Primary somatosensory area, barrel field, C6 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2013207018, + "children": [] + } + ] + }, + { + "id": 2371017187, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6-4", + "name": "Primary somatosensory area, barrel field, C6 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1261138116, + "children": [] + }, + { + "id": 3985188708, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6-5", + "name": "Primary somatosensory area, barrel field, C6 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1261138116, + "children": [] + }, + { + "id": 3796365620, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6-6a", + "name": "Primary somatosensory area, barrel field, C6 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1261138116, + "children": [] + }, + { + "id": 1714819828, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-C6-6b", + "name": "Primary somatosensory area, barrel field, C6 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1261138116, + "children": [] + } + ] + }, + { + "id": 1171261412, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1", + "name": "Primary somatosensory area, barrel field, D1 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 3724099631, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1-1", + "name": "Primary somatosensory area, barrel field, D1 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171261412, + "children": [] + }, + { + "id": 2833279579, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1-2/3", + "name": "Primary somatosensory area, barrel field, D1 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171261412, + "children": [ + { + "id": 2558258359, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1-2", + "name": "Primary somatosensory area, barrel field, D1 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2833279579, + "children": [] + }, + { + "id": 3859877696, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1-3", + "name": "Primary somatosensory area, barrel field, D1 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2833279579, + "children": [] + } + ] + }, + { + "id": 2108774369, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1-4", + "name": "Primary somatosensory area, barrel field, D1 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171261412, + "children": [] + }, + { + "id": 3320050311, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1-5", + "name": "Primary somatosensory area, barrel field, D1 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171261412, + "children": [] + }, + { + "id": 3628159968, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1-6a", + "name": "Primary somatosensory area, barrel field, D1 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171261412, + "children": [] + }, + { + "id": 3638507875, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D1-6b", + "name": "Primary somatosensory area, barrel field, D1 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171261412, + "children": [] + } + ] + }, + { + "id": 3329043535, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2", + "name": "Primary somatosensory area, barrel field, D2 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1743009264, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2-1", + "name": "Primary somatosensory area, barrel field, D2 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3329043535, + "children": [] + }, + { + "id": 1884779226, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2-2/3", + "name": "Primary somatosensory area, barrel field, D2 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3329043535, + "children": [ + { + "id": 3623254419, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2-2", + "name": "Primary somatosensory area, barrel field, D2 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1884779226, + "children": [] + }, + { + "id": 1926976537, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2-3", + "name": "Primary somatosensory area, barrel field, D2 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1884779226, + "children": [] + } + ] + }, + { + "id": 2047390011, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2-4", + "name": "Primary somatosensory area, barrel field, D2 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3329043535, + "children": [] + }, + { + "id": 2798287336, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2-5", + "name": "Primary somatosensory area, barrel field, D2 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3329043535, + "children": [] + }, + { + "id": 2987319910, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2-6a", + "name": "Primary somatosensory area, barrel field, D2 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3329043535, + "children": [] + }, + { + "id": 3872485424, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D2-6b", + "name": "Primary somatosensory area, barrel field, D2 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3329043535, + "children": [] + } + ] + }, + { + "id": 2036081150, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3", + "name": "Primary somatosensory area, barrel field, D3 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1781030954, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3-1", + "name": "Primary somatosensory area, barrel field, D3 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2036081150, + "children": [] + }, + { + "id": 2841658580, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3-2/3", + "name": "Primary somatosensory area, barrel field, D3 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2036081150, + "children": [ + { + "id": 3521164295, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3-2", + "name": "Primary somatosensory area, barrel field, D3 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2841658580, + "children": [] + }, + { + "id": 1876807310, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3-3", + "name": "Primary somatosensory area, barrel field, D3 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2841658580, + "children": [] + } + ] + }, + { + "id": 1501393228, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3-4", + "name": "Primary somatosensory area, barrel field, D3 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2036081150, + "children": [] + }, + { + "id": 1972094100, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3-5", + "name": "Primary somatosensory area, barrel field, D3 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2036081150, + "children": [] + }, + { + "id": 3302405705, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3-6a", + "name": "Primary somatosensory area, barrel field, D3 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2036081150, + "children": [] + }, + { + "id": 1099096371, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D3-6b", + "name": "Primary somatosensory area, barrel field, D3 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2036081150, + "children": [] + } + ] + }, + { + "id": 3202423327, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4", + "name": "Primary somatosensory area, barrel field, D4 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1117257996, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4-1", + "name": "Primary somatosensory area, barrel field, D4 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3202423327, + "children": [] + }, + { + "id": 1453537399, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4-2/3", + "name": "Primary somatosensory area, barrel field, D4 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3202423327, + "children": [ + { + "id": 2567067139, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4-2", + "name": "Primary somatosensory area, barrel field, D4 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1453537399, + "children": [] + }, + { + "id": 2427348802, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4-3", + "name": "Primary somatosensory area, barrel field, D4 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1453537399, + "children": [] + } + ] + }, + { + "id": 3859818063, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4-4", + "name": "Primary somatosensory area, barrel field, D4 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3202423327, + "children": [] + }, + { + "id": 1588504257, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4-5", + "name": "Primary somatosensory area, barrel field, D4 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3202423327, + "children": [] + }, + { + "id": 3571205574, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4-6a", + "name": "Primary somatosensory area, barrel field, D4 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3202423327, + "children": [] + }, + { + "id": 1096265790, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D4-6b", + "name": "Primary somatosensory area, barrel field, D4 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3202423327, + "children": [] + } + ] + }, + { + "id": 1412541198, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5", + "name": "Primary somatosensory area, barrel field, D5 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1326886999, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5-1", + "name": "Primary somatosensory area, barrel field, D5 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1412541198, + "children": [] + }, + { + "id": 1787178465, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5-2/3", + "name": "Primary somatosensory area, barrel field, D5 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1412541198, + "children": [ + { + "id": 2341450864, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5-2", + "name": "Primary somatosensory area, barrel field, D5 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1787178465, + "children": [] + }, + { + "id": 2551618170, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5-3", + "name": "Primary somatosensory area, barrel field, D5 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1787178465, + "children": [] + } + ] + }, + { + "id": 1170723867, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5-4", + "name": "Primary somatosensory area, barrel field, D5 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1412541198, + "children": [] + }, + { + "id": 1038004598, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5-5", + "name": "Primary somatosensory area, barrel field, D5 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1412541198, + "children": [] + }, + { + "id": 1149652689, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5-6a", + "name": "Primary somatosensory area, barrel field, D5 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1412541198, + "children": [] + }, + { + "id": 1582478571, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D5-6b", + "name": "Primary somatosensory area, barrel field, D5 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1412541198, + "children": [] + } + ] + }, + { + "id": 1588741938, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6", + "name": "Primary somatosensory area, barrel field, D6 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1315950883, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6-1", + "name": "Primary somatosensory area, barrel field, D6 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1588741938, + "children": [] + }, + { + "id": 1947266943, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6-2/3", + "name": "Primary somatosensory area, barrel field, D6 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1588741938, + "children": [ + { + "id": 3990698322, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6-2", + "name": "Primary somatosensory area, barrel field, D6 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1947266943, + "children": [] + }, + { + "id": 3301183793, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6-3", + "name": "Primary somatosensory area, barrel field, D6 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1947266943, + "children": [] + } + ] + }, + { + "id": 1464978040, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6-4", + "name": "Primary somatosensory area, barrel field, D6 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1588741938, + "children": [] + }, + { + "id": 2387503636, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6-5", + "name": "Primary somatosensory area, barrel field, D6 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1588741938, + "children": [] + }, + { + "id": 2023633893, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6-6a", + "name": "Primary somatosensory area, barrel field, D6 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1588741938, + "children": [] + }, + { + "id": 1913328693, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D6-6b", + "name": "Primary somatosensory area, barrel field, D6 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1588741938, + "children": [] + } + ] + }, + { + "id": 3920024588, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7", + "name": "Primary somatosensory area, barrel field, D7 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1877482733, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7-1", + "name": "Primary somatosensory area, barrel field, D7 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3920024588, + "children": [] + }, + { + "id": 2358987890, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7-2/3", + "name": "Primary somatosensory area, barrel field, D7 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3920024588, + "children": [ + { + "id": 3673895945, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7-2", + "name": "Primary somatosensory area, barrel field, D7 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2358987890, + "children": [] + }, + { + "id": 1393608993, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7-3", + "name": "Primary somatosensory area, barrel field, D7 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2358987890, + "children": [] + } + ] + }, + { + "id": 2978179471, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7-4", + "name": "Primary somatosensory area, barrel field, D7 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3920024588, + "children": [] + }, + { + "id": 3338653017, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7-5", + "name": "Primary somatosensory area, barrel field, D7 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3920024588, + "children": [] + }, + { + "id": 2384899589, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7-6a", + "name": "Primary somatosensory area, barrel field, D7 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3920024588, + "children": [] + }, + { + "id": 2710463424, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D7-6b", + "name": "Primary somatosensory area, barrel field, D7 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3920024588, + "children": [] + } + ] + }, + { + "id": 3055000922, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8", + "name": "Primary somatosensory area, barrel field, D8 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1406402073, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8-1", + "name": "Primary somatosensory area, barrel field, D8 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3055000922, + "children": [] + }, + { + "id": 1373744894, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8-2/3", + "name": "Primary somatosensory area, barrel field, D8 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3055000922, + "children": [ + { + "id": 1156116970, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8-2", + "name": "Primary somatosensory area, barrel field, D8 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1373744894, + "children": [] + }, + { + "id": 3453175542, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8-3", + "name": "Primary somatosensory area, barrel field, D8 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1373744894, + "children": [] + } + ] + }, + { + "id": 3652474151, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8-4", + "name": "Primary somatosensory area, barrel field, D8 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3055000922, + "children": [] + }, + { + "id": 2236457933, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8-5", + "name": "Primary somatosensory area, barrel field, D8 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3055000922, + "children": [] + }, + { + "id": 3277826222, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8-6a", + "name": "Primary somatosensory area, barrel field, D8 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3055000922, + "children": [] + }, + { + "id": 1005899076, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-D8-6b", + "name": "Primary somatosensory area, barrel field, D8 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3055000922, + "children": [] + } + ] + }, + { + "id": 2438939909, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta", + "name": "Primary somatosensory area, barrel field, Delta barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1691306271, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta-1", + "name": "Primary somatosensory area, barrel field, Delta barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2438939909, + "children": [] + }, + { + "id": 3434166213, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta-2/3", + "name": "Primary somatosensory area, barrel field, Delta barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2438939909, + "children": [ + { + "id": 1275601165, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta-2", + "name": "Primary somatosensory area, barrel field, Delta barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3434166213, + "children": [] + }, + { + "id": 3946289800, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta-3", + "name": "Primary somatosensory area, barrel field, Delta barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3434166213, + "children": [] + } + ] + }, + { + "id": 2004775342, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta-4", + "name": "Primary somatosensory area, barrel field, Delta barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2438939909, + "children": [] + }, + { + "id": 1456398198, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta-5", + "name": "Primary somatosensory area, barrel field, Delta barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2438939909, + "children": [] + }, + { + "id": 3561503481, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta-6a", + "name": "Primary somatosensory area, barrel field, Delta barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2438939909, + "children": [] + }, + { + "id": 1901850664, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Delta-6b", + "name": "Primary somatosensory area, barrel field, Delta barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2438939909, + "children": [] + } + ] + }, + { + "id": 1071521092, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1", + "name": "Primary somatosensory area, barrel field, E1 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 3807479791, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1-1", + "name": "Primary somatosensory area, barrel field, E1 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1071521092, + "children": [] + }, + { + "id": 2803418480, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1-2/3", + "name": "Primary somatosensory area, barrel field, E1 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1071521092, + "children": [ + { + "id": 2980820846, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1-2", + "name": "Primary somatosensory area, barrel field, E1 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2803418480, + "children": [] + }, + { + "id": 3188360247, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1-3", + "name": "Primary somatosensory area, barrel field, E1 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 2803418480, + "children": [] + } + ] + }, + { + "id": 1477785742, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1-4", + "name": "Primary somatosensory area, barrel field, E1 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1071521092, + "children": [] + }, + { + "id": 2964598138, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1-5", + "name": "Primary somatosensory area, barrel field, E1 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1071521092, + "children": [] + }, + { + "id": 3093795446, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1-6a", + "name": "Primary somatosensory area, barrel field, E1 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1071521092, + "children": [] + }, + { + "id": 1507784331, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E1-6b", + "name": "Primary somatosensory area, barrel field, E1 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1071521092, + "children": [] + } + ] + }, + { + "id": 3054551821, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2", + "name": "Primary somatosensory area, barrel field, E2 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 3748961581, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2-1", + "name": "Primary somatosensory area, barrel field, E2 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3054551821, + "children": [] + }, + { + "id": 3128223634, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2-2/3", + "name": "Primary somatosensory area, barrel field, E2 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3054551821, + "children": [ + { + "id": 2185403483, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2-2", + "name": "Primary somatosensory area, barrel field, E2 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3128223634, + "children": [] + }, + { + "id": 1433026796, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2-3", + "name": "Primary somatosensory area, barrel field, E2 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3128223634, + "children": [] + } + ] + }, + { + "id": 1104248884, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2-4", + "name": "Primary somatosensory area, barrel field, E2 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3054551821, + "children": [] + }, + { + "id": 3545403109, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2-5", + "name": "Primary somatosensory area, barrel field, E2 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3054551821, + "children": [] + }, + { + "id": 1536696383, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2-6a", + "name": "Primary somatosensory area, barrel field, E2 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3054551821, + "children": [] + }, + { + "id": 3527105324, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E2-6b", + "name": "Primary somatosensory area, barrel field, E2 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3054551821, + "children": [] + } + ] + }, + { + "id": 2811301625, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3", + "name": "Primary somatosensory area, barrel field, E3 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1897015494, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3-1", + "name": "Primary somatosensory area, barrel field, E3 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2811301625, + "children": [] + }, + { + "id": 3331790659, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3-2/3", + "name": "Primary somatosensory area, barrel field, E3 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2811301625, + "children": [ + { + "id": 2795738785, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3-2", + "name": "Primary somatosensory area, barrel field, E3 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3331790659, + "children": [] + }, + { + "id": 2768475141, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3-3", + "name": "Primary somatosensory area, barrel field, E3 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3331790659, + "children": [] + } + ] + }, + { + "id": 2658097375, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3-4", + "name": "Primary somatosensory area, barrel field, E3 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2811301625, + "children": [] + }, + { + "id": 2157528000, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3-5", + "name": "Primary somatosensory area, barrel field, E3 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2811301625, + "children": [] + }, + { + "id": 3309772165, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3-6a", + "name": "Primary somatosensory area, barrel field, E3 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2811301625, + "children": [] + }, + { + "id": 1928393658, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E3-6b", + "name": "Primary somatosensory area, barrel field, E3 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 2811301625, + "children": [] + } + ] + }, + { + "id": 3840818183, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4", + "name": "Primary somatosensory area, barrel field, E4 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 3841505448, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4-1", + "name": "Primary somatosensory area, barrel field, E4 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3840818183, + "children": [] + }, + { + "id": 3999683881, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4-2/3", + "name": "Primary somatosensory area, barrel field, E4 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3840818183, + "children": [ + { + "id": 3325173834, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4-2", + "name": "Primary somatosensory area, barrel field, E4 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3999683881, + "children": [] + }, + { + "id": 1798728430, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4-3", + "name": "Primary somatosensory area, barrel field, E4 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3999683881, + "children": [] + } + ] + }, + { + "id": 3299719941, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4-4", + "name": "Primary somatosensory area, barrel field, E4 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3840818183, + "children": [] + }, + { + "id": 2360313730, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4-5", + "name": "Primary somatosensory area, barrel field, E4 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3840818183, + "children": [] + }, + { + "id": 3043750963, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4-6a", + "name": "Primary somatosensory area, barrel field, E4 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3840818183, + "children": [] + }, + { + "id": 2641148319, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E4-6b", + "name": "Primary somatosensory area, barrel field, E4 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3840818183, + "children": [] + } + ] + }, + { + "id": 1468793762, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5", + "name": "Primary somatosensory area, barrel field, E5 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1427961626, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5-1", + "name": "Primary somatosensory area, barrel field, E5 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1468793762, + "children": [] + }, + { + "id": 1643593739, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5-2/3", + "name": "Primary somatosensory area, barrel field, E5 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1468793762, + "children": [ + { + "id": 3092405473, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5-2", + "name": "Primary somatosensory area, barrel field, E5 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1643593739, + "children": [] + }, + { + "id": 1181035221, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5-3", + "name": "Primary somatosensory area, barrel field, E5 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1643593739, + "children": [] + } + ] + }, + { + "id": 3118601025, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5-4", + "name": "Primary somatosensory area, barrel field, E5 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1468793762, + "children": [] + }, + { + "id": 2374653061, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5-5", + "name": "Primary somatosensory area, barrel field, E5 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1468793762, + "children": [] + }, + { + "id": 3026302666, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5-6a", + "name": "Primary somatosensory area, barrel field, E5 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1468793762, + "children": [] + }, + { + "id": 2197459620, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E5-6b", + "name": "Primary somatosensory area, barrel field, E5 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1468793762, + "children": [] + } + ] + }, + { + "id": 1965375801, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6", + "name": "Primary somatosensory area, barrel field, E6 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1666373161, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6-1", + "name": "Primary somatosensory area, barrel field, E6 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1965375801, + "children": [] + }, + { + "id": 3620340000, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6-2/3", + "name": "Primary somatosensory area, barrel field, E6 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1965375801, + "children": [ + { + "id": 2815501138, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6-2", + "name": "Primary somatosensory area, barrel field, E6 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3620340000, + "children": [] + }, + { + "id": 2091848107, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6-3", + "name": "Primary somatosensory area, barrel field, E6 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3620340000, + "children": [] + } + ] + }, + { + "id": 2658756176, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6-4", + "name": "Primary somatosensory area, barrel field, E6 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1965375801, + "children": [] + }, + { + "id": 2097438884, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6-5", + "name": "Primary somatosensory area, barrel field, E6 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1965375801, + "children": [] + }, + { + "id": 2868822451, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6-6a", + "name": "Primary somatosensory area, barrel field, E6 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1965375801, + "children": [] + }, + { + "id": 3331415743, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E6-6b", + "name": "Primary somatosensory area, barrel field, E6 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1965375801, + "children": [] + } + ] + }, + { + "id": 3618095278, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7", + "name": "Primary somatosensory area, barrel field, E7 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 2613674898, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7-1", + "name": "Primary somatosensory area, barrel field, E7 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3618095278, + "children": [] + }, + { + "id": 1951878763, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7-2/3", + "name": "Primary somatosensory area, barrel field, E7 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3618095278, + "children": [ + { + "id": 3413451609, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7-2", + "name": "Primary somatosensory area, barrel field, E7 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1951878763, + "children": [] + }, + { + "id": 2225157452, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7-3", + "name": "Primary somatosensory area, barrel field, E7 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 1951878763, + "children": [] + } + ] + }, + { + "id": 2842134861, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7-4", + "name": "Primary somatosensory area, barrel field, E7 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3618095278, + "children": [] + }, + { + "id": 2064317417, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7-5", + "name": "Primary somatosensory area, barrel field, E7 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3618095278, + "children": [] + }, + { + "id": 2123772309, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7-6a", + "name": "Primary somatosensory area, barrel field, E7 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3618095278, + "children": [] + }, + { + "id": 1510133109, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E7-6b", + "name": "Primary somatosensory area, barrel field, E7 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 3618095278, + "children": [] + } + ] + }, + { + "id": 1624778115, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8", + "name": "Primary somatosensory area, barrel field, E8 barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 1094902124, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8-1", + "name": "Primary somatosensory area, barrel field, E8 barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1624778115, + "children": [] + }, + { + "id": 3134535128, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8-2/3", + "name": "Primary somatosensory area, barrel field, E8 barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1624778115, + "children": [ + { + "id": 3312222592, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8-2", + "name": "Primary somatosensory area, barrel field, E8 barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3134535128, + "children": [] + }, + { + "id": 1518704958, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8-3", + "name": "Primary somatosensory area, barrel field, E8 barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3134535128, + "children": [] + } + ] + }, + { + "id": 1475527815, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8-4", + "name": "Primary somatosensory area, barrel field, E8 barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1624778115, + "children": [] + }, + { + "id": 1612593605, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8-5", + "name": "Primary somatosensory area, barrel field, E8 barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1624778115, + "children": [] + }, + { + "id": 2915675742, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8-6a", + "name": "Primary somatosensory area, barrel field, E8 barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1624778115, + "children": [] + }, + { + "id": 2644357350, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-E8-6b", + "name": "Primary somatosensory area, barrel field, E8 barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1624778115, + "children": [] + } + ] + }, + { + "id": 1171320182, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma", + "name": "Primary somatosensory area, barrel field, Gamma barrel", + "color_hex_triplet": "188064", + "graph_order": 52, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 329, + "children": [ + { + "id": 2810081477, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma-1", + "name": "Primary somatosensory area, barrel field, Gamma barrel layer 1", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171320182, + "children": [] + }, + { + "id": 3513655281, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma-2/3", + "name": "Primary somatosensory area, barrel field, Gamma barrel layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171320182, + "children": [ + { + "id": 2790136061, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma-2", + "name": "Primary somatosensory area, barrel field, Gamma barrel layer 2", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3513655281, + "children": [] + }, + { + "id": 2667261098, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma-3", + "name": "Primary somatosensory area, barrel field, Gamma barrel layer 3", + "color_hex_triplet": "188064", + "graph_order": 54, + "st_level": 12, + "hemisphere_id": 3, + "parent_structure_id": 3513655281, + "children": [] + } + ] + }, + { + "id": 2302833148, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma-4", + "name": "Primary somatosensory area, barrel field, Gamma barrel layer 4", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171320182, + "children": [] + }, + { + "id": 3278290071, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma-5", + "name": "Primary somatosensory area, barrel field, Gamma barrel layer 5", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171320182, + "children": [] + }, + { + "id": 2688781451, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma-6a", + "name": "Primary somatosensory area, barrel field, Gamma barrel layer 6a", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171320182, + "children": [] + }, + { + "id": 1848522986, + "atlas_id": 748, + "ontology_id": 1, + "acronym": "SSp-bfd-Gamma-6b", + "name": "Primary somatosensory area, barrel field, Gamma barrel layer 6b", + "color_hex_triplet": "188064", + "graph_order": 53, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1171320182, + "children": [] + } + ] + } + ] + }, + { + "id": 337, + "atlas_id": 749, + "ontology_id": 1, + "acronym": "SSp-ll", + "name": "Primary somatosensory area, lower limb", + "color_hex_triplet": "188064", + "graph_order": 65, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 1030, + "atlas_id": 977, + "ontology_id": 1, + "acronym": "SSp-ll1", + "name": "Primary somatosensory area, lower limb, layer 1", + "color_hex_triplet": "188064", + "graph_order": 66, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 113, + "atlas_id": 1004, + "ontology_id": 1, + "acronym": "SSp-ll2/3", + "name": "Primary somatosensory area, lower limb, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 67, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [ + { + "id": 1454256797, + "atlas_id": 1004, + "ontology_id": 1, + "acronym": "SSp-ll2", + "name": "Primary somatosensory area, lower limb, layer 2", + "color_hex_triplet": "188064", + "graph_order": 67, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 113, + "children": [] + }, + { + "id": 2951747260, + "atlas_id": 1004, + "ontology_id": 1, + "acronym": "SSp-ll3", + "name": "Primary somatosensory area, lower limb, layer 3", + "color_hex_triplet": "188064", + "graph_order": 67, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 113, + "children": [] + } + ] + }, + { + "id": 1094, + "atlas_id": 985, + "ontology_id": 1, + "acronym": "SSp-ll4", + "name": "Primary somatosensory area, lower limb, layer 4", + "color_hex_triplet": "188064", + "graph_order": 68, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 1128, + "atlas_id": 989, + "ontology_id": 1, + "acronym": "SSp-ll5", + "name": "Primary somatosensory area, lower limb, layer 5", + "color_hex_triplet": "188064", + "graph_order": 69, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 478, + "atlas_id": 625, + "ontology_id": 1, + "acronym": "SSp-ll6a", + "name": "Primary somatosensory area, lower limb, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 70, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + }, + { + "id": 510, + "atlas_id": 629, + "ontology_id": 1, + "acronym": "SSp-ll6b", + "name": "Primary somatosensory area, lower limb, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 71, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 337, + "children": [] + } + ] + }, + { + "id": 345, + "atlas_id": 750, + "ontology_id": 1, + "acronym": "SSp-m", + "name": "Primary somatosensory area, mouth", + "color_hex_triplet": "188064", + "graph_order": 72, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 878, + "atlas_id": 958, + "ontology_id": 1, + "acronym": "SSp-m1", + "name": "Primary somatosensory area, mouth, layer 1", + "color_hex_triplet": "188064", + "graph_order": 73, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 657, + "atlas_id": 1072, + "ontology_id": 1, + "acronym": "SSp-m2/3", + "name": "Primary somatosensory area, mouth, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 74, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [ + { + "id": 2102386393, + "atlas_id": 1072, + "ontology_id": 1, + "acronym": "SSp-m2", + "name": "Primary somatosensory area, mouth, layer 2", + "color_hex_triplet": "188064", + "graph_order": 74, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 657, + "children": [] + }, + { + "id": 3049552521, + "atlas_id": 1072, + "ontology_id": 1, + "acronym": "SSp-m3", + "name": "Primary somatosensory area, mouth, layer 3", + "color_hex_triplet": "188064", + "graph_order": 74, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 657, + "children": [] + } + ] + }, + { + "id": 950, + "atlas_id": 967, + "ontology_id": 1, + "acronym": "SSp-m4", + "name": "Primary somatosensory area, mouth, layer 4", + "color_hex_triplet": "188064", + "graph_order": 75, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 974, + "atlas_id": 970, + "ontology_id": 1, + "acronym": "SSp-m5", + "name": "Primary somatosensory area, mouth, layer 5", + "color_hex_triplet": "188064", + "graph_order": 76, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 1102, + "atlas_id": 986, + "ontology_id": 1, + "acronym": "SSp-m6a", + "name": "Primary somatosensory area, mouth, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 77, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + }, + { + "id": 2, + "atlas_id": 990, + "ontology_id": 1, + "acronym": "SSp-m6b", + "name": "Primary somatosensory area, mouth, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 78, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 345, + "children": [] + } + ] + }, + { + "id": 369, + "atlas_id": 753, + "ontology_id": 1, + "acronym": "SSp-ul", + "name": "Primary somatosensory area, upper limb", + "color_hex_triplet": "188064", + "graph_order": 79, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 450, + "atlas_id": 1046, + "ontology_id": 1, + "acronym": "SSp-ul1", + "name": "Primary somatosensory area, upper limb, layer 1", + "color_hex_triplet": "188064", + "graph_order": 80, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 854, + "atlas_id": 955, + "ontology_id": 1, + "acronym": "SSp-ul2/3", + "name": "Primary somatosensory area, upper limb, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 81, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [ + { + "id": 3693772975, + "atlas_id": 955, + "ontology_id": 1, + "acronym": "SSp-ul2", + "name": "Primary somatosensory area, upper limb, layer 2", + "color_hex_triplet": "188064", + "graph_order": 81, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 854, + "children": [] + }, + { + "id": 1890964946, + "atlas_id": 955, + "ontology_id": 1, + "acronym": "SSp-ul3", + "name": "Primary somatosensory area, upper limb, layer 3", + "color_hex_triplet": "188064", + "graph_order": 81, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 854, + "children": [] + } + ] + }, + { + "id": 577, + "atlas_id": 1062, + "ontology_id": 1, + "acronym": "SSp-ul4", + "name": "Primary somatosensory area, upper limb, layer 4", + "color_hex_triplet": "188064", + "graph_order": 82, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 625, + "atlas_id": 1068, + "ontology_id": 1, + "acronym": "SSp-ul5", + "name": "Primary somatosensory area, upper limb, layer 5", + "color_hex_triplet": "188064", + "graph_order": 83, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 945, + "atlas_id": 1108, + "ontology_id": 1, + "acronym": "SSp-ul6a", + "name": "Primary somatosensory area, upper limb, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 84, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + }, + { + "id": 1026, + "atlas_id": 1118, + "ontology_id": 1, + "acronym": "SSp-ul6b", + "name": "Primary somatosensory area, upper limb, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 85, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 369, + "children": [] + } + ] + }, + { + "id": 361, + "atlas_id": 752, + "ontology_id": 1, + "acronym": "SSp-tr", + "name": "Primary somatosensory area, trunk", + "color_hex_triplet": "188064", + "graph_order": 86, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 1006, + "atlas_id": 974, + "ontology_id": 1, + "acronym": "SSp-tr1", + "name": "Primary somatosensory area, trunk, layer 1", + "color_hex_triplet": "188064", + "graph_order": 87, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 670, + "atlas_id": 649, + "ontology_id": 1, + "acronym": "SSp-tr2/3", + "name": "Primary somatosensory area, trunk, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 88, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [ + { + "id": 3562104832, + "atlas_id": 649, + "ontology_id": 1, + "acronym": "SSp-tr2", + "name": "Primary somatosensory area, trunk, layer 2", + "color_hex_triplet": "188064", + "graph_order": 88, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 670, + "children": [] + }, + { + "id": 2260827822, + "atlas_id": 649, + "ontology_id": 1, + "acronym": "SSp-tr3", + "name": "Primary somatosensory area, trunk, layer 3", + "color_hex_triplet": "188064", + "graph_order": 88, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 670, + "children": [] + } + ] + }, + { + "id": 1086, + "atlas_id": 984, + "ontology_id": 1, + "acronym": "SSp-tr4", + "name": "Primary somatosensory area, trunk, layer 4", + "color_hex_triplet": "188064", + "graph_order": 89, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 1111, + "atlas_id": 987, + "ontology_id": 1, + "acronym": "SSp-tr5", + "name": "Primary somatosensory area, trunk, layer 5", + "color_hex_triplet": "188064", + "graph_order": 90, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 9, + "atlas_id": 991, + "ontology_id": 1, + "acronym": "SSp-tr6a", + "name": "Primary somatosensory area, trunk, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 91, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + }, + { + "id": 461, + "atlas_id": 623, + "ontology_id": 1, + "acronym": "SSp-tr6b", + "name": "Primary somatosensory area, trunk, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 92, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 361, + "children": [] + } + ] + }, + { + "id": 182305689, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un", + "name": "Primary somatosensory area, unassigned", + "color_hex_triplet": "188064", + "graph_order": 93, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 322, + "children": [ + { + "id": 182305693, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un1", + "name": "Primary somatosensory area, unassigned, layer 1", + "color_hex_triplet": "188064", + "graph_order": 94, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305697, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un2/3", + "name": "Primary somatosensory area, unassigned, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 95, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [ + { + "id": 3808433473, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un2", + "name": "Primary somatosensory area, unassigned, layer 2", + "color_hex_triplet": "188064", + "graph_order": 95, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305697, + "children": [] + }, + { + "id": 2208057363, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un3", + "name": "Primary somatosensory area, unassigned, layer 3", + "color_hex_triplet": "188064", + "graph_order": 95, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305697, + "children": [] + } + ] + }, + { + "id": 182305701, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un4", + "name": "Primary somatosensory area, unassigned, layer 4", + "color_hex_triplet": "188064", + "graph_order": 96, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305705, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un5", + "name": "Primary somatosensory area, unassigned, layer 5", + "color_hex_triplet": "188064", + "graph_order": 97, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305709, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un6a", + "name": "Primary somatosensory area, unassigned, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 98, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + }, + { + "id": 182305713, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SSp-un6b", + "name": "Primary somatosensory area, unassigned, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 99, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 182305689, + "children": [] + } + ] + } + ] + }, + { + "id": 378, + "atlas_id": 754, + "ontology_id": 1, + "acronym": "SSs", + "name": "Supplemental somatosensory area", + "color_hex_triplet": "188064", + "graph_order": 100, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 453, + "children": [ + { + "id": 873, + "atlas_id": 1099, + "ontology_id": 1, + "acronym": "SSs1", + "name": "Supplemental somatosensory area, layer 1", + "color_hex_triplet": "188064", + "graph_order": 101, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 806, + "atlas_id": 949, + "ontology_id": 1, + "acronym": "SSs2/3", + "name": "Supplemental somatosensory area, layer 2/3", + "color_hex_triplet": "188064", + "graph_order": 102, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [ + { + "id": 2336071181, + "atlas_id": 949, + "ontology_id": 1, + "acronym": "SSs2", + "name": "Supplemental somatosensory area, layer 2", + "color_hex_triplet": "188064", + "graph_order": 102, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 806, + "children": [] + }, + { + "id": 2542216029, + "atlas_id": 949, + "ontology_id": 1, + "acronym": "SSs3", + "name": "Supplemental somatosensory area, layer 3", + "color_hex_triplet": "188064", + "graph_order": 102, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 806, + "children": [] + } + ] + }, + { + "id": 1035, + "atlas_id": 1119, + "ontology_id": 1, + "acronym": "SSs4", + "name": "Supplemental somatosensory area, layer 4", + "color_hex_triplet": "188064", + "graph_order": 103, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 1090, + "atlas_id": 1126, + "ontology_id": 1, + "acronym": "SSs5", + "name": "Supplemental somatosensory area, layer 5", + "color_hex_triplet": "188064", + "graph_order": 104, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 862, + "atlas_id": 956, + "ontology_id": 1, + "acronym": "SSs6a", + "name": "Supplemental somatosensory area, layer 6a", + "color_hex_triplet": "188064", + "graph_order": 105, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + }, + { + "id": 893, + "atlas_id": 960, + "ontology_id": 1, + "acronym": "SSs6b", + "name": "Supplemental somatosensory area, layer 6b", + "color_hex_triplet": "188064", + "graph_order": 106, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 378, + "children": [] + } + ] + } + ] + }, + { + "id": 1057, + "atlas_id": 131, + "ontology_id": 1, + "acronym": "GU", + "name": "Gustatory areas", + "color_hex_triplet": "009C75", + "graph_order": 107, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 36, + "atlas_id": 994, + "ontology_id": 1, + "acronym": "GU1", + "name": "Gustatory areas, layer 1", + "color_hex_triplet": "009C75", + "graph_order": 108, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 180, + "atlas_id": 729, + "ontology_id": 1, + "acronym": "GU2/3", + "name": "Gustatory areas, layer 2/3", + "color_hex_triplet": "009C75", + "graph_order": 109, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [ + { + "id": 3683796018, + "atlas_id": 729, + "ontology_id": 1, + "acronym": "GU2", + "name": "Gustatory areas, layer 2", + "color_hex_triplet": "009C75", + "graph_order": 109, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 180, + "children": [] + }, + { + "id": 3893800328, + "atlas_id": 729, + "ontology_id": 1, + "acronym": "GU3", + "name": "Gustatory areas, layer 3", + "color_hex_triplet": "009C75", + "graph_order": 109, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 180, + "children": [] + } + ] + }, + { + "id": 148, + "atlas_id": 1008, + "ontology_id": 1, + "acronym": "GU4", + "name": "Gustatory areas, layer 4", + "color_hex_triplet": "009C75", + "graph_order": 110, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 187, + "atlas_id": 1013, + "ontology_id": 1, + "acronym": "GU5", + "name": "Gustatory areas, layer 5", + "color_hex_triplet": "009C75", + "graph_order": 111, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 638, + "atlas_id": 645, + "ontology_id": 1, + "acronym": "GU6a", + "name": "Gustatory areas, layer 6a", + "color_hex_triplet": "009C75", + "graph_order": 112, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + }, + { + "id": 662, + "atlas_id": 648, + "ontology_id": 1, + "acronym": "GU6b", + "name": "Gustatory areas, layer 6b", + "color_hex_triplet": "009C75", + "graph_order": 113, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1057, + "children": [] + } + ] + }, + { + "id": 677, + "atlas_id": 367, + "ontology_id": 1, + "acronym": "VISC", + "name": "Visceral area", + "color_hex_triplet": "11AD83", + "graph_order": 114, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 897, + "atlas_id": 1102, + "ontology_id": 1, + "acronym": "VISC1", + "name": "Visceral area, layer 1", + "color_hex_triplet": "11AD83", + "graph_order": 115, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 1106, + "atlas_id": 1128, + "ontology_id": 1, + "acronym": "VISC2/3", + "name": "Visceral area, layer 2/3", + "color_hex_triplet": "11AD83", + "graph_order": 116, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [ + { + "id": 3964792502, + "atlas_id": 1128, + "ontology_id": 1, + "acronym": "VISC2", + "name": "Visceral area, layer 2", + "color_hex_triplet": "11AD83", + "graph_order": 116, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1106, + "children": [] + }, + { + "id": 2189208794, + "atlas_id": 1128, + "ontology_id": 1, + "acronym": "VISC3", + "name": "Visceral area, layer 3", + "color_hex_triplet": "11AD83", + "graph_order": 116, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1106, + "children": [] + } + ] + }, + { + "id": 1010, + "atlas_id": 1116, + "ontology_id": 1, + "acronym": "VISC4", + "name": "Visceral area, layer 4", + "color_hex_triplet": "11AD83", + "graph_order": 117, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 1058, + "atlas_id": 1122, + "ontology_id": 1, + "acronym": "VISC5", + "name": "Visceral area, layer 5", + "color_hex_triplet": "11AD83", + "graph_order": 118, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 857, + "atlas_id": 1097, + "ontology_id": 1, + "acronym": "VISC6a", + "name": "Visceral area, layer 6a", + "color_hex_triplet": "11AD83", + "graph_order": 119, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + }, + { + "id": 849, + "atlas_id": 1096, + "ontology_id": 1, + "acronym": "VISC6b", + "name": "Visceral area, layer 6b", + "color_hex_triplet": "11AD83", + "graph_order": 120, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 677, + "children": [] + } + ] + }, + { + "id": 247, + "atlas_id": 30, + "ontology_id": 1, + "acronym": "AUD", + "name": "Auditory areas", + "color_hex_triplet": "019399", + "graph_order": 121, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 1011, + "atlas_id": 833, + "ontology_id": 1, + "acronym": "AUDd", + "name": "Dorsal auditory area", + "color_hex_triplet": "019399", + "graph_order": 122, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 247, + "children": [ + { + "id": 527, + "atlas_id": 631, + "ontology_id": 1, + "acronym": "AUDd1", + "name": "Dorsal auditory area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 123, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 600, + "atlas_id": 923, + "ontology_id": 1, + "acronym": "AUDd2/3", + "name": "Dorsal auditory area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 124, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [ + { + "id": 3781663036, + "atlas_id": 923, + "ontology_id": 1, + "acronym": "AUDd2", + "name": "Dorsal auditory area, layer 2", + "color_hex_triplet": "019399", + "graph_order": 124, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 600, + "children": [] + }, + { + "id": 2186168811, + "atlas_id": 923, + "ontology_id": 1, + "acronym": "AUDd3", + "name": "Dorsal auditory area, layer 3", + "color_hex_triplet": "019399", + "graph_order": 124, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 600, + "children": [] + } + ] + }, + { + "id": 678, + "atlas_id": 650, + "ontology_id": 1, + "acronym": "AUDd4", + "name": "Dorsal auditory area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 125, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 252, + "atlas_id": 738, + "ontology_id": 1, + "acronym": "AUDd5", + "name": "Dorsal auditory area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 126, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 156, + "atlas_id": 1009, + "ontology_id": 1, + "acronym": "AUDd6a", + "name": "Dorsal auditory area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 127, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 243, + "atlas_id": 1020, + "ontology_id": 1, + "acronym": "AUDd6b", + "name": "Dorsal auditory area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 128, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [] + }, + { + "id": 480149230, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla", + "name": "Laterolateral anterior visual area", + "color_hex_triplet": "019399", + "graph_order": 129, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 1011, + "children": [ + { + "id": 480149234, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla1", + "name": "Laterolateral anterior visual area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 130, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149238, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla2/3", + "name": "Laterolateral anterior visual area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 131, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [ + { + "id": 1087129144, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla2", + "name": "Laterolateral anterior visual area, layer 2", + "color_hex_triplet": "019399", + "graph_order": 131, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149238, + "children": [] + }, + { + "id": 1896413216, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla3", + "name": "Laterolateral anterior visual area, layer 3", + "color_hex_triplet": "019399", + "graph_order": 131, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149238, + "children": [] + } + ] + }, + { + "id": 480149242, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla4", + "name": "Laterolateral anterior visual area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 132, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149246, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla5", + "name": "Laterolateral anterior visual area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 133, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149250, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla6a", + "name": "Laterolateral anterior visual area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 134, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + }, + { + "id": 480149254, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISlla6b", + "name": "Laterolateral anterior visual area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 135, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149230, + "children": [] + } + ] + } + ] + }, + { + "id": 1002, + "atlas_id": 832, + "ontology_id": 1, + "acronym": "AUDp", + "name": "Primary auditory area", + "color_hex_triplet": "019399", + "graph_order": 136, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 247, + "children": [ + { + "id": 735, + "atlas_id": 940, + "ontology_id": 1, + "acronym": "AUDp1", + "name": "Primary auditory area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 137, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 251, + "atlas_id": 1021, + "ontology_id": 1, + "acronym": "AUDp2/3", + "name": "Primary auditory area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 138, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [ + { + "id": 2927119608, + "atlas_id": 1021, + "ontology_id": 1, + "acronym": "AUDp2", + "name": "Primary auditory area, layer 2", + "color_hex_triplet": "019399", + "graph_order": 138, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 251, + "children": [] + }, + { + "id": 1165809076, + "atlas_id": 1021, + "ontology_id": 1, + "acronym": "AUDp3", + "name": "Primary auditory area, layer 3", + "color_hex_triplet": "019399", + "graph_order": 138, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 251, + "children": [] + } + ] + }, + { + "id": 816, + "atlas_id": 950, + "ontology_id": 1, + "acronym": "AUDp4", + "name": "Primary auditory area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 139, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 847, + "atlas_id": 954, + "ontology_id": 1, + "acronym": "AUDp5", + "name": "Primary auditory area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 140, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 954, + "atlas_id": 1109, + "ontology_id": 1, + "acronym": "AUDp6a", + "name": "Primary auditory area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 141, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + }, + { + "id": 1005, + "atlas_id": 1115, + "ontology_id": 1, + "acronym": "AUDp6b", + "name": "Primary auditory area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 142, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1002, + "children": [] + } + ] + }, + { + "id": 1027, + "atlas_id": 835, + "ontology_id": 1, + "acronym": "AUDpo", + "name": "Posterior auditory area", + "color_hex_triplet": "019399", + "graph_order": 143, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 247, + "children": [ + { + "id": 696, + "atlas_id": 935, + "ontology_id": 1, + "acronym": "AUDpo1", + "name": "Posterior auditory area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 144, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 643, + "atlas_id": 1070, + "ontology_id": 1, + "acronym": "AUDpo2/3", + "name": "Posterior auditory area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 145, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [ + { + "id": 1307372013, + "atlas_id": 1070, + "ontology_id": 1, + "acronym": "AUDpo2", + "name": "Posterior auditory area, layer 2", + "color_hex_triplet": "019399", + "graph_order": 145, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 643, + "children": [] + }, + { + "id": 1598869030, + "atlas_id": 1070, + "ontology_id": 1, + "acronym": "AUDpo3", + "name": "Posterior auditory area, layer 3", + "color_hex_triplet": "019399", + "graph_order": 145, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 643, + "children": [] + } + ] + }, + { + "id": 759, + "atlas_id": 943, + "ontology_id": 1, + "acronym": "AUDpo4", + "name": "Posterior auditory area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 146, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 791, + "atlas_id": 947, + "ontology_id": 1, + "acronym": "AUDpo5", + "name": "Posterior auditory area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 147, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 249, + "atlas_id": 455, + "ontology_id": 1, + "acronym": "AUDpo6a", + "name": "Posterior auditory area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 148, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + }, + { + "id": 456, + "atlas_id": 622, + "ontology_id": 1, + "acronym": "AUDpo6b", + "name": "Posterior auditory area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 149, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1027, + "children": [] + } + ] + }, + { + "id": 1018, + "atlas_id": 834, + "ontology_id": 1, + "acronym": "AUDv", + "name": "Ventral auditory area", + "color_hex_triplet": "019399", + "graph_order": 150, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 247, + "children": [ + { + "id": 959, + "atlas_id": 968, + "ontology_id": 1, + "acronym": "AUDv1", + "name": "Ventral auditory area, layer 1", + "color_hex_triplet": "019399", + "graph_order": 151, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 755, + "atlas_id": 1084, + "ontology_id": 1, + "acronym": "AUDv2/3", + "name": "Ventral auditory area, layer 2/3", + "color_hex_triplet": "019399", + "graph_order": 152, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [ + { + "id": 1942628671, + "atlas_id": 1084, + "ontology_id": 1, + "acronym": "AUDv2", + "name": "Ventral auditory area, layer 2", + "color_hex_triplet": "019399", + "graph_order": 152, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 755, + "children": [] + }, + { + "id": 2167613582, + "atlas_id": 1084, + "ontology_id": 1, + "acronym": "AUDv3", + "name": "Ventral auditory area, layer 3", + "color_hex_triplet": "019399", + "graph_order": 152, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 755, + "children": [] + } + ] + }, + { + "id": 990, + "atlas_id": 972, + "ontology_id": 1, + "acronym": "AUDv4", + "name": "Ventral auditory area, layer 4", + "color_hex_triplet": "019399", + "graph_order": 153, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 1023, + "atlas_id": 976, + "ontology_id": 1, + "acronym": "AUDv5", + "name": "Ventral auditory area, layer 5", + "color_hex_triplet": "019399", + "graph_order": 154, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 520, + "atlas_id": 630, + "ontology_id": 1, + "acronym": "AUDv6a", + "name": "Ventral auditory area, layer 6a", + "color_hex_triplet": "019399", + "graph_order": 155, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + }, + { + "id": 598, + "atlas_id": 640, + "ontology_id": 1, + "acronym": "AUDv6b", + "name": "Ventral auditory area, layer 6b", + "color_hex_triplet": "019399", + "graph_order": 156, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1018, + "children": [] + } + ] + } + ] + }, + { + "id": 669, + "atlas_id": 366, + "ontology_id": 1, + "acronym": "VIS", + "name": "Visual areas", + "color_hex_triplet": "08858C", + "graph_order": 157, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 801, + "atlas_id": 1090, + "ontology_id": 1, + "acronym": "VIS1", + "name": "Visual areas, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 158, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 561, + "atlas_id": 1060, + "ontology_id": 1, + "acronym": "VIS2/3", + "name": "Visual areas, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 159, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 3724992631, + "atlas_id": 1060, + "ontology_id": 1, + "acronym": "VIS2", + "name": "Visual areas, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 159, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 561, + "children": [] + }, + { + "id": 2430059008, + "atlas_id": 1060, + "ontology_id": 1, + "acronym": "VIS3", + "name": "Visual areas, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 159, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 561, + "children": [] + } + ] + }, + { + "id": 913, + "atlas_id": 1104, + "ontology_id": 1, + "acronym": "VIS4", + "name": "Visual areas, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 160, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 937, + "atlas_id": 1107, + "ontology_id": 1, + "acronym": "VIS5", + "name": "Visual areas, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 161, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 457, + "atlas_id": 1047, + "ontology_id": 1, + "acronym": "VIS6a", + "name": "Visual areas, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 162, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 497, + "atlas_id": 1052, + "ontology_id": 1, + "acronym": "VIS6b", + "name": "Visual areas, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 163, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [] + }, + { + "id": 402, + "atlas_id": 757, + "ontology_id": 1, + "acronym": "VISal", + "name": "Anterolateral visual area", + "color_hex_triplet": "08858C", + "graph_order": 164, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 1074, + "atlas_id": 1124, + "ontology_id": 1, + "acronym": "VISal1", + "name": "Anterolateral visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 165, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 905, + "atlas_id": 1103, + "ontology_id": 1, + "acronym": "VISal2/3", + "name": "Anterolateral visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 166, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [ + { + "id": 1463157755, + "atlas_id": 1103, + "ontology_id": 1, + "acronym": "VISal2", + "name": "Anterolateral visual area, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 166, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 905, + "children": [] + }, + { + "id": 2845253318, + "atlas_id": 1103, + "ontology_id": 1, + "acronym": "VISal3", + "name": "Anterolateral visual area, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 166, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 905, + "children": [] + } + ] + }, + { + "id": 1114, + "atlas_id": 1129, + "ontology_id": 1, + "acronym": "VISal4", + "name": "Anterolateral visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 167, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 233, + "atlas_id": 453, + "ontology_id": 1, + "acronym": "VISal5", + "name": "Anterolateral visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 168, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 601, + "atlas_id": 1065, + "ontology_id": 1, + "acronym": "VISal6a", + "name": "Anterolateral visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 169, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + }, + { + "id": 649, + "atlas_id": 1071, + "ontology_id": 1, + "acronym": "VISal6b", + "name": "Anterolateral visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 170, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 402, + "children": [] + } + ] + }, + { + "id": 394, + "atlas_id": 756, + "ontology_id": 1, + "acronym": "VISam", + "name": "Anteromedial visual area", + "color_hex_triplet": "08858C", + "graph_order": 171, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 281, + "atlas_id": 1025, + "ontology_id": 1, + "acronym": "VISam1", + "name": "Anteromedial visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 172, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 1066, + "atlas_id": 1123, + "ontology_id": 1, + "acronym": "VISam2/3", + "name": "Anteromedial visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 173, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [ + { + "id": 1645194511, + "atlas_id": 1123, + "ontology_id": 1, + "acronym": "VISam2", + "name": "Anteromedial visual area, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 173, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1066, + "children": [] + }, + { + "id": 2292194787, + "atlas_id": 1123, + "ontology_id": 1, + "acronym": "VISam3", + "name": "Anteromedial visual area, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 173, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1066, + "children": [] + } + ] + }, + { + "id": 401, + "atlas_id": 1040, + "ontology_id": 1, + "acronym": "VISam4", + "name": "Anteromedial visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 174, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 433, + "atlas_id": 1044, + "ontology_id": 1, + "acronym": "VISam5", + "name": "Anteromedial visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 175, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 1046, + "atlas_id": 696, + "ontology_id": 1, + "acronym": "VISam6a", + "name": "Anteromedial visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 176, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + }, + { + "id": 441, + "atlas_id": 762, + "ontology_id": 1, + "acronym": "VISam6b", + "name": "Anteromedial visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 177, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 394, + "children": [] + } + ] + }, + { + "id": 409, + "atlas_id": 758, + "ontology_id": 1, + "acronym": "VISl", + "name": "Lateral visual area", + "color_hex_triplet": "08858C", + "graph_order": 178, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 421, + "atlas_id": 618, + "ontology_id": 1, + "acronym": "VISl1", + "name": "Lateral visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 179, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 973, + "atlas_id": 687, + "ontology_id": 1, + "acronym": "VISl2/3", + "name": "Lateral visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 180, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [ + { + "id": 3927629261, + "atlas_id": 687, + "ontology_id": 1, + "acronym": "VISl2", + "name": "Lateral visual area, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 180, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 973, + "children": [] + }, + { + "id": 3962734174, + "atlas_id": 687, + "ontology_id": 1, + "acronym": "VISl3", + "name": "Lateral visual area, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 180, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 973, + "children": [] + } + ] + }, + { + "id": 573, + "atlas_id": 637, + "ontology_id": 1, + "acronym": "VISl4", + "name": "Lateral visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 181, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 613, + "atlas_id": 642, + "ontology_id": 1, + "acronym": "VISl5", + "name": "Lateral visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 182, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 74, + "atlas_id": 999, + "ontology_id": 1, + "acronym": "VISl6a", + "name": "Lateral visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 183, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + }, + { + "id": 121, + "atlas_id": 1005, + "ontology_id": 1, + "acronym": "VISl6b", + "name": "Lateral visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 184, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 409, + "children": [] + } + ] + }, + { + "id": 385, + "atlas_id": 755, + "ontology_id": 1, + "acronym": "VISp", + "name": "Primary visual area", + "color_hex_triplet": "08858C", + "graph_order": 185, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 593, + "atlas_id": 1064, + "ontology_id": 1, + "acronym": "VISp1", + "name": "Primary visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 186, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 821, + "atlas_id": 951, + "ontology_id": 1, + "acronym": "VISp2/3", + "name": "Primary visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 187, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [ + { + "id": 2683995601, + "atlas_id": 951, + "ontology_id": 1, + "acronym": "VISp2", + "name": "Primary visual area, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 187, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 821, + "children": [] + }, + { + "id": 3894563657, + "atlas_id": 951, + "ontology_id": 1, + "acronym": "VISp3", + "name": "Primary visual area, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 187, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 821, + "children": [] + } + ] + }, + { + "id": 721, + "atlas_id": 1080, + "ontology_id": 1, + "acronym": "VISp4", + "name": "Primary visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 188, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 778, + "atlas_id": 1087, + "ontology_id": 1, + "acronym": "VISp5", + "name": "Primary visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 189, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 33, + "atlas_id": 428, + "ontology_id": 1, + "acronym": "VISp6a", + "name": "Primary visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 190, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + }, + { + "id": 305, + "atlas_id": 462, + "ontology_id": 1, + "acronym": "VISp6b", + "name": "Primary visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 191, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 385, + "children": [] + } + ] + }, + { + "id": 425, + "atlas_id": 760, + "ontology_id": 1, + "acronym": "VISpl", + "name": "Posterolateral visual area", + "color_hex_triplet": "08858C", + "graph_order": 192, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 750, + "atlas_id": 942, + "ontology_id": 1, + "acronym": "VISpl1", + "name": "Posterolateral visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 193, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 269, + "atlas_id": 882, + "ontology_id": 1, + "acronym": "VISpl2/3", + "name": "Posterolateral visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 194, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [ + { + "id": 2153924985, + "atlas_id": 882, + "ontology_id": 1, + "acronym": "VISpl2", + "name": "Posterolateral visual area, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 194, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 269, + "children": [] + }, + { + "id": 1431942459, + "atlas_id": 882, + "ontology_id": 1, + "acronym": "VISpl3", + "name": "Posterolateral visual area, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 194, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 269, + "children": [] + } + ] + }, + { + "id": 869, + "atlas_id": 957, + "ontology_id": 1, + "acronym": "VISpl4", + "name": "Posterolateral visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 195, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 902, + "atlas_id": 961, + "ontology_id": 1, + "acronym": "VISpl5", + "name": "Posterolateral visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 196, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 377, + "atlas_id": 1037, + "ontology_id": 1, + "acronym": "VISpl6a", + "name": "Posterolateral visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 197, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + }, + { + "id": 393, + "atlas_id": 1039, + "ontology_id": 1, + "acronym": "VISpl6b", + "name": "Posterolateral visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 198, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 425, + "children": [] + } + ] + }, + { + "id": 533, + "atlas_id": 915, + "ontology_id": 1, + "acronym": "VISpm", + "name": "posteromedial visual area", + "color_hex_triplet": "08858C", + "graph_order": 199, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 805, + "atlas_id": 383, + "ontology_id": 1, + "acronym": "VISpm1", + "name": "posteromedial visual area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 200, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 41, + "atlas_id": 995, + "ontology_id": 1, + "acronym": "VISpm2/3", + "name": "posteromedial visual area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 201, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [ + { + "id": 2544082156, + "atlas_id": 995, + "ontology_id": 1, + "acronym": "VISpm2", + "name": "posteromedial visual area, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 201, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 41, + "children": [] + }, + { + "id": 3710667749, + "atlas_id": 995, + "ontology_id": 1, + "acronym": "VISpm3", + "name": "posteromedial visual area, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 201, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 41, + "children": [] + } + ] + }, + { + "id": 501, + "atlas_id": 628, + "ontology_id": 1, + "acronym": "VISpm4", + "name": "posteromedial visual area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 202, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 565, + "atlas_id": 636, + "ontology_id": 1, + "acronym": "VISpm5", + "name": "posteromedial visual area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 203, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 257, + "atlas_id": 456, + "ontology_id": 1, + "acronym": "VISpm6a", + "name": "posteromedial visual area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 204, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + }, + { + "id": 469, + "atlas_id": 624, + "ontology_id": 1, + "acronym": "VISpm6b", + "name": "posteromedial visual area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 205, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 533, + "children": [] + } + ] + }, + { + "id": 312782574, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli", + "name": "Laterointermediate area", + "color_hex_triplet": "08858C", + "graph_order": 206, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 312782578, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli1", + "name": "Laterointermediate area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 207, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782582, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli2/3", + "name": "Laterointermediate area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 208, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [ + { + "id": 3808183566, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli2", + "name": "Laterointermediate area, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 208, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782582, + "children": [] + }, + { + "id": 2985091592, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli3", + "name": "Laterointermediate area, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 208, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782582, + "children": [] + } + ] + }, + { + "id": 312782586, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli4", + "name": "Laterointermediate area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 209, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782590, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli5", + "name": "Laterointermediate area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 210, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782594, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli6a", + "name": "Laterointermediate area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 211, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + }, + { + "id": 312782598, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISli6b", + "name": "Laterointermediate area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 212, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782574, + "children": [] + } + ] + }, + { + "id": 312782628, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor", + "name": "Postrhinal area", + "color_hex_triplet": "08858C", + "graph_order": 213, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 669, + "children": [ + { + "id": 312782632, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor1", + "name": "Postrhinal area, layer 1", + "color_hex_triplet": "08858C", + "graph_order": 214, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782636, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor2/3", + "name": "Postrhinal area, layer 2/3", + "color_hex_triplet": "08858C", + "graph_order": 215, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [ + { + "id": 2782023316, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor2", + "name": "Postrhinal area, layer 2", + "color_hex_triplet": "08858C", + "graph_order": 215, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782636, + "children": [] + }, + { + "id": 3920533696, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor3", + "name": "Postrhinal area, layer 3", + "color_hex_triplet": "08858C", + "graph_order": 215, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782636, + "children": [] + } + ] + }, + { + "id": 312782640, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor4", + "name": "Postrhinal area, layer 4", + "color_hex_triplet": "08858C", + "graph_order": 216, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782644, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor5", + "name": "Postrhinal area, layer 5", + "color_hex_triplet": "08858C", + "graph_order": 217, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782648, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor6a", + "name": "Postrhinal area, layer 6a", + "color_hex_triplet": "08858C", + "graph_order": 218, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + }, + { + "id": 312782652, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISpor6b", + "name": "Postrhinal area, layer 6b", + "color_hex_triplet": "08858C", + "graph_order": 219, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782628, + "children": [] + } + ] + } + ] + }, + { + "id": 31, + "atlas_id": 3, + "ontology_id": 1, + "acronym": "ACA", + "name": "Anterior cingulate area", + "color_hex_triplet": "40A666", + "graph_order": 220, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 572, + "atlas_id": 1061, + "ontology_id": 1, + "acronym": "ACA1", + "name": "Anterior cingulate area, layer 1", + "color_hex_triplet": "40A666", + "graph_order": 221, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 1053, + "atlas_id": 1121, + "ontology_id": 1, + "acronym": "ACA2/3", + "name": "Anterior cingulate area, layer 2/3", + "color_hex_triplet": "40A666", + "graph_order": 222, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [ + { + "id": 2949903222, + "atlas_id": 1121, + "ontology_id": 1, + "acronym": "ACA2", + "name": "Anterior cingulate area, layer 2", + "color_hex_triplet": "40A666", + "graph_order": 222, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1053, + "children": [] + }, + { + "id": 1037502706, + "atlas_id": 1121, + "ontology_id": 1, + "acronym": "ACA3", + "name": "Anterior cingulate area, layer 3", + "color_hex_triplet": "40A666", + "graph_order": 222, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1053, + "children": [] + } + ] + }, + { + "id": 739, + "atlas_id": 1082, + "ontology_id": 1, + "acronym": "ACA5", + "name": "Anterior cingulate area, layer 5", + "color_hex_triplet": "40A666", + "graph_order": 223, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 179, + "atlas_id": 1012, + "ontology_id": 1, + "acronym": "ACA6a", + "name": "Anterior cingulate area, layer 6a", + "color_hex_triplet": "40A666", + "graph_order": 224, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 227, + "atlas_id": 1018, + "ontology_id": 1, + "acronym": "ACA6b", + "name": "Anterior cingulate area, layer 6b", + "color_hex_triplet": "40A666", + "graph_order": 225, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [] + }, + { + "id": 39, + "atlas_id": 4, + "ontology_id": 1, + "acronym": "ACAd", + "name": "Anterior cingulate area, dorsal part", + "color_hex_triplet": "40A666", + "graph_order": 226, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [ + { + "id": 935, + "atlas_id": 965, + "ontology_id": 1, + "acronym": "ACAd1", + "name": "Anterior cingulate area, dorsal part, layer 1", + "color_hex_triplet": "40A666", + "graph_order": 227, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + }, + { + "id": 211, + "atlas_id": 1016, + "ontology_id": 1, + "acronym": "ACAd2/3", + "name": "Anterior cingulate area, dorsal part, layer 2/3", + "color_hex_triplet": "40A666", + "graph_order": 228, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [ + { + "id": 3095364455, + "atlas_id": 1016, + "ontology_id": 1, + "acronym": "ACAd2", + "name": "Anterior cingulate area, dorsal part, layer 2", + "color_hex_triplet": "40A666", + "graph_order": 228, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 211, + "children": [] + }, + { + "id": 2862362532, + "atlas_id": 1016, + "ontology_id": 1, + "acronym": "ACAd3", + "name": "Anterior cingulate area, dorsal part, layer 3", + "color_hex_triplet": "40A666", + "graph_order": 228, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 211, + "children": [] + } + ] + }, + { + "id": 1015, + "atlas_id": 975, + "ontology_id": 1, + "acronym": "ACAd5", + "name": "Anterior cingulate area, dorsal part, layer 5", + "color_hex_triplet": "40A666", + "graph_order": 229, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + }, + { + "id": 919, + "atlas_id": 963, + "ontology_id": 1, + "acronym": "ACAd6a", + "name": "Anterior cingulate area, dorsal part, layer 6a", + "color_hex_triplet": "40A666", + "graph_order": 230, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + }, + { + "id": 927, + "atlas_id": 964, + "ontology_id": 1, + "acronym": "ACAd6b", + "name": "Anterior cingulate area, dorsal part, layer 6b", + "color_hex_triplet": "40A666", + "graph_order": 231, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 39, + "children": [] + } + ] + }, + { + "id": 48, + "atlas_id": 5, + "ontology_id": 1, + "acronym": "ACAv", + "name": "Anterior cingulate area, ventral part", + "color_hex_triplet": "40A666", + "graph_order": 232, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 31, + "children": [ + { + "id": 588, + "atlas_id": 1063, + "ontology_id": 1, + "acronym": "ACAv1", + "name": "Anterior cingulate area, ventral part, layer 1", + "color_hex_triplet": "40A666", + "graph_order": 233, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + }, + { + "id": 296, + "atlas_id": 885, + "ontology_id": 1, + "acronym": "ACAv2/3", + "name": "Anterior cingulate area, ventral part, layer 2/3", + "color_hex_triplet": "40A666", + "graph_order": 234, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [ + { + "id": 2897348183, + "atlas_id": 885, + "ontology_id": 1, + "acronym": "ACAv2", + "name": "Anterior cingulate area, ventral part, layer 2", + "color_hex_triplet": "40A666", + "graph_order": 234, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 296, + "children": [] + }, + { + "id": 3582239403, + "atlas_id": 885, + "ontology_id": 1, + "acronym": "ACAv3", + "name": "Anterior cingulate area, ventral part, layer 3", + "color_hex_triplet": "40A666", + "graph_order": 234, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 296, + "children": [] + } + ] + }, + { + "id": 772, + "atlas_id": 1086, + "ontology_id": 1, + "acronym": "ACAv5", + "name": "Anterior cingulate area, ventral part, layer 5", + "color_hex_triplet": "40A666", + "graph_order": 235, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + }, + { + "id": 810, + "atlas_id": 1091, + "ontology_id": 1, + "acronym": "ACAv6a", + "name": "Anterior cingulate area, ventral part, layer 6a", + "color_hex_triplet": "40A666", + "graph_order": 236, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + }, + { + "id": 819, + "atlas_id": 1092, + "ontology_id": 1, + "acronym": "ACAv6b", + "name": "Anterior cingulate area, ventral part, layer 6b", + "color_hex_triplet": "40A666", + "graph_order": 237, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 48, + "children": [] + } + ] + } + ] + }, + { + "id": 972, + "atlas_id": 262, + "ontology_id": 1, + "acronym": "PL", + "name": "Prelimbic area", + "color_hex_triplet": "2FA850", + "graph_order": 238, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 171, + "atlas_id": 1011, + "ontology_id": 1, + "acronym": "PL1", + "name": "Prelimbic area, layer 1", + "color_hex_triplet": "2FA850", + "graph_order": 239, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + }, + { + "id": 304, + "atlas_id": 886, + "ontology_id": 1, + "acronym": "PL2/3", + "name": "Prelimbic area, layer 2/3", + "color_hex_triplet": "2FA850", + "graph_order": 241, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [ + { + "id": 195, + "atlas_id": 886, + "ontology_id": 1, + "acronym": "PL2", + "name": "Prelimbic area, layer 2", + "color_hex_triplet": "2FA850", + "graph_order": 241, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 304, + "children": [] + }, + { + "id": 2790124484, + "atlas_id": 886, + "ontology_id": 1, + "acronym": "PL3", + "name": "Prelimbic area, layer 3", + "color_hex_triplet": "2FA850", + "graph_order": 241, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 304, + "children": [] + } + ] + }, + { + "id": 363, + "atlas_id": 1035, + "ontology_id": 1, + "acronym": "PL5", + "name": "Prelimbic area, layer 5", + "color_hex_triplet": "2FA850", + "graph_order": 242, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + }, + { + "id": 84, + "atlas_id": 1000, + "ontology_id": 1, + "acronym": "PL6a", + "name": "Prelimbic area, layer 6a", + "color_hex_triplet": "2FA850", + "graph_order": 243, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + }, + { + "id": 132, + "atlas_id": 1006, + "ontology_id": 1, + "acronym": "PL6b", + "name": "Prelimbic area, layer 6b", + "color_hex_triplet": "2FA850", + "graph_order": 244, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 972, + "children": [] + } + ] + }, + { + "id": 44, + "atlas_id": 146, + "ontology_id": 1, + "acronym": "ILA", + "name": "Infralimbic area", + "color_hex_triplet": "59B363", + "graph_order": 245, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 707, + "atlas_id": 1078, + "ontology_id": 1, + "acronym": "ILA1", + "name": "Infralimbic area, layer 1", + "color_hex_triplet": "59B363", + "graph_order": 246, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + }, + { + "id": 556, + "atlas_id": 1059, + "ontology_id": 1, + "acronym": "ILA2/3", + "name": "Infralimbic area, layer 2/3", + "color_hex_triplet": "59B363", + "graph_order": 248, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [ + { + "id": 747, + "atlas_id": 1059, + "ontology_id": 1, + "acronym": "ILA2", + "name": "Infralimbic area, layer 2", + "color_hex_triplet": "59B363", + "graph_order": 248, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 556, + "children": [] + }, + { + "id": 2078623765, + "atlas_id": 1059, + "ontology_id": 1, + "acronym": "ILA3", + "name": "Infralimbic area, layer 3", + "color_hex_triplet": "59B363", + "graph_order": 248, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 556, + "children": [] + } + ] + }, + { + "id": 827, + "atlas_id": 1093, + "ontology_id": 1, + "acronym": "ILA5", + "name": "Infralimbic area, layer 5", + "color_hex_triplet": "59B363", + "graph_order": 249, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + }, + { + "id": 1054, + "atlas_id": 980, + "ontology_id": 1, + "acronym": "ILA6a", + "name": "Infralimbic area, layer 6a", + "color_hex_triplet": "59B363", + "graph_order": 250, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + }, + { + "id": 1081, + "atlas_id": 983, + "ontology_id": 1, + "acronym": "ILA6b", + "name": "Infralimbic area, layer 6b", + "color_hex_triplet": "59B363", + "graph_order": 251, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 44, + "children": [] + } + ] + }, + { + "id": 714, + "atlas_id": 230, + "ontology_id": 1, + "acronym": "ORB", + "name": "Orbital area", + "color_hex_triplet": "248A5E", + "graph_order": 252, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 264, + "atlas_id": 881, + "ontology_id": 1, + "acronym": "ORB1", + "name": "Orbital area, layer 1", + "color_hex_triplet": "248A5E", + "graph_order": 253, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 492, + "atlas_id": 1051, + "ontology_id": 1, + "acronym": "ORB2/3", + "name": "Orbital area, layer 2/3", + "color_hex_triplet": "248A5E", + "graph_order": 254, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [ + { + "id": 3269661528, + "atlas_id": 1051, + "ontology_id": 1, + "acronym": "ORB2", + "name": "Orbital area, layer 2", + "color_hex_triplet": "248A5E", + "graph_order": 254, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 492, + "children": [] + }, + { + "id": 3880005807, + "atlas_id": 1051, + "ontology_id": 1, + "acronym": "ORB3", + "name": "Orbital area, layer 3", + "color_hex_triplet": "248A5E", + "graph_order": 254, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 492, + "children": [] + } + ] + }, + { + "id": 352, + "atlas_id": 892, + "ontology_id": 1, + "acronym": "ORB5", + "name": "Orbital area, layer 5", + "color_hex_triplet": "248A5E", + "graph_order": 255, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 476, + "atlas_id": 1049, + "ontology_id": 1, + "acronym": "ORB6a", + "name": "Orbital area, layer 6a", + "color_hex_triplet": "248A5E", + "graph_order": 256, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 516, + "atlas_id": 1054, + "ontology_id": 1, + "acronym": "ORB6b", + "name": "Orbital area, layer 6b", + "color_hex_triplet": "248A5E", + "graph_order": 257, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 723, + "atlas_id": 231, + "ontology_id": 1, + "acronym": "ORBl", + "name": "Orbital area, lateral part", + "color_hex_triplet": "248A5E", + "graph_order": 258, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [ + { + "id": 448, + "atlas_id": 621, + "ontology_id": 1, + "acronym": "ORBl1", + "name": "Orbital area, lateral part, layer 1", + "color_hex_triplet": "248A5E", + "graph_order": 259, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + }, + { + "id": 412, + "atlas_id": 1041, + "ontology_id": 1, + "acronym": "ORBl2/3", + "name": "Orbital area, lateral part, layer 2/3", + "color_hex_triplet": "248A5E", + "graph_order": 260, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [ + { + "id": 3803368771, + "atlas_id": 1041, + "ontology_id": 1, + "acronym": "ORBl2", + "name": "Orbital area, lateral part, layer 2", + "color_hex_triplet": "248A5E", + "graph_order": 260, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 412, + "children": [] + }, + { + "id": 1037481934, + "atlas_id": 1041, + "ontology_id": 1, + "acronym": "ORBl3", + "name": "Orbital area, lateral part, layer 3", + "color_hex_triplet": "248A5E", + "graph_order": 260, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 412, + "children": [] + } + ] + }, + { + "id": 630, + "atlas_id": 644, + "ontology_id": 1, + "acronym": "ORBl5", + "name": "Orbital area, lateral part, layer 5", + "color_hex_triplet": "248A5E", + "graph_order": 261, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + }, + { + "id": 440, + "atlas_id": 620, + "ontology_id": 1, + "acronym": "ORBl6a", + "name": "Orbital area, lateral part, layer 6a", + "color_hex_triplet": "248A5E", + "graph_order": 262, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + }, + { + "id": 488, + "atlas_id": 626, + "ontology_id": 1, + "acronym": "ORBl6b", + "name": "Orbital area, lateral part, layer 6b", + "color_hex_triplet": "248A5E", + "graph_order": 263, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 723, + "children": [] + } + ] + }, + { + "id": 731, + "atlas_id": 232, + "ontology_id": 1, + "acronym": "ORBm", + "name": "Orbital area, medial part", + "color_hex_triplet": "248A5E", + "graph_order": 264, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [ + { + "id": 484, + "atlas_id": 1050, + "ontology_id": 1, + "acronym": "ORBm1", + "name": "Orbital area, medial part, layer 1", + "color_hex_triplet": "248A5E", + "graph_order": 265, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + }, + { + "id": 582, + "atlas_id": 638, + "ontology_id": 1, + "acronym": "ORBm2/3", + "name": "Orbital area, medial part, layer 2/3", + "color_hex_triplet": "248A5E", + "graph_order": 267, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [ + { + "id": 524, + "atlas_id": 638, + "ontology_id": 1, + "acronym": "ORBm2", + "name": "Orbital area, medial part, layer 2", + "color_hex_triplet": "248A5E", + "graph_order": 267, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 582, + "children": [] + }, + { + "id": 2012716980, + "atlas_id": 638, + "ontology_id": 1, + "acronym": "ORBm3", + "name": "Orbital area, medial part, layer 3", + "color_hex_triplet": "248A5E", + "graph_order": 267, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 582, + "children": [] + } + ] + }, + { + "id": 620, + "atlas_id": 1067, + "ontology_id": 1, + "acronym": "ORBm5", + "name": "Orbital area, medial part, layer 5", + "color_hex_triplet": "248A5E", + "graph_order": 268, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + }, + { + "id": 910, + "atlas_id": 962, + "ontology_id": 1, + "acronym": "ORBm6a", + "name": "Orbital area, medial part, layer 6a", + "color_hex_triplet": "248A5E", + "graph_order": 269, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + }, + { + "id": 527696977, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ORBm6b", + "name": "Orbital area, medial part, layer 6b", + "color_hex_triplet": "248A5E", + "graph_order": 270, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 731, + "children": [] + } + ] + }, + { + "id": 738, + "atlas_id": 233, + "ontology_id": 1, + "acronym": "ORBv", + "name": "Orbital area, ventral part", + "color_hex_triplet": "248A5E", + "graph_order": 271, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [] + }, + { + "id": 746, + "atlas_id": 234, + "ontology_id": 1, + "acronym": "ORBvl", + "name": "Orbital area, ventrolateral part", + "color_hex_triplet": "248A5E", + "graph_order": 272, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 714, + "children": [ + { + "id": 969, + "atlas_id": 1111, + "ontology_id": 1, + "acronym": "ORBvl1", + "name": "Orbital area, ventrolateral part, layer 1", + "color_hex_triplet": "248A5E", + "graph_order": 273, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + }, + { + "id": 288, + "atlas_id": 884, + "ontology_id": 1, + "acronym": "ORBvl2/3", + "name": "Orbital area, ventrolateral part, layer 2/3", + "color_hex_triplet": "248A5E", + "graph_order": 274, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [ + { + "id": 3653590473, + "atlas_id": 884, + "ontology_id": 1, + "acronym": "ORBvl2", + "name": "Orbital area, ventrolateral part, layer 2", + "color_hex_triplet": "248A5E", + "graph_order": 274, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 288, + "children": [] + }, + { + "id": 2413172686, + "atlas_id": 884, + "ontology_id": 1, + "acronym": "ORBvl3", + "name": "Orbital area, ventrolateral part, layer 3", + "color_hex_triplet": "248A5E", + "graph_order": 274, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 288, + "children": [] + } + ] + }, + { + "id": 1125, + "atlas_id": 1130, + "ontology_id": 1, + "acronym": "ORBvl5", + "name": "Orbital area, ventrolateral part, layer 5", + "color_hex_triplet": "248A5E", + "graph_order": 275, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + }, + { + "id": 608, + "atlas_id": 924, + "ontology_id": 1, + "acronym": "ORBvl6a", + "name": "Orbital area, ventrolateral part, layer 6a", + "color_hex_triplet": "248A5E", + "graph_order": 276, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + }, + { + "id": 680, + "atlas_id": 933, + "ontology_id": 1, + "acronym": "ORBvl6b", + "name": "Orbital area, ventrolateral part, layer 6b", + "color_hex_triplet": "248A5E", + "graph_order": 277, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 746, + "children": [] + } + ] + } + ] + }, + { + "id": 95, + "atlas_id": 11, + "ontology_id": 1, + "acronym": "AI", + "name": "Agranular insular area", + "color_hex_triplet": "219866", + "graph_order": 278, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 104, + "atlas_id": 12, + "ontology_id": 1, + "acronym": "AId", + "name": "Agranular insular area, dorsal part", + "color_hex_triplet": "219866", + "graph_order": 279, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 95, + "children": [ + { + "id": 996, + "atlas_id": 1114, + "ontology_id": 1, + "acronym": "AId1", + "name": "Agranular insular area, dorsal part, layer 1", + "color_hex_triplet": "219866", + "graph_order": 280, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + }, + { + "id": 328, + "atlas_id": 889, + "ontology_id": 1, + "acronym": "AId2/3", + "name": "Agranular insular area, dorsal part, layer 2/3", + "color_hex_triplet": "219866", + "graph_order": 281, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [ + { + "id": 3250982806, + "atlas_id": 889, + "ontology_id": 1, + "acronym": "AId2", + "name": "Agranular insular area, dorsal part, layer 2", + "color_hex_triplet": "219866", + "graph_order": 281, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 328, + "children": [] + }, + { + "id": 3088876178, + "atlas_id": 889, + "ontology_id": 1, + "acronym": "AId3", + "name": "Agranular insular area, dorsal part, layer 3", + "color_hex_triplet": "219866", + "graph_order": 281, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 328, + "children": [] + } + ] + }, + { + "id": 1101, + "atlas_id": 1127, + "ontology_id": 1, + "acronym": "AId5", + "name": "Agranular insular area, dorsal part, layer 5", + "color_hex_triplet": "219866", + "graph_order": 282, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + }, + { + "id": 783, + "atlas_id": 946, + "ontology_id": 1, + "acronym": "AId6a", + "name": "Agranular insular area, dorsal part, layer 6a", + "color_hex_triplet": "219866", + "graph_order": 283, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + }, + { + "id": 831, + "atlas_id": 952, + "ontology_id": 1, + "acronym": "AId6b", + "name": "Agranular insular area, dorsal part, layer 6b", + "color_hex_triplet": "219866", + "graph_order": 284, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 104, + "children": [] + } + ] + }, + { + "id": 111, + "atlas_id": 13, + "ontology_id": 1, + "acronym": "AIp", + "name": "Agranular insular area, posterior part", + "color_hex_triplet": "219866", + "graph_order": 285, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 95, + "children": [ + { + "id": 120, + "atlas_id": 863, + "ontology_id": 1, + "acronym": "AIp1", + "name": "Agranular insular area, posterior part, layer 1", + "color_hex_triplet": "219866", + "graph_order": 286, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + }, + { + "id": 163, + "atlas_id": 1010, + "ontology_id": 1, + "acronym": "AIp2/3", + "name": "Agranular insular area, posterior part, layer 2/3", + "color_hex_triplet": "219866", + "graph_order": 287, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [ + { + "id": 1672280517, + "atlas_id": 1010, + "ontology_id": 1, + "acronym": "AIp2", + "name": "Agranular insular area, posterior part, layer 2", + "color_hex_triplet": "219866", + "graph_order": 287, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 163, + "children": [] + }, + { + "id": 2414821463, + "atlas_id": 1010, + "ontology_id": 1, + "acronym": "AIp3", + "name": "Agranular insular area, posterior part, layer 3", + "color_hex_triplet": "219866", + "graph_order": 287, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 163, + "children": [] + } + ] + }, + { + "id": 344, + "atlas_id": 891, + "ontology_id": 1, + "acronym": "AIp5", + "name": "Agranular insular area, posterior part, layer 5", + "color_hex_triplet": "219866", + "graph_order": 288, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + }, + { + "id": 314, + "atlas_id": 1029, + "ontology_id": 1, + "acronym": "AIp6a", + "name": "Agranular insular area, posterior part, layer 6a", + "color_hex_triplet": "219866", + "graph_order": 289, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + }, + { + "id": 355, + "atlas_id": 1034, + "ontology_id": 1, + "acronym": "AIp6b", + "name": "Agranular insular area, posterior part, layer 6b", + "color_hex_triplet": "219866", + "graph_order": 290, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 111, + "children": [] + } + ] + }, + { + "id": 119, + "atlas_id": 14, + "ontology_id": 1, + "acronym": "AIv", + "name": "Agranular insular area, ventral part", + "color_hex_triplet": "219866", + "graph_order": 291, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 95, + "children": [ + { + "id": 704, + "atlas_id": 936, + "ontology_id": 1, + "acronym": "AIv1", + "name": "Agranular insular area, ventral part, layer 1", + "color_hex_triplet": "219866", + "graph_order": 292, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + }, + { + "id": 694, + "atlas_id": 652, + "ontology_id": 1, + "acronym": "AIv2/3", + "name": "Agranular insular area, ventral part, layer 2/3", + "color_hex_triplet": "219866", + "graph_order": 293, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [ + { + "id": 2224619882, + "atlas_id": 652, + "ontology_id": 1, + "acronym": "AIv2", + "name": "Agranular insular area, ventral part, layer 2", + "color_hex_triplet": "219866", + "graph_order": 293, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 694, + "children": [] + }, + { + "id": 3376791707, + "atlas_id": 652, + "ontology_id": 1, + "acronym": "AIv3", + "name": "Agranular insular area, ventral part, layer 3", + "color_hex_triplet": "219866", + "graph_order": 293, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 694, + "children": [] + } + ] + }, + { + "id": 800, + "atlas_id": 948, + "ontology_id": 1, + "acronym": "AIv5", + "name": "Agranular insular area, ventral part, layer 5", + "color_hex_triplet": "219866", + "graph_order": 294, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + }, + { + "id": 675, + "atlas_id": 1074, + "ontology_id": 1, + "acronym": "AIv6a", + "name": "Agranular insular area, ventral part, layer 6a", + "color_hex_triplet": "219866", + "graph_order": 295, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + }, + { + "id": 699, + "atlas_id": 1077, + "ontology_id": 1, + "acronym": "AIv6b", + "name": "Agranular insular area, ventral part, layer 6b", + "color_hex_triplet": "219866", + "graph_order": 296, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 119, + "children": [] + } + ] + } + ] + }, + { + "id": 254, + "atlas_id": 314, + "ontology_id": 1, + "acronym": "RSP", + "name": "Retrosplenial area", + "color_hex_triplet": "1AA698", + "graph_order": 297, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 894, + "atlas_id": 394, + "ontology_id": 1, + "acronym": "RSPagl", + "name": "Retrosplenial area, lateral agranular part", + "color_hex_triplet": "1AA698", + "graph_order": 298, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 254, + "children": [ + { + "id": 671, + "atlas_id": 932, + "ontology_id": 1, + "acronym": "RSPagl1", + "name": "Retrosplenial area, lateral agranular part, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 299, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 965, + "atlas_id": 969, + "ontology_id": 1, + "acronym": "RSPagl2/3", + "name": "Retrosplenial area, lateral agranular part, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 300, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [ + { + "id": 3192952047, + "atlas_id": 969, + "ontology_id": 1, + "acronym": "RSPagl2", + "name": "Retrosplenial area, lateral agranular part, layer 2", + "color_hex_triplet": "1AA698", + "graph_order": 300, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 965, + "children": [] + }, + { + "id": 2892558637, + "atlas_id": 969, + "ontology_id": 1, + "acronym": "RSPagl3", + "name": "Retrosplenial area, lateral agranular part, layer 3", + "color_hex_triplet": "1AA698", + "graph_order": 300, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 965, + "children": [] + } + ] + }, + { + "id": 774, + "atlas_id": 945, + "ontology_id": 1, + "acronym": "RSPagl5", + "name": "Retrosplenial area, lateral agranular part, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 301, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 906, + "atlas_id": 820, + "ontology_id": 1, + "acronym": "RSPagl6a", + "name": "Retrosplenial area, lateral agranular part, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 302, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 279, + "atlas_id": 883, + "ontology_id": 1, + "acronym": "RSPagl6b", + "name": "Retrosplenial area, lateral agranular part, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 303, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [] + }, + { + "id": 480149258, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma", + "name": "Mediomedial anterior visual area", + "color_hex_triplet": "1AA698", + "graph_order": 304, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [ + { + "id": 480149262, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma1", + "name": "Mediomedial anterior visual area, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 305, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149266, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma2/3", + "name": "Mediomedial anterior visual area, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 306, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [ + { + "id": 2026216612, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma2", + "name": "Mediomedial anterior visual area, layer 2", + "color_hex_triplet": "1AA698", + "graph_order": 306, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149266, + "children": [] + }, + { + "id": 3206763505, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma3", + "name": "Mediomedial anterior visual area, layer 3", + "color_hex_triplet": "1AA698", + "graph_order": 306, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149266, + "children": [] + } + ] + }, + { + "id": 480149270, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma4", + "name": "Mediomedial anterior visual area, layer 4", + "color_hex_triplet": "1AA698", + "graph_order": 307, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149274, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma5", + "name": "Mediomedial anterior visual area, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 308, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149278, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma6a", + "name": "Mediomedial anterior visual area, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 309, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + }, + { + "id": 480149282, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmma6b", + "name": "Mediomedial anterior visual area, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 310, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149258, + "children": [] + } + ] + }, + { + "id": 480149286, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp", + "name": "Mediomedial posterior visual area", + "color_hex_triplet": "1AA698", + "graph_order": 311, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [ + { + "id": 480149290, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp1", + "name": "Mediomedial posterior visual area, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 312, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149294, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp2/3", + "name": "Mediomedial posterior visual area, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 313, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [ + { + "id": 2341154899, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp2", + "name": "Mediomedial posterior visual area, layer 2", + "color_hex_triplet": "1AA698", + "graph_order": 313, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149294, + "children": [] + }, + { + "id": 3403314552, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp3", + "name": "Mediomedial posterior visual area, layer 3", + "color_hex_triplet": "1AA698", + "graph_order": 313, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149294, + "children": [] + } + ] + }, + { + "id": 480149298, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp4", + "name": "Mediomedial posterior visual area, layer 4", + "color_hex_triplet": "1AA698", + "graph_order": 314, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149302, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp5", + "name": "Mediomedial posterior visual area, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 315, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149306, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp6a", + "name": "Mediomedial posterior visual area, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 316, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + }, + { + "id": 480149310, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISmmp6b", + "name": "Mediomedial posterior visual area, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 317, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149286, + "children": [] + } + ] + }, + { + "id": 480149314, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm", + "name": "Medial visual area", + "color_hex_triplet": "1AA698", + "graph_order": 318, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 894, + "children": [ + { + "id": 480149318, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm1", + "name": "Medial visual area, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 319, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149322, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm2/3", + "name": "Medial visual area, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 320, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [ + { + "id": 3114287561, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm2", + "name": "Medial visual area, layer 2", + "color_hex_triplet": "1AA698", + "graph_order": 320, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149322, + "children": [] + }, + { + "id": 2887815719, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm3", + "name": "Medial visual area, layer 3", + "color_hex_triplet": "1AA698", + "graph_order": 320, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149322, + "children": [] + } + ] + }, + { + "id": 480149326, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm4", + "name": "Medial visual area, layer 4", + "color_hex_triplet": "1AA698", + "graph_order": 321, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149330, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm5", + "name": "Medial visual area, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 322, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149334, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm6a", + "name": "Medial visual area, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 323, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + }, + { + "id": 480149338, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISm6b", + "name": "Medial visual area, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 324, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 480149314, + "children": [] + } + ] + } + ] + }, + { + "id": 879, + "atlas_id": 392, + "ontology_id": 1, + "acronym": "RSPd", + "name": "Retrosplenial area, dorsal part", + "color_hex_triplet": "1AA698", + "graph_order": 325, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 254, + "children": [ + { + "id": 442, + "atlas_id": 1045, + "ontology_id": 1, + "acronym": "RSPd1", + "name": "Retrosplenial area, dorsal part, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 326, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 434, + "atlas_id": 761, + "ontology_id": 1, + "acronym": "RSPd2/3", + "name": "Retrosplenial area, dorsal part, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 327, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [ + { + "id": 2361776473, + "atlas_id": 761, + "ontology_id": 1, + "acronym": "RSPd2", + "name": "Retrosplenial area, dorsal part, layer 2", + "color_hex_triplet": "1AA698", + "graph_order": 327, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 434, + "children": [] + }, + { + "id": 3956191525, + "atlas_id": 761, + "ontology_id": 1, + "acronym": "RSPd3", + "name": "Retrosplenial area, dorsal part, layer 3", + "color_hex_triplet": "1AA698", + "graph_order": 327, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 434, + "children": [] + } + ] + }, + { + "id": 545, + "atlas_id": 1058, + "ontology_id": 1, + "acronym": "RSPd4", + "name": "Retrosplenial area, dorsal part, layer 4", + "color_hex_triplet": "1AA698", + "graph_order": 328, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 610, + "atlas_id": 1066, + "ontology_id": 1, + "acronym": "RSPd5", + "name": "Retrosplenial area, dorsal part, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 329, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 274, + "atlas_id": 1024, + "ontology_id": 1, + "acronym": "RSPd6a", + "name": "Retrosplenial area, dorsal part, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 330, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + }, + { + "id": 330, + "atlas_id": 1031, + "ontology_id": 1, + "acronym": "RSPd6b", + "name": "Retrosplenial area, dorsal part, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 331, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 879, + "children": [] + } + ] + }, + { + "id": 886, + "atlas_id": 393, + "ontology_id": 1, + "acronym": "RSPv", + "name": "Retrosplenial area, ventral part", + "color_hex_triplet": "1AA698", + "graph_order": 332, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 254, + "children": [ + { + "id": 542, + "atlas_id": 633, + "ontology_id": 1, + "acronym": "RSPv1", + "name": "Retrosplenial area, ventral part, layer 1", + "color_hex_triplet": "1AA698", + "graph_order": 333, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + }, + { + "id": 430, + "atlas_id": 619, + "ontology_id": 1, + "acronym": "RSPv2/3", + "name": "Retrosplenial area, ventral part, layer 2/3", + "color_hex_triplet": "1AA698", + "graph_order": 335, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [ + { + "id": 606, + "atlas_id": 619, + "ontology_id": 1, + "acronym": "RSPv2", + "name": "Retrosplenial area, ventral part, layer 2", + "color_hex_triplet": "1AA698", + "graph_order": 335, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 430, + "children": [] + }, + { + "id": 3314370483, + "atlas_id": 619, + "ontology_id": 1, + "acronym": "RSPv3", + "name": "Retrosplenial area, ventral part, layer 3", + "color_hex_triplet": "1AA698", + "graph_order": 335, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 430, + "children": [] + } + ] + }, + { + "id": 687, + "atlas_id": 651, + "ontology_id": 1, + "acronym": "RSPv5", + "name": "Retrosplenial area, ventral part, layer 5", + "color_hex_triplet": "1AA698", + "graph_order": 336, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + }, + { + "id": 590, + "atlas_id": 639, + "ontology_id": 1, + "acronym": "RSPv6a", + "name": "Retrosplenial area, ventral part, layer 6a", + "color_hex_triplet": "1AA698", + "graph_order": 337, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + }, + { + "id": 622, + "atlas_id": 643, + "ontology_id": 1, + "acronym": "RSPv6b", + "name": "Retrosplenial area, ventral part, layer 6b", + "color_hex_triplet": "1AA698", + "graph_order": 338, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 886, + "children": [] + } + ] + } + ] + }, + { + "id": 22, + "atlas_id": 285, + "ontology_id": 1, + "acronym": "PTLp", + "name": "Posterior parietal association areas", + "color_hex_triplet": "009FAC", + "graph_order": 339, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 532, + "atlas_id": 1056, + "ontology_id": 1, + "acronym": "PTLp1", + "name": "Posterior parietal association areas, layer 1", + "color_hex_triplet": "009FAC", + "graph_order": 340, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 241, + "atlas_id": 454, + "ontology_id": 1, + "acronym": "PTLp2/3", + "name": "Posterior parietal association areas, layer 2/3", + "color_hex_triplet": "009FAC", + "graph_order": 341, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [ + { + "id": 2300544548, + "atlas_id": 454, + "ontology_id": 1, + "acronym": "PTLp2", + "name": "Posterior parietal association areas, layer 2", + "color_hex_triplet": "009FAC", + "graph_order": 341, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 241, + "children": [] + }, + { + "id": 3360392253, + "atlas_id": 454, + "ontology_id": 1, + "acronym": "PTLp3", + "name": "Posterior parietal association areas, layer 3", + "color_hex_triplet": "009FAC", + "graph_order": 341, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 241, + "children": [] + } + ] + }, + { + "id": 635, + "atlas_id": 1069, + "ontology_id": 1, + "acronym": "PTLp4", + "name": "Posterior parietal association areas, layer 4", + "color_hex_triplet": "009FAC", + "graph_order": 342, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 683, + "atlas_id": 1075, + "ontology_id": 1, + "acronym": "PTLp5", + "name": "Posterior parietal association areas, layer 5", + "color_hex_triplet": "009FAC", + "graph_order": 343, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 308, + "atlas_id": 1028, + "ontology_id": 1, + "acronym": "PTLp6a", + "name": "Posterior parietal association areas, layer 6a", + "color_hex_triplet": "009FAC", + "graph_order": 344, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 340, + "atlas_id": 1032, + "ontology_id": 1, + "acronym": "PTLp6b", + "name": "Posterior parietal association areas, layer 6b", + "color_hex_triplet": "009FAC", + "graph_order": 345, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [] + }, + { + "id": 312782546, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa", + "name": "Anterior area", + "color_hex_triplet": "009FAC", + "graph_order": 346, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [ + { + "id": 312782550, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa1", + "name": "Anterior area, layer 1", + "color_hex_triplet": "009FAC", + "graph_order": 347, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782554, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa2/3", + "name": "Anterior area, layer 2/3", + "color_hex_triplet": "009FAC", + "graph_order": 348, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [ + { + "id": 1695203883, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa2", + "name": "Anterior area, layer 2", + "color_hex_triplet": "009FAC", + "graph_order": 348, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782554, + "children": [] + }, + { + "id": 1160721590, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa3", + "name": "Anterior area, layer 3", + "color_hex_triplet": "009FAC", + "graph_order": 348, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782554, + "children": [] + } + ] + }, + { + "id": 312782558, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa4", + "name": "Anterior area, layer 4", + "color_hex_triplet": "009FAC", + "graph_order": 349, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782562, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa5", + "name": "Anterior area, layer 5", + "color_hex_triplet": "009FAC", + "graph_order": 350, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782566, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa6a", + "name": "Anterior area, layer 6a", + "color_hex_triplet": "009FAC", + "graph_order": 351, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + }, + { + "id": 312782570, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISa6b", + "name": "Anterior area, layer 6b", + "color_hex_triplet": "009FAC", + "graph_order": 352, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782546, + "children": [] + } + ] + }, + { + "id": 417, + "atlas_id": 759, + "ontology_id": 1, + "acronym": "VISrl", + "name": "Rostrolateral visual area", + "color_hex_triplet": "009FAC", + "graph_order": 353, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 22, + "children": [ + { + "id": 312782604, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl1", + "name": "Rostrolateral visual area, layer 1", + "color_hex_triplet": "009FAC", + "graph_order": 354, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782608, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl2/3", + "name": "Rostrolateral visual area, layer 2/3", + "color_hex_triplet": "009FAC", + "graph_order": 355, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [ + { + "id": 1430875964, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl2", + "name": "Rostrolateral visual area, layer 2", + "color_hex_triplet": "009FAC", + "graph_order": 355, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782608, + "children": [] + }, + { + "id": 3714509274, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl3", + "name": "Rostrolateral visual area, layer 3", + "color_hex_triplet": "009FAC", + "graph_order": 355, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 312782608, + "children": [] + } + ] + }, + { + "id": 312782612, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl4", + "name": "Rostrolateral visual area, layer 4", + "color_hex_triplet": "009FAC", + "graph_order": 356, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782616, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl5", + "name": "Rostrolateral visual area, layer 5", + "color_hex_triplet": "009FAC", + "graph_order": 357, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782620, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl6a", + "name": "Rostrolateral visual area, layer 6a", + "color_hex_triplet": "009FAC", + "graph_order": 358, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + }, + { + "id": 312782624, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VISrl6b", + "name": "Rostrolateral visual area, layer 6b", + "color_hex_triplet": "009FAC", + "graph_order": 359, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 417, + "children": [] + } + ] + } + ] + }, + { + "id": 541, + "atlas_id": 350, + "ontology_id": 1, + "acronym": "TEa", + "name": "Temporal association areas", + "color_hex_triplet": "15B0B3", + "graph_order": 360, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 97, + "atlas_id": 1002, + "ontology_id": 1, + "acronym": "TEa1", + "name": "Temporal association areas, layer 1", + "color_hex_triplet": "15B0B3", + "graph_order": 361, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 1127, + "atlas_id": 706, + "ontology_id": 1, + "acronym": "TEa2/3", + "name": "Temporal association areas, layer 2/3", + "color_hex_triplet": "15B0B3", + "graph_order": 362, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [ + { + "id": 2439179873, + "atlas_id": 706, + "ontology_id": 1, + "acronym": "TEa2", + "name": "Temporal association areas, layer 2", + "color_hex_triplet": "15B0B3", + "graph_order": 362, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1127, + "children": [] + }, + { + "id": 2854337283, + "atlas_id": 706, + "ontology_id": 1, + "acronym": "TEa3", + "name": "Temporal association areas, layer 3", + "color_hex_triplet": "15B0B3", + "graph_order": 362, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1127, + "children": [] + } + ] + }, + { + "id": 234, + "atlas_id": 1019, + "ontology_id": 1, + "acronym": "TEa4", + "name": "Temporal association areas, layer 4", + "color_hex_triplet": "15B0B3", + "graph_order": 363, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 289, + "atlas_id": 1026, + "ontology_id": 1, + "acronym": "TEa5", + "name": "Temporal association areas, layer 5", + "color_hex_triplet": "15B0B3", + "graph_order": 364, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 729, + "atlas_id": 1081, + "ontology_id": 1, + "acronym": "TEa6a", + "name": "Temporal association areas, layer 6a", + "color_hex_triplet": "15B0B3", + "graph_order": 365, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + }, + { + "id": 786, + "atlas_id": 1088, + "ontology_id": 1, + "acronym": "TEa6b", + "name": "Temporal association areas, layer 6b", + "color_hex_triplet": "15B0B3", + "graph_order": 366, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 541, + "children": [] + } + ] + }, + { + "id": 922, + "atlas_id": 256, + "ontology_id": 1, + "acronym": "PERI", + "name": "Perirhinal area", + "color_hex_triplet": "0E9684", + "graph_order": 367, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 540, + "atlas_id": 1057, + "ontology_id": 1, + "acronym": "PERI1", + "name": "Perirhinal area, layer 1", + "color_hex_triplet": "0E9684", + "graph_order": 368, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + }, + { + "id": 888, + "atlas_id": 959, + "ontology_id": 1, + "acronym": "PERI2/3", + "name": "Perirhinal area, layer 2/3", + "color_hex_triplet": "0E9684", + "graph_order": 369, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [ + { + "id": 3132124329, + "atlas_id": 959, + "ontology_id": 1, + "acronym": "PERI2", + "name": "Perirhinal area, layer 2", + "color_hex_triplet": "0E9684", + "graph_order": 369, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 888, + "children": [] + }, + { + "id": 2668242174, + "atlas_id": 959, + "ontology_id": 1, + "acronym": "PERI3", + "name": "Perirhinal area, layer 3", + "color_hex_triplet": "0E9684", + "graph_order": 369, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 888, + "children": [] + } + ] + }, + { + "id": 692, + "atlas_id": 1076, + "ontology_id": 1, + "acronym": "PERI5", + "name": "Perirhinal area, layer 5", + "color_hex_triplet": "0E9684", + "graph_order": 370, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + }, + { + "id": 335, + "atlas_id": 890, + "ontology_id": 1, + "acronym": "PERI6a", + "name": "Perirhinal area, layer 6a", + "color_hex_triplet": "0E9684", + "graph_order": 371, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + }, + { + "id": 368, + "atlas_id": 894, + "ontology_id": 1, + "acronym": "PERI6b", + "name": "Perirhinal area, layer 6b", + "color_hex_triplet": "0E9684", + "graph_order": 372, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 922, + "children": [] + } + ] + }, + { + "id": 895, + "atlas_id": 111, + "ontology_id": 1, + "acronym": "ECT", + "name": "Ectorhinal area", + "color_hex_triplet": "0D9F91", + "graph_order": 373, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 315, + "children": [ + { + "id": 836, + "atlas_id": 1094, + "ontology_id": 1, + "acronym": "ECT1", + "name": "Ectorhinal area, layer 1", + "color_hex_triplet": "0D9F91", + "graph_order": 374, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + }, + { + "id": 427, + "atlas_id": 1043, + "ontology_id": 1, + "acronym": "ECT2/3", + "name": "Ectorhinal area, layer 2/3", + "color_hex_triplet": "0D9F91", + "graph_order": 375, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [ + { + "id": 2218254883, + "atlas_id": 1043, + "ontology_id": 1, + "acronym": "ECT2", + "name": "Ectorhinal area, layer 2", + "color_hex_triplet": "0D9F91", + "graph_order": 375, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 427, + "children": [] + }, + { + "id": 3516629919, + "atlas_id": 1043, + "ontology_id": 1, + "acronym": "ECT3", + "name": "Ectorhinal area, layer 3", + "color_hex_triplet": "0D9F91", + "graph_order": 375, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 427, + "children": [] + } + ] + }, + { + "id": 988, + "atlas_id": 1113, + "ontology_id": 1, + "acronym": "ECT5", + "name": "Ectorhinal area, layer 5", + "color_hex_triplet": "0D9F91", + "graph_order": 376, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + }, + { + "id": 977, + "atlas_id": 1112, + "ontology_id": 1, + "acronym": "ECT6a", + "name": "Ectorhinal area, layer 6a", + "color_hex_triplet": "0D9F91", + "graph_order": 377, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + }, + { + "id": 1045, + "atlas_id": 1120, + "ontology_id": 1, + "acronym": "ECT6b", + "name": "Ectorhinal area, layer 6b", + "color_hex_triplet": "0D9F91", + "graph_order": 378, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 895, + "children": [] + } + ] + } + ] + }, + { + "id": 698, + "atlas_id": 228, + "ontology_id": 1, + "acronym": "OLF", + "name": "Olfactory areas", + "color_hex_triplet": "9AD2BD", + "graph_order": 379, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 695, + "children": [ + { + "id": 507, + "atlas_id": 204, + "ontology_id": 1, + "acronym": "MOB", + "name": "Main olfactory bulb", + "color_hex_triplet": "9AD2BD", + "graph_order": 380, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 212, + "atlas_id": 733, + "ontology_id": 1, + "acronym": "MOBgl", + "name": "Main olfactory bulb, glomerular layer", + "color_hex_triplet": "82C7AE", + "graph_order": 381, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 220, + "atlas_id": 734, + "ontology_id": 1, + "acronym": "MOBgr", + "name": "Main olfactory bulb, granule layer", + "color_hex_triplet": "82C7AE", + "graph_order": 382, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 228, + "atlas_id": 735, + "ontology_id": 1, + "acronym": "MOBipl", + "name": "Main olfactory bulb, inner plexiform layer", + "color_hex_triplet": "9AD2BD", + "graph_order": 383, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 236, + "atlas_id": 736, + "ontology_id": 1, + "acronym": "MOBmi", + "name": "Main olfactory bulb, mitral layer", + "color_hex_triplet": "82C7AE", + "graph_order": 384, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 244, + "atlas_id": 737, + "ontology_id": 1, + "acronym": "MOBopl", + "name": "Main olfactory bulb, outer plexiform layer", + "color_hex_triplet": "9AD2BD", + "graph_order": 385, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 507, + "children": [] + }, + { + "id": 2358040414, + "acronym": "MOB_O", + "name": "Main olfactory bulb: Other", + "parent_structure_id": 507, + "color_hex_triplet": "9AD2BD", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 151, + "atlas_id": 18, + "ontology_id": 1, + "acronym": "AOB", + "name": "Accessory olfactory bulb", + "color_hex_triplet": "9DF0D2", + "graph_order": 386, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 188, + "atlas_id": 730, + "ontology_id": 1, + "acronym": "AOBgl", + "name": "Accessory olfactory bulb, glomerular layer", + "color_hex_triplet": "9DF0D2", + "graph_order": 387, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 151, + "children": [] + }, + { + "id": 196, + "atlas_id": 731, + "ontology_id": 1, + "acronym": "AOBgr", + "name": "Accessory olfactory bulb, granular layer", + "color_hex_triplet": "95E4C8", + "graph_order": 388, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 151, + "children": [] + }, + { + "id": 204, + "atlas_id": 732, + "ontology_id": 1, + "acronym": "AOBmi", + "name": "Accessory olfactory bulb, mitral layer", + "color_hex_triplet": "9DF0D2", + "graph_order": 389, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 151, + "children": [] + } + ] + }, + { + "id": 159, + "atlas_id": 19, + "ontology_id": 1, + "acronym": "AON", + "name": "Anterior olfactory nucleus", + "color_hex_triplet": "54BF94", + "graph_order": 390, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 167, + "atlas_id": 20, + "ontology_id": 1, + "acronym": "AONd", + "name": "Anterior olfactory nucleus, dorsal part", + "color_hex_triplet": "54BF94", + "graph_order": 391, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 175, + "atlas_id": 21, + "ontology_id": 1, + "acronym": "AONe", + "name": "Anterior olfactory nucleus, external part", + "color_hex_triplet": "54BF94", + "graph_order": 392, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 183, + "atlas_id": 22, + "ontology_id": 1, + "acronym": "AONl", + "name": "Anterior olfactory nucleus, lateral part", + "color_hex_triplet": "54BF94", + "graph_order": 393, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 191, + "atlas_id": 23, + "ontology_id": 1, + "acronym": "AONm", + "name": "Anterior olfactory nucleus, medial part", + "color_hex_triplet": "54BF94", + "graph_order": 394, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 199, + "atlas_id": 24, + "ontology_id": 1, + "acronym": "AONpv", + "name": "Anterior olfactory nucleus, posteroventral part", + "color_hex_triplet": "54BF94", + "graph_order": 395, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 160, + "atlas_id": 868, + "ontology_id": 1, + "acronym": "AON1", + "name": "Anterior olfactory nucleus, layer 1", + "color_hex_triplet": "54BF94", + "graph_order": 396, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 168, + "atlas_id": 869, + "ontology_id": 1, + "acronym": "AON2", + "name": "Anterior olfactory nucleus, layer 2", + "color_hex_triplet": "54BF94", + "graph_order": 397, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 159, + "children": [] + }, + { + "id": 2561915647, + "acronym": "AON_O", + "name": "Anterior olfactory nucleus: Other", + "parent_structure_id": 159, + "color_hex_triplet": "54BF94", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 589, + "atlas_id": 356, + "ontology_id": 1, + "acronym": "TT", + "name": "Taenia tecta", + "color_hex_triplet": "62D09F", + "graph_order": 398, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 597, + "atlas_id": 357, + "ontology_id": 1, + "acronym": "TTd", + "name": "Taenia tecta, dorsal part", + "color_hex_triplet": "62D09F", + "graph_order": 399, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 589, + "children": [ + { + "id": 297, + "atlas_id": 744, + "ontology_id": 1, + "acronym": "TTd1-4", + "name": "Taenia tecta, dorsal part, layers 1-4", + "color_hex_triplet": "62D09F", + "graph_order": 400, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 1034, + "atlas_id": 836, + "ontology_id": 1, + "acronym": "TTd1", + "name": "Taenia tecta, dorsal part, layer 1", + "color_hex_triplet": "62D09F", + "graph_order": 401, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 1042, + "atlas_id": 837, + "ontology_id": 1, + "acronym": "TTd2", + "name": "Taenia tecta, dorsal part, layer 2", + "color_hex_triplet": "62D09F", + "graph_order": 402, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 1050, + "atlas_id": 838, + "ontology_id": 1, + "acronym": "TTd3", + "name": "Taenia tecta, dorsal part, layer 3", + "color_hex_triplet": "62D09F", + "graph_order": 403, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 1059, + "atlas_id": 839, + "ontology_id": 1, + "acronym": "TTd4", + "name": "Taenia tecta, dorsal part, layer 4", + "color_hex_triplet": "62D09F", + "graph_order": 404, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 597, + "children": [] + }, + { + "id": 3389528505, + "acronym": "TTd_O", + "name": "Taenia tecta, dorsal part: Other", + "parent_structure_id": 597, + "color_hex_triplet": "62D09F", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 605, + "atlas_id": 358, + "ontology_id": 1, + "acronym": "TTv", + "name": "Taenia tecta, ventral part", + "color_hex_triplet": "62D09F", + "graph_order": 405, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 589, + "children": [ + { + "id": 306, + "atlas_id": 745, + "ontology_id": 1, + "acronym": "TTv1-3", + "name": "Taenia tecta, ventral part, layers 1-3", + "color_hex_triplet": "62D09F", + "graph_order": 406, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 605, + "children": [] + }, + { + "id": 1067, + "atlas_id": 840, + "ontology_id": 1, + "acronym": "TTv1", + "name": "Taenia tecta, ventral part, layer 1", + "color_hex_triplet": "62D09F", + "graph_order": 407, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 605, + "children": [] + }, + { + "id": 1075, + "atlas_id": 841, + "ontology_id": 1, + "acronym": "TTv2", + "name": "Taenia tecta, ventral part, layer 2", + "color_hex_triplet": "62D09F", + "graph_order": 408, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 605, + "children": [] + }, + { + "id": 1082, + "atlas_id": 842, + "ontology_id": 1, + "acronym": "TTv3", + "name": "Taenia tecta, ventral part, layer 3", + "color_hex_triplet": "62D09F", + "graph_order": 409, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 605, + "children": [] + }, + { + "id": 1860102496, + "acronym": "TTv_O", + "name": "Taenia tecta, ventral part: Other", + "parent_structure_id": 605, + "color_hex_triplet": "62D09F", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 814, + "atlas_id": 384, + "ontology_id": 1, + "acronym": "DP", + "name": "Dorsal peduncular area", + "color_hex_triplet": "A4DAA4", + "graph_order": 410, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 496, + "atlas_id": 627, + "ontology_id": 1, + "acronym": "DP1", + "name": "Dorsal peduncular area, layer 1", + "color_hex_triplet": "A4DAA4", + "graph_order": 411, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 535, + "atlas_id": 632, + "ontology_id": 1, + "acronym": "DP2", + "name": "Dorsal peduncular area, layer 2", + "color_hex_triplet": "A4DAA4", + "graph_order": 412, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 360, + "atlas_id": 893, + "ontology_id": 1, + "acronym": "DP2/3", + "name": "Dorsal peduncular area, layer 2/3", + "color_hex_triplet": "A4DAA4", + "graph_order": 413, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 646, + "atlas_id": 646, + "ontology_id": 1, + "acronym": "DP5", + "name": "Dorsal peduncular area, layer 5", + "color_hex_triplet": "A4DAA4", + "graph_order": 414, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 267, + "atlas_id": 1023, + "ontology_id": 1, + "acronym": "DP6a", + "name": "Dorsal peduncular area, layer 6a", + "color_hex_triplet": "A4DAA4", + "graph_order": 415, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 814, + "children": [] + }, + { + "id": 1953921139, + "acronym": "DP_O", + "name": "Dorsal peduncular area: Other", + "parent_structure_id": 814, + "color_hex_triplet": "A4DAA4", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 961, + "atlas_id": 261, + "ontology_id": 1, + "acronym": "PIR", + "name": "Piriform area", + "color_hex_triplet": "6ACBBA", + "graph_order": 416, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 152, + "atlas_id": 867, + "ontology_id": 1, + "acronym": "PIR1-3", + "name": "Piriform area, layers 1-3", + "color_hex_triplet": "6ACBBA", + "graph_order": 417, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 961, + "children": [] + }, + { + "id": 276, + "atlas_id": 741, + "ontology_id": 1, + "acronym": "PIR1", + "name": "Piriform area, molecular layer", + "color_hex_triplet": "6ACBBA", + "graph_order": 418, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 961, + "children": [] + }, + { + "id": 284, + "atlas_id": 742, + "ontology_id": 1, + "acronym": "PIR2", + "name": "Piriform area, pyramidal layer", + "color_hex_triplet": "6ACBBA", + "graph_order": 419, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 961, + "children": [] + }, + { + "id": 291, + "atlas_id": 743, + "ontology_id": 1, + "acronym": "PIR3", + "name": "Piriform area, polymorph layer", + "color_hex_triplet": "6ACBBA", + "graph_order": 420, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 961, + "children": [] + }, + { + "id": 1668688439, + "acronym": "PIR_O", + "name": "Piriform area: Other", + "parent_structure_id": 961, + "color_hex_triplet": "6ACBBA", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 619, + "atlas_id": 218, + "ontology_id": 1, + "acronym": "NLOT", + "name": "Nucleus of the lateral olfactory tract", + "color_hex_triplet": "95E4C8", + "graph_order": 421, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 392, + "atlas_id": 897, + "ontology_id": 1, + "acronym": "NLOT1-3", + "name": "Nucleus of the lateral olfactory tract, layers 1-3", + "color_hex_triplet": "95E4C8", + "graph_order": 422, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 619, + "children": [] + }, + { + "id": 260, + "atlas_id": 739, + "ontology_id": 1, + "acronym": "NLOT1", + "name": "Nucleus of the lateral olfactory tract, molecular layer", + "color_hex_triplet": "95E4C8", + "graph_order": 423, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 619, + "children": [] + }, + { + "id": 268, + "atlas_id": 740, + "ontology_id": 1, + "acronym": "NLOT2", + "name": "Nucleus of the lateral olfactory tract, pyramidal layer", + "color_hex_triplet": "95E4C8", + "graph_order": 424, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 619, + "children": [] + }, + { + "id": 1139, + "atlas_id": 1137, + "ontology_id": 1, + "acronym": "NLOT3", + "name": "Nucleus of the lateral olfactory tract, layer 3", + "color_hex_triplet": "95E4C8", + "graph_order": 425, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 619, + "children": [] + } + ] + }, + { + "id": 631, + "atlas_id": 78, + "ontology_id": 1, + "acronym": "COA", + "name": "Cortical amygdalar area", + "color_hex_triplet": "61E7B7", + "graph_order": 426, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 639, + "atlas_id": 79, + "ontology_id": 1, + "acronym": "COAa", + "name": "Cortical amygdalar area, anterior part", + "color_hex_triplet": "61E7B7", + "graph_order": 427, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 631, + "children": [ + { + "id": 192, + "atlas_id": 872, + "ontology_id": 1, + "acronym": "COAa1", + "name": "Cortical amygdalar area, anterior part, layer 1", + "color_hex_triplet": "61E7B7", + "graph_order": 428, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 639, + "children": [] + }, + { + "id": 200, + "atlas_id": 873, + "ontology_id": 1, + "acronym": "COAa2", + "name": "Cortical amygdalar area, anterior part, layer 2", + "color_hex_triplet": "61E7B7", + "graph_order": 429, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 639, + "children": [] + }, + { + "id": 208, + "atlas_id": 874, + "ontology_id": 1, + "acronym": "COAa3", + "name": "Cortical amygdalar area, anterior part, layer 3", + "color_hex_triplet": "61E7B7", + "graph_order": 430, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 639, + "children": [] + }, + { + "id": 1466095084, + "acronym": "COAa_O", + "name": "Cortical amygdalar area, anterior part: Other", + "parent_structure_id": 639, + "color_hex_triplet": "61E7B7", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 647, + "atlas_id": 80, + "ontology_id": 1, + "acronym": "COAp", + "name": "Cortical amygdalar area, posterior part", + "color_hex_triplet": "61E7B7", + "graph_order": 431, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 631, + "children": [ + { + "id": 655, + "atlas_id": 81, + "ontology_id": 1, + "acronym": "COApl", + "name": "Cortical amygdalar area, posterior part, lateral zone", + "color_hex_triplet": "61E7B7", + "graph_order": 432, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 647, + "children": [ + { + "id": 584, + "atlas_id": 921, + "ontology_id": 1, + "acronym": "COApl1-2", + "name": "Cortical amygdalar area, posterior part, lateral zone, layers 1-2", + "color_hex_triplet": "61E7B7", + "graph_order": 433, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 376, + "atlas_id": 895, + "ontology_id": 1, + "acronym": "COApl1-3", + "name": "Cortical amygdalar area, posterior part, lateral zone, layers 1-3", + "color_hex_triplet": "61E7B7", + "graph_order": 434, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 216, + "atlas_id": 875, + "ontology_id": 1, + "acronym": "COApl1", + "name": "Cortical amygdalar area, posterior part, lateral zone, layer 1", + "color_hex_triplet": "61E7B7", + "graph_order": 435, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 224, + "atlas_id": 876, + "ontology_id": 1, + "acronym": "COApl2", + "name": "Cortical amygdalar area, posterior part, lateral zone, layer 2", + "color_hex_triplet": "61E7B7", + "graph_order": 436, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 232, + "atlas_id": 877, + "ontology_id": 1, + "acronym": "COApl3", + "name": "Cortical amygdalar area, posterior part, lateral zone, layer 3", + "color_hex_triplet": "61E7B7", + "graph_order": 437, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 655, + "children": [] + }, + { + "id": 1992072790, + "acronym": "COApl_O", + "name": "Cortical amygdalar area, posterior part, lateral zone: Other", + "parent_structure_id": 655, + "color_hex_triplet": "61E7B7", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 663, + "atlas_id": 82, + "ontology_id": 1, + "acronym": "COApm", + "name": "Cortical amygdalar area, posterior part, medial zone", + "color_hex_triplet": "61E7B7", + "graph_order": 438, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 647, + "children": [ + { + "id": 592, + "atlas_id": 922, + "ontology_id": 1, + "acronym": "COApm1-2", + "name": "Cortical amygdalar area, posterior part, medial zone, layers 1-2", + "color_hex_triplet": "61E7B7", + "graph_order": 439, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 383, + "atlas_id": 896, + "ontology_id": 1, + "acronym": "COApm1-3", + "name": "Cortical amygdalar area, posterior part, medial zone, layers 1-3", + "color_hex_triplet": "61E7B7", + "graph_order": 440, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 240, + "atlas_id": 878, + "ontology_id": 1, + "acronym": "COApm1", + "name": "Cortical amygdalar area, posterior part, medial zone, layer 1", + "color_hex_triplet": "61E7B7", + "graph_order": 441, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 248, + "atlas_id": 879, + "ontology_id": 1, + "acronym": "COApm2", + "name": "Cortical amygdalar area, posterior part, medial zone, layer 2", + "color_hex_triplet": "61E7B7", + "graph_order": 442, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 256, + "atlas_id": 880, + "ontology_id": 1, + "acronym": "COApm3", + "name": "Cortical amygdalar area, posterior part, medial zone, layer 3", + "color_hex_triplet": "61E7B7", + "graph_order": 443, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 663, + "children": [] + }, + { + "id": 1375046773, + "acronym": "COApm_O", + "name": "Cortical amygdalar area, posterior part, medial zone: Other", + "parent_structure_id": 663, + "color_hex_triplet": "61E7B7", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 788, + "atlas_id": 239, + "ontology_id": 1, + "acronym": "PAA", + "name": "Piriform-amygdalar area", + "color_hex_triplet": "59DAAB", + "graph_order": 444, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 400, + "atlas_id": 898, + "ontology_id": 1, + "acronym": "PAA1-3", + "name": "Piriform-amygdalar area, layers 1-3", + "color_hex_triplet": "59DAAB", + "graph_order": 445, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 788, + "children": [] + }, + { + "id": 408, + "atlas_id": 899, + "ontology_id": 1, + "acronym": "PAA1", + "name": "Piriform-amygdalar area, molecular layer", + "color_hex_triplet": "59DAAB", + "graph_order": 446, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 788, + "children": [] + }, + { + "id": 416, + "atlas_id": 900, + "ontology_id": 1, + "acronym": "PAA2", + "name": "Piriform-amygdalar area, pyramidal layer", + "color_hex_triplet": "59DAAB", + "graph_order": 447, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 788, + "children": [] + }, + { + "id": 424, + "atlas_id": 901, + "ontology_id": 1, + "acronym": "PAA3", + "name": "Piriform-amygdalar area, polymorph layer", + "color_hex_triplet": "59DAAB", + "graph_order": 448, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 788, + "children": [] + }, + { + "id": 1203939479, + "acronym": "PAA_O", + "name": "Piriform-amygdalar area: Other", + "parent_structure_id": 788, + "color_hex_triplet": "59DAAB", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 566, + "atlas_id": 353, + "ontology_id": 1, + "acronym": "TR", + "name": "Postpiriform transition area", + "color_hex_triplet": "A8ECD3", + "graph_order": 449, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 698, + "children": [ + { + "id": 517, + "atlas_id": 913, + "ontology_id": 1, + "acronym": "TR1-3", + "name": "Postpiriform transition area, layers 1-3", + "color_hex_triplet": "A8ECD3", + "graph_order": 450, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 566, + "children": [] + }, + { + "id": 1140, + "atlas_id": 1138, + "ontology_id": 1, + "acronym": "TR1", + "name": "Postpiriform transition area, layers 1", + "color_hex_triplet": "A8ECD3", + "graph_order": 451, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 566, + "children": [] + }, + { + "id": 1141, + "atlas_id": 1139, + "ontology_id": 1, + "acronym": "TR2", + "name": "Postpiriform transition area, layers 2", + "color_hex_triplet": "A8ECD3", + "graph_order": 452, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 566, + "children": [] + }, + { + "id": 1142, + "atlas_id": 1140, + "ontology_id": 1, + "acronym": "TR3", + "name": "Postpiriform transition area, layers 3", + "color_hex_triplet": "A8ECD3", + "graph_order": 453, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 566, + "children": [] + }, + { + "id": 1209357605, + "acronym": "TR_O", + "name": "Postpiriform transition area: Other", + "parent_structure_id": 566, + "color_hex_triplet": "A8ECD3", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 1024543562, + "acronym": "OLF_O", + "name": "Olfactory areas: Other", + "parent_structure_id": 698, + "color_hex_triplet": "9AD2BD", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 1089, + "atlas_id": 135, + "ontology_id": 1, + "acronym": "HPF", + "name": "Hippocampal formation", + "color_hex_triplet": "7ED04B", + "graph_order": 454, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 695, + "children": [ + { + "id": 1080, + "atlas_id": 134, + "ontology_id": 1, + "acronym": "HIP", + "name": "Hippocampal region", + "color_hex_triplet": "7ED04B", + "graph_order": 455, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1089, + "children": [ + { + "id": 375, + "atlas_id": 46, + "ontology_id": 1, + "acronym": "CA", + "name": "Ammon's horn", + "color_hex_triplet": "7ED04B", + "graph_order": 456, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1080, + "children": [ + { + "id": 382, + "atlas_id": 47, + "ontology_id": 1, + "acronym": "CA1", + "name": "Field CA1", + "color_hex_triplet": "7ED04B", + "graph_order": 457, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 375, + "children": [ + { + "id": 391, + "atlas_id": 48, + "ontology_id": 1, + "acronym": "CA1slm", + "name": "Field CA1, stratum lacunosum-moleculare", + "color_hex_triplet": "7ED04B", + "graph_order": 458, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 382, + "children": [] + }, + { + "id": 399, + "atlas_id": 49, + "ontology_id": 1, + "acronym": "CA1so", + "name": "Field CA1, stratum oriens", + "color_hex_triplet": "7ED04B", + "graph_order": 459, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 382, + "children": [] + }, + { + "id": 407, + "atlas_id": 50, + "ontology_id": 1, + "acronym": "CA1sp", + "name": "Field CA1, pyramidal layer", + "color_hex_triplet": "66A83D", + "graph_order": 460, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 382, + "children": [] + }, + { + "id": 415, + "atlas_id": 51, + "ontology_id": 1, + "acronym": "CA1sr", + "name": "Field CA1, stratum radiatum", + "color_hex_triplet": "7ED04B", + "graph_order": 461, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 382, + "children": [] + } + ] + }, + { + "id": 423, + "atlas_id": 52, + "ontology_id": 1, + "acronym": "CA2", + "name": "Field CA2", + "color_hex_triplet": "7ED04B", + "graph_order": 462, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 375, + "children": [ + { + "id": 431, + "atlas_id": 53, + "ontology_id": 1, + "acronym": "CA2slm", + "name": "Field CA2, stratum lacunosum-moleculare", + "color_hex_triplet": "7ED04B", + "graph_order": 463, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 423, + "children": [] + }, + { + "id": 438, + "atlas_id": 54, + "ontology_id": 1, + "acronym": "CA2so", + "name": "Field CA2, stratum oriens", + "color_hex_triplet": "7ED04B", + "graph_order": 464, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 423, + "children": [] + }, + { + "id": 446, + "atlas_id": 55, + "ontology_id": 1, + "acronym": "CA2sp", + "name": "Field CA2, pyramidal layer", + "color_hex_triplet": "66A83D", + "graph_order": 465, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 423, + "children": [] + }, + { + "id": 454, + "atlas_id": 56, + "ontology_id": 1, + "acronym": "CA2sr", + "name": "Field CA2, stratum radiatum", + "color_hex_triplet": "7ED04B", + "graph_order": 466, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 423, + "children": [] + } + ] + }, + { + "id": 463, + "atlas_id": 57, + "ontology_id": 1, + "acronym": "CA3", + "name": "Field CA3", + "color_hex_triplet": "7ED04B", + "graph_order": 467, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 375, + "children": [ + { + "id": 471, + "atlas_id": 58, + "ontology_id": 1, + "acronym": "CA3slm", + "name": "Field CA3, stratum lacunosum-moleculare", + "color_hex_triplet": "7ED04B", + "graph_order": 468, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + }, + { + "id": 479, + "atlas_id": 59, + "ontology_id": 1, + "acronym": "CA3slu", + "name": "Field CA3, stratum lucidum", + "color_hex_triplet": "7ED04B", + "graph_order": 469, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + }, + { + "id": 486, + "atlas_id": 60, + "ontology_id": 1, + "acronym": "CA3so", + "name": "Field CA3, stratum oriens", + "color_hex_triplet": "7ED04B", + "graph_order": 470, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + }, + { + "id": 495, + "atlas_id": 61, + "ontology_id": 1, + "acronym": "CA3sp", + "name": "Field CA3, pyramidal layer", + "color_hex_triplet": "66A83D", + "graph_order": 471, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + }, + { + "id": 504, + "atlas_id": 62, + "ontology_id": 1, + "acronym": "CA3sr", + "name": "Field CA3, stratum radiatum", + "color_hex_triplet": "7ED04B", + "graph_order": 472, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 463, + "children": [] + } + ] + } + ] + }, + { + "id": 726, + "atlas_id": 90, + "ontology_id": 1, + "acronym": "DG", + "name": "Dentate gyrus", + "color_hex_triplet": "7ED04B", + "graph_order": 473, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1080, + "children": [ + { + "id": 10703, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DG-mo", + "name": "Dentate gyrus, molecular layer", + "color_hex_triplet": "7ED04B", + "graph_order": 474, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [] + }, + { + "id": 10704, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DG-po", + "name": "Dentate gyrus, polymorph layer", + "color_hex_triplet": "7ED04B", + "graph_order": 475, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [] + }, + { + "id": 632, + "atlas_id": 927, + "ontology_id": 1, + "acronym": "DG-sg", + "name": "Dentate gyrus, granule cell layer", + "color_hex_triplet": "66A83D", + "graph_order": 476, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [] + }, + { + "id": 10702, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DG-sgz", + "name": "Dentate gyrus, subgranular zone", + "color_hex_triplet": "7ED04B", + "graph_order": 477, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [] + }, + { + "id": 734, + "atlas_id": 91, + "ontology_id": 1, + "acronym": "DGcr", + "name": "Dentate gyrus crest", + "color_hex_triplet": "7ED04B", + "graph_order": 478, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [ + { + "id": 742, + "atlas_id": 92, + "ontology_id": 1, + "acronym": "DGcr-mo", + "name": "Dentate gyrus crest, molecular layer", + "color_hex_triplet": "7ED04B", + "graph_order": 479, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 734, + "children": [] + }, + { + "id": 751, + "atlas_id": 93, + "ontology_id": 1, + "acronym": "DGcr-po", + "name": "Dentate gyrus crest, polymorph layer", + "color_hex_triplet": "7ED04B", + "graph_order": 480, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 734, + "children": [] + }, + { + "id": 758, + "atlas_id": 94, + "ontology_id": 1, + "acronym": "DGcr-sg", + "name": "Dentate gyrus crest, granule cell layer", + "color_hex_triplet": "7ED04B", + "graph_order": 481, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 734, + "children": [] + } + ] + }, + { + "id": 766, + "atlas_id": 95, + "ontology_id": 1, + "acronym": "DGlb", + "name": "Dentate gyrus lateral blade", + "color_hex_triplet": "7ED04B", + "graph_order": 482, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [ + { + "id": 775, + "atlas_id": 96, + "ontology_id": 1, + "acronym": "DGlb-mo", + "name": "Dentate gyrus lateral blade, molecular layer", + "color_hex_triplet": "7ED04B", + "graph_order": 483, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 766, + "children": [] + }, + { + "id": 782, + "atlas_id": 97, + "ontology_id": 1, + "acronym": "DGlb-po", + "name": "Dentate gyrus lateral blade, polymorph layer", + "color_hex_triplet": "7ED04B", + "graph_order": 484, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 766, + "children": [] + }, + { + "id": 790, + "atlas_id": 98, + "ontology_id": 1, + "acronym": "DGlb-sg", + "name": "Dentate gyrus lateral blade, granule cell layer", + "color_hex_triplet": "7ED04B", + "graph_order": 485, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 766, + "children": [] + } + ] + }, + { + "id": 799, + "atlas_id": 99, + "ontology_id": 1, + "acronym": "DGmb", + "name": "Dentate gyrus medial blade", + "color_hex_triplet": "7ED04B", + "graph_order": 486, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 726, + "children": [ + { + "id": 807, + "atlas_id": 100, + "ontology_id": 1, + "acronym": "DGmb-mo", + "name": "Dentate gyrus medial blade, molecular layer", + "color_hex_triplet": "7ED04B", + "graph_order": 487, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 799, + "children": [] + }, + { + "id": 815, + "atlas_id": 101, + "ontology_id": 1, + "acronym": "DGmb-po", + "name": "Dentate gyrus medial blade, polymorph layer", + "color_hex_triplet": "7ED04B", + "graph_order": 488, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 799, + "children": [] + }, + { + "id": 823, + "atlas_id": 102, + "ontology_id": 1, + "acronym": "DGmb-sg", + "name": "Dentate gyrus medial blade, granule cell layer", + "color_hex_triplet": "7ED04B", + "graph_order": 489, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 799, + "children": [] + } + ] + } + ] + }, + { + "id": 982, + "atlas_id": 122, + "ontology_id": 1, + "acronym": "FC", + "name": "Fasciola cinerea", + "color_hex_triplet": "7ED04B", + "graph_order": 490, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1080, + "children": [] + }, + { + "id": 19, + "atlas_id": 143, + "ontology_id": 1, + "acronym": "IG", + "name": "Induseum griseum", + "color_hex_triplet": "7ED04B", + "graph_order": 491, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1080, + "children": [] + } + ] + }, + { + "id": 822, + "atlas_id": 385, + "ontology_id": 1, + "acronym": "RHP", + "name": "Retrohippocampal region", + "color_hex_triplet": "32B825", + "graph_order": 492, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1089, + "children": [ + { + "id": 909, + "atlas_id": 113, + "ontology_id": 1, + "acronym": "ENT", + "name": "Entorhinal area", + "color_hex_triplet": "32B825", + "graph_order": 493, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 918, + "atlas_id": 114, + "ontology_id": 1, + "acronym": "ENTl", + "name": "Entorhinal area, lateral part", + "color_hex_triplet": "32B825", + "graph_order": 494, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 909, + "children": [ + { + "id": 1121, + "atlas_id": 988, + "ontology_id": 1, + "acronym": "ENTl1", + "name": "Entorhinal area, lateral part, layer 1", + "color_hex_triplet": "32B825", + "graph_order": 495, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 20, + "atlas_id": 992, + "ontology_id": 1, + "acronym": "ENTl2", + "name": "Entorhinal area, lateral part, layer 2", + "color_hex_triplet": "32B825", + "graph_order": 496, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 999, + "atlas_id": 973, + "ontology_id": 1, + "acronym": "ENTl2/3", + "name": "Entorhinal area, lateral part, layer 2/3", + "color_hex_triplet": "32B825", + "graph_order": 497, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 715, + "atlas_id": 1079, + "ontology_id": 1, + "acronym": "ENTl2a", + "name": "Entorhinal area, lateral part, layer 2a", + "color_hex_triplet": "32B825", + "graph_order": 498, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 764, + "atlas_id": 1085, + "ontology_id": 1, + "acronym": "ENTl2b", + "name": "Entorhinal area, lateral part, layer 2b", + "color_hex_triplet": "32B825", + "graph_order": 499, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 52, + "atlas_id": 996, + "ontology_id": 1, + "acronym": "ENTl3", + "name": "Entorhinal area, lateral part, layer 3", + "color_hex_triplet": "32B825", + "graph_order": 500, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 92, + "atlas_id": 1001, + "ontology_id": 1, + "acronym": "ENTl4", + "name": "Entorhinal area, lateral part, layer 4", + "color_hex_triplet": "32B825", + "graph_order": 501, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 312, + "atlas_id": 887, + "ontology_id": 1, + "acronym": "ENTl4/5", + "name": "Entorhinal area, lateral part, layer 4/5", + "color_hex_triplet": "32B825", + "graph_order": 502, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 139, + "atlas_id": 1007, + "ontology_id": 1, + "acronym": "ENTl5", + "name": "Entorhinal area, lateral part, layer 5", + "color_hex_triplet": "32B825", + "graph_order": 503, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 387, + "atlas_id": 1038, + "ontology_id": 1, + "acronym": "ENTl5/6", + "name": "Entorhinal area, lateral part, layer 5/6", + "color_hex_triplet": "32B825", + "graph_order": 504, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 28, + "atlas_id": 993, + "ontology_id": 1, + "acronym": "ENTl6a", + "name": "Entorhinal area, lateral part, layer 6a", + "color_hex_triplet": "32B825", + "graph_order": 505, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + }, + { + "id": 60, + "atlas_id": 997, + "ontology_id": 1, + "acronym": "ENTl6b", + "name": "Entorhinal area, lateral part, layer 6b", + "color_hex_triplet": "32B825", + "graph_order": 506, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 918, + "children": [] + } + ] + }, + { + "id": 926, + "atlas_id": 115, + "ontology_id": 1, + "acronym": "ENTm", + "name": "Entorhinal area, medial part, dorsal zone", + "color_hex_triplet": "32B825", + "graph_order": 507, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 909, + "children": [ + { + "id": 526, + "atlas_id": 914, + "ontology_id": 1, + "acronym": "ENTm1", + "name": "Entorhinal area, medial part, dorsal zone, layer 1", + "color_hex_triplet": "32B825", + "graph_order": 508, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 543, + "atlas_id": 916, + "ontology_id": 1, + "acronym": "ENTm2", + "name": "Entorhinal area, medial part, dorsal zone, layer 2", + "color_hex_triplet": "32B825", + "graph_order": 509, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 468, + "atlas_id": 1048, + "ontology_id": 1, + "acronym": "ENTm2a", + "name": "Entorhinal area, medial part, dorsal zone, layer 2a", + "color_hex_triplet": "32B825", + "graph_order": 510, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 508, + "atlas_id": 1053, + "ontology_id": 1, + "acronym": "ENTm2b", + "name": "Entorhinal area, medial part, dorsal zone, layer 2b", + "color_hex_triplet": "32B825", + "graph_order": 511, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 664, + "atlas_id": 931, + "ontology_id": 1, + "acronym": "ENTm3", + "name": "Entorhinal area, medial part, dorsal zone, layer 3", + "color_hex_triplet": "32B825", + "graph_order": 512, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 712, + "atlas_id": 937, + "ontology_id": 1, + "acronym": "ENTm4", + "name": "Entorhinal area, medial part, dorsal zone, layer 4", + "color_hex_triplet": "32B825", + "graph_order": 513, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 727, + "atlas_id": 939, + "ontology_id": 1, + "acronym": "ENTm5", + "name": "Entorhinal area, medial part, dorsal zone, layer 5", + "color_hex_triplet": "32B825", + "graph_order": 514, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 550, + "atlas_id": 634, + "ontology_id": 1, + "acronym": "ENTm5/6", + "name": "Entorhinal area, medial part, dorsal zone, layer 5/6", + "color_hex_triplet": "32B825", + "graph_order": 515, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + }, + { + "id": 743, + "atlas_id": 941, + "ontology_id": 1, + "acronym": "ENTm6", + "name": "Entorhinal area, medial part, dorsal zone, layer 6", + "color_hex_triplet": "32B825", + "graph_order": 516, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 926, + "children": [] + } + ] + }, + { + "id": 934, + "atlas_id": 116, + "ontology_id": 1, + "acronym": "ENTmv", + "name": "Entorhinal area, medial part, ventral zone", + "color_hex_triplet": "32B825", + "graph_order": 517, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 909, + "children": [ + { + "id": 259, + "atlas_id": 1022, + "ontology_id": 1, + "acronym": "ENTmv1", + "name": "Entorhinal area, medial part, ventral zone, layer 1", + "color_hex_triplet": "32B825", + "graph_order": 518, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + }, + { + "id": 324, + "atlas_id": 1030, + "ontology_id": 1, + "acronym": "ENTmv2", + "name": "Entorhinal area, medial part, ventral zone, layer 2", + "color_hex_triplet": "32B825", + "graph_order": 519, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + }, + { + "id": 371, + "atlas_id": 1036, + "ontology_id": 1, + "acronym": "ENTmv3", + "name": "Entorhinal area, medial part, ventral zone, layer 3", + "color_hex_triplet": "32B825", + "graph_order": 520, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + }, + { + "id": 419, + "atlas_id": 1042, + "ontology_id": 1, + "acronym": "ENTmv4", + "name": "Entorhinal area, medial part, ventral zone, layer 4", + "color_hex_triplet": "32B825", + "graph_order": 521, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + }, + { + "id": 1133, + "atlas_id": 1131, + "ontology_id": 1, + "acronym": "ENTmv5/6", + "name": "Entorhinal area, medial part, ventral zone, layer 5/6", + "color_hex_triplet": "32B825", + "graph_order": 522, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 934, + "children": [] + } + ] + } + ] + }, + { + "id": 843, + "atlas_id": 246, + "ontology_id": 1, + "acronym": "PAR", + "name": "Parasubiculum", + "color_hex_triplet": "72D569", + "graph_order": 523, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 10693, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PAR1", + "name": "Parasubiculum, layer 1", + "color_hex_triplet": "72D569", + "graph_order": 524, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 843, + "children": [] + }, + { + "id": 10694, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PAR2", + "name": "Parasubiculum, layer 2", + "color_hex_triplet": "72D569", + "graph_order": 525, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 843, + "children": [] + }, + { + "id": 10695, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PAR3", + "name": "Parasubiculum, layer 3", + "color_hex_triplet": "72D569", + "graph_order": 526, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 843, + "children": [] + }, + { + "id": 2952544119, + "acronym": "PAR_O", + "name": "Parasubiculum: Other", + "parent_structure_id": 843, + "color_hex_triplet": "72D569", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 1037, + "atlas_id": 270, + "ontology_id": 1, + "acronym": "POST", + "name": "Postsubiculum", + "color_hex_triplet": "48C83C", + "graph_order": 527, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 10696, + "atlas_id": null, + "ontology_id": 1, + "acronym": "POST1", + "name": "Postsubiculum, layer 1", + "color_hex_triplet": "48C83C", + "graph_order": 528, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1037, + "children": [] + }, + { + "id": 10697, + "atlas_id": null, + "ontology_id": 1, + "acronym": "POST2", + "name": "Postsubiculum, layer 2", + "color_hex_triplet": "48C83C", + "graph_order": 529, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1037, + "children": [] + }, + { + "id": 10698, + "atlas_id": null, + "ontology_id": 1, + "acronym": "POST3", + "name": "Postsubiculum, layer 3", + "color_hex_triplet": "48C83C", + "graph_order": 530, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1037, + "children": [] + }, + { + "id": 2063775638, + "acronym": "POST_O", + "name": "Postsubiculum: Other", + "parent_structure_id": 1037, + "color_hex_triplet": "48C83C", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 1084, + "atlas_id": 276, + "ontology_id": 1, + "acronym": "PRE", + "name": "Presubiculum", + "color_hex_triplet": "59B947", + "graph_order": 531, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 10699, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRE1", + "name": "Presubiculum, layer 1", + "color_hex_triplet": "59B947", + "graph_order": 532, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1084, + "children": [] + }, + { + "id": 10700, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRE2", + "name": "Presubiculum, layer 2", + "color_hex_triplet": "59B947", + "graph_order": 533, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1084, + "children": [] + }, + { + "id": 10701, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRE3", + "name": "Presubiculum, layer 3", + "color_hex_triplet": "59B947", + "graph_order": 534, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1084, + "children": [] + }, + { + "id": 1580329576, + "acronym": "PRE_O", + "name": "Presubiculum: Other", + "parent_structure_id": 1084, + "color_hex_triplet": "59B947", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 502, + "atlas_id": 345, + "ontology_id": 1, + "acronym": "SUB", + "name": "Subiculum", + "color_hex_triplet": "4FC244", + "graph_order": 535, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 509, + "atlas_id": 346, + "ontology_id": 1, + "acronym": "SUBd", + "name": "Subiculum, dorsal part", + "color_hex_triplet": "4FC244", + "graph_order": 536, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 502, + "children": [ + { + "id": 829, + "atlas_id": 386, + "ontology_id": 1, + "acronym": "SUBd-m", + "name": "Subiculum, dorsal part, molecular layer", + "color_hex_triplet": "4FC244", + "graph_order": 537, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 509, + "children": [] + }, + { + "id": 845, + "atlas_id": 388, + "ontology_id": 1, + "acronym": "SUBd-sp", + "name": "Subiculum, dorsal part, pyramidal layer", + "color_hex_triplet": "4BB547", + "graph_order": 538, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 509, + "children": [] + }, + { + "id": 837, + "atlas_id": 387, + "ontology_id": 1, + "acronym": "SUBd-sr", + "name": "Subiculum, dorsal part, stratum radiatum", + "color_hex_triplet": "4FC244", + "graph_order": 539, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 509, + "children": [] + } + ] + }, + { + "id": 518, + "atlas_id": 347, + "ontology_id": 1, + "acronym": "SUBv", + "name": "Subiculum, ventral part", + "color_hex_triplet": "4FC244", + "graph_order": 540, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 502, + "children": [ + { + "id": 853, + "atlas_id": 389, + "ontology_id": 1, + "acronym": "SUBv-m", + "name": "Subiculum, ventral part, molecular layer", + "color_hex_triplet": "4FC244", + "graph_order": 541, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 518, + "children": [] + }, + { + "id": 870, + "atlas_id": 391, + "ontology_id": 1, + "acronym": "SUBv-sp", + "name": "Subiculum, ventral part, pyramidal layer", + "color_hex_triplet": "4BB547", + "graph_order": 542, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 518, + "children": [] + }, + { + "id": 861, + "atlas_id": 390, + "ontology_id": 1, + "acronym": "SUBv-sr", + "name": "Subiculum, ventral part, stratum radiatum", + "color_hex_triplet": "4FC244", + "graph_order": 543, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 518, + "children": [] + } + ] + }, + { + "id": 1792026161, + "acronym": "SUB_O", + "name": "Subiculum: Other", + "parent_structure_id": 502, + "color_hex_triplet": "4FC244", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 484682470, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProS", + "name": "Prosubiculum", + "color_hex_triplet": "58BA48", + "graph_order": 544, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [ + { + "id": 484682475, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSd", + "name": "Prosubiculum, dorsal part", + "color_hex_triplet": "58BA48", + "graph_order": 545, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 484682470, + "children": [ + { + "id": 484682479, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSd-m", + "name": "Prosubiculum, dorsal part, molecular layer", + "color_hex_triplet": "58BA48", + "graph_order": 546, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682475, + "children": [] + }, + { + "id": 484682483, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSd-sp", + "name": "Prosubiculum, dorsal part, pyramidal layer", + "color_hex_triplet": "56B84B", + "graph_order": 547, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682475, + "children": [] + }, + { + "id": 484682487, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSd-sr", + "name": "Prosubiculum, dorsal part, stratum radiatum", + "color_hex_triplet": "58BA48", + "graph_order": 548, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682475, + "children": [] + } + ] + }, + { + "id": 484682492, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSv", + "name": "Prosubiculum, ventral part", + "color_hex_triplet": "58BA48", + "graph_order": 549, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 484682470, + "children": [ + { + "id": 484682496, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSv-m", + "name": "Prosubiculum, ventral part, molecular layer", + "color_hex_triplet": "58BA48", + "graph_order": 550, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682492, + "children": [] + }, + { + "id": 484682500, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ProSv-sp", + "name": "Prosubiculum, ventral part, pyramidal layer", + "color_hex_triplet": "56B84B", + "graph_order": 551, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682492, + "children": [] + }, + { + "id": 484682504, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Prosv-sr", + "name": "Prosubiculum, ventral part, stratum radiatum", + "color_hex_triplet": "58BA48", + "graph_order": 552, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 484682492, + "children": [] + } + ] + }, + { + "id": 2449182232, + "acronym": "ProS_O", + "name": "Prosubiculum: Other", + "parent_structure_id": 484682470, + "color_hex_triplet": "58BA48", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 589508447, + "atlas_id": null, + "ontology_id": 1, + "acronym": "HATA", + "name": "Hippocampo-amygdalar transition area", + "color_hex_triplet": "33B932", + "graph_order": 553, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [] + }, + { + "id": 484682508, + "atlas_id": null, + "ontology_id": 1, + "acronym": "APr", + "name": "Area prostriata", + "color_hex_triplet": "33B932", + "graph_order": 554, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 822, + "children": [] + } + ] + }, + { + "id": 3263488087, + "acronym": "HPF_O", + "name": "Hippocampal formation: Other", + "parent_structure_id": 1089, + "color_hex_triplet": "7ED04B", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 703, + "atlas_id": 87, + "ontology_id": 1, + "acronym": "CTXsp", + "name": "Cortical subplate", + "color_hex_triplet": "8ADA87", + "graph_order": 555, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 688, + "children": [ + { + "id": 16, + "atlas_id": 1, + "ontology_id": 1, + "acronym": "6b", + "name": "Layer 6b, isocortex", + "color_hex_triplet": "8ADA87", + "graph_order": 556, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [] + }, + { + "id": 583, + "atlas_id": 72, + "ontology_id": 1, + "acronym": "CLA", + "name": "Claustrum", + "color_hex_triplet": "8ADA87", + "graph_order": 557, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [] + }, + { + "id": 942, + "atlas_id": 117, + "ontology_id": 1, + "acronym": "EP", + "name": "Endopiriform nucleus", + "color_hex_triplet": "A0EE9D", + "graph_order": 558, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [ + { + "id": 952, + "atlas_id": 118, + "ontology_id": 1, + "acronym": "EPd", + "name": "Endopiriform nucleus, dorsal part", + "color_hex_triplet": "A0EE9D", + "graph_order": 559, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 942, + "children": [] + }, + { + "id": 966, + "atlas_id": 120, + "ontology_id": 1, + "acronym": "EPv", + "name": "Endopiriform nucleus, ventral part", + "color_hex_triplet": "A0EE9D", + "graph_order": 560, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 942, + "children": [] + } + ] + }, + { + "id": 131, + "atlas_id": 157, + "ontology_id": 1, + "acronym": "LA", + "name": "Lateral amygdalar nucleus", + "color_hex_triplet": "90EB8D", + "graph_order": 561, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [] + }, + { + "id": 295, + "atlas_id": 36, + "ontology_id": 1, + "acronym": "BLA", + "name": "Basolateral amygdalar nucleus", + "color_hex_triplet": "9DE79C", + "graph_order": 562, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [ + { + "id": 303, + "atlas_id": 37, + "ontology_id": 1, + "acronym": "BLAa", + "name": "Basolateral amygdalar nucleus, anterior part", + "color_hex_triplet": "9DE79C", + "graph_order": 563, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 295, + "children": [] + }, + { + "id": 311, + "atlas_id": 38, + "ontology_id": 1, + "acronym": "BLAp", + "name": "Basolateral amygdalar nucleus, posterior part", + "color_hex_triplet": "9DE79C", + "graph_order": 564, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 295, + "children": [] + }, + { + "id": 451, + "atlas_id": 763, + "ontology_id": 1, + "acronym": "BLAv", + "name": "Basolateral amygdalar nucleus, ventral part", + "color_hex_triplet": "9DE79C", + "graph_order": 565, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 295, + "children": [] + } + ] + }, + { + "id": 319, + "atlas_id": 39, + "ontology_id": 1, + "acronym": "BMA", + "name": "Basomedial amygdalar nucleus", + "color_hex_triplet": "84EA81", + "graph_order": 566, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [ + { + "id": 327, + "atlas_id": 40, + "ontology_id": 1, + "acronym": "BMAa", + "name": "Basomedial amygdalar nucleus, anterior part", + "color_hex_triplet": "84EA81", + "graph_order": 567, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 319, + "children": [] + }, + { + "id": 334, + "atlas_id": 41, + "ontology_id": 1, + "acronym": "BMAp", + "name": "Basomedial amygdalar nucleus, posterior part", + "color_hex_triplet": "84EA81", + "graph_order": 568, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 319, + "children": [] + } + ] + }, + { + "id": 780, + "atlas_id": 238, + "ontology_id": 1, + "acronym": "PA", + "name": "Posterior amygdalar nucleus", + "color_hex_triplet": "97EC93", + "graph_order": 569, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 703, + "children": [] + }, + { + "id": 2416897036, + "acronym": "CTXsp_O", + "name": "Cortical subplate: Other", + "parent_structure_id": 703, + "color_hex_triplet": "8ADA87", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 623, + "atlas_id": 77, + "ontology_id": 1, + "acronym": "CNU", + "name": "Cerebral nuclei", + "color_hex_triplet": "98D6F9", + "graph_order": 570, + "st_level": 3, + "hemisphere_id": 3, + "parent_structure_id": 567, + "children": [ + { + "id": 477, + "atlas_id": 342, + "ontology_id": 1, + "acronym": "STR", + "name": "Striatum", + "color_hex_triplet": "98D6F9", + "graph_order": 571, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 623, + "children": [ + { + "id": 485, + "atlas_id": 343, + "ontology_id": 1, + "acronym": "STRd", + "name": "Striatum dorsal region", + "color_hex_triplet": "98D6F9", + "graph_order": 572, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 477, + "children": [ + { + "id": 672, + "atlas_id": 83, + "ontology_id": 1, + "acronym": "CP", + "name": "Caudoputamen", + "color_hex_triplet": "98D6F9", + "graph_order": 573, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 485, + "children": [] + } + ] + }, + { + "id": 493, + "atlas_id": 344, + "ontology_id": 1, + "acronym": "STRv", + "name": "Striatum ventral region", + "color_hex_triplet": "80CDF8", + "graph_order": 574, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 477, + "children": [ + { + "id": 56, + "atlas_id": 6, + "ontology_id": 1, + "acronym": "ACB", + "name": "Nucleus accumbens", + "color_hex_triplet": "80CDF8", + "graph_order": 575, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 493, + "children": [] + }, + { + "id": 998, + "atlas_id": 124, + "ontology_id": 1, + "acronym": "FS", + "name": "Fundus of striatum", + "color_hex_triplet": "80CDF8", + "graph_order": 576, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 493, + "children": [] + }, + { + "id": 754, + "atlas_id": 235, + "ontology_id": 1, + "acronym": "OT", + "name": "Olfactory tubercle", + "color_hex_triplet": "80CDF8", + "graph_order": 577, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 493, + "children": [ + { + "id": 481, + "atlas_id": 767, + "ontology_id": 1, + "acronym": "isl", + "name": "Islands of Calleja", + "color_hex_triplet": "80CDF8", + "graph_order": 578, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 489, + "atlas_id": 768, + "ontology_id": 1, + "acronym": "islm", + "name": "Major island of Calleja", + "color_hex_triplet": "80CDF8", + "graph_order": 579, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 144, + "atlas_id": 866, + "ontology_id": 1, + "acronym": "OT1-3", + "name": "Olfactory tubercle, layers 1-3", + "color_hex_triplet": "80CDF8", + "graph_order": 580, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 458, + "atlas_id": 764, + "ontology_id": 1, + "acronym": "OT1", + "name": "Olfactory tubercle, molecular layer", + "color_hex_triplet": "80CDF8", + "graph_order": 581, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 465, + "atlas_id": 765, + "ontology_id": 1, + "acronym": "OT2", + "name": "Olfactory tubercle, pyramidal layer", + "color_hex_triplet": "80CDF8", + "graph_order": 582, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 473, + "atlas_id": 766, + "ontology_id": 1, + "acronym": "OT3", + "name": "Olfactory tubercle, polymorph layer", + "color_hex_triplet": "80CDF8", + "graph_order": 583, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 754, + "children": [] + }, + { + "id": 3672106733, + "acronym": "OT_O", + "name": "Olfactory tubercle: Other", + "parent_structure_id": 754, + "color_hex_triplet": "80CDF8", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 549009199, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LSS", + "name": "Lateral strip of striatum", + "color_hex_triplet": "80CDF8", + "graph_order": 584, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 493, + "children": [] + } + ] + }, + { + "id": 275, + "atlas_id": 175, + "ontology_id": 1, + "acronym": "LSX", + "name": "Lateral septal complex", + "color_hex_triplet": "90CBED", + "graph_order": 585, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 477, + "children": [ + { + "id": 242, + "atlas_id": 171, + "ontology_id": 1, + "acronym": "LS", + "name": "Lateral septal nucleus", + "color_hex_triplet": "90CBED", + "graph_order": 586, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 275, + "children": [ + { + "id": 250, + "atlas_id": 172, + "ontology_id": 1, + "acronym": "LSc", + "name": "Lateral septal nucleus, caudal (caudodorsal) part", + "color_hex_triplet": "90CBED", + "graph_order": 587, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 242, + "children": [] + }, + { + "id": 258, + "atlas_id": 173, + "ontology_id": 1, + "acronym": "LSr", + "name": "Lateral septal nucleus, rostral (rostroventral) part", + "color_hex_triplet": "90CBED", + "graph_order": 588, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 242, + "children": [] + }, + { + "id": 266, + "atlas_id": 174, + "ontology_id": 1, + "acronym": "LSv", + "name": "Lateral septal nucleus, ventral part", + "color_hex_triplet": "90CBED", + "graph_order": 589, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 242, + "children": [] + } + ] + }, + { + "id": 310, + "atlas_id": 321, + "ontology_id": 1, + "acronym": "SF", + "name": "Septofimbrial nucleus", + "color_hex_triplet": "90CBED", + "graph_order": 590, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 275, + "children": [] + }, + { + "id": 333, + "atlas_id": 324, + "ontology_id": 1, + "acronym": "SH", + "name": "Septohippocampal nucleus", + "color_hex_triplet": "90CBED", + "graph_order": 591, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 275, + "children": [] + } + ] + }, + { + "id": 278, + "atlas_id": 317, + "ontology_id": 1, + "acronym": "sAMY", + "name": "Striatum-like amygdalar nuclei", + "color_hex_triplet": "80C0E2", + "graph_order": 592, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 477, + "children": [ + { + "id": 23, + "atlas_id": 2, + "ontology_id": 1, + "acronym": "AAA", + "name": "Anterior amygdalar area", + "color_hex_triplet": "80C0E2", + "graph_order": 593, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [] + }, + { + "id": 292, + "atlas_id": 460, + "ontology_id": 1, + "acronym": "BA", + "name": "Bed nucleus of the accessory olfactory tract", + "color_hex_triplet": "80C0E2", + "graph_order": 594, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [] + }, + { + "id": 536, + "atlas_id": 66, + "ontology_id": 1, + "acronym": "CEA", + "name": "Central amygdalar nucleus", + "color_hex_triplet": "80C0E2", + "graph_order": 595, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [ + { + "id": 544, + "atlas_id": 67, + "ontology_id": 1, + "acronym": "CEAc", + "name": "Central amygdalar nucleus, capsular part", + "color_hex_triplet": "80C0E2", + "graph_order": 596, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 536, + "children": [] + }, + { + "id": 551, + "atlas_id": 68, + "ontology_id": 1, + "acronym": "CEAl", + "name": "Central amygdalar nucleus, lateral part", + "color_hex_triplet": "80C0E2", + "graph_order": 597, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 536, + "children": [] + }, + { + "id": 559, + "atlas_id": 69, + "ontology_id": 1, + "acronym": "CEAm", + "name": "Central amygdalar nucleus, medial part", + "color_hex_triplet": "80C0E2", + "graph_order": 598, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 536, + "children": [] + } + ] + }, + { + "id": 1105, + "atlas_id": 137, + "ontology_id": 1, + "acronym": "IA", + "name": "Intercalated amygdalar nucleus", + "color_hex_triplet": "80C0E2", + "graph_order": 599, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [] + }, + { + "id": 403, + "atlas_id": 191, + "ontology_id": 1, + "acronym": "MEA", + "name": "Medial amygdalar nucleus", + "color_hex_triplet": "80C0E2", + "graph_order": 600, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 278, + "children": [ + { + "id": 411, + "atlas_id": 192, + "ontology_id": 1, + "acronym": "MEAad", + "name": "Medial amygdalar nucleus, anterodorsal part", + "color_hex_triplet": "80C0E2", + "graph_order": 601, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 403, + "children": [] + }, + { + "id": 418, + "atlas_id": 193, + "ontology_id": 1, + "acronym": "MEAav", + "name": "Medial amygdalar nucleus, anteroventral part", + "color_hex_triplet": "80C0E2", + "graph_order": 602, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 403, + "children": [] + }, + { + "id": 426, + "atlas_id": 194, + "ontology_id": 1, + "acronym": "MEApd", + "name": "Medial amygdalar nucleus, posterodorsal part", + "color_hex_triplet": "80C0E2", + "graph_order": 603, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 403, + "children": [ + { + "id": 472, + "atlas_id": 907, + "ontology_id": 1, + "acronym": "MEApd-a", + "name": "Medial amygdalar nucleus, posterodorsal part, sublayer a", + "color_hex_triplet": "80C0E2", + "graph_order": 604, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 426, + "children": [] + }, + { + "id": 480, + "atlas_id": 908, + "ontology_id": 1, + "acronym": "MEApd-b", + "name": "Medial amygdalar nucleus, posterodorsal part, sublayer b", + "color_hex_triplet": "80C0E2", + "graph_order": 605, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 426, + "children": [] + }, + { + "id": 487, + "atlas_id": 909, + "ontology_id": 1, + "acronym": "MEApd-c", + "name": "Medial amygdalar nucleus, posterodorsal part, sublayer c", + "color_hex_triplet": "80C0E2", + "graph_order": 606, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 426, + "children": [] + } + ] + }, + { + "id": 435, + "atlas_id": 195, + "ontology_id": 1, + "acronym": "MEApv", + "name": "Medial amygdalar nucleus, posteroventral part", + "color_hex_triplet": "80C0E2", + "graph_order": 607, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 403, + "children": [] + }, + { + "id": 2445320853, + "acronym": "MEA_O", + "name": "Medial amygdalar nucleus: Other", + "parent_structure_id": 403, + "color_hex_triplet": "80C0E2", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 3034756217, + "acronym": "STR_O", + "name": "Striatum: Other", + "parent_structure_id": 477, + "color_hex_triplet": "98D6F9", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 803, + "atlas_id": 241, + "ontology_id": 1, + "acronym": "PAL", + "name": "Pallidum", + "color_hex_triplet": "8599CC", + "graph_order": 608, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 623, + "children": [ + { + "id": 818, + "atlas_id": 243, + "ontology_id": 1, + "acronym": "PALd", + "name": "Pallidum, dorsal region", + "color_hex_triplet": "8599CC", + "graph_order": 609, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 803, + "children": [ + { + "id": 1022, + "atlas_id": 127, + "ontology_id": 1, + "acronym": "GPe", + "name": "Globus pallidus, external segment", + "color_hex_triplet": "8599CC", + "graph_order": 610, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 818, + "children": [] + }, + { + "id": 1031, + "atlas_id": 128, + "ontology_id": 1, + "acronym": "GPi", + "name": "Globus pallidus, internal segment", + "color_hex_triplet": "8599CC", + "graph_order": 611, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 818, + "children": [] + } + ] + }, + { + "id": 835, + "atlas_id": 245, + "ontology_id": 1, + "acronym": "PALv", + "name": "Pallidum, ventral region", + "color_hex_triplet": "A2B1D8", + "graph_order": 612, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 803, + "children": [ + { + "id": 342, + "atlas_id": 325, + "ontology_id": 1, + "acronym": "SI", + "name": "Substantia innominata", + "color_hex_triplet": "A2B1D8", + "graph_order": 613, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 835, + "children": [] + }, + { + "id": 298, + "atlas_id": 178, + "ontology_id": 1, + "acronym": "MA", + "name": "Magnocellular nucleus", + "color_hex_triplet": "A2B1D8", + "graph_order": 614, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 835, + "children": [] + } + ] + }, + { + "id": 826, + "atlas_id": 244, + "ontology_id": 1, + "acronym": "PALm", + "name": "Pallidum, medial region", + "color_hex_triplet": "96A7D3", + "graph_order": 615, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 803, + "children": [ + { + "id": 904, + "atlas_id": 395, + "ontology_id": 1, + "acronym": "MSC", + "name": "Medial septal complex", + "color_hex_triplet": "96A7D3", + "graph_order": 616, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 826, + "children": [ + { + "id": 564, + "atlas_id": 211, + "ontology_id": 1, + "acronym": "MS", + "name": "Medial septal nucleus", + "color_hex_triplet": "96A7D3", + "graph_order": 617, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 904, + "children": [] + }, + { + "id": 596, + "atlas_id": 215, + "ontology_id": 1, + "acronym": "NDB", + "name": "Diagonal band nucleus", + "color_hex_triplet": "96A7D3", + "graph_order": 618, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 904, + "children": [] + } + ] + }, + { + "id": 581, + "atlas_id": 355, + "ontology_id": 1, + "acronym": "TRS", + "name": "Triangular nucleus of septum", + "color_hex_triplet": "96A7D3", + "graph_order": 619, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 826, + "children": [] + } + ] + }, + { + "id": 809, + "atlas_id": 242, + "ontology_id": 1, + "acronym": "PALc", + "name": "Pallidum, caudal region", + "color_hex_triplet": "B3C0DF", + "graph_order": 620, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 803, + "children": [ + { + "id": 351, + "atlas_id": 43, + "ontology_id": 1, + "acronym": "BST", + "name": "Bed nuclei of the stria terminalis", + "color_hex_triplet": "B3C0DF", + "graph_order": 621, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 809, + "children": [ + { + "id": 359, + "atlas_id": 44, + "ontology_id": 1, + "acronym": "BSTa", + "name": "Bed nuclei of the stria terminalis, anterior division", + "color_hex_triplet": "B3C0DF", + "graph_order": 622, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 351, + "children": [ + { + "id": 537, + "atlas_id": 774, + "ontology_id": 1, + "acronym": "BSTal", + "name": "Bed nuclei of the stria terminalis, anterior division, anterolateral area", + "color_hex_triplet": "B3C0DF", + "graph_order": 623, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 498, + "atlas_id": 769, + "ontology_id": 1, + "acronym": "BSTam", + "name": "Bed nuclei of the stria terminalis, anterior division, anteromedial area", + "color_hex_triplet": "B3C0DF", + "graph_order": 624, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 505, + "atlas_id": 770, + "ontology_id": 1, + "acronym": "BSTdm", + "name": "Bed nuclei of the stria terminalis, anterior division, dorsomedial nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 625, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 513, + "atlas_id": 771, + "ontology_id": 1, + "acronym": "BSTfu", + "name": "Bed nuclei of the stria terminalis, anterior division, fusiform nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 626, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 546, + "atlas_id": 775, + "ontology_id": 1, + "acronym": "BSTju", + "name": "Bed nuclei of the stria terminalis, anterior division, juxtacapsular nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 627, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 521, + "atlas_id": 772, + "ontology_id": 1, + "acronym": "BSTmg", + "name": "Bed nuclei of the stria terminalis, anterior division, magnocellular nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 628, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 554, + "atlas_id": 776, + "ontology_id": 1, + "acronym": "BSTov", + "name": "Bed nuclei of the stria terminalis, anterior division, oval nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 629, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 562, + "atlas_id": 777, + "ontology_id": 1, + "acronym": "BSTrh", + "name": "Bed nuclei of the stria terminalis, anterior division, rhomboid nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 630, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + }, + { + "id": 529, + "atlas_id": 773, + "ontology_id": 1, + "acronym": "BSTv", + "name": "Bed nuclei of the stria terminalis, anterior division, ventral nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 631, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 359, + "children": [] + } + ] + }, + { + "id": 367, + "atlas_id": 45, + "ontology_id": 1, + "acronym": "BSTp", + "name": "Bed nuclei of the stria terminalis, posterior division", + "color_hex_triplet": "B3C0DF", + "graph_order": 632, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 351, + "children": [ + { + "id": 569, + "atlas_id": 778, + "ontology_id": 1, + "acronym": "BSTd", + "name": "Bed nuclei of the stria terminalis, posterior division, dorsal nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 633, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + }, + { + "id": 578, + "atlas_id": 779, + "ontology_id": 1, + "acronym": "BSTpr", + "name": "Bed nuclei of the stria terminalis, posterior division, principal nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 634, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + }, + { + "id": 585, + "atlas_id": 780, + "ontology_id": 1, + "acronym": "BSTif", + "name": "Bed nuclei of the stria terminalis, posterior division, interfascicular nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 635, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + }, + { + "id": 594, + "atlas_id": 781, + "ontology_id": 1, + "acronym": "BSTtr", + "name": "Bed nuclei of the stria terminalis, posterior division, transverse nucleus", + "color_hex_triplet": "B3C0DF", + "graph_order": 636, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + }, + { + "id": 602, + "atlas_id": 782, + "ontology_id": 1, + "acronym": "BSTse", + "name": "Bed nuclei of the stria terminalis, posterior division, strial extension", + "color_hex_triplet": "B3C0DF", + "graph_order": 637, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 367, + "children": [] + } + ] + }, + { + "id": 2791423253, + "acronym": "BST_O", + "name": "Bed nuclei of the stria terminalis: Other", + "parent_structure_id": 351, + "color_hex_triplet": "B3C0DF", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 287, + "atlas_id": 35, + "ontology_id": 1, + "acronym": "BAC", + "name": "Bed nucleus of the anterior commissure", + "color_hex_triplet": "B3C0DF", + "graph_order": 638, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 809, + "children": [] + } + ] + }, + { + "id": 2165415682, + "acronym": "PAL_O", + "name": "Pallidum: Other", + "parent_structure_id": 803, + "color_hex_triplet": "8599CC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 343, + "atlas_id": 42, + "ontology_id": 1, + "acronym": "BS", + "name": "Brain stem", + "color_hex_triplet": "FF7080", + "graph_order": 639, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 8, + "children": [ + { + "id": 1129, + "atlas_id": 140, + "ontology_id": 1, + "acronym": "IB", + "name": "Interbrain", + "color_hex_triplet": "FF7080", + "graph_order": 640, + "st_level": 3, + "hemisphere_id": 3, + "parent_structure_id": 343, + "children": [ + { + "id": 549, + "atlas_id": 351, + "ontology_id": 1, + "acronym": "TH", + "name": "Thalamus", + "color_hex_triplet": "FF7080", + "graph_order": 641, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 1129, + "children": [ + { + "id": 864, + "atlas_id": 107, + "ontology_id": 1, + "acronym": "DORsm", + "name": "Thalamus, sensory-motor cortex related", + "color_hex_triplet": "FF8084", + "graph_order": 642, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 549, + "children": [ + { + "id": 637, + "atlas_id": 362, + "ontology_id": 1, + "acronym": "VENT", + "name": "Ventral group of the dorsal thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 643, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [ + { + "id": 629, + "atlas_id": 361, + "ontology_id": 1, + "acronym": "VAL", + "name": "Ventral anterior-lateral complex of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 644, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 637, + "children": [] + }, + { + "id": 685, + "atlas_id": 368, + "ontology_id": 1, + "acronym": "VM", + "name": "Ventral medial nucleus of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 645, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 637, + "children": [] + }, + { + "id": 709, + "atlas_id": 371, + "ontology_id": 1, + "acronym": "VP", + "name": "Ventral posterior complex of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 646, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 637, + "children": [ + { + "id": 718, + "atlas_id": 372, + "ontology_id": 1, + "acronym": "VPL", + "name": "Ventral posterolateral nucleus of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 647, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 709, + "children": [] + }, + { + "id": 725, + "atlas_id": 373, + "ontology_id": 1, + "acronym": "VPLpc", + "name": "Ventral posterolateral nucleus of the thalamus, parvicellular part", + "color_hex_triplet": "FF8084", + "graph_order": 648, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 709, + "children": [] + }, + { + "id": 733, + "atlas_id": 374, + "ontology_id": 1, + "acronym": "VPM", + "name": "Ventral posteromedial nucleus of the thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 649, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 709, + "children": [] + }, + { + "id": 741, + "atlas_id": 375, + "ontology_id": 1, + "acronym": "VPMpc", + "name": "Ventral posteromedial nucleus of the thalamus, parvicellular part", + "color_hex_triplet": "FF8084", + "graph_order": 650, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 709, + "children": [] + } + ] + }, + { + "id": 563807435, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PoT", + "name": "Posterior triangular thalamic nucleus", + "color_hex_triplet": "FF8084", + "graph_order": 651, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 637, + "children": [] + } + ] + }, + { + "id": 406, + "atlas_id": 333, + "ontology_id": 1, + "acronym": "SPF", + "name": "Subparafascicular nucleus", + "color_hex_triplet": "FF8084", + "graph_order": 652, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [ + { + "id": 414, + "atlas_id": 334, + "ontology_id": 1, + "acronym": "SPFm", + "name": "Subparafascicular nucleus, magnocellular part", + "color_hex_triplet": "FF8084", + "graph_order": 653, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 406, + "children": [] + }, + { + "id": 422, + "atlas_id": 335, + "ontology_id": 1, + "acronym": "SPFp", + "name": "Subparafascicular nucleus, parvicellular part", + "color_hex_triplet": "FF8084", + "graph_order": 654, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 406, + "children": [] + } + ] + }, + { + "id": 609, + "atlas_id": 783, + "ontology_id": 1, + "acronym": "SPA", + "name": "Subparafascicular area", + "color_hex_triplet": "FF8084", + "graph_order": 655, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [] + }, + { + "id": 1044, + "atlas_id": 271, + "ontology_id": 1, + "acronym": "PP", + "name": "Peripeduncular nucleus", + "color_hex_triplet": "FF8084", + "graph_order": 656, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [] + }, + { + "id": 1008, + "atlas_id": 125, + "ontology_id": 1, + "acronym": "GENd", + "name": "Geniculate group, dorsal thalamus", + "color_hex_triplet": "FF8084", + "graph_order": 657, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 864, + "children": [ + { + "id": 475, + "atlas_id": 200, + "ontology_id": 1, + "acronym": "MG", + "name": "Medial geniculate complex", + "color_hex_triplet": "FF8084", + "graph_order": 658, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1008, + "children": [ + { + "id": 1072, + "atlas_id": 416, + "ontology_id": 1, + "acronym": "MGd", + "name": "Medial geniculate complex, dorsal part", + "color_hex_triplet": "FF8084", + "graph_order": 659, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 475, + "children": [] + }, + { + "id": 1079, + "atlas_id": 417, + "ontology_id": 1, + "acronym": "MGv", + "name": "Medial geniculate complex, ventral part", + "color_hex_triplet": "FF8084", + "graph_order": 660, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 475, + "children": [] + }, + { + "id": 1088, + "atlas_id": 418, + "ontology_id": 1, + "acronym": "MGm", + "name": "Medial geniculate complex, medial part", + "color_hex_triplet": "FF8084", + "graph_order": 661, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 475, + "children": [] + } + ] + }, + { + "id": 170, + "atlas_id": 162, + "ontology_id": 1, + "acronym": "LGd", + "name": "Dorsal part of the lateral geniculate complex", + "color_hex_triplet": "FF8084", + "graph_order": 662, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1008, + "children": [ + { + "id": 496345664, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LGd-sh", + "name": "Dorsal part of the lateral geniculate complex, shell", + "color_hex_triplet": "FF8084", + "graph_order": 663, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 170, + "children": [] + }, + { + "id": 496345668, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LGd-co", + "name": "Dorsal part of the lateral geniculate complex, core", + "color_hex_triplet": "FF8084", + "graph_order": 664, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 170, + "children": [] + }, + { + "id": 496345672, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LGd-ip", + "name": "Dorsal part of the lateral geniculate complex, ipsilateral zone", + "color_hex_triplet": "FF8084", + "graph_order": 665, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 170, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 856, + "atlas_id": 106, + "ontology_id": 1, + "acronym": "DORpm", + "name": "Thalamus, polymodal association cortex related", + "color_hex_triplet": "FF909F", + "graph_order": 666, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 549, + "children": [ + { + "id": 138, + "atlas_id": 158, + "ontology_id": 1, + "acronym": "LAT", + "name": "Lateral group of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 667, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 218, + "atlas_id": 168, + "ontology_id": 1, + "acronym": "LP", + "name": "Lateral posterior nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 668, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 1020, + "atlas_id": 268, + "ontology_id": 1, + "acronym": "PO", + "name": "Posterior complex of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 669, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 1029, + "atlas_id": 269, + "ontology_id": 1, + "acronym": "POL", + "name": "Posterior limiting nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 670, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 325, + "atlas_id": 323, + "ontology_id": 1, + "acronym": "SGN", + "name": "Suprageniculate nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 671, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 560581551, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Eth", + "name": "Ethmoid nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 672, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + }, + { + "id": 560581555, + "atlas_id": null, + "ontology_id": 1, + "acronym": "REth", + "name": "Retroethmoid nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 673, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 138, + "children": [] + } + ] + }, + { + "id": 239, + "atlas_id": 29, + "ontology_id": 1, + "acronym": "ATN", + "name": "Anterior group of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 674, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 255, + "atlas_id": 31, + "ontology_id": 1, + "acronym": "AV", + "name": "Anteroventral nucleus of thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 675, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + }, + { + "id": 127, + "atlas_id": 15, + "ontology_id": 1, + "acronym": "AM", + "name": "Anteromedial nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 676, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [ + { + "id": 1096, + "atlas_id": 419, + "ontology_id": 1, + "acronym": "AMd", + "name": "Anteromedial nucleus, dorsal part", + "color_hex_triplet": "FF909F", + "graph_order": 677, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 127, + "children": [] + }, + { + "id": 1104, + "atlas_id": 420, + "ontology_id": 1, + "acronym": "AMv", + "name": "Anteromedial nucleus, ventral part", + "color_hex_triplet": "FF909F", + "graph_order": 678, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 127, + "children": [] + } + ] + }, + { + "id": 64, + "atlas_id": 7, + "ontology_id": 1, + "acronym": "AD", + "name": "Anterodorsal nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 679, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + }, + { + "id": 1120, + "atlas_id": 139, + "ontology_id": 1, + "acronym": "IAM", + "name": "Interanteromedial nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 680, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + }, + { + "id": 1113, + "atlas_id": 138, + "ontology_id": 1, + "acronym": "IAD", + "name": "Interanterodorsal nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 681, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + }, + { + "id": 155, + "atlas_id": 160, + "ontology_id": 1, + "acronym": "LD", + "name": "Lateral dorsal nucleus of thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 682, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 239, + "children": [] + } + ] + }, + { + "id": 444, + "atlas_id": 196, + "ontology_id": 1, + "acronym": "MED", + "name": "Medial group of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 683, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 59, + "atlas_id": 148, + "ontology_id": 1, + "acronym": "IMD", + "name": "Intermediodorsal nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 684, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 444, + "children": [] + }, + { + "id": 362, + "atlas_id": 186, + "ontology_id": 1, + "acronym": "MD", + "name": "Mediodorsal nucleus of thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 685, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 444, + "children": [ + { + "id": 617, + "atlas_id": 784, + "ontology_id": 1, + "acronym": "MDc", + "name": "Mediodorsal nucleus of the thalamus, central part", + "color_hex_triplet": "FF909F", + "graph_order": 686, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 362, + "children": [] + }, + { + "id": 626, + "atlas_id": 785, + "ontology_id": 1, + "acronym": "MDl", + "name": "Mediodorsal nucleus of the thalamus, lateral part", + "color_hex_triplet": "FF909F", + "graph_order": 687, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 362, + "children": [] + }, + { + "id": 636, + "atlas_id": 786, + "ontology_id": 1, + "acronym": "MDm", + "name": "Mediodorsal nucleus of the thalamus, medial part", + "color_hex_triplet": "FF909F", + "graph_order": 688, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 362, + "children": [] + }, + { + "id": 3009745967, + "acronym": "MD_O", + "name": "Mediodorsal nucleus of thalamus: Other", + "parent_structure_id": 362, + "color_hex_triplet": "FF909F", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 366, + "atlas_id": 328, + "ontology_id": 1, + "acronym": "SMT", + "name": "Submedial nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 689, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 444, + "children": [] + }, + { + "id": 1077, + "atlas_id": 275, + "ontology_id": 1, + "acronym": "PR", + "name": "Perireunensis nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 690, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 444, + "children": [] + } + ] + }, + { + "id": 571, + "atlas_id": 212, + "ontology_id": 1, + "acronym": "MTN", + "name": "Midline group of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 691, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 149, + "atlas_id": 301, + "ontology_id": 1, + "acronym": "PVT", + "name": "Paraventricular nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 692, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 571, + "children": [] + }, + { + "id": 15, + "atlas_id": 284, + "ontology_id": 1, + "acronym": "PT", + "name": "Parataenial nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 693, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 571, + "children": [] + }, + { + "id": 181, + "atlas_id": 305, + "ontology_id": 1, + "acronym": "RE", + "name": "Nucleus of reuniens", + "color_hex_triplet": "FF909F", + "graph_order": 694, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 571, + "children": [] + }, + { + "id": 560581559, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Xi", + "name": "Xiphoid thalamic nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 695, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 571, + "children": [] + } + ] + }, + { + "id": 51, + "atlas_id": 147, + "ontology_id": 1, + "acronym": "ILM", + "name": "Intralaminar nuclei of the dorsal thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 696, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 189, + "atlas_id": 306, + "ontology_id": 1, + "acronym": "RH", + "name": "Rhomboid nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 697, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 599, + "atlas_id": 74, + "ontology_id": 1, + "acronym": "CM", + "name": "Central medial nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 698, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 907, + "atlas_id": 254, + "ontology_id": 1, + "acronym": "PCN", + "name": "Paracentral nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 699, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 575, + "atlas_id": 71, + "ontology_id": 1, + "acronym": "CL", + "name": "Central lateral nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 700, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 930, + "atlas_id": 257, + "ontology_id": 1, + "acronym": "PF", + "name": "Parafascicular nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 701, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + }, + { + "id": 560581563, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PIL", + "name": "Posterior intralaminar thalamic nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 702, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 51, + "children": [] + } + ] + }, + { + "id": 262, + "atlas_id": 315, + "ontology_id": 1, + "acronym": "RT", + "name": "Reticular nucleus of the thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 703, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [] + }, + { + "id": 1014, + "atlas_id": 126, + "ontology_id": 1, + "acronym": "GENv", + "name": "Geniculate group, ventral thalamus", + "color_hex_triplet": "FF909F", + "graph_order": 704, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 27, + "atlas_id": 144, + "ontology_id": 1, + "acronym": "IGL", + "name": "Intergeniculate leaflet of the lateral geniculate complex", + "color_hex_triplet": "FF909F", + "graph_order": 705, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1014, + "children": [] + }, + { + "id": 563807439, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IntG", + "name": "Intermediate geniculate nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 706, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1014, + "children": [] + }, + { + "id": 178, + "atlas_id": 163, + "ontology_id": 1, + "acronym": "LGv", + "name": "Ventral part of the lateral geniculate complex", + "color_hex_triplet": "FF909F", + "graph_order": 707, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1014, + "children": [ + { + "id": 300, + "atlas_id": 461, + "ontology_id": 1, + "acronym": "LGvl", + "name": "Ventral part of the lateral geniculate complex, lateral zone", + "color_hex_triplet": "FF909F", + "graph_order": 708, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 178, + "children": [] + }, + { + "id": 316, + "atlas_id": 463, + "ontology_id": 1, + "acronym": "LGvm", + "name": "Ventral part of the lateral geniculate complex, medial zone", + "color_hex_triplet": "FF909F", + "graph_order": 709, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 178, + "children": [] + }, + { + "id": 1043765183, + "acronym": "LGv_O", + "name": "Ventral part of the lateral geniculate complex: Other", + "parent_structure_id": 178, + "color_hex_triplet": "FF909F", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 321, + "atlas_id": 464, + "ontology_id": 1, + "acronym": "SubG", + "name": "Subgeniculate nucleus", + "color_hex_triplet": "FF909F", + "graph_order": 710, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1014, + "children": [] + } + ] + }, + { + "id": 958, + "atlas_id": 119, + "ontology_id": 1, + "acronym": "EPI", + "name": "Epithalamus", + "color_hex_triplet": "FF909F", + "graph_order": 711, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 856, + "children": [ + { + "id": 483, + "atlas_id": 201, + "ontology_id": 1, + "acronym": "MH", + "name": "Medial habenula", + "color_hex_triplet": "FF909F", + "graph_order": 712, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 958, + "children": [] + }, + { + "id": 186, + "atlas_id": 164, + "ontology_id": 1, + "acronym": "LH", + "name": "Lateral habenula", + "color_hex_triplet": "FF909F", + "graph_order": 713, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 958, + "children": [] + }, + { + "id": 953, + "atlas_id": 260, + "ontology_id": 1, + "acronym": "PIN", + "name": "Pineal body", + "color_hex_triplet": "FF909F", + "graph_order": 714, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 958, + "children": [] + } + ] + } + ] + }, + { + "id": 2614168502, + "acronym": "TH_O", + "name": "Thalamus: Other", + "parent_structure_id": 549, + "color_hex_triplet": "FF7080", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 1097, + "atlas_id": 136, + "ontology_id": 1, + "acronym": "HY", + "name": "Hypothalamus", + "color_hex_triplet": "E64438", + "graph_order": 715, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 1129, + "children": [ + { + "id": 157, + "atlas_id": 302, + "ontology_id": 1, + "acronym": "PVZ", + "name": "Periventricular zone", + "color_hex_triplet": "FF5D50", + "graph_order": 716, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [ + { + "id": 390, + "atlas_id": 331, + "ontology_id": 1, + "acronym": "SO", + "name": "Supraoptic nucleus", + "color_hex_triplet": "FF5D50", + "graph_order": 717, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [] + }, + { + "id": 332, + "atlas_id": 465, + "ontology_id": 1, + "acronym": "ASO", + "name": "Accessory supraoptic group", + "color_hex_triplet": "FF5D50", + "graph_order": 718, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [ + { + "id": 432, + "atlas_id": 902, + "ontology_id": 1, + "acronym": "NC", + "name": "Nucleus circularis", + "color_hex_triplet": "FF5D50", + "graph_order": 719, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 332, + "children": [] + }, + { + "id": 2218808594, + "acronym": "ASO_O", + "name": "Accessory supraoptic group: Other", + "parent_structure_id": 332, + "color_hex_triplet": "FF5D50", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 38, + "atlas_id": 287, + "ontology_id": 1, + "acronym": "PVH", + "name": "Paraventricular hypothalamic nucleus", + "color_hex_triplet": "FF5D50", + "graph_order": 720, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [ + { + "id": 71, + "atlas_id": 291, + "ontology_id": 1, + "acronym": "PVHm", + "name": "Paraventricular hypothalamic nucleus, magnocellular division", + "color_hex_triplet": "FF5D50", + "graph_order": 721, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 38, + "children": [ + { + "id": 47, + "atlas_id": 288, + "ontology_id": 1, + "acronym": "PVHam", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, anterior magnocellular part", + "color_hex_triplet": "FF5D50", + "graph_order": 722, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 71, + "children": [] + }, + { + "id": 79, + "atlas_id": 292, + "ontology_id": 1, + "acronym": "PVHmm", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, medial magnocellular part", + "color_hex_triplet": "FF5D50", + "graph_order": 723, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 71, + "children": [] + }, + { + "id": 103, + "atlas_id": 295, + "ontology_id": 1, + "acronym": "PVHpm", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part", + "color_hex_triplet": "FF5D50", + "graph_order": 724, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 71, + "children": [ + { + "id": 652, + "atlas_id": 788, + "ontology_id": 1, + "acronym": "PVHpml", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part, lateral zone", + "color_hex_triplet": "FF5D50", + "graph_order": 725, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 103, + "children": [] + }, + { + "id": 660, + "atlas_id": 789, + "ontology_id": 1, + "acronym": "PVHpmm", + "name": "Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part, medial zone", + "color_hex_triplet": "FF5D50", + "graph_order": 726, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 103, + "children": [] + } + ] + } + ] + }, + { + "id": 94, + "atlas_id": 294, + "ontology_id": 1, + "acronym": "PVHp", + "name": "Paraventricular hypothalamic nucleus, parvicellular division", + "color_hex_triplet": "FF5D50", + "graph_order": 727, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 38, + "children": [ + { + "id": 55, + "atlas_id": 289, + "ontology_id": 1, + "acronym": "PVHap", + "name": "Paraventricular hypothalamic nucleus, parvicellular division, anterior parvicellular part", + "color_hex_triplet": "FF5D50", + "graph_order": 728, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 94, + "children": [] + }, + { + "id": 87, + "atlas_id": 293, + "ontology_id": 1, + "acronym": "PVHmpd", + "name": "Paraventricular hypothalamic nucleus, parvicellular division, medial parvicellular part, dorsal zone", + "color_hex_triplet": "FF5D50", + "graph_order": 729, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 94, + "children": [] + }, + { + "id": 110, + "atlas_id": 296, + "ontology_id": 1, + "acronym": "PVHpv", + "name": "Paraventricular hypothalamic nucleus, parvicellular division, periventricular part", + "color_hex_triplet": "FF5D50", + "graph_order": 730, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 94, + "children": [] + } + ] + }, + { + "id": 2869757686, + "acronym": "PVH_O", + "name": "Paraventricular hypothalamic nucleus: Other", + "parent_structure_id": 38, + "color_hex_triplet": "FF5D50", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 30, + "atlas_id": 286, + "ontology_id": 1, + "acronym": "PVa", + "name": "Periventricular hypothalamic nucleus, anterior part", + "color_hex_triplet": "FF5D50", + "graph_order": 731, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [] + }, + { + "id": 118, + "atlas_id": 297, + "ontology_id": 1, + "acronym": "PVi", + "name": "Periventricular hypothalamic nucleus, intermediate part", + "color_hex_triplet": "FF5D50", + "graph_order": 732, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [] + }, + { + "id": 223, + "atlas_id": 27, + "ontology_id": 1, + "acronym": "ARH", + "name": "Arcuate hypothalamic nucleus", + "color_hex_triplet": "FF5D50", + "graph_order": 733, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 157, + "children": [] + } + ] + }, + { + "id": 141, + "atlas_id": 300, + "ontology_id": 1, + "acronym": "PVR", + "name": "Periventricular region", + "color_hex_triplet": "FF5547", + "graph_order": 734, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [ + { + "id": 72, + "atlas_id": 8, + "ontology_id": 1, + "acronym": "ADP", + "name": "Anterodorsal preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 735, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 80, + "atlas_id": 9, + "ontology_id": 1, + "acronym": "AHA", + "name": "Anterior hypothalamic area", + "color_hex_triplet": "FF5547", + "graph_order": 736, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 263, + "atlas_id": 32, + "ontology_id": 1, + "acronym": "AVP", + "name": "Anteroventral preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 737, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 272, + "atlas_id": 33, + "ontology_id": 1, + "acronym": "AVPV", + "name": "Anteroventral periventricular nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 738, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 830, + "atlas_id": 103, + "ontology_id": 1, + "acronym": "DMH", + "name": "Dorsomedial nucleus of the hypothalamus", + "color_hex_triplet": "FF5547", + "graph_order": 739, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [ + { + "id": 668, + "atlas_id": 790, + "ontology_id": 1, + "acronym": "DMHa", + "name": "Dorsomedial nucleus of the hypothalamus, anterior part", + "color_hex_triplet": "FF5547", + "graph_order": 740, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 830, + "children": [] + }, + { + "id": 676, + "atlas_id": 791, + "ontology_id": 1, + "acronym": "DMHp", + "name": "Dorsomedial nucleus of the hypothalamus, posterior part", + "color_hex_triplet": "FF5547", + "graph_order": 741, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 830, + "children": [] + }, + { + "id": 684, + "atlas_id": 792, + "ontology_id": 1, + "acronym": "DMHv", + "name": "Dorsomedial nucleus of the hypothalamus, ventral part", + "color_hex_triplet": "FF5547", + "graph_order": 742, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 830, + "children": [] + }, + { + "id": 1463730273, + "acronym": "DMH_O", + "name": "Dorsomedial nucleus of the hypothalamus: Other", + "parent_structure_id": 830, + "color_hex_triplet": "FF5547", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 452, + "atlas_id": 197, + "ontology_id": 1, + "acronym": "MEPO", + "name": "Median preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 743, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 523, + "atlas_id": 206, + "ontology_id": 1, + "acronym": "MPO", + "name": "Medial preoptic area", + "color_hex_triplet": "FF5547", + "graph_order": 744, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 763, + "atlas_id": 236, + "ontology_id": 1, + "acronym": "OV", + "name": "Vascular organ of the lamina terminalis", + "color_hex_triplet": "FF5547", + "graph_order": 745, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 914, + "atlas_id": 255, + "ontology_id": 1, + "acronym": "PD", + "name": "Posterodorsal preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 746, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 1109, + "atlas_id": 279, + "ontology_id": 1, + "acronym": "PS", + "name": "Parastrial nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 747, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 1124, + "atlas_id": 281, + "ontology_id": 1, + "acronym": "PSCH", + "name": "Suprachiasmatic preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 748, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 126, + "atlas_id": 298, + "ontology_id": 1, + "acronym": "PVp", + "name": "Periventricular hypothalamic nucleus, posterior part", + "color_hex_triplet": "FF5547", + "graph_order": 749, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 133, + "atlas_id": 299, + "ontology_id": 1, + "acronym": "PVpo", + "name": "Periventricular hypothalamic nucleus, preoptic part", + "color_hex_triplet": "FF5547", + "graph_order": 750, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 347, + "atlas_id": 467, + "ontology_id": 1, + "acronym": "SBPV", + "name": "Subparaventricular zone", + "color_hex_triplet": "FF5547", + "graph_order": 751, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 286, + "atlas_id": 318, + "ontology_id": 1, + "acronym": "SCH", + "name": "Suprachiasmatic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 752, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 338, + "atlas_id": 466, + "ontology_id": 1, + "acronym": "SFO", + "name": "Subfornical organ", + "color_hex_triplet": "FF5547", + "graph_order": 753, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 576073699, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VMPO", + "name": "Ventromedial preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 754, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + }, + { + "id": 689, + "atlas_id": 793, + "ontology_id": 1, + "acronym": "VLPO", + "name": "Ventrolateral preoptic nucleus", + "color_hex_triplet": "FF5547", + "graph_order": 755, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 141, + "children": [] + } + ] + }, + { + "id": 467, + "atlas_id": 199, + "ontology_id": 1, + "acronym": "MEZ", + "name": "Hypothalamic medial zone", + "color_hex_triplet": "FF4C3E", + "graph_order": 756, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [ + { + "id": 88, + "atlas_id": 10, + "ontology_id": 1, + "acronym": "AHN", + "name": "Anterior hypothalamic nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 757, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 700, + "atlas_id": 794, + "ontology_id": 1, + "acronym": "AHNa", + "name": "Anterior hypothalamic nucleus, anterior part", + "color_hex_triplet": "FF4C3E", + "graph_order": 758, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 88, + "children": [] + }, + { + "id": 708, + "atlas_id": 795, + "ontology_id": 1, + "acronym": "AHNc", + "name": "Anterior hypothalamic nucleus, central part", + "color_hex_triplet": "FF4C3E", + "graph_order": 759, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 88, + "children": [] + }, + { + "id": 716, + "atlas_id": 796, + "ontology_id": 1, + "acronym": "AHNd", + "name": "Anterior hypothalamic nucleus, dorsal part", + "color_hex_triplet": "FF4C3E", + "graph_order": 760, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 88, + "children": [] + }, + { + "id": 724, + "atlas_id": 797, + "ontology_id": 1, + "acronym": "AHNp", + "name": "Anterior hypothalamic nucleus, posterior part", + "color_hex_triplet": "FF4C3E", + "graph_order": 761, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 88, + "children": [] + }, + { + "id": 1690235425, + "acronym": "AHN_O", + "name": "Anterior hypothalamic nucleus: Other", + "parent_structure_id": 88, + "color_hex_triplet": "FF4C3E", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 331, + "atlas_id": 182, + "ontology_id": 1, + "acronym": "MBO", + "name": "Mammillary body", + "color_hex_triplet": "FF4C3E", + "graph_order": 762, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 210, + "atlas_id": 167, + "ontology_id": 1, + "acronym": "LM", + "name": "Lateral mammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 763, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 331, + "children": [] + }, + { + "id": 491, + "atlas_id": 202, + "ontology_id": 1, + "acronym": "MM", + "name": "Medial mammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 764, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 331, + "children": [ + { + "id": 732, + "atlas_id": 798, + "ontology_id": 1, + "acronym": "MMme", + "name": "Medial mammillary nucleus, median part", + "color_hex_triplet": "FF4C3E", + "graph_order": 765, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + }, + { + "id": 606826647, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MMl", + "name": "Medial mammillary nucleus, lateral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 766, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + }, + { + "id": 606826651, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MMm", + "name": "Medial mammillary nucleus, medial part", + "color_hex_triplet": "FF4C3E", + "graph_order": 767, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + }, + { + "id": 606826655, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MMp", + "name": "Medial mammillary nucleus, posterior part", + "color_hex_triplet": "FF4C3E", + "graph_order": 768, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + }, + { + "id": 606826659, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MMd", + "name": "Medial mammillary nucleus, dorsal part", + "color_hex_triplet": "FF4C3E", + "graph_order": 769, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 491, + "children": [] + } + ] + }, + { + "id": 525, + "atlas_id": 348, + "ontology_id": 1, + "acronym": "SUM", + "name": "Supramammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 770, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 331, + "children": [ + { + "id": 1110, + "atlas_id": 421, + "ontology_id": 1, + "acronym": "SUMl", + "name": "Supramammillary nucleus, lateral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 771, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 525, + "children": [] + }, + { + "id": 1118, + "atlas_id": 422, + "ontology_id": 1, + "acronym": "SUMm", + "name": "Supramammillary nucleus, medial part", + "color_hex_triplet": "FF4C3E", + "graph_order": 772, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 525, + "children": [] + }, + { + "id": 3449035628, + "acronym": "SUM_O", + "name": "Supramammillary nucleus: Other", + "parent_structure_id": 525, + "color_hex_triplet": "FF4C3E", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 557, + "atlas_id": 352, + "ontology_id": 1, + "acronym": "TM", + "name": "Tuberomammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 773, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 331, + "children": [ + { + "id": 1126, + "atlas_id": 423, + "ontology_id": 1, + "acronym": "TMd", + "name": "Tuberomammillary nucleus, dorsal part", + "color_hex_triplet": "FF4C3E", + "graph_order": 774, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 557, + "children": [] + }, + { + "id": 1, + "atlas_id": 424, + "ontology_id": 1, + "acronym": "TMv", + "name": "Tuberomammillary nucleus, ventral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 775, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 557, + "children": [] + } + ] + } + ] + }, + { + "id": 515, + "atlas_id": 205, + "ontology_id": 1, + "acronym": "MPN", + "name": "Medial preoptic nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 776, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 740, + "atlas_id": 799, + "ontology_id": 1, + "acronym": "MPNc", + "name": "Medial preoptic nucleus, central part", + "color_hex_triplet": "FF4C3E", + "graph_order": 777, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 515, + "children": [] + }, + { + "id": 748, + "atlas_id": 800, + "ontology_id": 1, + "acronym": "MPNl", + "name": "Medial preoptic nucleus, lateral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 778, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 515, + "children": [] + }, + { + "id": 756, + "atlas_id": 801, + "ontology_id": 1, + "acronym": "MPNm", + "name": "Medial preoptic nucleus, medial part", + "color_hex_triplet": "FF4C3E", + "graph_order": 779, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 515, + "children": [] + }, + { + "id": 2254557934, + "acronym": "MPN_O", + "name": "Medial preoptic nucleus: Other", + "parent_structure_id": 515, + "color_hex_triplet": "FF4C3E", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 980, + "atlas_id": 263, + "ontology_id": 1, + "acronym": "PMd", + "name": "Dorsal premammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 780, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [] + }, + { + "id": 1004, + "atlas_id": 266, + "ontology_id": 1, + "acronym": "PMv", + "name": "Ventral premammillary nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 781, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [] + }, + { + "id": 63, + "atlas_id": 290, + "ontology_id": 1, + "acronym": "PVHd", + "name": "Paraventricular hypothalamic nucleus, descending division", + "color_hex_triplet": "FF4C3E", + "graph_order": 782, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 439, + "atlas_id": 903, + "ontology_id": 1, + "acronym": "PVHdp", + "name": "Paraventricular hypothalamic nucleus, descending division, dorsal parvicellular part", + "color_hex_triplet": "FF4C3E", + "graph_order": 783, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 63, + "children": [] + }, + { + "id": 447, + "atlas_id": 904, + "ontology_id": 1, + "acronym": "PVHf", + "name": "Paraventricular hypothalamic nucleus, descending division, forniceal part", + "color_hex_triplet": "FF4C3E", + "graph_order": 784, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 63, + "children": [] + }, + { + "id": 455, + "atlas_id": 905, + "ontology_id": 1, + "acronym": "PVHlp", + "name": "Paraventricular hypothalamic nucleus, descending division, lateral parvicellular part", + "color_hex_triplet": "FF4C3E", + "graph_order": 785, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 63, + "children": [] + }, + { + "id": 464, + "atlas_id": 906, + "ontology_id": 1, + "acronym": "PVHmpv", + "name": "Paraventricular hypothalamic nucleus, descending division, medial parvicellular part, ventral zone", + "color_hex_triplet": "FF4C3E", + "graph_order": 786, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 63, + "children": [] + }, + { + "id": 3467149620, + "acronym": "PVHd_O", + "name": "Paraventricular hypothalamic nucleus, descending division: Other", + "parent_structure_id": 63, + "color_hex_triplet": "FF4C3E", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 693, + "atlas_id": 369, + "ontology_id": 1, + "acronym": "VMH", + "name": "Ventromedial hypothalamic nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 787, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [ + { + "id": 761, + "atlas_id": 802, + "ontology_id": 1, + "acronym": "VMHa", + "name": "Ventromedial hypothalamic nucleus, anterior part", + "color_hex_triplet": "FF4C3E", + "graph_order": 788, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 693, + "children": [] + }, + { + "id": 769, + "atlas_id": 803, + "ontology_id": 1, + "acronym": "VMHc", + "name": "Ventromedial hypothalamic nucleus, central part", + "color_hex_triplet": "FF4C3E", + "graph_order": 789, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 693, + "children": [] + }, + { + "id": 777, + "atlas_id": 804, + "ontology_id": 1, + "acronym": "VMHdm", + "name": "Ventromedial hypothalamic nucleus, dorsomedial part", + "color_hex_triplet": "FF4C3E", + "graph_order": 790, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 693, + "children": [] + }, + { + "id": 785, + "atlas_id": 805, + "ontology_id": 1, + "acronym": "VMHvl", + "name": "Ventromedial hypothalamic nucleus, ventrolateral part", + "color_hex_triplet": "FF4C3E", + "graph_order": 791, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 693, + "children": [] + }, + { + "id": 2723065947, + "acronym": "VMH_O", + "name": "Ventromedial hypothalamic nucleus: Other", + "parent_structure_id": 693, + "color_hex_triplet": "FF4C3E", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 946, + "atlas_id": 259, + "ontology_id": 1, + "acronym": "PH", + "name": "Posterior hypothalamic nucleus", + "color_hex_triplet": "FF4C3E", + "graph_order": 792, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 467, + "children": [] + } + ] + }, + { + "id": 290, + "atlas_id": 177, + "ontology_id": 1, + "acronym": "LZ", + "name": "Hypothalamic lateral zone", + "color_hex_triplet": "F2483B", + "graph_order": 793, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [ + { + "id": 194, + "atlas_id": 165, + "ontology_id": 1, + "acronym": "LHA", + "name": "Lateral hypothalamic area", + "color_hex_triplet": "F2483B", + "graph_order": 794, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 226, + "atlas_id": 169, + "ontology_id": 1, + "acronym": "LPO", + "name": "Lateral preoptic area", + "color_hex_triplet": "F2483B", + "graph_order": 795, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 356, + "atlas_id": 468, + "ontology_id": 1, + "acronym": "PST", + "name": "Preparasubthalamic nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 796, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 364, + "atlas_id": 469, + "ontology_id": 1, + "acronym": "PSTN", + "name": "Parasubthalamic nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 797, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 576073704, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PeF", + "name": "Perifornical nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 798, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 173, + "atlas_id": 304, + "ontology_id": 1, + "acronym": "RCH", + "name": "Retrochiasmatic area", + "color_hex_triplet": "F2483B", + "graph_order": 799, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 470, + "atlas_id": 341, + "ontology_id": 1, + "acronym": "STN", + "name": "Subthalamic nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 800, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 614, + "atlas_id": 359, + "ontology_id": 1, + "acronym": "TU", + "name": "Tuberal nucleus", + "color_hex_triplet": "F2483B", + "graph_order": 801, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [] + }, + { + "id": 797, + "atlas_id": 382, + "ontology_id": 1, + "acronym": "ZI", + "name": "Zona incerta", + "color_hex_triplet": "F2483B", + "graph_order": 802, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 290, + "children": [ + { + "id": 796, + "atlas_id": 806, + "ontology_id": 1, + "acronym": "A13", + "name": "Dopaminergic A13 group", + "color_hex_triplet": "F2483B", + "graph_order": 803, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 797, + "children": [] + }, + { + "id": 804, + "atlas_id": 807, + "ontology_id": 1, + "acronym": "FF", + "name": "Fields of Forel", + "color_hex_triplet": "F2483B", + "graph_order": 804, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 797, + "children": [] + }, + { + "id": 1171543751, + "acronym": "ZI_O", + "name": "Zona incerta: Other", + "parent_structure_id": 797, + "color_hex_triplet": "F2483B", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 10671, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ME", + "name": "Median eminence", + "color_hex_triplet": "F2483B", + "graph_order": 805, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1097, + "children": [] + }, + { + "id": 1842735199, + "acronym": "HY_O", + "name": "Hypothalamus: Other", + "parent_structure_id": 1097, + "color_hex_triplet": "E64438", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 313, + "atlas_id": 180, + "ontology_id": 1, + "acronym": "MB", + "name": "Midbrain", + "color_hex_triplet": "FF64FF", + "graph_order": 806, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 343, + "children": [ + { + "id": 339, + "atlas_id": 183, + "ontology_id": 1, + "acronym": "MBsen", + "name": "Midbrain, sensory related", + "color_hex_triplet": "FF7AFF", + "graph_order": 807, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 313, + "children": [ + { + "id": 302, + "atlas_id": 320, + "ontology_id": 1, + "acronym": "SCs", + "name": "Superior colliculus, sensory related", + "color_hex_triplet": "FF7AFF", + "graph_order": 808, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [ + { + "id": 851, + "atlas_id": 813, + "ontology_id": 1, + "acronym": "SCop", + "name": "Superior colliculus, optic layer", + "color_hex_triplet": "FF7AFF", + "graph_order": 809, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 302, + "children": [] + }, + { + "id": 842, + "atlas_id": 812, + "ontology_id": 1, + "acronym": "SCsg", + "name": "Superior colliculus, superficial gray layer", + "color_hex_triplet": "FF7AFF", + "graph_order": 810, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 302, + "children": [] + }, + { + "id": 834, + "atlas_id": 811, + "ontology_id": 1, + "acronym": "SCzo", + "name": "Superior colliculus, zonal layer", + "color_hex_triplet": "FF7AFF", + "graph_order": 811, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 302, + "children": [] + } + ] + }, + { + "id": 4, + "atlas_id": 141, + "ontology_id": 1, + "acronym": "IC", + "name": "Inferior colliculus", + "color_hex_triplet": "FF7AFF", + "graph_order": 812, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [ + { + "id": 811, + "atlas_id": 808, + "ontology_id": 1, + "acronym": "ICc", + "name": "Inferior colliculus, central nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 813, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 4, + "children": [] + }, + { + "id": 820, + "atlas_id": 809, + "ontology_id": 1, + "acronym": "ICd", + "name": "Inferior colliculus, dorsal nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 814, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 4, + "children": [] + }, + { + "id": 828, + "atlas_id": 810, + "ontology_id": 1, + "acronym": "ICe", + "name": "Inferior colliculus, external nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 815, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 4, + "children": [] + } + ] + }, + { + "id": 580, + "atlas_id": 213, + "ontology_id": 1, + "acronym": "NB", + "name": "Nucleus of the brachium of the inferior colliculus", + "color_hex_triplet": "FF7AFF", + "graph_order": 816, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + }, + { + "id": 271, + "atlas_id": 316, + "ontology_id": 1, + "acronym": "SAG", + "name": "Nucleus sagulum", + "color_hex_triplet": "FF7AFF", + "graph_order": 817, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + }, + { + "id": 874, + "atlas_id": 250, + "ontology_id": 1, + "acronym": "PBG", + "name": "Parabigeminal nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 818, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + }, + { + "id": 460, + "atlas_id": 198, + "ontology_id": 1, + "acronym": "MEV", + "name": "Midbrain trigeminal nucleus", + "color_hex_triplet": "FF7AFF", + "graph_order": 819, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + }, + { + "id": 599626923, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SCO", + "name": "Subcommissural organ", + "color_hex_triplet": "FF7AFF", + "graph_order": 820, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 339, + "children": [] + } + ] + }, + { + "id": 323, + "atlas_id": 181, + "ontology_id": 1, + "acronym": "MBmot", + "name": "Midbrain, motor related", + "color_hex_triplet": "FF90FF", + "graph_order": 821, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 313, + "children": [ + { + "id": 381, + "atlas_id": 330, + "ontology_id": 1, + "acronym": "SNr", + "name": "Substantia nigra, reticular part", + "color_hex_triplet": "FF90FF", + "graph_order": 822, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 749, + "atlas_id": 376, + "ontology_id": 1, + "acronym": "VTA", + "name": "Ventral tegmental area", + "color_hex_triplet": "FF90FF", + "graph_order": 823, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 607344830, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PN", + "name": "Paranigral nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 824, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 246, + "atlas_id": 313, + "ontology_id": 1, + "acronym": "RR", + "name": "Midbrain reticular nucleus, retrorubral area", + "color_hex_triplet": "FF90FF", + "graph_order": 825, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 128, + "atlas_id": 864, + "ontology_id": 1, + "acronym": "MRN", + "name": "Midbrain reticular nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 826, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [ + { + "id": 539, + "atlas_id": 208, + "ontology_id": 1, + "acronym": "MRNm", + "name": "Midbrain reticular nucleus, magnocellular part", + "color_hex_triplet": "FF90FF", + "graph_order": 827, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 128, + "children": [] + }, + { + "id": 548, + "atlas_id": 209, + "ontology_id": 1, + "acronym": "MRNmg", + "name": "Midbrain reticular nucleus, magnocellular part, general", + "color_hex_triplet": "FF90FF", + "graph_order": 828, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 128, + "children": [] + }, + { + "id": 555, + "atlas_id": 210, + "ontology_id": 1, + "acronym": "MRNp", + "name": "Midbrain reticular nucleus, parvicellular part", + "color_hex_triplet": "FF90FF", + "graph_order": 829, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 128, + "children": [] + }, + { + "id": 1040222935, + "acronym": "MRN_O", + "name": "Midbrain reticular nucleus: Other", + "parent_structure_id": 128, + "color_hex_triplet": "FF90FF", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 294, + "atlas_id": 319, + "ontology_id": 1, + "acronym": "SCm", + "name": "Superior colliculus, motor related", + "color_hex_triplet": "FF90FF", + "graph_order": 830, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [ + { + "id": 26, + "atlas_id": 427, + "ontology_id": 1, + "acronym": "SCdg", + "name": "Superior colliculus, motor related, deep gray layer", + "color_hex_triplet": "FF90FF", + "graph_order": 831, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 294, + "children": [] + }, + { + "id": 42, + "atlas_id": 429, + "ontology_id": 1, + "acronym": "SCdw", + "name": "Superior colliculus, motor related, deep white layer", + "color_hex_triplet": "FF90FF", + "graph_order": 832, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 294, + "children": [] + }, + { + "id": 17, + "atlas_id": 426, + "ontology_id": 1, + "acronym": "SCiw", + "name": "Superior colliculus, motor related, intermediate white layer", + "color_hex_triplet": "FF90FF", + "graph_order": 833, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 294, + "children": [] + }, + { + "id": 10, + "atlas_id": 425, + "ontology_id": 1, + "acronym": "SCig", + "name": "Superior colliculus, motor related, intermediate gray layer", + "color_hex_triplet": "FF90FF", + "graph_order": 834, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 294, + "children": [ + { + "id": 494, + "atlas_id": 910, + "ontology_id": 1, + "acronym": "SCig-a", + "name": "Superior colliculus, motor related, intermediate gray layer, sublayer a", + "color_hex_triplet": "FF90FF", + "graph_order": 835, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 10, + "children": [] + }, + { + "id": 503, + "atlas_id": 911, + "ontology_id": 1, + "acronym": "SCig-b", + "name": "Superior colliculus, motor related, intermediate gray layer, sublayer b", + "color_hex_triplet": "FF90FF", + "graph_order": 836, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 10, + "children": [] + }, + { + "id": 511, + "atlas_id": 912, + "ontology_id": 1, + "acronym": "SCig-c", + "name": "Superior colliculus, motor related, intermediate gray layer, sublayer c", + "color_hex_triplet": "FF90FF", + "graph_order": 837, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 10, + "children": [] + }, + { + "id": 3654510924, + "acronym": "SCig_O", + "name": "Superior colliculus, motor related, intermediate gray layer: Other", + "parent_structure_id": 10, + "color_hex_triplet": "FF90FF", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 795, + "atlas_id": 240, + "ontology_id": 1, + "acronym": "PAG", + "name": "Periaqueductal gray", + "color_hex_triplet": "FF90FF", + "graph_order": 838, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [ + { + "id": 50, + "atlas_id": 430, + "ontology_id": 1, + "acronym": "PRC", + "name": "Precommissural nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 839, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 795, + "children": [] + }, + { + "id": 67, + "atlas_id": 149, + "ontology_id": 1, + "acronym": "INC", + "name": "Interstitial nucleus of Cajal", + "color_hex_triplet": "FF90FF", + "graph_order": 840, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 795, + "children": [] + }, + { + "id": 587, + "atlas_id": 214, + "ontology_id": 1, + "acronym": "ND", + "name": "Nucleus of Darkschewitsch", + "color_hex_triplet": "FF90FF", + "graph_order": 841, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 795, + "children": [] + }, + { + "id": 614454277, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Su3", + "name": "Supraoculomotor periaqueductal gray", + "color_hex_triplet": "FF90FF", + "graph_order": 842, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 795, + "children": [] + }, + { + "id": 2956165934, + "acronym": "PAG_O", + "name": "Periaqueductal gray: Other", + "parent_structure_id": 795, + "color_hex_triplet": "FF90FF", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 1100, + "atlas_id": 278, + "ontology_id": 1, + "acronym": "PRT", + "name": "Pretectal region", + "color_hex_triplet": "FF90FF", + "graph_order": 843, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [ + { + "id": 215, + "atlas_id": 26, + "ontology_id": 1, + "acronym": "APN", + "name": "Anterior pretectal nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 844, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 531, + "atlas_id": 207, + "ontology_id": 1, + "acronym": "MPT", + "name": "Medial pretectal area", + "color_hex_triplet": "FF90FF", + "graph_order": 845, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 628, + "atlas_id": 219, + "ontology_id": 1, + "acronym": "NOT", + "name": "Nucleus of the optic tract", + "color_hex_triplet": "FF90FF", + "graph_order": 846, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 634, + "atlas_id": 220, + "ontology_id": 1, + "acronym": "NPC", + "name": "Nucleus of the posterior commissure", + "color_hex_triplet": "FF90FF", + "graph_order": 847, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 706, + "atlas_id": 229, + "ontology_id": 1, + "acronym": "OP", + "name": "Olivary pretectal nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 848, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 1061, + "atlas_id": 273, + "ontology_id": 1, + "acronym": "PPT", + "name": "Posterior pretectal nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 849, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + }, + { + "id": 549009203, + "atlas_id": null, + "ontology_id": 1, + "acronym": "RPF", + "name": "Retroparafascicular nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 850, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1100, + "children": [] + } + ] + }, + { + "id": 549009207, + "atlas_id": null, + "ontology_id": 1, + "acronym": "InCo", + "name": "Intercollicular nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 851, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 616, + "atlas_id": 76, + "ontology_id": 1, + "acronym": "CUN", + "name": "Cuneiform nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 852, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 214, + "atlas_id": 309, + "ontology_id": 1, + "acronym": "RN", + "name": "Red nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 853, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 35, + "atlas_id": 145, + "ontology_id": 1, + "acronym": "III", + "name": "Oculomotor nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 854, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 549009211, + "atlas_id": null, + "ontology_id": 1, + "acronym": "MA3", + "name": "Medial accesory oculomotor nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 855, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 975, + "atlas_id": 121, + "ontology_id": 1, + "acronym": "EW", + "name": "Edinger-Westphal nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 856, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 115, + "atlas_id": 155, + "ontology_id": 1, + "acronym": "IV", + "name": "Trochlear nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 857, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 606826663, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Pa4", + "name": "Paratrochlear nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 858, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 757, + "atlas_id": 377, + "ontology_id": 1, + "acronym": "VTN", + "name": "Ventral tegmental nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 859, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 231, + "atlas_id": 28, + "ontology_id": 1, + "acronym": "AT", + "name": "Anterior tegmental nucleus", + "color_hex_triplet": "FF90FF", + "graph_order": 860, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 66, + "atlas_id": 432, + "ontology_id": 1, + "acronym": "LT", + "name": "Lateral terminal nucleus of the accessory optic tract", + "color_hex_triplet": "FF90FF", + "graph_order": 861, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 75, + "atlas_id": 433, + "ontology_id": 1, + "acronym": "DT", + "name": "Dorsal terminal nucleus of the accessory optic tract", + "color_hex_triplet": "FF90FF", + "graph_order": 862, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 58, + "atlas_id": 431, + "ontology_id": 1, + "acronym": "MT", + "name": "Medial terminal nucleus of the accessory optic tract", + "color_hex_triplet": "FF90FF", + "graph_order": 863, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + }, + { + "id": 615, + "atlas_id": 925, + "ontology_id": 1, + "acronym": "SNl", + "name": "Substantia nigra, lateral part", + "color_hex_triplet": "FF90FF", + "graph_order": 864, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 323, + "children": [] + } + ] + }, + { + "id": 348, + "atlas_id": 184, + "ontology_id": 1, + "acronym": "MBsta", + "name": "Midbrain, behavioral state related", + "color_hex_triplet": "FF90FF", + "graph_order": 865, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 313, + "children": [ + { + "id": 374, + "atlas_id": 329, + "ontology_id": 1, + "acronym": "SNc", + "name": "Substantia nigra, compact part", + "color_hex_triplet": "FFA6FF", + "graph_order": 866, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 348, + "children": [] + }, + { + "id": 1052, + "atlas_id": 272, + "ontology_id": 1, + "acronym": "PPN", + "name": "Pedunculopontine nucleus", + "color_hex_triplet": "FFA6FF", + "graph_order": 867, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 348, + "children": [] + }, + { + "id": 165, + "atlas_id": 303, + "ontology_id": 1, + "acronym": "RAmb", + "name": "Midbrain raphe nuclei", + "color_hex_triplet": "FFA6FF", + "graph_order": 868, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 348, + "children": [ + { + "id": 12, + "atlas_id": 142, + "ontology_id": 1, + "acronym": "IF", + "name": "Interfascicular nucleus raphe", + "color_hex_triplet": "FFA6FF", + "graph_order": 869, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [] + }, + { + "id": 100, + "atlas_id": 153, + "ontology_id": 1, + "acronym": "IPN", + "name": "Interpeduncular nucleus", + "color_hex_triplet": "FFA6FF", + "graph_order": 870, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [ + { + "id": 607344834, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPR", + "name": "Interpeduncular nucleus, rostral", + "color_hex_triplet": "FFA6FF", + "graph_order": 871, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344838, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPC", + "name": "Interpeduncular nucleus, caudal", + "color_hex_triplet": "FFA6FF", + "graph_order": 872, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344842, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPA", + "name": "Interpeduncular nucleus, apical", + "color_hex_triplet": "FFA6FF", + "graph_order": 873, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344846, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPL", + "name": "Interpeduncular nucleus, lateral", + "color_hex_triplet": "FFA6FF", + "graph_order": 874, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344850, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPI", + "name": "Interpeduncular nucleus, intermediate", + "color_hex_triplet": "FFA6FF", + "graph_order": 875, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344854, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPDM", + "name": "Interpeduncular nucleus, dorsomedial", + "color_hex_triplet": "FFA6FF", + "graph_order": 876, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344858, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPDL", + "name": "Interpeduncular nucleus, dorsolateral", + "color_hex_triplet": "FFA6FF", + "graph_order": 877, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 607344862, + "atlas_id": null, + "ontology_id": 1, + "acronym": "IPRL", + "name": "Interpeduncular nucleus, rostrolateral", + "color_hex_triplet": "FFA6FF", + "graph_order": 878, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 100, + "children": [] + }, + { + "id": 2183090366, + "acronym": "IPN_O", + "name": "Interpeduncular nucleus: Other", + "parent_structure_id": 100, + "color_hex_triplet": "FFA6FF", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 197, + "atlas_id": 307, + "ontology_id": 1, + "acronym": "RL", + "name": "Rostral linear nucleus raphe", + "color_hex_triplet": "FFA6FF", + "graph_order": 879, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [] + }, + { + "id": 591, + "atlas_id": 73, + "ontology_id": 1, + "acronym": "CLI", + "name": "Central linear nucleus raphe", + "color_hex_triplet": "FFA6FF", + "graph_order": 880, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [] + }, + { + "id": 872, + "atlas_id": 108, + "ontology_id": 1, + "acronym": "DR", + "name": "Dorsal nucleus raphe", + "color_hex_triplet": "FFA6FF", + "graph_order": 881, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 165, + "children": [] + } + ] + } + ] + }, + { + "id": 3101970431, + "acronym": "MB_O", + "name": "Midbrain: Other", + "parent_structure_id": 313, + "color_hex_triplet": "FF64FF", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 1065, + "atlas_id": 132, + "ontology_id": 1, + "acronym": "HB", + "name": "Hindbrain", + "color_hex_triplet": "FF9B88", + "graph_order": 882, + "st_level": 3, + "hemisphere_id": 3, + "parent_structure_id": 343, + "children": [ + { + "id": 771, + "atlas_id": 237, + "ontology_id": 1, + "acronym": "P", + "name": "Pons", + "color_hex_triplet": "FF9B88", + "graph_order": 883, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 1065, + "children": [ + { + "id": 1132, + "atlas_id": 282, + "ontology_id": 1, + "acronym": "P-sen", + "name": "Pons, sensory related", + "color_hex_triplet": "FFAE6F", + "graph_order": 884, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 771, + "children": [ + { + "id": 612, + "atlas_id": 217, + "ontology_id": 1, + "acronym": "NLL", + "name": "Nucleus of the lateral lemniscus", + "color_hex_triplet": "FFAE6F", + "graph_order": 885, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1132, + "children": [ + { + "id": 82, + "atlas_id": 434, + "ontology_id": 1, + "acronym": "NLLd", + "name": "Nucleus of the lateral lemniscus, dorsal part", + "color_hex_triplet": "FFAE6F", + "graph_order": 886, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 612, + "children": [] + }, + { + "id": 90, + "atlas_id": 435, + "ontology_id": 1, + "acronym": "NLLh", + "name": "Nucleus of the lateral lemniscus, horizontal part", + "color_hex_triplet": "FFAE6F", + "graph_order": 887, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 612, + "children": [] + }, + { + "id": 99, + "atlas_id": 436, + "ontology_id": 1, + "acronym": "NLLv", + "name": "Nucleus of the lateral lemniscus, ventral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 888, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 612, + "children": [] + }, + { + "id": 2127067043, + "acronym": "NLL_O", + "name": "Nucleus of the lateral lemniscus: Other", + "parent_structure_id": 612, + "color_hex_triplet": "FFAE6F", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 7, + "atlas_id": 283, + "ontology_id": 1, + "acronym": "PSV", + "name": "Principal sensory nucleus of the trigeminal", + "color_hex_triplet": "FFAE6F", + "graph_order": 889, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1132, + "children": [] + }, + { + "id": 867, + "atlas_id": 249, + "ontology_id": 1, + "acronym": "PB", + "name": "Parabrachial nucleus", + "color_hex_triplet": "FFAE6F", + "graph_order": 890, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1132, + "children": [ + { + "id": 123, + "atlas_id": 156, + "ontology_id": 1, + "acronym": "KF", + "name": "Koelliker-Fuse subnucleus", + "color_hex_triplet": "FFAE6F", + "graph_order": 891, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 867, + "children": [] + }, + { + "id": 881, + "atlas_id": 251, + "ontology_id": 1, + "acronym": "PBl", + "name": "Parabrachial nucleus, lateral division", + "color_hex_triplet": "FFAE6F", + "graph_order": 892, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 867, + "children": [ + { + "id": 860, + "atlas_id": 814, + "ontology_id": 1, + "acronym": "PBlc", + "name": "Parabrachial nucleus, lateral division, central lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 893, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + }, + { + "id": 868, + "atlas_id": 815, + "ontology_id": 1, + "acronym": "PBld", + "name": "Parabrachial nucleus, lateral division, dorsal lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 894, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + }, + { + "id": 875, + "atlas_id": 816, + "ontology_id": 1, + "acronym": "PBle", + "name": "Parabrachial nucleus, lateral division, external lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 895, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + }, + { + "id": 883, + "atlas_id": 817, + "ontology_id": 1, + "acronym": "PBls", + "name": "Parabrachial nucleus, lateral division, superior lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 896, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + }, + { + "id": 891, + "atlas_id": 818, + "ontology_id": 1, + "acronym": "PBlv", + "name": "Parabrachial nucleus, lateral division, ventral lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 897, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 881, + "children": [] + } + ] + }, + { + "id": 890, + "atlas_id": 252, + "ontology_id": 1, + "acronym": "PBm", + "name": "Parabrachial nucleus, medial division", + "color_hex_triplet": "FFAE6F", + "graph_order": 898, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 867, + "children": [ + { + "id": 899, + "atlas_id": 819, + "ontology_id": 1, + "acronym": "PBme", + "name": "Parabrachial nucleus, medial division, external medial part", + "color_hex_triplet": "FFAE6F", + "graph_order": 899, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 890, + "children": [] + }, + { + "id": 915, + "atlas_id": 821, + "ontology_id": 1, + "acronym": "PBmm", + "name": "Parabrachial nucleus, medial division, medial medial part", + "color_hex_triplet": "FFAE6F", + "graph_order": 900, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 890, + "children": [] + }, + { + "id": 923, + "atlas_id": 822, + "ontology_id": 1, + "acronym": "PBmv", + "name": "Parabrachial nucleus, medial division, ventral medial part", + "color_hex_triplet": "FFAE6F", + "graph_order": 901, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 890, + "children": [] + } + ] + }, + { + "id": 3409505442, + "acronym": "PB_O", + "name": "Parabrachial nucleus: Other", + "parent_structure_id": 867, + "color_hex_triplet": "FFAE6F", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 398, + "atlas_id": 332, + "ontology_id": 1, + "acronym": "SOC", + "name": "Superior olivary complex", + "color_hex_triplet": "FFAE6F", + "graph_order": 902, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1132, + "children": [ + { + "id": 122, + "atlas_id": 439, + "ontology_id": 1, + "acronym": "POR", + "name": "Superior olivary complex, periolivary region", + "color_hex_triplet": "FFAE6F", + "graph_order": 903, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 398, + "children": [] + }, + { + "id": 105, + "atlas_id": 437, + "ontology_id": 1, + "acronym": "SOCm", + "name": "Superior olivary complex, medial part", + "color_hex_triplet": "FFAE6F", + "graph_order": 904, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 398, + "children": [] + }, + { + "id": 114, + "atlas_id": 438, + "ontology_id": 1, + "acronym": "SOCl", + "name": "Superior olivary complex, lateral part", + "color_hex_triplet": "FFAE6F", + "graph_order": 905, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 398, + "children": [] + } + ] + } + ] + }, + { + "id": 987, + "atlas_id": 264, + "ontology_id": 1, + "acronym": "P-mot", + "name": "Pons, motor related", + "color_hex_triplet": "FFBA86", + "graph_order": 906, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 771, + "children": [ + { + "id": 280, + "atlas_id": 34, + "ontology_id": 1, + "acronym": "B", + "name": "Barrington's nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 907, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 880, + "atlas_id": 109, + "ontology_id": 1, + "acronym": "DTN", + "name": "Dorsal tegmental nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 908, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 283, + "atlas_id": 176, + "ontology_id": 1, + "acronym": "LTN", + "name": "Lateral tegmental nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 909, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 599626927, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PDTg", + "name": "Posterodorsal tegmental nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 910, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 898, + "atlas_id": 253, + "ontology_id": 1, + "acronym": "PCG", + "name": "Pontine central gray", + "color_hex_triplet": "FFBA86", + "graph_order": 911, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 931, + "atlas_id": 823, + "ontology_id": 1, + "acronym": "PG", + "name": "Pontine gray", + "color_hex_triplet": "FFBA86", + "graph_order": 912, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 1093, + "atlas_id": 277, + "ontology_id": 1, + "acronym": "PRNc", + "name": "Pontine reticular nucleus, caudal part", + "color_hex_triplet": "FFBA86", + "graph_order": 913, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 552, + "atlas_id": 917, + "ontology_id": 1, + "acronym": "PRNv", + "name": "Pontine reticular nucleus, ventral part", + "color_hex_triplet": "FFBA86", + "graph_order": 914, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 318, + "atlas_id": 322, + "ontology_id": 1, + "acronym": "SG", + "name": "Supragenual nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 915, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 462, + "atlas_id": 340, + "ontology_id": 1, + "acronym": "SSN", + "name": "Superior salivatory nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 916, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 534, + "atlas_id": 349, + "ontology_id": 1, + "acronym": "SUT", + "name": "Supratrigeminal nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 917, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 574, + "atlas_id": 354, + "ontology_id": 1, + "acronym": "TRN", + "name": "Tegmental reticular nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 918, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 621, + "atlas_id": 360, + "ontology_id": 1, + "acronym": "V", + "name": "Motor nucleus of trigeminal", + "color_hex_triplet": "FFBA86", + "graph_order": 919, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 549009215, + "atlas_id": null, + "ontology_id": 1, + "acronym": "P5", + "name": "Peritrigeminal zone", + "color_hex_triplet": "FFBA86", + "graph_order": 920, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 549009219, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Acs5", + "name": "Accessory trigeminal nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 921, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 549009223, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PC5", + "name": "Parvicellular motor 5 nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 922, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + }, + { + "id": 549009227, + "atlas_id": null, + "ontology_id": 1, + "acronym": "I5", + "name": "Intertrigeminal nucleus", + "color_hex_triplet": "FFBA86", + "graph_order": 923, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 987, + "children": [] + } + ] + }, + { + "id": 1117, + "atlas_id": 280, + "ontology_id": 1, + "acronym": "P-sat", + "name": "Pons, behavioral state related", + "color_hex_triplet": "FFC395", + "graph_order": 924, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 771, + "children": [ + { + "id": 679, + "atlas_id": 84, + "ontology_id": 1, + "acronym": "CS", + "name": "Superior central nucleus raphe", + "color_hex_triplet": "FFC395", + "graph_order": 925, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [ + { + "id": 137, + "atlas_id": 441, + "ontology_id": 1, + "acronym": "CSl", + "name": "Superior central nucleus raphe, lateral part", + "color_hex_triplet": "FFC395", + "graph_order": 926, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 679, + "children": [] + }, + { + "id": 130, + "atlas_id": 440, + "ontology_id": 1, + "acronym": "CSm", + "name": "Superior central nucleus raphe, medial part", + "color_hex_triplet": "FFC395", + "graph_order": 927, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 679, + "children": [] + }, + { + "id": 2557684018, + "acronym": "CS_O", + "name": "Superior central nucleus raphe: Other", + "parent_structure_id": 679, + "color_hex_triplet": "FFC395", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 147, + "atlas_id": 159, + "ontology_id": 1, + "acronym": "LC", + "name": "Locus ceruleus", + "color_hex_triplet": "FFC395", + "graph_order": 928, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 162, + "atlas_id": 161, + "ontology_id": 1, + "acronym": "LDT", + "name": "Laterodorsal tegmental nucleus", + "color_hex_triplet": "FFC395", + "graph_order": 929, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 604, + "atlas_id": 216, + "ontology_id": 1, + "acronym": "NI", + "name": "Nucleus incertus", + "color_hex_triplet": "FFC395", + "graph_order": 930, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 146, + "atlas_id": 442, + "ontology_id": 1, + "acronym": "PRNr", + "name": "Pontine reticular nucleus", + "color_hex_triplet": "FFC395", + "graph_order": 931, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 238, + "atlas_id": 312, + "ontology_id": 1, + "acronym": "RPO", + "name": "Nucleus raphe pontis", + "color_hex_triplet": "FFC395", + "graph_order": 932, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 350, + "atlas_id": 326, + "ontology_id": 1, + "acronym": "SLC", + "name": "Subceruleus nucleus", + "color_hex_triplet": "FFC395", + "graph_order": 933, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + }, + { + "id": 358, + "atlas_id": 327, + "ontology_id": 1, + "acronym": "SLD", + "name": "Sublaterodorsal nucleus", + "color_hex_triplet": "FFC395", + "graph_order": 934, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1117, + "children": [] + } + ] + }, + { + "id": 1140764290, + "acronym": "P_O", + "name": "Pons: Other", + "parent_structure_id": 771, + "color_hex_triplet": "FF9B88", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 354, + "atlas_id": 185, + "ontology_id": 1, + "acronym": "MY", + "name": "Medulla", + "color_hex_triplet": "FF9BCD", + "graph_order": 935, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 1065, + "children": [ + { + "id": 386, + "atlas_id": 189, + "ontology_id": 1, + "acronym": "MY-sen", + "name": "Medulla, sensory related", + "color_hex_triplet": "FFA5D2", + "graph_order": 936, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 354, + "children": [ + { + "id": 207, + "atlas_id": 25, + "ontology_id": 1, + "acronym": "AP", + "name": "Area postrema", + "color_hex_triplet": "FFA5D2", + "graph_order": 937, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 607, + "atlas_id": 75, + "ontology_id": 1, + "acronym": "CN", + "name": "Cochlear nuclei", + "color_hex_triplet": "FFA5D2", + "graph_order": 938, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [ + { + "id": 112, + "atlas_id": 862, + "ontology_id": 1, + "acronym": "CNlam", + "name": "Granular lamina of the cochlear nuclei", + "color_hex_triplet": "FFA5D2", + "graph_order": 939, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 607, + "children": [] + }, + { + "id": 560, + "atlas_id": 918, + "ontology_id": 1, + "acronym": "CNspg", + "name": "Cochlear nucleus, subpedunclular granular region", + "color_hex_triplet": "FFA5D2", + "graph_order": 940, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 607, + "children": [] + }, + { + "id": 96, + "atlas_id": 860, + "ontology_id": 1, + "acronym": "DCO", + "name": "Dorsal cochlear nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 941, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 607, + "children": [] + }, + { + "id": 101, + "atlas_id": 861, + "ontology_id": 1, + "acronym": "VCO", + "name": "Ventral cochlear nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 942, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 607, + "children": [] + } + ] + }, + { + "id": 720, + "atlas_id": 89, + "ontology_id": 1, + "acronym": "DCN", + "name": "Dorsal column nuclei", + "color_hex_triplet": "FFA5D2", + "graph_order": 943, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [ + { + "id": 711, + "atlas_id": 88, + "ontology_id": 1, + "acronym": "CU", + "name": "Cuneate nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 944, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 720, + "children": [] + }, + { + "id": 1039, + "atlas_id": 129, + "ontology_id": 1, + "acronym": "GR", + "name": "Gracile nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 945, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 720, + "children": [] + } + ] + }, + { + "id": 903, + "atlas_id": 112, + "ontology_id": 1, + "acronym": "ECU", + "name": "External cuneate nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 946, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 642, + "atlas_id": 221, + "ontology_id": 1, + "acronym": "NTB", + "name": "Nucleus of the trapezoid body", + "color_hex_triplet": "FFA5D2", + "graph_order": 947, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 651, + "atlas_id": 222, + "ontology_id": 1, + "acronym": "NTS", + "name": "Nucleus of the solitary tract", + "color_hex_triplet": "FFA5D2", + "graph_order": 948, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [ + { + "id": 659, + "atlas_id": 223, + "ontology_id": 1, + "acronym": "NTSce", + "name": "Nucleus of the solitary tract, central part", + "color_hex_triplet": "FFA5D2", + "graph_order": 949, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 666, + "atlas_id": 224, + "ontology_id": 1, + "acronym": "NTSco", + "name": "Nucleus of the solitary tract, commissural part", + "color_hex_triplet": "FFA5D2", + "graph_order": 950, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 674, + "atlas_id": 225, + "ontology_id": 1, + "acronym": "NTSge", + "name": "Nucleus of the solitary tract, gelatinous part", + "color_hex_triplet": "FFA5D2", + "graph_order": 951, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 682, + "atlas_id": 226, + "ontology_id": 1, + "acronym": "NTSl", + "name": "Nucleus of the solitary tract, lateral part", + "color_hex_triplet": "FFA5D2", + "graph_order": 952, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 691, + "atlas_id": 227, + "ontology_id": 1, + "acronym": "NTSm", + "name": "Nucleus of the solitary tract, medial part", + "color_hex_triplet": "FFA5D2", + "graph_order": 953, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 651, + "children": [] + }, + { + "id": 2316153360, + "acronym": "NTS_O", + "name": "Nucleus of the solitary tract: Other", + "parent_structure_id": 651, + "color_hex_triplet": "FFA5D2", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 429, + "atlas_id": 336, + "ontology_id": 1, + "acronym": "SPVC", + "name": "Spinal nucleus of the trigeminal, caudal part", + "color_hex_triplet": "FFA5D2", + "graph_order": 954, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 437, + "atlas_id": 337, + "ontology_id": 1, + "acronym": "SPVI", + "name": "Spinal nucleus of the trigeminal, interpolar part", + "color_hex_triplet": "FFA5D2", + "graph_order": 955, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 445, + "atlas_id": 338, + "ontology_id": 1, + "acronym": "SPVO", + "name": "Spinal nucleus of the trigeminal, oral part", + "color_hex_triplet": "FFA5D2", + "graph_order": 956, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [ + { + "id": 77, + "atlas_id": 858, + "ontology_id": 1, + "acronym": "SPVOcdm", + "name": "Spinal nucleus of the trigeminal, oral part, caudal dorsomedial part", + "color_hex_triplet": "FFA5D2", + "graph_order": 957, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 53, + "atlas_id": 855, + "ontology_id": 1, + "acronym": "SPVOmdmd", + "name": "Spinal nucleus of the trigeminal, oral part, middle dorsomedial part, dorsal zone", + "color_hex_triplet": "FFA5D2", + "graph_order": 958, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 61, + "atlas_id": 856, + "ontology_id": 1, + "acronym": "SPVOmdmv", + "name": "Spinal nucleus of the trigeminal, oral part, middle dorsomedial part, ventral zone", + "color_hex_triplet": "FFA5D2", + "graph_order": 959, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 45, + "atlas_id": 854, + "ontology_id": 1, + "acronym": "SPVOrdm", + "name": "Spinal nucleus of the trigeminal, oral part, rostral dorsomedial part", + "color_hex_triplet": "FFA5D2", + "graph_order": 960, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 69, + "atlas_id": 857, + "ontology_id": 1, + "acronym": "SPVOvl", + "name": "Spinal nucleus of the trigeminal, oral part, ventrolateral part", + "color_hex_triplet": "FFA5D2", + "graph_order": 961, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 445, + "children": [] + }, + { + "id": 1593308392, + "acronym": "SPVO_O", + "name": "Spinal nucleus of the trigeminal, oral part: Other", + "parent_structure_id": 445, + "color_hex_triplet": "FFA5D2", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 589508451, + "atlas_id": null, + "ontology_id": 1, + "acronym": "Pa5", + "name": "Paratrigeminal nucleus", + "color_hex_triplet": "FFA5D2", + "graph_order": 962, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + }, + { + "id": 789, + "atlas_id": 381, + "ontology_id": 1, + "acronym": "z", + "name": "Nucleus z", + "color_hex_triplet": "FFA5D2", + "graph_order": 963, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 386, + "children": [] + } + ] + }, + { + "id": 370, + "atlas_id": 187, + "ontology_id": 1, + "acronym": "MY-mot", + "name": "Medulla, motor related", + "color_hex_triplet": "FFB3D9", + "graph_order": 964, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 354, + "children": [ + { + "id": 653, + "atlas_id": 364, + "ontology_id": 1, + "acronym": "VI", + "name": "Abducens nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 965, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 568, + "atlas_id": 919, + "ontology_id": 1, + "acronym": "ACVI", + "name": "Accessory abducens nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 966, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 661, + "atlas_id": 365, + "ontology_id": 1, + "acronym": "VII", + "name": "Facial motor nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 967, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 576, + "atlas_id": 920, + "ontology_id": 1, + "acronym": "ACVII", + "name": "Accessory facial motor nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 968, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 640, + "atlas_id": 928, + "ontology_id": 1, + "acronym": "EV", + "name": "Efferent vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 969, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 135, + "atlas_id": 16, + "ontology_id": 1, + "acronym": "AMB", + "name": "Nucleus ambiguus", + "color_hex_triplet": "FFB3D9", + "graph_order": 970, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 939, + "atlas_id": 824, + "ontology_id": 1, + "acronym": "AMBd", + "name": "Nucleus ambiguus, dorsal division", + "color_hex_triplet": "FFB3D9", + "graph_order": 971, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 135, + "children": [] + }, + { + "id": 143, + "atlas_id": 17, + "ontology_id": 1, + "acronym": "AMBv", + "name": "Nucleus ambiguus, ventral division", + "color_hex_triplet": "FFB3D9", + "graph_order": 972, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 135, + "children": [] + } + ] + }, + { + "id": 839, + "atlas_id": 104, + "ontology_id": 1, + "acronym": "DMX", + "name": "Dorsal motor nucleus of the vagus nerve", + "color_hex_triplet": "FFB3D9", + "graph_order": 973, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 887, + "atlas_id": 110, + "ontology_id": 1, + "acronym": "ECO", + "name": "Efferent cochlear group", + "color_hex_triplet": "FFB3D9", + "graph_order": 974, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 1048, + "atlas_id": 130, + "ontology_id": 1, + "acronym": "GRN", + "name": "Gigantocellular reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 975, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 372, + "atlas_id": 470, + "ontology_id": 1, + "acronym": "ICB", + "name": "Infracerebellar nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 976, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 83, + "atlas_id": 151, + "ontology_id": 1, + "acronym": "IO", + "name": "Inferior olivary complex", + "color_hex_triplet": "FFB3D9", + "graph_order": 977, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 136, + "atlas_id": 865, + "ontology_id": 1, + "acronym": "IRN", + "name": "Intermediate reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 978, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 106, + "atlas_id": 154, + "ontology_id": 1, + "acronym": "ISN", + "name": "Inferior salivatory nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 979, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 203, + "atlas_id": 166, + "ontology_id": 1, + "acronym": "LIN", + "name": "Linear nucleus of the medulla", + "color_hex_triplet": "FFB3D9", + "graph_order": 980, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 235, + "atlas_id": 170, + "ontology_id": 1, + "acronym": "LRN", + "name": "Lateral reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 981, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 955, + "atlas_id": 826, + "ontology_id": 1, + "acronym": "LRNm", + "name": "Lateral reticular nucleus, magnocellular part", + "color_hex_triplet": "FFB3D9", + "graph_order": 982, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 235, + "children": [] + }, + { + "id": 963, + "atlas_id": 827, + "ontology_id": 1, + "acronym": "LRNp", + "name": "Lateral reticular nucleus, parvicellular part", + "color_hex_triplet": "FFB3D9", + "graph_order": 983, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 235, + "children": [] + } + ] + }, + { + "id": 307, + "atlas_id": 179, + "ontology_id": 1, + "acronym": "MARN", + "name": "Magnocellular reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 984, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 395, + "atlas_id": 190, + "ontology_id": 1, + "acronym": "MDRN", + "name": "Medullary reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 985, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 1098, + "atlas_id": 844, + "ontology_id": 1, + "acronym": "MDRNd", + "name": "Medullary reticular nucleus, dorsal part", + "color_hex_triplet": "FFB3D9", + "graph_order": 986, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 395, + "children": [] + }, + { + "id": 1107, + "atlas_id": 845, + "ontology_id": 1, + "acronym": "MDRNv", + "name": "Medullary reticular nucleus, ventral part", + "color_hex_triplet": "FFB3D9", + "graph_order": 987, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 395, + "children": [] + } + ] + }, + { + "id": 852, + "atlas_id": 247, + "ontology_id": 1, + "acronym": "PARN", + "name": "Parvicellular reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 988, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 859, + "atlas_id": 248, + "ontology_id": 1, + "acronym": "PAS", + "name": "Parasolitary nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 989, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 938, + "atlas_id": 258, + "ontology_id": 1, + "acronym": "PGRN", + "name": "Paragigantocellular reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 990, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 970, + "atlas_id": 828, + "ontology_id": 1, + "acronym": "PGRNd", + "name": "Paragigantocellular reticular nucleus, dorsal part", + "color_hex_triplet": "FFB3D9", + "graph_order": 991, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 938, + "children": [] + }, + { + "id": 978, + "atlas_id": 829, + "ontology_id": 1, + "acronym": "PGRNl", + "name": "Paragigantocellular reticular nucleus, lateral part", + "color_hex_triplet": "FFB3D9", + "graph_order": 992, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 938, + "children": [] + } + ] + }, + { + "id": 154, + "atlas_id": 443, + "ontology_id": 1, + "acronym": "PHY", + "name": "Perihypoglossal nuclei", + "color_hex_triplet": "FFB3D9", + "graph_order": 993, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 161, + "atlas_id": 444, + "ontology_id": 1, + "acronym": "NIS", + "name": "Nucleus intercalatus", + "color_hex_triplet": "FFB3D9", + "graph_order": 994, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 154, + "children": [] + }, + { + "id": 177, + "atlas_id": 446, + "ontology_id": 1, + "acronym": "NR", + "name": "Nucleus of Roller", + "color_hex_triplet": "FFB3D9", + "graph_order": 995, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 154, + "children": [] + }, + { + "id": 169, + "atlas_id": 445, + "ontology_id": 1, + "acronym": "PRP", + "name": "Nucleus prepositus", + "color_hex_triplet": "FFB3D9", + "graph_order": 996, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 154, + "children": [] + } + ] + }, + { + "id": 995, + "atlas_id": 265, + "ontology_id": 1, + "acronym": "PMR", + "name": "Paramedian reticular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 997, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 1069, + "atlas_id": 274, + "ontology_id": 1, + "acronym": "PPY", + "name": "Parapyramidal nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 998, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 185, + "atlas_id": 447, + "ontology_id": 1, + "acronym": "PPYd", + "name": "Parapyramidal nucleus, deep part", + "color_hex_triplet": "FFB3D9", + "graph_order": 999, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1069, + "children": [] + }, + { + "id": 193, + "atlas_id": 448, + "ontology_id": 1, + "acronym": "PPYs", + "name": "Parapyramidal nucleus, superficial part", + "color_hex_triplet": "FFB3D9", + "graph_order": 1000, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1069, + "children": [] + }, + { + "id": 2114704803, + "acronym": "PPY_O", + "name": "Parapyramidal nucleus: Other", + "parent_structure_id": 1069, + "color_hex_triplet": "FFB3D9", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 701, + "atlas_id": 370, + "ontology_id": 1, + "acronym": "VNC", + "name": "Vestibular nuclei", + "color_hex_triplet": "FFB3D9", + "graph_order": 1001, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [ + { + "id": 209, + "atlas_id": 450, + "ontology_id": 1, + "acronym": "LAV", + "name": "Lateral vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1002, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 701, + "children": [] + }, + { + "id": 202, + "atlas_id": 449, + "ontology_id": 1, + "acronym": "MV", + "name": "Medial vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1003, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 701, + "children": [] + }, + { + "id": 225, + "atlas_id": 452, + "ontology_id": 1, + "acronym": "SPIV", + "name": "Spinal vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1004, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 701, + "children": [] + }, + { + "id": 217, + "atlas_id": 451, + "ontology_id": 1, + "acronym": "SUV", + "name": "Superior vestibular nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1005, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 701, + "children": [] + } + ] + }, + { + "id": 765, + "atlas_id": 378, + "ontology_id": 1, + "acronym": "x", + "name": "Nucleus x", + "color_hex_triplet": "FFB3D9", + "graph_order": 1006, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 773, + "atlas_id": 379, + "ontology_id": 1, + "acronym": "XII", + "name": "Hypoglossal nucleus", + "color_hex_triplet": "FFB3D9", + "graph_order": 1007, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 781, + "atlas_id": 380, + "ontology_id": 1, + "acronym": "y", + "name": "Nucleus y", + "color_hex_triplet": "FFB3D9", + "graph_order": 1008, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + }, + { + "id": 76, + "atlas_id": 150, + "ontology_id": 1, + "acronym": "INV", + "name": "Interstitial nucleus of the vestibular nerve", + "color_hex_triplet": "FFB3D9", + "graph_order": 1009, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 370, + "children": [] + } + ] + }, + { + "id": 379, + "atlas_id": 188, + "ontology_id": 1, + "acronym": "MY-sat", + "name": "Medulla, behavioral state related", + "color_hex_triplet": "FFC6E2", + "graph_order": 1010, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 354, + "children": [ + { + "id": 206, + "atlas_id": 308, + "ontology_id": 1, + "acronym": "RM", + "name": "Nucleus raphe magnus", + "color_hex_triplet": "FFC6E2", + "graph_order": 1011, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 379, + "children": [] + }, + { + "id": 230, + "atlas_id": 311, + "ontology_id": 1, + "acronym": "RPA", + "name": "Nucleus raphe pallidus", + "color_hex_triplet": "FFC6E2", + "graph_order": 1012, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 379, + "children": [] + }, + { + "id": 222, + "atlas_id": 310, + "ontology_id": 1, + "acronym": "RO", + "name": "Nucleus raphe obscurus", + "color_hex_triplet": "FFC6E2", + "graph_order": 1013, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 379, + "children": [] + } + ] + }, + { + "id": 1557651847, + "acronym": "MY_O", + "name": "Medulla: Other", + "parent_structure_id": 354, + "color_hex_triplet": "FF9BCD", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 512, + "atlas_id": 63, + "ontology_id": 1, + "acronym": "CB", + "name": "Cerebellum", + "color_hex_triplet": "F0F080", + "graph_order": 1014, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 8, + "children": [ + { + "id": 528, + "atlas_id": 65, + "ontology_id": 1, + "acronym": "CBX", + "name": "Cerebellar cortex", + "color_hex_triplet": "F0F080", + "graph_order": 1015, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 512, + "children": [ + { + "id": 1144, + "atlas_id": 1142, + "ontology_id": 1, + "acronym": "CBXmo", + "name": "Cerebellar cortex, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1016, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [] + }, + { + "id": 1145, + "atlas_id": 1143, + "ontology_id": 1, + "acronym": "CBXpu", + "name": "Cerebellar cortex, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1017, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [] + }, + { + "id": 1143, + "atlas_id": 1141, + "ontology_id": 1, + "acronym": "CBXgr", + "name": "Cerebellar cortex, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1018, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [] + }, + { + "id": 645, + "atlas_id": 363, + "ontology_id": 1, + "acronym": "VERM", + "name": "Vermal regions", + "color_hex_triplet": "FFFC91", + "graph_order": 1019, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [ + { + "id": 912, + "atlas_id": 396, + "ontology_id": 1, + "acronym": "LING", + "name": "Lingula (I)", + "color_hex_triplet": "FFFC91", + "graph_order": 1020, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10707, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LINGmo", + "name": "Lingula (I), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1021, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 912, + "children": [] + }, + { + "id": 10706, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LINGpu", + "name": "Lingula (I), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1022, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 912, + "children": [] + }, + { + "id": 10705, + "atlas_id": null, + "ontology_id": 1, + "acronym": "LINGgr", + "name": "Lingula (I), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1023, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 912, + "children": [] + } + ] + }, + { + "id": 920, + "atlas_id": 397, + "ontology_id": 1, + "acronym": "CENT", + "name": "Central lobule", + "color_hex_triplet": "FFFC91", + "graph_order": 1024, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 976, + "atlas_id": 404, + "ontology_id": 1, + "acronym": "CENT2", + "name": "Lobule II", + "color_hex_triplet": "FFFC91", + "graph_order": 1025, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 920, + "children": [ + { + "id": 10710, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT2mo", + "name": "Lobule II, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1026, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 976, + "children": [] + }, + { + "id": 10709, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT2pu", + "name": "Lobule II, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1027, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 976, + "children": [] + }, + { + "id": 10708, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT2gr", + "name": "Lobule II, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1028, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 976, + "children": [] + } + ] + }, + { + "id": 984, + "atlas_id": 405, + "ontology_id": 1, + "acronym": "CENT3", + "name": "Lobule III", + "color_hex_triplet": "FFFC91", + "graph_order": 1029, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 920, + "children": [ + { + "id": 10713, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT3mo", + "name": "Lobule III, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1030, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 984, + "children": [] + }, + { + "id": 10712, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT3pu", + "name": "Lobule III, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1031, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 984, + "children": [] + }, + { + "id": 10711, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CENT3gr", + "name": "Lobule III, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1032, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 984, + "children": [] + } + ] + } + ] + }, + { + "id": 928, + "atlas_id": 398, + "ontology_id": 1, + "acronym": "CUL", + "name": "Culmen", + "color_hex_triplet": "FFFC91", + "graph_order": 1033, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 992, + "atlas_id": 406, + "ontology_id": 1, + "acronym": "CUL4", + "name": "Lobule IV", + "color_hex_triplet": "FFFC91", + "graph_order": 1034, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 928, + "children": [ + { + "id": 10716, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4mo", + "name": "Lobule IV, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1035, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 992, + "children": [] + }, + { + "id": 10715, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4pu", + "name": "Lobule IV, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1036, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 992, + "children": [] + }, + { + "id": 10714, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4gr", + "name": "Lobule IV, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1037, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 992, + "children": [] + } + ] + }, + { + "id": 1001, + "atlas_id": 407, + "ontology_id": 1, + "acronym": "CUL5", + "name": "Lobule V", + "color_hex_triplet": "FFFC91", + "graph_order": 1038, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 928, + "children": [ + { + "id": 10719, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL5mo", + "name": "Lobule V, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1039, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1001, + "children": [] + }, + { + "id": 10718, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL5pu", + "name": "Lobule V, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1040, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1001, + "children": [] + }, + { + "id": 10717, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL5gr", + "name": "Lobule V, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1041, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1001, + "children": [] + } + ] + }, + { + "id": 1091, + "atlas_id": 843, + "ontology_id": 1, + "acronym": "CUL4, 5", + "name": "Lobules IV-V", + "color_hex_triplet": "FFFC91", + "graph_order": 1042, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 928, + "children": [ + { + "id": 10722, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4, 5mo", + "name": "Lobules IV-V, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1043, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1091, + "children": [] + }, + { + "id": 10721, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4, 5pu", + "name": "Lobules IV-V, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1044, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1091, + "children": [] + }, + { + "id": 10720, + "atlas_id": null, + "ontology_id": 1, + "acronym": "CUL4, 5gr", + "name": "Lobules IV-V, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1045, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1091, + "children": [] + } + ] + } + ] + }, + { + "id": 936, + "atlas_id": 399, + "ontology_id": 1, + "acronym": "DEC", + "name": "Declive (VI)", + "color_hex_triplet": "FFFC91", + "graph_order": 1046, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10725, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DECmo", + "name": "Declive (VI), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1047, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 936, + "children": [] + }, + { + "id": 10724, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DECpu", + "name": "Declive (VI), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1048, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 936, + "children": [] + }, + { + "id": 10723, + "atlas_id": null, + "ontology_id": 1, + "acronym": "DECgr", + "name": "Declive (VI), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1049, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 936, + "children": [] + } + ] + }, + { + "id": 944, + "atlas_id": 400, + "ontology_id": 1, + "acronym": "FOTU", + "name": "Folium-tuber vermis (VII)", + "color_hex_triplet": "FFFC91", + "graph_order": 1050, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10728, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FOTUmo", + "name": "Folium-tuber vermis (VII), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1051, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 944, + "children": [] + }, + { + "id": 10727, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FOTUpu", + "name": "Folium-tuber vermis (VII), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1052, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 944, + "children": [] + }, + { + "id": 10726, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FOTUgr", + "name": "Folium-tuber vermis (VII), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1053, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 944, + "children": [] + } + ] + }, + { + "id": 951, + "atlas_id": 401, + "ontology_id": 1, + "acronym": "PYR", + "name": "Pyramus (VIII)", + "color_hex_triplet": "FFFC91", + "graph_order": 1054, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10731, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PYRmo", + "name": "Pyramus (VIII), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1055, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 951, + "children": [] + }, + { + "id": 10730, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PYRpu", + "name": "Pyramus (VIII), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1056, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 951, + "children": [] + }, + { + "id": 10729, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PYRgr", + "name": "Pyramus (VIII), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1057, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 951, + "children": [] + } + ] + }, + { + "id": 957, + "atlas_id": 402, + "ontology_id": 1, + "acronym": "UVU", + "name": "Uvula (IX)", + "color_hex_triplet": "FFFC91", + "graph_order": 1058, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10734, + "atlas_id": null, + "ontology_id": 1, + "acronym": "UVUmo", + "name": "Uvula (IX), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1059, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 957, + "children": [] + }, + { + "id": 10733, + "atlas_id": null, + "ontology_id": 1, + "acronym": "UVUpu", + "name": "Uvula (IX), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1060, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 957, + "children": [] + }, + { + "id": 10732, + "atlas_id": null, + "ontology_id": 1, + "acronym": "UVUgr", + "name": "Uvula (IX), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1061, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 957, + "children": [] + } + ] + }, + { + "id": 968, + "atlas_id": 403, + "ontology_id": 1, + "acronym": "NOD", + "name": "Nodulus (X)", + "color_hex_triplet": "FFFC91", + "graph_order": 1062, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 645, + "children": [ + { + "id": 10737, + "atlas_id": null, + "ontology_id": 1, + "acronym": "NODmo", + "name": "Nodulus (X), molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1063, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 968, + "children": [] + }, + { + "id": 10736, + "atlas_id": null, + "ontology_id": 1, + "acronym": "NODpu", + "name": "Nodulus (X), Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1064, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 968, + "children": [] + }, + { + "id": 10735, + "atlas_id": null, + "ontology_id": 1, + "acronym": "NODgr", + "name": "Nodulus (X), granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1065, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 968, + "children": [] + } + ] + } + ] + }, + { + "id": 1073, + "atlas_id": 133, + "ontology_id": 1, + "acronym": "HEM", + "name": "Hemispheric regions", + "color_hex_triplet": "FFFC91", + "graph_order": 1066, + "st_level": 6, + "hemisphere_id": 3, + "parent_structure_id": 528, + "children": [ + { + "id": 1007, + "atlas_id": 408, + "ontology_id": 1, + "acronym": "SIM", + "name": "Simple lobule", + "color_hex_triplet": "FFFC91", + "graph_order": 1067, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10674, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SIMmo", + "name": "Simple lobule, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1068, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1007, + "children": [] + }, + { + "id": 10673, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SIMpu", + "name": "Simple lobule, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1069, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1007, + "children": [] + }, + { + "id": 10672, + "atlas_id": null, + "ontology_id": 1, + "acronym": "SIMgr", + "name": "Simple lobule, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1070, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1007, + "children": [] + } + ] + }, + { + "id": 1017, + "atlas_id": 409, + "ontology_id": 1, + "acronym": "AN", + "name": "Ansiform lobule", + "color_hex_triplet": "FFFC91", + "graph_order": 1071, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 1056, + "atlas_id": 414, + "ontology_id": 1, + "acronym": "ANcr1", + "name": "Crus 1", + "color_hex_triplet": "FFFC91", + "graph_order": 1072, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1017, + "children": [ + { + "id": 10677, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr1mo", + "name": "Crus 1, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1073, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1056, + "children": [] + }, + { + "id": 10676, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr1pu", + "name": "Crus 1, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1074, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1056, + "children": [] + }, + { + "id": 10675, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr1gr", + "name": "Crus 1, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1075, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1056, + "children": [] + } + ] + }, + { + "id": 1064, + "atlas_id": 415, + "ontology_id": 1, + "acronym": "ANcr2", + "name": "Crus 2", + "color_hex_triplet": "FFFC91", + "graph_order": 1076, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1017, + "children": [ + { + "id": 10680, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr2mo", + "name": "Crus 2, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1077, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1064, + "children": [] + }, + { + "id": 10679, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr2pu", + "name": "Crus 2, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1078, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1064, + "children": [] + }, + { + "id": 10678, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ANcr2gr", + "name": "Crus 2, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1079, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1064, + "children": [] + } + ] + } + ] + }, + { + "id": 1025, + "atlas_id": 410, + "ontology_id": 1, + "acronym": "PRM", + "name": "Paramedian lobule", + "color_hex_triplet": "FFFC91", + "graph_order": 1080, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10683, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRMmo", + "name": "Paramedian lobule, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1081, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1025, + "children": [] + }, + { + "id": 10682, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRMpu", + "name": "Paramedian lobule, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1082, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1025, + "children": [] + }, + { + "id": 10681, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PRMgr", + "name": "Paramedian lobule, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1083, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1025, + "children": [] + } + ] + }, + { + "id": 1033, + "atlas_id": 411, + "ontology_id": 1, + "acronym": "COPY", + "name": "Copula pyramidis", + "color_hex_triplet": "FFFC91", + "graph_order": 1084, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10686, + "atlas_id": null, + "ontology_id": 1, + "acronym": "COPYmo", + "name": "Copula pyramidis, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1085, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1033, + "children": [] + }, + { + "id": 10685, + "atlas_id": null, + "ontology_id": 1, + "acronym": "COPYpu", + "name": "Copula pyramidis, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1086, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1033, + "children": [] + }, + { + "id": 10684, + "atlas_id": null, + "ontology_id": 1, + "acronym": "COPYgr", + "name": "Copula pyramidis, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1087, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1033, + "children": [] + } + ] + }, + { + "id": 1041, + "atlas_id": 412, + "ontology_id": 1, + "acronym": "PFL", + "name": "Paraflocculus", + "color_hex_triplet": "FFFC91", + "graph_order": 1088, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10689, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PFLmo", + "name": "Paraflocculus, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1089, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1041, + "children": [] + }, + { + "id": 10688, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PFLpu", + "name": "Paraflocculus, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1090, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1041, + "children": [] + }, + { + "id": 10687, + "atlas_id": null, + "ontology_id": 1, + "acronym": "PFLgr", + "name": "Paraflocculus, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1091, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1041, + "children": [] + } + ] + }, + { + "id": 1049, + "atlas_id": 413, + "ontology_id": 1, + "acronym": "FL", + "name": "Flocculus", + "color_hex_triplet": "FFFC91", + "graph_order": 1092, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1073, + "children": [ + { + "id": 10692, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FLmo", + "name": "Flocculus, molecular layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1093, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1049, + "children": [] + }, + { + "id": 10691, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FLpu", + "name": "Flocculus, Purkinje layer", + "color_hex_triplet": "FFFC91", + "graph_order": 1094, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1049, + "children": [] + }, + { + "id": 10690, + "atlas_id": null, + "ontology_id": 1, + "acronym": "FLgr", + "name": "Flocculus, granular layer", + "color_hex_triplet": "ECE754", + "graph_order": 1095, + "st_level": 11, + "hemisphere_id": 3, + "parent_structure_id": 1049, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 519, + "atlas_id": 64, + "ontology_id": 1, + "acronym": "CBN", + "name": "Cerebellar nuclei", + "color_hex_triplet": "F0F080", + "graph_order": 1096, + "st_level": 5, + "hemisphere_id": 3, + "parent_structure_id": 512, + "children": [ + { + "id": 989, + "atlas_id": 123, + "ontology_id": 1, + "acronym": "FN", + "name": "Fastigial nucleus", + "color_hex_triplet": "FFFDBC", + "graph_order": 1097, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 519, + "children": [] + }, + { + "id": 91, + "atlas_id": 152, + "ontology_id": 1, + "acronym": "IP", + "name": "Interposed nucleus", + "color_hex_triplet": "FFFDBC", + "graph_order": 1098, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 519, + "children": [] + }, + { + "id": 846, + "atlas_id": 105, + "ontology_id": 1, + "acronym": "DN", + "name": "Dentate nucleus", + "color_hex_triplet": "FFFDBC", + "graph_order": 1099, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 519, + "children": [] + }, + { + "id": 589508455, + "atlas_id": null, + "ontology_id": 1, + "acronym": "VeCB", + "name": "Vestibulocerebellar nucleus", + "color_hex_triplet": "FFFDBC", + "graph_order": 1100, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 519, + "children": [] + } + ] + }, + { + "id": 3092369320, + "acronym": "CB_O", + "name": "Cerebellum: Other", + "parent_structure_id": 512, + "color_hex_triplet": "F0F080", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 1009, + "atlas_id": 691, + "ontology_id": 1, + "acronym": "fiber tracts", + "name": "fiber tracts", + "color_hex_triplet": "CCCCCC", + "graph_order": 1101, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [ + { + "id": 967, + "atlas_id": 686, + "ontology_id": 1, + "acronym": "cm", + "name": "cranial nerves", + "color_hex_triplet": "CCCCCC", + "graph_order": 1102, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 885, + "atlas_id": 676, + "ontology_id": 1, + "acronym": "tn", + "name": "terminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1103, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 949, + "atlas_id": 684, + "ontology_id": 1, + "acronym": "von", + "name": "vomeronasal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1104, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 840, + "atlas_id": 670, + "ontology_id": 1, + "acronym": "In", + "name": "olfactory nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1105, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 1016, + "atlas_id": 692, + "ontology_id": 1, + "acronym": "onl", + "name": "olfactory nerve layer of main olfactory bulb", + "color_hex_triplet": "CCCCCC", + "graph_order": 1106, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 840, + "children": [] + }, + { + "id": 21, + "atlas_id": 568, + "ontology_id": 1, + "acronym": "lotg", + "name": "lateral olfactory tract, general", + "color_hex_triplet": "CCCCCC", + "graph_order": 1107, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 840, + "children": [ + { + "id": 665, + "atlas_id": 507, + "ontology_id": 1, + "acronym": "lot", + "name": "lateral olfactory tract, body", + "color_hex_triplet": "CCCCCC", + "graph_order": 1108, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 21, + "children": [] + }, + { + "id": 538, + "atlas_id": 491, + "ontology_id": 1, + "acronym": "lotd", + "name": "dorsal limb", + "color_hex_triplet": "CCCCCC", + "graph_order": 1109, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 21, + "children": [] + }, + { + "id": 459, + "atlas_id": 481, + "ontology_id": 1, + "acronym": "aolt", + "name": "accessory olfactory tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1110, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 21, + "children": [] + } + ] + }, + { + "id": 900, + "atlas_id": 536, + "ontology_id": 1, + "acronym": "aco", + "name": "anterior commissure, olfactory limb", + "color_hex_triplet": "CCCCCC", + "graph_order": 1111, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 840, + "children": [] + } + ] + }, + { + "id": 848, + "atlas_id": 671, + "ontology_id": 1, + "acronym": "IIn", + "name": "optic nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1112, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 876, + "atlas_id": 533, + "ontology_id": 1, + "acronym": "aot", + "name": "accessory optic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1113, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 916, + "atlas_id": 538, + "ontology_id": 1, + "acronym": "bsc", + "name": "brachium of the superior colliculus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1114, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 336, + "atlas_id": 607, + "ontology_id": 1, + "acronym": "csc", + "name": "superior colliculus commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1115, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 117, + "atlas_id": 580, + "ontology_id": 1, + "acronym": "och", + "name": "optic chiasm", + "color_hex_triplet": "CCCCCC", + "graph_order": 1116, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 125, + "atlas_id": 581, + "ontology_id": 1, + "acronym": "opt", + "name": "optic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1117, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 357, + "atlas_id": 610, + "ontology_id": 1, + "acronym": "ttp", + "name": "tectothalamic pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1118, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 848, + "children": [] + }, + { + "id": 1166850207, + "acronym": "IIn_O", + "name": "optic nerve: Other", + "parent_structure_id": 848, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 832, + "atlas_id": 669, + "ontology_id": 1, + "acronym": "IIIn", + "name": "oculomotor nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1119, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 62, + "atlas_id": 573, + "ontology_id": 1, + "acronym": "mlf", + "name": "medial longitudinal fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1120, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 832, + "children": [] + }, + { + "id": 158, + "atlas_id": 585, + "ontology_id": 1, + "acronym": "pc", + "name": "posterior commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1121, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 832, + "children": [] + }, + { + "id": 3944974149, + "acronym": "IIIn_O", + "name": "oculomotor nerve: Other", + "parent_structure_id": 832, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 911, + "atlas_id": 679, + "ontology_id": 1, + "acronym": "IVn", + "name": "trochlear nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1122, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 384, + "atlas_id": 613, + "ontology_id": 1, + "acronym": "IVd", + "name": "trochlear nerve decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1123, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 911, + "children": [] + }, + { + "id": 3537828992, + "acronym": "IVn_O", + "name": "trochlear nerve: Other", + "parent_structure_id": 911, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 710, + "atlas_id": 654, + "ontology_id": 1, + "acronym": "VIn", + "name": "abducens nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1124, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 901, + "atlas_id": 678, + "ontology_id": 1, + "acronym": "Vn", + "name": "trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1125, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 93, + "atlas_id": 577, + "ontology_id": 1, + "acronym": "moV", + "name": "motor root of the trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1126, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 901, + "children": [] + }, + { + "id": 229, + "atlas_id": 594, + "ontology_id": 1, + "acronym": "sV", + "name": "sensory root of the trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1127, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 901, + "children": [ + { + "id": 705, + "atlas_id": 512, + "ontology_id": 1, + "acronym": "mtV", + "name": "midbrain tract of the trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1128, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 229, + "children": [] + }, + { + "id": 794, + "atlas_id": 523, + "ontology_id": 1, + "acronym": "sptV", + "name": "spinal tract of the trigeminal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1129, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 229, + "children": [] + }, + { + "id": 2176156825, + "acronym": "sV_O", + "name": "sensory root of the trigeminal nerve: Other", + "parent_structure_id": 229, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 798, + "atlas_id": 665, + "ontology_id": 1, + "acronym": "VIIn", + "name": "facial nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1130, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 1131, + "atlas_id": 565, + "ontology_id": 1, + "acronym": "iVIIn", + "name": "intermediate nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1131, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 798, + "children": [] + }, + { + "id": 1116, + "atlas_id": 563, + "ontology_id": 1, + "acronym": "gVIIn", + "name": "genu of the facial nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1132, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 798, + "children": [] + }, + { + "id": 3283016083, + "acronym": "VIIn_O", + "name": "facial nerve: Other", + "parent_structure_id": 798, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 933, + "atlas_id": 682, + "ontology_id": 1, + "acronym": "VIIIn", + "name": "vestibulocochlear nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1133, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 1076, + "atlas_id": 558, + "ontology_id": 1, + "acronym": "cvb", + "name": "efferent cochleovestibular bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1134, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 933, + "children": [] + }, + { + "id": 413, + "atlas_id": 617, + "ontology_id": 1, + "acronym": "vVIIIn", + "name": "vestibular nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1135, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 933, + "children": [] + }, + { + "id": 948, + "atlas_id": 542, + "ontology_id": 1, + "acronym": "cVIIIn", + "name": "cochlear nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1136, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 933, + "children": [ + { + "id": 841, + "atlas_id": 529, + "ontology_id": 1, + "acronym": "tb", + "name": "trapezoid body", + "color_hex_triplet": "CCCCCC", + "graph_order": 1137, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 641, + "atlas_id": 504, + "ontology_id": 1, + "acronym": "ias", + "name": "intermediate acoustic stria", + "color_hex_triplet": "CCCCCC", + "graph_order": 1138, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 506, + "atlas_id": 487, + "ontology_id": 1, + "acronym": "das", + "name": "dorsal acoustic stria", + "color_hex_triplet": "CCCCCC", + "graph_order": 1139, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 658, + "atlas_id": 506, + "ontology_id": 1, + "acronym": "ll", + "name": "lateral lemniscus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1140, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 633, + "atlas_id": 503, + "ontology_id": 1, + "acronym": "cic", + "name": "inferior colliculus commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1141, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + }, + { + "id": 482, + "atlas_id": 484, + "ontology_id": 1, + "acronym": "bic", + "name": "brachium of the inferior colliculus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1142, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 948, + "children": [] + } + ] + } + ] + }, + { + "id": 808, + "atlas_id": 666, + "ontology_id": 1, + "acronym": "IXn", + "name": "glossopharyngeal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1143, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 917, + "atlas_id": 680, + "ontology_id": 1, + "acronym": "Xn", + "name": "vagus nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1144, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 237, + "atlas_id": 595, + "ontology_id": 1, + "acronym": "ts", + "name": "solitary tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1145, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 917, + "children": [] + } + ] + }, + { + "id": 717, + "atlas_id": 655, + "ontology_id": 1, + "acronym": "XIn", + "name": "accessory spinal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1146, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 813, + "atlas_id": 667, + "ontology_id": 1, + "acronym": "XIIn", + "name": "hypoglossal nerve", + "color_hex_triplet": "CCCCCC", + "graph_order": 1147, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 925, + "atlas_id": 681, + "ontology_id": 1, + "acronym": "vrt", + "name": "ventral roots", + "color_hex_triplet": "CCCCCC", + "graph_order": 1148, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [] + }, + { + "id": 792, + "atlas_id": 664, + "ontology_id": 1, + "acronym": "drt", + "name": "dorsal roots", + "color_hex_triplet": "CCCCCC", + "graph_order": 1149, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 932, + "atlas_id": 540, + "ontology_id": 1, + "acronym": "cett", + "name": "cervicothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1150, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 792, + "children": [ + { + "id": 570, + "atlas_id": 495, + "ontology_id": 1, + "acronym": "dl", + "name": "dorsolateral fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1151, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + }, + { + "id": 522, + "atlas_id": 489, + "ontology_id": 1, + "acronym": "dcm", + "name": "dorsal commissure of the spinal cord", + "color_hex_triplet": "CCCCCC", + "graph_order": 1152, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + }, + { + "id": 858, + "atlas_id": 531, + "ontology_id": 1, + "acronym": "vc", + "name": "ventral commissure of the spinal cord", + "color_hex_triplet": "CCCCCC", + "graph_order": 1153, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + }, + { + "id": 586, + "atlas_id": 497, + "ontology_id": 1, + "acronym": "fpr", + "name": "fasciculus proprius", + "color_hex_triplet": "CCCCCC", + "graph_order": 1154, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + }, + { + "id": 514, + "atlas_id": 488, + "ontology_id": 1, + "acronym": "dc", + "name": "dorsal column", + "color_hex_triplet": "CCCCCC", + "graph_order": 1155, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [ + { + "id": 380, + "atlas_id": 471, + "ontology_id": 1, + "acronym": "cuf", + "name": "cuneate fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1156, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 514, + "children": [] + }, + { + "id": 388, + "atlas_id": 472, + "ontology_id": 1, + "acronym": "grf", + "name": "gracile fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1157, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 514, + "children": [] + }, + { + "id": 396, + "atlas_id": 473, + "ontology_id": 1, + "acronym": "iaf", + "name": "internal arcuate fibers", + "color_hex_triplet": "CCCCCC", + "graph_order": 1158, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 514, + "children": [] + } + ] + }, + { + "id": 697, + "atlas_id": 511, + "ontology_id": 1, + "acronym": "ml", + "name": "medial lemniscus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1159, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 932, + "children": [] + } + ] + } + ] + }, + { + "id": 871, + "atlas_id": 674, + "ontology_id": 1, + "acronym": "sst", + "name": "spinothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1160, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 967, + "children": [ + { + "id": 29, + "atlas_id": 569, + "ontology_id": 1, + "acronym": "sttl", + "name": "lateral spinothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1161, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 389, + "atlas_id": 614, + "ontology_id": 1, + "acronym": "sttv", + "name": "ventral spinothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1162, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 245, + "atlas_id": 596, + "ontology_id": 1, + "acronym": "scrt", + "name": "spinocervical tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1163, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 261, + "atlas_id": 598, + "ontology_id": 1, + "acronym": "sop", + "name": "spino-olivary pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1164, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 270, + "atlas_id": 599, + "ontology_id": 1, + "acronym": "srp", + "name": "spinoreticular pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1165, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 293, + "atlas_id": 602, + "ontology_id": 1, + "acronym": "svp", + "name": "spinovestibular pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1166, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 277, + "atlas_id": 600, + "ontology_id": 1, + "acronym": "stp", + "name": "spinotectal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1167, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 253, + "atlas_id": 597, + "ontology_id": 1, + "acronym": "shp", + "name": "spinohypothalamic pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1168, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [] + }, + { + "id": 285, + "atlas_id": 601, + "ontology_id": 1, + "acronym": "step", + "name": "spinotelenchephalic pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1169, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 871, + "children": [ + { + "id": 627, + "atlas_id": 502, + "ontology_id": 1, + "acronym": "hht", + "name": "hypothalamohypophysial tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1170, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 285, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 960, + "atlas_id": 685, + "ontology_id": 1, + "acronym": "cbf", + "name": "cerebellum related fiber tracts", + "color_hex_triplet": "CCCCCC", + "graph_order": 1171, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 744, + "atlas_id": 658, + "ontology_id": 1, + "acronym": "cbc", + "name": "cerebellar commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1172, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 960, + "children": [] + }, + { + "id": 752, + "atlas_id": 659, + "ontology_id": 1, + "acronym": "cbp", + "name": "cerebellar peduncles", + "color_hex_triplet": "CCCCCC", + "graph_order": 1173, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 960, + "children": [ + { + "id": 326, + "atlas_id": 606, + "ontology_id": 1, + "acronym": "scp", + "name": "superior cerebelar peduncles", + "color_hex_triplet": "CCCCCC", + "graph_order": 1174, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 752, + "children": [ + { + "id": 812, + "atlas_id": 525, + "ontology_id": 1, + "acronym": "dscp", + "name": "superior cerebellar peduncle decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1175, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 326, + "children": [ + { + "id": 85, + "atlas_id": 859, + "ontology_id": 1, + "acronym": "sct", + "name": "spinocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1176, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 812, + "children": [] + }, + { + "id": 2434751741, + "acronym": "dscp_O", + "name": "superior cerebellar peduncle decussation: Other", + "parent_structure_id": 812, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 850, + "atlas_id": 530, + "ontology_id": 1, + "acronym": "uf", + "name": "uncinate fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1177, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 326, + "children": [] + }, + { + "id": 866, + "atlas_id": 532, + "ontology_id": 1, + "acronym": "sctv", + "name": "ventral spinocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1178, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 326, + "children": [] + }, + { + "id": 2692485271, + "acronym": "scp_O", + "name": "superior cerebelar peduncles: Other", + "parent_structure_id": 326, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 78, + "atlas_id": 575, + "ontology_id": 1, + "acronym": "mcp", + "name": "middle cerebellar peduncle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1179, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 752, + "children": [] + }, + { + "id": 1123, + "atlas_id": 564, + "ontology_id": 1, + "acronym": "icp", + "name": "inferior cerebellar peduncle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1180, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 752, + "children": [ + { + "id": 553, + "atlas_id": 493, + "ontology_id": 1, + "acronym": "sctd", + "name": "dorsal spinocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1181, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1123, + "children": [] + }, + { + "id": 499, + "atlas_id": 486, + "ontology_id": 1, + "acronym": "cct", + "name": "cuneocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1182, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1123, + "children": [] + }, + { + "id": 650, + "atlas_id": 505, + "ontology_id": 1, + "acronym": "jrb", + "name": "juxtarestiform body", + "color_hex_triplet": "CCCCCC", + "graph_order": 1183, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1123, + "children": [] + }, + { + "id": 490, + "atlas_id": 485, + "ontology_id": 1, + "acronym": "bct", + "name": "bulbocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1184, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1123, + "children": [ + { + "id": 404, + "atlas_id": 474, + "ontology_id": 1, + "acronym": "oct", + "name": "olivocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1185, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 490, + "children": [] + }, + { + "id": 410, + "atlas_id": 475, + "ontology_id": 1, + "acronym": "rct", + "name": "reticulocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1186, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 490, + "children": [] + } + ] + }, + { + "id": 3140724988, + "acronym": "icp_O", + "name": "inferior cerebellar peduncle: Other", + "parent_structure_id": 1123, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 373, + "atlas_id": 612, + "ontology_id": 1, + "acronym": "tct", + "name": "trigeminocerebellar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1187, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 752, + "children": [] + } + ] + }, + { + "id": 728, + "atlas_id": 656, + "ontology_id": 1, + "acronym": "arb", + "name": "arbor vitae", + "color_hex_triplet": "CCCCCC", + "graph_order": 1188, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 960, + "children": [] + } + ] + }, + { + "id": 484682512, + "atlas_id": null, + "ontology_id": 1, + "acronym": "scwm", + "name": "supra-callosal cerebral white matter", + "color_hex_triplet": "CCCCCC", + "graph_order": 1189, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [] + }, + { + "id": 983, + "atlas_id": 688, + "ontology_id": 1, + "acronym": "lfbs", + "name": "lateral forebrain bundle system", + "color_hex_triplet": "CCCCCC", + "graph_order": 1190, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 776, + "atlas_id": 662, + "ontology_id": 1, + "acronym": "cc", + "name": "corpus callosum", + "color_hex_triplet": "CCCCCC", + "graph_order": 1191, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 983, + "children": [ + { + "id": 956, + "atlas_id": 543, + "ontology_id": 1, + "acronym": "fa", + "name": "corpus callosum, anterior forceps", + "color_hex_triplet": "CCCCCC", + "graph_order": 1192, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [ + { + "id": 579, + "atlas_id": 496, + "ontology_id": 1, + "acronym": "ec", + "name": "external capsule", + "color_hex_triplet": "CCCCCC", + "graph_order": 1193, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 956, + "children": [] + }, + { + "id": 3228324150, + "acronym": "fa_O", + "name": "corpus callosum, anterior forceps: Other", + "parent_structure_id": 956, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 964, + "atlas_id": 544, + "ontology_id": 1, + "acronym": "ee", + "name": "corpus callosum, extreme capsule", + "color_hex_triplet": "CCCCCC", + "graph_order": 1194, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 1108, + "atlas_id": 562, + "ontology_id": 1, + "acronym": "ccg", + "name": "genu of corpus callosum", + "color_hex_triplet": "CCCCCC", + "graph_order": 1195, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 971, + "atlas_id": 545, + "ontology_id": 1, + "acronym": "fp", + "name": "corpus callosum, posterior forceps", + "color_hex_triplet": "CCCCCC", + "graph_order": 1196, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 979, + "atlas_id": 546, + "ontology_id": 1, + "acronym": "ccr", + "name": "corpus callosum, rostrum", + "color_hex_triplet": "CCCCCC", + "graph_order": 1197, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 484682516, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ccb", + "name": "corpus callosum, body", + "color_hex_triplet": "CCCCCC", + "graph_order": 1198, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + }, + { + "id": 986, + "atlas_id": 547, + "ontology_id": 1, + "acronym": "ccs", + "name": "corpus callosum, splenium", + "color_hex_triplet": "CCCCCC", + "graph_order": 1199, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 776, + "children": [] + } + ] + }, + { + "id": 784, + "atlas_id": 663, + "ontology_id": 1, + "acronym": "cst", + "name": "corticospinal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1200, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 983, + "children": [ + { + "id": 6, + "atlas_id": 566, + "ontology_id": 1, + "acronym": "int", + "name": "internal capsule", + "color_hex_triplet": "CCCCCC", + "graph_order": 1201, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 924, + "atlas_id": 539, + "ontology_id": 1, + "acronym": "cpd", + "name": "cerebal peduncle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1202, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1036, + "atlas_id": 553, + "ontology_id": 1, + "acronym": "cte", + "name": "corticotectal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1203, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1012, + "atlas_id": 550, + "ontology_id": 1, + "acronym": "crt", + "name": "corticorubral tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1204, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1003, + "atlas_id": 549, + "ontology_id": 1, + "acronym": "cpt", + "name": "corticopontine tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1205, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 994, + "atlas_id": 548, + "ontology_id": 1, + "acronym": "cbt", + "name": "corticobulbar tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1206, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 190, + "atlas_id": 589, + "ontology_id": 1, + "acronym": "py", + "name": "pyramid", + "color_hex_triplet": "CCCCCC", + "graph_order": 1207, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 198, + "atlas_id": 590, + "ontology_id": 1, + "acronym": "pyd", + "name": "pyramidal decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1208, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1019, + "atlas_id": 551, + "ontology_id": 1, + "acronym": "cstc", + "name": "corticospinal tract, crossed", + "color_hex_triplet": "CCCCCC", + "graph_order": 1209, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 1028, + "atlas_id": 552, + "ontology_id": 1, + "acronym": "cstu", + "name": "corticospinal tract, uncrossed", + "color_hex_triplet": "CCCCCC", + "graph_order": 1210, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 784, + "children": [] + }, + { + "id": 2718688460, + "acronym": "cst_O", + "name": "corticospinal tract: Other", + "parent_structure_id": 784, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 896, + "atlas_id": 677, + "ontology_id": 1, + "acronym": "lfbst", + "name": "thalamus related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1211, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 983, + "children": [ + { + "id": 1092, + "atlas_id": 560, + "ontology_id": 1, + "acronym": "em", + "name": "external medullary lamina of the thalamus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1212, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 14, + "atlas_id": 567, + "ontology_id": 1, + "acronym": "im", + "name": "internal medullary lamina of the thalamus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1213, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 86, + "atlas_id": 576, + "ontology_id": 1, + "acronym": "mtc", + "name": "middle thalamic commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1214, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 365, + "atlas_id": 611, + "ontology_id": 1, + "acronym": "tp", + "name": "thalamic peduncles", + "color_hex_triplet": "CCCCCC", + "graph_order": 1215, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 484682520, + "atlas_id": null, + "ontology_id": 1, + "acronym": "or", + "name": "optic radiation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1216, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + }, + { + "id": 484682524, + "atlas_id": null, + "ontology_id": 1, + "acronym": "ar", + "name": "auditory radiation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1217, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 896, + "children": [] + } + ] + } + ] + }, + { + "id": 1000, + "atlas_id": 690, + "ontology_id": 1, + "acronym": "eps", + "name": "extrapyramidal fiber systems", + "color_hex_triplet": "CCCCCC", + "graph_order": 1218, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 760, + "atlas_id": 660, + "ontology_id": 1, + "acronym": "epsc", + "name": "cerebral nuclei related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1219, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [ + { + "id": 142, + "atlas_id": 583, + "ontology_id": 1, + "acronym": "pap", + "name": "pallidothalamic pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1220, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 102, + "atlas_id": 578, + "ontology_id": 1, + "acronym": "nst", + "name": "nigrostriatal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1221, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 109, + "atlas_id": 579, + "ontology_id": 1, + "acronym": "ntt", + "name": "nigrothalamic fibers", + "color_hex_triplet": "CCCCCC", + "graph_order": 1222, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 134, + "atlas_id": 582, + "ontology_id": 1, + "acronym": "ptf", + "name": "pallidotegmental fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1223, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 309, + "atlas_id": 604, + "ontology_id": 1, + "acronym": "snp", + "name": "striatonigral pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1224, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + }, + { + "id": 317, + "atlas_id": 605, + "ontology_id": 1, + "acronym": "stf", + "name": "subthalamic fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1225, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 760, + "children": [] + } + ] + }, + { + "id": 877, + "atlas_id": 675, + "ontology_id": 1, + "acronym": "tsp", + "name": "tectospinal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1226, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [ + { + "id": 1051, + "atlas_id": 555, + "ontology_id": 1, + "acronym": "tspd", + "name": "direct tectospinal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1227, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 877, + "children": [] + }, + { + "id": 1060, + "atlas_id": 556, + "ontology_id": 1, + "acronym": "dtd", + "name": "doral tegmental decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1228, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 877, + "children": [] + }, + { + "id": 1043, + "atlas_id": 554, + "ontology_id": 1, + "acronym": "tspc", + "name": "crossed tectospinal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1229, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 877, + "children": [] + } + ] + }, + { + "id": 863, + "atlas_id": 673, + "ontology_id": 1, + "acronym": "rust", + "name": "rubrospinal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1230, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [ + { + "id": 397, + "atlas_id": 615, + "ontology_id": 1, + "acronym": "vtd", + "name": "ventral tegmental decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1231, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 863, + "children": [] + }, + { + "id": 221, + "atlas_id": 593, + "ontology_id": 1, + "acronym": "rrt", + "name": "rubroreticular tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1232, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 863, + "children": [] + }, + { + "id": 1428498274, + "acronym": "rust_O", + "name": "rubrospinal tract: Other", + "parent_structure_id": 863, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 736, + "atlas_id": 657, + "ontology_id": 1, + "acronym": "ctb", + "name": "central tegmental bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1233, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [] + }, + { + "id": 855, + "atlas_id": 672, + "ontology_id": 1, + "acronym": "rst", + "name": "retriculospinal tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1234, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [ + { + "id": 205, + "atlas_id": 591, + "ontology_id": 1, + "acronym": "rstl", + "name": "retriculospinal tract, lateral part", + "color_hex_triplet": "CCCCCC", + "graph_order": 1235, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 855, + "children": [] + }, + { + "id": 213, + "atlas_id": 592, + "ontology_id": 1, + "acronym": "rstm", + "name": "retriculospinal tract, medial part", + "color_hex_triplet": "CCCCCC", + "graph_order": 1236, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 855, + "children": [] + } + ] + }, + { + "id": 941, + "atlas_id": 683, + "ontology_id": 1, + "acronym": "vsp", + "name": "vestibulospinal pathway", + "color_hex_triplet": "CCCCCC", + "graph_order": 1237, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1000, + "children": [] + } + ] + }, + { + "id": 991, + "atlas_id": 689, + "ontology_id": 1, + "acronym": "mfbs", + "name": "medial forebrain bundle system", + "color_hex_triplet": "CCCCCC", + "graph_order": 1238, + "st_level": 2, + "hemisphere_id": 3, + "parent_structure_id": 1009, + "children": [ + { + "id": 768, + "atlas_id": 661, + "ontology_id": 1, + "acronym": "mfbc", + "name": "cerebrum related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1239, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 991, + "children": [ + { + "id": 884, + "atlas_id": 534, + "ontology_id": 1, + "acronym": "amc", + "name": "amygdalar capsule", + "color_hex_triplet": "CCCCCC", + "graph_order": 1240, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 892, + "atlas_id": 535, + "ontology_id": 1, + "acronym": "apd", + "name": "ansa peduncularis", + "color_hex_triplet": "CCCCCC", + "graph_order": 1241, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 908, + "atlas_id": 537, + "ontology_id": 1, + "acronym": "act", + "name": "anterior commissure, temporal limb", + "color_hex_triplet": "CCCCCC", + "graph_order": 1242, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 940, + "atlas_id": 541, + "ontology_id": 1, + "acronym": "cing", + "name": "cingulum bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1243, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 1099, + "atlas_id": 561, + "ontology_id": 1, + "acronym": "fxs", + "name": "fornix system", + "color_hex_triplet": "CCCCCC", + "graph_order": 1244, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [ + { + "id": 466, + "atlas_id": 482, + "ontology_id": 1, + "acronym": "alv", + "name": "alveus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1245, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + }, + { + "id": 530, + "atlas_id": 490, + "ontology_id": 1, + "acronym": "df", + "name": "dorsal fornix", + "color_hex_triplet": "CCCCCC", + "graph_order": 1246, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + }, + { + "id": 603, + "atlas_id": 499, + "ontology_id": 1, + "acronym": "fi", + "name": "fimbria", + "color_hex_triplet": "CCCCCC", + "graph_order": 1247, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + }, + { + "id": 745, + "atlas_id": 517, + "ontology_id": 1, + "acronym": "fxprg", + "name": "precommissural fornix, general", + "color_hex_triplet": "CCCCCC", + "graph_order": 1248, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [ + { + "id": 420, + "atlas_id": 476, + "ontology_id": 1, + "acronym": "db", + "name": "precommissural fornix diagonal band", + "color_hex_triplet": "CCCCCC", + "graph_order": 1249, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 745, + "children": [] + } + ] + }, + { + "id": 737, + "atlas_id": 516, + "ontology_id": 1, + "acronym": "fxpo", + "name": "postcommissural fornix", + "color_hex_triplet": "CCCCCC", + "graph_order": 1250, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [ + { + "id": 428, + "atlas_id": 477, + "ontology_id": 1, + "acronym": "mct", + "name": "medial corticohypothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1251, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 737, + "children": [] + }, + { + "id": 436, + "atlas_id": 478, + "ontology_id": 1, + "acronym": "fx", + "name": "columns of the fornix", + "color_hex_triplet": "CCCCCC", + "graph_order": 1252, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 737, + "children": [] + } + ] + }, + { + "id": 618, + "atlas_id": 501, + "ontology_id": 1, + "acronym": "hc", + "name": "hippocampal commissures", + "color_hex_triplet": "CCCCCC", + "graph_order": 1253, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [ + { + "id": 443, + "atlas_id": 479, + "ontology_id": 1, + "acronym": "dhc", + "name": "dorsal hippocampal commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1254, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 618, + "children": [] + }, + { + "id": 449, + "atlas_id": 480, + "ontology_id": 1, + "acronym": "vhc", + "name": "ventral hippocampal commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1255, + "st_level": 10, + "hemisphere_id": 3, + "parent_structure_id": 618, + "children": [] + } + ] + }, + { + "id": 713, + "atlas_id": 513, + "ontology_id": 1, + "acronym": "per", + "name": "perforant path", + "color_hex_triplet": "CCCCCC", + "graph_order": 1256, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + }, + { + "id": 474, + "atlas_id": 483, + "ontology_id": 1, + "acronym": "ab", + "name": "angular path", + "color_hex_triplet": "CCCCCC", + "graph_order": 1257, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1099, + "children": [] + } + ] + }, + { + "id": 37, + "atlas_id": 570, + "ontology_id": 1, + "acronym": "lab", + "name": "longitudinal association bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1258, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [] + }, + { + "id": 301, + "atlas_id": 603, + "ontology_id": 1, + "acronym": "st", + "name": "stria terminalis", + "color_hex_triplet": "CCCCCC", + "graph_order": 1259, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 768, + "children": [ + { + "id": 484682528, + "atlas_id": null, + "ontology_id": 1, + "acronym": "stc", + "name": "commissural branch of stria terminalis", + "color_hex_triplet": "CCCCCC", + "graph_order": 1260, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 301, + "children": [] + }, + { + "id": 2923485783, + "acronym": "st_O", + "name": "stria terminalis: Other", + "parent_structure_id": 301, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] + }, + { + "id": 824, + "atlas_id": 668, + "ontology_id": 1, + "acronym": "mfsbshy", + "name": "hypothalamus related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1261, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 991, + "children": [ + { + "id": 54, + "atlas_id": 572, + "ontology_id": 1, + "acronym": "mfb", + "name": "medial forebrain bundle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1262, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 405, + "atlas_id": 616, + "ontology_id": 1, + "acronym": "vlt", + "name": "ventrolateral hypothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1263, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 174, + "atlas_id": 587, + "ontology_id": 1, + "acronym": "poc", + "name": "preoptic commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1264, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 349, + "atlas_id": 609, + "ontology_id": 1, + "acronym": "sup", + "name": "supraoptic commissures", + "color_hex_triplet": "CCCCCC", + "graph_order": 1265, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 817, + "atlas_id": 526, + "ontology_id": 1, + "acronym": "supa", + "name": "supraoptic commissures, anterior", + "color_hex_triplet": "CCCCCC", + "graph_order": 1266, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 349, + "children": [] + }, + { + "id": 825, + "atlas_id": 527, + "ontology_id": 1, + "acronym": "supd", + "name": "supraoptic commissures, dorsal", + "color_hex_triplet": "CCCCCC", + "graph_order": 1267, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 349, + "children": [] + }, + { + "id": 833, + "atlas_id": 528, + "ontology_id": 1, + "acronym": "supv", + "name": "supraoptic commissures, ventral", + "color_hex_triplet": "CCCCCC", + "graph_order": 1268, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 349, + "children": [] + }, + { + "id": 1060511842, + "acronym": "sup_O", + "name": "supraoptic commissures: Other", + "parent_structure_id": 349, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 166, + "atlas_id": 586, + "ontology_id": 1, + "acronym": "pmx", + "name": "premammillary commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1269, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 341, + "atlas_id": 608, + "ontology_id": 1, + "acronym": "smd", + "name": "supramammillary decussation", + "color_hex_triplet": "CCCCCC", + "graph_order": 1270, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 182, + "atlas_id": 588, + "ontology_id": 1, + "acronym": "php", + "name": "propriohypothalamic pathways", + "color_hex_triplet": "CCCCCC", + "graph_order": 1271, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 762, + "atlas_id": 519, + "ontology_id": 1, + "acronym": "phpd", + "name": "propriohypothalamic pathways, dorsal", + "color_hex_triplet": "CCCCCC", + "graph_order": 1272, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 182, + "children": [] + }, + { + "id": 770, + "atlas_id": 520, + "ontology_id": 1, + "acronym": "phpl", + "name": "propriohypothalamic pathways, lateral", + "color_hex_triplet": "CCCCCC", + "graph_order": 1273, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 182, + "children": [] + }, + { + "id": 779, + "atlas_id": 521, + "ontology_id": 1, + "acronym": "phpm", + "name": "propriohypothalamic pathways, medial", + "color_hex_triplet": "CCCCCC", + "graph_order": 1274, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 182, + "children": [] + }, + { + "id": 787, + "atlas_id": 522, + "ontology_id": 1, + "acronym": "phpv", + "name": "propriohypothalamic pathways, ventral", + "color_hex_triplet": "CCCCCC", + "graph_order": 1275, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 182, + "children": [] + } + ] + }, + { + "id": 150, + "atlas_id": 584, + "ontology_id": 1, + "acronym": "pvbh", + "name": "periventricular bundle of the hypothalamus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1276, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [] + }, + { + "id": 46, + "atlas_id": 571, + "ontology_id": 1, + "acronym": "mfbsma", + "name": "mammillary related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1277, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 753, + "atlas_id": 518, + "ontology_id": 1, + "acronym": "pm", + "name": "principal mammillary tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1278, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 46, + "children": [] + }, + { + "id": 690, + "atlas_id": 510, + "ontology_id": 1, + "acronym": "mtt", + "name": "mammillothalamic tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1279, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 46, + "children": [] + }, + { + "id": 681, + "atlas_id": 509, + "ontology_id": 1, + "acronym": "mtg", + "name": "mammillotegmental tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1280, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 46, + "children": [] + }, + { + "id": 673, + "atlas_id": 508, + "ontology_id": 1, + "acronym": "mp", + "name": "mammillary peduncle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1281, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 46, + "children": [] + } + ] + }, + { + "id": 1068, + "atlas_id": 557, + "ontology_id": 1, + "acronym": "mfbst", + "name": "dorsal thalamus related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1282, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 722, + "atlas_id": 514, + "ontology_id": 1, + "acronym": "pvbt", + "name": "periventricular bundle of the thalamus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1283, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1068, + "children": [] + } + ] + }, + { + "id": 1083, + "atlas_id": 559, + "ontology_id": 1, + "acronym": "mfbse", + "name": "epithalamus related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1284, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 802, + "atlas_id": 524, + "ontology_id": 1, + "acronym": "sm", + "name": "stria medullaris", + "color_hex_triplet": "CCCCCC", + "graph_order": 1285, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1083, + "children": [] + }, + { + "id": 595, + "atlas_id": 498, + "ontology_id": 1, + "acronym": "fr", + "name": "fasciculus retroflexus", + "color_hex_triplet": "CCCCCC", + "graph_order": 1286, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1083, + "children": [] + }, + { + "id": 611, + "atlas_id": 500, + "ontology_id": 1, + "acronym": "hbc", + "name": "habenular commissure", + "color_hex_triplet": "CCCCCC", + "graph_order": 1287, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1083, + "children": [] + }, + { + "id": 730, + "atlas_id": 515, + "ontology_id": 1, + "acronym": "PIS", + "name": "pineal stalk", + "color_hex_triplet": "CCCCCC", + "graph_order": 1288, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 1083, + "children": [] + } + ] + }, + { + "id": 70, + "atlas_id": 574, + "ontology_id": 1, + "acronym": "mfbsm", + "name": "midbrain related", + "color_hex_triplet": "CCCCCC", + "graph_order": 1289, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 824, + "children": [ + { + "id": 547, + "atlas_id": 492, + "ontology_id": 1, + "acronym": "dlf", + "name": "dorsal longitudinal fascicle", + "color_hex_triplet": "CCCCCC", + "graph_order": 1290, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 70, + "children": [] + }, + { + "id": 563, + "atlas_id": 494, + "ontology_id": 1, + "acronym": "dtt", + "name": "dorsal tegmental tract", + "color_hex_triplet": "CCCCCC", + "graph_order": 1291, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 70, + "children": [] + } + ] + } + ] + } + ] + }, + { + "id": 2500193001, + "acronym": "fiber tracts_O", + "name": "fiber tracts: Other", + "parent_structure_id": 1009, + "color_hex_triplet": "CCCCCC", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 73, + "atlas_id": 716, + "ontology_id": 1, + "acronym": "VS", + "name": "ventricular systems", + "color_hex_triplet": "AAAAAA", + "graph_order": 1292, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [ + { + "id": 81, + "atlas_id": 717, + "ontology_id": 1, + "acronym": "VL", + "name": "lateral ventricle", + "color_hex_triplet": "AAAAAA", + "graph_order": 1293, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [ + { + "id": 89, + "atlas_id": 718, + "ontology_id": 1, + "acronym": "RC", + "name": "rhinocele", + "color_hex_triplet": "AAAAAA", + "graph_order": 1294, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 81, + "children": [] + }, + { + "id": 98, + "atlas_id": 719, + "ontology_id": 1, + "acronym": "SEZ", + "name": "subependymal zone", + "color_hex_triplet": "AAAAAA", + "graph_order": 1295, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 81, + "children": [] + }, + { + "id": 108, + "atlas_id": 720, + "ontology_id": 1, + "acronym": "chpl", + "name": "choroid plexus", + "color_hex_triplet": "AAAAAA", + "graph_order": 1296, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 81, + "children": [] + }, + { + "id": 116, + "atlas_id": 721, + "ontology_id": 1, + "acronym": "chfl", + "name": "choroid fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1297, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 81, + "children": [] + }, + { + "id": 1744978404, + "acronym": "VL_O", + "name": "lateral ventricle: Other", + "parent_structure_id": 81, + "color_hex_triplet": "AAAAAA", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 124, + "atlas_id": 722, + "ontology_id": 1, + "acronym": "IVF", + "name": "interventricular foramen", + "color_hex_triplet": "AAAAAA", + "graph_order": 1298, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [] + }, + { + "id": 129, + "atlas_id": 723, + "ontology_id": 1, + "acronym": "V3", + "name": "third ventricle", + "color_hex_triplet": "AAAAAA", + "graph_order": 1299, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [] + }, + { + "id": 140, + "atlas_id": 724, + "ontology_id": 1, + "acronym": "AQ", + "name": "cerebral aqueduct", + "color_hex_triplet": "AAAAAA", + "graph_order": 1300, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [] + }, + { + "id": 145, + "atlas_id": 725, + "ontology_id": 1, + "acronym": "V4", + "name": "fourth ventricle", + "color_hex_triplet": "AAAAAA", + "graph_order": 1301, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [ + { + "id": 153, + "atlas_id": 726, + "ontology_id": 1, + "acronym": "V4r", + "name": "lateral recess", + "color_hex_triplet": "AAAAAA", + "graph_order": 1302, + "st_level": 9, + "hemisphere_id": 3, + "parent_structure_id": 145, + "children": [] + }, + { + "id": 3774104740, + "acronym": "V4_O", + "name": "fourth ventricle: Other", + "parent_structure_id": 145, + "color_hex_triplet": "AAAAAA", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + }, + { + "id": 164, + "atlas_id": 727, + "ontology_id": 1, + "acronym": "c", + "name": "central canal, spinal cord/medulla", + "color_hex_triplet": "AAAAAA", + "graph_order": 1303, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 73, + "children": [] + } + ] + }, + { + "id": 1024, + "atlas_id": 693, + "ontology_id": 1, + "acronym": "grv", + "name": "grooves", + "color_hex_triplet": "AAAAAA", + "graph_order": 1304, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [ + { + "id": 1032, + "atlas_id": 694, + "ontology_id": 1, + "acronym": "grv of CTX", + "name": "grooves of the cerebral cortex", + "color_hex_triplet": "AAAAAA", + "graph_order": 1305, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1024, + "children": [ + { + "id": 1055, + "atlas_id": 697, + "ontology_id": 1, + "acronym": "eg", + "name": "endorhinal groove", + "color_hex_triplet": "AAAAAA", + "graph_order": 1306, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1032, + "children": [] + }, + { + "id": 1063, + "atlas_id": 698, + "ontology_id": 1, + "acronym": "hf", + "name": "hippocampal fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1307, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1032, + "children": [] + }, + { + "id": 1071, + "atlas_id": 699, + "ontology_id": 1, + "acronym": "rf", + "name": "rhinal fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1308, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1032, + "children": [] + }, + { + "id": 1078, + "atlas_id": 700, + "ontology_id": 1, + "acronym": "ri", + "name": "rhinal incisure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1309, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1032, + "children": [] + } + ] + }, + { + "id": 1040, + "atlas_id": 695, + "ontology_id": 1, + "acronym": "grv of CBX", + "name": "grooves of the cerebellar cortex", + "color_hex_triplet": "AAAAAA", + "graph_order": 1310, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1024, + "children": [ + { + "id": 1087, + "atlas_id": 701, + "ontology_id": 1, + "acronym": "pce", + "name": "precentral fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1311, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 1095, + "atlas_id": 702, + "ontology_id": 1, + "acronym": "pcf", + "name": "preculminate fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1312, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 1103, + "atlas_id": 703, + "ontology_id": 1, + "acronym": "pri", + "name": "primary fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1313, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 1112, + "atlas_id": 704, + "ontology_id": 1, + "acronym": "psf", + "name": "posterior superior fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1314, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 1119, + "atlas_id": 705, + "ontology_id": 1, + "acronym": "ppf", + "name": "prepyramidal fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1315, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 3, + "atlas_id": 707, + "ontology_id": 1, + "acronym": "sec", + "name": "secondary fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1316, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 11, + "atlas_id": 708, + "ontology_id": 1, + "acronym": "plf", + "name": "posterolateral fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1317, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 18, + "atlas_id": 709, + "ontology_id": 1, + "acronym": "nf", + "name": "nodular fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1318, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 25, + "atlas_id": 710, + "ontology_id": 1, + "acronym": "sif", + "name": "simple fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1319, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 34, + "atlas_id": 711, + "ontology_id": 1, + "acronym": "icf", + "name": "intercrural fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1320, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 43, + "atlas_id": 712, + "ontology_id": 1, + "acronym": "apf", + "name": "ansoparamedian fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1321, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 49, + "atlas_id": 713, + "ontology_id": 1, + "acronym": "ipf", + "name": "intraparafloccular fissure", + "color_hex_triplet": "AAAAAA", + "graph_order": 1322, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 57, + "atlas_id": 714, + "ontology_id": 1, + "acronym": "pms", + "name": "paramedian sulcus", + "color_hex_triplet": "AAAAAA", + "graph_order": 1323, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + }, + { + "id": 65, + "atlas_id": 715, + "ontology_id": 1, + "acronym": "pfs", + "name": "parafloccular sulcus", + "color_hex_triplet": "AAAAAA", + "graph_order": 1324, + "st_level": 8, + "hemisphere_id": 3, + "parent_structure_id": 1040, + "children": [] + } + ] + }, + { + "id": 624, + "atlas_id": 926, + "ontology_id": 1, + "acronym": "IPF", + "name": "Interpeduncular fossa", + "color_hex_triplet": "AAAAAA", + "graph_order": 1325, + "st_level": 7, + "hemisphere_id": 3, + "parent_structure_id": 1024, + "children": [] + } + ] + }, + { + "id": 304325711, + "atlas_id": null, + "ontology_id": 1, + "acronym": "retina", + "name": "retina", + "color_hex_triplet": "7F2E7E", + "graph_order": 1326, + "st_level": 1, + "hemisphere_id": 3, + "parent_structure_id": 997, + "children": [] + }, + { + "id": 1811993763, + "acronym": "root_O", + "name": "root: Other", + "parent_structure_id": 997, + "color_hex_triplet": "FFFFFF", + "ontology_id": 1, + "hemisphere_id": 3, + "children": [] + } + ] + } + ] +} \ No newline at end of file diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/extract_camera_information.ipynb b/bioexplorer/pythonsdk/notebooks/ccfv3/extract_camera_information.ipynb new file mode 100644 index 000000000..63ec9d32e --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/extract_camera_information.ipynb @@ -0,0 +1,191 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# BioExplorer - CCFv3\n", + "![](../bioexplorer_ccfv3_banner.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import json\n", + "\n", + "def compute_transform_matrix(position, forward, up):\n", + " \"\"\"\n", + " Compute the 4x4 transformation matrix for a camera given its position, forward, and up vectors.\n", + " \n", + " :param position: A 3D vector [x, y, z] representing the camera position.\n", + " :param forward: A 3D vector representing the forward direction of the camera.\n", + " :param up: A 3D vector representing the up direction of the camera.\n", + " :return: A 4x4 transformation matrix.\n", + " \"\"\"\n", + " # Normalize the forward vector\n", + " forward = forward / np.linalg.norm(forward)\n", + " \n", + " # Compute the right vector (cross product of up and forward)\n", + " right = np.cross(up, forward)\n", + " right = right / np.linalg.norm(right)\n", + " \n", + " # Recompute the up vector to ensure orthogonality\n", + " up = np.cross(forward, right)\n", + " \n", + " # Build the rotation matrix\n", + " rotation_matrix = np.column_stack((right, up, -forward))\n", + " \n", + " # Append the position as the last column of the 4x4 matrix\n", + " transform_matrix = np.eye(4)\n", + " transform_matrix[:3, :3] = rotation_matrix\n", + " transform_matrix[:3, 3] = position\n", + " \n", + " return transform_matrix.tolist() # Return as a list for JSON serialization\n", + "\n", + "def generate_transforms_json(positions, directions, up_vectors, image_paths, fov_x, output_file, img_width, img_height):\n", + " \"\"\"\n", + " Generate a transforms.json file using camera positions, directions, up vectors, and image paths.\n", + " \n", + " :param positions: List of 3D camera positions.\n", + " :param directions: List of forward direction vectors.\n", + " :param up_vectors: List of up vectors.\n", + " :param image_paths: List of corresponding image paths.\n", + " :param fov_x: The horizontal field of view (in radians).\n", + " :param output_file: Path to save the transforms.json file.\n", + " :param img_width: Width of the image.\n", + " :param img_height: Height of the image.\n", + " \"\"\"\n", + " # Calculate fx from the field of view and image width\n", + " fx = 0.5 * img_width / np.tan(0.5 * fov_x)\n", + " fy = fx # Assuming square pixels\n", + " cx = img_width / 2.0\n", + " cy = img_height / 2.0\n", + " \n", + " data = {\n", + " \"fl_x\": fx,\n", + " \"fl_y\": fy,\n", + " \"k1\": -0.013472197525381842,\n", + " \"k2\": 0.007509466554079491,\n", + " \"p1\": -0.0011800209664517077,\n", + " \"p2\": 0.01116939407701522,\n", + " \"cx\": cx,\n", + " \"cy\": cy,\n", + " \"w\": 3840,\n", + " \"h\": 2160,\n", + " \"aabb_scale\": 16,\n", + " \"frames\": []\n", + " }\n", + " \n", + " # Generate transformation matrices and intrinsics for each frame\n", + " for position, forward, up, image_path in zip(positions, directions, up_vectors, image_paths):\n", + " transform_matrix = compute_transform_matrix(position, forward, up)\n", + " frame_data = {\n", + " \"file_path\": image_path,\n", + " \"transform_matrix\": transform_matrix,\n", + " }\n", + " data[\"frames\"].append(frame_data)\n", + " \n", + " # Save to JSON\n", + " with open(output_file, 'w') as f:\n", + " json.dump(data, f, indent=4)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from bioexplorer import BioExplorer, MovieMaker\n", + "import os\n", + "\n", + "be=BioExplorer('localhost:5000')\n", + "core = be.core_api()\n", + "mm = MovieMaker(be)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "from tqdm import tqdm\n", + "import os\n", + "\n", + "image_folder = '/scratch/ccfv3a/orbital/v2'\n", + "\n", + "k = 4\n", + "\n", + "params = core.OrthographicCameraParams()\n", + "params.height = 12000\n", + "status = core.set_camera_params(params)\n", + "\n", + "fov_x = 60.0\n", + "positions = list()\n", + "directions = list()\n", + "up_vectors = list()\n", + "image_paths = list()\n", + "\n", + "img_width = 1920\n", + "img_height = 1080\n", + "\n", + "r = params.height\n", + "t = [7062, 3849, 5687]\n", + "frame = 0\n", + "for i in tqdm(range(270, -90, -1)):\n", + " o = [\n", + " t[0] + r * math.cos(i * math.pi / 180.0),\n", + " t[1],\n", + " t[2] + r * math.sin(i * math.pi / 180.0)\n", + " ]\n", + " l = 0.0\n", + " d = [0,0,0]\n", + " for k in range(3):\n", + " d[k] = t[k] - o[k]\n", + " l += d[k] * d[k]\n", + "\n", + " l = math.sqrt(l)\n", + " for k in range(3):\n", + " d[k] /= l\n", + "\n", + " positions.append(o)\n", + " directions.append(d)\n", + " up_vectors.append([0,-1,0])\n", + " image_paths.append('./%05d.png' % frame)\n", + " frame += 1\n", + "\n", + "generate_transforms_json(\n", + " positions, directions, up_vectors, image_paths,\n", + " fov_x, os.path.join(image_folder, 'transforms.json'), \n", + " img_width, img_height)\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "env", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/nrrd_to_obj.py b/bioexplorer/pythonsdk/notebooks/ccfv3/nrrd_to_obj.py new file mode 100644 index 000000000..dba40ae72 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/nrrd_to_obj.py @@ -0,0 +1,319 @@ +# Copyright 2020 - 2023 Blue Brain Project / EPFL +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import sys +import json +import os +import platform +import subprocess +import nrrd +import numpy as np +from skimage import measure +from scipy import ndimage +import blue_brain_atlas_web_exporter.TreeIndexer as TreeIndexer +import blue_brain_atlas_web_exporter +from blue_brain_atlas_web_exporter import __version__ + + +def parse_args(args): + """Parse command line parameters + + Args: + args ([str]): command line parameters as list of strings + + Returns: + :obj:`argparse.Namespace`: command line parameters namespace + """ + parser = argparse.ArgumentParser( + description="From volumetric parcellations exports meshes and binary masks.") + parser.add_argument( + "--version", + action="version", + version="parcellationexport {ver}".format(ver=__version__)) + + parser.add_argument( + "--hierarchy", + dest="hierarchy", + required=True, + metavar="", + help="The hierarchy JSON file, sometimes called 1.json") + + parser.add_argument( + "--parcellation-volume", + dest="parcellation_volume", + required=True, + metavar="", + help="The NRRD parcellation volume file") + + parser.add_argument( + "--out-mesh-dir", + dest="out_mesh_dir", + required=True, + metavar="", + help="The output directory to create the OBJ region mesh files") + + parser.add_argument( + "--out-mask-dir", + dest="out_mask_dir", + required=True, + metavar="", + help="The output directory to create the NRRD region mask files") + + parser.add_argument( + "--out-metadata", + dest="out_metadata", + required=True, + metavar="", + help="Path to the output metadata file (json)") + + + return parser.parse_args(args) + + +def mask_to_mesh_data(arr): + # dilated = ndimage.binary_dilation(arr, iterations = 1).astype(np.float32) + gaussian_blurred = ndimage.gaussian_filter(arr - 0.5, sigma=1.5) + + # Make sure the final mesh has no side-of-box hole + gaussian_blurred[:, :, 0] = -0.5 + gaussian_blurred[:, :, -1] = -0.5 + gaussian_blurred[:, 0, :] = -0.5 + gaussian_blurred[:, -1, :] = -0.5 + gaussian_blurred[0, :, :] = -0.5 + gaussian_blurred[-1, :, :] = -0.5 + + vertices, triangles, normals, values = measure.marching_cubes(gaussian_blurred) + return (vertices, triangles, normals) + + +def export_obj(vertices, triangles, normals, filepath, origin, transform_3x3, decimation = None): + """ + | xa xb xc | + M = | ya yb yc | --> M is transform_3x3 + | za zb zc | + + | x | + O = | y | --> O is origin + | z | + + """ + + M_xa = transform_3x3[0][0] + M_ya = transform_3x3[0][1] + M_za = transform_3x3[0][2] + + M_xb = transform_3x3[1][0] + M_yb = transform_3x3[1][1] + M_zb = transform_3x3[1][2] + + M_xc = transform_3x3[2][0] + M_yc = transform_3x3[2][1] + M_zc = transform_3x3[2][2] + + O_x = origin[0] + O_y = origin[1] + O_z = origin[2] + + obj_str = "" + + for v in vertices: + v_x = v[0] + v_y = v[1] + v_z = v[2] + v_x_world = v_x * M_xa + v_y * M_xb + v_z * M_xc + O_x + v_y_world = v_x * M_ya + v_y * M_yb + v_z * M_yc + O_y + v_z_world = v_x * M_za + v_y * M_zb + v_z * M_zc + O_z + obj_str += "v "+str(v_x_world)+" "+str(v_y_world)+" "+str(v_z_world)+" \n" + + for v in normals: + v_x = v[0] + v_y = v[1] + v_z = v[2] + v_x_world = v_x * M_xa + v_y * M_xb + v_z * M_xc + O_x + v_y_world = v_x * M_ya + v_y * M_yb + v_z * M_yc + O_y + v_z_world = v_x * M_za + v_y * M_zb + v_z * M_zc + O_z + obj_str += "n "+str(v_x_world)+" "+str(v_y_world)+" "+str(v_z_world)+" \n" + + for t in triangles: + obj_str += "f "+str(int(t[2])+1)+" "+str(int(t[1])+1)+" "+str(int(t[0])+1)+" \n" + + f = open(filepath, 'w') + f.write(obj_str) + f.close() + + if not decimation: + return + + # from here, we are using the binaries to reduce the number of vertices and faces of the mesh + module_dirpath = os.path.dirname(blue_brain_atlas_web_exporter.__file__) + os_to_dir = { + "Linux": os.path.join("bin.Linux", "simplify"), + "Darwin": os.path.join("bin.OSX", "simplify"), + "Windows": os.path.join("bin.Windows", "simplify.exe"), + } + + full_binary_path = os.path.join(module_dirpath, "simplify", os_to_dir[platform.system()]) + os.chmod(full_binary_path, 750) + args = f"{full_binary_path} {filepath} {filepath} {str(decimation)}" + subprocess.run(args, shell=True, check=True) + + +def main(): + """Main entry point allowing external calls + + Args: + args ([str]): command line parameter list + """ + args = parse_args(sys.argv[1:]) + + hierarchy = args.hierarchy + parcellation_volume = args.parcellation_volume + out_mesh_dir = args.out_mesh_dir + out_mask_dir = args.out_mask_dir + out_metadata_path = args.out_metadata + + # create out_mesh_dir if inexistant + try: + os.makedirs(out_mesh_dir) + os.makedirs(out_mask_dir) + except FileExistsError as e: + pass + + # reading the nrrd file + nrrd_data, nrrd_header = nrrd.read(parcellation_volume) + mask_header = nrrd_header.copy() + mask_header["type"] = "uint8" + + origin = [0,0,0] + if "space origin" in nrrd_header: + origin = nrrd_header["space origin"] + print(origin) + + # As said in the doc (http://teem.sourceforge.net/nrrd/format.html#spacedirections), + # each vector in "space directions" is for an axis of the array, hence, they are column vectors + # if the transform were to be represented as 3x3 matrix. + + transform_3x3 = [[25, 0, 0],[0, 25, 0], [0, 0, 25]] + if "space directions" in nrrd_header: + transform_3x3 = nrrd_header["space directions"] + print(transform_3x3) + + voxel_world_volume = np.linalg.norm(transform_3x3[0]) * np.linalg.norm(transform_3x3[1]) * np.linalg.norm(transform_3x3[2]) + + # volume of the whole brain in cubic micrometers + whole_brain_volume = float(np.count_nonzero(nrrd_data) * voxel_world_volume) + + # loading json annotation + jsoncontent = json.loads(open(hierarchy, "r").read()) + + # sometimes, the 1.json has its content in a "msg" sub prop (the original vesion has). + # and some other versions don't. Here we deal with both + if "msg" in jsoncontent: + flat_tree = TreeIndexer.flattenTree(jsoncontent['msg'][0]) + else: + flat_tree = TreeIndexer.flattenTree(jsoncontent) + + total_region = len(flat_tree) + region_counter = 0 + unique_values_in_nrrd = np.unique(nrrd_data) + + # For each region, we create a mask that contains all the sub regions + metadata = {} + for region_id in flat_tree: + region_counter += 1 + region_node = flat_tree[region_id] + + rough_mesh_filepath = os.path.join(out_mesh_dir, str(region_id) + ".obj") + if os.path.exists(rough_mesh_filepath): + continue + + print("{}/{} - [{}] {}".format(region_counter, total_region, region_id, flat_tree[region_id]["name"])) + + # region_mask = np.zeros_like(nrrd_data, dtype = "uint8") + + # # masking the current region + # region_mask[nrrd_data == region_id] = 1 + # subregion_counter = 0 + # total_subregions = len(region_node["_descendants"]) + + # print(region_node["_descendants"]) + + # for child_id in region_node["_descendants"]: + # subregion_counter += 1 + # print("Grouping subregions {}/{}".format(subregion_counter, total_subregions), end="\r") + # if child_id not in unique_values_in_nrrd: + # continue + # # masking the current region + # region_mask[nrrd_data == child_id] = 1 + + # all the regions to be added, in theory (aka. not taking into account that some may not be represented in the parcellation volume) + regions_to_add = region_node["_descendants"] + [region_id] + + # list of descendants that are actually represented in the parcellation volume + represented_regions_to_add = set() + + # among all the regions that should be added (in theory), keep only the ones that are actually represented in the annotation volume + # (this is to speedup thing and not waste time on aggregating not-existing regions) + for r_id in regions_to_add: + if r_id in unique_values_in_nrrd: + represented_regions_to_add.add(r_id) + + if len(represented_regions_to_add) == 0: + print("Not represented in the annotation volume.") + continue + else: + print("Aggregating regions...") + + def is_in_descendants(val): + return +(val in represented_regions_to_add) + + vectorized_is_in_descendants = np.vectorize(is_in_descendants, otypes = ["uint8"]) + region_mask = vectorized_is_in_descendants(nrrd_data) + + print() + + # if the mask is all black, then there is no mesh to build + if not np.any(region_mask): + continue + + # exporting mask files + print("Export NRRD mask...") + nrrd.write(os.path.join(out_mask_dir, str(region_id) + ".nrrd"), region_mask, mask_header) + + # Creating the mesh with the marching cube + print("Marching cube...") + vertices, triangles, normals = mask_to_mesh_data(region_mask) + + # Exporting the mesh as OBJ file + print("Export OBJ mesh...") + export_obj(vertices, triangles, normals, rough_mesh_filepath, origin, transform_3x3, decimation=0.15) + + # exporting metadata + print("Export JSON metadata...") + region_volume = float(np.count_nonzero(region_mask) * voxel_world_volume) + metadata[str(region_id)] = { + "id": region_id, + "regionVolume": region_volume, + "regionVolumeRatioToWholeBrain": region_volume / whole_brain_volume, + } + + + metadata_file = open(out_metadata_path, 'w') + metadata_file.write(json.dumps(metadata, ensure_ascii = False, indent = 2)) + metadata_file.close() + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/parcellationexport.py b/bioexplorer/pythonsdk/notebooks/ccfv3/parcellationexport.py new file mode 100644 index 000000000..6fe5d6ae5 --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/parcellationexport.py @@ -0,0 +1,533 @@ +# Copyright 2020 - 2023 Blue Brain Project / EPFL +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import sys +import json +import os +import platform +import subprocess +import re +import nrrd +import numpy as np +from skimage import measure +from scipy import ndimage + +import blue_brain_atlas_web_exporter +from blue_brain_atlas_web_exporter import __version__ +import blue_brain_atlas_web_exporter.TreeIndexer as TreeIndexer +import blue_brain_atlas_web_exporter.json_to_jsonld as json_to_jsonld + +from multiprocessing import Pool, cpu_count + +descendants = TreeIndexer.DESCENDANTS_PROP_NAME +children = json_to_jsonld.CHILDREN +represented = json_to_jsonld.REPRESENTED +regionVolume = json_to_jsonld.REGIONVOLUME +regionVolumeRatio = json_to_jsonld.REGIONVOLUMERATIO + +OUT_MESH_DIR = "--out-mesh-dir" +mesh_ext = "obj" + + +def parse_args(args): + """Parse command line parameters + + Args: + args ([str]): command line parameters as list of strings + + Returns: + :obj:`argparse.Namespace`: command line parameters namespace + """ + parser = argparse.ArgumentParser( + description="From volumetric parcellations exports meshes and binary masks.") + parser.add_argument( + "--version", + action="version", + version="parcellationexport {ver}".format(ver=__version__)) + + parser.add_argument( + "--hierarchy", + dest="hierarchy", + required=True, + metavar="", + help="The hierarchy JSON file, sometimes called 1.json") + + parser.add_argument( + "--parcellation-volume", + dest="parcellation_volume", + required=True, + metavar="", + help="The NRRD parcellation volume file") + + parser.add_argument( + OUT_MESH_DIR, + dest="out_mesh_dir", + required=False, + metavar="", + help="The output directory to create the OBJ region mesh files") + + parser.add_argument( + "--out-mask-dir", + dest="out_mask_dir", + required=True, + metavar="", + help="The output directory to create the NRRD region mask files") + + parser.add_argument( + "--out-metadata", + dest="out_metadata", + required=True, + metavar="", + help="Path to the output metadata file (json)") + + parser.add_argument( + "--out-hierarchy-volume", + dest="out_hierarchy_volume", + required=True, + metavar="", + help="Path to the output hierarchy including volume info (json)") + + parser.add_argument( + "--out-hierarchy-jsonld", + dest="out_hierarchy_jsonld", + required=True, + metavar="", + help="Path to the output hierarchy JSON-LD file built from the input " + "hierarchy JSON file.") + + return parser.parse_args(args) + + +def voxel_world_volume(transform_3x3): + # As said in the doc (http://teem.sourceforge.net/nrrd/format.html#spacedirections), + # each vector in "space directions" is for an axis of the array, hence, they are column vectors + # if the transform were to be represented as 3x3 matrix. + return np.linalg.norm(transform_3x3[0]) * np.linalg.norm(transform_3x3[1]) * np.linalg.norm(transform_3x3[2]) + + +def mask_to_mesh_data(arr): + dilated = ndimage.binary_dilation(arr, iterations=1).astype(np.float32) + gaussian_blurred = ndimage.gaussian_filter(dilated - 0.5, sigma=3) + + # Make sure the final mesh has no side-of-box hole + gaussian_blurred[:, :, 0] = -0.5 + gaussian_blurred[:, :, -1] = -0.5 + gaussian_blurred[:, 0, :] = -0.5 + gaussian_blurred[:, -1, :] = -0.5 + gaussian_blurred[0, :, :] = -0.5 + gaussian_blurred[-1, :, :] = -0.5 + + vertices, triangles, normals, values = measure.marching_cubes(gaussian_blurred) + return vertices, triangles + + +def export_obj(vertices, triangles, filepath, origin, transform_3x3, decimation=None): + """ + | xa xb xc | + M = | ya yb yc | --> M is transform_3x3 + | za zb zc | + + | x | + O = | y | --> O is origin + | z | + + """ + + M_xa = transform_3x3[0][0] + M_ya = transform_3x3[0][1] + M_za = transform_3x3[0][2] + + M_xb = transform_3x3[1][0] + M_yb = transform_3x3[1][1] + M_zb = transform_3x3[1][2] + + M_xc = transform_3x3[2][0] + M_yc = transform_3x3[2][1] + M_zc = transform_3x3[2][2] + + O_x = origin[0] + O_y = origin[1] + O_z = origin[2] + + obj_str = "" + + for v in vertices: + v_x = v[0] + v_y = v[1] + v_z = v[2] + v_x_world = v_x * M_xa + v_y * M_xb + v_z * M_xc + O_x + v_y_world = v_x * M_ya + v_y * M_yb + v_z * M_yc + O_y + v_z_world = v_x * M_za + v_y * M_zb + v_z * M_zc + O_z + obj_str += "v "+str(v_x_world)+" "+str(v_y_world)+" "+str(v_z_world)+" \n" + + for t in triangles: + obj_str += "f "+str(int(t[2])+1)+" "+str(int(t[1])+1)+" "+str(int(t[0])+1)+" \n" + # f.write("f "+str(int(t[0])+1)+" "+str(int(t[1])+1)+" "+str(int(t[2])+1)+" \n") + + f = open(filepath, 'w') + f.write(obj_str) + f.close() + + if not decimation: + return + + # from here, we are using the binaries to reduce the number of vertices and faces of the mesh + module_dirpath = os.path.dirname(blue_brain_atlas_web_exporter.__file__) + os_to_dir = { + "Linux": os.path.join("bin.Linux", "simplify"), + "Darwin": os.path.join("bin.OSX", "simplify"), + "Windows": os.path.join("bin.Windows", "simplify.exe"), + } + + full_binary_path = os.path.join(module_dirpath, "simplify", os_to_dir[platform.system()]) + try: + os.chmod(full_binary_path, 750) + except OSError: + pass + args = f"{full_binary_path} {filepath} {filepath} {str(decimation)}" + subprocess.run(args, shell=True, check=True) + + +def nodeToLayerIndex(node): + """ + From a Node (TreeIndexer), extract the list of cortical layers + """ + upper_acronym = node['acronym'].upper() + cerebral_cortex_id = 688 + + if cerebral_cortex_id not in node[TreeIndexer.ASCENDANTS_PROP_NAME]: + return [] + + if upper_acronym.startswith("CA"): + return [] + + # find the first digit in the acronym + m = re.search(r"-\d", upper_acronym) + if not m: + return [] + + first_digit_index = m.start() + 1 # 1 accounts for the dash + + # the layer term can help us spot the regions that are in a different "column" but same layer + layer_term_upper = upper_acronym[first_digit_index:] + + # Example: "1" or "2" + if len(layer_term_upper) == 1: + return [layer_term_upper] + + # Example: "6A" or "6B". In this particular case, we want to return "6A" but also "6" + if len(layer_term_upper) == 2: + return [layer_term_upper, layer_term_upper[0]] + + # Example: "2/3". This pattern is never used for more than 2 layers so we won't find "1/3" + if "/" in layer_term_upper: + return layer_term_upper.split('/') + + # Example: sometimes for more than 2 layers "1-3", or Sometimes used for only two "1-2" + if "-" in layer_term_upper: + top_layer, bottom_layer = list(map(int, layer_term_upper.split('-'))) + all_layers = list(map(str, list(range(top_layer, bottom_layer + 1)))) + return all_layers + + +def getNeighboursIds(roi_mask, whole_brain_parcellation): + # Create a mask of the roi outer contour and apply it to the whole brain volume + dilated_roi = ndimage.binary_dilation(roi_mask, iterations=1).astype(np.uint32) + roi_neighbour_mask = dilated_roi - roi_mask + neighbour_regions = whole_brain_parcellation.copy() + neighbour_regions[roi_neighbour_mask == 0] = 0 + + contour_nb_voxels = np.count_nonzero(roi_neighbour_mask) + + # List the neighbour regions by their ids + neighbour_regions_ids, neighbour_regions_counts = np.unique(neighbour_regions, return_counts=True) + neighbour_regions_ratios = neighbour_regions_counts / contour_nb_voxels + adjacent_to_ratios = dict(zip(neighbour_regions_ids.tolist(), neighbour_regions_ratios.tolist())) + del adjacent_to_ratios[0] + return adjacent_to_ratios + + +def writeMetadata(data, filepath): + metadata_file = open(filepath, 'w') + metadata_file.write(json.dumps(data, ensure_ascii=False, indent=2)) + metadata_file.close() + + +def check_leaves_only(regions_in_annotation, flat_tree, children_key): + annotation_regions_not_in_hierarchy = [] + non_leaf_hierarchy_regions_in_annotation = [] + for reg_id in regions_in_annotation: + if reg_id == 0: + continue + if reg_id in flat_tree: + # A leaf region has an empty 'children_key' list + if flat_tree[reg_id][children_key]: + non_leaf_hierarchy_regions_in_annotation.append(reg_id) + else: + annotation_regions_not_in_hierarchy.append(reg_id) + if annotation_regions_not_in_hierarchy or non_leaf_hierarchy_regions_in_annotation: + msg = f"{len(annotation_regions_not_in_hierarchy)} regions in the annotation volume " \ + f"were not found in the hierarchy:\n{annotation_regions_not_in_hierarchy}\n" + msg += f"{len(non_leaf_hierarchy_regions_in_annotation)} regions in the annotation volume " \ + f"were found being not leaves in the hierarchy:\n{non_leaf_hierarchy_regions_in_annotation}" + raise Exception(msg) + + +def get_flat_tree(hierarchy_path, children_key): + jsoncontent = json.loads(open(hierarchy_path, "r").read()) + if "msg" in jsoncontent: + jsoncontent_body = jsoncontent['msg'][0] + else: + jsoncontent_body = jsoncontent + return TreeIndexer.flattenTree(jsoncontent_body, children_prop_name=children_key), jsoncontent_body, jsoncontent + + +def get_neighbour_regions(region_id, adjacent_counts, region_layers_set, parcellation_volume, flat_tree, hierarchy): + """ + Get the list of region IDs that are neighbors to the specified region. + + Parameters: + - region_id (int): The ID of the target region. + - adjacent_counts (dict): A dictionary mapping neighboring region IDs to their voxel counts. + - region_layers_set (set): A set of layer indices associated with the target region. + - parcellation_volume (str): Path to the parcellation volume NRRD file. + - flat_tree (dict): The flattened representation of the brain region hierarchy. + - hierarchy (str): Path to the hierarchy JSON file. + + Returns: + - list: A list of region IDs that are neighbors to the target region and share at least one layer. + """ + continuous_with = [] + + for nei_id in adjacent_counts: + if nei_id not in flat_tree: + print(f"Region {nei_id} is adjacent to {region_id} in {parcellation_volume}, but it is not present in {hierarchy}") + continue + nei_node = flat_tree[nei_id] + nei_layers = set(nodeToLayerIndex(nei_node)) + # check if this neighbour has some layers in common with the ROI + if not nei_layers.isdisjoint(region_layers_set): + continuous_with.append(nei_id) + + return continuous_with + + +def get_unique_values_in_nrrd(nrrd_file): + nrrd_data, _ = nrrd.read(nrrd_file) + return np.unique(nrrd_data) + + +def main_(hierarchy, parcellation_volume, out_mask_dir, out_mesh_dir, out_metadata_path, + out_hierarchy_volume_path, out_hierarchy_jsonld_path): + if out_mesh_dir: + os.makedirs(out_mesh_dir, exist_ok=True) + else: + print("No %s provided, meshes will not be exported" % OUT_MESH_DIR) + os.makedirs(out_mask_dir, exist_ok=True) + + # reading the nrrd file + nrrd_data, nrrd_header = nrrd.read(parcellation_volume) + mask_header = nrrd_header.copy() + mask_header["type"] = "uint8" + + volume_unit = "cubic micrometer" # missing in the nrrd_header, need to hardcode + + transform_3x3 = nrrd_header["space directions"] + # volume of the whole brain in cubic micrometers + voxel_volume = voxel_world_volume(transform_3x3) + whole_brain_volume = float(np.count_nonzero(nrrd_data) * voxel_volume) + + # loading json annotation + flat_tree, jsoncontent_body, jsoncontent = get_flat_tree(hierarchy, children) + jsoncontent_body["unitCode"] = volume_unit + + total_region = len(flat_tree) + unique_values_in_nrrd = get_unique_values_in_nrrd(parcellation_volume) + + # For each region, we create a mask that contains all the sub-regions + async_result = {} + + pool = Pool(processes=cpu_count() - 2) + for region_counter, region_id in enumerate(flat_tree): + region_node = flat_tree[region_id] + + print(f"\nProcessing region {region_counter}/{total_region}: [{region_id}] '{region_node['name']}'") + async_result[region_id] = pool.apply_async(process_region, args=(region_id, region_node, flat_tree, hierarchy, + parcellation_volume, nrrd_data, unique_values_in_nrrd, voxel_volume, whole_brain_volume, volume_unit, + nrrd_header.copy(), transform_3x3, out_mask_dir, out_mesh_dir)) + pool.close() + pool.join() + + metadata = {} + keys_to_remove = ["atlas_id", "graph_order", "st_level"] + represented_regions = [] + for region_id in flat_tree: + region_id_str = str(region_id) + metadata[region_id_str] = async_result[region_id].get() + if metadata[region_id_str][represented]: + represented_regions.append(region_id) + + # Find region to update in the hierarchy + jsoncontent_region = jsoncontent_body + while jsoncontent_region["id"] != region_id: + for jsoncontent_region_ch in jsoncontent_region[children]: + if jsoncontent_region_ch["id"] == region_id: + jsoncontent_region = jsoncontent_region_ch + break + else: + if region_id not in flat_tree[jsoncontent_region_ch["id"]][descendants]: + continue + else: + jsoncontent_region = jsoncontent_region_ch + + # Update region + jsoncontent_region.update(metadata[region_id_str]) + # Remove keys not present in the new regions from the leaves-only hierarchy, to keep uniform regions dictionary + for key in keys_to_remove: + jsoncontent_region.pop(key, None) + + # exporting the metadata for the whole brain + writeMetadata(metadata, out_metadata_path) + + # exporting a new hierarchy JSON including the regions info + writeMetadata(jsoncontent, out_hierarchy_volume_path) + + if out_hierarchy_jsonld_path: + # transforming the hierarchy JSON to JSONLD + hierarchy_jsonld = json_to_jsonld.hierarchy_json_to_jsonld(jsoncontent_body) + if hierarchy_jsonld: + writeMetadata(hierarchy_jsonld, out_hierarchy_jsonld_path) + else: + raise Exception("Failed to generate a JSONLD version of the hierarchy JSON file") + + if out_mesh_dir: # check that all the meshes have been created + for region_id in represented_regions: + mesh_name = ".".join([str(region_id), mesh_ext]) + if mesh_name not in os.listdir(out_mesh_dir): + raise Exception(f"Region {region_id} is represented in {parcellation_volume} but no mesh {mesh_name} is" + f" present in {out_mesh_dir}") + print(f"\nA mesh is available (in {out_mesh_dir}) for any region represented in {parcellation_volume}") + + +def process_region(region_id, region_node, flat_tree, hierarchy, parcellation_volume, nrrd_data, unique_values_in_nrrd, + voxel_volume, whole_brain_volume, volume_unit, mask_header, transform_3x3, out_mask_dir, out_mesh_dir): + """ + Process a specific brain region and export its metadata, mask, and mesh if applicable. + + Args: + region_id (int): The ID of the brain region. + region_node (dict): The node information of the brain region from the hierarchy. + flat_tree (dict): The flattened representation of the hierarchy tree. + hierarchy (str): The path to the hierarchy JSON file. + parcellation_volume (str): The path to the parcellation volume NRRD file. + nrrd_data (numpy.ndarray): The NRRD data representing the parcellation volume. + unique_values_in_nrrd (numpy.ndarray): Unique values present in the parcellation volume. + voxel_volume (float): The volume of a single voxel in cubic micrometers. + whole_brain_volume (float): The volume of the entire brain in cubic micrometers. + volume_unit (str): The unit of volume measurement. + mask_header (dict): The header information for the mask. + transform_3x3 (numpy.ndarray): The 3x3 transformation matrix for voxel-to-world mapping. + out_mask_dir (str): The directory to export the region masks. + out_mesh_dir (str): The directory to export the region meshes. + + Returns: + dict: Metadata information for the processed region. + """ + # getting the list of layers for this region + region_layers = nodeToLayerIndex(region_node) + region_layers_set = set(region_layers) + + # if the mask is all black, then there is no mesh to build, + # though we still want to list the region in metadata + metadata_reg = { + "id": region_id, + represented: False, + "unitCode": volume_unit, + regionVolume: None, + regionVolumeRatio: None, + "layers": region_layers, + "adjacentTo": None, + "continuousWith": None, + } + + # all the regions (not taking into account that some may not be represented in the parcellation volume) + regions_to_add = region_node[descendants] + [region_id] + # list of descendants that are actually represented in the parcellation volume: + # among all the regions, keep only those that are actually represented in the annotation volume + # (this is to speedup thing and not waste time on aggregating not-existing regions) + represented_regions_to_add = set(r_id for r_id in regions_to_add if r_id in unique_values_in_nrrd) + + if len(represented_regions_to_add) == 0: + print(f"Region not represented in the annotation volume, nor its {descendants}.") + return metadata_reg + else: + metadata_reg[represented] = True + + print("Aggregating regions...") + + def is_in_descendants(val): + return int(val in represented_regions_to_add) + + vectorized_is_in_descendants = np.vectorize(is_in_descendants, otypes=["uint8"]) + region_mask = vectorized_is_in_descendants(nrrd_data) + + # computing region neighbours + print("Computing adjacency...") + adjacent_counts = getNeighboursIds(region_mask, nrrd_data) + continuous_with = get_neighbour_regions(region_id, adjacent_counts, region_layers_set, parcellation_volume, flat_tree, hierarchy) + + # Updating metadata + print("Add JSON metadata...") + region_volume = float(np.count_nonzero(region_mask) * voxel_volume) + metadata_reg[regionVolume] = region_volume + metadata_reg[regionVolumeRatio] = region_volume / whole_brain_volume + metadata_reg["adjacentTo"] = adjacent_counts + metadata_reg["continuousWith"] = continuous_with + + # exporting mask files + print("Export NRRD mask...") + nrrd.write(os.path.join(out_mask_dir, f"{region_id}.nrrd"), region_mask, + mask_header) + # Exporting metadata for this current brain region + writeMetadata(metadata_reg, os.path.join(out_mask_dir, f"{region_id}.json")) + + if out_mesh_dir: # much longer than previous steps + # Creating the mesh with the marching cube + print("Marching cube...") + # vertices, triangles, normals, values = measure.marching_cubes_lewiner(region_mask) + vertices, triangles = mask_to_mesh_data(region_mask) + # Exporting the mesh as OBJ file + print("Export OBJ mesh...") + rough_mesh_filepath = os.path.join(out_mesh_dir, f"{region_id}.{mesh_ext}") + # export_obj(vertices, triangles, rough_mesh_filepath, origin, transform_3x3, origin, transform_3x3) + export_obj(vertices, triangles, rough_mesh_filepath, mask_header["space origin"], transform_3x3, + decimation=0.15) + + return metadata_reg + + +def main(): + """Main entry point allowing external calls + """ + args = parse_args(sys.argv[1:]) + + unique_values_in_annotation = get_unique_values_in_nrrd(args.parcellation_volume) + flat_tree, _, _ = get_flat_tree(args.hierarchy, children) + + print("Performing check for leaves-only annotation") + check_leaves_only(unique_values_in_annotation, flat_tree, children) + + main_(args.hierarchy, args.parcellation_volume, args.out_mask_dir, args.out_mesh_dir, + args.out_metadata, args.out_hierarchy_volume, args.out_hierarchy_jsonld) diff --git a/bioexplorer/pythonsdk/notebooks/ccfv3/split_nrrd_file.py b/bioexplorer/pythonsdk/notebooks/ccfv3/split_nrrd_file.py new file mode 100644 index 000000000..c16f563bc --- /dev/null +++ b/bioexplorer/pythonsdk/notebooks/ccfv3/split_nrrd_file.py @@ -0,0 +1,46 @@ +# Copyright 2020 - 2023 Blue Brain Project / EPFL +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import SimpleITK as sitk + +def cut_nrrd_along_x(input_path, output_path_1, output_path_2): + # Read the NRRD file + original_image = sitk.ReadImage(input_path) + + # Get image size + size = original_image.GetSize() + print(size) + + # Define the cropping region for the first sub-image along the z-axis + region_1 = (0, 0, 0, size[0], size[1], size[2] // 2) + print(region_1) + + # Define the cropping region for the second sub-image along the z-axis + region_2 = (0, 0, size[2] // 2, size[0], size[1], size[2] - (size[2] // 2)) + print(region_2) + + # Crop sub-images + sub_image_1 = sitk.Crop(original_image, region_1) + sub_image_2 = sitk.Crop(original_image, region_2) + + # Save the sub-images + sitk.WriteImage(sub_image_1, output_path_1) + sitk.WriteImage(sub_image_2, output_path_2) + +# Example usage +input_file = "annotation_25_2022_CCFv3a.nrrd" +output_file_1 = "annotation_25_2022_CCFv3a_a.nrrd" +output_file_2 = "annotation_25_2022_CCFv3a_b.nrrd" + +cut_nrrd_along_x(input_file, output_file_1, output_file_2)