diff --git a/Dockerfile b/Dockerfile index 588e1efca446da79f6d454c1b7c3153522e9117b..08353ee6c4c80b9763017a1aac712714c5048e74 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,6 +6,9 @@ ENV BACKEND_URL=${BACKEND_URL} ARG USE_LOGO ENV USE_LOGO=${USE_LOGO:-hbp} +ARG DATASET_PREVIEW_URL +ENV DATASET_PREVIEW_URL=${DATASET_PREVIEW_URL:-https://hbp-kg-dataset-previewer.apps.hbp.eu/datasetPreview} + COPY . /iv WORKDIR /iv diff --git a/README.md b/README.md index e13fb1cd8a41fe1312cf17df8604df119ec2b21e..3495978508902c6bb88b4e389e49586052647642 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Interactive Atlas Viewer is an frontend module wrapping around [nehuba](https:// A live version of the Interactive Atlas Viewer is available at [https://interactive-viewer.apps.hbp.eu](https://interactive-viewer.apps.hbp.eu). This section is useful for developers who would like to develop this project. ### General information -Interactive atlas viewer is built with [Angular (v6.0)](https://angular.io/), [Bootstrap (v4)](http://getbootstrap.com/), and [fontawesome icons](https://fontawesome.com/). Some other notable packages used are: [ng2-charts](https://valor-software.com/ng2-charts/) for charts visualisation, [ngx-bootstrap](https://valor-software.com/ngx-bootstrap/) for UI and [ngrx/store](https://github.com/ngrx/platform) for state management. +Interactive atlas viewer is built with [Angular (v6.0)](https://angular.io/), [Bootstrap (v4)](http://getbootstrap.com/), and [fontawesome icons](https://fontawesome.com/). Some other notable packages used are: [ngx-bootstrap](https://valor-software.com/ngx-bootstrap/) for UI and [ngrx/store](https://github.com/ngrx/platform) for state management. Releases newer than [v0.2.9](https://github.com/HumanBrainProject/interactive-viewer/tree/v0.2.9) also uses a nodejs backend, which uses [passportjs](http://www.passportjs.org/) for user authentication, [express](https://expressjs.com/) as a http framework. diff --git a/common/util.js b/common/util.js index 871481b91fc3d3b021aa4302a9d5aa71dd0a1e38..330e538fe5bee7fcfed7cb1bca3d51289575edcc 100644 --- a/common/util.js +++ b/common/util.js @@ -2,7 +2,7 @@ exports.getIdFromFullId = fullId => { if (!fullId) return null if (typeof fullId === 'string') { - const re = /\/([a-z]{1,}\/[a-z]{1,}\/[a-z]{1,}\/v[0-9.]{1,}\/[0-9a-z-]{1,}$)/.exec(fullId) + const re = /([a-z]{1,}\/[a-z]{1,}\/[a-z]{1,}\/v[0-9.]{1,}\/[0-9a-z-]{1,}$)/.exec(fullId) if (re) return re[1] return null } else { diff --git a/deploy/datasets/query.js b/deploy/datasets/query.js index eb5571d757efd013f5372f0fd50961c147eed5ee..fc97e10e70a590a3fdcb982ddfc893915c9fa140 100644 --- a/deploy/datasets/query.js +++ b/deploy/datasets/query.js @@ -4,26 +4,31 @@ const URL = require('url') const path = require('path') const archiver = require('archiver') const { getPreviewFile, hasPreview } = require('./supplements/previewFile') -const { init: kgQueryUtilInit, getUserKGRequestParam, filterDatasets } = require('./util') +const { constants, init: kgQueryUtilInit, getUserKGRequestParam, filterDatasets } = require('./util') let cachedData = null let otherQueryResult = null -const KG_ROOT = process.env.KG_ROOT || `https://kg.humanbrainproject.eu` -const KG_PATH = process.env.KG_PATH || `/query/minds/core/dataset/v1.0.0/interactiveViewerKgQuery-v0_3` +const { KG_ROOT, KG_SEARCH_VOCAB } = constants + +const KG_DATASET_SEARCH_QUERY_NAME = process.env.KG_DATASET_SEARCH_QUERY_NAME || 'interactiveViewerKgQuery-v0_3' +const KG_DATASET_SEARCH_PATH = process.env.KG_DATASET_SEARCH_PATH || '/minds/core/dataset/v1.0.0' + +const kgDatasetSearchFullString = `${KG_DATASET_SEARCH_PATH}/${KG_DATASET_SEARCH_QUERY_NAME}` + const KG_PARAM = { size: process.env.KG_SEARCH_SIZE || '1000', - vocab: process.env.KG_SEARCH_VOCAB || 'https://schema.hbp.eu/myQuery/' + vocab: KG_SEARCH_VOCAB } -const KG_QUERY_DATASETS_URL = new URL.URL(`${KG_ROOT}${KG_PATH}/instances`) +const KG_QUERY_DATASETS_URL = new URL.URL(`${KG_ROOT}${kgDatasetSearchFullString}/instances`) for (let key in KG_PARAM) { KG_QUERY_DATASETS_URL.searchParams.set(key, KG_PARAM[key]) } const getKgQuerySingleDatasetUrl = ({ kgId }) => { const _newUrl = new URL.URL(KG_QUERY_DATASETS_URL) - _newUrl.pathname = `${KG_PATH}/instances/${kgId}` + _newUrl.pathname = `${_newUrl.pathname}/${kgId}` return _newUrl } diff --git a/deploy/datasets/spatialQuery.js b/deploy/datasets/spatialQuery.js index a93e41cdda0eb157a5b20c103251010041da34bd..11eec98d36a90bb53439f4be2f10b0fd6be95eff 100644 --- a/deploy/datasets/spatialQuery.js +++ b/deploy/datasets/spatialQuery.js @@ -1,12 +1,24 @@ const url = require('url') const request = require('request') -const { getUserKGRequestParam } = require('./util') +const { getUserKGRequestParam, constants } = require('./util') const { transformWaxholmV2NmToVoxel, transformWaxholmV2VoxelToNm } = require('./spatialXform/waxholmRat') /** * TODO change to URL constructor to improve readability */ -const spatialQuery = 'https://kg.humanbrainproject.eu/query/neuroglancer/seeg/coordinate/v1.0.0/spatialWithCoordinatesNG/instances?vocab=https%3A%2F%2Fschema.hbp.eu%2FmyQuery%2F' + +const { KG_ROOT, KG_SEARCH_VOCAB } = constants + +const kgParams = { + vocab: KG_SEARCH_VOCAB +} + +const KG_SPATIAL_DATASET_SEARCH_QUERY_NAME = process.env.KG_SPATIAL_DATASET_SEARCH_QUERY_NAME || 'iav-spatial-query-v2' +const KG_SPATIAL_DATASET_SEARCH_PATH = process.env.KG_SPATIAL_DATASET_SEARCH_PATH || '/neuroglancer/seeg/coordinate/v1.0.0' + +const kgSpatialDatasetSearchFullString = `${KG_SPATIAL_DATASET_SEARCH_PATH}/${KG_SPATIAL_DATASET_SEARCH_QUERY_NAME}` + +const kgQuerySpatialDatasetUrl = new url.URL(`${KG_ROOT}${kgSpatialDatasetSearchFullString}/instances`) const defaultXform = (coord) => coord @@ -51,30 +63,29 @@ const fetchSpatialDataFromKg = async ({ templateName, queryGeometry, queryArg, u const { releasedOnly, option } = await getUserKGRequestParam({ user }) const _ = getSpatialSearcParam({ templateName, queryGeometry, queryArg }) - const search = new url.URLSearchParams() + const _url = new url.URL(kgQuerySpatialDatasetUrl) + + for (const key in kgParams){ + _url.searchParams.append(key, kgParams[key]) + } for (let key in _) { - search.append(key, _[key]) + _url.searchParams.append(key, _[key]) } - if (releasedOnly) search.append('databaseScope', 'RELEASED') - - const _url = `${spatialQuery}&${search.toString()}` + if (releasedOnly) _url.searchParams.append('databaseScope', 'RELEASED') + return await new Promise((resolve, reject) => { request(_url, option, (err, resp, body) => { - if (err) - return reject(err) + if (err) return reject(err) if (resp.statusCode >= 400) { return reject(resp.statusCode) } const json = JSON.parse(body) const { voxelToNm } = getXformFn(templateName) - - const _ = json.results.map(({ name, coordinates, dataset}) => { + const _ = json.results.map(({ coordinates, ...rest}) => { return { - name, - templateSpace: templateName, - dataset: dataset.map(ds => ds = {name: ds.name, externalLink: 'https://kg.humanbrainproject.eu/instances/Dataset/' + ds.identifier}), + ...rest, geometry: { type: 'point', space: 'real', diff --git a/deploy/datasets/util.js b/deploy/datasets/util.js index d37ff932fd1b4a3025ec7267039f2736f4c79449..cdc9ca91a3905fc72d14e50222342249b38c7e13 100644 --- a/deploy/datasets/util.js +++ b/deploy/datasets/util.js @@ -296,6 +296,9 @@ const init = async () => { getPublicAccessToken = getPublic } +const KG_ROOT = process.env.KG_ROOT || `https://kg.humanbrainproject.eu/query` +const KG_SEARCH_VOCAB = process.env.KG_SEARCH_VOCAB || 'https://schema.hbp.eu/myQuery/' + module.exports = { getIdFromFullId, populateSet, @@ -318,5 +321,9 @@ module.exports = { allen2015Set, allen2017Set } + }, + constants: { + KG_ROOT, + KG_SEARCH_VOCAB } } \ No newline at end of file diff --git a/docs/releases/v2.1.0.md b/docs/releases/v2.1.0.md index 5dcb07c16b30253af20c8ab0b0319ce071ab1362..0a6223d8c9a5eeb3fbab5280b2417c8258a031dd 100644 --- a/docs/releases/v2.1.0.md +++ b/docs/releases/v2.1.0.md @@ -1,6 +1,14 @@ # v2.1.0 -New features: +## New features: + - Region search also searches for relatedAreas - updating the querying logic of datasets -- connectivity browsing for JuBrain atlas \ No newline at end of file +- connectivity browsing for JuBrain atlas +- allow for added layer opacity to be changed +- trans template + +## Bugfixes + +- Fixed a bug where on parcellation load, the colour of the parcellation fails to load (#454, #462) +- Fixed a bug where, URL state is no longer parsed as state properly (#461) diff --git a/package.json b/package.json index 73ca6d8e73543bffcd07b232a2562c5d79eec537..fcaa8dff775fc6b1b3e197e6e4c275386e65aee0 100644 --- a/package.json +++ b/package.json @@ -41,14 +41,13 @@ "@ngrx/effects": "^7.4.0", "@ngrx/store": "^7.4.0", "@ngtools/webpack": "^6.0.5", - "@types/chart.js": "^2.7.20", "@types/jasmine": "^3.3.12", "@types/node": "^12.0.0", "@types/webpack-env": "^1.13.6", "@typescript-eslint/eslint-plugin": "^2.12.0", "@typescript-eslint/parser": "^2.12.0", "angular2-template-loader": "^0.6.2", - "chart.js": "^2.7.2", + "bootstrap": "^4.4.1", "codelyzer": "^5.0.1", "core-js": "^3.0.1", "css-loader": "^3.2.0", @@ -69,9 +68,9 @@ "karma-jasmine": "^2.0.1", "karma-typescript": "^4.1.1", "karma-webpack": "^3.0.0", + "kg-dataset-previewer": "0.0.10", "lodash.merge": "^4.6.2", "mini-css-extract-plugin": "^0.8.0", - "ng2-charts": "^1.6.0", "ngx-bootstrap": "3.0.1", "node-sass": "^4.12.0", "protractor": "^5.4.2", diff --git a/spec/karma.conf.js b/spec/karma.conf.js index ee43450136d389ae2f97f90dfb94cf09cf2393c8..4f4eb985a36341172d86343a1b95e194e9300bbc 100644 --- a/spec/karma.conf.js +++ b/spec/karma.conf.js @@ -25,7 +25,27 @@ module.exports = function(config) { // list of files / patterns to load in the browser files: [ - './spec/test.ts' + './spec/test.ts', + { + pattern: 'node_modules/bootstrap/dist/css/bootstrap.min.css', + served: true, + included: true + }, + { + pattern: 'node_modules/@angular/material/prebuilt-themes/indigo-pink.css', + served: true, + included: true + }, + { + pattern: './src/util/worker.js', + served: true, + included: false + }, + { + pattern: './src/res/css/extra_styles.css', + served: true, + included: true + } ], diff --git a/spec/util.ts b/spec/util.ts new file mode 100644 index 0000000000000000000000000000000000000000..9925589fefa2a49339b67a696b69eae2ef8476f8 --- /dev/null +++ b/spec/util.ts @@ -0,0 +1,14084 @@ +import { HttpInterceptor, HttpEvent, HttpHandler, HttpRequest, HttpResponse, HttpHeaders } from '@angular/common/http' +import { Injectable } from '@angular/core'; +import { Observable, of } from 'rxjs'; + +@Injectable() +export class HttpMockRequestInterceptor implements HttpInterceptor{ + + intercept(request:HttpRequest<any>, next:HttpHandler):Observable<HttpEvent<any>> { + const test = /\/datasets/.test(request.url) + if (test) { + + const headers = new HttpHeaders() + headers.set('content-type', 'application/json') + + return of(new HttpResponse({ + status: 200, + body: [], + headers + })) + } + return next.handle(request) + } +} + +export const JUBRAIN_COLIN_CH123_LEFT = { + "name": "Ch 123 (Basal Forebrain) - left hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "labelIndex": 286, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -2339339, + 4405405, + -8804805 + ] +} + +export const JUBRAIN_COLIN_CH123_RIGHT = { + "name": "Ch 123 (Basal Forebrain) - right hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 286, + "children": [], + "status": "publicP", + "position": [ + 3240000, + 5153846, + -8347692 + ] +} + +export const COLIN = { + "name": "MNI Colin 27", + "fullId": "minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992", + "type": "template", + "species": "Human", + "useTheme": "dark", + "ngId": "colin", + "nehubaConfigURL": "nehubaConfig/colinNehubaConfig", + "parcellations": [ + { + "name": "JuBrain Cytoarchitectonic Atlas", + "ngId": "jubrain colin v18 left", + "auxillaryMeshIndices": [ + 65535 + ], + "hasAdditionalViewMode": [ + "connectivity" + ], + "originDatasets": [ + { + "kgSchema": "minds/core/dataset/v1.0.0", + "kgId": "4ac9f0bc-560d-47e0-8916-7b24da9bb0ce" + } + ], + "properties": { + "version": "1.0", + "description": "This dataset contains the whole-brain parcellation of the JuBrain Cytoarchitectonic Atlas (Amunts and Zilles, 2015) in the MNI Colin 27 as well as the MNI ICBM 152 2009c nonlinear asymmetric reference space. The parcellation is derived from the individual probability maps (PMs) of the cytoarchitectonic regions released in the JuBrain Atlas, that are further combined into a Maximum Probability Map (MPM). The MPM is calculated by considering for each voxel the probability of all cytoarchitectonic areas released in the atlas, and determining the most probable assignment (Eickhoff 2005). Note that methodological improvements and integration of new brain structures may lead to small deviations in earlier released datasets.", + "publications": [ + { + "doi": "https://doi.org/10.1038/nrn2776", + "citation": "Zilles K, Amunts K (2010) Centenary of Brodmann’s map – conception and fate. Nature Reviews Neuroscience 11(2): 139-145 " + }, + { + "doi": "https://doi.org/10.1016/j.neuroimage.2007.02.037", + "citation": "Amunts K, Schleicher A, Zilles K (2007) Cytoarchitecture of the cerebral cortex – more than localization. Neuroimage 37: 1061-1065" + }, + { + "doi": "http://dx.doi.org/10.1016/B978-012693019-1/50023-X", + "citation": "Zilles K, Schleicher A, Palomero-Gallagher N, Amunts K (2002) Quantitative analysis of cyto- and receptor architecture of the human brain. In: /Brain Mapping: The Methods/, J. C. Mazziotta and A. Toga (eds.), USA: Elsevier, 2002, p. 573-602." + } + ] + }, + "regions": [ + { + "name": "telencephalon", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "cerebral nuclei", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "basal forebrain", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "magnocellular group within septum", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Ch 123 (Basal Forebrain)", + "arealabel": "Ch-123", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/7SEP-P2V", + "synonyms": [], + "rgb": [ + 124, + 233, + 167 + ], + "children": [ + { + "name": "Ch 123 (Basal Forebrain) - left hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "labelIndex": 286, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -2339339, + 4405405, + -8804805 + ] + }, + { + "name": "Ch 123 (Basal Forebrain) - right hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 286, + "children": [], + "status": "publicP", + "position": [ + 3240000, + 5153846, + -8347692 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "bb111a95-e04c-4987-8254-4af4ed8b0022" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "sublenticular part of basal forebrain", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Ch 4 (Basal Forebrain)", + "arealabel": "Ch-4", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/VZJ5-8WJ", + "synonyms": [], + "rgb": [ + 116, + 243, + 12 + ], + "children": [ + { + "name": "Ch 4 (Basal Forebrain) - left hemisphere", + "rgb": [ + 116, + 243, + 12 + ], + "labelIndex": 264, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -16053628, + -454259, + -12470032 + ] + }, + { + "name": "Ch 4 (Basal Forebrain) - right hemisphere", + "rgb": [ + 116, + 243, + 12 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 264, + "children": [], + "status": "publicP", + "position": [ + 17655072, + 263768, + -11539130 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a5c9d95f-8e7c-4454-91b6-a790387370fc" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "magnocellular group within horizontal limb of diagnoal band", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Ch 123 (Basal Forebrain)", + "arealabel": "Ch-123", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/7SEP-P2V", + "synonyms": [], + "rgb": [ + 124, + 233, + 167 + ], + "children": [ + { + "name": "Ch 123 (Basal Forebrain) - left hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "labelIndex": 286, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -2339339, + 4405405, + -8804805 + ] + }, + { + "name": "Ch 123 (Basal Forebrain) - right hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 286, + "children": [], + "status": "publicP", + "position": [ + 3240000, + 5153846, + -8347692 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "bb111a95-e04c-4987-8254-4af4ed8b0022" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "amygdala", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "laterobasal group", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala)", + "arealabel": "LB", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3X0-NV3", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 15, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "LB (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 15, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf" + } + }, + "relatedAreas": [] + }, + { + "name": "LB (Amygdala)", + "arealabel": "LB", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3X0-NV3", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 11, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "LB (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 11, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf" + } + }, + "relatedAreas": [] + }, + { + "name": "LB (Amygdala)", + "arealabel": "LB", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3X0-NV3", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 19, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "LB (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 19, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf" + } + }, + "relatedAreas": [] + }, + { + "name": "LB (Amygdala)", + "arealabel": "LB", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3X0-NV3", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 13, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -25304803, + -1696429, + -23766626 + ] + }, + { + "name": "LB (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 13, + "children": [], + "status": "publicP", + "position": [ + 28015494, + -81343, + -24045836 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "superficial group", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "SF (Amygdala)", + "arealabel": "SF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WD31-SEA", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "SF (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 236, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -16044471, + 530048, + -20831731 + ] + }, + { + "name": "SF (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 236, + "children": [], + "status": "publicP", + "position": [ + 19382770, + 1539804, + -19413304 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "48929163-bf7b-4471-9f14-991c5225eced" + } + }, + "relatedAreas": [] + }, + { + "name": "SF (Amygdala)", + "arealabel": "SF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WD31-SEA", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "SF (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 17, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "SF (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 17, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "48929163-bf7b-4471-9f14-991c5225eced" + } + }, + "relatedAreas": [] + }, + { + "name": "SF (Amygdala)", + "arealabel": "SF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WD31-SEA", + "synonyms": [], + "rgb": [ + 18, + 168, + 22 + ], + "children": [ + { + "name": "SF (Amygdala) - left hemisphere", + "rgb": [ + 18, + 168, + 22 + ], + "labelIndex": 186, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "SF (Amygdala) - right hemisphere", + "rgb": [ + 18, + 168, + 22 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 186, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "48929163-bf7b-4471-9f14-991c5225eced" + } + }, + "relatedAreas": [] + }, + { + "name": "CM (Amygdala)", + "arealabel": "CM", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/36FR-C95", + "synonyms": [], + "rgb": [ + 102, + 180, + 202 + ], + "children": [ + { + "name": "CM (Amygdala) - left hemisphere", + "rgb": [ + 102, + 180, + 202 + ], + "labelIndex": 22, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "CM (Amygdala) - right hemisphere", + "rgb": [ + 102, + 180, + 202 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 22, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "fiber masses", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "VTM (Amygdala)", + "arealabel": "VTM", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/99HN-XRE", + "synonyms": [], + "rgb": [ + 89, + 178, + 185 + ], + "children": [ + { + "name": "VTM (Amygdala) - left hemisphere", + "rgb": [ + 89, + 178, + 185 + ], + "labelIndex": 228, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -23377907, + -9837209, + -14848837 + ] + }, + { + "name": "VTM (Amygdala) - right hemisphere", + "rgb": [ + 89, + 178, + 185 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 228, + "children": [], + "status": "publicP", + "position": [ + 25513514, + -8881081, + -15551351 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a964e6e6-8014-41a2-b975-754d75cbb6f2" + } + }, + "relatedAreas": [] + }, + { + "name": "IF (Amygdala)", + "arealabel": "IF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/GWPR-G6K", + "synonyms": [], + "rgb": [ + 120, + 190, + 129 + ], + "children": [ + { + "name": "IF (Amygdala) - left hemisphere", + "rgb": [ + 120, + 190, + 129 + ], + "labelIndex": 237, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -27588235, + -1431373, + -17460784 + ] + }, + { + "name": "IF (Amygdala) - right hemisphere", + "rgb": [ + 120, + 190, + 129 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 237, + "children": [], + "status": "publicP", + "position": [ + 29372549, + -813725, + -16578431 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "5a1391c8-6056-40e4-a19b-3774df42bd07" + } + }, + "relatedAreas": [] + }, + { + "name": "MF (Amygdala)", + "arealabel": "MF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/9375-55V", + "synonyms": [], + "rgb": [ + 190, + 200, + 9 + ], + "children": [ + { + "name": "MF (Amygdala) - left hemisphere", + "rgb": [ + 190, + 200, + 9 + ], + "labelIndex": 235, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -18714286, + -6523810, + -15428571 + ] + }, + { + "name": "MF (Amygdala) - right hemisphere", + "rgb": [ + 190, + 200, + 9 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 235, + "children": [], + "status": "publicP", + "position": [ + 20976744, + -4930233, + -14441860 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3741c788-9412-4b8e-9ab4-9ca2d3a715ca" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "centromedial group", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "CM (Amygdala)", + "arealabel": "CM", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/36FR-C95", + "synonyms": [], + "rgb": [ + 89, + 4, + 190 + ], + "children": [ + { + "name": "CM (Amygdala) - left hemisphere", + "rgb": [ + 89, + 4, + 190 + ], + "labelIndex": 16, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "CM (Amygdala) - right hemisphere", + "rgb": [ + 89, + 4, + 190 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 16, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed" + } + }, + "relatedAreas": [] + }, + { + "name": "CM (Amygdala)", + "arealabel": "CM", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/36FR-C95", + "synonyms": [], + "rgb": [ + 9, + 120, + 220 + ], + "children": [ + { + "name": "CM (Amygdala) - left hemisphere", + "rgb": [ + 9, + 120, + 220 + ], + "labelIndex": 21, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -21108108, + -3376448, + -13214286 + ] + }, + { + "name": "CM (Amygdala) - right hemisphere", + "rgb": [ + 9, + 120, + 220 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 21, + "children": [], + "status": "publicP", + "position": [ + 23157767, + -2679612, + -12555825 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed" + } + }, + "relatedAreas": [] + } + ] + } + ] + } + ] + }, + { + "name": "cerebral cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "parietal lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "superior parietal lobule", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 5L (SPL)", + "arealabel": "Area-5L", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C1FQ-2F", + "synonyms": [], + "rgb": [ + 184, + 185, + 58 + ], + "children": [ + { + "name": "Area 5L (SPL) - left hemisphere", + "rgb": [ + 184, + 185, + 58 + ], + "labelIndex": 130, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -18807832, + -47524930, + 66950353 + ] + }, + { + "name": "Area 5L (SPL) - right hemisphere", + "rgb": [ + 184, + 185, + 58 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 130, + "children": [], + "status": "publicP", + "position": [ + 12970516, + -51174624, + 70371695 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "64555f7f-1b33-4ffe-9853-be41e7a21096" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 7M (SPL)", + "arealabel": "Area-7M", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F25F-EKW", + "synonyms": [], + "rgb": [ + 205, + 61, + 236 + ], + "children": [ + { + "name": "Area 7M (SPL) - left hemisphere", + "rgb": [ + 205, + 61, + 236 + ], + "labelIndex": 135, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -777896, + -78103082, + 35256111 + ] + }, + { + "name": "Area 7M (SPL) - right hemisphere", + "rgb": [ + 205, + 61, + 236 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 135, + "children": [], + "status": "publicP", + "position": [ + 4281250, + -75882812, + 38312500 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "0aacea5c-bc9e-483f-8376-25f176ada158" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 7PC (SPL)", + "arealabel": "Area-7PC", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/Z45N-1T", + "synonyms": [], + "rgb": [ + 252, + 89, + 28 + ], + "children": [ + { + "name": "Area 7PC (SPL) - left hemisphere", + "rgb": [ + 252, + 89, + 28 + ], + "labelIndex": 132, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -32056266, + -48916454, + 60868713 + ] + }, + { + "name": "Area 7PC (SPL) - right hemisphere", + "rgb": [ + 252, + 89, + 28 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 132, + "children": [], + "status": "publicP", + "position": [ + 30055171, + -49079568, + 61493485 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "763140d3-7ba0-4f28-b0ac-c6cbda2d14e1" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 5M (SPL)", + "arealabel": "Area-5M", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/Y12F-YMU", + "synonyms": [], + "rgb": [ + 225, + 245, + 76 + ], + "children": [ + { + "name": "Area 5M (SPL) - left hemisphere", + "rgb": [ + 225, + 245, + 76 + ], + "labelIndex": 131, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -7527881, + -41962560, + 59221721 + ] + }, + { + "name": "Area 5M (SPL) - right hemisphere", + "rgb": [ + 225, + 245, + 76 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 131, + "children": [], + "status": "publicP", + "position": [ + 4642562, + -44304959, + 60273140 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "abe105cf-2c29-46af-af75-6b46fdb75137" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 7P (SPL)", + "arealabel": "Area-7P", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3HS-8R7", + "synonyms": [], + "rgb": [ + 52, + 20, + 106 + ], + "children": [ + { + "name": "Area 7P (SPL) - left hemisphere", + "rgb": [ + 52, + 20, + 106 + ], + "labelIndex": 208, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -7679310, + -76043295, + 52631801 + ] + }, + { + "name": "Area 7P (SPL) - right hemisphere", + "rgb": [ + 52, + 20, + 106 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 208, + "children": [], + "status": "publicP", + "position": [ + 14232037, + -74892094, + 56304919 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "af9c4f39-63a4-409f-b306-e5965d639f37" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 5Ci (SPL)", + "arealabel": "Area-5Ci", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/SQVP-GK1", + "synonyms": [], + "rgb": [ + 79, + 242, + 146 + ], + "children": [ + { + "name": "Area 5Ci (SPL) - left hemisphere", + "rgb": [ + 79, + 242, + 146 + ], + "labelIndex": 136, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -14033790, + -35828311, + 43857534 + ] + }, + { + "name": "Area 5Ci (SPL) - right hemisphere", + "rgb": [ + 79, + 242, + 146 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 136, + "children": [], + "status": "publicP", + "position": [ + 10563961, + -36194957, + 46892989 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "07d08f74-af3d-4cbe-bc3c-f32b7f5c989f" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 7A (SPL)", + "arealabel": "Area-7A", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/7HX2-AJH", + "synonyms": [], + "rgb": [ + 38, + 204, + 19 + ], + "children": [ + { + "name": "Area 7A (SPL) - left hemisphere", + "rgb": [ + 38, + 204, + 19 + ], + "labelIndex": 134, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -20856230, + -62269710, + 61643512 + ] + }, + { + "name": "Area 7A (SPL) - right hemisphere", + "rgb": [ + 38, + 204, + 19 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 134, + "children": [], + "status": "publicP", + "position": [ + 20910951, + -62880523, + 62944473 + ] + } + ], + "relatedAreas": [ + { + "name": "Area 7A", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "811f4adb-4a7c-45c1-8034-4afa9edf586a" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e26e999f-77ad-4934-9569-8290ed05ebda" + } + } + } + ] + }, + { + "name": "parietal operculum", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area OP3 (POperc)", + "arealabel": "Area-OP3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/1Z8F-PX4", + "synonyms": [], + "rgb": [ + 58, + 122, + 80 + ], + "children": [ + { + "name": "Area OP3 (POperc) - left hemisphere", + "rgb": [ + 58, + 122, + 80 + ], + "labelIndex": 75, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -40814044, + -13737321, + 17669701 + ] + }, + { + "name": "Area OP3 (POperc) - right hemisphere", + "rgb": [ + 58, + 122, + 80 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 75, + "children": [], + "status": "publicP", + "position": [ + 41195980, + -11633166, + 18002513 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f6f10b01-6c10-42cf-8129-f5aaf307a36b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area OP4 (POperc)", + "arealabel": "Area-OP4", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/BVT0-H3U", + "synonyms": [], + "rgb": [ + 89, + 80, + 132 + ], + "children": [ + { + "name": "Area OP4 (POperc) - left hemisphere", + "rgb": [ + 89, + 80, + 132 + ], + "labelIndex": 72, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -60514139, + -10849614, + 15368038 + ] + }, + { + "name": "Area OP4 (POperc) - right hemisphere", + "rgb": [ + 89, + 80, + 132 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 72, + "children": [], + "status": "publicP", + "position": [ + 63398148, + -9211111, + 12780864 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b1e7f0d2-6d37-4047-9c2e-a08c3f1e2a16" + } + }, + "relatedAreas": [] + }, + { + "name": "Area OP2 (POperc)", + "arealabel": "Area-OP2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/5KBV-36J", + "synonyms": [], + "rgb": [ + 36, + 47, + 221 + ], + "children": [ + { + "name": "Area OP2 (POperc) - left hemisphere", + "rgb": [ + 36, + 47, + 221 + ], + "labelIndex": 74, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -36355372, + -23452479, + 18938017 + ] + }, + { + "name": "Area OP2 (POperc) - right hemisphere", + "rgb": [ + 36, + 47, + 221 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 74, + "children": [], + "status": "publicP", + "position": [ + 35629457, + -21159690, + 18021705 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "ab26cefd-f7d6-4442-8020-a6e418e673ff" + } + }, + "relatedAreas": [] + }, + { + "name": "Area OP1 (POperc)", + "arealabel": "Area-OP1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/SH37-979", + "synonyms": [], + "rgb": [ + 250, + 182, + 34 + ], + "children": [ + { + "name": "Area OP1 (POperc) - left hemisphere", + "rgb": [ + 250, + 182, + 34 + ], + "labelIndex": 73, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -51566527, + -22523828, + 17190240 + ] + }, + { + "name": "Area OP1 (POperc) - right hemisphere", + "rgb": [ + 250, + 182, + 34 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 73, + "children": [], + "status": "publicP", + "position": [ + 52888430, + -20697107, + 17000826 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "402ec28d-0809-4226-91a4-900d9303291b" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "postcentral gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 3b (PostCG)", + "arealabel": "Area-3b", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/2JK3-QXR", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area 3b", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "74304fe9-452e-4ca3-97a3-8cf3459bb1a0" + } + } + } + ], + "rgb": [ + 239, + 246, + 155 + ], + "children": [ + { + "name": "Area 3b (PostCG) - left hemisphere", + "rgb": [ + 239, + 246, + 155 + ], + "labelIndex": 127, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -44439219, + -21735041, + 46012387 + ] + }, + { + "name": "Area 3b (PostCG) - right hemisphere", + "rgb": [ + 239, + 246, + 155 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 127, + "children": [], + "status": "publicP", + "position": [ + 38765839, + -25096118, + 48227174 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b84f67bb-5d9f-4daf-a8d6-15f63f901bd4" + } + } + }, + { + "name": "Area 1 (PostCG)", + "arealabel": "Area-1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/THB5-B64", + "synonyms": [], + "rgb": [ + 232, + 185, + 250 + ], + "children": [ + { + "name": "Area 1 (PostCG) - left hemisphere", + "rgb": [ + 232, + 185, + 250 + ], + "labelIndex": 125, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -47104485, + -28297920, + 57798046 + ] + }, + { + "name": "Area 1 (PostCG) - right hemisphere", + "rgb": [ + 232, + 185, + 250 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 125, + "children": [], + "status": "publicP", + "position": [ + 48452543, + -27132790, + 56150187 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "c9753e82-80ca-4074-a704-9dd2c4c0d58b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 2 (PostCS)", + "arealabel": "Area-2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/QA8F-DD2", + "synonyms": [], + "rgb": [ + 23, + 13, + 35 + ], + "children": [ + { + "name": "Area 2 (PostCS) - left hemisphere", + "rgb": [ + 23, + 13, + 35 + ], + "labelIndex": 252, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -42268059, + -32424512, + 51210202 + ] + }, + { + "name": "Area 2 (PostCS) - right hemisphere", + "rgb": [ + 23, + 13, + 35 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 252, + "children": [], + "status": "publicP", + "position": [ + 38223619, + -34651627, + 52535010 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f9147ae9-5cf0-41b2-89a3-e6e6df07bef1" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 3a (PostCG)", + "arealabel": "Area-3a", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C5QQ-EFB", + "synonyms": [], + "rgb": [ + 187, + 133, + 50 + ], + "children": [ + { + "name": "Area 3a (PostCG) - left hemisphere", + "rgb": [ + 187, + 133, + 50 + ], + "labelIndex": 126, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -31927553, + -25650901, + 44513889 + ] + }, + { + "name": "Area 3a (PostCG) - right hemisphere", + "rgb": [ + 187, + 133, + 50 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 126, + "children": [], + "status": "publicP", + "position": [ + 38813714, + -19184000, + 36284571 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "2657ecc1-da69-4a37-9b37-66ae95f9623c" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "inferior parietal lobule", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area PF (IPL)", + "arealabel": "Area-PF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F1TJ-54W", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PF", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f4e177a6-1b2c-48d5-a62c-91949ba636e4" + } + } + } + ], + "rgb": [ + 226, + 211, + 61 + ], + "children": [ + { + "name": "Area PF (IPL) - left hemisphere", + "rgb": [ + 226, + 211, + 61 + ], + "labelIndex": 206, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -59814938, + -37432365, + 36569295 + ] + }, + { + "name": "Area PF (IPL) - right hemisphere", + "rgb": [ + 226, + 211, + 61 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 206, + "children": [], + "status": "publicP", + "position": [ + 64016699, + -33052700, + 30153112 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "18e5e1b0-6c25-4f55-a967-0834d2bd3ee4" + } + } + }, + { + "name": "Area PFcm (IPL)", + "arealabel": "Area-PFcm", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/8DP8-8HE", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PFcm", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f07d441f-452f-471b-ac7c-0d3c2ae16fb2" + } + } + } + ], + "rgb": [ + 98, + 128, + 120 + ], + "children": [ + { + "name": "Area PFcm (IPL) - left hemisphere", + "rgb": [ + 98, + 128, + 120 + ], + "labelIndex": 113, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -51751410, + -36954069, + 22546334 + ] + }, + { + "name": "Area PFcm (IPL) - right hemisphere", + "rgb": [ + 98, + 128, + 120 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 113, + "children": [], + "status": "publicP", + "position": [ + 53524370, + -31637287, + 23177904 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "10502c3a-f20e-44fa-b985-786d6888d4bb" + } + } + }, + { + "name": "Area PGa (IPL)", + "arealabel": "Area-PGa", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/V5HY-XTS", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PGa", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d5b168a3-a92e-4ab3-8b4d-61e58e5b7a1c" + } + } + } + ], + "rgb": [ + 42, + 236, + 131 + ], + "children": [ + { + "name": "Area PGa (IPL) - left hemisphere", + "rgb": [ + 42, + 236, + 131 + ], + "labelIndex": 110, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -48873487, + -60780569, + 37191889 + ] + }, + { + "name": "Area PGa (IPL) - right hemisphere", + "rgb": [ + 42, + 236, + 131 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 110, + "children": [], + "status": "publicP", + "position": [ + 55283797, + -55333653, + 30316395 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d7f6c5be-93c6-4a16-8939-4420329d4147" + } + } + }, + { + "name": "Area PFt (IPL)", + "arealabel": "Area-PFt", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/JGM9-ZET", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PFt", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9ff7fcc4-a88b-4bf8-be07-1386a3760a96" + } + } + } + ], + "rgb": [ + 120, + 135, + 232 + ], + "children": [ + { + "name": "Area PFt (IPL) - left hemisphere", + "rgb": [ + 120, + 135, + 232 + ], + "labelIndex": 109, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -55015237, + -27583919, + 38095874 + ] + }, + { + "name": "Area PFt (IPL) - right hemisphere", + "rgb": [ + 120, + 135, + 232 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 109, + "children": [], + "status": "publicP", + "position": [ + 54808632, + -24626296, + 37973570 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "847cef50-7340-470d-8580-327b4ce9db19" + } + } + }, + { + "name": "Area PFm (IPL)", + "arealabel": "Area-PFm", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/TB94-HRK", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PFm", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3455ada4-48c3-4748-ae38-2fe3f376f0fc" + } + } + } + ], + "rgb": [ + 53, + 76, + 145 + ], + "children": [ + { + "name": "Area PFm (IPL) - left hemisphere", + "rgb": [ + 53, + 76, + 145 + ], + "labelIndex": 112, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -54527689, + -52389045, + 38877207 + ] + }, + { + "name": "Area PFm (IPL) - right hemisphere", + "rgb": [ + 53, + 76, + 145 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 112, + "children": [], + "status": "publicP", + "position": [ + 56990022, + -45541717, + 38606571 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "411edde9-685f-464b-970c-a929f9a4067c" + } + } + }, + { + "name": "Area PGp (IPL)", + "arealabel": "Area-PGp", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/FPFJ-ZCD", + "synonyms": [], + "rgb": [ + 92, + 116, + 83 + ], + "children": [ + { + "name": "Area PGp (IPL) - left hemisphere", + "rgb": [ + 92, + 116, + 83 + ], + "labelIndex": 108, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -44673441, + -73269937, + 29840224 + ] + }, + { + "name": "Area PGp (IPL) - right hemisphere", + "rgb": [ + 92, + 116, + 83 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 108, + "children": [], + "status": "publicP", + "position": [ + 47749459, + -70528695, + 30721440 + ] + } + ], + "relatedAreas": [ + { + "name": "Area PGp", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "1b00a0e4-9493-43ff-bfbd-b02119064813" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b3ef6947-76c9-4935-bbc6-8b2329c0967b" + } + } + }, + { + "name": "Area PFop (IPL)", + "arealabel": "Area-PFop", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/M2PM-92Q", + "synonyms": [], + "rgb": [ + 146, + 153, + 177 + ], + "children": [ + { + "name": "Area PFop (IPL) - left hemisphere", + "rgb": [ + 146, + 153, + 177 + ], + "labelIndex": 111, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -60026462, + -24694986, + 24259053 + ] + }, + { + "name": "Area PFop (IPL) - right hemisphere", + "rgb": [ + 146, + 153, + 177 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 111, + "children": [], + "status": "publicP", + "position": [ + 58286575, + -20617534, + 24917260 + ] + } + ], + "relatedAreas": [ + { + "name": "Area PFop", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b4397c40-82e1-4d62-b97a-44e8d04b428b" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e8262e56-88fe-4006-b078-def4d78416b8" + } + } + } + ] + }, + { + "name": "parieto-occipital sulcus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hPO1 (POS)", + "arealabel": "Area-hPO1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/W50A-FAP", + "synonyms": [], + "rgb": [ + 153, + 232, + 235 + ], + "children": [ + { + "name": "Area hPO1 (POS) - left hemisphere", + "rgb": [ + 153, + 232, + 235 + ], + "labelIndex": 297, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -15069260, + -80661951, + 37074565 + ] + }, + { + "name": "Area hPO1 (POS) - right hemisphere", + "rgb": [ + 153, + 232, + 235 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 297, + "children": [], + "status": "publicP", + "position": [ + 21853147, + -80927739, + 37048660 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a78998c2-99d4-4738-bbda-82a317f713f1" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "intraparietal sulcus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hIP1 (IPS)", + "arealabel": "Area-hIP1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/92FE-7S6", + "synonyms": [], + "rgb": [ + 66, + 149, + 82 + ], + "children": [ + { + "name": "Area hIP1 (IPS) - left hemisphere", + "rgb": [ + 66, + 149, + 82 + ], + "labelIndex": 128, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -36841999, + -49449871, + 40584028 + ] + }, + { + "name": "Area hIP1 (IPS) - right hemisphere", + "rgb": [ + 66, + 149, + 82 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 128, + "children": [], + "status": "publicP", + "position": [ + 40629988, + -48019372, + 39158853 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7722c71f-fe84-4deb-8f6b-98e2aecf2e31" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP7 (IPS)", + "arealabel": "Area-hIP7", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WRCY-8Z1", + "synonyms": [], + "rgb": [ + 71, + 196, + 218 + ], + "children": [ + { + "name": "Area hIP7 (IPS) - left hemisphere", + "rgb": [ + 71, + 196, + 218 + ], + "labelIndex": 296, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -22044741, + -79989011, + 29353218 + ] + }, + { + "name": "Area hIP7 (IPS) - right hemisphere", + "rgb": [ + 71, + 196, + 218 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 296, + "children": [], + "status": "publicP", + "position": [ + 29041586, + -79117828, + 27046207 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9c6c3c96-8129-4e0e-aa22-a0fb435aab45" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP3 (IPS)", + "arealabel": "Area-hIP3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/P8X0-V1G", + "synonyms": [], + "rgb": [ + 113, + 172, + 229 + ], + "children": [ + { + "name": "Area hIP3 (IPS) - left hemisphere", + "rgb": [ + 113, + 172, + 229 + ], + "labelIndex": 133, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -30430769, + -55031164, + 46842209 + ] + }, + { + "name": "Area hIP3 (IPS) - right hemisphere", + "rgb": [ + 113, + 172, + 229 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 133, + "children": [], + "status": "publicP", + "position": [ + 33538679, + -49884591, + 50461950 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "700ac6db-870d-44f1-8786-0c01207f992b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP2 (IPS)", + "arealabel": "Area-hIP2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/EJTM-NDY", + "synonyms": [], + "rgb": [ + 127, + 245, + 203 + ], + "children": [ + { + "name": "Area hIP2 (IPS) - left hemisphere", + "rgb": [ + 127, + 245, + 203 + ], + "labelIndex": 129, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -46531100, + -41482722, + 43278044 + ] + }, + { + "name": "Area hIP2 (IPS) - right hemisphere", + "rgb": [ + 127, + 245, + 203 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 129, + "children": [], + "status": "publicP", + "position": [ + 44605145, + -39958613, + 45130872 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "4490ef3e-ce60-4453-9e9f-85388d0603cb" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP4 (IPS)", + "arealabel": "Area-hIP4", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/TSEN-QSY", + "synonyms": [], + "rgb": [ + 254, + 52, + 184 + ], + "children": [ + { + "name": "Area hIP4 (IPS) - left hemisphere", + "rgb": [ + 254, + 52, + 184 + ], + "labelIndex": 294, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -29349066, + -79948651, + 25849585 + ] + }, + { + "name": "Area hIP4 (IPS) - right hemisphere", + "rgb": [ + 254, + 52, + 184 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 294, + "children": [], + "status": "publicP", + "position": [ + 37324927, + -76495150, + 22338021 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "5875bfe2-99ca-4e50-bce2-61c201c3dd54" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP5 (IPS)", + "arealabel": "Area-hIP5", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/RNSM-Y4Y", + "synonyms": [], + "rgb": [ + 217, + 87, + 210 + ], + "children": [ + { + "name": "Area hIP5 (IPS) - left hemisphere", + "rgb": [ + 217, + 87, + 210 + ], + "labelIndex": 295, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -28321120, + -73162807, + 36664362 + ] + }, + { + "name": "Area hIP5 (IPS) - right hemisphere", + "rgb": [ + 217, + 87, + 210 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 295, + "children": [], + "status": "publicP", + "position": [ + 34614713, + -68930590, + 33299252 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f9717dec-0310-4078-a4ae-294170b4fb37" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP6 (IPS)", + "arealabel": "Area-hIP6", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/AFQR-50Q", + "synonyms": [], + "rgb": [ + 237, + 233, + 37 + ], + "children": [ + { + "name": "Area hIP6 (IPS) - left hemisphere", + "rgb": [ + 237, + 233, + 37 + ], + "labelIndex": 292, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -31988131, + -66522626, + 46155045 + ] + }, + { + "name": "Area hIP6 (IPS) - right hemisphere", + "rgb": [ + 237, + 233, + 37 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 292, + "children": [], + "status": "publicP", + "position": [ + 37069307, + -63723479, + 45628006 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b9975f8e-f484-4e82-883a-5fd765855ae0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP8 (IPS)", + "arealabel": "Area-hIP8", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/YYT8-FT8", + "synonyms": [], + "rgb": [ + 223, + 109, + 3 + ], + "children": [ + { + "name": "Area hIP8 (IPS) - left hemisphere", + "rgb": [ + 223, + 109, + 3 + ], + "labelIndex": 293, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -18133307, + -72231198, + 43245125 + ] + }, + { + "name": "Area hIP8 (IPS) - right hemisphere", + "rgb": [ + 223, + 109, + 3 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 293, + "children": [], + "status": "publicP", + "position": [ + 26220986, + -71480127, + 41680048 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a2c1acc7-7fdc-4fbd-90ee-729eda7fdff3" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "occiptal lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "dorsal occipital cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hOc6 (POS)", + "arealabel": "Area-hOc6", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/4101-1ZG", + "synonyms": [], + "rgb": [ + 239, + 66, + 26 + ], + "children": [ + { + "name": "Area hOc6 (POS) - left hemisphere", + "rgb": [ + 239, + 66, + 26 + ], + "labelIndex": 291, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -15925775, + -70685971, + 16518760 + ] + }, + { + "name": "Area hOc6 (POS) - right hemisphere", + "rgb": [ + 239, + 66, + 26 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 291, + "children": [], + "status": "publicP", + "position": [ + 17750454, + -67625227, + 17755898 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d72e0210-a910-4b15-bcaf-80c3433cd3e0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc4d (Cuneus)", + "arealabel": "Area-hOc4d", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/VSK5-DET", + "synonyms": [], + "rgb": [ + 109, + 218, + 10 + ], + "children": [ + { + "name": "Area hOc4d (Cuneus) - left hemisphere", + "rgb": [ + 109, + 218, + 10 + ], + "labelIndex": 119, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -17209585, + -87846006, + 25522684 + ] + }, + { + "name": "Area hOc4d (Cuneus) - right hemisphere", + "rgb": [ + 109, + 218, + 10 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 119, + "children": [], + "status": "publicP", + "position": [ + 20232373, + -87193644, + 27253227 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8120426c-f65b-4426-8a58-3060e2334921" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc3d (Cuneus)", + "arealabel": "Area-hOc3d", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F9X3-JVJ", + "synonyms": [], + "rgb": [ + 105, + 191, + 48 + ], + "children": [ + { + "name": "Area hOc3d (Cuneus) - left hemisphere", + "rgb": [ + 105, + 191, + 48 + ], + "labelIndex": 120, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -12816505, + -91289984, + 21840872 + ] + }, + { + "name": "Area hOc3d (Cuneus) - right hemisphere", + "rgb": [ + 105, + 191, + 48 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 120, + "children": [], + "status": "publicP", + "position": [ + 16129503, + -88897084, + 23080617 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d7ec4342-ae58-41e3-a68c-28e90a719d41" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "ventral occipital cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hOc3v (LingG)", + "arealabel": "Area-hOc3v", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/E5E8-1VV", + "synonyms": [], + "rgb": [ + 83, + 179, + 155 + ], + "children": [ + { + "name": "Area hOc3v (LingG) - left hemisphere", + "rgb": [ + 83, + 179, + 155 + ], + "labelIndex": 10, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -18685863, + -85629087, + -10106719 + ] + }, + { + "name": "Area hOc3v (LingG) - right hemisphere", + "rgb": [ + 83, + 179, + 155 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 10, + "children": [], + "status": "publicP", + "position": [ + 24296060, + -81686611, + -10031193 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "0d6392fd-b905-4bc3-bac9-fc44d8990a30" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc4v (LingG)", + "arealabel": "Area-hOc4v", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/AASR-M8P", + "synonyms": [], + "rgb": [ + 222, + 77, + 155 + ], + "children": [ + { + "name": "Area hOc4v (LingG) - left hemisphere", + "rgb": [ + 222, + 77, + 155 + ], + "labelIndex": 9, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -26315808, + -78419533, + -12497238 + ] + }, + { + "name": "Area hOc4v (LingG) - right hemisphere", + "rgb": [ + 222, + 77, + 155 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 9, + "children": [], + "status": "publicP", + "position": [ + 32665897, + -76519832, + -12453305 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "27d91cbb-5611-4d38-bd17-c0f1ac22b4cc" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "occipital cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hOc2 (V2, 18)", + "arealabel": "Area-hOc2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/QG9C-THD", + "synonyms": [], + "rgb": [ + 84, + 110, + 22 + ], + "children": [ + { + "name": "Area hOc2 (V2, 18) - left hemisphere", + "rgb": [ + 84, + 110, + 22 + ], + "labelIndex": 7, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -10521334, + -88185706, + 4055081 + ] + }, + { + "name": "Area hOc2 (V2, 18) - right hemisphere", + "rgb": [ + 84, + 110, + 22 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 7, + "children": [], + "status": "publicP", + "position": [ + 15409559, + -86163484, + 2905309 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "04674a3c-bb3a-495e-a466-206355e630bd" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc1 (V1, 17, CalcS)", + "arealabel": "Area-hOc1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/MXJ6-6DH", + "synonyms": [], + "rgb": [ + 190, + 132, + 147 + ], + "children": [ + { + "name": "Area hOc1 (V1, 17, CalcS) - left hemisphere", + "rgb": [ + 190, + 132, + 147 + ], + "labelIndex": 8, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8533787, + -84646549, + 1855106 + ] + }, + { + "name": "Area hOc1 (V1, 17, CalcS) - right hemisphere", + "rgb": [ + 190, + 132, + 147 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 8, + "children": [], + "status": "publicP", + "position": [ + 14654595, + -81416396, + 1637838 + ] + } + ], + "relatedAreas": [ + { + "name": "Area hOc1", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b851eb9d-9502-45e9-8dd8-2861f0e6da3f" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "5151ab8f-d8cb-4e67-a449-afe2a41fb007" + } + } + } + ] + }, + { + "name": "lateral occipital cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hOc4lp (LOC)", + "arealabel": "Area-hOc4lp", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/4B87-Q8X", + "synonyms": [], + "rgb": [ + 96, + 113, + 253 + ], + "children": [ + { + "name": "Area hOc4lp (LOC) - left hemisphere", + "rgb": [ + 96, + 113, + 253 + ], + "labelIndex": 117, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -34066943, + -88725728, + 6360721 + ] + }, + { + "name": "Area hOc4lp (LOC) - right hemisphere", + "rgb": [ + 96, + 113, + 253 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 117, + "children": [], + "status": "publicP", + "position": [ + 38538256, + -86375516, + 4086228 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9006ee6a-6dc1-4604-9f20-7e08b42d574d" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc5 (LOC)", + "arealabel": "Area-hOc5", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/2WSH-MCT", + "synonyms": [], + "rgb": [ + 255, + 0, + 0 + ], + "children": [ + { + "name": "Area hOc5 (LOC) - left hemisphere", + "rgb": [ + 255, + 0, + 0 + ], + "labelIndex": 6, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -42484324, + -71486486, + 1795676 + ] + }, + { + "name": "Area hOc5 (LOC) - right hemisphere", + "rgb": [ + 255, + 0, + 0 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 6, + "children": [], + "status": "publicP", + "position": [ + 48090700, + -66172216, + 3121699 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b40afb5a-e6a1-47b6-8a3e-1f8a20fbf99a" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc4la (LOC)", + "arealabel": "Area-hOc4la", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/Z9JX-WKB", + "synonyms": [], + "rgb": [ + 233, + 168, + 189 + ], + "children": [ + { + "name": "Area hOc4la (LOC) - left hemisphere", + "rgb": [ + 233, + 168, + 189 + ], + "labelIndex": 118, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -46291484, + -76947955, + -372761 + ] + }, + { + "name": "Area hOc4la (LOC) - right hemisphere", + "rgb": [ + 233, + 168, + 189 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 118, + "children": [], + "status": "publicP", + "position": [ + 48566255, + -73862041, + -779202 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "94365b82-6204-4937-8b86-fe0433287938" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "frontal lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "inferior frontal gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 44 (IFG)", + "arealabel": "Area-44", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F9P8-ZVW", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area 44v", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7e5e7aa8-28b8-445b-8980-2a6f3fa645b3" + } + } + }, + { + "name": "Area 44d", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8aeae833-81c8-4e27-a8d6-deee339d6052" + } + } + } + ], + "rgb": [ + 54, + 74, + 75 + ], + "children": [ + { + "name": "Area 44 (IFG) - left hemisphere", + "rgb": [ + 54, + 74, + 75 + ], + "labelIndex": 2, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -54242820, + 11425127, + 18292735 + ] + }, + { + "name": "Area 44 (IFG) - right hemisphere", + "rgb": [ + 54, + 74, + 75 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 2, + "children": [], + "status": "publicP", + "position": [ + 56359074, + 11741030, + 13444358 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8a6be82c-5947-4fff-8348-cf9bf73e4f40" + } + } + }, + { + "name": "Area 45 (IFG)", + "arealabel": "Area-45", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/MR1V-BJ3", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area 45", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "131e6de8-b073-4f01-8f60-1bdb5a6c9a9a" + } + } + } + ], + "rgb": [ + 167, + 103, + 146 + ], + "children": [ + { + "name": "Area 45 (IFG) - left hemisphere", + "rgb": [ + 167, + 103, + 146 + ], + "labelIndex": 1, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -54903012, + 26558233, + 15528514 + ] + }, + { + "name": "Area 45 (IFG) - right hemisphere", + "rgb": [ + 167, + 103, + 146 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 1, + "children": [], + "status": "publicP", + "position": [ + 55787613, + 26216770, + 12102941 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "cb32e688-43f0-4ae3-9554-085973137663" + } + } + } + ] + }, + { + "name": "dorsal precentral gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 6d2 (PreCG)", + "arealabel": "Area-6d2", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/KXHS-N90", + "synonyms": [], + "rgb": [ + 170, + 151, + 180 + ], + "children": [ + { + "name": "Area 6d2 (PreCG) - left hemisphere", + "rgb": [ + 170, + 151, + 180 + ], + "labelIndex": 288, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -15757793, + 2030353, + 68024610 + ] + }, + { + "name": "Area 6d2 (PreCG) - right hemisphere", + "rgb": [ + 170, + 151, + 180 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 288, + "children": [], + "status": "publicDOI", + "position": [ + 14562976, + 2312675, + 68442439 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "963c5281-67df-4d41-9b91-60b31cf150c0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 6d1 (PreCG)", + "arealabel": "Area-6d1", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/4WSQ-8FM", + "synonyms": [], + "rgb": [ + 45, + 33, + 27 + ], + "children": [ + { + "name": "Area 6d1 (PreCG) - left hemisphere", + "rgb": [ + 45, + 33, + 27 + ], + "labelIndex": 287, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -20332759, + -14746524, + 68590141 + ] + }, + { + "name": "Area 6d1 (PreCG) - right hemisphere", + "rgb": [ + 45, + 33, + 27 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 287, + "children": [], + "status": "publicDOI", + "position": [ + 20258981, + -16559656, + 68870890 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a802f3dc-b7e5-48b7-9845-832a6e6f9b1c" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "posterior medial superior frontal gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 6ma (preSMA, mesial SFG)", + "arealabel": "Area-6ma", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WVNR-SPT", + "synonyms": [], + "rgb": [ + 204, + 108, + 222 + ], + "children": [ + { + "name": "Area 6ma (preSMA, mesial SFG) - left hemisphere", + "rgb": [ + 204, + 108, + 222 + ], + "labelIndex": 299, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -4083913, + 4296092, + 58555023 + ] + }, + { + "name": "Area 6ma (preSMA, mesial SFG) - right hemisphere", + "rgb": [ + 204, + 108, + 222 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 299, + "children": [], + "status": "publicP", + "position": [ + 5230140, + 4042128, + 58355079 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "07b4c6a1-8a24-4f88-8f73-b2ea06e1c2f3" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "superior frontal sulcus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 6d3 (SFS)", + "arealabel": "Area-6d3", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/NVJ5-JJ", + "synonyms": [], + "rgb": [ + 55, + 239, + 21 + ], + "children": [ + { + "name": "Area 6d3 (SFS) - left hemisphere", + "rgb": [ + 55, + 239, + 21 + ], + "labelIndex": 289, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -23315931, + 4317151, + 51434008 + ] + }, + { + "name": "Area 6d3 (SFS) - right hemisphere", + "rgb": [ + 55, + 239, + 21 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 289, + "children": [], + "status": "publicDOI", + "position": [ + 25173639, + 1578188, + 53334281 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "266c1ada-1840-462f-8223-7ff2df457552" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "frontal pole", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Fp1 (FPole)", + "arealabel": "Area-Fp1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/PTKW-R7W", + "synonyms": [], + "rgb": [ + 226, + 14, + 200 + ], + "children": [ + { + "name": "Area Fp1 (FPole) - left hemisphere", + "rgb": [ + 226, + 14, + 200 + ], + "labelIndex": 212, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -16331031, + 64168302, + 549101 + ] + }, + { + "name": "Area Fp1 (FPole) - right hemisphere", + "rgb": [ + 226, + 14, + 200 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 212, + "children": [], + "status": "publicP", + "position": [ + 18482225, + 63988011, + -317043 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "10dc5343-941b-4e3e-80ed-df031c33bbc6" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fp2 (FPole)", + "arealabel": "Area-Fp2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/GZW1-7R3", + "synonyms": [], + "rgb": [ + 239, + 137, + 211 + ], + "children": [ + { + "name": "Area Fp2 (FPole) - left hemisphere", + "rgb": [ + 239, + 137, + 211 + ], + "labelIndex": 211, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -3739067, + 59074587, + -1181973 + ] + }, + { + "name": "Area Fp2 (FPole) - right hemisphere", + "rgb": [ + 239, + 137, + 211 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 211, + "children": [], + "status": "publicP", + "position": [ + 6093420, + 59611191, + -509606 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3bf7bde1-cc06-4657-b296-380275f9d4b8" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "precentral gyrus ", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 4p (PreCG)", + "arealabel": "Area-4p", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/5HSF-81J", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area 4p", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "861ab96a-c4b5-4ba6-bd40-1e80d4680f89" + } + } + } + ], + "rgb": [ + 116, + 92, + 124 + ], + "children": [ + { + "name": "Area 4p (PreCG) - left hemisphere", + "rgb": [ + 116, + 92, + 124 + ], + "labelIndex": 123, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -36140917, + -22750424, + 49282965 + ] + }, + { + "name": "Area 4p (PreCG) - right hemisphere", + "rgb": [ + 116, + 92, + 124 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 123, + "children": [], + "status": "publicP", + "position": [ + 37510795, + -21359659, + 46456250 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "82e6e826-a439-41db-84ff-4674ca3d643a" + } + } + }, + { + "name": "Area 4a (PreCG)", + "arealabel": "Area-4a", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/PVPP-P3Q", + "synonyms": [], + "rgb": [ + 118, + 239, + 183 + ], + "children": [ + { + "name": "Area 4a (PreCG) - left hemisphere", + "rgb": [ + 118, + 239, + 183 + ], + "labelIndex": 124, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -17367391, + -28669064, + 67404682 + ] + }, + { + "name": "Area 4a (PreCG) - right hemisphere", + "rgb": [ + 118, + 239, + 183 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 124, + "children": [], + "status": "publicP", + "position": [ + 9609157, + -31334779, + 68068112 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "175848ff-4c55-47e3-a0ae-f905a14e03cd" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "mesial precentral gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 6mp (SMA, mesial SFG)", + "arealabel": "Area-6mp", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/2E1T-47F", + "synonyms": [], + "rgb": [ + 75, + 95, + 87 + ], + "children": [ + { + "name": "Area 6mp (SMA, mesial SFG) - left hemisphere", + "rgb": [ + 75, + 95, + 87 + ], + "labelIndex": 298, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -4094374, + -14286751, + 59329220 + ] + }, + { + "name": "Area 6mp (SMA, mesial SFG) - right hemisphere", + "rgb": [ + 75, + 95, + 87 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 298, + "children": [], + "status": "publicP", + "position": [ + 4949202, + -13788668, + 57534028 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "def99e8e-ce8f-4a62-bd5d-739948c4b010" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "medial orbitofrontal cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Fo1 (OFC)", + "arealabel": "Area-Fo1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/H2N2-6J2", + "synonyms": [], + "rgb": [ + 7, + 255, + 179 + ], + "children": [ + { + "name": "Area Fo1 (OFC) - left hemisphere", + "rgb": [ + 7, + 255, + 179 + ], + "labelIndex": 3, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -7962771, + 41364968, + -22537687 + ] + }, + { + "name": "Area Fo1 (OFC) - right hemisphere", + "rgb": [ + 7, + 255, + 179 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 3, + "children": [], + "status": "publicP", + "position": [ + 9705948, + 40760961, + -22481988 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3864cb8c-f277-4de6-9f8d-c76d71d7e9a9" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo3 (OFC)", + "arealabel": "Area-Fo3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/E1YQ-65U", + "synonyms": [], + "rgb": [ + 182, + 189, + 250 + ], + "children": [ + { + "name": "Area Fo3 (OFC) - left hemisphere", + "rgb": [ + 182, + 189, + 250 + ], + "labelIndex": 5, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -21866985, + 33732378, + -19882472 + ] + }, + { + "name": "Area Fo3 (OFC) - right hemisphere", + "rgb": [ + 182, + 189, + 250 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 5, + "children": [], + "status": "publicP", + "position": [ + 22929678, + 33527877, + -20231493 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "741f6a9e-cfd7-4173-ac7d-ee616c29555e" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo2 (OFC)", + "arealabel": "Area-Fo2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3JB9-2V2", + "synonyms": [], + "rgb": [ + 0, + 255, + 0 + ], + "children": [ + { + "name": "Area Fo2 (OFC) - left hemisphere", + "rgb": [ + 0, + 255, + 0 + ], + "labelIndex": 4, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8588272, + 22532156, + -20474464 + ] + }, + { + "name": "Area Fo2 (OFC) - right hemisphere", + "rgb": [ + 0, + 255, + 0 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 4, + "children": [], + "status": "publicP", + "position": [ + 9164379, + 21928964, + -20593342 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "30a04d2b-58e1-43d7-8b8f-1f0b598382d0" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "frontal operculum ", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area OP8 (Frontal Operculum)", + "arealabel": "Area-OP8", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/NGF8-TA4", + "synonyms": [], + "rgb": [ + 29, + 76, + 168 + ], + "children": [ + { + "name": "Area OP8 (Frontal Operculum) - left hemisphere", + "rgb": [ + 29, + 76, + 168 + ], + "labelIndex": 273, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -41777921, + 17183344, + 7912847 + ] + }, + { + "name": "Area OP8 (Frontal Operculum) - right hemisphere", + "rgb": [ + 29, + 76, + 168 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 273, + "children": [], + "status": "publicDOI", + "position": [ + 42725111, + 16774146, + 7832095 + ] + } + ] + }, + { + "name": "Area OP9 (Frontal Operculum)", + "arealabel": "Area-OP9", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3A30-5E4", + "synonyms": [], + "rgb": [ + 175, + 123, + 34 + ], + "children": [ + { + "name": "Area OP9 (Frontal Operculum) - left hemisphere", + "rgb": [ + 175, + 123, + 34 + ], + "labelIndex": 274, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -45090542, + 25998787, + 5597413 + ] + }, + { + "name": "Area OP9 (Frontal Operculum) - right hemisphere", + "rgb": [ + 175, + 123, + 34 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 274, + "children": [], + "status": "publicDOI", + "position": [ + 44374928, + 26272467, + 2966228 + ] + } + ] + } + ] + }, + { + "name": "lateral orbitofrontal cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Fo5 (OFC)", + "arealabel": "Area-Fo5", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/HJMY-ZZP", + "synonyms": [], + "rgb": [ + 219, + 11, + 91 + ], + "children": [ + { + "name": "Area Fo5 (OFC) - left hemisphere", + "rgb": [ + 219, + 11, + 91 + ], + "labelIndex": 325, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -38055351, + 56315867, + -8720295 + ] + }, + { + "name": "Area Fo5 (OFC) - right hemisphere", + "rgb": [ + 219, + 11, + 91 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 325, + "children": [], + "status": "publicDOI", + "position": [ + 40545983, + 54504228, + -4983615 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3fd2e113-ec08-407b-bc88-172c9285694a" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo4 (OFC)", + "arealabel": "Area-Fo4", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/29G0-66F", + "synonyms": [], + "rgb": [ + 163, + 204, + 53 + ], + "children": [ + { + "name": "Area Fo4 (OFC) - left hemisphere", + "rgb": [ + 163, + 204, + 53 + ], + "labelIndex": 324, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -27573653, + 52998204, + -14510778 + ] + }, + { + "name": "Area Fo4 (OFC) - right hemisphere", + "rgb": [ + 163, + 204, + 53 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 324, + "children": [], + "status": "publicDOI", + "position": [ + 33636124, + 52034755, + -15509742 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "2cdee956-207a-4d4d-b051-bef80045210b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo6 (OFC)", + "arealabel": "Area-Fo6", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/34Q4-H62", + "synonyms": [], + "rgb": [ + 199, + 156, + 187 + ], + "children": [ + { + "name": "Area Fo6 (OFC) - left hemisphere", + "rgb": [ + 199, + 156, + 187 + ], + "labelIndex": 326, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -44272971, + 42876258, + -12938967 + ] + }, + { + "name": "Area Fo6 (OFC) - right hemisphere", + "rgb": [ + 199, + 156, + 187 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 326, + "children": [], + "status": "publicDOI", + "position": [ + 48891176, + 40513824, + -12457353 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "330ae178-557c-4bd0-a932-f138c0a05345" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo7 (OFC)", + "arealabel": "Area-Fo7", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3WEV-561", + "synonyms": [], + "rgb": [ + 64, + 211, + 186 + ], + "children": [ + { + "name": "Area Fo7 (OFC) - left hemisphere", + "rgb": [ + 64, + 211, + 186 + ], + "labelIndex": 327, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -36046240, + 37308943, + -11666667 + ] + }, + { + "name": "Area Fo7 (OFC) - right hemisphere", + "rgb": [ + 64, + 211, + 186 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 327, + "children": [], + "status": "publicDOI", + "position": [ + 37850755, + 37700302, + -13777644 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "1b882148-fcdd-4dbe-b33d-659957840e9e" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "granular insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Ig1 (Insula)", + "arealabel": "Area-Ig1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/EKV9-29D", + "synonyms": [], + "rgb": [ + 18, + 111, + 40 + ], + "children": [ + { + "name": "Area Ig1 (Insula) - left hemisphere", + "rgb": [ + 18, + 111, + 40 + ], + "labelIndex": 115, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -33211215, + -24171963, + 9923364 + ] + }, + { + "name": "Area Ig1 (Insula) - right hemisphere", + "rgb": [ + 18, + 111, + 40 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 115, + "children": [], + "status": "publicP", + "position": [ + 33707983, + -23338235, + 9071429 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "46cf08af-8086-4e8a-9e9f-182ca583bdf0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Ig3 (Insula)", + "arealabel": "Area-Ig3", + "status": "publicDOI", + "labelIndex": null, + "doi": "", + "synonyms": [], + "rgb": [ + 105, + 253, + 197 + ], + "children": [ + { + "name": "Area Ig3 (Insula) - left hemisphere", + "rgb": [ + 105, + 253, + 197 + ], + "labelIndex": 336, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -37956284, + -14423497, + 13513661 + ] + }, + { + "name": "Area Ig3 (Insula) - right hemisphere", + "rgb": [ + 105, + 253, + 197 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 336, + "children": [], + "status": "publicDOI", + "position": [ + 38219144, + -13750630, + 13916877 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "10dba769-4f6c-40f9-8ffd-e0cce71c5adb" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Ig2 (Insula)", + "arealabel": "Area-Ig2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/662G-E0W", + "synonyms": [], + "rgb": [ + 105, + 61, + 82 + ], + "children": [ + { + "name": "Area Ig2 (Insula) - left hemisphere", + "rgb": [ + 105, + 61, + 82 + ], + "labelIndex": 114, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -37117338, + -17859895, + 5094571 + ] + }, + { + "name": "Area Ig2 (Insula) - right hemisphere", + "rgb": [ + 105, + 61, + 82 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 114, + "children": [], + "status": "publicP", + "position": [ + 37843632, + -16445145, + 5703657 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "49092952-1eef-4b89-b8bf-1bf1f25f149a" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "agranular insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Ia (Insula)", + "arealabel": "Area-Ia", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WW8G-T2G", + "synonyms": [], + "rgb": [ + 71, + 217, + 62 + ], + "children": [ + { + "name": "Area Ia (Insula) - left hemisphere", + "rgb": [ + 71, + 217, + 62 + ], + "labelIndex": 339, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -41612827, + -1876485, + -7019002 + ] + }, + { + "name": "Area Ia (Insula) - right hemisphere", + "rgb": [ + 71, + 217, + 62 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 339, + "children": [], + "status": "publicDOI", + "position": [ + 43525000, + 36538, + -7609615 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "110d0d7b-cb88-48ea-9caf-863f548dbe38" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "dys-/agranular insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Id7 (Insula)", + "arealabel": "Area-Id7", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/88QG-JMS", + "synonyms": [], + "rgb": [ + 101, + 202, + 38 + ], + "children": [ + { + "name": "Area Id7 (Insula) - left hemisphere", + "rgb": [ + 101, + 202, + 38 + ], + "labelIndex": 159, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -30926962, + 23741297, + 4787031 + ] + }, + { + "name": "Area Id7 (Insula) - right hemisphere", + "rgb": [ + 101, + 202, + 38 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 159, + "children": [], + "status": "publicDOI", + "position": [ + 35034429, + 24873239, + 2446009 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3d5729f5-55c6-412a-8fc1-41a95c71b13a" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "dysgranular insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Id2 (Insula)", + "arealabel": "Area-Id2", + "status": "publicDOI", + "labelIndex": null, + "doi": "", + "synonyms": [], + "rgb": [ + 225, + 126, + 73 + ], + "children": [ + { + "name": "Area Id2 (Insula) - left hemisphere", + "rgb": [ + 225, + 126, + 73 + ], + "labelIndex": 56, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -41933981, + -11436893, + 4091262 + ] + }, + { + "name": "Area Id2 (Insula) - right hemisphere", + "rgb": [ + 225, + 126, + 73 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 56, + "children": [], + "status": "publicDOI", + "position": [ + 44043478, + -10289855, + 3759834 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "cf9dea67-649d-4034-ae57-ec389f339277" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id1 (Insula)", + "arealabel": "Area-Id1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F37H-8WB", + "synonyms": [], + "rgb": [ + 141, + 112, + 216 + ], + "children": [ + { + "name": "Area Id1 (Insula) - left hemisphere", + "rgb": [ + 141, + 112, + 216 + ], + "labelIndex": 116, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -40090747, + -18279359, + -4567616 + ] + }, + { + "name": "Area Id1 (Insula) - right hemisphere", + "rgb": [ + 141, + 112, + 216 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 116, + "children": [], + "status": "publicP", + "position": [ + 40527825, + -17443508, + -4688027 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "c22055c1-514f-4096-906b-abf57286053b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id3 (Insula)", + "arealabel": "Area-Id3", + "status": "publicDOI", + "labelIndex": null, + "doi": "", + "synonyms": [], + "rgb": [ + 32, + 32, + 58 + ], + "children": [ + { + "name": "Area Id3 (Insula) - left hemisphere", + "rgb": [ + 32, + 32, + 58 + ], + "labelIndex": 57, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -40414195, + -7819915, + -8263771 + ] + }, + { + "name": "Area Id3 (Insula) - right hemisphere", + "rgb": [ + 32, + 32, + 58 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 57, + "children": [], + "status": "publicDOI", + "position": [ + 41459316, + -6224335, + -9042586 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3dcfcfc2-035c-4785-a820-a671f2104ac3" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id5 (Insula)", + "arealabel": "Area-Id5", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/5CK1-B1G", + "synonyms": [], + "rgb": [ + 112, + 6, + 50 + ], + "children": [ + { + "name": "Area Id5 (Insula) - left hemisphere", + "rgb": [ + 112, + 6, + 50 + ], + "labelIndex": 338, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -40174302, + -3354190, + 741899 + ] + }, + { + "name": "Area Id5 (Insula) - right hemisphere", + "rgb": [ + 112, + 6, + 50 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 338, + "children": [], + "status": "publicDOI", + "position": [ + 41094953, + -2659538, + 607357 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e03cd3c6-d0be-481c-b906-9b39c1d0b641" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id6 (Insula)", + "arealabel": "Area-Id6", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/54HZ-KFQ", + "synonyms": [], + "rgb": [ + 138, + 127, + 119 + ], + "children": [ + { + "name": "Area Id6 (Insula) - left hemisphere", + "rgb": [ + 138, + 127, + 119 + ], + "labelIndex": 340, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -36392282, + 9843698, + 3385341 + ] + }, + { + "name": "Area Id6 (Insula) - right hemisphere", + "rgb": [ + 138, + 127, + 119 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 340, + "children": [], + "status": "publicDOI", + "position": [ + 37750946, + 10762642, + 3041624 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "31bbe92d-e5e8-4cf4-be5d-e6b12c71a107" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id4 (Insula)", + "arealabel": "Area-Id4", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/K63G-89H", + "synonyms": [], + "rgb": [ + 38, + 174, + 113 + ], + "children": [ + { + "name": "Area Id4 (Insula) - left hemisphere", + "rgb": [ + 38, + 174, + 113 + ], + "labelIndex": 337, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -37055965, + -3505155, + 11422680 + ] + }, + { + "name": "Area Id4 (Insula) - right hemisphere", + "rgb": [ + 38, + 174, + 113 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 337, + "children": [], + "status": "publicDOI", + "position": [ + 37461444, + -3746634, + 10858017 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f480ed72-5ca5-4d1f-8905-cbe9bedcfaee" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "temporal lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "superior temporal sulcus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area STS2 (STS)", + "arealabel": "Area-STS2", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/KHY9-J3Y", + "synonyms": [], + "rgb": [ + 62, + 117, + 123 + ], + "children": [ + { + "name": "Area STS2 (STS) - left hemisphere", + "rgb": [ + 62, + 117, + 123 + ], + "labelIndex": 272, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -56352486, + -8557380, + -14844672 + ] + }, + { + "name": "Area STS2 (STS) - right hemisphere", + "rgb": [ + 62, + 117, + 123 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 272, + "children": [], + "status": "publicDOI", + "position": [ + 56942990, + -8020716, + -16067930 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "278fc30f-2e24-4046-856b-95dfaf561635" + } + }, + "relatedAreas": [] + }, + { + "name": "Area STS1 (STS)", + "arealabel": "Area-STS1", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F6DF-H8P", + "synonyms": [], + "rgb": [ + 205, + 228, + 4 + ], + "children": [ + { + "name": "Area STS1 (STS) - left hemisphere", + "rgb": [ + 205, + 228, + 4 + ], + "labelIndex": 271, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -54514755, + -16753913, + -5260713 + ] + }, + { + "name": "Area STS1 (STS) - right hemisphere", + "rgb": [ + 205, + 228, + 4 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 271, + "children": [], + "status": "publicDOI", + "position": [ + 54536567, + -17992636, + -5712544 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "68784b66-ff15-4b09-b28a-a2146c0f8907" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "superior temporal gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area TE 3 (STG)", + "arealabel": "Area-TE-3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/BN5J-JT8", + "synonyms": [], + "rgb": [ + 159, + 104, + 108 + ], + "children": [ + { + "name": "Area TE 3 (STG) - left hemisphere", + "rgb": [ + 159, + 104, + 108 + ], + "labelIndex": 31, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -64398501, + -12497885, + 1316801 + ] + }, + { + "name": "Area TE 3 (STG) - right hemisphere", + "rgb": [ + 159, + 104, + 108 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 31, + "children": [], + "status": "publicP", + "position": [ + 65811519, + -9018989, + -1027621 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7e1a3291-efdc-4ca6-a3d0-6c496c34639f" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "Heschl's gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area TE 1.2 (HESCHL)", + "arealabel": "Area-TE-1.2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/R382-617", + "synonyms": [], + "rgb": [ + 202, + 251, + 192 + ], + "children": [ + { + "name": "Area TE 1.2 (HESCHL) - left hemisphere", + "rgb": [ + 202, + 251, + 192 + ], + "labelIndex": 30, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -50810427, + -6551343, + 1635071 + ] + }, + { + "name": "Area TE 1.2 (HESCHL) - right hemisphere", + "rgb": [ + 202, + 251, + 192 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 30, + "children": [], + "status": "publicP", + "position": [ + 55870330, + -2672527, + 52747 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "677cd48c-70fa-4bbd-9f0a-ffdc7744bc0f" + } + }, + "relatedAreas": [] + }, + { + "name": "Area TE 1.1 (HESCHL)", + "arealabel": "Area-TE-1.1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/4HA3-BBE", + "synonyms": [], + "rgb": [ + 8, + 113, + 68 + ], + "children": [ + { + "name": "Area TE 1.1 (HESCHL) - left hemisphere", + "rgb": [ + 8, + 113, + 68 + ], + "labelIndex": 33, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -38219760, + -27125577, + 10774700 + ] + }, + { + "name": "Area TE 1.1 (HESCHL) - right hemisphere", + "rgb": [ + 8, + 113, + 68 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 33, + "children": [], + "status": "publicP", + "position": [ + 40719340, + -24106132, + 10308962 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e2969911-77eb-4b21-af70-216cab5285b1" + } + }, + "relatedAreas": [] + }, + { + "name": "Area TE 1.0 (HESCHL)", + "arealabel": "Area-TE-1.0", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/MV3G-RET", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area Te1", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f424643e-9baf-4c50-9417-db1ac33dcd3e" + } + } + } + ], + "rgb": [ + 252, + 84, + 222 + ], + "children": [ + { + "name": "Area TE 1.0 (HESCHL) - left hemisphere", + "rgb": [ + 252, + 84, + 222 + ], + "labelIndex": 27, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -46560150, + -17508772, + 7622807 + ] + }, + { + "name": "Area TE 1.0 (HESCHL) - right hemisphere", + "rgb": [ + 252, + 84, + 222 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 27, + "children": [], + "status": "publicP", + "position": [ + 50392116, + -12932573, + 5942946 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "13e21153-2ba8-4212-b172-8894f1012225" + } + } + } + ] + }, + { + "name": "fusiform gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area FG2 (FusG)", + "arealabel": "Area-FG2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F2JH-KVV", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area FG2", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8f436328-4251-4706-ae38-767e1ab21c6f" + } + } + } + ], + "rgb": [ + 67, + 94, + 149 + ], + "children": [ + { + "name": "Area FG2 (FusG) - left hemisphere", + "rgb": [ + 67, + 94, + 149 + ], + "labelIndex": 106, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -43549584, + -65531770, + -16708135 + ] + }, + { + "name": "Area FG2 (FusG) - right hemisphere", + "rgb": [ + 67, + 94, + 149 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 106, + "children": [], + "status": "publicP", + "position": [ + 44839825, + -63606518, + -17316773 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "6e7a0441-4baa-4355-921b-50d23d07d50f" + } + } + }, + { + "name": "Area FG3 (FusG)", + "arealabel": "Area-FG3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/Z0F6-0SY", + "synonyms": [], + "rgb": [ + 120, + 147, + 37 + ], + "children": [ + { + "name": "Area FG3 (FusG) - left hemisphere", + "rgb": [ + 120, + 147, + 37 + ], + "labelIndex": 239, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -29844935, + -45368421, + -14184493 + ] + }, + { + "name": "Area FG3 (FusG) - right hemisphere", + "rgb": [ + 120, + 147, + 37 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 239, + "children": [], + "status": "publicP", + "position": [ + 31148061, + -44485336, + -15533822 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "023f8ef7-c266-4c45-8bf2-4a17dc52985b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area FG1 (FusG)", + "arealabel": "Area-FG1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/5ZVQ-R8R", + "synonyms": [], + "rgb": [ + 131, + 183, + 58 + ], + "children": [ + { + "name": "Area FG1 (FusG) - left hemisphere", + "rgb": [ + 131, + 183, + 58 + ], + "labelIndex": 107, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -29006116, + -66264526, + -12290010 + ] + }, + { + "name": "Area FG1 (FusG) - right hemisphere", + "rgb": [ + 131, + 183, + 58 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 107, + "children": [], + "status": "publicP", + "position": [ + 32840456, + -64340456, + -12612536 + ] + } + ], + "relatedAreas": [ + { + "name": "Area FG1", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "6318e160-4ad2-4eec-8a2e-2df6fe07d8f4" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "39fb34a8-fd6d-4fba-898c-2f6167e40459" + } + } + }, + { + "name": "Area FG4 (FusG)", + "arealabel": "Area-FG4", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/13RG-FYV", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area FG2", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8f436328-4251-4706-ae38-767e1ab21c6f" + } + } + } + ], + "rgb": [ + 170, + 220, + 175 + ], + "children": [ + { + "name": "Area FG4 (FusG) - left hemisphere", + "rgb": [ + 170, + 220, + 175 + ], + "labelIndex": 238, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -43204016, + -44325167, + -20016734 + ] + }, + { + "name": "Area FG4 (FusG) - right hemisphere", + "rgb": [ + 170, + 220, + 175 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 238, + "children": [], + "status": "publicP", + "position": [ + 43609694, + -43478025, + -22392295 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "fa602743-5f6e-49d1-9734-29dffaa95ff5" + } + } + } + ] + } + ] + }, + { + "name": "limbic lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "cingulate gyrus, frontal part", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area p24c (pACC)", + "arealabel": "Area-p24c", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/QA7B-JM9", + "synonyms": [], + "rgb": [ + 241, + 164, + 195 + ], + "children": [ + { + "name": "Area p24c (pACC) - left hemisphere", + "rgb": [ + 241, + 164, + 195 + ], + "labelIndex": 232, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8144989, + 41168443, + 14314854 + ] + }, + { + "name": "Area p24c (pACC) - right hemisphere", + "rgb": [ + 241, + 164, + 195 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 232, + "children": [], + "status": "publicP", + "position": [ + 9856593, + 40780558, + 12002406 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e6507a3d-f2f8-4c17-84ff-0e7297e836a0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 25 (sACC)", + "arealabel": "Area-25", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/51AM-WN4", + "synonyms": [], + "rgb": [ + 170, + 68, + 220 + ], + "children": [ + { + "name": "Area 25 (sACC) - left hemisphere", + "rgb": [ + 170, + 68, + 220 + ], + "labelIndex": 184, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -3522692, + 13560250, + -11860720 + ] + }, + { + "name": "Area 25 (sACC) - right hemisphere", + "rgb": [ + 170, + 68, + 220 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 184, + "children": [], + "status": "publicP", + "position": [ + 4564663, + 12954463, + -12174863 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9010ef76-accd-4308-9951-f37b6a10f42b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area p24ab (pACC)", + "arealabel": "Area-p24ab", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/DHXC-2KN", + "synonyms": [], + "rgb": [ + 153, + 195, + 229 + ], + "children": [ + { + "name": "Area p24ab (pACC) - left hemisphere", + "rgb": [ + 153, + 195, + 229 + ], + "labelIndex": 231, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -2244059, + 38783168, + 6389109 + ] + }, + { + "name": "Area p24ab (pACC) - right hemisphere", + "rgb": [ + 153, + 195, + 229 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 231, + "children": [], + "status": "publicP", + "position": [ + 3429274, + 38385609, + 7809963 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "5dbb1035-487c-4f43-b551-ccadcf058340" + } + }, + "relatedAreas": [] + }, + { + "name": "Area s32 (sACC)", + "arealabel": "Area-s32", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/XTRR-172", + "synonyms": [], + "rgb": [ + 193, + 94, + 250 + ], + "children": [ + { + "name": "Area s32 (sACC) - left hemisphere", + "rgb": [ + 193, + 94, + 250 + ], + "labelIndex": 46, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -6738110, + 35256183, + -11765377 + ] + }, + { + "name": "Area s32 (sACC) - right hemisphere", + "rgb": [ + 193, + 94, + 250 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 46, + "children": [], + "status": "publicP", + "position": [ + 4307795, + 34460360, + -12141905 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "61b44255-ae3a-4a23-b1bc-7d303a48dbd3" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 33 (ACC)", + "arealabel": "Area-33", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/X9QP-C6F", + "synonyms": [], + "rgb": [ + 51, + 57, + 245 + ], + "children": [ + { + "name": "Area 33 (ACC) - left hemisphere", + "rgb": [ + 51, + 57, + 245 + ], + "labelIndex": 39, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -4861218, + 14163048, + 15911877 + ] + }, + { + "name": "Area 33 (ACC) - right hemisphere", + "rgb": [ + 51, + 57, + 245 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 39, + "children": [], + "status": "publicP", + "position": [ + 5087045, + 15562321, + 16125051 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b83a3330-b80e-42a0-b8d2-82f38784aa1d" + } + }, + "relatedAreas": [] + }, + { + "name": "Area p32 (pACC)", + "arealabel": "Area-p32", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3JX0-7E5", + "synonyms": [], + "rgb": [ + 87, + 135, + 14 + ], + "children": [ + { + "name": "Area p32 (pACC) - left hemisphere", + "rgb": [ + 87, + 135, + 14 + ], + "labelIndex": 47, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -6122937, + 49256108, + 11929896 + ] + }, + { + "name": "Area p32 (pACC) - right hemisphere", + "rgb": [ + 87, + 135, + 14 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 47, + "children": [], + "status": "publicP", + "position": [ + 7759613, + 48520792, + 12436058 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b09aaa77-f41b-4008-b8b9-f984b0417cf3" + } + }, + "relatedAreas": [] + }, + { + "name": "Area s24 (sACC)", + "arealabel": "Area-s24", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/HXWM-NRX", + "synonyms": [], + "rgb": [ + 133, + 34, + 201 + ], + "children": [ + { + "name": "Area s24 (sACC) - left hemisphere", + "rgb": [ + 133, + 34, + 201 + ], + "labelIndex": 183, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -3247887, + 24596479, + -9615493 + ] + }, + { + "name": "Area s24 (sACC) - right hemisphere", + "rgb": [ + 133, + 34, + 201 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 183, + "children": [], + "status": "publicP", + "position": [ + 3259899, + 23813535, + -9257019 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d4ea6cc5-1e1d-4212-966f-81fed01eb648" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "hippocampal formation", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "HATA (Hippocampus)", + "arealabel": "HATA", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/M1XP-VSQ", + "synonyms": [], + "rgb": [ + 137, + 12, + 73 + ], + "children": [ + { + "name": "HATA (Hippocampus) - left hemisphere", + "rgb": [ + 137, + 12, + 73 + ], + "labelIndex": 68, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -13947917, + -9576389, + -18975694 + ] + }, + { + "name": "HATA (Hippocampus) - right hemisphere", + "rgb": [ + 137, + 12, + 73 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 68, + "children": [], + "status": "publicP", + "position": [ + 15080586, + -8358974, + -17871795 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9ec4a423-70fa-43cd-90b3-fbc26a3cbc6c" + } + }, + "relatedAreas": [] + }, + { + "name": "Entorhinal Cortex", + "arealabel": "Entorhinal-Cortex", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/KNXY-B1Z", + "synonyms": [], + "rgb": [ + 35, + 159, + 214 + ], + "children": [ + { + "name": "Entorhinal Cortex - left hemisphere", + "rgb": [ + 35, + 159, + 214 + ], + "labelIndex": 60, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -20926052, + -6082765, + -33357509 + ] + }, + { + "name": "Entorhinal Cortex - right hemisphere", + "rgb": [ + 35, + 159, + 214 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 60, + "children": [], + "status": "publicP", + "position": [ + 22877203, + -3501469, + -32577556 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "030827d4-e0d1-4406-b71f-3f58dc2f9cca" + } + }, + "relatedAreas": [] + }, + { + "name": "CA (Hippocampus)", + "arealabel": "CA", + "status": "publicP", + "labelIndex": null, + "relatedAreas": [ + { + "name": "CA1 (Hippocampus)", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "bfc0beb7-310c-4c57-b810-2adc464bd02c" + } + } + } + ], + "doi": "https://doi.org/10.25493/B85T-D88", + "synonyms": [], + "rgb": [ + 250, + 191, + 217 + ], + "children": [ + { + "name": "CA (Hippocampus) - left hemisphere", + "rgb": [ + 250, + 191, + 217 + ], + "labelIndex": 191, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -27476326, + -26068931, + -11082817 + ] + }, + { + "name": "CA (Hippocampus) - right hemisphere", + "rgb": [ + 250, + 191, + 217 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 191, + "children": [], + "status": "publicP", + "position": [ + 29426785, + -24801145, + -11142814 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a0d14d3e-bc30-41cf-8b28-540067897f80" + } + } + }, + { + "name": "DG (Hippocampus)", + "arealabel": "DG", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/M8JP-XQT", + "synonyms": [], + "rgb": [ + 149, + 55, + 120 + ], + "children": [ + { + "name": "DG (Hippocampus) - left hemisphere", + "rgb": [ + 149, + 55, + 120 + ], + "labelIndex": 61, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -26946498, + -26708171, + -9589494 + ] + }, + { + "name": "DG (Hippocampus) - right hemisphere", + "rgb": [ + 149, + 55, + 120 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 61, + "children": [], + "status": "publicP", + "position": [ + 28316456, + -24674684, + -10596203 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "0bea7e03-bfb2-4907-9d45-db9071ce627d" + } + }, + "relatedAreas": [] + }, + { + "name": "Subiculum (Hippocampus)", + "arealabel": "Subiculum", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/QKJH-F45", + "synonyms": [], + "rgb": [ + 111, + 125, + 219 + ], + "children": [ + { + "name": "Subiculum (Hippocampus) - left hemisphere", + "rgb": [ + 111, + 125, + 219 + ], + "labelIndex": 192, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -20352171, + -24057796, + -16326997 + ] + }, + { + "name": "Subiculum (Hippocampus) - right hemisphere", + "rgb": [ + 111, + 125, + 219 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 192, + "children": [], + "status": "publicP", + "position": [ + 22543982, + -23195614, + -15923499 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7e2dab4c-a140-440d-a322-c1679adef2d4" + } + }, + "relatedAreas": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "metencephalon", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "cerebellum", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "cerebellar nuclei", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "globose nucleus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Interposed Nucleus (Cerebellum)", + "arealabel": "Interposed-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/8PTB-JDH", + "synonyms": [], + "rgb": [ + 170, + 29, + 10 + ], + "children": [ + { + "name": "Interposed Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 170, + 29, + 10 + ], + "labelIndex": 251, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8457921, + -55262376, + -30235149 + ] + }, + { + "name": "Interposed Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 170, + 29, + 10 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 251, + "children": [], + "status": "publicP", + "position": [ + 7917989, + -54201058, + -31489418 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "85e7bb13-4b73-4f6f-8222-3adb7b800788" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "dentate nucleus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Dorsal Dentate Nucleus (Cerebellum)", + "arealabel": "Dorsal-Dentate-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/M5QG-SHH", + "synonyms": [], + "rgb": [ + 89, + 201, + 99 + ], + "children": [ + { + "name": "Dorsal Dentate Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 89, + 201, + 99 + ], + "labelIndex": 240, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -16612782, + -56036341, + -36064536 + ] + }, + { + "name": "Dorsal Dentate Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 89, + 201, + 99 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 240, + "children": [], + "status": "publicP", + "position": [ + 15388967, + -58303395, + -36586280 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "58095aef-da69-43d4-887c-009c095cecce" + } + }, + "relatedAreas": [] + }, + { + "name": "Ventral Dentate Nucleus (Cerebellum)", + "arealabel": "Ventral-Dentate-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/FQE5-5QR", + "synonyms": [], + "rgb": [ + 39, + 129, + 9 + ], + "children": [ + { + "name": "Ventral Dentate Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 39, + 129, + 9 + ], + "labelIndex": 241, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -13112867, + -56176072, + -29957111 + ] + }, + { + "name": "Ventral Dentate Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 39, + 129, + 9 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 241, + "children": [], + "status": "publicP", + "position": [ + 12107011, + -55974170, + -31385609 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "57282342-5a75-4e07-bcdc-2d368c517b71" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "fastigial nucleus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Fastigial Nucleus (Cerebellum)", + "arealabel": "Fastigial-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3YJ9-S6G", + "synonyms": [], + "rgb": [ + 200, + 100, + 10 + ], + "children": [ + { + "name": "Fastigial Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 200, + 100, + 10 + ], + "labelIndex": 219, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -3828877, + -53149733, + -29013369 + ] + }, + { + "name": "Fastigial Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 200, + 100, + 10 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 219, + "children": [], + "status": "publicP", + "position": [ + 3011287, + -53069977, + -29040632 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e8abfe3d-8b64-45c2-8853-314d82873273" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "emboliform nucleus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Interposed Nucleus (Cerebellum)", + "arealabel": "Interposed-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/8PTB-JDH", + "synonyms": [], + "rgb": [ + 170, + 29, + 10 + ], + "children": [ + { + "name": "Interposed Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 170, + 29, + 10 + ], + "labelIndex": 251, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8457921, + -55262376, + -30235149 + ] + }, + { + "name": "Interposed Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 170, + 29, + 10 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 251, + "children": [], + "status": "publicP", + "position": [ + 7917989, + -54201058, + -31489418 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "85e7bb13-4b73-4f6f-8222-3adb7b800788" + } + }, + "relatedAreas": [] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ], + "properties": { + "name": "MNI Colin 27", + "description": "A stereotaxic average of 27 T1-weighted MRI scans of the same individual. (Holmes et al., 1998), mapped to fit the MNI305 space. Although not capturing brain variability, it is well established in neuroscience due to its high definition. HBP provides the JuBrain probabilistic cytoarchitectonic atlas (Amunts et al.) in this space." + } +} + +export const JUBRAIN_COLIN = { + "name": "JuBrain Cytoarchitectonic Atlas", + "ngId": "jubrain colin v18 left", + "auxillaryMeshIndices": [ + 65535 + ], + "hasAdditionalViewMode": [ + "connectivity" + ], + "originDatasets": [ + { + "kgSchema": "minds/core/dataset/v1.0.0", + "kgId": "4ac9f0bc-560d-47e0-8916-7b24da9bb0ce" + } + ], + "properties": { + "version": "1.0", + "description": "This dataset contains the whole-brain parcellation of the JuBrain Cytoarchitectonic Atlas (Amunts and Zilles, 2015) in the MNI Colin 27 as well as the MNI ICBM 152 2009c nonlinear asymmetric reference space. The parcellation is derived from the individual probability maps (PMs) of the cytoarchitectonic regions released in the JuBrain Atlas, that are further combined into a Maximum Probability Map (MPM). The MPM is calculated by considering for each voxel the probability of all cytoarchitectonic areas released in the atlas, and determining the most probable assignment (Eickhoff 2005). Note that methodological improvements and integration of new brain structures may lead to small deviations in earlier released datasets.", + "publications": [ + { + "doi": "https://doi.org/10.1038/nrn2776", + "citation": "Zilles K, Amunts K (2010) Centenary of Brodmann’s map – conception and fate. Nature Reviews Neuroscience 11(2): 139-145 " + }, + { + "doi": "https://doi.org/10.1016/j.neuroimage.2007.02.037", + "citation": "Amunts K, Schleicher A, Zilles K (2007) Cytoarchitecture of the cerebral cortex – more than localization. Neuroimage 37: 1061-1065" + }, + { + "doi": "http://dx.doi.org/10.1016/B978-012693019-1/50023-X", + "citation": "Zilles K, Schleicher A, Palomero-Gallagher N, Amunts K (2002) Quantitative analysis of cyto- and receptor architecture of the human brain. In: /Brain Mapping: The Methods/, J. C. Mazziotta and A. Toga (eds.), USA: Elsevier, 2002, p. 573-602." + } + ] + }, + "regions": [ + { + "name": "telencephalon", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "cerebral nuclei", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "basal forebrain", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "magnocellular group within septum", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Ch 123 (Basal Forebrain)", + "arealabel": "Ch-123", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/7SEP-P2V", + "synonyms": [], + "rgb": [ + 124, + 233, + 167 + ], + "children": [ + { + "name": "Ch 123 (Basal Forebrain) - left hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "labelIndex": 286, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -2339339, + 4405405, + -8804805 + ] + }, + { + "name": "Ch 123 (Basal Forebrain) - right hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 286, + "children": [], + "status": "publicP", + "position": [ + 3240000, + 5153846, + -8347692 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "bb111a95-e04c-4987-8254-4af4ed8b0022" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "sublenticular part of basal forebrain", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Ch 4 (Basal Forebrain)", + "arealabel": "Ch-4", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/VZJ5-8WJ", + "synonyms": [], + "rgb": [ + 116, + 243, + 12 + ], + "children": [ + { + "name": "Ch 4 (Basal Forebrain) - left hemisphere", + "rgb": [ + 116, + 243, + 12 + ], + "labelIndex": 264, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -16053628, + -454259, + -12470032 + ] + }, + { + "name": "Ch 4 (Basal Forebrain) - right hemisphere", + "rgb": [ + 116, + 243, + 12 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 264, + "children": [], + "status": "publicP", + "position": [ + 17655072, + 263768, + -11539130 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a5c9d95f-8e7c-4454-91b6-a790387370fc" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "magnocellular group within horizontal limb of diagnoal band", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Ch 123 (Basal Forebrain)", + "arealabel": "Ch-123", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/7SEP-P2V", + "synonyms": [], + "rgb": [ + 124, + 233, + 167 + ], + "children": [ + { + "name": "Ch 123 (Basal Forebrain) - left hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "labelIndex": 286, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -2339339, + 4405405, + -8804805 + ] + }, + { + "name": "Ch 123 (Basal Forebrain) - right hemisphere", + "rgb": [ + 124, + 233, + 167 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 286, + "children": [], + "status": "publicP", + "position": [ + 3240000, + 5153846, + -8347692 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "bb111a95-e04c-4987-8254-4af4ed8b0022" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "amygdala", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "laterobasal group", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala)", + "arealabel": "LB", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3X0-NV3", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 15, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "LB (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 15, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf" + } + }, + "relatedAreas": [] + }, + { + "name": "LB (Amygdala)", + "arealabel": "LB", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3X0-NV3", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 11, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "LB (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 11, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf" + } + }, + "relatedAreas": [] + }, + { + "name": "LB (Amygdala)", + "arealabel": "LB", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3X0-NV3", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 19, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "LB (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 19, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf" + } + }, + "relatedAreas": [] + }, + { + "name": "LB (Amygdala)", + "arealabel": "LB", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3X0-NV3", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "LB (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 13, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -25304803, + -1696429, + -23766626 + ] + }, + { + "name": "LB (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 13, + "children": [], + "status": "publicP", + "position": [ + 28015494, + -81343, + -24045836 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "708df0fa-e9a4-4c23-bd85-8957f6d30faf" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "superficial group", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "SF (Amygdala)", + "arealabel": "SF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WD31-SEA", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "SF (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 236, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -16044471, + 530048, + -20831731 + ] + }, + { + "name": "SF (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 236, + "children": [], + "status": "publicP", + "position": [ + 19382770, + 1539804, + -19413304 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "48929163-bf7b-4471-9f14-991c5225eced" + } + }, + "relatedAreas": [] + }, + { + "name": "SF (Amygdala)", + "arealabel": "SF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WD31-SEA", + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "SF (Amygdala) - left hemisphere", + "rgb": null, + "labelIndex": 17, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "SF (Amygdala) - right hemisphere", + "rgb": null, + "ngId": "jubrain colin v18 right", + "labelIndex": 17, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "48929163-bf7b-4471-9f14-991c5225eced" + } + }, + "relatedAreas": [] + }, + { + "name": "SF (Amygdala)", + "arealabel": "SF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WD31-SEA", + "synonyms": [], + "rgb": [ + 18, + 168, + 22 + ], + "children": [ + { + "name": "SF (Amygdala) - left hemisphere", + "rgb": [ + 18, + 168, + 22 + ], + "labelIndex": 186, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "SF (Amygdala) - right hemisphere", + "rgb": [ + 18, + 168, + 22 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 186, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "48929163-bf7b-4471-9f14-991c5225eced" + } + }, + "relatedAreas": [] + }, + { + "name": "CM (Amygdala)", + "arealabel": "CM", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/36FR-C95", + "synonyms": [], + "rgb": [ + 102, + 180, + 202 + ], + "children": [ + { + "name": "CM (Amygdala) - left hemisphere", + "rgb": [ + 102, + 180, + 202 + ], + "labelIndex": 22, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "CM (Amygdala) - right hemisphere", + "rgb": [ + 102, + 180, + 202 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 22, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "fiber masses", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "VTM (Amygdala)", + "arealabel": "VTM", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/99HN-XRE", + "synonyms": [], + "rgb": [ + 89, + 178, + 185 + ], + "children": [ + { + "name": "VTM (Amygdala) - left hemisphere", + "rgb": [ + 89, + 178, + 185 + ], + "labelIndex": 228, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -23377907, + -9837209, + -14848837 + ] + }, + { + "name": "VTM (Amygdala) - right hemisphere", + "rgb": [ + 89, + 178, + 185 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 228, + "children": [], + "status": "publicP", + "position": [ + 25513514, + -8881081, + -15551351 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a964e6e6-8014-41a2-b975-754d75cbb6f2" + } + }, + "relatedAreas": [] + }, + { + "name": "IF (Amygdala)", + "arealabel": "IF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/GWPR-G6K", + "synonyms": [], + "rgb": [ + 120, + 190, + 129 + ], + "children": [ + { + "name": "IF (Amygdala) - left hemisphere", + "rgb": [ + 120, + 190, + 129 + ], + "labelIndex": 237, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -27588235, + -1431373, + -17460784 + ] + }, + { + "name": "IF (Amygdala) - right hemisphere", + "rgb": [ + 120, + 190, + 129 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 237, + "children": [], + "status": "publicP", + "position": [ + 29372549, + -813725, + -16578431 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "5a1391c8-6056-40e4-a19b-3774df42bd07" + } + }, + "relatedAreas": [] + }, + { + "name": "MF (Amygdala)", + "arealabel": "MF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/9375-55V", + "synonyms": [], + "rgb": [ + 190, + 200, + 9 + ], + "children": [ + { + "name": "MF (Amygdala) - left hemisphere", + "rgb": [ + 190, + 200, + 9 + ], + "labelIndex": 235, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -18714286, + -6523810, + -15428571 + ] + }, + { + "name": "MF (Amygdala) - right hemisphere", + "rgb": [ + 190, + 200, + 9 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 235, + "children": [], + "status": "publicP", + "position": [ + 20976744, + -4930233, + -14441860 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3741c788-9412-4b8e-9ab4-9ca2d3a715ca" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "centromedial group", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "CM (Amygdala)", + "arealabel": "CM", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/36FR-C95", + "synonyms": [], + "rgb": [ + 89, + 4, + 190 + ], + "children": [ + { + "name": "CM (Amygdala) - left hemisphere", + "rgb": [ + 89, + 4, + 190 + ], + "labelIndex": 16, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP" + }, + { + "name": "CM (Amygdala) - right hemisphere", + "rgb": [ + 89, + 4, + 190 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 16, + "children": [], + "status": "publicP" + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed" + } + }, + "relatedAreas": [] + }, + { + "name": "CM (Amygdala)", + "arealabel": "CM", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/36FR-C95", + "synonyms": [], + "rgb": [ + 9, + 120, + 220 + ], + "children": [ + { + "name": "CM (Amygdala) - left hemisphere", + "rgb": [ + 9, + 120, + 220 + ], + "labelIndex": 21, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -21108108, + -3376448, + -13214286 + ] + }, + { + "name": "CM (Amygdala) - right hemisphere", + "rgb": [ + 9, + 120, + 220 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 21, + "children": [], + "status": "publicP", + "position": [ + 23157767, + -2679612, + -12555825 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7aba8aef-6430-4fa7-ab54-8ecac558faed" + } + }, + "relatedAreas": [] + } + ] + } + ] + } + ] + }, + { + "name": "cerebral cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "parietal lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "superior parietal lobule", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 5L (SPL)", + "arealabel": "Area-5L", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C1FQ-2F", + "synonyms": [], + "rgb": [ + 184, + 185, + 58 + ], + "children": [ + { + "name": "Area 5L (SPL) - left hemisphere", + "rgb": [ + 184, + 185, + 58 + ], + "labelIndex": 130, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -18807832, + -47524930, + 66950353 + ] + }, + { + "name": "Area 5L (SPL) - right hemisphere", + "rgb": [ + 184, + 185, + 58 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 130, + "children": [], + "status": "publicP", + "position": [ + 12970516, + -51174624, + 70371695 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "64555f7f-1b33-4ffe-9853-be41e7a21096" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 7M (SPL)", + "arealabel": "Area-7M", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F25F-EKW", + "synonyms": [], + "rgb": [ + 205, + 61, + 236 + ], + "children": [ + { + "name": "Area 7M (SPL) - left hemisphere", + "rgb": [ + 205, + 61, + 236 + ], + "labelIndex": 135, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -777896, + -78103082, + 35256111 + ] + }, + { + "name": "Area 7M (SPL) - right hemisphere", + "rgb": [ + 205, + 61, + 236 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 135, + "children": [], + "status": "publicP", + "position": [ + 4281250, + -75882812, + 38312500 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "0aacea5c-bc9e-483f-8376-25f176ada158" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 7PC (SPL)", + "arealabel": "Area-7PC", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/Z45N-1T", + "synonyms": [], + "rgb": [ + 252, + 89, + 28 + ], + "children": [ + { + "name": "Area 7PC (SPL) - left hemisphere", + "rgb": [ + 252, + 89, + 28 + ], + "labelIndex": 132, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -32056266, + -48916454, + 60868713 + ] + }, + { + "name": "Area 7PC (SPL) - right hemisphere", + "rgb": [ + 252, + 89, + 28 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 132, + "children": [], + "status": "publicP", + "position": [ + 30055171, + -49079568, + 61493485 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "763140d3-7ba0-4f28-b0ac-c6cbda2d14e1" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 5M (SPL)", + "arealabel": "Area-5M", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/Y12F-YMU", + "synonyms": [], + "rgb": [ + 225, + 245, + 76 + ], + "children": [ + { + "name": "Area 5M (SPL) - left hemisphere", + "rgb": [ + 225, + 245, + 76 + ], + "labelIndex": 131, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -7527881, + -41962560, + 59221721 + ] + }, + { + "name": "Area 5M (SPL) - right hemisphere", + "rgb": [ + 225, + 245, + 76 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 131, + "children": [], + "status": "publicP", + "position": [ + 4642562, + -44304959, + 60273140 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "abe105cf-2c29-46af-af75-6b46fdb75137" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 7P (SPL)", + "arealabel": "Area-7P", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C3HS-8R7", + "synonyms": [], + "rgb": [ + 52, + 20, + 106 + ], + "children": [ + { + "name": "Area 7P (SPL) - left hemisphere", + "rgb": [ + 52, + 20, + 106 + ], + "labelIndex": 208, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -7679310, + -76043295, + 52631801 + ] + }, + { + "name": "Area 7P (SPL) - right hemisphere", + "rgb": [ + 52, + 20, + 106 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 208, + "children": [], + "status": "publicP", + "position": [ + 14232037, + -74892094, + 56304919 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "af9c4f39-63a4-409f-b306-e5965d639f37" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 5Ci (SPL)", + "arealabel": "Area-5Ci", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/SQVP-GK1", + "synonyms": [], + "rgb": [ + 79, + 242, + 146 + ], + "children": [ + { + "name": "Area 5Ci (SPL) - left hemisphere", + "rgb": [ + 79, + 242, + 146 + ], + "labelIndex": 136, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -14033790, + -35828311, + 43857534 + ] + }, + { + "name": "Area 5Ci (SPL) - right hemisphere", + "rgb": [ + 79, + 242, + 146 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 136, + "children": [], + "status": "publicP", + "position": [ + 10563961, + -36194957, + 46892989 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "07d08f74-af3d-4cbe-bc3c-f32b7f5c989f" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 7A (SPL)", + "arealabel": "Area-7A", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/7HX2-AJH", + "synonyms": [], + "rgb": [ + 38, + 204, + 19 + ], + "children": [ + { + "name": "Area 7A (SPL) - left hemisphere", + "rgb": [ + 38, + 204, + 19 + ], + "labelIndex": 134, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -20856230, + -62269710, + 61643512 + ] + }, + { + "name": "Area 7A (SPL) - right hemisphere", + "rgb": [ + 38, + 204, + 19 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 134, + "children": [], + "status": "publicP", + "position": [ + 20910951, + -62880523, + 62944473 + ] + } + ], + "relatedAreas": [ + { + "name": "Area 7A", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "811f4adb-4a7c-45c1-8034-4afa9edf586a" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e26e999f-77ad-4934-9569-8290ed05ebda" + } + } + } + ] + }, + { + "name": "parietal operculum", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area OP3 (POperc)", + "arealabel": "Area-OP3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/1Z8F-PX4", + "synonyms": [], + "rgb": [ + 58, + 122, + 80 + ], + "children": [ + { + "name": "Area OP3 (POperc) - left hemisphere", + "rgb": [ + 58, + 122, + 80 + ], + "labelIndex": 75, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -40814044, + -13737321, + 17669701 + ] + }, + { + "name": "Area OP3 (POperc) - right hemisphere", + "rgb": [ + 58, + 122, + 80 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 75, + "children": [], + "status": "publicP", + "position": [ + 41195980, + -11633166, + 18002513 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f6f10b01-6c10-42cf-8129-f5aaf307a36b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area OP4 (POperc)", + "arealabel": "Area-OP4", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/BVT0-H3U", + "synonyms": [], + "rgb": [ + 89, + 80, + 132 + ], + "children": [ + { + "name": "Area OP4 (POperc) - left hemisphere", + "rgb": [ + 89, + 80, + 132 + ], + "labelIndex": 72, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -60514139, + -10849614, + 15368038 + ] + }, + { + "name": "Area OP4 (POperc) - right hemisphere", + "rgb": [ + 89, + 80, + 132 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 72, + "children": [], + "status": "publicP", + "position": [ + 63398148, + -9211111, + 12780864 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b1e7f0d2-6d37-4047-9c2e-a08c3f1e2a16" + } + }, + "relatedAreas": [] + }, + { + "name": "Area OP2 (POperc)", + "arealabel": "Area-OP2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/5KBV-36J", + "synonyms": [], + "rgb": [ + 36, + 47, + 221 + ], + "children": [ + { + "name": "Area OP2 (POperc) - left hemisphere", + "rgb": [ + 36, + 47, + 221 + ], + "labelIndex": 74, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -36355372, + -23452479, + 18938017 + ] + }, + { + "name": "Area OP2 (POperc) - right hemisphere", + "rgb": [ + 36, + 47, + 221 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 74, + "children": [], + "status": "publicP", + "position": [ + 35629457, + -21159690, + 18021705 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "ab26cefd-f7d6-4442-8020-a6e418e673ff" + } + }, + "relatedAreas": [] + }, + { + "name": "Area OP1 (POperc)", + "arealabel": "Area-OP1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/SH37-979", + "synonyms": [], + "rgb": [ + 250, + 182, + 34 + ], + "children": [ + { + "name": "Area OP1 (POperc) - left hemisphere", + "rgb": [ + 250, + 182, + 34 + ], + "labelIndex": 73, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -51566527, + -22523828, + 17190240 + ] + }, + { + "name": "Area OP1 (POperc) - right hemisphere", + "rgb": [ + 250, + 182, + 34 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 73, + "children": [], + "status": "publicP", + "position": [ + 52888430, + -20697107, + 17000826 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "402ec28d-0809-4226-91a4-900d9303291b" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "postcentral gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 3b (PostCG)", + "arealabel": "Area-3b", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/2JK3-QXR", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area 3b", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "74304fe9-452e-4ca3-97a3-8cf3459bb1a0" + } + } + } + ], + "rgb": [ + 239, + 246, + 155 + ], + "children": [ + { + "name": "Area 3b (PostCG) - left hemisphere", + "rgb": [ + 239, + 246, + 155 + ], + "labelIndex": 127, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -44439219, + -21735041, + 46012387 + ] + }, + { + "name": "Area 3b (PostCG) - right hemisphere", + "rgb": [ + 239, + 246, + 155 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 127, + "children": [], + "status": "publicP", + "position": [ + 38765839, + -25096118, + 48227174 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b84f67bb-5d9f-4daf-a8d6-15f63f901bd4" + } + } + }, + { + "name": "Area 1 (PostCG)", + "arealabel": "Area-1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/THB5-B64", + "synonyms": [], + "rgb": [ + 232, + 185, + 250 + ], + "children": [ + { + "name": "Area 1 (PostCG) - left hemisphere", + "rgb": [ + 232, + 185, + 250 + ], + "labelIndex": 125, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -47104485, + -28297920, + 57798046 + ] + }, + { + "name": "Area 1 (PostCG) - right hemisphere", + "rgb": [ + 232, + 185, + 250 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 125, + "children": [], + "status": "publicP", + "position": [ + 48452543, + -27132790, + 56150187 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "c9753e82-80ca-4074-a704-9dd2c4c0d58b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 2 (PostCS)", + "arealabel": "Area-2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/QA8F-DD2", + "synonyms": [], + "rgb": [ + 23, + 13, + 35 + ], + "children": [ + { + "name": "Area 2 (PostCS) - left hemisphere", + "rgb": [ + 23, + 13, + 35 + ], + "labelIndex": 252, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -42268059, + -32424512, + 51210202 + ] + }, + { + "name": "Area 2 (PostCS) - right hemisphere", + "rgb": [ + 23, + 13, + 35 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 252, + "children": [], + "status": "publicP", + "position": [ + 38223619, + -34651627, + 52535010 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f9147ae9-5cf0-41b2-89a3-e6e6df07bef1" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 3a (PostCG)", + "arealabel": "Area-3a", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/C5QQ-EFB", + "synonyms": [], + "rgb": [ + 187, + 133, + 50 + ], + "children": [ + { + "name": "Area 3a (PostCG) - left hemisphere", + "rgb": [ + 187, + 133, + 50 + ], + "labelIndex": 126, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -31927553, + -25650901, + 44513889 + ] + }, + { + "name": "Area 3a (PostCG) - right hemisphere", + "rgb": [ + 187, + 133, + 50 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 126, + "children": [], + "status": "publicP", + "position": [ + 38813714, + -19184000, + 36284571 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "2657ecc1-da69-4a37-9b37-66ae95f9623c" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "inferior parietal lobule", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area PF (IPL)", + "arealabel": "Area-PF", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F1TJ-54W", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PF", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f4e177a6-1b2c-48d5-a62c-91949ba636e4" + } + } + } + ], + "rgb": [ + 226, + 211, + 61 + ], + "children": [ + { + "name": "Area PF (IPL) - left hemisphere", + "rgb": [ + 226, + 211, + 61 + ], + "labelIndex": 206, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -59814938, + -37432365, + 36569295 + ] + }, + { + "name": "Area PF (IPL) - right hemisphere", + "rgb": [ + 226, + 211, + 61 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 206, + "children": [], + "status": "publicP", + "position": [ + 64016699, + -33052700, + 30153112 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "18e5e1b0-6c25-4f55-a967-0834d2bd3ee4" + } + } + }, + { + "name": "Area PFcm (IPL)", + "arealabel": "Area-PFcm", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/8DP8-8HE", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PFcm", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f07d441f-452f-471b-ac7c-0d3c2ae16fb2" + } + } + } + ], + "rgb": [ + 98, + 128, + 120 + ], + "children": [ + { + "name": "Area PFcm (IPL) - left hemisphere", + "rgb": [ + 98, + 128, + 120 + ], + "labelIndex": 113, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -51751410, + -36954069, + 22546334 + ] + }, + { + "name": "Area PFcm (IPL) - right hemisphere", + "rgb": [ + 98, + 128, + 120 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 113, + "children": [], + "status": "publicP", + "position": [ + 53524370, + -31637287, + 23177904 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "10502c3a-f20e-44fa-b985-786d6888d4bb" + } + } + }, + { + "name": "Area PGa (IPL)", + "arealabel": "Area-PGa", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/V5HY-XTS", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PGa", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d5b168a3-a92e-4ab3-8b4d-61e58e5b7a1c" + } + } + } + ], + "rgb": [ + 42, + 236, + 131 + ], + "children": [ + { + "name": "Area PGa (IPL) - left hemisphere", + "rgb": [ + 42, + 236, + 131 + ], + "labelIndex": 110, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -48873487, + -60780569, + 37191889 + ] + }, + { + "name": "Area PGa (IPL) - right hemisphere", + "rgb": [ + 42, + 236, + 131 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 110, + "children": [], + "status": "publicP", + "position": [ + 55283797, + -55333653, + 30316395 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d7f6c5be-93c6-4a16-8939-4420329d4147" + } + } + }, + { + "name": "Area PFt (IPL)", + "arealabel": "Area-PFt", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/JGM9-ZET", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PFt", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9ff7fcc4-a88b-4bf8-be07-1386a3760a96" + } + } + } + ], + "rgb": [ + 120, + 135, + 232 + ], + "children": [ + { + "name": "Area PFt (IPL) - left hemisphere", + "rgb": [ + 120, + 135, + 232 + ], + "labelIndex": 109, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -55015237, + -27583919, + 38095874 + ] + }, + { + "name": "Area PFt (IPL) - right hemisphere", + "rgb": [ + 120, + 135, + 232 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 109, + "children": [], + "status": "publicP", + "position": [ + 54808632, + -24626296, + 37973570 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "847cef50-7340-470d-8580-327b4ce9db19" + } + } + }, + { + "name": "Area PFm (IPL)", + "arealabel": "Area-PFm", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/TB94-HRK", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area PFm", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3455ada4-48c3-4748-ae38-2fe3f376f0fc" + } + } + } + ], + "rgb": [ + 53, + 76, + 145 + ], + "children": [ + { + "name": "Area PFm (IPL) - left hemisphere", + "rgb": [ + 53, + 76, + 145 + ], + "labelIndex": 112, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -54527689, + -52389045, + 38877207 + ] + }, + { + "name": "Area PFm (IPL) - right hemisphere", + "rgb": [ + 53, + 76, + 145 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 112, + "children": [], + "status": "publicP", + "position": [ + 56990022, + -45541717, + 38606571 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "411edde9-685f-464b-970c-a929f9a4067c" + } + } + }, + { + "name": "Area PGp (IPL)", + "arealabel": "Area-PGp", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/FPFJ-ZCD", + "synonyms": [], + "rgb": [ + 92, + 116, + 83 + ], + "children": [ + { + "name": "Area PGp (IPL) - left hemisphere", + "rgb": [ + 92, + 116, + 83 + ], + "labelIndex": 108, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -44673441, + -73269937, + 29840224 + ] + }, + { + "name": "Area PGp (IPL) - right hemisphere", + "rgb": [ + 92, + 116, + 83 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 108, + "children": [], + "status": "publicP", + "position": [ + 47749459, + -70528695, + 30721440 + ] + } + ], + "relatedAreas": [ + { + "name": "Area PGp", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "1b00a0e4-9493-43ff-bfbd-b02119064813" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b3ef6947-76c9-4935-bbc6-8b2329c0967b" + } + } + }, + { + "name": "Area PFop (IPL)", + "arealabel": "Area-PFop", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/M2PM-92Q", + "synonyms": [], + "rgb": [ + 146, + 153, + 177 + ], + "children": [ + { + "name": "Area PFop (IPL) - left hemisphere", + "rgb": [ + 146, + 153, + 177 + ], + "labelIndex": 111, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -60026462, + -24694986, + 24259053 + ] + }, + { + "name": "Area PFop (IPL) - right hemisphere", + "rgb": [ + 146, + 153, + 177 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 111, + "children": [], + "status": "publicP", + "position": [ + 58286575, + -20617534, + 24917260 + ] + } + ], + "relatedAreas": [ + { + "name": "Area PFop", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b4397c40-82e1-4d62-b97a-44e8d04b428b" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e8262e56-88fe-4006-b078-def4d78416b8" + } + } + } + ] + }, + { + "name": "parieto-occipital sulcus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hPO1 (POS)", + "arealabel": "Area-hPO1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/W50A-FAP", + "synonyms": [], + "rgb": [ + 153, + 232, + 235 + ], + "children": [ + { + "name": "Area hPO1 (POS) - left hemisphere", + "rgb": [ + 153, + 232, + 235 + ], + "labelIndex": 297, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -15069260, + -80661951, + 37074565 + ] + }, + { + "name": "Area hPO1 (POS) - right hemisphere", + "rgb": [ + 153, + 232, + 235 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 297, + "children": [], + "status": "publicP", + "position": [ + 21853147, + -80927739, + 37048660 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a78998c2-99d4-4738-bbda-82a317f713f1" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "intraparietal sulcus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hIP1 (IPS)", + "arealabel": "Area-hIP1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/92FE-7S6", + "synonyms": [], + "rgb": [ + 66, + 149, + 82 + ], + "children": [ + { + "name": "Area hIP1 (IPS) - left hemisphere", + "rgb": [ + 66, + 149, + 82 + ], + "labelIndex": 128, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -36841999, + -49449871, + 40584028 + ] + }, + { + "name": "Area hIP1 (IPS) - right hemisphere", + "rgb": [ + 66, + 149, + 82 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 128, + "children": [], + "status": "publicP", + "position": [ + 40629988, + -48019372, + 39158853 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7722c71f-fe84-4deb-8f6b-98e2aecf2e31" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP7 (IPS)", + "arealabel": "Area-hIP7", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WRCY-8Z1", + "synonyms": [], + "rgb": [ + 71, + 196, + 218 + ], + "children": [ + { + "name": "Area hIP7 (IPS) - left hemisphere", + "rgb": [ + 71, + 196, + 218 + ], + "labelIndex": 296, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -22044741, + -79989011, + 29353218 + ] + }, + { + "name": "Area hIP7 (IPS) - right hemisphere", + "rgb": [ + 71, + 196, + 218 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 296, + "children": [], + "status": "publicP", + "position": [ + 29041586, + -79117828, + 27046207 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9c6c3c96-8129-4e0e-aa22-a0fb435aab45" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP3 (IPS)", + "arealabel": "Area-hIP3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/P8X0-V1G", + "synonyms": [], + "rgb": [ + 113, + 172, + 229 + ], + "children": [ + { + "name": "Area hIP3 (IPS) - left hemisphere", + "rgb": [ + 113, + 172, + 229 + ], + "labelIndex": 133, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -30430769, + -55031164, + 46842209 + ] + }, + { + "name": "Area hIP3 (IPS) - right hemisphere", + "rgb": [ + 113, + 172, + 229 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 133, + "children": [], + "status": "publicP", + "position": [ + 33538679, + -49884591, + 50461950 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "700ac6db-870d-44f1-8786-0c01207f992b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP2 (IPS)", + "arealabel": "Area-hIP2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/EJTM-NDY", + "synonyms": [], + "rgb": [ + 127, + 245, + 203 + ], + "children": [ + { + "name": "Area hIP2 (IPS) - left hemisphere", + "rgb": [ + 127, + 245, + 203 + ], + "labelIndex": 129, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -46531100, + -41482722, + 43278044 + ] + }, + { + "name": "Area hIP2 (IPS) - right hemisphere", + "rgb": [ + 127, + 245, + 203 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 129, + "children": [], + "status": "publicP", + "position": [ + 44605145, + -39958613, + 45130872 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "4490ef3e-ce60-4453-9e9f-85388d0603cb" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP4 (IPS)", + "arealabel": "Area-hIP4", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/TSEN-QSY", + "synonyms": [], + "rgb": [ + 254, + 52, + 184 + ], + "children": [ + { + "name": "Area hIP4 (IPS) - left hemisphere", + "rgb": [ + 254, + 52, + 184 + ], + "labelIndex": 294, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -29349066, + -79948651, + 25849585 + ] + }, + { + "name": "Area hIP4 (IPS) - right hemisphere", + "rgb": [ + 254, + 52, + 184 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 294, + "children": [], + "status": "publicP", + "position": [ + 37324927, + -76495150, + 22338021 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "5875bfe2-99ca-4e50-bce2-61c201c3dd54" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP5 (IPS)", + "arealabel": "Area-hIP5", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/RNSM-Y4Y", + "synonyms": [], + "rgb": [ + 217, + 87, + 210 + ], + "children": [ + { + "name": "Area hIP5 (IPS) - left hemisphere", + "rgb": [ + 217, + 87, + 210 + ], + "labelIndex": 295, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -28321120, + -73162807, + 36664362 + ] + }, + { + "name": "Area hIP5 (IPS) - right hemisphere", + "rgb": [ + 217, + 87, + 210 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 295, + "children": [], + "status": "publicP", + "position": [ + 34614713, + -68930590, + 33299252 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f9717dec-0310-4078-a4ae-294170b4fb37" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP6 (IPS)", + "arealabel": "Area-hIP6", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/AFQR-50Q", + "synonyms": [], + "rgb": [ + 237, + 233, + 37 + ], + "children": [ + { + "name": "Area hIP6 (IPS) - left hemisphere", + "rgb": [ + 237, + 233, + 37 + ], + "labelIndex": 292, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -31988131, + -66522626, + 46155045 + ] + }, + { + "name": "Area hIP6 (IPS) - right hemisphere", + "rgb": [ + 237, + 233, + 37 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 292, + "children": [], + "status": "publicP", + "position": [ + 37069307, + -63723479, + 45628006 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b9975f8e-f484-4e82-883a-5fd765855ae0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hIP8 (IPS)", + "arealabel": "Area-hIP8", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/YYT8-FT8", + "synonyms": [], + "rgb": [ + 223, + 109, + 3 + ], + "children": [ + { + "name": "Area hIP8 (IPS) - left hemisphere", + "rgb": [ + 223, + 109, + 3 + ], + "labelIndex": 293, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -18133307, + -72231198, + 43245125 + ] + }, + { + "name": "Area hIP8 (IPS) - right hemisphere", + "rgb": [ + 223, + 109, + 3 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 293, + "children": [], + "status": "publicP", + "position": [ + 26220986, + -71480127, + 41680048 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a2c1acc7-7fdc-4fbd-90ee-729eda7fdff3" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "occiptal lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "dorsal occipital cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hOc6 (POS)", + "arealabel": "Area-hOc6", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/4101-1ZG", + "synonyms": [], + "rgb": [ + 239, + 66, + 26 + ], + "children": [ + { + "name": "Area hOc6 (POS) - left hemisphere", + "rgb": [ + 239, + 66, + 26 + ], + "labelIndex": 291, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -15925775, + -70685971, + 16518760 + ] + }, + { + "name": "Area hOc6 (POS) - right hemisphere", + "rgb": [ + 239, + 66, + 26 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 291, + "children": [], + "status": "publicP", + "position": [ + 17750454, + -67625227, + 17755898 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d72e0210-a910-4b15-bcaf-80c3433cd3e0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc4d (Cuneus)", + "arealabel": "Area-hOc4d", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/VSK5-DET", + "synonyms": [], + "rgb": [ + 109, + 218, + 10 + ], + "children": [ + { + "name": "Area hOc4d (Cuneus) - left hemisphere", + "rgb": [ + 109, + 218, + 10 + ], + "labelIndex": 119, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -17209585, + -87846006, + 25522684 + ] + }, + { + "name": "Area hOc4d (Cuneus) - right hemisphere", + "rgb": [ + 109, + 218, + 10 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 119, + "children": [], + "status": "publicP", + "position": [ + 20232373, + -87193644, + 27253227 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8120426c-f65b-4426-8a58-3060e2334921" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc3d (Cuneus)", + "arealabel": "Area-hOc3d", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F9X3-JVJ", + "synonyms": [], + "rgb": [ + 105, + 191, + 48 + ], + "children": [ + { + "name": "Area hOc3d (Cuneus) - left hemisphere", + "rgb": [ + 105, + 191, + 48 + ], + "labelIndex": 120, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -12816505, + -91289984, + 21840872 + ] + }, + { + "name": "Area hOc3d (Cuneus) - right hemisphere", + "rgb": [ + 105, + 191, + 48 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 120, + "children": [], + "status": "publicP", + "position": [ + 16129503, + -88897084, + 23080617 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d7ec4342-ae58-41e3-a68c-28e90a719d41" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "ventral occipital cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hOc3v (LingG)", + "arealabel": "Area-hOc3v", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/E5E8-1VV", + "synonyms": [], + "rgb": [ + 83, + 179, + 155 + ], + "children": [ + { + "name": "Area hOc3v (LingG) - left hemisphere", + "rgb": [ + 83, + 179, + 155 + ], + "labelIndex": 10, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -18685863, + -85629087, + -10106719 + ] + }, + { + "name": "Area hOc3v (LingG) - right hemisphere", + "rgb": [ + 83, + 179, + 155 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 10, + "children": [], + "status": "publicP", + "position": [ + 24296060, + -81686611, + -10031193 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "0d6392fd-b905-4bc3-bac9-fc44d8990a30" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc4v (LingG)", + "arealabel": "Area-hOc4v", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/AASR-M8P", + "synonyms": [], + "rgb": [ + 222, + 77, + 155 + ], + "children": [ + { + "name": "Area hOc4v (LingG) - left hemisphere", + "rgb": [ + 222, + 77, + 155 + ], + "labelIndex": 9, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -26315808, + -78419533, + -12497238 + ] + }, + { + "name": "Area hOc4v (LingG) - right hemisphere", + "rgb": [ + 222, + 77, + 155 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 9, + "children": [], + "status": "publicP", + "position": [ + 32665897, + -76519832, + -12453305 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "27d91cbb-5611-4d38-bd17-c0f1ac22b4cc" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "occipital cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hOc2 (V2, 18)", + "arealabel": "Area-hOc2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/QG9C-THD", + "synonyms": [], + "rgb": [ + 84, + 110, + 22 + ], + "children": [ + { + "name": "Area hOc2 (V2, 18) - left hemisphere", + "rgb": [ + 84, + 110, + 22 + ], + "labelIndex": 7, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -10521334, + -88185706, + 4055081 + ] + }, + { + "name": "Area hOc2 (V2, 18) - right hemisphere", + "rgb": [ + 84, + 110, + 22 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 7, + "children": [], + "status": "publicP", + "position": [ + 15409559, + -86163484, + 2905309 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "04674a3c-bb3a-495e-a466-206355e630bd" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc1 (V1, 17, CalcS)", + "arealabel": "Area-hOc1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/MXJ6-6DH", + "synonyms": [], + "rgb": [ + 190, + 132, + 147 + ], + "children": [ + { + "name": "Area hOc1 (V1, 17, CalcS) - left hemisphere", + "rgb": [ + 190, + 132, + 147 + ], + "labelIndex": 8, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8533787, + -84646549, + 1855106 + ] + }, + { + "name": "Area hOc1 (V1, 17, CalcS) - right hemisphere", + "rgb": [ + 190, + 132, + 147 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 8, + "children": [], + "status": "publicP", + "position": [ + 14654595, + -81416396, + 1637838 + ] + } + ], + "relatedAreas": [ + { + "name": "Area hOc1", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b851eb9d-9502-45e9-8dd8-2861f0e6da3f" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "5151ab8f-d8cb-4e67-a449-afe2a41fb007" + } + } + } + ] + }, + { + "name": "lateral occipital cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area hOc4lp (LOC)", + "arealabel": "Area-hOc4lp", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/4B87-Q8X", + "synonyms": [], + "rgb": [ + 96, + 113, + 253 + ], + "children": [ + { + "name": "Area hOc4lp (LOC) - left hemisphere", + "rgb": [ + 96, + 113, + 253 + ], + "labelIndex": 117, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -34066943, + -88725728, + 6360721 + ] + }, + { + "name": "Area hOc4lp (LOC) - right hemisphere", + "rgb": [ + 96, + 113, + 253 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 117, + "children": [], + "status": "publicP", + "position": [ + 38538256, + -86375516, + 4086228 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9006ee6a-6dc1-4604-9f20-7e08b42d574d" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc5 (LOC)", + "arealabel": "Area-hOc5", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/2WSH-MCT", + "synonyms": [], + "rgb": [ + 255, + 0, + 0 + ], + "children": [ + { + "name": "Area hOc5 (LOC) - left hemisphere", + "rgb": [ + 255, + 0, + 0 + ], + "labelIndex": 6, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -42484324, + -71486486, + 1795676 + ] + }, + { + "name": "Area hOc5 (LOC) - right hemisphere", + "rgb": [ + 255, + 0, + 0 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 6, + "children": [], + "status": "publicP", + "position": [ + 48090700, + -66172216, + 3121699 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b40afb5a-e6a1-47b6-8a3e-1f8a20fbf99a" + } + }, + "relatedAreas": [] + }, + { + "name": "Area hOc4la (LOC)", + "arealabel": "Area-hOc4la", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/Z9JX-WKB", + "synonyms": [], + "rgb": [ + 233, + 168, + 189 + ], + "children": [ + { + "name": "Area hOc4la (LOC) - left hemisphere", + "rgb": [ + 233, + 168, + 189 + ], + "labelIndex": 118, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -46291484, + -76947955, + -372761 + ] + }, + { + "name": "Area hOc4la (LOC) - right hemisphere", + "rgb": [ + 233, + 168, + 189 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 118, + "children": [], + "status": "publicP", + "position": [ + 48566255, + -73862041, + -779202 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "94365b82-6204-4937-8b86-fe0433287938" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "frontal lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "inferior frontal gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 44 (IFG)", + "arealabel": "Area-44", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F9P8-ZVW", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area 44v", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7e5e7aa8-28b8-445b-8980-2a6f3fa645b3" + } + } + }, + { + "name": "Area 44d", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8aeae833-81c8-4e27-a8d6-deee339d6052" + } + } + } + ], + "rgb": [ + 54, + 74, + 75 + ], + "children": [ + { + "name": "Area 44 (IFG) - left hemisphere", + "rgb": [ + 54, + 74, + 75 + ], + "labelIndex": 2, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -54242820, + 11425127, + 18292735 + ] + }, + { + "name": "Area 44 (IFG) - right hemisphere", + "rgb": [ + 54, + 74, + 75 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 2, + "children": [], + "status": "publicP", + "position": [ + 56359074, + 11741030, + 13444358 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8a6be82c-5947-4fff-8348-cf9bf73e4f40" + } + } + }, + { + "name": "Area 45 (IFG)", + "arealabel": "Area-45", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/MR1V-BJ3", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area 45", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "131e6de8-b073-4f01-8f60-1bdb5a6c9a9a" + } + } + } + ], + "rgb": [ + 167, + 103, + 146 + ], + "children": [ + { + "name": "Area 45 (IFG) - left hemisphere", + "rgb": [ + 167, + 103, + 146 + ], + "labelIndex": 1, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -54903012, + 26558233, + 15528514 + ] + }, + { + "name": "Area 45 (IFG) - right hemisphere", + "rgb": [ + 167, + 103, + 146 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 1, + "children": [], + "status": "publicP", + "position": [ + 55787613, + 26216770, + 12102941 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "cb32e688-43f0-4ae3-9554-085973137663" + } + } + } + ] + }, + { + "name": "dorsal precentral gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 6d2 (PreCG)", + "arealabel": "Area-6d2", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/KXHS-N90", + "synonyms": [], + "rgb": [ + 170, + 151, + 180 + ], + "children": [ + { + "name": "Area 6d2 (PreCG) - left hemisphere", + "rgb": [ + 170, + 151, + 180 + ], + "labelIndex": 288, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -15757793, + 2030353, + 68024610 + ] + }, + { + "name": "Area 6d2 (PreCG) - right hemisphere", + "rgb": [ + 170, + 151, + 180 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 288, + "children": [], + "status": "publicDOI", + "position": [ + 14562976, + 2312675, + 68442439 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "963c5281-67df-4d41-9b91-60b31cf150c0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 6d1 (PreCG)", + "arealabel": "Area-6d1", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/4WSQ-8FM", + "synonyms": [], + "rgb": [ + 45, + 33, + 27 + ], + "children": [ + { + "name": "Area 6d1 (PreCG) - left hemisphere", + "rgb": [ + 45, + 33, + 27 + ], + "labelIndex": 287, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -20332759, + -14746524, + 68590141 + ] + }, + { + "name": "Area 6d1 (PreCG) - right hemisphere", + "rgb": [ + 45, + 33, + 27 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 287, + "children": [], + "status": "publicDOI", + "position": [ + 20258981, + -16559656, + 68870890 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a802f3dc-b7e5-48b7-9845-832a6e6f9b1c" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "posterior medial superior frontal gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 6ma (preSMA, mesial SFG)", + "arealabel": "Area-6ma", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WVNR-SPT", + "synonyms": [], + "rgb": [ + 204, + 108, + 222 + ], + "children": [ + { + "name": "Area 6ma (preSMA, mesial SFG) - left hemisphere", + "rgb": [ + 204, + 108, + 222 + ], + "labelIndex": 299, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -4083913, + 4296092, + 58555023 + ] + }, + { + "name": "Area 6ma (preSMA, mesial SFG) - right hemisphere", + "rgb": [ + 204, + 108, + 222 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 299, + "children": [], + "status": "publicP", + "position": [ + 5230140, + 4042128, + 58355079 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "07b4c6a1-8a24-4f88-8f73-b2ea06e1c2f3" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "superior frontal sulcus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 6d3 (SFS)", + "arealabel": "Area-6d3", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/NVJ5-JJ", + "synonyms": [], + "rgb": [ + 55, + 239, + 21 + ], + "children": [ + { + "name": "Area 6d3 (SFS) - left hemisphere", + "rgb": [ + 55, + 239, + 21 + ], + "labelIndex": 289, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -23315931, + 4317151, + 51434008 + ] + }, + { + "name": "Area 6d3 (SFS) - right hemisphere", + "rgb": [ + 55, + 239, + 21 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 289, + "children": [], + "status": "publicDOI", + "position": [ + 25173639, + 1578188, + 53334281 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "266c1ada-1840-462f-8223-7ff2df457552" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "frontal pole", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Fp1 (FPole)", + "arealabel": "Area-Fp1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/PTKW-R7W", + "synonyms": [], + "rgb": [ + 226, + 14, + 200 + ], + "children": [ + { + "name": "Area Fp1 (FPole) - left hemisphere", + "rgb": [ + 226, + 14, + 200 + ], + "labelIndex": 212, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -16331031, + 64168302, + 549101 + ] + }, + { + "name": "Area Fp1 (FPole) - right hemisphere", + "rgb": [ + 226, + 14, + 200 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 212, + "children": [], + "status": "publicP", + "position": [ + 18482225, + 63988011, + -317043 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "10dc5343-941b-4e3e-80ed-df031c33bbc6" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fp2 (FPole)", + "arealabel": "Area-Fp2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/GZW1-7R3", + "synonyms": [], + "rgb": [ + 239, + 137, + 211 + ], + "children": [ + { + "name": "Area Fp2 (FPole) - left hemisphere", + "rgb": [ + 239, + 137, + 211 + ], + "labelIndex": 211, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -3739067, + 59074587, + -1181973 + ] + }, + { + "name": "Area Fp2 (FPole) - right hemisphere", + "rgb": [ + 239, + 137, + 211 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 211, + "children": [], + "status": "publicP", + "position": [ + 6093420, + 59611191, + -509606 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3bf7bde1-cc06-4657-b296-380275f9d4b8" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "precentral gyrus ", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 4p (PreCG)", + "arealabel": "Area-4p", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/5HSF-81J", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area 4p", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "861ab96a-c4b5-4ba6-bd40-1e80d4680f89" + } + } + } + ], + "rgb": [ + 116, + 92, + 124 + ], + "children": [ + { + "name": "Area 4p (PreCG) - left hemisphere", + "rgb": [ + 116, + 92, + 124 + ], + "labelIndex": 123, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -36140917, + -22750424, + 49282965 + ] + }, + { + "name": "Area 4p (PreCG) - right hemisphere", + "rgb": [ + 116, + 92, + 124 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 123, + "children": [], + "status": "publicP", + "position": [ + 37510795, + -21359659, + 46456250 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "82e6e826-a439-41db-84ff-4674ca3d643a" + } + } + }, + { + "name": "Area 4a (PreCG)", + "arealabel": "Area-4a", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/PVPP-P3Q", + "synonyms": [], + "rgb": [ + 118, + 239, + 183 + ], + "children": [ + { + "name": "Area 4a (PreCG) - left hemisphere", + "rgb": [ + 118, + 239, + 183 + ], + "labelIndex": 124, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -17367391, + -28669064, + 67404682 + ] + }, + { + "name": "Area 4a (PreCG) - right hemisphere", + "rgb": [ + 118, + 239, + 183 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 124, + "children": [], + "status": "publicP", + "position": [ + 9609157, + -31334779, + 68068112 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "175848ff-4c55-47e3-a0ae-f905a14e03cd" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "mesial precentral gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area 6mp (SMA, mesial SFG)", + "arealabel": "Area-6mp", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/2E1T-47F", + "synonyms": [], + "rgb": [ + 75, + 95, + 87 + ], + "children": [ + { + "name": "Area 6mp (SMA, mesial SFG) - left hemisphere", + "rgb": [ + 75, + 95, + 87 + ], + "labelIndex": 298, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -4094374, + -14286751, + 59329220 + ] + }, + { + "name": "Area 6mp (SMA, mesial SFG) - right hemisphere", + "rgb": [ + 75, + 95, + 87 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 298, + "children": [], + "status": "publicP", + "position": [ + 4949202, + -13788668, + 57534028 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "def99e8e-ce8f-4a62-bd5d-739948c4b010" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "medial orbitofrontal cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Fo1 (OFC)", + "arealabel": "Area-Fo1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/H2N2-6J2", + "synonyms": [], + "rgb": [ + 7, + 255, + 179 + ], + "children": [ + { + "name": "Area Fo1 (OFC) - left hemisphere", + "rgb": [ + 7, + 255, + 179 + ], + "labelIndex": 3, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -7962771, + 41364968, + -22537687 + ] + }, + { + "name": "Area Fo1 (OFC) - right hemisphere", + "rgb": [ + 7, + 255, + 179 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 3, + "children": [], + "status": "publicP", + "position": [ + 9705948, + 40760961, + -22481988 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3864cb8c-f277-4de6-9f8d-c76d71d7e9a9" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo3 (OFC)", + "arealabel": "Area-Fo3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/E1YQ-65U", + "synonyms": [], + "rgb": [ + 182, + 189, + 250 + ], + "children": [ + { + "name": "Area Fo3 (OFC) - left hemisphere", + "rgb": [ + 182, + 189, + 250 + ], + "labelIndex": 5, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -21866985, + 33732378, + -19882472 + ] + }, + { + "name": "Area Fo3 (OFC) - right hemisphere", + "rgb": [ + 182, + 189, + 250 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 5, + "children": [], + "status": "publicP", + "position": [ + 22929678, + 33527877, + -20231493 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "741f6a9e-cfd7-4173-ac7d-ee616c29555e" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo2 (OFC)", + "arealabel": "Area-Fo2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3JB9-2V2", + "synonyms": [], + "rgb": [ + 0, + 255, + 0 + ], + "children": [ + { + "name": "Area Fo2 (OFC) - left hemisphere", + "rgb": [ + 0, + 255, + 0 + ], + "labelIndex": 4, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8588272, + 22532156, + -20474464 + ] + }, + { + "name": "Area Fo2 (OFC) - right hemisphere", + "rgb": [ + 0, + 255, + 0 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 4, + "children": [], + "status": "publicP", + "position": [ + 9164379, + 21928964, + -20593342 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "30a04d2b-58e1-43d7-8b8f-1f0b598382d0" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "frontal operculum ", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area OP8 (Frontal Operculum)", + "arealabel": "Area-OP8", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/NGF8-TA4", + "synonyms": [], + "rgb": [ + 29, + 76, + 168 + ], + "children": [ + { + "name": "Area OP8 (Frontal Operculum) - left hemisphere", + "rgb": [ + 29, + 76, + 168 + ], + "labelIndex": 273, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -41777921, + 17183344, + 7912847 + ] + }, + { + "name": "Area OP8 (Frontal Operculum) - right hemisphere", + "rgb": [ + 29, + 76, + 168 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 273, + "children": [], + "status": "publicDOI", + "position": [ + 42725111, + 16774146, + 7832095 + ] + } + ] + }, + { + "name": "Area OP9 (Frontal Operculum)", + "arealabel": "Area-OP9", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3A30-5E4", + "synonyms": [], + "rgb": [ + 175, + 123, + 34 + ], + "children": [ + { + "name": "Area OP9 (Frontal Operculum) - left hemisphere", + "rgb": [ + 175, + 123, + 34 + ], + "labelIndex": 274, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -45090542, + 25998787, + 5597413 + ] + }, + { + "name": "Area OP9 (Frontal Operculum) - right hemisphere", + "rgb": [ + 175, + 123, + 34 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 274, + "children": [], + "status": "publicDOI", + "position": [ + 44374928, + 26272467, + 2966228 + ] + } + ] + } + ] + }, + { + "name": "lateral orbitofrontal cortex", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Fo5 (OFC)", + "arealabel": "Area-Fo5", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/HJMY-ZZP", + "synonyms": [], + "rgb": [ + 219, + 11, + 91 + ], + "children": [ + { + "name": "Area Fo5 (OFC) - left hemisphere", + "rgb": [ + 219, + 11, + 91 + ], + "labelIndex": 325, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -38055351, + 56315867, + -8720295 + ] + }, + { + "name": "Area Fo5 (OFC) - right hemisphere", + "rgb": [ + 219, + 11, + 91 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 325, + "children": [], + "status": "publicDOI", + "position": [ + 40545983, + 54504228, + -4983615 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3fd2e113-ec08-407b-bc88-172c9285694a" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo4 (OFC)", + "arealabel": "Area-Fo4", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/29G0-66F", + "synonyms": [], + "rgb": [ + 163, + 204, + 53 + ], + "children": [ + { + "name": "Area Fo4 (OFC) - left hemisphere", + "rgb": [ + 163, + 204, + 53 + ], + "labelIndex": 324, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -27573653, + 52998204, + -14510778 + ] + }, + { + "name": "Area Fo4 (OFC) - right hemisphere", + "rgb": [ + 163, + 204, + 53 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 324, + "children": [], + "status": "publicDOI", + "position": [ + 33636124, + 52034755, + -15509742 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "2cdee956-207a-4d4d-b051-bef80045210b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo6 (OFC)", + "arealabel": "Area-Fo6", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/34Q4-H62", + "synonyms": [], + "rgb": [ + 199, + 156, + 187 + ], + "children": [ + { + "name": "Area Fo6 (OFC) - left hemisphere", + "rgb": [ + 199, + 156, + 187 + ], + "labelIndex": 326, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -44272971, + 42876258, + -12938967 + ] + }, + { + "name": "Area Fo6 (OFC) - right hemisphere", + "rgb": [ + 199, + 156, + 187 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 326, + "children": [], + "status": "publicDOI", + "position": [ + 48891176, + 40513824, + -12457353 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "330ae178-557c-4bd0-a932-f138c0a05345" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Fo7 (OFC)", + "arealabel": "Area-Fo7", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3WEV-561", + "synonyms": [], + "rgb": [ + 64, + 211, + 186 + ], + "children": [ + { + "name": "Area Fo7 (OFC) - left hemisphere", + "rgb": [ + 64, + 211, + 186 + ], + "labelIndex": 327, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -36046240, + 37308943, + -11666667 + ] + }, + { + "name": "Area Fo7 (OFC) - right hemisphere", + "rgb": [ + 64, + 211, + 186 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 327, + "children": [], + "status": "publicDOI", + "position": [ + 37850755, + 37700302, + -13777644 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "1b882148-fcdd-4dbe-b33d-659957840e9e" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "granular insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Ig1 (Insula)", + "arealabel": "Area-Ig1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/EKV9-29D", + "synonyms": [], + "rgb": [ + 18, + 111, + 40 + ], + "children": [ + { + "name": "Area Ig1 (Insula) - left hemisphere", + "rgb": [ + 18, + 111, + 40 + ], + "labelIndex": 115, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -33211215, + -24171963, + 9923364 + ] + }, + { + "name": "Area Ig1 (Insula) - right hemisphere", + "rgb": [ + 18, + 111, + 40 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 115, + "children": [], + "status": "publicP", + "position": [ + 33707983, + -23338235, + 9071429 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "46cf08af-8086-4e8a-9e9f-182ca583bdf0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Ig3 (Insula)", + "arealabel": "Area-Ig3", + "status": "publicDOI", + "labelIndex": null, + "doi": "", + "synonyms": [], + "rgb": [ + 105, + 253, + 197 + ], + "children": [ + { + "name": "Area Ig3 (Insula) - left hemisphere", + "rgb": [ + 105, + 253, + 197 + ], + "labelIndex": 336, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -37956284, + -14423497, + 13513661 + ] + }, + { + "name": "Area Ig3 (Insula) - right hemisphere", + "rgb": [ + 105, + 253, + 197 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 336, + "children": [], + "status": "publicDOI", + "position": [ + 38219144, + -13750630, + 13916877 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "10dba769-4f6c-40f9-8ffd-e0cce71c5adb" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Ig2 (Insula)", + "arealabel": "Area-Ig2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/662G-E0W", + "synonyms": [], + "rgb": [ + 105, + 61, + 82 + ], + "children": [ + { + "name": "Area Ig2 (Insula) - left hemisphere", + "rgb": [ + 105, + 61, + 82 + ], + "labelIndex": 114, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -37117338, + -17859895, + 5094571 + ] + }, + { + "name": "Area Ig2 (Insula) - right hemisphere", + "rgb": [ + 105, + 61, + 82 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 114, + "children": [], + "status": "publicP", + "position": [ + 37843632, + -16445145, + 5703657 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "49092952-1eef-4b89-b8bf-1bf1f25f149a" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "agranular insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Ia (Insula)", + "arealabel": "Area-Ia", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/WW8G-T2G", + "synonyms": [], + "rgb": [ + 71, + 217, + 62 + ], + "children": [ + { + "name": "Area Ia (Insula) - left hemisphere", + "rgb": [ + 71, + 217, + 62 + ], + "labelIndex": 339, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -41612827, + -1876485, + -7019002 + ] + }, + { + "name": "Area Ia (Insula) - right hemisphere", + "rgb": [ + 71, + 217, + 62 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 339, + "children": [], + "status": "publicDOI", + "position": [ + 43525000, + 36538, + -7609615 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "110d0d7b-cb88-48ea-9caf-863f548dbe38" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "dys-/agranular insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Id7 (Insula)", + "arealabel": "Area-Id7", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/88QG-JMS", + "synonyms": [], + "rgb": [ + 101, + 202, + 38 + ], + "children": [ + { + "name": "Area Id7 (Insula) - left hemisphere", + "rgb": [ + 101, + 202, + 38 + ], + "labelIndex": 159, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -30926962, + 23741297, + 4787031 + ] + }, + { + "name": "Area Id7 (Insula) - right hemisphere", + "rgb": [ + 101, + 202, + 38 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 159, + "children": [], + "status": "publicDOI", + "position": [ + 35034429, + 24873239, + 2446009 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3d5729f5-55c6-412a-8fc1-41a95c71b13a" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "dysgranular insula", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area Id2 (Insula)", + "arealabel": "Area-Id2", + "status": "publicDOI", + "labelIndex": null, + "doi": "", + "synonyms": [], + "rgb": [ + 225, + 126, + 73 + ], + "children": [ + { + "name": "Area Id2 (Insula) - left hemisphere", + "rgb": [ + 225, + 126, + 73 + ], + "labelIndex": 56, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -41933981, + -11436893, + 4091262 + ] + }, + { + "name": "Area Id2 (Insula) - right hemisphere", + "rgb": [ + 225, + 126, + 73 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 56, + "children": [], + "status": "publicDOI", + "position": [ + 44043478, + -10289855, + 3759834 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "cf9dea67-649d-4034-ae57-ec389f339277" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id1 (Insula)", + "arealabel": "Area-Id1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F37H-8WB", + "synonyms": [], + "rgb": [ + 141, + 112, + 216 + ], + "children": [ + { + "name": "Area Id1 (Insula) - left hemisphere", + "rgb": [ + 141, + 112, + 216 + ], + "labelIndex": 116, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -40090747, + -18279359, + -4567616 + ] + }, + { + "name": "Area Id1 (Insula) - right hemisphere", + "rgb": [ + 141, + 112, + 216 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 116, + "children": [], + "status": "publicP", + "position": [ + 40527825, + -17443508, + -4688027 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "c22055c1-514f-4096-906b-abf57286053b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id3 (Insula)", + "arealabel": "Area-Id3", + "status": "publicDOI", + "labelIndex": null, + "doi": "", + "synonyms": [], + "rgb": [ + 32, + 32, + 58 + ], + "children": [ + { + "name": "Area Id3 (Insula) - left hemisphere", + "rgb": [ + 32, + 32, + 58 + ], + "labelIndex": 57, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -40414195, + -7819915, + -8263771 + ] + }, + { + "name": "Area Id3 (Insula) - right hemisphere", + "rgb": [ + 32, + 32, + 58 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 57, + "children": [], + "status": "publicDOI", + "position": [ + 41459316, + -6224335, + -9042586 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "3dcfcfc2-035c-4785-a820-a671f2104ac3" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id5 (Insula)", + "arealabel": "Area-Id5", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/5CK1-B1G", + "synonyms": [], + "rgb": [ + 112, + 6, + 50 + ], + "children": [ + { + "name": "Area Id5 (Insula) - left hemisphere", + "rgb": [ + 112, + 6, + 50 + ], + "labelIndex": 338, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -40174302, + -3354190, + 741899 + ] + }, + { + "name": "Area Id5 (Insula) - right hemisphere", + "rgb": [ + 112, + 6, + 50 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 338, + "children": [], + "status": "publicDOI", + "position": [ + 41094953, + -2659538, + 607357 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e03cd3c6-d0be-481c-b906-9b39c1d0b641" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id6 (Insula)", + "arealabel": "Area-Id6", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/54HZ-KFQ", + "synonyms": [], + "rgb": [ + 138, + 127, + 119 + ], + "children": [ + { + "name": "Area Id6 (Insula) - left hemisphere", + "rgb": [ + 138, + 127, + 119 + ], + "labelIndex": 340, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -36392282, + 9843698, + 3385341 + ] + }, + { + "name": "Area Id6 (Insula) - right hemisphere", + "rgb": [ + 138, + 127, + 119 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 340, + "children": [], + "status": "publicDOI", + "position": [ + 37750946, + 10762642, + 3041624 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "31bbe92d-e5e8-4cf4-be5d-e6b12c71a107" + } + }, + "relatedAreas": [] + }, + { + "name": "Area Id4 (Insula)", + "arealabel": "Area-Id4", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/K63G-89H", + "synonyms": [], + "rgb": [ + 38, + 174, + 113 + ], + "children": [ + { + "name": "Area Id4 (Insula) - left hemisphere", + "rgb": [ + 38, + 174, + 113 + ], + "labelIndex": 337, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -37055965, + -3505155, + 11422680 + ] + }, + { + "name": "Area Id4 (Insula) - right hemisphere", + "rgb": [ + 38, + 174, + 113 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 337, + "children": [], + "status": "publicDOI", + "position": [ + 37461444, + -3746634, + 10858017 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f480ed72-5ca5-4d1f-8905-cbe9bedcfaee" + } + }, + "relatedAreas": [] + } + ] + } + ] + }, + { + "name": "temporal lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "superior temporal sulcus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area STS2 (STS)", + "arealabel": "Area-STS2", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/KHY9-J3Y", + "synonyms": [], + "rgb": [ + 62, + 117, + 123 + ], + "children": [ + { + "name": "Area STS2 (STS) - left hemisphere", + "rgb": [ + 62, + 117, + 123 + ], + "labelIndex": 272, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -56352486, + -8557380, + -14844672 + ] + }, + { + "name": "Area STS2 (STS) - right hemisphere", + "rgb": [ + 62, + 117, + 123 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 272, + "children": [], + "status": "publicDOI", + "position": [ + 56942990, + -8020716, + -16067930 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "278fc30f-2e24-4046-856b-95dfaf561635" + } + }, + "relatedAreas": [] + }, + { + "name": "Area STS1 (STS)", + "arealabel": "Area-STS1", + "status": "publicDOI", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F6DF-H8P", + "synonyms": [], + "rgb": [ + 205, + 228, + 4 + ], + "children": [ + { + "name": "Area STS1 (STS) - left hemisphere", + "rgb": [ + 205, + 228, + 4 + ], + "labelIndex": 271, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicDOI", + "position": [ + -54514755, + -16753913, + -5260713 + ] + }, + { + "name": "Area STS1 (STS) - right hemisphere", + "rgb": [ + 205, + 228, + 4 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 271, + "children": [], + "status": "publicDOI", + "position": [ + 54536567, + -17992636, + -5712544 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "68784b66-ff15-4b09-b28a-a2146c0f8907" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "superior temporal gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area TE 3 (STG)", + "arealabel": "Area-TE-3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/BN5J-JT8", + "synonyms": [], + "rgb": [ + 159, + 104, + 108 + ], + "children": [ + { + "name": "Area TE 3 (STG) - left hemisphere", + "rgb": [ + 159, + 104, + 108 + ], + "labelIndex": 31, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -64398501, + -12497885, + 1316801 + ] + }, + { + "name": "Area TE 3 (STG) - right hemisphere", + "rgb": [ + 159, + 104, + 108 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 31, + "children": [], + "status": "publicP", + "position": [ + 65811519, + -9018989, + -1027621 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7e1a3291-efdc-4ca6-a3d0-6c496c34639f" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "Heschl's gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area TE 1.2 (HESCHL)", + "arealabel": "Area-TE-1.2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/R382-617", + "synonyms": [], + "rgb": [ + 202, + 251, + 192 + ], + "children": [ + { + "name": "Area TE 1.2 (HESCHL) - left hemisphere", + "rgb": [ + 202, + 251, + 192 + ], + "labelIndex": 30, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -50810427, + -6551343, + 1635071 + ] + }, + { + "name": "Area TE 1.2 (HESCHL) - right hemisphere", + "rgb": [ + 202, + 251, + 192 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 30, + "children": [], + "status": "publicP", + "position": [ + 55870330, + -2672527, + 52747 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "677cd48c-70fa-4bbd-9f0a-ffdc7744bc0f" + } + }, + "relatedAreas": [] + }, + { + "name": "Area TE 1.1 (HESCHL)", + "arealabel": "Area-TE-1.1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/4HA3-BBE", + "synonyms": [], + "rgb": [ + 8, + 113, + 68 + ], + "children": [ + { + "name": "Area TE 1.1 (HESCHL) - left hemisphere", + "rgb": [ + 8, + 113, + 68 + ], + "labelIndex": 33, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -38219760, + -27125577, + 10774700 + ] + }, + { + "name": "Area TE 1.1 (HESCHL) - right hemisphere", + "rgb": [ + 8, + 113, + 68 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 33, + "children": [], + "status": "publicP", + "position": [ + 40719340, + -24106132, + 10308962 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e2969911-77eb-4b21-af70-216cab5285b1" + } + }, + "relatedAreas": [] + }, + { + "name": "Area TE 1.0 (HESCHL)", + "arealabel": "Area-TE-1.0", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/MV3G-RET", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area Te1", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "f424643e-9baf-4c50-9417-db1ac33dcd3e" + } + } + } + ], + "rgb": [ + 252, + 84, + 222 + ], + "children": [ + { + "name": "Area TE 1.0 (HESCHL) - left hemisphere", + "rgb": [ + 252, + 84, + 222 + ], + "labelIndex": 27, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -46560150, + -17508772, + 7622807 + ] + }, + { + "name": "Area TE 1.0 (HESCHL) - right hemisphere", + "rgb": [ + 252, + 84, + 222 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 27, + "children": [], + "status": "publicP", + "position": [ + 50392116, + -12932573, + 5942946 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "13e21153-2ba8-4212-b172-8894f1012225" + } + } + } + ] + }, + { + "name": "fusiform gyrus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area FG2 (FusG)", + "arealabel": "Area-FG2", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/F2JH-KVV", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area FG2", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8f436328-4251-4706-ae38-767e1ab21c6f" + } + } + } + ], + "rgb": [ + 67, + 94, + 149 + ], + "children": [ + { + "name": "Area FG2 (FusG) - left hemisphere", + "rgb": [ + 67, + 94, + 149 + ], + "labelIndex": 106, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -43549584, + -65531770, + -16708135 + ] + }, + { + "name": "Area FG2 (FusG) - right hemisphere", + "rgb": [ + 67, + 94, + 149 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 106, + "children": [], + "status": "publicP", + "position": [ + 44839825, + -63606518, + -17316773 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "6e7a0441-4baa-4355-921b-50d23d07d50f" + } + } + }, + { + "name": "Area FG3 (FusG)", + "arealabel": "Area-FG3", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/Z0F6-0SY", + "synonyms": [], + "rgb": [ + 120, + 147, + 37 + ], + "children": [ + { + "name": "Area FG3 (FusG) - left hemisphere", + "rgb": [ + 120, + 147, + 37 + ], + "labelIndex": 239, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -29844935, + -45368421, + -14184493 + ] + }, + { + "name": "Area FG3 (FusG) - right hemisphere", + "rgb": [ + 120, + 147, + 37 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 239, + "children": [], + "status": "publicP", + "position": [ + 31148061, + -44485336, + -15533822 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "023f8ef7-c266-4c45-8bf2-4a17dc52985b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area FG1 (FusG)", + "arealabel": "Area-FG1", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/5ZVQ-R8R", + "synonyms": [], + "rgb": [ + 131, + 183, + 58 + ], + "children": [ + { + "name": "Area FG1 (FusG) - left hemisphere", + "rgb": [ + 131, + 183, + 58 + ], + "labelIndex": 107, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -29006116, + -66264526, + -12290010 + ] + }, + { + "name": "Area FG1 (FusG) - right hemisphere", + "rgb": [ + 131, + 183, + 58 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 107, + "children": [], + "status": "publicP", + "position": [ + 32840456, + -64340456, + -12612536 + ] + } + ], + "relatedAreas": [ + { + "name": "Area FG1", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "6318e160-4ad2-4eec-8a2e-2df6fe07d8f4" + } + } + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "39fb34a8-fd6d-4fba-898c-2f6167e40459" + } + } + }, + { + "name": "Area FG4 (FusG)", + "arealabel": "Area-FG4", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/13RG-FYV", + "synonyms": [], + "relatedAreas": [ + { + "name": "Area FG2", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "8f436328-4251-4706-ae38-767e1ab21c6f" + } + } + } + ], + "rgb": [ + 170, + 220, + 175 + ], + "children": [ + { + "name": "Area FG4 (FusG) - left hemisphere", + "rgb": [ + 170, + 220, + 175 + ], + "labelIndex": 238, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -43204016, + -44325167, + -20016734 + ] + }, + { + "name": "Area FG4 (FusG) - right hemisphere", + "rgb": [ + 170, + 220, + 175 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 238, + "children": [], + "status": "publicP", + "position": [ + 43609694, + -43478025, + -22392295 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "fa602743-5f6e-49d1-9734-29dffaa95ff5" + } + } + } + ] + } + ] + }, + { + "name": "limbic lobe", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "cingulate gyrus, frontal part", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Area p24c (pACC)", + "arealabel": "Area-p24c", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/QA7B-JM9", + "synonyms": [], + "rgb": [ + 241, + 164, + 195 + ], + "children": [ + { + "name": "Area p24c (pACC) - left hemisphere", + "rgb": [ + 241, + 164, + 195 + ], + "labelIndex": 232, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8144989, + 41168443, + 14314854 + ] + }, + { + "name": "Area p24c (pACC) - right hemisphere", + "rgb": [ + 241, + 164, + 195 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 232, + "children": [], + "status": "publicP", + "position": [ + 9856593, + 40780558, + 12002406 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e6507a3d-f2f8-4c17-84ff-0e7297e836a0" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 25 (sACC)", + "arealabel": "Area-25", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/51AM-WN4", + "synonyms": [], + "rgb": [ + 170, + 68, + 220 + ], + "children": [ + { + "name": "Area 25 (sACC) - left hemisphere", + "rgb": [ + 170, + 68, + 220 + ], + "labelIndex": 184, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -3522692, + 13560250, + -11860720 + ] + }, + { + "name": "Area 25 (sACC) - right hemisphere", + "rgb": [ + 170, + 68, + 220 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 184, + "children": [], + "status": "publicP", + "position": [ + 4564663, + 12954463, + -12174863 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9010ef76-accd-4308-9951-f37b6a10f42b" + } + }, + "relatedAreas": [] + }, + { + "name": "Area p24ab (pACC)", + "arealabel": "Area-p24ab", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/DHXC-2KN", + "synonyms": [], + "rgb": [ + 153, + 195, + 229 + ], + "children": [ + { + "name": "Area p24ab (pACC) - left hemisphere", + "rgb": [ + 153, + 195, + 229 + ], + "labelIndex": 231, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -2244059, + 38783168, + 6389109 + ] + }, + { + "name": "Area p24ab (pACC) - right hemisphere", + "rgb": [ + 153, + 195, + 229 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 231, + "children": [], + "status": "publicP", + "position": [ + 3429274, + 38385609, + 7809963 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "5dbb1035-487c-4f43-b551-ccadcf058340" + } + }, + "relatedAreas": [] + }, + { + "name": "Area s32 (sACC)", + "arealabel": "Area-s32", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/XTRR-172", + "synonyms": [], + "rgb": [ + 193, + 94, + 250 + ], + "children": [ + { + "name": "Area s32 (sACC) - left hemisphere", + "rgb": [ + 193, + 94, + 250 + ], + "labelIndex": 46, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -6738110, + 35256183, + -11765377 + ] + }, + { + "name": "Area s32 (sACC) - right hemisphere", + "rgb": [ + 193, + 94, + 250 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 46, + "children": [], + "status": "publicP", + "position": [ + 4307795, + 34460360, + -12141905 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "61b44255-ae3a-4a23-b1bc-7d303a48dbd3" + } + }, + "relatedAreas": [] + }, + { + "name": "Area 33 (ACC)", + "arealabel": "Area-33", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/X9QP-C6F", + "synonyms": [], + "rgb": [ + 51, + 57, + 245 + ], + "children": [ + { + "name": "Area 33 (ACC) - left hemisphere", + "rgb": [ + 51, + 57, + 245 + ], + "labelIndex": 39, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -4861218, + 14163048, + 15911877 + ] + }, + { + "name": "Area 33 (ACC) - right hemisphere", + "rgb": [ + 51, + 57, + 245 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 39, + "children": [], + "status": "publicP", + "position": [ + 5087045, + 15562321, + 16125051 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b83a3330-b80e-42a0-b8d2-82f38784aa1d" + } + }, + "relatedAreas": [] + }, + { + "name": "Area p32 (pACC)", + "arealabel": "Area-p32", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3JX0-7E5", + "synonyms": [], + "rgb": [ + 87, + 135, + 14 + ], + "children": [ + { + "name": "Area p32 (pACC) - left hemisphere", + "rgb": [ + 87, + 135, + 14 + ], + "labelIndex": 47, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -6122937, + 49256108, + 11929896 + ] + }, + { + "name": "Area p32 (pACC) - right hemisphere", + "rgb": [ + 87, + 135, + 14 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 47, + "children": [], + "status": "publicP", + "position": [ + 7759613, + 48520792, + 12436058 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "b09aaa77-f41b-4008-b8b9-f984b0417cf3" + } + }, + "relatedAreas": [] + }, + { + "name": "Area s24 (sACC)", + "arealabel": "Area-s24", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/HXWM-NRX", + "synonyms": [], + "rgb": [ + 133, + 34, + 201 + ], + "children": [ + { + "name": "Area s24 (sACC) - left hemisphere", + "rgb": [ + 133, + 34, + 201 + ], + "labelIndex": 183, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -3247887, + 24596479, + -9615493 + ] + }, + { + "name": "Area s24 (sACC) - right hemisphere", + "rgb": [ + 133, + 34, + 201 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 183, + "children": [], + "status": "publicP", + "position": [ + 3259899, + 23813535, + -9257019 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "d4ea6cc5-1e1d-4212-966f-81fed01eb648" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "hippocampal formation", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "HATA (Hippocampus)", + "arealabel": "HATA", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/M1XP-VSQ", + "synonyms": [], + "rgb": [ + 137, + 12, + 73 + ], + "children": [ + { + "name": "HATA (Hippocampus) - left hemisphere", + "rgb": [ + 137, + 12, + 73 + ], + "labelIndex": 68, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -13947917, + -9576389, + -18975694 + ] + }, + { + "name": "HATA (Hippocampus) - right hemisphere", + "rgb": [ + 137, + 12, + 73 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 68, + "children": [], + "status": "publicP", + "position": [ + 15080586, + -8358974, + -17871795 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "9ec4a423-70fa-43cd-90b3-fbc26a3cbc6c" + } + }, + "relatedAreas": [] + }, + { + "name": "Entorhinal Cortex", + "arealabel": "Entorhinal-Cortex", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/KNXY-B1Z", + "synonyms": [], + "rgb": [ + 35, + 159, + 214 + ], + "children": [ + { + "name": "Entorhinal Cortex - left hemisphere", + "rgb": [ + 35, + 159, + 214 + ], + "labelIndex": 60, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -20926052, + -6082765, + -33357509 + ] + }, + { + "name": "Entorhinal Cortex - right hemisphere", + "rgb": [ + 35, + 159, + 214 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 60, + "children": [], + "status": "publicP", + "position": [ + 22877203, + -3501469, + -32577556 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "030827d4-e0d1-4406-b71f-3f58dc2f9cca" + } + }, + "relatedAreas": [] + }, + { + "name": "CA (Hippocampus)", + "arealabel": "CA", + "status": "publicP", + "labelIndex": null, + "relatedAreas": [ + { + "name": "CA1 (Hippocampus)", + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "bfc0beb7-310c-4c57-b810-2adc464bd02c" + } + } + } + ], + "doi": "https://doi.org/10.25493/B85T-D88", + "synonyms": [], + "rgb": [ + 250, + 191, + 217 + ], + "children": [ + { + "name": "CA (Hippocampus) - left hemisphere", + "rgb": [ + 250, + 191, + 217 + ], + "labelIndex": 191, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -27476326, + -26068931, + -11082817 + ] + }, + { + "name": "CA (Hippocampus) - right hemisphere", + "rgb": [ + 250, + 191, + 217 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 191, + "children": [], + "status": "publicP", + "position": [ + 29426785, + -24801145, + -11142814 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "a0d14d3e-bc30-41cf-8b28-540067897f80" + } + } + }, + { + "name": "DG (Hippocampus)", + "arealabel": "DG", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/M8JP-XQT", + "synonyms": [], + "rgb": [ + 149, + 55, + 120 + ], + "children": [ + { + "name": "DG (Hippocampus) - left hemisphere", + "rgb": [ + 149, + 55, + 120 + ], + "labelIndex": 61, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -26946498, + -26708171, + -9589494 + ] + }, + { + "name": "DG (Hippocampus) - right hemisphere", + "rgb": [ + 149, + 55, + 120 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 61, + "children": [], + "status": "publicP", + "position": [ + 28316456, + -24674684, + -10596203 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "0bea7e03-bfb2-4907-9d45-db9071ce627d" + } + }, + "relatedAreas": [] + }, + { + "name": "Subiculum (Hippocampus)", + "arealabel": "Subiculum", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/QKJH-F45", + "synonyms": [], + "rgb": [ + 111, + 125, + 219 + ], + "children": [ + { + "name": "Subiculum (Hippocampus) - left hemisphere", + "rgb": [ + 111, + 125, + 219 + ], + "labelIndex": 192, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -20352171, + -24057796, + -16326997 + ] + }, + { + "name": "Subiculum (Hippocampus) - right hemisphere", + "rgb": [ + 111, + 125, + 219 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 192, + "children": [], + "status": "publicP", + "position": [ + 22543982, + -23195614, + -15923499 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "7e2dab4c-a140-440d-a322-c1679adef2d4" + } + }, + "relatedAreas": [] + } + ] + } + ] + } + ] + } + ] + }, + { + "name": "metencephalon", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "cerebellum", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "cerebellar nuclei", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "globose nucleus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Interposed Nucleus (Cerebellum)", + "arealabel": "Interposed-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/8PTB-JDH", + "synonyms": [], + "rgb": [ + 170, + 29, + 10 + ], + "children": [ + { + "name": "Interposed Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 170, + 29, + 10 + ], + "labelIndex": 251, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8457921, + -55262376, + -30235149 + ] + }, + { + "name": "Interposed Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 170, + 29, + 10 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 251, + "children": [], + "status": "publicP", + "position": [ + 7917989, + -54201058, + -31489418 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "85e7bb13-4b73-4f6f-8222-3adb7b800788" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "dentate nucleus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Dorsal Dentate Nucleus (Cerebellum)", + "arealabel": "Dorsal-Dentate-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/M5QG-SHH", + "synonyms": [], + "rgb": [ + 89, + 201, + 99 + ], + "children": [ + { + "name": "Dorsal Dentate Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 89, + 201, + 99 + ], + "labelIndex": 240, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -16612782, + -56036341, + -36064536 + ] + }, + { + "name": "Dorsal Dentate Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 89, + 201, + 99 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 240, + "children": [], + "status": "publicP", + "position": [ + 15388967, + -58303395, + -36586280 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "58095aef-da69-43d4-887c-009c095cecce" + } + }, + "relatedAreas": [] + }, + { + "name": "Ventral Dentate Nucleus (Cerebellum)", + "arealabel": "Ventral-Dentate-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/FQE5-5QR", + "synonyms": [], + "rgb": [ + 39, + 129, + 9 + ], + "children": [ + { + "name": "Ventral Dentate Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 39, + 129, + 9 + ], + "labelIndex": 241, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -13112867, + -56176072, + -29957111 + ] + }, + { + "name": "Ventral Dentate Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 39, + 129, + 9 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 241, + "children": [], + "status": "publicP", + "position": [ + 12107011, + -55974170, + -31385609 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "57282342-5a75-4e07-bcdc-2d368c517b71" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "fastigial nucleus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Fastigial Nucleus (Cerebellum)", + "arealabel": "Fastigial-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/3YJ9-S6G", + "synonyms": [], + "rgb": [ + 200, + 100, + 10 + ], + "children": [ + { + "name": "Fastigial Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 200, + 100, + 10 + ], + "labelIndex": 219, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -3828877, + -53149733, + -29013369 + ] + }, + { + "name": "Fastigial Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 200, + 100, + 10 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 219, + "children": [], + "status": "publicP", + "position": [ + 3011287, + -53069977, + -29040632 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "e8abfe3d-8b64-45c2-8853-314d82873273" + } + }, + "relatedAreas": [] + } + ] + }, + { + "name": "emboliform nucleus", + "status": null, + "labelIndex": null, + "synonyms": [], + "rgb": null, + "children": [ + { + "name": "Interposed Nucleus (Cerebellum)", + "arealabel": "Interposed-Nucleus", + "status": "publicP", + "labelIndex": null, + "doi": "https://doi.org/10.25493/8PTB-JDH", + "synonyms": [], + "rgb": [ + 170, + 29, + 10 + ], + "children": [ + { + "name": "Interposed Nucleus (Cerebellum) - left hemisphere", + "rgb": [ + 170, + 29, + 10 + ], + "labelIndex": 251, + "ngId": "jubrain colin v18 left", + "children": [], + "status": "publicP", + "position": [ + -8457921, + -55262376, + -30235149 + ] + }, + { + "name": "Interposed Nucleus (Cerebellum) - right hemisphere", + "rgb": [ + 170, + 29, + 10 + ], + "ngId": "jubrain colin v18 right", + "labelIndex": 251, + "children": [], + "status": "publicP", + "position": [ + 7917989, + -54201058, + -31489418 + ] + } + ], + "fullId": { + "kg": { + "kgSchema": "minds/core/parcellationregion/v1.0.0", + "kgId": "85e7bb13-4b73-4f6f-8222-3adb7b800788" + } + }, + "relatedAreas": [] + } + ] + } + ] + } + ] + } + ] + } + ] +} diff --git a/src/atlasViewer/atlasViewer.component.ts b/src/atlasViewer/atlasViewer.component.ts index 7b2659e3cfb08e3ecb498db89a99cb0e8502e6a0..3dcb365b3f578d52eb83be5b462fabdc23dfe487 100644 --- a/src/atlasViewer/atlasViewer.component.ts +++ b/src/atlasViewer/atlasViewer.component.ts @@ -41,6 +41,7 @@ import { FixedMouseContextualContainerDirective } from "src/util/directives/Fixe import { getViewer, isSame } from "src/util/fn"; import { NehubaContainer } from "../ui/nehubaContainer/nehubaContainer.component"; import { colorAnimation } from "./atlasViewer.animation" +import { MouseHoverDirective } from "src/util/directives/mouseOver.directive"; /** * TODO @@ -71,6 +72,7 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { @ViewChild(NehubaContainer) public nehubaContainer: NehubaContainer @ViewChild(FixedMouseContextualContainerDirective) public rClContextualMenu: FixedMouseContextualContainerDirective + @ViewChild(MouseHoverDirective) private mouseOverNehuba: MouseHoverDirective @ViewChild('mobileMenuTabs') public mobileMenuTabs: TabsetComponent @@ -99,6 +101,8 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { public onhoverSegments$: Observable<string[]> public onhoverLandmark$: Observable<{landmarkName: string, datasets: any} | null> + public onhoverLandmarkForFixed$: Observable<any> + private subscriptions: Subscription[] = [] /* handlers for nglayer */ @@ -119,8 +123,10 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { private pluginRegionSelectionEnabled$: Observable<boolean> private pluginRegionSelectionEnabled: boolean = false - private persistentStateNotifierTemplate$: Observable<string> - // private pluginRegionSelectionEnabled: boolean = false + public persistentStateNotifierTemplate$: Observable<string> + + private hoveringRegions = [] + public presentDatasetDialogRef: MatDialogRef<any> constructor( private store: Store<IavRootStoreInterface>, @@ -207,6 +213,7 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { distinctUntilChanged(isSame), ) + // TODO deprecate this.dedicatedView$ = this.store.pipe( select('viewerState'), filter(state => isDefined(state) && typeof state.dedicatedView !== 'undefined'), @@ -214,47 +221,18 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { distinctUntilChanged(), ) - this.onhoverLandmark$ = combineLatest( - this.store.pipe( - select('uiState'), - map(state => state.mouseOverLandmark), - ), - this.store.pipe( - select('dataStore'), - safeFilter('fetchedSpatialData'), - map(state => state.fetchedSpatialData), - ), - ).pipe( - map(([landmark, spatialDatas]) => { - if (landmark === null) { - return landmark - } - const idx = Number(landmark.replace('label=', '')) - if (isNaN(idx)) { - this.log.warn(`Landmark index could not be parsed as a number: ${landmark}`) - return { - landmarkName: idx, - } - } else { - return { - landmarkName: spatialDatas[idx].name, - } - } - }), - ) - // TODO temporary hack. even though the front octant is hidden, it seems if a mesh is present, hover will select the said mesh - this.onhoverSegments$ = combineLatest( - this.store.pipe( - select('uiState'), - select('mouseOverSegments'), - filter(v => !!v), - distinctUntilChanged((o, n) => o.length === n.length && n.every(segment => o.find(oSegment => oSegment.layer.name === segment.layer.name && oSegment.segment === segment.segment) ) ), - /* cannot filter by state, as the template expects a default value, or it will throw ExpressionChangedAfterItHasBeenCheckedError */ + this.onhoverSegments$ = this.store.pipe( + select('uiState'), + select('mouseOverSegments'), + filter(v => !!v), + distinctUntilChanged((o, n) => o.length === n.length && n.every(segment => o.find(oSegment => oSegment.layer.name === segment.layer.name && oSegment.segment === segment.segment) ) ), + /* cannot filter by state, as the template expects a default value, or it will throw ExpressionChangedAfterItHasBeenCheckedError */ - ), - this.onhoverLandmark$, ).pipe( + withLatestFrom( + this.onhoverLandmark$ || of(null) + ), map(([segments, onhoverLandmark]) => onhoverLandmark ? null : segments ), map(segments => { if (!segments) { return null } @@ -296,10 +274,11 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { } }), ) - - this.onhoverSegments$.subscribe(hr => { - this.hoveringRegions = hr - }) + this.subscriptions.push( + this.onhoverSegments$.subscribe(hr => { + this.hoveringRegions = hr + }) + ) } private selectedParcellation$: Observable<any> @@ -405,6 +384,10 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { this.rd.appendChild(document.head, prefecthMainBundle) } + this.onhoverLandmark$ = this.mouseOverNehuba.currentOnHoverObs$.pipe( + select('landmark') + ) + /** * Show Cookie disclaimer if not yet agreed */ @@ -437,21 +420,28 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { withLatestFrom(this.onhoverSegments$), map(([_flag, onhoverSegments]) => onhoverSegments || []), ) - } - private hoveringRegions = [] + this.onhoverLandmarkForFixed$ = this.rClContextualMenu.onShow.pipe( + withLatestFrom( + this.onhoverLandmark$ || of(null) + ), + map(([_flag, onhoverLandmark]) => onhoverLandmark) + ) + } public mouseDownNehuba(_event) { this.rClContextualMenu.hide() } public mouseClickNehuba(event) { - // if (this.mouseUpLeftPosition === event.pageX && this.mouseUpTopPosition === event.pageY) {} + if (!this.rClContextualMenu) { return } this.rClContextualMenu.mousePos = [ event.clientX, event.clientY, ] + + // TODO what if user is hovering a landmark? if (!this.pluginRegionSelectionEnabled) { this.rClContextualMenu.show() } else { diff --git a/src/atlasViewer/atlasViewer.constantService.service.ts b/src/atlasViewer/atlasViewer.constantService.service.ts index afe18ac8547250f0eda154d075a0e14753c1be37..0f4302f2eb877084511118620c525b0028172365 100644 --- a/src/atlasViewer/atlasViewer.constantService.service.ts +++ b/src/atlasViewer/atlasViewer.constantService.service.ts @@ -1,4 +1,4 @@ -import { HttpClient } from "@angular/common/http"; +import { HttpClient, HttpHeaders } from "@angular/common/http"; import { Injectable, OnDestroy } from "@angular/core"; import { select, Store } from "@ngrx/store"; import { merge, Observable, of, Subscription, throwError, fromEvent, forkJoin } from "rxjs"; @@ -121,18 +121,6 @@ export class AtlasViewerConstantsServices implements OnDestroy { }), ) - /* to be provided by KG in future */ - public templateUrlsPr: Promise<string[]> = new Promise((resolve, reject) => { - fetch(`${this.backendUrl}templates`, this.getFetchOption()) - .then(res => res.json()) - .then(arr => { - this.templateUrls = arr - return arr - }) - .then(resolve) - .catch(reject) - }) - public templateUrls = Array(100) /* to be provided by KG in future */ @@ -221,6 +209,12 @@ Interactive atlas viewer requires **webgl2.0**, and the \`EXT_color_buffer_float return url.toString() } + public getHttpHeader(): HttpHeaders { + const header = new HttpHeaders() + header.set('referrer', this.getScopedReferer()) + return header + } + public getFetchOption(): RequestInit { return { referrer: this.getScopedReferer(), diff --git a/src/atlasViewer/atlasViewer.pluginService.service.ts b/src/atlasViewer/atlasViewer.pluginService.service.ts index 2dbed3b36fe35d3bae5eb28e165167b77fa8d860..3c02c791f16e49ca05e918594a2f77249d20ed87 100644 --- a/src/atlasViewer/atlasViewer.pluginService.service.ts +++ b/src/atlasViewer/atlasViewer.pluginService.service.ts @@ -1,6 +1,6 @@ import { HttpClient } from '@angular/common/http' import { ComponentFactory, ComponentFactoryResolver, Injectable, NgZone, ViewContainerRef } from "@angular/core"; -import { ACTION_TYPES as PLUGIN_STATE_ACTION_TYPES } from "src/services/state/pluginState.store"; +import { PLUGINSTORE_ACTION_TYPES } from "src/services/state/pluginState.store"; import { IavRootStoreInterface, isDefined } from 'src/services/stateStore.service' import { AtlasViewerAPIServices } from "./atlasViewer.apiService.service"; import { PluginUnit } from "./pluginUnit/pluginUnit.component"; @@ -231,7 +231,7 @@ export class PluginServices { : null handler.setInitManifestUrl = (url) => this.store.dispatch({ - type : PLUGIN_STATE_ACTION_TYPES.SET_INIT_PLUGIN, + type : PLUGINSTORE_ACTION_TYPES.SET_INIT_PLUGIN, manifest : { name : plugin.name, initManifestUrl : url, diff --git a/src/atlasViewer/atlasViewer.style.css b/src/atlasViewer/atlasViewer.style.css index 1782ffbc74ce60ba5ae6cfe459947a26df9cf47b..3a18311b9864ca06db18b3f15e58e74534222216 100644 --- a/src/atlasViewer/atlasViewer.style.css +++ b/src/atlasViewer/atlasViewer.style.css @@ -65,6 +65,7 @@ mat-sidenav { margin: 40px 0 0 5px; } +landmark-ui, region-menu { display:inline-block; diff --git a/src/atlasViewer/atlasViewer.template.html b/src/atlasViewer/atlasViewer.template.html index 96b10dffc10f27312e86939e481bada9e1215bba..e9fd9570375c524f81e52552e80794161e40c668 100644 --- a/src/atlasViewer/atlasViewer.template.html +++ b/src/atlasViewer/atlasViewer.template.html @@ -41,8 +41,8 @@ <!-- atlas template --> <ng-template #viewerBody> <div class="atlas-container" (drag-drop)="localFileService.handleFileDrop($event)"> - - <ui-nehuba-container iav-mouse-hover + <ui-nehuba-container + iav-mouse-hover #iavMouseHoverEl="iavMouseHover" [currentOnHoverObs$]="iavMouseHoverEl.currentOnHoverObs$" [currentOnHover]="iavMouseHoverEl.currentOnHoverObs$ | async" @@ -130,26 +130,28 @@ <div floatingMouseContextualContainerDirective> - <div *ngIf="!ismobile" + <div *ngIf="!ismobile && !presentDatasetDialogRef" class="d-inline-block" iav-mouse-hover - #iavMouseHoverConetxtualBlock="iavMouseHover" + #iavMouseHoverContextualBlock="iavMouseHover" contextualBlock> <ng-container - *ngFor="let labelText of iavMouseHoverConetxtualBlock.currentOnHoverObs$ | async | mouseOverTextPipe : selectedParcellation"> + *ngFor="let labelText of iavMouseHoverContextualBlock.currentOnHoverObs$ | async | mouseOverTextPipe : selectedParcellation"> <mat-list dense> <mat-list-item class="h-auto"> - <mat-icon [fontSet]="(labelText.label | mouseOverIconPipe).fontSet" - [fontIcon]="(labelText.label | mouseOverIconPipe).fontIcon" mat-list-icon> + <mat-icon + [fontSet]="(labelText.label | mouseOverIconPipe).fontSet" + [fontIcon]="(labelText.label | mouseOverIconPipe).fontIcon" + mat-list-icon> </mat-icon> - <div matLine *ngFor="let text of labelText.text" [innerHTML]="text"> - </div> + <div matLine *ngFor="let text of labelText.text" [innerHTML]="text"></div> + </mat-list-item> </mat-list> </ng-container> @@ -157,25 +159,42 @@ <!-- TODO Potentially implementing plugin contextual info --> </div> - <div fixedMouseContextualContainerDirective> + <div fixedMouseContextualContainerDirective + #fixedContainer="iavFixedMouseCtxContainer"> + + <!-- on click segment menu --> <ng-container *ngIf="(onhoverSegmentsForFixed$ | async) as onHoverSegments"> <ng-container *ngFor="let onHoverRegion of onHoverSegments; let first = first"> <!-- ToDo it should change - we should get information about connectivity existence from API--> <div class="d-flex flex-column"> <region-menu - class="pe-all" - [region]="onHoverRegion" - [isSelected]="selectedRegions$ | async | includes : onHoverRegion : compareFn" - [hasConnectivity]="selectedParcellation - && selectedParcellation.hasAdditionalViewMode - && selectedParcellation.hasAdditionalViewMode.includes('connectivity')" - (closeRegionMenu)="rClContextualMenu.hide()"> + class="pe-all" + [region]="onHoverRegion" + [isSelected]="selectedRegions$ | async | includes : onHoverRegion : compareFn" + [hasConnectivity]="selectedParcellation + && selectedParcellation.hasAdditionalViewMode + && selectedParcellation.hasAdditionalViewMode.includes('connectivity')" + (closeRegionMenu)="rClContextualMenu.hide()"> </region-menu> </div> </ng-container> </ng-container> + + <!-- on click landmark menu --> + <ng-container *ngIf="onhoverLandmarkForFixed$ | async as onHoverLandmark"> + + <landmark-ui + class="pe-all" + (relayout)="fixedContainer.recalculatePosition()" + [fullId]="onHoverLandmark.fullId" + [name]="onHoverLandmark.name" + [datasets]="onHoverLandmark.dataset"> + + </landmark-ui> + </ng-container> </div> + </layout-floating-container> <!-- required for manufacturing plugin templates --> diff --git a/src/index.html b/src/index.html index 51f07004e81a25768bbaa6b38fe1458a05318ffc..c70a7c418c63fe94907af7032a87b579604c21ea 100644 --- a/src/index.html +++ b/src/index.html @@ -13,6 +13,23 @@ <link rel="stylesheet" href="version.css"> <title>Interactive Atlas Viewer</title> + <script type="application/ld+json"> + { + "@context": "http://schema.org", + "@type": "Map", + "url": "https://interactive-viewer.apps.hbp.eu", + "name": "Human Brain Project Interactive Atlas Viewer", + "reference space": { + "@type": "Place", + "parcellation atlas": { + "@type": "Place", + "regions": [{ + "@type": "Place" + }] + } + } + } + </script> </head> <body> <atlas-viewer> diff --git a/src/main-common.ts b/src/main-common.ts index 14a3447d5a1c147f247771021dd3f613c3252af3..77b3a59dfe1a4bd9d76a4dd18ad718a9f95e30f8 100644 --- a/src/main-common.ts +++ b/src/main-common.ts @@ -2,7 +2,8 @@ import 'zone.js' import 'third_party/testSafari.js' import { enableProdMode } from '@angular/core'; -import { defineCustomElements } from 'hbp-connectivity-component/dist/loader' +import * as ConnectivityComponent from 'hbp-connectivity-component/dist/loader' +import * as PreviewDatasetComponent from 'kg-dataset-previewer/loader' import { platformBrowserDynamic } from '@angular/platform-browser-dynamic' import { MainModule } from './main.module'; @@ -16,4 +17,5 @@ requireAll(require.context(`./plugin_examples`, true)) platformBrowserDynamic().bootstrapModule(MainModule) -defineCustomElements(window) +PreviewDatasetComponent.defineCustomElements(window) +ConnectivityComponent.defineCustomElements(window) \ No newline at end of file diff --git a/src/main.module.ts b/src/main.module.ts index 096027f590d93de7afb12d7a1d8311744be0f2bd..d0e25476f263d78df2f028e2f6352d291372f8a5 100644 --- a/src/main.module.ts +++ b/src/main.module.ts @@ -79,7 +79,7 @@ import {TemplateCoordinatesTransformation} from "src/services/templateCoordinate NgViewerUseEffect, PluginServiceUseEffect, AtlasViewerHistoryUseEffect, - UiStateUseEffect, + UiStateUseEffect ]), StoreModule.forRoot({ pluginState, diff --git a/src/res/css/extra_styles.css b/src/res/css/extra_styles.css index 0ff2cabc49fc76b7c7bbed5c19ac95d6c91f7eda..0639b9179922f9bcb336ed1fa5611d91939bea53 100644 --- a/src/res/css/extra_styles.css +++ b/src/res/css/extra_styles.css @@ -697,4 +697,22 @@ body::after .o-0 { opacity: 0.0!important; -} \ No newline at end of file +} + +kg-dataset-previewer > img +{ + max-width: 100%; + width: 100%; +} + +/* + TODO, this really should be in searchSideNav.style.css. But karma tests does not seem to like to include style.css + figure out why +*/ +/* exactly 1.5 line height */ + +.h-117px +{ + min-height:117px!important; + flex-basis: 117px!important; +} diff --git a/src/res/ext/MNI152.json b/src/res/ext/MNI152.json index cc88e19c20b47c922116ffdb97b56756cd6b8f91..679909551745b1a7170ceecd416154fa0d96a960 100644 --- a/src/res/ext/MNI152.json +++ b/src/res/ext/MNI152.json @@ -1,5 +1,6 @@ { "name": "MNI 152 ICBM 2009c Nonlinear Asymmetric", + "fullId": "minds/core/referencespace/v1.0.0/dafcffc5-4826-4bf1-8ff6-46b8a31ff8e2", "type": "template", "species": "Human", "useTheme": "dark", diff --git a/src/res/ext/bigbrain.json b/src/res/ext/bigbrain.json index abff253c1bcfe71b4fc29561fb23804a84882302..7ac96b80533d17e1a521a62a9b0465c599c03dfe 100644 --- a/src/res/ext/bigbrain.json +++ b/src/res/ext/bigbrain.json @@ -1,5 +1,6 @@ { "name": "Big Brain (Histology)", + "fullId": "minds/core/referencespace/v1.0.0/a1655b99-82f1-420f-a3c2-fe80fd4c8588", "type": "template", "species": "Human", "useTheme": "light", diff --git a/src/res/ext/colin.json b/src/res/ext/colin.json index c9a3d19638ccd97efbd20da73e12547e6ce87a5a..d80629a3b3dedf68cf0958d94ce55353ac0cbde0 100644 --- a/src/res/ext/colin.json +++ b/src/res/ext/colin.json @@ -1,5 +1,6 @@ { "name": "MNI Colin 27", + "fullId": "minds/core/referencespace/v1.0.0/7f39f7be-445b-47c0-9791-e971c0b6d992", "type": "template", "species": "Human", "useTheme": "dark", diff --git a/src/res/populateBigBrainRelatedAreas.js b/src/res/populateBigBrainRelatedAreas.js new file mode 100644 index 0000000000000000000000000000000000000000..1243d1cf8f86410f2120ae22fee0d2865bf97474 --- /dev/null +++ b/src/res/populateBigBrainRelatedAreas.js @@ -0,0 +1,7 @@ +const fs = require('fs') +const path = require('path') + +const bigbrain = fs.readFileSync(path.join(__dirname, './ext/bigbrain.json'), 'utf-8') +const colin = fs.readFileSync(path.join(__dirname, './ext/mni152.json'), 'utf-8') + +const bigbrainJson = JSON.parse(bigbrain) diff --git a/src/services/effect/pluginUseEffect.ts b/src/services/effect/pluginUseEffect.ts index 7298bdb2f818025146d3cb9151ddd3581624af96..4cd7964b9b8dc525ef38af4abe517b5ba9b2477a 100644 --- a/src/services/effect/pluginUseEffect.ts +++ b/src/services/effect/pluginUseEffect.ts @@ -5,7 +5,7 @@ import { Observable } from "rxjs" import { filter, map, startWith } from "rxjs/operators" import { AtlasViewerConstantsServices } from "src/atlasViewer/atlasViewer.constantService.service" import { PluginServices } from "src/atlasViewer/atlasViewer.pluginService.service" -import { ACTION_TYPES as PLUGINSTORE_ACTION_TYPES, PLUGINSTORE_CONSTANTS } from 'src/services/state/pluginState.store' +import { PLUGINSTORE_ACTION_TYPES, PLUGINSTORE_CONSTANTS } from 'src/services/state/pluginState.store' import { LoggingService } from "../logging.service" import { IavRootStoreInterface } from "../stateStore.service" diff --git a/src/services/localFile.service.ts b/src/services/localFile.service.ts index 2d49e4919759f9b1cee303c4b04f527825c058a9..d4386edeca620ea7fc2ded16cd54623a265b6c97 100644 --- a/src/services/localFile.service.ts +++ b/src/services/localFile.service.ts @@ -3,6 +3,7 @@ import { Store } from "@ngrx/store"; import { KgSingleDatasetService } from "src/ui/databrowserModule/kgSingleDatasetService.service"; import { SNACKBAR_MESSAGE } from "./state/uiState.store"; import { IavRootStoreInterface } from "./stateStore.service"; +import { DATASETS_ACTIONS_TYPES } from "./state/dataStore.store"; /** * experimental service handling local user files such as nifti and gifti @@ -70,8 +71,15 @@ export class LocalFileService { URL.revokeObjectURL(this.niiUrl) } this.niiUrl = URL.createObjectURL(file) - this.singleDsService.showNewNgLayer({ - url: this.niiUrl, + + this.store.dispatch({ + type: DATASETS_ACTIONS_TYPES.PREVIEW_DATASET, + payload: { + file: { + mimetype: 'application/json', + url: this.niiUrl + } + } }) this.showLocalWarning() diff --git a/src/services/state/dataStore.store.ts b/src/services/state/dataStore.store.ts index 209bddbc53abe7b8c8291e4a1e24ab24bbf0f3fb..b20e8014b4ced68235888910cc51d5586cb8b0d3 100644 --- a/src/services/state/dataStore.store.ts +++ b/src/services/state/dataStore.store.ts @@ -4,16 +4,23 @@ import { Action } from '@ngrx/store' * TODO merge with databrowser.usereffect.ts */ +interface DatasetPreview { + dataset?: IDataEntry + file: Partial<ViewerPreviewFile>&{filename: string} +} + export interface IStateInterface { fetchedDataEntries: IDataEntry[] favDataEntries: IDataEntry[] fetchedSpatialData: IDataEntry[] + datasetPreviews: DatasetPreview[] } export const defaultState = { fetchedDataEntries: [], favDataEntries: [], fetchedSpatialData: [], + datasetPreviews: [], } export const getStateStore = ({ state: state = defaultState } = {}) => (prevState: IStateInterface = state, action: Partial<IActionInterface>) => { @@ -38,6 +45,18 @@ export const getStateStore = ({ state: state = defaultState } = {}) => (prevStat favDataEntries, } } + case ACTION_TYPES.PREVIEW_DATASET: { + + const { payload = {}} = action + const { file , dataset } = payload + return { + ...prevState, + datasetPreviews: prevState.datasetPreviews.concat({ + dataset, + file + }) + } + } default: return prevState } } @@ -59,6 +78,7 @@ export interface IActionInterface extends Action { favDataEntries: IDataEntry[] fetchedDataEntries: IDataEntry[] fetchedSpatialData: IDataEntry[] + payload?: any } export const FETCHED_DATAENTRIES = 'FETCHED_DATAENTRIES' @@ -167,6 +187,10 @@ export interface ViewerPreviewFile { name: string filename: string mimetype: string + referenceSpaces: { + name: string + fullId: string + }[] url?: string data?: any position?: any @@ -181,6 +205,7 @@ const ACTION_TYPES = { UPDATE_FAV_DATASETS: `UPDATE_FAV_DATASETS`, UNFAV_DATASET: 'UNFAV_DATASET', TOGGLE_FAV_DATASET: 'TOGGLE_FAV_DATASET', + PREVIEW_DATASET: 'PREVIEW_DATASET', } export const DATASETS_ACTIONS_TYPES = ACTION_TYPES diff --git a/src/services/state/pluginState.store.ts b/src/services/state/pluginState.store.ts index 030806e8694ddeeaea791b9d7934f0d3de712316..de5b76754c0ea0af759923d62610ce30a3acf7ef 100644 --- a/src/services/state/pluginState.store.ts +++ b/src/services/state/pluginState.store.ts @@ -16,7 +16,7 @@ export interface ActionInterface extends Action { } } -export const ACTION_TYPES = { +export const PLUGINSTORE_ACTION_TYPES = { SET_INIT_PLUGIN: `SET_INIT_PLUGIN`, CLEAR_INIT_PLUGIN: 'CLEAR_INIT_PLUGIN', } @@ -27,7 +27,7 @@ export const PLUGINSTORE_CONSTANTS = { export const getStateStore = ({ state = defaultState } = {}) => (prevState: StateInterface = state, action: ActionInterface): StateInterface => { switch (action.type) { - case ACTION_TYPES.SET_INIT_PLUGIN: { + case PLUGINSTORE_ACTION_TYPES.SET_INIT_PLUGIN: { const newMap = new Map(prevState.initManifests ) // reserved source label for init manifest @@ -37,7 +37,7 @@ export const getStateStore = ({ state = defaultState } = {}) => (prevState: Stat initManifests: Array.from(newMap), } } - case ACTION_TYPES.CLEAR_INIT_PLUGIN: { + case PLUGINSTORE_ACTION_TYPES.CLEAR_INIT_PLUGIN: { const { initManifests } = prevState const newManifests = initManifests.filter(([source]) => source !== PLUGINSTORE_CONSTANTS.INIT_MANIFEST_SRC) return { diff --git a/src/services/state/uiState.store.ts b/src/services/state/uiState.store.ts index 18c29e926e90b85da53013c154f6c0ff4373f38a..af9ad54ddb6dbe866b1ef7ec948938389e9ee3cd 100644 --- a/src/services/state/uiState.store.ts +++ b/src/services/state/uiState.store.ts @@ -20,7 +20,6 @@ export const defaultState: StateInterface = { sidePanelExploreCurrentViewIsOpen: false, snackbarMessage: null, - bottomSheetTemplate: null, pluginRegionSelectionEnabled: false, diff --git a/src/services/state/userConfigState.store.ts b/src/services/state/userConfigState.store.ts index da025161c078f6b5d6c3af8e0f620fa0d00f6124..db913779d0148b5f7bbc8bddbc09dfe5431de1cd 100644 --- a/src/services/state/userConfigState.store.ts +++ b/src/services/state/userConfigState.store.ts @@ -12,7 +12,7 @@ import { NEWVIEWER, SELECT_PARCELLATION, SELECT_REGIONS } from "./viewerState.st // TODO file bug and reverse import * as viewerConfigStore from './viewerConfig.store' -const SET_MOBILE_UI = viewerConfigStore.ACTION_TYPES.SET_MOBILE_UI +const SET_MOBILE_UI = viewerConfigStore.VIEWER_CONFIG_ACTION_TYPES.SET_MOBILE_UI export interface StateInterface { savedRegionsSelection: RegionSelection[] diff --git a/src/services/state/viewerConfig.store.ts b/src/services/state/viewerConfig.store.ts index b3f32ec8b264eef4785537830284a74d21de5fb1..5df3cfdcba9ebfcfea66f43a5787122729a562da 100644 --- a/src/services/state/viewerConfig.store.ts +++ b/src/services/state/viewerConfig.store.ts @@ -22,7 +22,7 @@ export const CONFIG_CONSTANTS = { defaultAnimation: true, } -export const ACTION_TYPES = { +export const VIEWER_CONFIG_ACTION_TYPES = { SET_ANIMATION: `SET_ANIMATION`, UPDATE_CONFIG: `UPDATE_CONFIG`, CHANGE_GPU_LIMIT: `CHANGE_GPU_LIMIT`, @@ -63,7 +63,7 @@ export const defaultState: StateInterface = { export const getStateStore = ({ state = defaultState } = {}) => (prevState: StateInterface = state, action: ViewerConfigurationAction) => { switch (action.type) { - case ACTION_TYPES.SET_MOBILE_UI: { + case VIEWER_CONFIG_ACTION_TYPES.SET_MOBILE_UI: { const { payload } = action const { useMobileUI } = payload return { @@ -71,12 +71,12 @@ export const getStateStore = ({ state = defaultState } = {}) => (prevState: Stat useMobileUI, } } - case ACTION_TYPES.UPDATE_CONFIG: + case VIEWER_CONFIG_ACTION_TYPES.UPDATE_CONFIG: return { ...prevState, ...action.config, } - case ACTION_TYPES.CHANGE_GPU_LIMIT: { + case VIEWER_CONFIG_ACTION_TYPES.CHANGE_GPU_LIMIT: { const newGpuLimit = Math.min( CONFIG_CONSTANTS.gpuLimitMax, Math.max( diff --git a/src/ui/config/config.component.ts b/src/ui/config/config.component.ts index d734ed7320c932a2afef6eea91b5dddcda784829..221a79337d487e24eb863c5c9d9fc27e7bd85bba 100644 --- a/src/ui/config/config.component.ts +++ b/src/ui/config/config.component.ts @@ -5,7 +5,7 @@ import { combineLatest, Observable, Subscription } from 'rxjs'; import { debounceTime, distinctUntilChanged, map, startWith } from 'rxjs/operators'; import { AtlasViewerConstantsServices } from 'src/atlasViewer/atlasViewer.constantService.service'; import { NG_VIEWER_ACTION_TYPES, SUPPORTED_PANEL_MODES } from 'src/services/state/ngViewerState.store'; -import { ACTION_TYPES as VIEWER_CONFIG_ACTION_TYPES, StateInterface as ViewerConfiguration } from 'src/services/state/viewerConfig.store' +import { VIEWER_CONFIG_ACTION_TYPES, StateInterface as ViewerConfiguration } from 'src/services/state/viewerConfig.store' import { IavRootStoreInterface } from 'src/services/stateStore.service'; import { isIdentityQuat } from '../nehubaContainer/util'; diff --git a/src/ui/databrowserModule/databrowser.module.ts b/src/ui/databrowserModule/databrowser.module.ts index ca573d51709bca4b6a550a9955ad3ac242baabf6..0bd7944d6a3d7c258113146be6e3ac09b49d3192 100644 --- a/src/ui/databrowserModule/databrowser.module.ts +++ b/src/ui/databrowserModule/databrowser.module.ts @@ -1,23 +1,15 @@ import { CommonModule } from "@angular/common"; -import { NgModule } from "@angular/core"; +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from "@angular/core"; import { FormsModule } from "@angular/forms"; -import { Chart } from 'chart.js' -import { ChartsModule } from "ng2-charts"; import { PopoverModule } from "ngx-bootstrap/popover"; import { TooltipModule } from "ngx-bootstrap/tooltip"; -import { AtlasViewerConstantsServices } from "src/atlasViewer/atlasViewer.constantService.service"; import { ComponentsModule } from "src/components/components.module"; import { AngularMaterialModule } from 'src/ui/sharedModules/angularMaterial.module' import { DoiParserPipe } from "src/util/pipes/doiPipe.pipe"; import { UtilModule } from "src/util/util.module"; import { DataBrowser } from "./databrowser/databrowser.component"; -import { LineChart } from "./fileviewer/chart/line/line.chart.component"; -import { RadarChart } from "./fileviewer/chart/radar/radar.chart.component"; -import { DedicatedViewer } from "./fileviewer/dedicated/dedicated.component"; -import { FileViewer } from "./fileviewer/fileviewer.component"; import { KgSingleDatasetService } from "./kgSingleDatasetService.service" import { ModalityPicker } from "./modalityPicker/modalityPicker.component"; -import { PreviewComponent } from "./preview/preview.component"; import { SingleDatasetView } from './singleDataset/detailedView/singleDataset.component' import { AggregateArrayIntoRootPipe } from "./util/aggregateArrayIntoRoot.pipe"; import { CopyPropertyPipe } from "./util/copyProperty.pipe"; @@ -34,10 +26,11 @@ import { SingleDatasetListView } from "./singleDataset/listView/singleDatasetLis import { AppendFilerModalityPipe } from "./util/appendFilterModality.pipe"; import { GetKgSchemaIdFromFullIdPipe } from "./util/getKgSchemaIdFromFullId.pipe"; import { ResetCounterModalityPipe } from "./util/resetCounterModality.pipe"; +import { PreviewFileVisibleInSelectedReferenceTemplatePipe } from "./util/previewFileDisabledByReferenceSpace.pipe"; +import { DatasetPreviewList, UnavailableTooltip } from "./singleDataset/datasetPreviews/datasetPreviewsList/datasetPreviewList.component"; @NgModule({ imports: [ - ChartsModule, CommonModule, ComponentsModule, ScrollingModule, @@ -50,13 +43,9 @@ import { ResetCounterModalityPipe } from "./util/resetCounterModality.pipe"; declarations: [ DataBrowser, ModalityPicker, - PreviewComponent, - FileViewer, - RadarChart, - LineChart, - DedicatedViewer, SingleDatasetView, SingleDatasetListView, + DatasetPreviewList, /** * pipes @@ -74,94 +63,31 @@ import { ResetCounterModalityPipe } from "./util/resetCounterModality.pipe"; PreviewFileTypePipe, AppendFilerModalityPipe, ResetCounterModalityPipe, + PreviewFileVisibleInSelectedReferenceTemplatePipe, + UnavailableTooltip, ], exports: [ DataBrowser, SingleDatasetView, SingleDatasetListView, - PreviewComponent, ModalityPicker, FilterDataEntriesbyMethods, - FileViewer, GetKgSchemaIdFromFullIdPipe, ], entryComponents: [ DataBrowser, - FileViewer, SingleDatasetView, ], providers: [ KgSingleDatasetService, ], + schemas: [ + CUSTOM_ELEMENTS_SCHEMA + ] /** * shouldn't need bootstrap, so no need for browser module */ }) export class DatabrowserModule { - constructor( - constantsService: AtlasViewerConstantsServices, - ) { - /** - * Because there is no easy way to display standard deviation natively, use a plugin - * */ - Chart.pluginService.register({ - - /* patching background color fill, so saved images do not look completely white */ - beforeDraw: (chart) => { - const ctx = chart.ctx as CanvasRenderingContext2D; - ctx.fillStyle = constantsService.darktheme ? - `rgba(50,50,50,0.8)` : - `rgba(255,255,255,0.8)` - - if (chart.canvas) { ctx.fillRect(0, 0, chart.canvas.width, chart.canvas.height) } - - }, - - /* patching standard deviation for polar (potentially also line/bar etc) graph */ - afterInit: (chart) => { - if (chart.config.options && chart.config.options.tooltips) { - - chart.config.options.tooltips.callbacks = { - label(tooltipItem, data) { - let sdValue - if (data.datasets && typeof tooltipItem.datasetIndex != 'undefined' && data.datasets[tooltipItem.datasetIndex].label) { - const sdLabel = data.datasets[tooltipItem.datasetIndex].label + '_sd' - const sd = data.datasets.find(dataset => typeof dataset.label != 'undefined' && dataset.label == sdLabel) - if (sd && sd.data && typeof tooltipItem.index != 'undefined' && typeof tooltipItem.yLabel != 'undefined') { sdValue = Number(sd.data[tooltipItem.index]) - Number(tooltipItem.yLabel) } - } - return `${tooltipItem.yLabel} ${sdValue ? '(' + sdValue + ')' : ''}` - }, - } - } - if (chart.data.datasets) { - chart.data.datasets = chart.data.datasets - .map(dataset => { - if (dataset.label && /_sd$/.test(dataset.label)) { - const originalDS = chart.data.datasets.find(baseDS => typeof baseDS.label !== 'undefined' && (baseDS.label == dataset.label.replace(/_sd$/, ''))) - if (originalDS) { - return Object.assign({}, dataset, { - data: (originalDS.data as number[]).map((datapoint, idx) => (Number(datapoint) + Number((dataset.data as number[])[idx]))), - ... constantsService.chartSdStyle, - }) - } else { - return dataset - } - } else if (dataset.label) { - const sdDS = chart.data.datasets.find(sdDS => typeof sdDS.label !== 'undefined' && (sdDS.label == dataset.label + '_sd')) - if (sdDS) { - return Object.assign({}, dataset, { - ...constantsService.chartBaseStyle, - }) - } else { - return dataset - } - } else { - return dataset - } - }) - } - }, - }) - } } diff --git a/src/ui/databrowserModule/databrowser.service.ts b/src/ui/databrowserModule/databrowser.service.ts index 533d5c7d09112178813064591c76e6bd8155cd91..b9e069839ecd0308f483643a3a9b4ab559688641 100644 --- a/src/ui/databrowserModule/databrowser.service.ts +++ b/src/ui/databrowserModule/databrowser.service.ts @@ -224,6 +224,7 @@ export class DatabrowserService implements OnDestroy { }) } + // TODO deprecate public fetchPreviewData(datasetName: string) { const encodedDatasetName = encodeURIComponent(datasetName) return new Promise((resolve, reject) => { @@ -246,19 +247,25 @@ export class DatabrowserService implements OnDestroy { public fetchingFlag: boolean = false private mostRecentFetchToken: any - private lowLevelQuery(templateName: string, parcellationName: string) { + private lowLevelQuery(templateName: string, parcellationName: string): Promise<IDataEntry[]> { const encodedTemplateName = encodeURIComponent(templateName) const encodedParcellationName = encodeURIComponent(parcellationName) - return fetch(`${this.constantService.backendUrl}datasets//templateNameParcellationName/${encodedTemplateName}/${encodedParcellationName}`, this.constantService.getFetchOption()) - .then(res => res.json()) - /** - * remove duplicates - */ - .then(arr => arr.reduce((acc, item) => { - const newMap = new Map(acc) - return newMap.set(item.name, item) - }, new Map())) - .then(map => Array.from(map.values() as IDataEntry[])) + + return this.http.get( + `${this.constantService.backendUrl}datasets//templateNameParcellationName/${encodedTemplateName}/${encodedParcellationName}`, + { + headers: this.constantService.getHttpHeader(), + responseType: 'json' + } + ).pipe( + map((arr: any[]) => { + const map = arr.reduce((acc, item) => { + const newMap = new Map(acc) + return newMap.set(item.name, item) + }, new Map()) + return Array.from(map.values() as IDataEntry[]) + }) + ).toPromise() } private fetchData(templateName: string, parcellationName: string) { diff --git a/src/ui/databrowserModule/databrowser.useEffect.ts b/src/ui/databrowserModule/databrowser.useEffect.ts index b448910731a83aa3780277850e35c76574172b40..4529a75447575ff32e38ae13658f779b3240b128 100644 --- a/src/ui/databrowserModule/databrowser.useEffect.ts +++ b/src/ui/databrowserModule/databrowser.useEffect.ts @@ -1,14 +1,18 @@ -import { Injectable, OnDestroy } from "@angular/core"; +import { Injectable, OnDestroy, TemplateRef } from "@angular/core"; import { Actions, Effect, ofType } from "@ngrx/effects"; import { select, Store } from "@ngrx/store"; import { from, merge, Observable, of, Subscription } from "rxjs"; -import { catchError, filter, map, scan, switchMap, withLatestFrom } from "rxjs/operators"; +import { catchError, filter, map, scan, switchMap, withLatestFrom, mapTo, shareReplay } from "rxjs/operators"; import { LoggingService } from "src/services/logging.service"; -import { DATASETS_ACTIONS_TYPES, IDataEntry } from "src/services/state/dataStore.store"; -import { IavRootStoreInterface } from "src/services/stateStore.service"; +import { DATASETS_ACTIONS_TYPES, IDataEntry, ViewerPreviewFile } from "src/services/state/dataStore.store"; +import { IavRootStoreInterface, ADD_NG_LAYER, CHANGE_NAVIGATION } from "src/services/stateStore.service"; import { LOCAL_STORAGE_CONST } from "src/util/constants"; import { getIdFromDataEntry } from "./databrowser.service"; import { KgSingleDatasetService } from "./kgSingleDatasetService.service"; +import { determinePreviewFileType, PREVIEW_FILE_TYPES } from "./preview/previewFileIcon.pipe"; +import { GLSL_COLORMAP_JET } from "src/atlasViewer/atlasViewer.constantService.service"; +import { SHOW_BOTTOM_SHEET } from "src/services/state/uiState.store"; +import { MatSnackBar, MatDialog } from "@angular/material"; const savedFav$ = of(window.localStorage.getItem(LOCAL_STORAGE_CONST.FAV_DATASET)).pipe( map(string => JSON.parse(string)), @@ -33,12 +37,80 @@ export class DataBrowserUseEffect implements OnDestroy { private subscriptions: Subscription[] = [] + // ng layer (currently only nifti file) needs to be previewed + @Effect() + previewNgLayer$: Observable<any> + + // when bottom sheet should be hidden (currently only when ng layer is visualised) + @Effect() + hideBottomSheet$: Observable<any> + + // when the preview effect has a ROI defined + @Effect() + navigateToPreviewPosition$: Observable<any> + + public previewDatasetFile$: Observable<ViewerPreviewFile> + constructor( private store$: Store<IavRootStoreInterface>, private actions$: Actions<any>, private kgSingleDatasetService: KgSingleDatasetService, private log: LoggingService, + private snackbar: MatSnackBar ) { + + this.previewDatasetFile$ = actions$.pipe( + ofType(DATASETS_ACTIONS_TYPES.PREVIEW_DATASET), + map(actionBody => { + const { payload = {} } = actionBody as any + const { file = null } = payload as { file: ViewerPreviewFile, dataset: IDataEntry } + return file + }), + shareReplay(1) + ) + + this.navigateToPreviewPosition$ = this.previewDatasetFile$.pipe( + filter(({ position }) => !!position), + switchMap(({ position }) => + this.snackbar.open(`Postion of interest found.`, 'Go there', { + duration: 5000, + }).afterDismissed().pipe( + filter(({ dismissedByAction }) => dismissedByAction), + mapTo({ + type: CHANGE_NAVIGATION, + navigation: { + position, + animation: {} + } + }) + ) + ) + ) + + this.previewNgLayer$ = this.previewDatasetFile$.pipe( + filter(file => + determinePreviewFileType(file) === PREVIEW_FILE_TYPES.NIFTI + ), + map(({ url }) => { + const layer = { + name: url, + source : `nifti://${url}`, + mixability : 'nonmixable', + shader : GLSL_COLORMAP_JET, + } + return { + type: ADD_NG_LAYER, + layer + } + }) + ) + + this.hideBottomSheet$ = this.previewNgLayer$.pipe( + mapTo({ + type: SHOW_BOTTOM_SHEET, + bottomSheetTemplate: null + }) + ) this.favDataEntries$ = this.store$.pipe( select('dataStore'), select('favDataEntries'), diff --git a/src/ui/databrowserModule/databrowser/databrowser.component.ts b/src/ui/databrowserModule/databrowser/databrowser.component.ts index 0d0b3a3f2572df1b7d5b04738338c6dd00c3b390..2dd92a75a3889871bf8d00f6ec71b30f8011c630 100644 --- a/src/ui/databrowserModule/databrowser/databrowser.component.ts +++ b/src/ui/databrowserModule/databrowser/databrowser.component.ts @@ -1,15 +1,10 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, ViewChild } from "@angular/core"; import { merge, Observable, Subscription } from "rxjs"; -import { scan, shareReplay } from "rxjs/operators"; import { LoggingService } from "src/services/logging.service"; -import { ViewerPreviewFile } from "src/services/state/dataStore.store"; import { IDataEntry } from "src/services/stateStore.service"; import { CountedDataModality, DatabrowserService } from "../databrowser.service"; -import { KgSingleDatasetService } from "../kgSingleDatasetService.service"; import { ModalityPicker } from "../modalityPicker/modalityPicker.component"; -const scanFn: (acc: any[], curr: any) => any[] = (acc, curr) => [curr, ...acc] - @Component({ selector : 'data-browser', templateUrl : './databrowser.template.html', @@ -45,8 +40,6 @@ export class DataBrowser implements OnChanges, OnDestroy, OnInit { public countedDataM: CountedDataModality[] = [] public visibleCountedDataM: CountedDataModality[] = [] - public history$: Observable<Array<{file: ViewerPreviewFile, dataset: IDataEntry}>> - @ViewChild(ModalityPicker) public modalityPicker: ModalityPicker @@ -63,14 +56,9 @@ export class DataBrowser implements OnChanges, OnDestroy, OnInit { constructor( private dbService: DatabrowserService, private cdr: ChangeDetectorRef, - private singleDatasetSservice: KgSingleDatasetService, private log: LoggingService, ) { this.favDataentries$ = this.dbService.favedDataentries$ - this.history$ = this.singleDatasetSservice.previewingFile$.pipe( - scan(scanFn, []), - shareReplay(1), - ) } public ngOnChanges() { diff --git a/src/ui/databrowserModule/databrowser/databrowser.template.html b/src/ui/databrowserModule/databrowser/databrowser.template.html index 3005273d5cbbed7939009d9600f1272fc54455a8..9e0c3bd02a2db9bc6217186a3beb0092dd366c74 100644 --- a/src/ui/databrowserModule/databrowser/databrowser.template.html +++ b/src/ui/databrowserModule/databrowser/databrowser.template.html @@ -94,14 +94,6 @@ </ng-container> </ng-template> -<ng-template #filePreviewTemplate> - <preview-component - *ngIf="filePreviewName" - [datasetName]="filePreviewName"> - - </preview-component> -</ng-template> - <!-- modality picker / filter --> <ng-template #modalitySelector> <mat-accordion class="flex-grow-0 flex-shrink-0"> diff --git a/src/ui/databrowserModule/fileviewer/chart/chart.base.ts b/src/ui/databrowserModule/fileviewer/chart/chart.base.ts deleted file mode 100644 index d87209be74093f02e24a2519741d6f9849fd79ae..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/chart/chart.base.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { ElementRef, ViewChild } from "@angular/core"; -import { DomSanitizer, SafeUrl } from "@angular/platform-browser"; -import { from, interval, Observable, Subject, Subscription } from "rxjs"; -import { filter, map, mapTo, shareReplay, switchMap, switchMapTo, take } from "rxjs/operators"; - -export class ChartBase { - @ViewChild('canvas') public canvas: ElementRef - - private _csvData: string - - public csvDataUrl: SafeUrl - public csvTitle: string - public imageTitle: string - - private _subscriptions: Subscription[] = [] - private _newChart$: Subject<any> = new Subject() - - private _csvUrl: string - private _pngUrl: string - - public csvUrl$: Observable<SafeUrl> - public pngUrl$: Observable<SafeUrl> - - constructor(private sanitizer: DomSanitizer) { - this.csvUrl$ = this._newChart$.pipe( - mapTo(this._csvData), - map(data => { - const blob = new Blob([data], { type: 'data:text/csv;charset=utf-8' }) - if (this._csvUrl) { window.URL.revokeObjectURL(this._csvUrl) } - this._csvUrl = window.URL.createObjectURL(blob) - return this.sanitizer.bypassSecurityTrustUrl(this._csvUrl) - }), - shareReplay(1), - ) - - this.pngUrl$ = this._newChart$.pipe( - switchMapTo( - interval(500).pipe( - map(() => this.canvas && this.canvas.nativeElement), - filter(v => !!v), - switchMap(el => - from( - new Promise(rs => el.toBlob(blob => rs(blob), 'image/png')), - ) as Observable<Blob>, - ), - filter(v => !!v), - take(1), - ), - ), - map(blob => { - if (this._pngUrl) { window.URL.revokeObjectURL(this._pngUrl) } - this._pngUrl = window.URL.createObjectURL(blob) - return this.sanitizer.bypassSecurityTrustUrl(this._pngUrl) - }), - shareReplay(1), - ) - - // necessary - this._subscriptions.push( - this.pngUrl$.subscribe(), - ) - - this._subscriptions.push( - this.csvUrl$.subscribe(), - ) - } - - public superOnDestroy() { - if (this._csvUrl) { window.URL.revokeObjectURL(this._csvUrl) } - if (this._pngUrl) { window.URL.revokeObjectURL(this._pngUrl) } - while (this._subscriptions.length > 0) { this._subscriptions.pop().unsubscribe() } - } - - public generateNewCsv(csvData: string) { - this._csvData = csvData - this.csvDataUrl = this.sanitizer.bypassSecurityTrustUrl(`data:text/csv;charset=utf-8,${csvData}`) - this._newChart$.next(null) - } - -} diff --git a/src/ui/databrowserModule/fileviewer/chart/chart.interface.ts b/src/ui/databrowserModule/fileviewer/chart/chart.interface.ts deleted file mode 100644 index 9af31b70279ef4e6cee85c43f81a83d8983650fd..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/chart/chart.interface.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { ChartOptions } from "chart.js"; - -import { ElementRef } from "@angular/core"; -import { SafeUrl } from "@angular/platform-browser"; -import merge from 'lodash.merge' - -export interface ScaleOptionInterface { - type?: string - display?: boolean - gridLines?: GridLinesOptionInterface - ticks?: ScaleTickOptionInterface - scaleLabel?: ScaleLabelInterface -} - -export interface GridLinesOptionInterface { - display?: boolean - color?: string -} - -export interface ScaleTickOptionInterface { - min?: number - max?: number - stepSize?: number - backdropColor?: string - showLabelBackdrop?: boolean - suggestedMin?: number - suggestedMax?: number - beginAtZero?: boolean - fontColor?: string -} - -export interface ChartColor { - backgroundColor?: string - borderColor?: string - pointBackgroundColor?: string - pointBorderColor?: string - pointHoverBackgroundColor?: string - pointHoverBorderColor?: string -} - -export interface DatasetInterface { - labels: string[] | number[] - datasets: Dataset[] -} - -export interface Dataset { - data: number[] - label?: string - borderWidth?: number - borderDash?: number[] - fill?: string|number|boolean - backgroundColor: string -} - -export interface LegendInterface { - display?: boolean - labels?: { - fontColor?: string - } -} - -export interface TitleInterfacce { - display?: boolean - text?: string - fontColor?: string -} - -export interface ScaleLabelInterface { - labelString?: string - fontColor?: string - display?: boolean -} - -export interface CommonChartInterface { - csvDataUrl: SafeUrl - csvTitle: string - imageTitle: string - - canvas: ElementRef -} - -export const applyOption = (defaultOption: ChartOptions, option?: Partial<ChartOptions>) => { - merge(defaultOption, option) -} diff --git a/src/ui/databrowserModule/fileviewer/chart/line/line.chart.component.ts b/src/ui/databrowserModule/fileviewer/chart/line/line.chart.component.ts deleted file mode 100644 index 983e682c6b7f11eae2cc93484c27d83468b4d588..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/chart/line/line.chart.component.ts +++ /dev/null @@ -1,181 +0,0 @@ -import { Component, Input, OnChanges } from '@angular/core' -import { applyOption, ChartColor, CommonChartInterface, DatasetInterface, LegendInterface, ScaleOptionInterface, TitleInterfacce } from '../chart.interface' - -import { DomSanitizer } from '@angular/platform-browser'; -import { ChartDataSets, ChartOptions, LinearTickOptions } from 'chart.js'; -import { Color } from 'ng2-charts'; -import { ChartBase } from '../chart.base'; - -@Component({ - selector : `line-chart`, - templateUrl : './line.chart.template.html', - styleUrls : [ - `./line.chart.style.css`, - ], - exportAs: 'iavLineChart', -}) -export class LineChart extends ChartBase implements OnChanges, CommonChartInterface { - - /** - * labels of each of the columns, spider web edges - */ - @Input() public labels: string[] - - /** - * shown on the legend, different lines - */ - @Input() public lineDatasets: LineDatasetInputInterface[] = [] - - /** - * colors of the datasetes - */ - @Input() public colors: ChartColor[] = [] - - @Input() public options: any - - public mousescroll(_ev: MouseWheelEvent) { - - /** - * temporarily disabled - */ - - } - - public maxY: number - - public xAxesTicks: LinearTickOptions = { - stepSize: 20, - fontColor: 'white', - } - public chartOption: Partial<LineChartOption> = { - responsive: true, - scales: { - xAxes: [{ - type: 'linear', - gridLines: { - color: 'rgba(128,128,128,0.5)', - }, - ticks: this.xAxesTicks, - scaleLabel: { - display: true, - labelString: 'X Axes label', - fontColor: 'rgba(200,200,200,1.0)', - }, - }], - yAxes: [{ - gridLines: { - color: 'rgba(128,128,128,0.5)', - }, - ticks: { - fontColor: 'white', - }, - scaleLabel: { - display: true, - labelString: 'Y Axes label', - fontColor: 'rgba(200,200,200,1.0)', - }, - }], - }, - legend: { - display: true, - }, - title: { - display: true, - text: 'Title', - fontColor: 'rgba(255,255,255,1.0)', - }, - color: [{ - backgroundColor: `rgba(255,255,255,0.2)`, - }], - animation : undefined, - elements: - { - point: { - radius: 0, - hoverRadius: 8, - hitRadius: 4, - }, - }, - - } - - public chartDataset: DatasetInterface = { - labels: [], - datasets: [], - } - - public shapedLineChartDatasets: ChartDataSets[] - - constructor(sanitizer: DomSanitizer) { - super(sanitizer) - } - - public ngOnChanges() { - this.shapedLineChartDatasets = this.lineDatasets.map(lineDataset => ({ - data: lineDataset.data.map((v, idx) => ({ - x: idx, - y: v, - })), - fill: 'origin', - })) - - this.maxY = this.chartDataset.datasets.reduce((max, dataset) => { - return Math.max( - max, - dataset.data.reduce((max, number) => { - return Math.max(number, max) - }, 0)) - }, 0) - - applyOption(this.chartOption, this.options) - - this.generateDataUrl() - } - - public getDataPointString(input: any): string { - return typeof input === 'number' || typeof input === 'string' - ? input.toString() - : this.getDataPointString(input.y) - } - - private generateDataUrl() { - const row0 = [this.chartOption.scales.xAxes[0].scaleLabel.labelString].concat(this.chartOption.scales.yAxes[0].scaleLabel.labelString).join(',') - const maxRows = this.lineDatasets.reduce((acc, lds) => Math.max(acc, lds.data.length), 0) - const rows = Array.from(Array(maxRows)).map((_, idx) => [idx.toString()].concat(this.shapedLineChartDatasets.map(v => v.data[idx] ? this.getDataPointString(v.data[idx]) : '').join(','))).join('\n') - const csvData = `${row0}\n${rows}` - - this.generateNewCsv(csvData) - - this.csvTitle = `${this.getGraphTitleAsString().replace(/\s/g, '_')}.csv` - this.imageTitle = `${this.getGraphTitleAsString().replace(/\s/g, '_')}.png` - } - - private getGraphTitleAsString(): string { - try { - return this.chartOption.title.text.constructor === Array - ? (this.chartOption.title.text as string[]).join(' ') - : this.chartOption.title.text as string - } catch (e) { - return `Untitled` - } - } -} - -export interface LineDatasetInputInterface { - label?: string - data: number[] -} - -export interface LinearChartOptionInterface { - scales?: { - xAxes?: ScaleOptionInterface[] - yAxes?: ScaleOptionInterface[] - } - legend?: LegendInterface - title?: TitleInterfacce - color?: Color[] -} - -interface LineChartOption extends ChartOptions { - color?: Color[] -} diff --git a/src/ui/databrowserModule/fileviewer/chart/line/line.chart.style.css b/src/ui/databrowserModule/fileviewer/chart/line/line.chart.style.css deleted file mode 100644 index 7575b8e3247550c8d145a91ba034199fddc2feb9..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/chart/line/line.chart.style.css +++ /dev/null @@ -1,4 +0,0 @@ -:host -{ - display: block; -} diff --git a/src/ui/databrowserModule/fileviewer/chart/line/line.chart.template.html b/src/ui/databrowserModule/fileviewer/chart/line/line.chart.template.html deleted file mode 100644 index fb69619ff98aebbddc81b1535ee3b0eb20b5662e..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/chart/line/line.chart.template.html +++ /dev/null @@ -1,14 +0,0 @@ -<div *ngIf="shapedLineChartDatasets" - class="position-relative col-12"> - <canvas baseChart - (mousewheel)="mousescroll($event)" - height="500" - width="500" - chartType="line" - [options]="chartOption" - [colors]="colors" - [datasets]="shapedLineChartDatasets" - [labels]="chartDataset.labels" - #canvas> - </canvas> -</div> \ No newline at end of file diff --git a/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.component.ts b/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.component.ts deleted file mode 100644 index f86da382d5106de808a3e859e65819909724c701..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.component.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { Component, Input, OnChanges, OnDestroy } from '@angular/core' - -import { DomSanitizer } from '@angular/platform-browser'; -import { RadialChartOptions } from 'chart.js' -import { Color } from 'ng2-charts'; -import { ChartBase } from '../chart.base'; -import { applyOption, ChartColor, CommonChartInterface, DatasetInterface, LegendInterface, ScaleOptionInterface, TitleInterfacce } from '../chart.interface'; -@Component({ - selector : `radar-chart`, - templateUrl : './radar.chart.template.html', - styleUrls : [ - `./radar.chart.style.css`, - ], - exportAs: 'iavRadarChart', -}) -export class RadarChart extends ChartBase implements OnDestroy, OnChanges, CommonChartInterface { - - /** - * labels of each of the columns, spider web edges - */ - @Input() public labels: string[] = [] - - /** - * shown on the legend, different lines - */ - @Input() public radarDatasets: RadarDatasetInputInterface[] = [] - - /** - * colors of the datasetes - */ - @Input() public colors: ChartColor[] = [] - - @Input() public options: any - - public mousescroll(_ev: MouseWheelEvent) { - - /** - * mouse wheel zooming disabled for now - */ - /** - * TODO the sroll up event sometimes does not get prevented for some reasons... - */ - - // ev.stopPropagation() - // ev.preventDefault() - - // this.maxY *= ev.deltaY > 0 ? 1.2 : 0.8 - // const newTicksObj = { - // stepSize : Math.ceil( this.maxY / 500 ) * 100, - // max : this.maxY - // } - - // const combineTicksObj = Object.assign({},this.chartOption.scale!.ticks,newTicksObj) - // const combineScale = Object.assign({},this.chartOption.scale,{ticks:combineTicksObj}) - // this.chartOption = Object.assign({},this.chartOption,{scale : combineScale,animation : false}) - } - - public maxY: number - - public chartOption: Partial<RadialChartOptions> = { - responsive: true, - scale : { - gridLines : { - color : 'rgba(128,128,128,0.5)', - }, - ticks : { - showLabelBackdrop : false, - fontColor : 'white', - }, - angleLines : { - color : 'rgba(128,128,128,0.2)', - }, - pointLabels : { - fontColor : 'white', - }, - }, - legend : { - display: true, - labels : { - fontColor : 'white', - }, - }, - title : { - text : 'Radar graph', - display : true, - fontColor : 'rgba(255,255,255,1.0)', - }, - animation: null, - } - - public chartDataset: DatasetInterface = { - labels : [], - datasets : [], - } - - constructor(sanitizer: DomSanitizer) { - super(sanitizer) - } - - public ngOnDestroy() { - this.superOnDestroy() - } - - public ngOnChanges() { - this.chartDataset = { - labels : this.labels, - datasets : this.radarDatasets.map(ds => Object.assign({}, ds, {backgroundColor : 'rgba(255,255,255,0.2)'})), - } - // this.chartDataset.datasets[0] - - this.maxY = this.chartDataset.datasets.reduce((max, dataset) => { - return Math.max( - max, - dataset.data.reduce((max, number) => { - return Math.max(number, max) - }, 0)) - }, 0) - - applyOption(this.chartOption, this.options) - - this.generateDataUrl() - } - - private generateDataUrl() { - const row0 = ['Receptors', ...this.chartDataset.datasets.map(ds => ds.label || 'no label')].join(',') - const otherRows = (this.chartDataset.labels as string[]) - .map((label, index) => [ label, ...this.chartDataset.datasets.map(ds => ds.data[index]) ].join(',')).join('\n') - const csvData = `${row0}\n${otherRows}` - - this.generateNewCsv(csvData) - - this.csvTitle = `${this.getGraphTitleAsString().replace(/\s/g, '_')}.csv` - this.imageTitle = `${this.getGraphTitleAsString().replace(/\s/g, '_')}.png` - } - - private getGraphTitleAsString(): string { - try { - return this.chartOption.title.text as string - } catch (e) { - return `Untitled` - } - } -} - -export interface RadarDatasetInputInterface { - label: string - data: number[] -} - -export interface RadarChartOptionInterface { - scale?: ScaleOptionInterface&RadarScaleOptionAdditionalInterface - animation?: any - legend?: LegendInterface - title?: TitleInterfacce - color?: Color[] -} - -interface RadarScaleOptionAdditionalInterface { - angleLines?: AngleLineInterface - pointLabels?: PointLabelInterface -} - -interface AngleLineInterface { - display?: boolean - color?: string - lineWidth?: number -} - -interface PointLabelInterface { - fontColor?: string -} diff --git a/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.style.css b/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.style.css deleted file mode 100644 index 7575b8e3247550c8d145a91ba034199fddc2feb9..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.style.css +++ /dev/null @@ -1,4 +0,0 @@ -:host -{ - display: block; -} diff --git a/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.template.html b/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.template.html deleted file mode 100644 index 17defea39a2b3af6ca2e561295d7f759a2f4a493..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/chart/radar/radar.chart.template.html +++ /dev/null @@ -1,21 +0,0 @@ -<div *ngIf="chartDataset.datasets.length > 0 && chartDataset.labels.length > 0" - class="position-relative col-12"> - - <!-- baseChart directive is needed by ng2-chart --> - <canvas baseChart - (mousewheel)="mousescroll($event)" - class="h-100 w-100" - height="500" - width="500" - chartType="radar" - [options]="chartOption" - [colors]="colors" - [datasets]="chartDataset.datasets" - [labels]="chartDataset.labels" - #canvas> - </canvas> -</div> - -<span *ngIf="chartDataset.datasets.length === 0 || chartDataset.labels.length === 0"> - datasets and labels are required to display radar -</span> \ No newline at end of file diff --git a/src/ui/databrowserModule/fileviewer/dedicated/dedicated.component.ts b/src/ui/databrowserModule/fileviewer/dedicated/dedicated.component.ts deleted file mode 100644 index 623c48aa3d5506387db09d2f676ba1018c60818e..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/dedicated/dedicated.component.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Component, Input } from "@angular/core"; -import { ViewerPreviewFile } from "src/services/state/dataStore.store"; -import { KgSingleDatasetService } from "../../kgSingleDatasetService.service"; - -@Component({ - selector : 'dedicated-viewer', - templateUrl : './dedicated.template.html', - styleUrls : [ - `./dedicated.style.css`, - ], -}) - -export class DedicatedViewer { - @Input() public previewFile: ViewerPreviewFile - - constructor( - private singleKgDsService: KgSingleDatasetService, - ) { - - } - - get isShowing() { - return this.singleKgDsService.ngLayers.has(this.previewFile.url) - } - - public showDedicatedView() { - this.singleKgDsService.showNewNgLayer({ url: this.previewFile.url }) - } - - public removeDedicatedView() { - this.singleKgDsService.removeNgLayer({ url: this.previewFile.url }) - } - - public click(event: MouseEvent) { - event.preventDefault() - this.isShowing - ? this.removeDedicatedView() - : this.showDedicatedView() - } -} diff --git a/src/ui/databrowserModule/fileviewer/dedicated/dedicated.style.css b/src/ui/databrowserModule/fileviewer/dedicated/dedicated.style.css deleted file mode 100644 index c281f74383e41b752f15be648e2d05cebda0e41a..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/dedicated/dedicated.style.css +++ /dev/null @@ -1,5 +0,0 @@ -a -{ - margin: 0 1em; - transition: all 200ms ease; -} diff --git a/src/ui/databrowserModule/fileviewer/dedicated/dedicated.template.html b/src/ui/databrowserModule/fileviewer/dedicated/dedicated.template.html deleted file mode 100644 index 75343992eaf8ecab64286c466a4ae70d0e856e10..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/dedicated/dedicated.template.html +++ /dev/null @@ -1,22 +0,0 @@ -<div class="alert"> - You can directly preview this nifti file overlaying the atlas viewer. -</div> - - -<div class="w-100 d-flex align-items-center flex-column"> - -<div *ngIf="isShowing" class="d-flex flex-column align-items-center"> - <i class="far fa-eye h3" [ngStyle]="isShowing && {'color' : '#04D924'}"></i> - <span>File is added</span> -</div> - - <button *ngIf="!isShowing" mat-button class="p-3 outline-none mat-raised-button" [disabled]="isShowing" color="primary" (click)="!isShowing && showDedicatedView()"> - <span class="ml-2">Click to add file in Atlas Viewer</span> - </button> - - <button mat-button *ngIf="isShowing" class="mat-raised-button p-3 outline-none" color="primary" (click)="removeDedicatedView()"> - <i class="fas fa-eye-slash" style="color: #D93D04"></i> - Remove file from <b>Atlas Viewer</b> - </button> - -</div> diff --git a/src/ui/databrowserModule/fileviewer/fileviewer.component.ts b/src/ui/databrowserModule/fileviewer/fileviewer.component.ts deleted file mode 100644 index 1ae371c7d48dfa85e5efca873734a7fede49826d..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/fileviewer.component.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { ChangeDetectorRef, Component, Inject, Input, OnChanges, Optional, ViewChild } from '@angular/core' - -import { MAT_DIALOG_DATA } from '@angular/material'; -import { ViewerPreviewFile } from 'src/services/state/dataStore.store'; -import { ChartBase } from './chart/chart.base'; - -@Component({ - selector : 'file-viewer', - templateUrl : './fileviewer.template.html' , - styleUrls : [ - './fileviewer.style.css', - ], -}) - -export class FileViewer implements OnChanges { - - public childChart: ChartBase - - @ViewChild('childChart') - set setChildChart(childChart: ChartBase) { - this.childChart = childChart - this.cdr.detectChanges() - } - - /** - * fetched directly from KG - */ - @Input() public previewFile: ViewerPreviewFile - - constructor( - private cdr: ChangeDetectorRef, - @Optional() @Inject(MAT_DIALOG_DATA) data, - ) { - if (data) { - this.previewFile = data.previewFile - this.downloadUrl = this.previewFile.url - } - } - - public downloadUrl: string - public ngOnChanges() { - this.downloadUrl = this.previewFile.url - } -} diff --git a/src/ui/databrowserModule/fileviewer/fileviewer.style.css b/src/ui/databrowserModule/fileviewer/fileviewer.style.css deleted file mode 100644 index e850661e5c5879af558758be2476da087685349a..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/fileviewer.style.css +++ /dev/null @@ -1,34 +0,0 @@ -small#captions -{ - display:inline-block; - margin:0 1em; -} - -div[emptyRow] -{ - margin-bottom:-1em; -} - -img -{ - width: 100%; -} - -[citationContainer] -{ - display:inline-block; - max-width: 100%; - box-sizing: border-box; - padding: 0.5em 1em; -} - -kg-entry-viewer -{ - padding: 1em; - display: block; -} - -div[mimetypeTextContainer] -{ - margin:1em; -} diff --git a/src/ui/databrowserModule/fileviewer/fileviewer.template.html b/src/ui/databrowserModule/fileviewer/fileviewer.template.html deleted file mode 100644 index cee788c3974a892baf17bb5839a9b50eba728f19..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/fileviewer/fileviewer.template.html +++ /dev/null @@ -1,113 +0,0 @@ -<div class="w-100 d-flex justify-content-center mt-2 font-weight-bold"> - {{previewFile.name}} -</div> - -<div *ngIf = "!previewFile"> - previewFile as an input is required for this component to work... -</div> -<div - *ngIf = "previewFile" - [ngSwitch]="previewFile.mimetype"> - - <div emptyRow *ngSwitchCase = "'application/octet-stream'"> - <!-- downloadable data --> - </div> - - <!-- image --> - <div *ngSwitchCase="'image/jpeg'" > - <!-- TODO figure out a more elegant way of dealing with draggable img --> - <img draggable="false" [src]="previewFile.url" /> - </div> - - <!-- data container --> - <div [ngSwitch]="previewFile.data.chartType" - *ngSwitchCase="'application/json'"> - - <ng-container *ngSwitchCase="'radar'"> - <radar-chart - #childChart="iavRadarChart" - [colors]="previewFile.data.colors" - [options]="previewFile.data.chartOptions" - [labels]="previewFile.data.labels" - [radarDatasets]="previewFile.data.datasets"> - - </radar-chart> - - </ng-container> - - <ng-container *ngSwitchCase="'line'"> - <line-chart - #childChart="iavLineChart" - [colors]="previewFile.data.colors" - [options]="previewFile.data.chartOptions" - [lineDatasets]="previewFile.data.datasets"> - - </line-chart> - </ng-container> - <div *ngSwitchDefault> - The json file is not a chart. I mean, we could dump the json, but would it really help? - </div> - </div> - - <div *ngSwitchCase="'application/hibop'"> - <div mimetypeTextContainer> - You will need to install the HiBoP software on your computer, click the 'Download File' button and open the .hibop file. - </div> - </div> - - <div *ngSwitchCase="'application/nifti'"> - <dedicated-viewer - [previewFile]="previewFile"> - </dedicated-viewer> - </div> - - <div *ngSwitchCase="'application/nehuba-layer'"> - APPLICATION NEHUBA LAYER - NOT YET IMPLEMENTED - </div> - - <div *ngSwitchDefault> - <div mimetypeTextContainer> - The selected file with the mimetype {{ previewFile.mimetype }} could not be displayed. - </div> - </div> - -</div> - -<div class="mt-1 w-100 d-flex justify-content-end pl-1 pr-1 pt-2 pb-2"> - - <a mat-icon-button - matTooltip="Download line graph as csv" - [hidden]="!(childChart && childChart.csvDataUrl)" - - target="_blank" - [download]="childChart && childChart.csvTitle" - [href]="childChart && childChart.csvDataUrl"> - - <i class="fas fa-file-csv"></i> - </a> - - <!-- nb --> - <!-- cross origin download attribute will be ignored --> - <!-- this effective means that when dev on localhost:8080, resource request to localhost:3000 will always open in a new window --> - <!-- link: https://developers.google.com/web/updates/2018/02/chrome-65-deprecations#block_cross-origin_wzxhzdk5a_download --> - <a mat-icon-button - *ngIf="downloadUrl" - [href]="downloadUrl" - target="_blank" - download - matTooltip="Download File"> - <i class="fas fa-download"></i> - </a> - - - <a mat-icon-button - *ngIf="childChart" - target="_blank" - [href]="childChart.pngUrl$ | async" - [download]="childChart && childChart.imageTitle" - - matTooltip="Download chart as an image"> - <i class="fas fa-download "></i> - </a> - -</div> diff --git a/src/ui/databrowserModule/kgSingleDatasetService.service.ts b/src/ui/databrowserModule/kgSingleDatasetService.service.ts index 06c45708d49220725416492eb384ed32ca9a2b8b..9544ef15f53013ffac9e3d238bb7b5ca2678ef74 100644 --- a/src/ui/databrowserModule/kgSingleDatasetService.service.ts +++ b/src/ui/databrowserModule/kgSingleDatasetService.service.ts @@ -1,22 +1,17 @@ import { HttpClient } from "@angular/common/http"; import { Injectable, OnDestroy, TemplateRef } from "@angular/core"; -import { MatDialog, MatSnackBar } from "@angular/material"; import { select, Store } from "@ngrx/store"; -import { Subject, Subscription } from "rxjs"; +import { Subscription } from "rxjs"; import { filter } from "rxjs/operators"; -import { AtlasViewerConstantsServices, GLSL_COLORMAP_JET } from "src/atlasViewer/atlasViewer.constantService.service" -import { IDataEntry, ViewerPreviewFile } from "src/services/state/dataStore.store"; +import { AtlasViewerConstantsServices } from "src/atlasViewer/atlasViewer.constantService.service" +import { IDataEntry, ViewerPreviewFile, DATASETS_ACTIONS_TYPES } from "src/services/state/dataStore.store"; import { SHOW_BOTTOM_SHEET } from "src/services/state/uiState.store"; -import { ADD_NG_LAYER, CHANGE_NAVIGATION, IavRootStoreInterface, REMOVE_NG_LAYER } from "src/services/stateStore.service"; -import { FileViewer } from "./fileviewer/fileviewer.component"; -import { determinePreviewFileType, PREVIEW_FILE_TYPES } from "./preview/previewFileIcon.pipe"; +import { IavRootStoreInterface, REMOVE_NG_LAYER } from "src/services/stateStore.service"; import { GetKgSchemaIdFromFullIdPipe } from "./util/getKgSchemaIdFromFullId.pipe"; @Injectable({ providedIn: 'root' }) export class KgSingleDatasetService implements OnDestroy { - public previewingFile$: Subject<{file: ViewerPreviewFile, dataset: IDataEntry}> = new Subject() - private subscriptions: Subscription[] = [] public ngLayers: Set<string> = new Set() @@ -25,9 +20,7 @@ export class KgSingleDatasetService implements OnDestroy { constructor( private constantService: AtlasViewerConstantsServices, private store$: Store<IavRootStoreInterface>, - private dialog: MatDialog, private http: HttpClient, - private snackBar: MatSnackBar, ) { this.subscriptions.push( @@ -46,6 +39,7 @@ export class KgSingleDatasetService implements OnDestroy { } } + // TODO deprecate, in favour of web component public datasetHasPreview({ name }: { name: string } = { name: null }) { if (!name) { throw new Error('kgSingleDatasetService#datasetHashPreview name must be defined') } const _url = new URL(`datasets/hasPreview`, this.constantService.backendUrl ) @@ -82,60 +76,12 @@ export class KgSingleDatasetService implements OnDestroy { } public previewFile(file: ViewerPreviewFile, dataset: IDataEntry) { - this.previewingFile$.next({ - file, - dataset, - }) - - const { position } = file - if (position) { - this.snackBar.open(`Postion of interest found.`, 'Go there', { - duration: 5000, - }) - .afterDismissed() - .subscribe(({ dismissedByAction }) => { - if (dismissedByAction) { - this.store$.dispatch({ - type: CHANGE_NAVIGATION, - navigation: { - position, - animation: {}, - }, - }) - } - }) - } - - const type = determinePreviewFileType(file) - if (type === PREVIEW_FILE_TYPES.NIFTI) { - this.store$.dispatch({ - type: SHOW_BOTTOM_SHEET, - bottomSheetTemplate: null, - }) - const { url } = file - this.showNewNgLayer({ url }) - return - } - - this.dialog.open(FileViewer, { - data: { - previewFile: file, - }, - autoFocus: false, - }) - } - - public showNewNgLayer({ url }): void { - - const layer = { - name : url, - source : `nifti://${url}`, - mixability : 'nonmixable', - shader : GLSL_COLORMAP_JET, - } this.store$.dispatch({ - type: ADD_NG_LAYER, - layer, + type: DATASETS_ACTIONS_TYPES.PREVIEW_DATASET, + payload: { + file, + dataset + } }) } diff --git a/src/ui/databrowserModule/preview/preview.component.ts b/src/ui/databrowserModule/preview/preview.component.ts deleted file mode 100644 index f5bf30d994669019aa11672bd8263e68e59de5cf..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/preview/preview.component.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from "@angular/core"; -import { ViewerPreviewFile } from "src/services/state/dataStore.store"; -import { DatabrowserService } from "../databrowser.service"; - -const getRenderNodeFn = ({name : activeFileName = ''} = {}) => ({name = '', path = 'unpathed'}) => name - ? activeFileName === name - ? `<span class="text-warning">${name}</span>` - : name - : path - -@Component({ - selector: 'preview-component', - templateUrl: './previewList.template.html', - styleUrls: [ - './preview.style.css', - ], - changeDetection: ChangeDetectionStrategy.OnPush, -}) - -export class PreviewComponent implements OnInit { - @Input() public datasetName: string - @Output() public previewFile: EventEmitter<ViewerPreviewFile> = new EventEmitter() - - public fetchCompleteFlag: boolean = false - - public previewFiles: ViewerPreviewFile[] = [] - public activeFile: ViewerPreviewFile - private error: string - - constructor( - private dbrService: DatabrowserService, - private cdr: ChangeDetectorRef, - ) { - this.renderNode = getRenderNodeFn() - } - - public previewFileClick(ev, el) { - - ev.event.preventDefault() - ev.event.stopPropagation() - - if (ev.inputItem.children.length > 0) { - el.toggleCollapse(ev.inputItem) - } else { - this.activeFile = ev.inputItem - this.renderNode = getRenderNodeFn(this.activeFile) - } - - this.cdr.markForCheck() - } - - public renderNode: (obj: any) => string - - public ngOnInit() { - if (this.datasetName) { - this.dbrService.fetchPreviewData(this.datasetName) - .then(json => { - this.previewFiles = json as ViewerPreviewFile[] - if (this.previewFiles.length > 0) { - this.activeFile = this.previewFiles[0] - this.renderNode = getRenderNodeFn(this.activeFile) - } - }) - .catch(e => { - this.error = JSON.stringify(e) - }) - .finally(() => { - this.fetchCompleteFlag = true - this.cdr.markForCheck() - }) - } - } -} diff --git a/src/ui/databrowserModule/preview/preview.style.css b/src/ui/databrowserModule/preview/preview.style.css deleted file mode 100644 index 627947e7c8a27910c5dc1007cdb650ca895791ea..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/preview/preview.style.css +++ /dev/null @@ -1,6 +0,0 @@ -.readmore-wrapper -{ - font-size: 80%; - max-height: 25em; - overflow: auto; -} \ No newline at end of file diff --git a/src/ui/databrowserModule/preview/preview.template.html b/src/ui/databrowserModule/preview/preview.template.html deleted file mode 100644 index 1eb28f46694f3252ffc923011d1106230a6543b8..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/preview/preview.template.html +++ /dev/null @@ -1,22 +0,0 @@ -<div *ngIf="activeFile"> - {{ activeFile.name }} -</div> -<file-viewer - *ngIf="activeFile" - [previewFile]="activeFile"> - -</file-viewer> - -<hr /> -<div class="readmore-wrapper"> - - <flat-tree-component - #flatTreeNode - *ngIf="previewFiles | copyProperty : 'filename' : 'path' | pathToNestedChildren | aggregateArrayIntoRootPipe : 'Files'; let rootFile" - [useDefaultList]="true" - [renderNode]="renderNode" - [inputItem]="rootFile" - (treeNodeClick)="previewFileClick($event, flatTreeNode)"> - - </flat-tree-component> -</div> \ No newline at end of file diff --git a/src/ui/databrowserModule/preview/previewFileIcon.pipe.ts b/src/ui/databrowserModule/preview/previewFileIcon.pipe.ts index 038f48a980771893863f23e9faec1eefd7cdb112..bbf950646e38b46fe37b66151c8508f7df6b3e29 100644 --- a/src/ui/databrowserModule/preview/previewFileIcon.pipe.ts +++ b/src/ui/databrowserModule/preview/previewFileIcon.pipe.ts @@ -34,8 +34,9 @@ export class PreviewFileIconPipe implements PipeTransform { } export const determinePreviewFileType = (previewFile: ViewerPreviewFile) => { + if (!previewFile) return null const { mimetype, data } = previewFile - const { chartType = null } = data || {} + const chartType = data && data['chart.js'] && data['chart.js'].type if ( mimetype === 'application/nifti' ) { return PREVIEW_FILE_TYPES.NIFTI } if ( /^image/.test(mimetype)) { return PREVIEW_FILE_TYPES.IMAGE } if ( /application\/json/.test(mimetype) && (chartType === 'line' || chartType === 'radar')) { return PREVIEW_FILE_TYPES.CHART } diff --git a/src/ui/databrowserModule/preview/previewList.template.html b/src/ui/databrowserModule/preview/previewList.template.html deleted file mode 100644 index de6a34f6e020dcd1bda060abab0af5afd41eac7a..0000000000000000000000000000000000000000 --- a/src/ui/databrowserModule/preview/previewList.template.html +++ /dev/null @@ -1,24 +0,0 @@ -<mat-nav-list *ngIf="fetchCompleteFlag; else loadingPlaceholder"> - <h3 mat-subheader>Available Preview Files</h3> - <mat-list-item - *ngFor="let file of previewFiles" - (click)="previewFile.emit(file)"> - <mat-icon - [fontSet]="(file | previewFileIconPipe).fontSet" - [fontIcon]="(file | previewFileIconPipe).fontIcon" - matListIcon> - </mat-icon> - <h4 mat-line>{{ file.name }}</h4> - <p mat-line>mimetype: {{ file.mimetype }}</p> - </mat-list-item> - - <small *ngIf="previewFiles.length === 0" - class="text-muted"> - There are no preview files in this parcellation/template space. - </small> - -</mat-nav-list> - -<ng-template #loadingPlaceholder> - <div class="d-inline-block spinnerAnimationCircle"></div> loading previews ... -</ng-template> \ No newline at end of file diff --git a/src/ui/databrowserModule/singleDataset/datasetPreviews/datasetPreviewsList/datasetPreviewList.component.ts b/src/ui/databrowserModule/singleDataset/datasetPreviews/datasetPreviewsList/datasetPreviewList.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..7fcdb4ae1b2419b9e664f476654973ee0ffeae9b --- /dev/null +++ b/src/ui/databrowserModule/singleDataset/datasetPreviews/datasetPreviewsList/datasetPreviewList.component.ts @@ -0,0 +1,60 @@ +import { Component, Input, ChangeDetectorRef, Output, EventEmitter, Pipe, PipeTransform } from "@angular/core"; +import { ViewerPreviewFile } from "src/services/state/dataStore.store"; +import { Store, select } from "@ngrx/store"; +import { IavRootStoreInterface } from "src/services/stateStore.service"; +import { Observable } from "rxjs"; +import { DS_PREVIEW_URL } from 'src/util/constants' + +@Component({ + selector: 'dataset-preview-list', + templateUrl: './datasetPreviewList.template.html' +}) + +export class DatasetPreviewList{ + + @Output() public previewingFile: EventEmitter<ViewerPreviewFile> = new EventEmitter() + + public datasetPreviewList: any[] = [] + public loadingDatasetPreviewList: boolean = false + public selectedTemplateSpace$: Observable<any> + + constructor( + private cdr: ChangeDetectorRef, + store$: Store<IavRootStoreInterface> + ){ + this.selectedTemplateSpace$ = store$.pipe( + select('viewerState'), + select('templateSelected') + ) + } + + @Input() + kgId: string + + public DS_PREVIEW_URL = DS_PREVIEW_URL + + handleKgDsPrvUpdated(event: CustomEvent){ + const { detail } = event + const { datasetFiles, loadingFlag } = detail + + this.loadingDatasetPreviewList = loadingFlag + this.datasetPreviewList = datasetFiles + + this.cdr.markForCheck() + } + public handlePreviewFile(file: ViewerPreviewFile) { + + this.previewingFile.emit(file) + } +} + +@Pipe({ + name: 'unavailableTooltip' +}) + +export class UnavailableTooltip implements PipeTransform{ + public transform(file: ViewerPreviewFile): string{ + if (file.referenceSpaces.length === 0) return `This preview is not available to be viewed in any reference space.` + else return `This preview is available in the following reference space: ${file.referenceSpaces.map(({ name }) => name).join(', ')}` + } +} \ No newline at end of file diff --git a/src/ui/databrowserModule/singleDataset/datasetPreviews/datasetPreviewsList/datasetPreviewList.template.html b/src/ui/databrowserModule/singleDataset/datasetPreviews/datasetPreviewsList/datasetPreviewList.template.html new file mode 100644 index 0000000000000000000000000000000000000000..25afd1d18921e98c59b6f1c41ecd2449cfeafc6d --- /dev/null +++ b/src/ui/databrowserModule/singleDataset/datasetPreviews/datasetPreviewsList/datasetPreviewList.template.html @@ -0,0 +1,54 @@ +<kg-dataset-list + [backendUrl]="DS_PREVIEW_URL" + (kgDsPrvUpdated)="handleKgDsPrvUpdated($event)" + class="d-none" + [kgId]="kgId"> + +</kg-dataset-list> + +<div *ngIf="loadingDatasetPreviewList; else datasetList" class="spinnerAnimationCircle"></div> + +<ng-template #datasetList> + + <mat-nav-list> + <h3 mat-subheader>Available Preview Files</h3> + + <ng-container *ngFor="let file of datasetPreviewList"> + + <!-- preview available --> + <ng-template [ngIf]="(selectedTemplateSpace$ | async | previewFileVisibleInSelectedReferenceTemplatePipe : file)" [ngIfElse]="notAvailalbePreview" > + <mat-list-item (click)=" handlePreviewFile(file)"> + <mat-icon + [fontSet]="(file | previewFileIconPipe).fontSet" + [fontIcon]="(file | previewFileIconPipe).fontIcon" + matListIcon> + </mat-icon> + <h4 mat-line>{{ file.name }}</h4> + <p mat-line>mimetype: {{ file.mimetype }}</p> + </mat-list-item> + </ng-template> + + <!-- preview not available in this reference space --> + <ng-template #notAvailalbePreview> + <mat-list-item + [matTooltip]="file | unavailableTooltip" + [matTooltipDisabled]="selectedTemplateSpace$ | async | previewFileVisibleInSelectedReferenceTemplatePipe : file" + [ngClass]="{'text-muted': !(selectedTemplateSpace$ | async | previewFileVisibleInSelectedReferenceTemplatePipe : file)}"> + <mat-icon + [fontSet]="(file | previewFileIconPipe).fontSet" + [fontIcon]="(file | previewFileIconPipe).fontIcon" + matListIcon> + </mat-icon> + <h4 mat-line>{{ file.name }}</h4> + <p mat-line>mimetype: {{ file.mimetype }}</p> + </mat-list-item> + </ng-template> + + </ng-container> + <small *ngIf="datasetPreviewList.length === 0" + class="text-muted"> + There are no preview files in this parcellation/template space. + </small> + + </mat-nav-list> +</ng-template> diff --git a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.component.ts b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.component.ts index 06228a4fc6cb8320a042e0f3129884655498a694..9dae8425811fec73ef377b61573ddb341cda54e9 100644 --- a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.component.ts +++ b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.component.ts @@ -28,4 +28,5 @@ export class SingleDatasetView extends SingleDatasetBase { ) { super(dbService, singleDatasetService, cdr, constantService, data) } + } diff --git a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html index 372748eb628a6ce175acb08e79f93d5bae9d3bd0..88c2c63deec0ea99fca33a3c5c581ce577c61436 100644 --- a/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html +++ b/src/ui/databrowserModule/singleDataset/detailedView/singleDataset.template.html @@ -109,7 +109,7 @@ <!-- download --> - <a *ngIf="files.length > 0" + <a *ngIf="files && files.length > 0" [href]="dlFromKgHref" target="_blank"> <button @@ -135,13 +135,15 @@ </span> <i class="ml-1 far fa-eye"></i> </button> + </mat-card-actions> <mat-card-footer></mat-card-footer> <ng-template #previewFilesListTemplate> - <preview-component - (previewFile)="handlePreviewFile($event)" - [datasetName]="name"> - </preview-component> -</ng-template> \ No newline at end of file + <dataset-preview-list + [kgId]="kgId" + (previewingFile)="handlePreviewFile($event)"> + + </dataset-preview-list> +</ng-template> diff --git a/src/ui/databrowserModule/singleDataset/listView/singleDatasetListView.template.html b/src/ui/databrowserModule/singleDataset/listView/singleDatasetListView.template.html index 452f019150bdfd99c1367a571cd1f1cf5495aedb..ac442f6602363777ea6a667217a66f2da9f82f46 100644 --- a/src/ui/databrowserModule/singleDataset/listView/singleDatasetListView.template.html +++ b/src/ui/databrowserModule/singleDataset/listView/singleDatasetListView.template.html @@ -102,10 +102,11 @@ </mat-menu> <ng-template #previewFilesListTemplate> - <preview-component - (previewFile)="handlePreviewFile($event)" - [datasetName]="name"> - </preview-component> + <dataset-preview-list + [kgId]="kgId" + (previewingFile)="handlePreviewFile($event)"> + + </dataset-preview-list> </ng-template> <ng-template #fullIcons> diff --git a/src/ui/databrowserModule/singleDataset/singleDataset.base.ts b/src/ui/databrowserModule/singleDataset/singleDataset.base.ts index 831330149fbedbfbec7392177623432b08429369..3ca5b426c11bbea6527dfe33d4da476c12a2a56a 100644 --- a/src/ui/databrowserModule/singleDataset/singleDataset.base.ts +++ b/src/ui/databrowserModule/singleDataset/singleDataset.base.ts @@ -1,4 +1,4 @@ -import { ChangeDetectorRef, EventEmitter, Input, OnInit, Output, TemplateRef } from "@angular/core"; +import { ChangeDetectorRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewChild } from "@angular/core"; import { Observable } from "rxjs"; import { AtlasViewerConstantsServices } from "src/atlasViewer/atlasViewer.constantService.service"; import { IDataEntry, IFile, IPublication, ViewerPreviewFile } from 'src/services/state/dataStore.store' @@ -6,6 +6,8 @@ import { HumanReadableFileSizePipe } from "src/util/pipes/humanReadableFileSize. import { DatabrowserService } from "../databrowser.service"; import { KgSingleDatasetService } from "../kgSingleDatasetService.service"; +import { DS_PREVIEW_URL } from 'src/util/constants' + export { DatabrowserService, KgSingleDatasetService, @@ -31,21 +33,17 @@ export class SingleDatasetBase implements OnInit { @Input() public dataset: any = null @Input() public simpleMode: boolean = false - @Output() public previewingFile: EventEmitter<ViewerPreviewFile> = new EventEmitter() - public preview: boolean = false private humanReadableFileSizePipe: HumanReadableFileSizePipe = new HumanReadableFileSizePipe() + public DS_PREVIEW_URL = DS_PREVIEW_URL + /** * sic! */ public kgReference: string[] = [] public files: IFile[] = [] private methods: string[] = [] - /** - * sic! - */ - private parcellationRegion: Array<{ name: string }> private error: string = null @@ -54,6 +52,8 @@ export class SingleDatasetBase implements OnInit { public dlFromKgHref: string = null + public selectedTemplateSpace$: Observable<any> + public favedDataentries$: Observable<IDataEntry[]> constructor( private dbService: DatabrowserService, @@ -63,6 +63,7 @@ export class SingleDatasetBase implements OnInit { dataset?: any, ) { + this.favedDataentries$ = this.dbService.favedDataentries$ if (dataset) { this.dataset = dataset @@ -155,7 +156,6 @@ export class SingleDatasetBase implements OnInit { } public handlePreviewFile(file: ViewerPreviewFile) { - this.previewingFile.emit(file) this.singleDatasetService.previewFile(file, this.dataset) } } diff --git a/src/ui/databrowserModule/util/previewFileDisabledByReferenceSpace.pipe.ts b/src/ui/databrowserModule/util/previewFileDisabledByReferenceSpace.pipe.ts new file mode 100644 index 0000000000000000000000000000000000000000..12b9065d24393d5ec5d2a59d8acd2b8c07c67039 --- /dev/null +++ b/src/ui/databrowserModule/util/previewFileDisabledByReferenceSpace.pipe.ts @@ -0,0 +1,20 @@ +import { Pipe, PipeTransform } from "@angular/core"; +import { ViewerPreviewFile } from "src/services/state/dataStore.store"; +import { getIdFromFullId } from "common/util" + +@Pipe({ + name: 'previewFileVisibleInSelectedReferenceTemplatePipe' +}) + +export class PreviewFileVisibleInSelectedReferenceTemplatePipe implements PipeTransform{ + public transform(selectedReferenceSpace: any, file: ViewerPreviewFile): boolean{ + const { referenceSpaces = [] } = file + if (referenceSpaces.some(({ name, fullId }) => name === '*' && fullId === '*')) return true + const { fullId } = selectedReferenceSpace + if (!fullId) return false + return referenceSpaces.some(({ fullId: rsFullId }) => { + const compare = getIdFromFullId(rsFullId) === getIdFromFullId(fullId) + return compare + }) + } +} \ No newline at end of file diff --git a/src/ui/landmarkUI/landmarkUI.component.ts b/src/ui/landmarkUI/landmarkUI.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..f76b1cac444c86645d95e001ec01fbe9cbba6ce9 --- /dev/null +++ b/src/ui/landmarkUI/landmarkUI.component.ts @@ -0,0 +1,71 @@ +import { Component, Input, OnChanges, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, AfterContentChecked } from "@angular/core"; +import { IDataEntry } from "src/services/stateStore.service"; +import { GetKgSchemaIdFromFullIdPipe } from 'src/ui/databrowserModule/util/getKgSchemaIdFromFullId.pipe' +import { AtlasViewerConstantsServices } from "../databrowserModule/singleDataset/singleDataset.base"; +import { Observable } from "rxjs"; +import { DS_PREVIEW_URL } from 'src/util/constants' + +@Component({ + selector: 'landmark-ui', + templateUrl: './landmarkUI.template.html', + styleUrls: [ + './landmarkUI.style.css' + ], + changeDetection: ChangeDetectionStrategy.OnPush +}) + +export class LandmarkUIComponent implements OnChanges, AfterContentChecked{ + @Input() name: string + @Input() fullId: string + @Input() datasets: Partial<IDataEntry>[] + + @Output() relayout: EventEmitter<any> = new EventEmitter() + + private pipe = new GetKgSchemaIdFromFullIdPipe() + + public DS_PREVIEW_URL = DS_PREVIEW_URL + + public previewFilesMap: Map<string, any[]> = new Map() + public previewFiles: any[] = [] + + handleKgDsPrvUpdate(event: CustomEvent, datasetKgId: string){ + const { detail } = event + const { datasetFiles } = detail + + this.previewFilesMap.set(datasetKgId, datasetFiles) + + this.previewFiles = [] + + for (const [datasetKgId, previewFiles] of Array.from(this.previewFilesMap)){ + for (const singlePreviewFile of previewFiles){ + this.previewFiles.push({ + ...singlePreviewFile, + datasetKgId + }) + } + } + this.cdr.markForCheck() + } + + public filterCriteria: string + ngOnChanges(){ + this.filterCriteria = null + if (!this.fullId) return + const [kgSchema, kgId] = this.pipe.transform(this.fullId) + this.filterCriteria = JSON.stringify([ `${kgSchema}/${kgId}` ]) + } + + // TODO need to optimise this. This calls way too frequently. + ngAfterContentChecked(){ + this.relayout.emit() + } + + public darktheme$: Observable<boolean> + + constructor( + constantService: AtlasViewerConstantsServices, + private cdr: ChangeDetectorRef + ){ + this.darktheme$ = constantService.darktheme$ + } +} \ No newline at end of file diff --git a/src/ui/landmarkUI/landmarkUI.style.css b/src/ui/landmarkUI/landmarkUI.style.css new file mode 100644 index 0000000000000000000000000000000000000000..757b1a7bcba50d2da823755e085849b453bff61a --- /dev/null +++ b/src/ui/landmarkUI/landmarkUI.style.css @@ -0,0 +1,21 @@ +kg-dataset-previewer +{ + height: 20em; + width: 30em; +} +.scroll-snap-container +{ + scroll-snap-type: x mandatory; + scroll-padding-left: 1em; + scroll-padding-right: 1em; +} + +.scroll-snap-container > .scroll-snap-child +{ + scroll-snap-align: center; +} + +.w-30em +{ + width:30em!important; +} \ No newline at end of file diff --git a/src/ui/landmarkUI/landmarkUI.template.html b/src/ui/landmarkUI/landmarkUI.template.html new file mode 100644 index 0000000000000000000000000000000000000000..46085769ecdd1ea45a56ef7cc7f05a6bf690744f --- /dev/null +++ b/src/ui/landmarkUI/landmarkUI.template.html @@ -0,0 +1,67 @@ +<mat-card> + <mat-card-title> + + {{ name }} + </mat-card-title> + <mat-card-subtitle> + + <i class="fas fa-map-marker-alt"></i> + <span> + spatial landmark + </span> + </mat-card-subtitle> + + <div class="scroll-snap-container w-100 d-flex flex-row w-30em overflow-auto" mat-card-image> + <div *ngFor="let dsPreview of previewFiles" + class="scroll-snap-child w-30em"> + <kg-dataset-previewer + [darkmode]="darktheme$ | async" + [filename]="dsPreview.filename" + [kgId]="dsPreview.datasetKgId" + [backendUrl]="DS_PREVIEW_URL"> + </kg-dataset-previewer> + </div> + + </div> + <mat-card-content> + + <!-- preview --> + <div> + <small class="text-muted"> + Dataset preview + </small> + + <ng-container *ngFor="let dataset of datasets; let index = index"> + <kg-dataset-list + class="d-none" + [backendUrl]="DS_PREVIEW_URL" + [filterCriteriaProp]="filterCriteria" + *ngIf="dataset.fullId | getKgSchemaIdFromFullIdPipe as kgSchemaId" + (kgDsPrvUpdated)="handleKgDsPrvUpdate($event, kgSchemaId[1])" + [kgId]="kgSchemaId[1]"> + + </kg-dataset-list> + </ng-container> + </div> + + <hr class="text-muted"> + <!-- associated datasets --> + <div> + <small class="text-muted"> + Associated datasets + </small> + <div> + <ng-container *ngFor="let dataset of datasets"> + + <single-dataset-list-view + *ngIf="dataset.fullId | getKgSchemaIdFromFullIdPipe as kgSchemaId" + [ripple]="true" + [kgSchema]="kgSchemaId[0]" + [kgId]="kgSchemaId[1]"> + + </single-dataset-list-view> + </ng-container> + </div> + </div> + </mat-card-content> +</mat-card> diff --git a/src/ui/layerbrowser/layerbrowser.component.ts b/src/ui/layerbrowser/layerbrowser.component.ts index a3bdfe67c7bd4c77cfb08d126555ddb2d5480875..ff5df6f6f90b7eb7f13ff242dcfa52fa4c261073 100644 --- a/src/ui/layerbrowser/layerbrowser.component.ts +++ b/src/ui/layerbrowser/layerbrowser.component.ts @@ -8,6 +8,7 @@ import { NG_VIEWER_ACTION_TYPES } from "src/services/state/ngViewerState.store"; import { getViewer } from "src/util/fn"; import { INgLayerInterface } from "../../atlasViewer/atlasViewer.component"; import { FORCE_SHOW_SEGMENT, getNgIds, isDefined, REMOVE_NG_LAYER, safeFilter, ViewerStateInterface } from "../../services/stateStore.service"; +import { MatSliderChange } from "@angular/material"; @Component({ selector : 'layer-browser', @@ -47,6 +48,8 @@ export class LayerBrowser implements OnInit, OnDestroy { public darktheme$: Observable<boolean> + private customNgLayers: string[] = ['spatial landmark layer'] + constructor( private store: Store<ViewerStateInterface>, private constantsService: AtlasViewerConstantsServices, @@ -64,6 +67,7 @@ export class LayerBrowser implements OnInit, OnDestroy { return [ ngId, + ...this.customNgLayers, ...otherNgIds, ...templateSelected.parcellations.reduce((acc, curr) => { return acc.concat([ @@ -96,7 +100,7 @@ export class LayerBrowser implements OnInit, OnDestroy { const baseNameSet = new Set(baseNgLayerNames) return loadedNgLayers.filter(l => !baseNameSet.has(l.name)) }), - distinctUntilChanged(), + distinctUntilChanged() ) /** @@ -132,6 +136,8 @@ export class LayerBrowser implements OnInit, OnDestroy { this.subscriptions.push( this.forceShowSegment$.subscribe(state => this.forceShowSegmentCurrentState = state), ) + + this.viewer = getViewer() } public ngOnDestroy() { @@ -153,16 +159,17 @@ export class LayerBrowser implements OnInit, OnDestroy { } } + public viewer: any + public toggleVisibility(layer: any) { - const viewer = getViewer() const layerName = layer.name if (!layerName) { this.log.error('layer name not defined', layer) return } - const ngLayer = viewer.layerManager.getLayerByName(layerName) + const ngLayer = this.viewer.layerManager.getLayerByName(layerName) if (!ngLayer) { - this.log.error('ngLayer could not be found', layerName, viewer.layerManager.managedLayers) + this.log.error('ngLayer could not be found', layerName, this.viewer.layerManager.managedLayers) } ngLayer.setVisible(!ngLayer.visible) } @@ -205,6 +212,24 @@ export class LayerBrowser implements OnInit, OnDestroy { }) } + public changeOpacity(layerName: string, event: MatSliderChange){ + const { value } = event + const l = this.viewer.layerManager.getLayerByName(layerName) + if (!l) return + + if (typeof l.layer.opacity === 'object') { + l.layer.opacity.value = value + } else if (typeof l.layer.displayState === 'object') { + l.layer.displayState.selectedAlpha.value = value + } else { + this.log.warn({ + msg: `layer does not belong anywhere`, + layerName, + layer: l + }) + } + } + /** * TODO use observable and pipe to make this more perf */ @@ -235,3 +260,18 @@ export class LockedLayerBtnClsPipe implements PipeTransform { return (lockedLayers && new Set(lockedLayers).has(ngLayer.name)) || false } } + +@Pipe({ + name: 'getInitialLayerOpacityPipe' +}) + +export class GetInitialLayerOpacityPipe implements PipeTransform{ + public transform(viewer: any, layerName: string): number{ + if (!viewer) return 0 + const l = viewer.layerManager.getLayerByName(layerName) + if (!l || !l.layer) return 0 + if (typeof l.layer.opacity === 'object') return l.layer.opacity.value + else if (typeof l.layer.displayState === 'object') return l.layer.displayState.selectedAlpha.value + else return 0 + } +} diff --git a/src/ui/layerbrowser/layerbrowser.template.html b/src/ui/layerbrowser/layerbrowser.template.html index 197c7b6533ee8f3cc01d5b20dbce37c012488ea9..014df70a247ab30285f3a9b8ab9b1c22140e33aa 100644 --- a/src/ui/layerbrowser/layerbrowser.template.html +++ b/src/ui/layerbrowser/layerbrowser.template.html @@ -7,6 +7,20 @@ <mat-list *ngIf="nonBaseNgLayers.length > 0; else noLayerPlaceHolder"> <mat-list-item *ngFor="let ngLayer of nonBaseNgLayers" class="matListItem"> + <!-- toggle opacity --> + <div matTooltip="opacity"> + + <mat-slider + [disabled]="!ngLayer.visible" + min="0" + max="1" + (input)="changeOpacity(ngLayer.name, $event)" + [value]="viewer | getInitialLayerOpacityPipe: ngLayer.name" + step="0.01"> + + </mat-slider> + </div> + <!-- toggle visibility --> <button diff --git a/src/ui/nehubaContainer/nehubaContainer.component.ts b/src/ui/nehubaContainer/nehubaContainer.component.ts index ac50c13fb5ad1a4c411caa6cae0f6d8b77b9aa95..57f033a841748584ad4fa859fc88c1be5c166f40 100644 --- a/src/ui/nehubaContainer/nehubaContainer.component.ts +++ b/src/ui/nehubaContainer/nehubaContainer.component.ts @@ -155,8 +155,6 @@ export class NehubaContainer implements OnInit, OnChanges, OnDestroy { private log: LoggingService, ) { - this.exportNehuba = getExportNehuba() - this.useMobileUI$ = this.constantService.useMobileUI$ this.viewerPerformanceConfig$ = this.store.pipe( @@ -345,7 +343,13 @@ export class NehubaContainer implements OnInit, OnChanges, OnDestroy { private findPanelIndex = (panel: HTMLElement) => this.viewPanels.findIndex(p => p === panel) - private exportNehuba: any + private _exportNehuba: any + get exportNehuba() { + if (!this._exportNehuba) { + this._exportNehuba = getExportNehuba() + } + return this._exportNehuba + } public ngOnInit() { @@ -1086,7 +1090,7 @@ export class NehubaContainer implements OnInit, OnChanges, OnDestroy { this.nehubaViewerSubscriptions.push( this.nehubaViewer.mouseoverLandmarkEmitter.pipe( - throttleTime(100), + distinctUntilChanged() ).subscribe(label => { this.store.dispatch({ type : MOUSE_OVER_LANDMARK, diff --git a/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts b/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts index 1cb264cde6a2c183fdf807ac0f26a5053dce9b81..4b1b28cc730e31742909b20108e8096257690382 100644 --- a/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts +++ b/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts @@ -781,6 +781,7 @@ export class NehubaViewerUnit implements OnInit, OnDestroy { }) }) + // TODO bug: mouseoverlandmarkemitter does not emit empty for VTK layer when user mouse click this.ondestroySubscriptions.push( this.nehubaViewer.mouseOver.layer .filter(obj => obj.layer.name === this.constantService.ngLandmarkLayerName) diff --git a/src/ui/parcellationRegion/regionMenu/regionMenu.style.css b/src/ui/parcellationRegion/regionMenu/regionMenu.style.css index c9f10ea89767c6d94d967b6486d350e0f13f1910..e9a48a372933a13d21d572ccdc4d8cbf1120fa6b 100644 --- a/src/ui/parcellationRegion/regionMenu/regionMenu.style.css +++ b/src/ui/parcellationRegion/regionMenu/regionMenu.style.css @@ -8,13 +8,3 @@ max-height: 310px; transition: max-height 0.25s ease-in; } - -[fixedMouseContextualContainerDirective] -{ - width: 15rem; -} - -[fixedMouseContextualContainerDirective] div[body] -{ - overflow: hidden; -} diff --git a/src/ui/parcellationRegion/regionMenu/regionMenu.template.html b/src/ui/parcellationRegion/regionMenu/regionMenu.template.html index 68f7925fd672d87b5ce1b8e33d320f5dfd51902e..b3271e18f5c696351a1a65dbcf5b33c76f357bc1 100644 --- a/src/ui/parcellationRegion/regionMenu/regionMenu.template.html +++ b/src/ui/parcellationRegion/regionMenu/regionMenu.template.html @@ -1,6 +1,12 @@ <mat-card> - <mat-card-subtitle> + <mat-card-title> {{ region.name }} + </mat-card-title> + <mat-card-subtitle> + <i class="fas fa-brain"></i> + <span> + Brain region + </span> </mat-card-subtitle> <mat-card-content> {{ region.description }} diff --git a/src/ui/searchSideNav/searchSideNav.component.spec.ts b/src/ui/searchSideNav/searchSideNav.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..d080ecbcbd11f57c2de8c9747324a095ad84a8ed --- /dev/null +++ b/src/ui/searchSideNav/searchSideNav.component.spec.ts @@ -0,0 +1,93 @@ +import { async, TestBed } from '@angular/core/testing' +import {} from 'jasmine' +import { AngularMaterialModule } from '../../ui/sharedModules/angularMaterial.module' +import { UIModule } from '../ui.module' +import { SearchSideNav } from './searchSideNav.component' +import { provideMockStore } from '@ngrx/store/testing' +import { defaultRootState } from 'src/services/stateStore.service' +import { By } from '@angular/platform-browser' +import { CdkFixedSizeVirtualScroll } from '@angular/cdk/scrolling' +import { COLIN, JUBRAIN_COLIN_CH123_LEFT, JUBRAIN_COLIN_CH123_RIGHT, JUBRAIN_COLIN, HttpMockRequestInterceptor } from 'spec/util' +import { HTTP_INTERCEPTORS } from '@angular/common/http' +import { ViewerStateController } from '../viewerStateController/viewerStateCFull/viewerState.component' + +describe('SearchSideNav component', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + AngularMaterialModule, + UIModule + ], + providers: [ + provideMockStore({ initialState: { + ...defaultRootState, + uiState: { + ...defaultRootState.uiState, + sidePanelExploreCurrentViewIsOpen: true + }, + viewerState: { + ...defaultRootState.viewerState, + templateSelected: COLIN, + parcellationSelected: JUBRAIN_COLIN, + regionsSelected:[ JUBRAIN_COLIN_CH123_LEFT, JUBRAIN_COLIN_CH123_RIGHT ] + } + }}), + { + provide: HTTP_INTERCEPTORS, + useClass: HttpMockRequestInterceptor, + multi: true + } + + ] + }).compileComponents() + })) + it('should create component', () => { + + const fixture = TestBed.createComponent(SearchSideNav); + const app = fixture.debugElement.componentInstance; + + expect(app).toBeTruthy(); + + }) + + it('viewerStateController should be visible', async () => { + + const fixture = TestBed.createComponent(SearchSideNav); + + const vsController = fixture.debugElement.query(By.directive(ViewerStateController)) + expect(vsController).toBeTruthy(); + }) + + it('when parent size is defined, child component should be of the same size', () => { + const fixture = TestBed.createComponent(SearchSideNav) + + fixture.nativeElement.style.width = '1000px' + fixture.nativeElement.style.height = '1000px' + + fixture.debugElement.nativeElement.classList.add('h-100', 'w-100', 'd-block', 'overflow-visible') + + fixture.detectChanges() + + expect(fixture.debugElement.nativeElement.style.width).toEqual('1000px') + expect(fixture.debugElement.nativeElement.style.height).toEqual('1000px') + }) + + it('when multiple regions are selected, cdk should be visible', () => { + + const fixture = TestBed.createComponent(SearchSideNav); + fixture.nativeElement.style.width = '1000px' + fixture.nativeElement.style.height = '1000px' + + fixture.debugElement.nativeElement.classList.add('h-100', 'd-block', 'overflow-visible') + fixture.detectChanges() + + expect(fixture.debugElement.nativeElement.clientWidth).toBeGreaterThan(100) + expect(fixture.debugElement.nativeElement.clientHeight).toBeGreaterThan(100) + + const cdkViewPort = fixture.debugElement.query(By.directive(CdkFixedSizeVirtualScroll)) + expect(cdkViewPort).toBeTruthy() + + expect(cdkViewPort.nativeElement.clientWidth).toBeGreaterThan(80) + expect(cdkViewPort.nativeElement.clientHeight).toBeGreaterThan(80) + }) +}) diff --git a/src/ui/searchSideNav/searchSideNav.component.ts b/src/ui/searchSideNav/searchSideNav.component.ts index b8533a630ee23712fe543613f74f7cd551b173d4..2bbacbb6e0e8ede1e19f55d4e7102ae237301fcd 100644 --- a/src/ui/searchSideNav/searchSideNav.component.ts +++ b/src/ui/searchSideNav/searchSideNav.component.ts @@ -13,6 +13,8 @@ import { import { IavRootStoreInterface, SELECT_REGIONS } from "src/services/stateStore.service"; import { LayerBrowser } from "../layerbrowser/layerbrowser.component"; import { trackRegionBy } from '../viewerStateController/regionHierachy/regionHierarchy.component' +import { determinePreviewFileType, PREVIEW_FILE_TYPES } from "../databrowserModule/preview/previewFileIcon.pipe"; +import { DS_PREVIEW_URL } from 'src/util/constants' @Component({ selector: 'search-side-nav', @@ -31,18 +33,26 @@ export class SearchSideNav implements OnDestroy { @Output() public dismiss: EventEmitter<any> = new EventEmitter() @ViewChild('layerBrowserTmpl', {read: TemplateRef}) public layerBrowserTmpl: TemplateRef<any> + @ViewChild('kgDatasetPreviewer', {read: TemplateRef}) private kgDatasetPreview: TemplateRef<any> public autoOpenSideNavDataset$: Observable<any> public sidePanelExploreCurrentViewIsOpen$: Observable<any> public sidePanelCurrentViewContent: Observable<any> + public darktheme$: Observable<boolean> + + public DS_PREVIEW_URL = DS_PREVIEW_URL + constructor( public dialog: MatDialog, private store$: Store<IavRootStoreInterface>, private snackBar: MatSnackBar, private constantService: AtlasViewerConstantsServices, ) { + + this.darktheme$ = this.constantService.darktheme$ + this.autoOpenSideNavDataset$ = this.store$.pipe( select('viewerState'), select('regionsSelected'), @@ -62,8 +72,33 @@ export class SearchSideNav implements OnDestroy { select('uiState'), select("sidePanelCurrentViewContent"), ) + + this.subscriptions.push( + this.store$.pipe( + select('dataStore'), + select('datasetPreviews'), + filter(datasetPreviews => datasetPreviews.length > 0), + map((datasetPreviews) => datasetPreviews[datasetPreviews.length - 1]), + filter(({ file }) => determinePreviewFileType(file) !== PREVIEW_FILE_TYPES.NIFTI) + ).subscribe(({ dataset, file }) => { + + const { fullId } = dataset + const { filename } = file + + // TODO replace with common/util/getIdFromFullId + this.previewKgId = /\/([a-f0-9-]{1,})$/.exec(fullId)[1] + this.previewFilename = filename + this.dialog.open(this.kgDatasetPreview, { + minWidth: '50vw', + minHeight: '50vh' + }) + }) + ) } + public previewKgId: string + public previewFilename: string + public collapseSidePanelCurrentView() { this.store$.dispatch({ type: COLLAPSE_SIDE_PANEL_CURRENT_VIEW, diff --git a/src/ui/searchSideNav/searchSideNav.style.css b/src/ui/searchSideNav/searchSideNav.style.css index 5bb036cfb94a7098f23e386101b641f6fbae208a..40287116012a17025cc03415606ed3a3b6fcaaf6 100644 --- a/src/ui/searchSideNav/searchSideNav.style.css +++ b/src/ui/searchSideNav/searchSideNav.style.css @@ -3,14 +3,6 @@ height: 55px; } -/* exactly 1.5 line height */ - -.h-117px -{ - min-height:117px!important; - flex-basis: 117px!important; -} - .mat-divider-full-width { margin-right:-1.5rem; @@ -19,5 +11,15 @@ } connectivity-browser { - max-height: calc(100% - 200px); -} \ No newline at end of file + max-height: calc(100% - 220px); +} + +.min-w-50vw +{ + min-width: 50vw!important; +} + +.min-h-50vh +{ + min-height: 50vh!important; +} diff --git a/src/ui/searchSideNav/searchSideNav.template.html b/src/ui/searchSideNav/searchSideNav.template.html index 8331fba31b1645fcc3f8bb2a3935509165db40a2..223de4c5cabc39966f89dbb477513dad065072ce 100644 --- a/src/ui/searchSideNav/searchSideNav.template.html +++ b/src/ui/searchSideNav/searchSideNav.template.html @@ -86,7 +86,7 @@ </div> <!-- show when regions are selected --> - <div *ngIf="regionsSelected.length > 0" class="h-100 d-flex flex-column"> + <div *ngIf="regionsSelected.length > 0" class="flex-grow-1 d-flex flex-column"> <!-- header --> <div class="flex-grow-0 flex-shrink-0"> @@ -95,7 +95,7 @@ </div> <!-- body (region descriptor or multi region list) --> - <div class="flex-grow-1 flex-shrink-1"> + <div class="flex-grow-1 flex-shrink-1 d-flex flex-column"> <ng-container *ngTemplateOutlet="body"> </ng-container> </div> @@ -125,6 +125,9 @@ </ng-template> <ng-template #body> + + <!-- TODO bug in browser? unless using d-flex here and flex-grow-1 in child, child cannot fille parent, even with h-100 --> + <!-- single region --> <ng-template [ngIf]="regionsSelected.length === 1" [ngIfElse]="multiRegionTemplate"> @@ -139,9 +142,10 @@ </region-list-simple-view> </ng-template> + <!-- multi region --> <ng-template #multiRegionTemplate> - <div class="h-100 d-flex flex-column"> + <div class="flex-grow-1 d-flex flex-row"> <cdk-virtual-scroll-viewport class="flex-grow-1 flex-shrink-1" @@ -168,3 +172,14 @@ </ng-template> </ng-container> </ng-template> + + +<ng-template #kgDatasetPreviewer> + <kg-dataset-previewer + [darkmode]="darktheme$ | async" + [filename]="previewFilename" + [kgId]="previewKgId" + [backendUrl]="DS_PREVIEW_URL"> + + </kg-dataset-previewer> +</ng-template> \ No newline at end of file diff --git a/src/ui/ui.module.ts b/src/ui/ui.module.ts index 0411b1d707fadbebe8d4a5cd05d120d837890a14..214785c6dc9f92040438010f2fa4c7d04e6b2974 100644 --- a/src/ui/ui.module.ts +++ b/src/ui/ui.module.ts @@ -18,7 +18,7 @@ import { SortDataEntriesToRegion } from "../util/pipes/sortDataEntriesIntoRegion import { CitationsContainer } from "./citation/citations.component"; import { KgEntryViewer } from "./kgEntryViewer/kgentry.component"; import { SubjectViewer } from "./kgEntryViewer/subjectViewer/subjectViewer.component"; -import { LayerBrowser, LockedLayerBtnClsPipe } from "./layerbrowser/layerbrowser.component"; +import { LayerBrowser, LockedLayerBtnClsPipe, GetInitialLayerOpacityPipe } from "./layerbrowser/layerbrowser.component"; import { LandmarkUnit } from "./nehubaContainer/landmarkUnit/landmarkUnit.component"; import { PluginBannerUI } from "./pluginBanner/pluginBanner.component"; @@ -78,6 +78,7 @@ import {ConnectivityBrowserComponent} from "src/ui/connectivityBrowser/connectiv import { RegionMenuComponent } from 'src/ui/parcellationRegion/regionMenu/regionMenu.component' import { RegionListSimpleViewComponent } from "./parcellationRegion/regionListSimpleView/regionListSimpleView.component"; import { SimpleRegionComponent } from "./parcellationRegion/regionSimple/regionSimple.component"; +import { LandmarkUIComponent } from "./landmarkUI/landmarkUI.component"; @NgModule({ imports : [ @@ -129,6 +130,7 @@ import { SimpleRegionComponent } from "./parcellationRegion/regionSimple/regionS ConnectivityBrowserComponent, SimpleRegionComponent, RegionListSimpleViewComponent, + LandmarkUIComponent, /* pipes */ GroupDatasetByRegion, @@ -155,6 +157,7 @@ import { SimpleRegionComponent } from "./parcellationRegion/regionSimple/regionS TemplateParcellationHasMoreInfo, HumanReadableFileSizePipe, ReorderPanelIndexPipe, + GetInitialLayerOpacityPipe, /* directive */ DownloadDirective, @@ -192,6 +195,7 @@ import { SimpleRegionComponent } from "./parcellationRegion/regionSimple/regionS ViewerStateMini, RegionMenuComponent, FixedMouseContextualContainerDirective, + LandmarkUIComponent ], schemas: [ CUSTOM_ELEMENTS_SCHEMA, diff --git a/src/util/constants.ts b/src/util/constants.ts index d43935864e7a384045bc4163bd4518ffc10d6ec0..e9d16f04d6a432b054b425702525bfbcf6304342 100644 --- a/src/util/constants.ts +++ b/src/util/constants.ts @@ -11,3 +11,4 @@ export const LOCAL_STORAGE_CONST = { export const COOKIE_VERSION = '0.3.0' export const KG_TOS_VERSION = '0.3.0' +export const DS_PREVIEW_URL = DATASET_PREVIEW_URL \ No newline at end of file diff --git a/src/util/directives/FixedMouseContextualContainerDirective.directive.ts b/src/util/directives/FixedMouseContextualContainerDirective.directive.ts index d12fdc160d4d1600531fa4fe9b71d7168c557974..113bc0650d13bbea99dbf3527a979a35b966df91 100644 --- a/src/util/directives/FixedMouseContextualContainerDirective.directive.ts +++ b/src/util/directives/FixedMouseContextualContainerDirective.directive.ts @@ -2,6 +2,7 @@ import { Directive, ElementRef, EventEmitter, HostBinding, Input, Output } from @Directive({ selector: '[fixedMouseContextualContainerDirective]', + exportAs: 'iavFixedMouseCtxContainer' }) export class FixedMouseContextualContainerDirective { @@ -21,21 +22,27 @@ export class FixedMouseContextualContainerDirective { constructor( private el: ElementRef, ) { - } - public show() { - setTimeout(() => { - if (window.innerHeight - this.mousePos[1] < this.el.nativeElement.clientHeight) { - this.mousePos[1] = window.innerHeight - this.el.nativeElement.clientHeight - } + public recalculatePosition(){ + const clientWidth = this.el.nativeElement.clientWidth + const clientHeight = this.el.nativeElement.clientHeight + + const windowInnerWidth = window.innerWidth + const windowInnerHeight = window.innerHeight + if (windowInnerHeight - this.mousePos[1] < clientHeight) { + this.mousePos[1] = windowInnerHeight - clientHeight + } - if ((window.innerWidth - this.mousePos[0]) < this.el.nativeElement.clientWidth) { - this.mousePos[0] = window.innerWidth - this.el.nativeElement.clientWidth - } + if ((windowInnerWidth - this.mousePos[0]) < clientWidth) { + this.mousePos[0] = windowInnerWidth - clientWidth + } - this.transform = `translate(${this.mousePos.map(v => v.toString() + 'px').join(', ')})` - }) + this.transform = `translate(${this.mousePos.map(v => v.toString() + 'px').join(', ')})` + } + + public show() { + setTimeout(() => this.recalculatePosition()) this.styleDisplay = 'inline-block' this.isShown = true this.onShow.emit() diff --git a/src/util/directives/mouseOver.directive.spec.ts b/src/util/directives/mouseOver.directive.spec.ts index 3a7a26b9d20ee44cedc4fc80f1db579070308456..613d78ee825f93026770c06378d28e1b9464de9c 100644 --- a/src/util/directives/mouseOver.directive.spec.ts +++ b/src/util/directives/mouseOver.directive.spec.ts @@ -4,7 +4,7 @@ import { scan, skip, take } from 'rxjs/operators'; import { temporalPositveScanFn } from './mouseOver.directive' const segmentsPositive = { segments: [{ hello: 'world' }] } as {segments: any} -const segmentsNegative = { segments: null } +const segmentsNegative = { segments: [] } const userLandmarkPostive = { userLandmark: true } const userLandmarkNegative = { userLandmark: null } diff --git a/src/util/directives/mouseOver.directive.ts b/src/util/directives/mouseOver.directive.ts index 53dc7dadb23e306e57556f010f30f606b1bb2e90..56402863cc100ac51df759bf4a1529752de5d110 100644 --- a/src/util/directives/mouseOver.directive.ts +++ b/src/util/directives/mouseOver.directive.ts @@ -21,7 +21,12 @@ import { getNgIdLabelIndexFromId, IavRootStoreInterface } from "src/services/sta export const temporalPositveScanFn = (acc: Array<{segments: any, landmark: any, userLandmark: any}>, curr: {segments: any, landmark: any, userLandmark: any}) => { const keys = Object.keys(curr) - const isPositive = keys.some(key => !!curr[key]) + + // empty array is truthy + const isPositive = keys.some(key => Array.isArray(curr[key]) + ? curr[key].length > 0 + : !!curr[key] + ) return isPositive ? [curr, ...(acc.filter(item => !keys.some(key => !!item[key])))] as Array<{segments?: any, landmark?: any, userLandmark?: any}> @@ -43,15 +48,18 @@ export class MouseHoverDirective { private log: LoggingService, ) { + // TODO consider moving these into a single obs serviced by a DI service + // can potentially net better performance + const onHoverUserLandmark$ = this.store$.pipe( select('uiState'), - map(state => state.mouseOverUserLandmark), + select('mouseOverUserLandmark'), ) const onHoverLandmark$ = combineLatest( this.store$.pipe( select('uiState'), - map(state => state.mouseOverLandmark), + select('mouseOverLandmark'), ), this.store$.pipe( select('dataStore'), @@ -163,8 +171,17 @@ export class MouseOverTextPipe implements PipeTransform { private renderText = ({ label, obj }): SafeHtml[] => { switch (label) { - case 'landmark': - return [this.sanitizer.sanitize(SecurityContext.HTML, obj.landmarkName)] + case 'landmark': { + const { dataset = [] } = obj + return [ + this.sanitizer.sanitize(SecurityContext.HTML, obj.landmarkName), + ...(dataset.map(ds => this.sanitizer.bypassSecurityTrustHtml(` +<span class="text-muted"> + ${this.sanitizer.sanitize(SecurityContext.HTML, ds.name)} +</span> +`))) + ] + } case 'segments': return obj.map(({ segment }) => this.transformOnHoverSegmentPipe.transform(segment)) case 'userLandmark': @@ -186,7 +203,7 @@ export class MouseOverTextPipe implements PipeTransform { .map(key => { return { label: key, - text: this.renderText({ label: key, obj: inc[key] }), + text: this.renderText({ label: key, obj: inc[key] }) } }) } diff --git a/typings/index.d.ts b/typings/index.d.ts index 8c0461449380840d0bbbcdaf7ee5183a6b08b7bc..cf1b4e30fca132c62ee8261a800088f789b392e1 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -14,3 +14,4 @@ declare var VERSION : string declare var PRODUCTION: boolean declare var BACKEND_URL: string declare var USE_LOGO: string +declare var DATASET_PREVIEW_URL: string diff --git a/webpack.common.js b/webpack.common.js index b432b1d516e6e026f7ea57cb6207a13507866848..52e987bddbf7f90d2b16f55ff9b4a16b0b221953 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -32,7 +32,8 @@ module.exports = { alias : { "third_party" : path.resolve(__dirname,'third_party'), "src" : path.resolve(__dirname,'src'), - "common": path.resolve(__dirname, 'common') + "common": path.resolve(__dirname, 'common'), + "spec": path.resolve(__dirname, 'spec') } }, } \ No newline at end of file diff --git a/webpack.staticassets.js b/webpack.staticassets.js index 5732303b88538bc26c52a14a36737dca17560735..eb5271a3c176e8783ed3107745f8531ab31097f8 100644 --- a/webpack.staticassets.js +++ b/webpack.staticassets.js @@ -70,7 +70,8 @@ module.exports = { ? true : false, BACKEND_URL: (process.env.BACKEND_URL && JSON.stringify(process.env.BACKEND_URL)) || 'null', - USE_LOGO: JSON.stringify(process.env.USE_LOGO || 'hbp' || 'ebrains' ) + USE_LOGO: JSON.stringify(process.env.USE_LOGO || 'hbp' || 'ebrains' ), + DATASET_PREVIEW_URL: JSON.stringify(process.env.DATASET_PREVIEW_URL || 'https://hbp-kg-dataset-previewer.apps.hbp.eu/datasetPreview') }) ], resolve: {