From 1be2ee0c14204f080e0e1f53ec9173a11a0068bb Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Fri, 22 Jun 2018 16:11:25 +0200 Subject: [PATCH] reimplemented all other features --- src/atlasViewer/atlasViewer.component.ts | 361 ++- .../atlasViewer.constantService.service.ts | 111 + .../atlasViewer.dataService.service.ts | 128 +- src/atlasViewer/atlasViewer.style.css | 74 +- src/atlasViewer/atlasViewer.template.html | 84 +- .../atlasViewer.uiService.serivce.ts | 11 + .../atlasViewer.urlService.service.ts | 157 + .../modalUnit/modalUnit.component.ts | 17 + src/atlasViewer/modalUnit/modalUnit.style.css | 0 .../modalUnit/modalUnit.template.html | 9 + .../widgetUnit/widgetDirective.directive.ts | 0 .../widgetUnit/widgetService.service.ts | 144 + .../widgetUnit/widgetUnit.component.ts | 114 + .../widgetUnit/widgetUnit.style.css | 43 + .../widgetUnit/widgetUnit.template.html | 31 + src/components/components.module.ts | 3 + src/components/markdown/markdown.component.ts | 2 +- src/components/panel/panel.style.css | 1 + src/components/toast/toast.component.ts | 27 + src/components/toast/toast.style.css | 25 + src/components/toast/toast.template.html | 10 + src/index.html | 3 + src/layouts/mainside/mainside.component.ts | 9 +- src/layouts/mainside/mainside.template.html | 2 +- src/main.module.ts | 49 +- src/res/cvtSwm.js | 20 + src/res/ext/swmAggregatedData.json | 2 +- src/res/ext/swmAggregatedData.json.bak | 2868 +++++++++++++++++ src/services/stateStore.service.ts | 141 +- src/ui/banner/banner.component.ts | 89 +- src/ui/banner/banner.template.html | 5 +- src/ui/databrowser/databrowser.component.ts | 292 +- src/ui/databrowser/databrowser.style.css | 30 + src/ui/databrowser/databrowser.template.html | 73 +- .../dedicated/dedicated.component.ts | 65 + .../fileviewer/dedicated/dedicated.style.css | 20 + .../dedicated/dedicated.template.html | 36 + src/ui/fileviewer/fileviewer.component.ts | 80 +- src/ui/fileviewer/fileviewer.template.html | 15 +- .../fileviewer/radar/radar.chart.component.ts | 12 +- .../landmarkUnit/landmarkUnit.component.ts | 85 + .../landmarkUnit/landmarkUnit.style.css | 91 + .../landmarkUnit/landmarkUnit.template.html | 41 + .../nehubaContainer.component.ts | 375 ++- .../nehubaContainer/nehubaContainer.style.css | 38 +- .../nehubaContainer.template.html | 62 +- .../nehubaViewer/nehubaViewer.component.ts | 320 +- .../nehubaViewer/nehubaViewer.template.html | 2 +- src/ui/ui.module.ts | 18 +- .../directives/glyphiconTooltip.directive.ts | 158 + src/util/pipes/copyProperty.pipe.ts | 2 + .../pipes/getFileNameFromPathName.pipe.ts | 12 + src/util/pipes/pathToNestedChildren.pipe.ts | 2 + src/util/pipes/safeStyle.pipe.ts | 16 + 54 files changed, 5963 insertions(+), 422 deletions(-) create mode 100644 src/atlasViewer/atlasViewer.constantService.service.ts create mode 100644 src/atlasViewer/atlasViewer.uiService.serivce.ts create mode 100644 src/atlasViewer/atlasViewer.urlService.service.ts create mode 100644 src/atlasViewer/modalUnit/modalUnit.component.ts create mode 100644 src/atlasViewer/modalUnit/modalUnit.style.css create mode 100644 src/atlasViewer/modalUnit/modalUnit.template.html create mode 100644 src/atlasViewer/widgetUnit/widgetDirective.directive.ts create mode 100644 src/atlasViewer/widgetUnit/widgetService.service.ts create mode 100644 src/atlasViewer/widgetUnit/widgetUnit.component.ts create mode 100644 src/atlasViewer/widgetUnit/widgetUnit.style.css create mode 100644 src/atlasViewer/widgetUnit/widgetUnit.template.html create mode 100644 src/components/toast/toast.component.ts create mode 100644 src/components/toast/toast.style.css create mode 100644 src/components/toast/toast.template.html create mode 100644 src/res/cvtSwm.js create mode 100644 src/res/ext/swmAggregatedData.json.bak create mode 100644 src/ui/fileviewer/dedicated/dedicated.component.ts create mode 100644 src/ui/fileviewer/dedicated/dedicated.style.css create mode 100644 src/ui/fileviewer/dedicated/dedicated.template.html create mode 100644 src/ui/nehubaContainer/landmarkUnit/landmarkUnit.component.ts create mode 100644 src/ui/nehubaContainer/landmarkUnit/landmarkUnit.style.css create mode 100644 src/ui/nehubaContainer/landmarkUnit/landmarkUnit.template.html create mode 100644 src/util/directives/glyphiconTooltip.directive.ts create mode 100644 src/util/pipes/getFileNameFromPathName.pipe.ts create mode 100644 src/util/pipes/safeStyle.pipe.ts diff --git a/src/atlasViewer/atlasViewer.component.ts b/src/atlasViewer/atlasViewer.component.ts index e5b7633a1..ef92e3e15 100644 --- a/src/atlasViewer/atlasViewer.component.ts +++ b/src/atlasViewer/atlasViewer.component.ts @@ -1,8 +1,20 @@ -import { Component, HostBinding, ViewChild, ViewContainerRef, AfterViewInit } from "@angular/core"; +import { Component, HostBinding, ViewChild, ViewContainerRef, ComponentFactoryResolver, ComponentFactory, OnDestroy, ElementRef, Injector, ComponentRef, AfterViewInit, OnInit, TemplateRef, HostListener } from "@angular/core"; import { Store, select } from "@ngrx/store"; -import { ViewerStateInterface, FETCHED_TEMPLATES, safeFilter, Property, FETCHED_METADATA, FETCHED_DATAENTRIES, DataEntry } from "../services/stateStore.service"; -import { Observable } from "rxjs"; -import { map } from "rxjs/operators"; +import { ViewerStateInterface, safeFilter, OPEN_SIDE_PANEL, CLOSE_SIDE_PANEL, isDefined, NEWVIEWER, viewerState, CHANGE_NAVIGATION, SELECT_REGIONS, getLabelIndexMap, LOAD_DEDICATED_LAYER, UNLOAD_DEDICATED_LAYER } from "../services/stateStore.service"; +import { Observable, Subscription, combineLatest, merge } from "rxjs"; +import { map, filter, scan, take, distinctUntilChanged } from "rxjs/operators"; +import { AtlasViewerDataService } from "./atlasViewer.dataService.service"; +import { WidgetServices } from "./widgetUnit/widgetService.service"; +import { DataBrowserUI } from "../ui/databrowser/databrowser.component"; +import { LayoutMainSide } from "../layouts/mainside/mainside.component"; +import { Chart } from 'chart.js' +import { AtlasViewerConstantsServices } from "./atlasViewer.constantService.service"; +import { BsModalService } from "ngx-bootstrap/modal"; +import { ModalUnit } from "./modalUnit/modalUnit.component"; +import { AtlasViewerURLService } from "./atlasViewer.urlService.service"; +import { ToastComponent } from "../components/toast/toast.component"; +import { WidgetUnit } from "./widgetUnit/widgetUnit.component"; + @Component({ selector : 'atlas-viewer', @@ -12,124 +24,257 @@ import { map } from "rxjs/operators"; ] }) -export class AtlasViewer implements AfterViewInit{ +export class AtlasViewer implements OnDestroy,OnInit,AfterViewInit{ + + @ViewChild('dockedContainer',{read:ViewContainerRef}) dockedContainer : ViewContainerRef + @ViewChild('floatingContainer',{read:ViewContainerRef}) floatingContainer : ViewContainerRef + @ViewChild('databrowser',{read:ElementRef}) databrowser : ElementRef + @ViewChild('temporaryContainer',{read:ViewContainerRef}) temporaryContainer : ViewContainerRef + + @ViewChild('toastContainer',{read:ViewContainerRef}) toastContainer : ViewContainerRef + @ViewChild('dedicatedViewerToast',{read:TemplateRef}) dedicatedViewerToast : TemplateRef<any> + + @ViewChild('floatingMouseContextualContainer', {read:ViewContainerRef}) floatingMouseContextualContainer : ViewContainerRef + + @ViewChild(LayoutMainSide) layoutMainSide : LayoutMainSide @HostBinding('attr.darktheme') darktheme : boolean = false - @ViewChild('sidecontent',{read:ViewContainerRef}) sideContent : ViewContainerRef - - selectedTemplate$ : Observable<any> - - constructor(private store : Store<ViewerStateInterface>){ - const urls = [ - 'res/json/infant.json', - 'res/json/bigbrain.json', - 'res/json/colin.json', - 'res/json/MNI152.json', - 'res/json/waxholmRatV2_0.json', - 'res/json/allenMouse.json' - ] - - Promise.all(urls.map(url=> - fetch(url) - .then(res=> - res.json()) - .then(json=>json.nehubaConfig && !json.nehubaConfigURL ? - Promise.resolve(json) : - fetch(json.nehubaConfigURL) - .then(r=>r.json()) - .then(nehubaConfig=>Promise.resolve(Object.assign({},json,{ nehubaConfig }))) - ))) - .then(arrJson=> - this.store.dispatch({ - type : FETCHED_TEMPLATES, - fetchedTemplate : arrJson - })) - .catch(console.error) - - this.selectedTemplate$ = this.store.pipe( - select('newViewer'), - safeFilter('templateSelected'), - map(state=>state.templateSelected)) - - this.selectedTemplate$.subscribe(template=>this.darktheme = template.useTheme === 'dark') + meetsRequirement : boolean = true + + toastComponentFactory : ComponentFactory<ToastComponent> + databrowserComponentFactory : ComponentFactory<DataBrowserUI> + databrowserComponentRef : ComponentRef<DataBrowserUI> + private databrowserHostComponentRef :ComponentRef<WidgetUnit> + private dedicatedViewComponentRef : ComponentRef<ToastComponent> + + private newViewer$ : Observable<any> + public dedicatedView$ : Observable<string|null> + public onhoverSegment$ : Observable<string> + private subscriptions : Subscription[] = [] + + constructor( + private store : Store<ViewerStateInterface>, + public dataService : AtlasViewerDataService, + private cfr : ComponentFactoryResolver, + private widgetServices : WidgetServices, + private constantsService : AtlasViewerConstantsServices, + public urlService : AtlasViewerURLService, + private modalService:BsModalService, + private injector : Injector + ){ + this.toastComponentFactory = this.cfr.resolveComponentFactory(ToastComponent) + this.databrowserComponentFactory = this.cfr.resolveComponentFactory(DataBrowserUI) + this.databrowserComponentRef = this.databrowserComponentFactory.create( this.injector ) + + this.newViewer$ = this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state) && isDefined(state.templateSelected)), + map(state=>state.templateSelected), + distinctUntilChanged((t1,t2)=>t1.name === t2.name) + ) + + this.dedicatedView$ = this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state)&& typeof state.dedicatedView !== 'undefined'), + map(state=>state.dedicatedView), + distinctUntilChanged() + ) + + this.onhoverSegment$ = this.store.pipe( + select('uiState'), + filter(state=>isDefined(state)), + map(state=>state.mouseOverSegment ? + state.mouseOverSegment.constructor === Number ? + state.mouseOverSegment.toString() : + state.mouseOverSegment.name : + '' ), + distinctUntilChanged() + ) + } - ngAfterViewInit(){ + ngOnInit(){ + + this.meetsRequirement = this.meetsRequirements() - const meta = 'res/json/allAggregatedData.json' - const urls = [ - 'res/json/receptorAggregatedData.json', - 'res/json/pmapsAggregatedData.json', - 'res/json/dwmAggregatedData.json', - 'res/json/swmAggregatedData.json', - 'res/json/dartboardAggregatedData.json' - ] - - const dispatchData = (arr:DataEntry[][]) =>{ - this.store.dispatch({ - type : FETCHED_DATAENTRIES, - fetchedDataEntries : arr.reduce((acc,curr)=>acc.concat(curr),[]) + this.subscriptions.push( + this.dedicatedView$.subscribe(string=>{ + if(string === null){ + if(this.dedicatedViewComponentRef) + this.dedicatedViewComponentRef.destroy() + return + } + this.dedicatedViewComponentRef = this.toastContainer.createComponent( this.toastComponentFactory ) + this.dedicatedViewComponentRef.instance.messageContainer.createEmbeddedView( this.dedicatedViewerToast ) + this.dedicatedViewComponentRef.instance.dismissable = false }) - } + ) - const fetchData = (parcellationName : string) => { - if(parcellationName == 'JuBrain Cytoarchitectonic Atlas'){ - Promise.all([ - fetch('res/json/pmapsAggregatedData.json').then(res=>res.json()), - fetch('res/json/receptorAggregatedData.json').then(res=>res.json()), - ]) - .then(arr=>dispatchData(arr)) - .catch(console.warn) - } - else if (parcellationName == 'Fibre Bundle Atlas - Short Bundle'){ - Promise.all([fetch('res/json/swmAggregatedData.json').then(res=>res.json())]) - .then(arr=>dispatchData(arr)) - .catch(console.warn) - - }else if (parcellationName == 'Fibre Bundle Atlas - Long Bundle'){ + this.subscriptions.push( + this.newViewer$.subscribe(template=>{ + this.darktheme = this.meetsRequirement ? + template.useTheme === 'dark' : + false + + if(this.databrowserHostComponentRef){ + this.databrowserHostComponentRef.instance.container.detach(0) + this.temporaryContainer.insert( this.databrowserComponentRef.hostView ) + } + this.widgetServices.clearAllWidgets() + this.databrowserHostComponentRef = + this.widgetServices.addNewWidget(this.databrowserComponentRef,{ + title : 'Data Browser', + exitable :false, + state : 'docked' + }) + }) + ) + + this.subscriptions.push( + this.store.pipe( + select('uiState'), + safeFilter('sidePanelOpen'), + map(state=>state.sidePanelOpen) + ).subscribe(show=> + this.layoutMainSide.showSide=show) + ) + + /** + * 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 = this.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) - Promise.all([fetch('res/json/dwmAggregatedData.json').then(res=>res.json())]) - .then(arr=>dispatchData(arr)) - .catch(console.warn) - } - else{ - dispatchData([]) + }, + + /* 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 : function(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]))), + ... this.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,{ + ...this.constantsService.chartBaseStyle + }) + }else{ + return dataset + } + }else{ + return dataset + } + }) + } } + }) + } + + ngOnDestroy(){ + this.subscriptions.forEach(s=>s.unsubscribe()) + } + + ngAfterViewInit(){ + this.widgetServices.floatingContainer = this.floatingContainer + this.widgetServices.dockedContainer = this.dockedContainer + } + + meetsRequirements(){ + + const canvas = document.createElement('canvas') + const gl = canvas.getContext('webgl') + const message:any = { + Error:'Your browser does not meet the minimum requirements to run neuroglancer.' + } + + if(!gl){ + message['Detail'] = 'Your browser does not support WebGL.' + + this.modalService.show(ModalUnit,{ + initialState : { + title : message.Error, + body : message.Detail + } + }) + return false } - fetch(meta) - .then(res=>res.json()) - .then(metadata=>{ - const data = metadata.reduce((acc:[string,Map<string,{properties:Property}>][],curr:any)=>{ - const idx = acc.findIndex((it)=>it[0]===curr[0].targetParcellation) - return idx >= 0 ? - acc.map((it,i)=> i === idx ? [it[0], it[1].set(curr[0].datasetName,curr[1])] : it ) : - acc.concat([[ curr[0].targetParcellation , new Map([[curr[0].datasetName , curr[1]]]) ]]) - - /* [[ curr[0].targetParcellation , [ curr[0].datasetName , curr[1]] ]] */ - },[] as [string,Map<string,{properties:Property}>][]) - - this.store.dispatch({ - type : FETCHED_METADATA, - fetchedMetadataMap : new Map(data) - }) - + const drawbuffer = gl.getExtension('WEBGL_draw_buffers') + const texturefloat = gl.getExtension('OES_texture_float') + const indexuint = gl.getExtension('OES_element_index_uint') + if( !(drawbuffer && texturefloat && indexuint) ){ + + const detail = `Your browser does not support + ${ !drawbuffer ? 'WEBGL_draw_buffers' : ''} + ${ !texturefloat ? 'OES_texture_float' : ''} + ${ !indexuint ? 'OES_element_index_uint' : ''} ` + message['Detail'] = [detail] + + this.modalService.show(ModalUnit,{ + initialState : { + title : message.Error, + body : message.Detail + } }) - .catch(console.error) + return false + } + return true + } - this.store.pipe( - select('viewerState'), - safeFilter('parcellationSelected'), - map(({parcellationSelected})=>(parcellationSelected.name)) - ) - .subscribe(fetchData) - this.store.pipe( - select('newViewer'), - safeFilter('parcellationSelected'), - map(({parcellationSelected})=>(parcellationSelected.name)) - ) - .subscribe(fetchData) + manualPanelToggle(show:boolean){ + this.store.dispatch({ + type : show ? OPEN_SIDE_PANEL : CLOSE_SIDE_PANEL + }) + } + + clearDedicatedView(){ + this.store.dispatch({ + type : UNLOAD_DEDICATED_LAYER + }) + } + + mousePos : [number,number] = [0,0] + + @HostListener('mousemove',['$event']) + mousemove(event:MouseEvent){ + this.mousePos = [event.clientX,event.clientY] + } + + get floatingMouseContextualContainerTransform(){ + return `translate(${this.mousePos[0]}px,${this.mousePos[1]}px)` } } \ No newline at end of file diff --git a/src/atlasViewer/atlasViewer.constantService.service.ts b/src/atlasViewer/atlasViewer.constantService.service.ts new file mode 100644 index 000000000..64759d6d9 --- /dev/null +++ b/src/atlasViewer/atlasViewer.constantService.service.ts @@ -0,0 +1,111 @@ +import { Injectable } from "@angular/core"; +import { Store } from "@ngrx/store"; +import { ViewerStateInterface, Property, FETCHED_METADATA } from "../services/stateStore.service"; + + +@Injectable({ + providedIn : 'root' +}) + +export class AtlasViewerConstantsServices{ + public templateUrls = [ + 'res/json/infant.json', + 'res/json/bigbrain.json', + 'res/json/colin.json', + 'res/json/MNI152.json', + 'res/json/waxholmRatV2_0.json', + 'res/json/allenMouse.json' + ] + + private _mapArray : [string,string[]][] = [ + [ 'JuBrain Cytoarchitectonic Atlas' , + [ + 'res/json/pmapsAggregatedData.json', + 'res/json/receptorAggregatedData.json' + ] + ], + [ + 'Fibre Bundle Atlas - Short Bundle', + [ + 'res/json/swmAggregatedData.json' + ] + ], + [ + 'Fibre Bundle Atlas - Long Bundle', + [ + 'res/json/dwmAggregatedData.json' + ] + ] + ] + + public mapParcellationNameToFetchUrl : Map<string,string[]> = new Map(this._mapArray) + public spatialSearchUrl = 'https://kg-int.humanbrainproject.org/solr/' + public spatialResultsPerPage = 10 + public spatialWidth = 600 + + public landmarkFlatProjection : boolean = false + + public chartBaseStyle = { + fill : 'origin' + } + + public chartSdStyle = { + fill : false, + backgroundColor : 'rgba(0,0,0,0)', + borderDash : [10,3], + pointRadius : 0, + pointHitRadius : 0, + } + + public doesNotMeetRequirementMD = ` +Unfortunately, your browser does not meet the minimum requirement to run the atlas viewer. +the atlas viewer requires **webgl1.0**, and the following extensions to be enabled in order to run: +- WEBGL_draw_buffers +- OES_texture_float +- OES_element_index_uint +` + + get floatingWidgetStartingPos() : [number,number]{ + return [400,100] + } + + constructor(private store : Store<ViewerStateInterface>){ + + const meta = 'res/json/allAggregatedData.json' + + fetch(meta) + .then(res=>res.json()) + .then(metadata=>{ + const data = metadata.reduce((acc:[string,Map<string,{properties:Property}>][],curr:any)=>{ + const idx = acc.findIndex((it)=>it[0]===curr[0].targetParcellation) + return idx >= 0 ? + acc.map((it,i)=> i === idx ? [it[0], it[1].set(curr[0].datasetName,curr[1])] : it ) : + acc.concat([[ curr[0].targetParcellation , new Map([[curr[0].datasetName , curr[1]]]) ]]) + + /* [[ curr[0].targetParcellation , [ curr[0].datasetName , curr[1]] ]] */ + },[] as [string,Map<string,{properties:Property}>][]) + + this.store.dispatch({ + type : FETCHED_METADATA, + fetchedMetadataMap : new Map(data) + }) + + }) + .catch(console.error) + } +} + +const parseURLToElement = (url:string):HTMLElement=>{ + const el = document.createElement('script') + el.setAttribute('crossorigin','true') + el.src = url + return el +} + +export const SUPPORT_LIBRARY_MAP : Map<string,HTMLElement> = new Map([ + ['jquery3',parseURLToElement('http://code.jquery.com/jquery-3.3.1.min.js')], + ['jquery2',parseURLToElement('http://code.jquery.com/jquery-2.2.4.min.js')], + ['webcomponentsLite',parseURLToElement('https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.1.0/webcomponents-lite.js')], + ['react16',parseURLToElement('https://unpkg.com/react@16/umd/react.development.js')], + ['reactdom16',parseURLToElement('https://unpkg.com/react-dom@16/umd/react-dom.development.js')], +]) diff --git a/src/atlasViewer/atlasViewer.dataService.service.ts b/src/atlasViewer/atlasViewer.dataService.service.ts index 6e3f6a54d..524eb69f2 100644 --- a/src/atlasViewer/atlasViewer.dataService.service.ts +++ b/src/atlasViewer/atlasViewer.dataService.service.ts @@ -1,11 +1,127 @@ -import { Injectable } from "@angular/core"; -import { Store } from "@ngrx/store"; -import { ViewerStateInterface } from "../services/stateStore.service"; +import { Injectable, OnDestroy, OnInit } from "@angular/core"; +import { Store, select } from "@ngrx/store"; +import { ViewerStateInterface, FETCHED_TEMPLATES, DataEntry, FETCHED_DATAENTRIES, safeFilter, FETCHED_METADATA, Property, FETCHED_SPATIAL_DATA, UPDATE_SPATIAL_DATA } from "../services/stateStore.service"; +import { map, distinctUntilChanged } from "rxjs/operators"; +import { Subscription } from "rxjs"; +import { AtlasViewerConstantsServices } from "./atlasViewer.constantService.service"; +@Injectable({ + providedIn : 'root' +}) +export class AtlasViewerDataService implements OnDestroy{ + + private subscriptions : Subscription[] = [] + + constructor( + private store : Store<ViewerStateInterface>, + private constantService : AtlasViewerConstantsServices + ){ -@Injectable() -export class AtlasViewerDataService{ - constructor(private store : Store<ViewerStateInterface>){ + Promise.all(this.constantService.templateUrls.map(url=> + fetch(url) + .then(res=> + res.json()) + .then(json=>json.nehubaConfig && !json.nehubaConfigURL ? + Promise.resolve(json) : + fetch(json.nehubaConfigURL) + .then(r=>r.json()) + .then(nehubaConfig=>Promise.resolve(Object.assign({},json,{ nehubaConfig }))) + ))) + .then(arrJson=> + this.store.dispatch({ + type : FETCHED_TEMPLATES, + fetchedTemplate : arrJson + })) + .catch(console.error) + this.init() + } + + /* all units in mm */ + public spatialSearch(obj:any){ + const {center,searchWidth,templateSpace,pageNo} = obj + const SOLR_C = `metadata/` + const SEARCH_PATH = `select` + const url = new URL(this.constantService.spatialSearchUrl+SOLR_C+SEARCH_PATH) + + /* do not set fl to get all params */ + // url.searchParams.append('fl','geometry.coordinates_0___pdouble,geometry.coordinates_1___pdouble,geometry.coordinates_2___pdouble') + + url.searchParams.append('q','*:*') + url.searchParams.append('wt','json') + url.searchParams.append('indent','on') + + /* pagination on app level. if there are too many restuls, we could reintroduce pagination on search level */ + url.searchParams.append('start',(pageNo*this.constantService.spatialResultsPerPage).toString()) + url.searchParams.append('rows',this.constantService.spatialResultsPerPage.toString()) + + /* TODO future for template space? */ + const filterTemplateSpace = templateSpace == 'MNI Colin 27' ? + 'datapath:metadata/sEEG-sample.json' : + templateSpace == 'Waxholm Rat V2.0' ? + 'datapath:metadata/OSLO_sp_data_rev.json' : + null + + if(filterTemplateSpace){ + url.searchParams.append('fq',filterTemplateSpace) + }else{ + return + } + url.searchParams.append('fq',`geometry.coordinates:[${center.map(n=>n-searchWidth).join(',')}+TO+${center.map(n=>n+searchWidth).join(',')}]`) + const fetchUrl = url.toString().replace(/\%2B/gi,'+') + + fetch(fetchUrl).then(r=>r.json()) + .then((resp)=>{ + const dataEntries = resp.response.docs.map(doc=>({ + position : doc['geometry.coordinates'][0].split(',').map(string=>Number(string)), + properties : { + description : doc['OID'][0], + publications : [] + } + })) + this.store.dispatch({ + type : FETCHED_SPATIAL_DATA, + fetchedDataEntries : dataEntries + }) + this.store.dispatch({ + type : UPDATE_SPATIAL_DATA, + totalResults : resp.response.numFound + }) + }) + .catch(console.warn) + + } + + init(){ + + const dispatchData = (arr:DataEntry[][]) =>{ + this.store.dispatch({ + type : FETCHED_DATAENTRIES, + fetchedDataEntries : arr.reduce((acc,curr)=>acc.concat(curr),[]) + }) + } + + const fetchData = (parcellationName : string) => { + const urlArrays = this.constantService.mapParcellationNameToFetchUrl.get(parcellationName) + urlArrays ? + Promise.all(urlArrays.map(url=>fetch(url).then(res=>res.json()))) + .then(arr=>dispatchData(arr)) + .catch(console.warn) : + dispatchData([]) + } + + this.subscriptions.push( + this.store.pipe( + select('viewerState'), + safeFilter('parcellationSelected'), + map(({parcellationSelected})=>(parcellationSelected.name)), + distinctUntilChanged() + ) + .subscribe(fetchData) + ) + } + + ngOnDestroy(){ + this.subscriptions.forEach(s=>s.unsubscribe()) } } \ No newline at end of file diff --git a/src/atlasViewer/atlasViewer.style.css b/src/atlasViewer/atlasViewer.style.css index 33605fc7c..e2a03b1b1 100644 --- a/src/atlasViewer/atlasViewer.style.css +++ b/src/atlasViewer/atlasViewer.style.css @@ -1,4 +1,4 @@ -:host +:host, :host > .atlas-container { display:block; width:100%; @@ -41,21 +41,71 @@ atlas-banner width:100%; } -div[databrowserheading] -{ - font-size:110%; - padding : 0.5em 0.7em; -} -panel[databrowserpanel] +div[sidecontent] { - display:block; - width:300px; + height:100%; + overflow-y:auto; overflow-x:hidden; } -div[sidecontent] +layout-floating-container { + width:100%; height:100%; - overflow-y:auto; - overflow-x:hidden; + overflow:hidden; +} + +div[toastContainer] +{ + position : absolute; + bottom: 1.7em; + height: 0px; + width : 100%; + + display: flex; + flex-direction: column-reverse; +} + +div[toastContainer] > * +{ + flex : 0 0 auto; +} + +[dedicatedviewertext] +{ + vertical-align: middle; +} + +div[floatingMouseContextualContainer] +{ + position : absolute; + left: 0; + top : 0; + width : 0px; + height: 0px; +} + +div[contextualInnerContainer] +{ + margin-top :1em; + margin-left :1em; + display:inline-block; + width:auto; +} + +div[contextualInnerContainer] +{ + background-color:rgba(200,200,200,0.8); +} + +:host-context([darktheme="true"]) div[contextualInnerContainer] +{ + background-color : rgba(30,30,30,0.8); + color : rgba(250,250,250,0.8); +} + +div[contextualBlock] +{ + margin: 0.3em 0.5em; + white-space: nowrap; } \ No newline at end of file diff --git a/src/atlasViewer/atlasViewer.template.html b/src/atlasViewer/atlasViewer.template.html index e06aeee30..877b85986 100644 --- a/src/atlasViewer/atlasViewer.template.html +++ b/src/atlasViewer/atlasViewer.template.html @@ -1,33 +1,63 @@ -<layout-mainside> - <div maincontent> - <ui-nehuba-container> - </ui-nehuba-container> - - <atlas-banner> - </atlas-banner> +<div *ngIf = "meetsRequirement" class = "atlas-container"> - <layout-floating-container - zIndex = "4"> - </layout-floating-container> - </div> - <div - sidecontent> - <ng-template #sideContent> + <layout-mainside + (panelShowStateChanged)="manualPanelToggle($event)"> + <div maincontent> + <ui-nehuba-container> + </ui-nehuba-container> + + <atlas-banner> + </atlas-banner> + + </div> + <div sidecontent> + <ng-template #dockedContainer> + + </ng-template> + </div> + </layout-mainside> + + <layout-floating-container + zIndex = "9" + #floatingOverlayContainer> + <ng-template #floatingContainer> </ng-template> - </div> -</layout-mainside> - -<ng-template #databrowser> - <panel - databrowserpanel - [bodyCollapsable] = "true"> - <div databrowserheading heading> - Data Browser + <div [style.transform] = "floatingMouseContextualContainerTransform" floatingMouseContextualContainer> + <div contextualInnerContainer> + <div *ngIf = "(onhoverSegment$ | async) !== ''" contextualBlock> + {{ onhoverSegment$ | async }} + </div> + <ng-template #floatingContextContainer> + + </ng-template> + </div> </div> - <div databrowserbody body> - <data-browser> - </data-browser> + <div toastContainer> + <ng-template #toastContainer> + </ng-template> </div> - </panel> + </layout-floating-container> + + <ng-template #temporaryContainer> + + </ng-template> + +</div> + +<markdown-dom *ngIf = "!meetsRequirement" [markdown] = "constantsService.doesNotMeetRequirementMD" > +</markdown-dom> + +<ng-template #dedicatedViewerToast> + <div *ngIf = "dedicatedView$ | async"> + <span dedicatedviewertext>displaying : {{ dedicatedView$ | async | getFilenameFromPathname }}. </span> + <span (click) = "clearDedicatedView()" class = "btn btn-link">clear</span> + </div> + <div *ngIf = "!(dedicatedView$ | async)"> + no special data is being displayed right now + </div> +</ng-template> + +<ng-template #mouseoverSegment> + {{ onhoverSegment$ | async }} </ng-template> \ No newline at end of file diff --git a/src/atlasViewer/atlasViewer.uiService.serivce.ts b/src/atlasViewer/atlasViewer.uiService.serivce.ts new file mode 100644 index 000000000..5bf122d8f --- /dev/null +++ b/src/atlasViewer/atlasViewer.uiService.serivce.ts @@ -0,0 +1,11 @@ +import { Injectable, ComponentFactory, ComponentFactoryResolver, Component } from "@angular/core"; + +@Injectable({ + providedIn : 'root' +}) + +export class AltasViewerUIServices{ + + constructor(){ + } +} diff --git a/src/atlasViewer/atlasViewer.urlService.service.ts b/src/atlasViewer/atlasViewer.urlService.service.ts new file mode 100644 index 000000000..06adbdda4 --- /dev/null +++ b/src/atlasViewer/atlasViewer.urlService.service.ts @@ -0,0 +1,157 @@ +import { Injectable } from "@angular/core"; +import { Store, select } from "@ngrx/store"; +import { ViewerStateInterface, isDefined, NEWVIEWER, getLabelIndexMap, SELECT_REGIONS, CHANGE_NAVIGATION, LOAD_DEDICATED_LAYER } from "../services/stateStore.service"; +import { Observable } from "rxjs"; +import { filter, map, scan, take } from "rxjs/operators"; + +declare var window + +@Injectable({ + providedIn : 'root' +}) + +export class AtlasViewerURLService{ + private changeQueryObservable$ : Observable<any> + constructor(private store : Store<ViewerStateInterface>){ + + this.changeQueryObservable$ = this.store.pipe( + select('viewerState'), + filter(state=> + isDefined(state) && + (isDefined(state.templateSelected) || + isDefined(state.regionsSelected) || + isDefined(state.navigation) || + isDefined(state.parcellationSelected))), + + /* map so that only a selection are serialized */ + map(({templateSelected,regionsSelected,navigation,parcellationSelected,dedicatedView})=>({ + templateSelected, + regionsSelected, + navigation, + parcellationSelected, + dedicatedView + })) + ).pipe( + scan((acc,val)=>Object.assign({},acc,val),{}) + ) + + this.subscriptions() + } + + private subscriptions(){ + + /* parse search url to state */ + this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state)&&isDefined(state.fetchedTemplates)), + map(state=>state.fetchedTemplates), + take(1) + ).subscribe(fetchedTemplates=>{ + const searchparams = new URLSearchParams(window.location.search) + + /* first, check if any template and parcellations are to be loaded */ + const searchedTemplatename = searchparams.get('templateSelected') + const searchedParcellationName = searchparams.get('parcellationSelected') + + const templateToLoad = fetchedTemplates.find(template=>template.name === searchedTemplatename) + if(!templateToLoad) + return + const parcellationToLoad = templateToLoad ? + templateToLoad.parcellations.find(parcellation=>parcellation.name === searchedParcellationName) : + templateToLoad.parcellations[0] + + this.store.dispatch({ + type : NEWVIEWER, + selectTemplate : templateToLoad, + selectParcellation : parcellationToLoad + }) + + /* selected regions */ + const labelIndexMap = getLabelIndexMap(parcellationToLoad.regions) + const selectedRegions = searchparams.get('regionsSelected') + if(selectedRegions){ + this.store.dispatch({ + type : SELECT_REGIONS, + selectRegions : selectedRegions.split('_').map(labelIndex=>labelIndexMap.get(Number(labelIndex))) + }) + } + + /* now that the parcellation is loaded, load the navigation state */ + const viewerState = searchparams.get('navigation') + if(viewerState){ + const [o,po,pz,p,z] = viewerState.split('__') + this.store.dispatch({ + type : CHANGE_NAVIGATION, + navigation : { + orientation : o.split('_').map(n=>Number(n)), + perspectiveOrientation : po.split('_').map(n=>Number(n)), + perspectiveZoom : Number(pz), + position : p.split('_').map(n=>Number(n)), + zoom : Number(z) + } + }) + } + + const dedicatedView = searchparams.get('dedicatedView') + if(dedicatedView){ + this.store.dispatch({ + type : LOAD_DEDICATED_LAYER, + dedicatedView + }) + } + }) + + /* pushing state to url */ + this.changeQueryObservable$.pipe( + map(state=>{ + let _ = {} + for(const key in state){ + if(isDefined(state[key])){ + switch(key){ + case 'navigation': + if( + isDefined(state[key].orientation) && + isDefined(state[key].perspectiveOrientation) && + isDefined(state[key].perspectiveZoom) && + isDefined(state[key].position) && + isDefined(state[key].zoom) + ){ + _[key] = [ + state[key].orientation.join('_'), + state[key].perspectiveOrientation.join('_'), + state[key].perspectiveZoom, + state[key].position.join('_'), + state[key].zoom + ].join('__') + } + break; + case 'regionsSelected': + _[key] = state[key].map(region=>region.labelIndex).join('_') + break; + case 'templateSelected': + case 'parcellationSelected': + _[key] = state[key].name + break; + default: + _[key] = state[key] + } + }else{ + if(key === 'dedicatedView'){ + _[key] = null + } + } + } + return _ + }) + ).subscribe(cleanedState=>{ + const url = new URL(window.location) + const search = new URLSearchParams( window.location.search ) + Object.keys(cleanedState).forEach(key=>{ + cleanedState[key] ? search.set(key,cleanedState[key]) : search.delete(key) + }) + + url.search = search.toString() + history.replaceState(null,'',url.toString()) + }) + } +} \ No newline at end of file diff --git a/src/atlasViewer/modalUnit/modalUnit.component.ts b/src/atlasViewer/modalUnit/modalUnit.component.ts new file mode 100644 index 000000000..1bf7a1950 --- /dev/null +++ b/src/atlasViewer/modalUnit/modalUnit.component.ts @@ -0,0 +1,17 @@ +import { Component, Input, ViewContainerRef } from '@angular/core' + +@Component({ + templateUrl : './modalUnit.template.html', + styleUrls : [ + './modalUnit.style.css' + ] +}) + +export class ModalUnit{ + @Input() title : string + @Input() body : string = 'Modal Body Text' + + constructor(public viewContainerRef : ViewContainerRef){ + + } +} \ No newline at end of file diff --git a/src/atlasViewer/modalUnit/modalUnit.style.css b/src/atlasViewer/modalUnit/modalUnit.style.css new file mode 100644 index 000000000..e69de29bb diff --git a/src/atlasViewer/modalUnit/modalUnit.template.html b/src/atlasViewer/modalUnit/modalUnit.template.html new file mode 100644 index 000000000..4caa1075b --- /dev/null +++ b/src/atlasViewer/modalUnit/modalUnit.template.html @@ -0,0 +1,9 @@ +<div *ngIf = "title" class = "modal-header"> + <h4 class = "modal-title pull-left"> + {{ title }} + </h4> +</div> + +<div class = "modal-body"> + {{ body }} +</div> \ No newline at end of file diff --git a/src/atlasViewer/widgetUnit/widgetDirective.directive.ts b/src/atlasViewer/widgetUnit/widgetDirective.directive.ts new file mode 100644 index 000000000..e69de29bb diff --git a/src/atlasViewer/widgetUnit/widgetService.service.ts b/src/atlasViewer/widgetUnit/widgetService.service.ts new file mode 100644 index 000000000..f3e4bdfe7 --- /dev/null +++ b/src/atlasViewer/widgetUnit/widgetService.service.ts @@ -0,0 +1,144 @@ +import { ComponentRef, ComponentFactory, Injectable, ViewContainerRef, ComponentFactoryResolver, Injector } from "@angular/core"; + +import { WidgetUnit } from "./widgetUnit.component"; +import { AtlasViewerConstantsServices } from "../atlasViewer.constantService.service"; +import { Subscription } from "rxjs"; + + +@Injectable({ + providedIn : 'root' +}) + +export class WidgetServices{ + + public floatingContainer : ViewContainerRef + public dockedContainer : ViewContainerRef + public factoryContainer : ViewContainerRef + + private widgetUnitFactory : ComponentFactory<WidgetUnit> + private widgetComponentRefs : Set<ComponentRef<WidgetUnit>> = new Set() + + private clickedListener : Subscription[] = [] + + constructor( + private cfr:ComponentFactoryResolver, + private constantServce:AtlasViewerConstantsServices + ){ + this.widgetUnitFactory = this.cfr.resolveComponentFactory(WidgetUnit) + } + + clearAllWidgets(){ + this.floatingContainer.clear() + this.dockedContainer.clear() + this.clickedListener.forEach(s=>s.unsubscribe()) + } + + addNewWidget(guestComponentRef:ComponentRef<any>,options?:any){ + const _option = getOption(options) + const component = _option.state === 'floating' ? + this.floatingContainer.createComponent(this.widgetUnitFactory) : + _option.state === 'docked' ? + this.dockedContainer.createComponent(this.widgetUnitFactory) : + Error('option.state has to be either floating or docked') + + if(component.constructor === Error){ + throw component + }else{ + const _component = (component as ComponentRef<WidgetUnit>); + _component.instance.container.insert( guestComponentRef.hostView ) + + /* programmatic DI */ + _component.instance.widgetServices = this + + /* common properties */ + _component.instance.state = _option.state + _component.instance.exitable = _option.exitable + _component.instance.title = _option.title + + /* internal properties, used for changing state */ + _component.instance.guestComponentRef = guestComponentRef + + if(_option.state === 'floating'){ + let position = this.constantServce.floatingWidgetStartingPos + while([...this.widgetComponentRefs].some(widget=> + widget.instance.state === 'floating' && + widget.instance.position.every((v,idx)=>v===position[idx]))){ + position = position.map(v=>v+10) as [number,number] + } + _component.instance.position = position + } + + /* set width and height. or else floating components will obstruct viewers */ + _component.instance.setWidthHeight() + + this.widgetComponentRefs.add( _component ) + + this.clickedListener.push( + _component.instance.clickedEmitter.subscribe((widgetUnit:WidgetUnit)=>{ + if(widgetUnit.state !== 'floating') + return + const widget = [...this.widgetComponentRefs].find(widget=>widget.instance===widgetUnit) + if(!widget) + return + const idx = this.floatingContainer.indexOf(widget.hostView) + if(idx === this.floatingContainer.length - 1 ) + return + this.floatingContainer.detach(idx) + this.floatingContainer.insert(widget.hostView) + + }) + ) + + return _component + } + } + + changeState(widgetUnit:WidgetUnit, options : WidgetOptionsInterface){ + const widgetRef = [...this.widgetComponentRefs].find(cr=>cr.instance === widgetUnit) + if(widgetRef){ + this.widgetComponentRefs.delete(widgetRef) + widgetRef.instance.container.detach( 0 ) + const guestComopnent = widgetRef.instance.guestComponentRef + this.addNewWidget(guestComopnent,options) + widgetRef.destroy() + }else{ + console.warn('widgetref not found') + } + } + + exitWidget(widgetUnit:WidgetUnit){ + const widgetRef = [...this.widgetComponentRefs].find(cr=>cr.instance === widgetUnit) + if(widgetRef){ + widgetRef.destroy() + }else{ + console.warn('widgetref not found') + } + } +} + +function getOption(option?:WidgetOptionsInterface):WidgetOptionsInterface{ + return{ + exitable : option ? + option.exitable ? + option.exitable : + false : + false, + state : option ? + option.state ? + option.state : + 'floating' : + 'floating', + title : option ? + option.title ? + option.title : + 'Untitled' : + 'Untitled' + } +} + +export interface WidgetOptionsInterface{ + title? : string + state? : 'docked' | 'floating' + exitable? : boolean +} + diff --git a/src/atlasViewer/widgetUnit/widgetUnit.component.ts b/src/atlasViewer/widgetUnit/widgetUnit.component.ts new file mode 100644 index 000000000..5c15dd4a3 --- /dev/null +++ b/src/atlasViewer/widgetUnit/widgetUnit.component.ts @@ -0,0 +1,114 @@ +import { Component, ViewChild, ViewContainerRef,ComponentRef, HostBinding, HostListener, Output, EventEmitter, Input } from "@angular/core"; +import { WidgetServices } from "./widgetService.service"; + + +@Component({ + templateUrl : './widgetUnit.template.html', + styleUrls : [ + `./widgetUnit.style.css` + ] +}) + +export class WidgetUnit { + @ViewChild('container',{read:ViewContainerRef}) container : ViewContainerRef + + @HostBinding('attr.state') + public state : 'docked' | 'floating' = 'docked' + + @HostBinding('style.width') + width : string = this.state === 'docked' ? null : '0px' + + @HostBinding('style.height') + height : string = this.state === 'docked' ? null : '0px' + + @HostListener('mousedown') + clicked(){ + this.clickedEmitter.emit(this) + } + + @Input() title : string = 'Untitled' + + @Output() + clickedEmitter : EventEmitter<WidgetUnit> = new EventEmitter() + + public exitable : boolean = true + + public guestComponentRef : ComponentRef<any> + public cf : ComponentRef<WidgetUnit> + public widgetServices:WidgetServices + + undock(event:Event){ + event.stopPropagation() + event.preventDefault() + + this.widgetServices.changeState(this,{ + title : this.title, + state:'floating', + exitable:this.exitable + }) + } + + dock(event:Event){ + event.stopPropagation() + event.preventDefault() + + this.widgetServices.changeState(this,{ + title : this.title, + state:'docked', + exitable:this.exitable + }) + } + + exit(event:Event){ + event.stopPropagation() + event.preventDefault() + + this.widgetServices.exitWidget(this) + } + + setWidthHeight(){ + this.width = this.state === 'docked' ? null : '0px' + this.height = this.state === 'docked' ? null : '0px' + } + + /* floating widget specific functionalities */ + + position : [number,number] = [400,100] + reposStartViewPos : [number,number] = [0,0] + reposStartMousePos : [number,number] = [0,0] + repositionFlag : boolean = false + + @HostListener('document:mousemove',['$event']) + mousemove(ev:MouseEvent){ + if(!this.repositionFlag) return + + this.position[0] = this.reposStartViewPos[0] - this.reposStartMousePos[0] + ev.clientX + this.position[1] = this.reposStartViewPos[1] - this.reposStartMousePos[1] + ev.clientY + } + + mousedown(ev:MouseEvent){ + this.reposStartMousePos[0] = ev.clientX + this.reposStartMousePos[1] = ev.clientY + + this.reposStartViewPos[0] = this.position[0] + this.reposStartViewPos[1] = this.position[1] + + this.repositionFlag = true; + document.body.style.pointerEvents = 'none' + document.body.style.userSelect = 'none' + } + + @HostListener('document:mouseup',['$event']) + mouseup(_ev:MouseEvent){ + this.repositionFlag = false; + document.body.style.pointerEvents = 'all' + document.body.style.userSelect = 'initial' + } + + get transform(){ + return this.state === 'floating' ? + `translate(${this.position[0]}px, ${this.position[1]}px)` : + `translate(0 , 0)` + } + +} \ No newline at end of file diff --git a/src/atlasViewer/widgetUnit/widgetUnit.style.css b/src/atlasViewer/widgetUnit/widgetUnit.style.css new file mode 100644 index 000000000..945adf7d8 --- /dev/null +++ b/src/atlasViewer/widgetUnit/widgetUnit.style.css @@ -0,0 +1,43 @@ +:host +{ + pointer-events: all; + display:block; +} + +div[widgetUnitHeading] +{ + font-size:110%; + padding : 0.5em 0.7em; + display:flex; + white-space: nowrap; +} + + div[widgetUnitHeading] > div[title] + { + flex : 1 1 0px; + overflow:hidden; + text-overflow: ellipsis; + } + + div[widgetUnitHeading] > div[icons] + { + flex : 0 0 0px; + display:flex; + } + + div[widgetUnitHeading] > div[icons] > i + { + margin-left:0.5em; + } + +panel[widgetUnitPanel] +{ + display:block; + width:300px; + overflow-x:hidden; +} + +:host-context([state='floating']) div[widgetUnitHeading]:hover +{ + cursor : move; +} \ No newline at end of file diff --git a/src/atlasViewer/widgetUnit/widgetUnit.template.html b/src/atlasViewer/widgetUnit/widgetUnit.template.html new file mode 100644 index 000000000..c9a35c584 --- /dev/null +++ b/src/atlasViewer/widgetUnit/widgetUnit.template.html @@ -0,0 +1,31 @@ +<panel + [style.transform] = "transform" + widgetUnitPanel + [bodyCollapsable] = "state === 'docked'" + > + <div + (mousedown) = "mousedown($event)" + widgetUnitHeading + heading> + <div title>{{ title }}</div> + <div icons> + <i *ngIf = "state === 'floating'" + (click) = "dock($event)" + class = "glyphicon glyphicon-log-in" + hoverable></i> + <i *ngIf = "state === 'docked'" + (click) = "undock($event)" + class = "glyphicon glyphicon-new-window" + hoverable></i> + <i *ngIf = "exitable" + (click) = "exit($event)" + class = "glyphicon glyphicon-remove" + hoverable></i> + </div> + </div> + <div widgetUnitBody body> + <ng-template #container> + + </ng-template> + </div> +</panel> \ No newline at end of file diff --git a/src/components/components.module.ts b/src/components/components.module.ts index b3c41153a..6eaf6d29c 100644 --- a/src/components/components.module.ts +++ b/src/components/components.module.ts @@ -15,6 +15,7 @@ import { TreeComponent } from './tree/tree.component'; import { PanelComponent } from './panel/panel.component'; import { PaginationComponent } from './pagination/pagination.component'; import { SearchResultPaginationPipe } from '../util/pipes/pagination.pipe'; +import { ToastComponent } from './toast/toast.component'; @NgModule({ imports : [ @@ -31,6 +32,7 @@ import { SearchResultPaginationPipe } from '../util/pipes/pagination.pipe'; TreeComponent, PanelComponent, PaginationComponent, + ToastComponent, /* directive */ HoverableBlockDirective, @@ -46,6 +48,7 @@ import { SearchResultPaginationPipe } from '../util/pipes/pagination.pipe'; TreeComponent, PanelComponent, PaginationComponent, + ToastComponent, SearchResultPaginationPipe, diff --git a/src/components/markdown/markdown.component.ts b/src/components/markdown/markdown.component.ts index 13059e8fa..e04d83eff 100644 --- a/src/components/markdown/markdown.component.ts +++ b/src/components/markdown/markdown.component.ts @@ -13,7 +13,7 @@ import * as showdown from 'showdown' export class MarkdownDom implements OnChanges{ @Input() markdown : string = `` - private innerHtml : string = `` + public innerHtml : string = `` private converter = new showdown.Converter() constructor(){ this.converter.setFlavor('github') diff --git a/src/components/panel/panel.style.css b/src/components/panel/panel.style.css index 9c5475548..6a50ea914 100644 --- a/src/components/panel/panel.style.css +++ b/src/components/panel/panel.style.css @@ -1,6 +1,7 @@ :host { font-size:92%; + overflow:hidden; } .panel diff --git a/src/components/toast/toast.component.ts b/src/components/toast/toast.component.ts new file mode 100644 index 000000000..c12eeb799 --- /dev/null +++ b/src/components/toast/toast.component.ts @@ -0,0 +1,27 @@ +import { Component, Input, ViewContainerRef, ViewChild } from "@angular/core"; + + +@Component({ + selector : 'toast', + templateUrl : './toast.template.html', + styleUrls : ['./toast.style.css'] +}) + +export class ToastComponent{ + @Input() message : string = 'template' + @Input() timeout : number = 0 + @Input() dismissable : boolean = true + + @ViewChild('message',{read:ViewContainerRef}) messageContainer : ViewContainerRef + constructor(){ + + } + + dismiss(event:MouseEvent){ + event.preventDefault() + event.stopPropagation() + + console.warn('dismiss') + + } +} \ No newline at end of file diff --git a/src/components/toast/toast.style.css b/src/components/toast/toast.style.css new file mode 100644 index 000000000..101abf3fe --- /dev/null +++ b/src/components/toast/toast.style.css @@ -0,0 +1,25 @@ +:host +{ + pointer-events: all; + width:100%; + display:flex; + flex-direction: row; + justify-content: center; + align-items: center; +} + +div[container] +{ + background-color: rgba(240,240,240,0.8); + color : rgba(10,10,10,0.8); + display : flex; + align-items: center; +} + +:host-context([darktheme="true"]) div[container] +{ + background-color: rgba(50,50,50,0.8); + color : rgba(255,255,255,0.8); + padding : 0.3em 1em; +} + diff --git a/src/components/toast/toast.template.html b/src/components/toast/toast.template.html new file mode 100644 index 000000000..9d4426e62 --- /dev/null +++ b/src/components/toast/toast.template.html @@ -0,0 +1,10 @@ +<div container> + <div message> + <ng-template #message> + + </ng-template> + </div> + <div (click) = "dismiss($event)" *ngIf = "dismissable" close> + <i class = "glyphicon glyphicon-remove"></i> + </div> +</div> \ No newline at end of file diff --git a/src/index.html b/src/index.html index 53b25ae88..d24b57232 100644 --- a/src/index.html +++ b/src/index.html @@ -21,6 +21,9 @@ height:100%; margin:0; border:0; + + /* required for glyphicon tooltip directives */ + overflow:hidden; } div.scale-bar-container { diff --git a/src/layouts/mainside/mainside.component.ts b/src/layouts/mainside/mainside.component.ts index 54ca9a575..ab238235c 100644 --- a/src/layouts/mainside/mainside.component.ts +++ b/src/layouts/mainside/mainside.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from "@angular/core"; +import { Component, Input, EventEmitter, Output } from "@angular/core"; @Component({ @@ -14,4 +14,11 @@ export class LayoutMainSide{ @Input() overlay : boolean = false @Input() showSide : boolean = false @Input() sideWidth : number = 300 + + @Output() panelShowStateChanged : EventEmitter<boolean> = new EventEmitter() + + togglePanelShow(){ + this.showSide = !this.showSide + this.panelShowStateChanged.emit(this.showSide) + } } \ No newline at end of file diff --git a/src/layouts/mainside/mainside.template.html b/src/layouts/mainside/mainside.template.html index c6c04c272..85db9a1f6 100644 --- a/src/layouts/mainside/mainside.template.html +++ b/src/layouts/mainside/mainside.template.html @@ -5,7 +5,7 @@ </div> <div *ngIf = "showResizeSliver" - (click) = "showSide = !showSide" + (click) = "togglePanelShow()" resizeSliver hoverable> <i class = "glyphicon" diff --git a/src/main.module.ts b/src/main.module.ts index e635fe641..25ea9cd05 100644 --- a/src/main.module.ts +++ b/src/main.module.ts @@ -1,12 +1,10 @@ import { NgModule } from "@angular/core"; import { ComponentsModule } from "./components/components.module"; import { UIModule } from "./ui/ui.module"; -import { Serv } from "./services/services.module"; import { LayoutModule } from "./layouts/layout.module"; -import { Examples } from "./examples/examples.component"; import { AtlasViewer } from "./atlasViewer/atlasViewer.component"; import { StoreModule } from "@ngrx/store"; -import { viewerState, newViewer, dataStore } from "./services/stateStore.service"; +import { viewerState, dataStore,spatialSearchState,uiState } from "./services/stateStore.service"; import { AtlasBanner } from "./ui/banner/banner.component"; import { GetNamesPipe } from "./util/pipes/getNames.pipe"; import { CommonModule } from "@angular/common"; @@ -14,6 +12,16 @@ import { GetNamePipe } from "./util/pipes/getName.pipe"; import { FormsModule } from "@angular/forms"; import { PopoverModule } from 'ngx-bootstrap/popover' +import { AtlasViewerDataService } from "./atlasViewer/atlasViewer.dataService.service"; +import { WidgetUnit } from "./atlasViewer/widgetUnit/widgetUnit.component"; +import { WidgetServices } from './atlasViewer/widgetUnit/widgetService.service' +import { GlyphiconTooltipScreenshotDirective,GlyphiconTooltipInfoSignDirective,GlyphiconTooltipLogInDirective,GlyphiconTooltipNewWindowDirective,GlyphiconTooltipQuestionSignDirective,GlyphiconTooltipRemoveDirective,GlyphiconTooltipRemoveSignDirective } from "./util/directives/glyphiconTooltip.directive"; +import { TooltipModule } from "ngx-bootstrap/tooltip"; +import { ModalModule } from 'ngx-bootstrap/modal' +import { ModalUnit } from "./atlasViewer/modalUnit/modalUnit.component"; +import { AtlasViewerURLService } from "./atlasViewer/atlasViewer.urlService.service"; +import { ToastComponent } from "./components/toast/toast.component"; +import { GetFilenameFromPathnamePipe } from "./util/pipes/getFileNameFromPathName.pipe"; @NgModule({ imports : [ @@ -23,21 +31,46 @@ import { PopoverModule } from 'ngx-bootstrap/popover' ComponentsModule, UIModule, + ModalModule.forRoot(), + TooltipModule.forRoot(), PopoverModule.forRoot(), - Serv.forRoot(), StoreModule.forRoot({ - viewerState : viewerState, - newViewer : newViewer, - dataStore : dataStore + viewerState , + dataStore , + spatialSearchState, + uiState }) ], declarations : [ AtlasViewer, AtlasBanner, + WidgetUnit, + ModalUnit, + + /* directives */ + GlyphiconTooltipScreenshotDirective, + GlyphiconTooltipInfoSignDirective, + GlyphiconTooltipLogInDirective, + GlyphiconTooltipNewWindowDirective, + GlyphiconTooltipQuestionSignDirective, + GlyphiconTooltipRemoveDirective, + GlyphiconTooltipRemoveSignDirective, /* pipes */ GetNamesPipe, - GetNamePipe + GetNamePipe, + GetFilenameFromPathnamePipe + ], + entryComponents : [ + WidgetUnit, + ModalUnit, + ToastComponent, + ], + providers : [ + AtlasViewerDataService, + AtlasViewerDataService, + WidgetServices, + AtlasViewerURLService ], bootstrap : [ AtlasViewer diff --git a/src/res/cvtSwm.js b/src/res/cvtSwm.js new file mode 100644 index 000000000..a68ffa768 --- /dev/null +++ b/src/res/cvtSwm.js @@ -0,0 +1,20 @@ +const fs = require('fs') + +const arrayExpander = (arr)=>arr.reduce((acc,curr)=> + acc.concat( + curr.constructor === Array ? + arrayExpander(curr) : + curr + ) +,[]) + +fs.readFile('./ext/swmAggregatedData.json','utf-8',(err,data)=>{ + if(err) throw err + const arr = JSON.parse(data) + const newarr = arrayExpander(arr) + + fs.writeFile('./ext/swmAggregatedData2.json',JSON.stringify(newarr),'utf-8',(err)=>{ + if(err) throw err + console.log('done') + }) +}) \ No newline at end of file diff --git a/src/res/ext/swmAggregatedData.json b/src/res/ext/swmAggregatedData.json index 6d2b24011..447afe032 100644 --- a/src/res/ext/swmAggregatedData.json +++ b/src/res/ext/swmAggregatedData.json @@ -1 +1 @@ -[[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CAC-PrCu_0","regionName":[{"regionName":"lh_CAC-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CAC-PrCu_0","name":"Probabilistic Map for lh_CAC-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CAC-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CAC-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-Op_0","regionName":[{"regionName":"lh_CMF-Op_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-Op_0","name":"Probabilistic Map for lh_CMF-Op_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-Op_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-Op_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-PoC_0","regionName":[{"regionName":"lh_CMF-PoC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-PoC_0","name":"Probabilistic Map for lh_CMF-PoC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-PoC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PoC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-PrC_0","regionName":[{"regionName":"lh_CMF-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-PrC_0","name":"Probabilistic Map for lh_CMF-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-PrC_1","regionName":[{"regionName":"lh_CMF-PrC_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-PrC_1","name":"Probabilistic Map for lh_CMF-PrC_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-PrC_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PrC_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-RMF_0","regionName":[{"regionName":"lh_CMF-RMF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-RMF_0","name":"Probabilistic Map for lh_CMF-RMF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-RMF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-RMF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-SF_0","regionName":[{"regionName":"lh_CMF-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-SF_0","name":"Probabilistic Map for lh_CMF-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Fu-LO_0","regionName":[{"regionName":"lh_Fu-LO_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Fu-LO_0","name":"Probabilistic Map for lh_Fu-LO_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Fu-LO_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Fu-LO_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IC-PrCu_0","regionName":[{"regionName":"lh_IC-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IC-PrCu_0","name":"Probabilistic Map for lh_IC-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IC-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IC-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-IT_0","regionName":[{"regionName":"lh_IP-IT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-IT_0","name":"Probabilistic Map for lh_IP-IT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-IT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-IT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-LO_1","regionName":[{"regionName":"lh_IP-LO_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-LO_1","name":"Probabilistic Map for lh_IP-LO_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-LO_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-LO_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-MT_0","regionName":[{"regionName":"lh_IP-MT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-MT_0","name":"Probabilistic Map for lh_IP-MT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-MT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-MT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-SM_0","regionName":[{"regionName":"lh_IP-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-SM_0","name":"Probabilistic Map for lh_IP-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-SP_0","regionName":[{"regionName":"lh_IP-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-SP_0","name":"Probabilistic Map for lh_IP-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-SP_1","regionName":[{"regionName":"lh_IP-SP_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-SP_1","name":"Probabilistic Map for lh_IP-SP_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-SP_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SP_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IT-MT_0","regionName":[{"regionName":"lh_IT-MT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IT-MT_0","name":"Probabilistic Map for lh_IT-MT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IT-MT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IT-MT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_LOF-Or_0","regionName":[{"regionName":"lh_LOF-Or_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_LOF-Or_0","name":"Probabilistic Map for lh_LOF-Or_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_LOF-Or_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-Or_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_LOF-RMF_0","regionName":[{"regionName":"lh_LOF-RMF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_LOF-RMF_0","name":"Probabilistic Map for lh_LOF-RMF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_LOF-RMF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-RMF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_LOF-RMF_1","regionName":[{"regionName":"lh_LOF-RMF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_LOF-RMF_1","name":"Probabilistic Map for lh_LOF-RMF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_LOF-RMF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-RMF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_LOF-ST_0","regionName":[{"regionName":"lh_LOF-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_LOF-ST_0","name":"Probabilistic Map for lh_LOF-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_LOF-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_MOF-ST_0","regionName":[{"regionName":"lh_MOF-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_MOF-ST_0","name":"Probabilistic Map for lh_MOF-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_MOF-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MOF-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_MT-SM_0","regionName":[{"regionName":"lh_MT-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_MT-SM_0","name":"Probabilistic Map for lh_MT-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_MT-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MT-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_MT-ST_0","regionName":[{"regionName":"lh_MT-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_MT-ST_0","name":"Probabilistic Map for lh_MT-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_MT-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MT-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Op-Ins_0","regionName":[{"regionName":"lh_Op-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Op-Ins_0","name":"Probabilistic Map for lh_Op-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Op-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Op-PrC_0","regionName":[{"regionName":"lh_Op-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Op-PrC_0","name":"Probabilistic Map for lh_Op-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Op-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Op-SF_0","regionName":[{"regionName":"lh_Op-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Op-SF_0","name":"Probabilistic Map for lh_Op-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Op-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Or-Ins_0","regionName":[{"regionName":"lh_Or-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Or-Ins_0","name":"Probabilistic Map for lh_Or-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Or-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Or-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-Ins_0","regionName":[{"regionName":"lh_PoC-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-Ins_0","name":"Probabilistic Map for lh_PoC-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoCi-PrCu_0","regionName":[{"regionName":"lh_PoCi-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoCi-PrCu_0","name":"Probabilistic Map for lh_PoCi-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoCi-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoCi-PrCu_1","regionName":[{"regionName":"lh_PoCi-PrCu_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoCi-PrCu_1","name":"Probabilistic Map for lh_PoCi-PrCu_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoCi-PrCu_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-PrCu_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoCi-RAC_0","regionName":[{"regionName":"lh_PoCi-RAC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoCi-RAC_0","name":"Probabilistic Map for lh_PoCi-RAC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoCi-RAC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-RAC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoCi-SF_0","regionName":[{"regionName":"lh_PoCi-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoCi-SF_0","name":"Probabilistic Map for lh_PoCi-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoCi-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-PrC_0","regionName":[{"regionName":"lh_PoC-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-PrC_0","name":"Probabilistic Map for lh_PoC-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-PrC_1","regionName":[{"regionName":"lh_PoC-PrC_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-PrC_1","name":"Probabilistic Map for lh_PoC-PrC_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-PrC_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-PrC_2","regionName":[{"regionName":"lh_PoC-PrC_2","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-PrC_2","name":"Probabilistic Map for lh_PoC-PrC_2","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-PrC_2","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_2.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-PrC_3","regionName":[{"regionName":"lh_PoC-PrC_3","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-PrC_3","name":"Probabilistic Map for lh_PoC-PrC_3","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-PrC_3","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_3.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-SM_0","regionName":[{"regionName":"lh_PoC-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-SM_0","name":"Probabilistic Map for lh_PoC-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-SM_1","regionName":[{"regionName":"lh_PoC-SM_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-SM_1","name":"Probabilistic Map for lh_PoC-SM_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-SM_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-SM_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PrC-Ins_0","regionName":[{"regionName":"lh_PrC-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PrC-Ins_0","name":"Probabilistic Map for lh_PrC-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PrC-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PrC-SF_0","regionName":[{"regionName":"lh_PrC-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PrC-SF_0","name":"Probabilistic Map for lh_PrC-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PrC-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PrC-SM_0","regionName":[{"regionName":"lh_PrC-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PrC-SM_0","name":"Probabilistic Map for lh_PrC-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PrC-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_RAC-SF_1","regionName":[{"regionName":"lh_RAC-SF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_RAC-SF_1","name":"Probabilistic Map for lh_RAC-SF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_RAC-SF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RAC-SF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_RMF-SF_0","regionName":[{"regionName":"lh_RMF-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_RMF-SF_0","name":"Probabilistic Map for lh_RMF-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_RMF-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RMF-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_RMF-SF_1","regionName":[{"regionName":"lh_RMF-SF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_RMF-SF_1","name":"Probabilistic Map for lh_RMF-SF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_RMF-SF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RMF-SF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_SM-Ins_0","regionName":[{"regionName":"lh_SM-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_SM-Ins_0","name":"Probabilistic Map for lh_SM-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_SM-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_SM-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_SP-SM_0","regionName":[{"regionName":"lh_SP-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_SP-SM_0","name":"Probabilistic Map for lh_SP-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_SP-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_SP-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_ST-Ins_0","regionName":[{"regionName":"lh_ST-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_ST-Ins_0","name":"Probabilistic Map for lh_ST-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_ST-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_ST-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_ST-TT_0","regionName":[{"regionName":"lh_ST-TT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_ST-TT_0","name":"Probabilistic Map for lh_ST-TT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_ST-TT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_ST-TT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Tr-Ins_0","regionName":[{"regionName":"lh_Tr-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Tr-Ins_0","name":"Probabilistic Map for lh_Tr-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Tr-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Tr-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Tr-SF_0","regionName":[{"regionName":"lh_Tr-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Tr-SF_0","name":"Probabilistic Map for lh_Tr-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Tr-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Tr-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CAC-PoCi_0","regionName":[{"regionName":"rh_CAC-PoCi_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CAC-PoCi_0","name":"Probabilistic Map for rh_CAC-PoCi_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CAC-PoCi_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CAC-PoCi_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CAC-PrCu_0","regionName":[{"regionName":"rh_CAC-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CAC-PrCu_0","name":"Probabilistic Map for rh_CAC-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CAC-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CAC-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-PrC_0","regionName":[{"regionName":"rh_CMF-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-PrC_0","name":"Probabilistic Map for rh_CMF-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-PrC_1","regionName":[{"regionName":"rh_CMF-PrC_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-PrC_1","name":"Probabilistic Map for rh_CMF-PrC_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-PrC_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-PrC_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-RMF_0","regionName":[{"regionName":"rh_CMF-RMF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-RMF_0","name":"Probabilistic Map for rh_CMF-RMF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-RMF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-RMF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-SF_0","regionName":[{"regionName":"rh_CMF-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-SF_0","name":"Probabilistic Map for rh_CMF-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-SF_1","regionName":[{"regionName":"rh_CMF-SF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-SF_1","name":"Probabilistic Map for rh_CMF-SF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-SF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-SF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Cu-Li_0","regionName":[{"regionName":"rh_Cu-Li_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Cu-Li_0","name":"Probabilistic Map for rh_Cu-Li_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Cu-Li_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Cu-Li_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Fu-LO_1","regionName":[{"regionName":"rh_Fu-LO_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Fu-LO_1","name":"Probabilistic Map for rh_Fu-LO_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Fu-LO_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Fu-LO_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IC-PrCu_0","regionName":[{"regionName":"rh_IC-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IC-PrCu_0","name":"Probabilistic Map for rh_IC-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IC-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IC-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-IT_0","regionName":[{"regionName":"rh_IP-IT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-IT_0","name":"Probabilistic Map for rh_IP-IT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-IT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-IT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-LO_0","regionName":[{"regionName":"rh_IP-LO_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-LO_0","name":"Probabilistic Map for rh_IP-LO_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-LO_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-LO_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-MT_0","regionName":[{"regionName":"rh_IP-MT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-MT_0","name":"Probabilistic Map for rh_IP-MT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-MT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-MT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-SM_0","regionName":[{"regionName":"rh_IP-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-SM_0","name":"Probabilistic Map for rh_IP-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-SP_0","regionName":[{"regionName":"rh_IP-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-SP_0","name":"Probabilistic Map for rh_IP-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IT-MT_1","regionName":[{"regionName":"rh_IT-MT_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IT-MT_1","name":"Probabilistic Map for rh_IT-MT_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IT-MT_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IT-MT_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IT-MT_2","regionName":[{"regionName":"rh_IT-MT_2","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IT-MT_2","name":"Probabilistic Map for rh_IT-MT_2","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IT-MT_2","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IT-MT_2.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LOF-MOF_0","regionName":[{"regionName":"rh_LOF-MOF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LOF-MOF_0","name":"Probabilistic Map for rh_LOF-MOF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LOF-MOF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-MOF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LOF-RMF_0","regionName":[{"regionName":"rh_LOF-RMF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LOF-RMF_0","name":"Probabilistic Map for rh_LOF-RMF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LOF-RMF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-RMF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LOF-RMF_1","regionName":[{"regionName":"rh_LOF-RMF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LOF-RMF_1","name":"Probabilistic Map for rh_LOF-RMF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LOF-RMF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-RMF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LOF-ST_0","regionName":[{"regionName":"rh_LOF-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LOF-ST_0","name":"Probabilistic Map for rh_LOF-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LOF-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LO-SP_0","regionName":[{"regionName":"rh_LO-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LO-SP_0","name":"Probabilistic Map for rh_LO-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LO-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LO-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_MOF-ST_0","regionName":[{"regionName":"rh_MOF-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_MOF-ST_0","name":"Probabilistic Map for rh_MOF-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_MOF-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MOF-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_MT-SM_0","regionName":[{"regionName":"rh_MT-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_MT-SM_0","name":"Probabilistic Map for rh_MT-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_MT-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MT-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_MT-ST_0","regionName":[{"regionName":"rh_MT-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_MT-ST_0","name":"Probabilistic Map for rh_MT-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_MT-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MT-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Op-Ins_0","regionName":[{"regionName":"rh_Op-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Op-Ins_0","name":"Probabilistic Map for rh_Op-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Op-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Op-PrC_0","regionName":[{"regionName":"rh_Op-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Op-PrC_0","name":"Probabilistic Map for rh_Op-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Op-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Op-SF_0","regionName":[{"regionName":"rh_Op-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Op-SF_0","name":"Probabilistic Map for rh_Op-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Op-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Op-Tr_0","regionName":[{"regionName":"rh_Op-Tr_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Op-Tr_0","name":"Probabilistic Map for rh_Op-Tr_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Op-Tr_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-Tr_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Or-Ins_0","regionName":[{"regionName":"rh_Or-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Or-Ins_0","name":"Probabilistic Map for rh_Or-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Or-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Or-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoCi-PrCu_1","regionName":[{"regionName":"rh_PoCi-PrCu_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoCi-PrCu_1","name":"Probabilistic Map for rh_PoCi-PrCu_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoCi-PrCu_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-PrCu_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoCi-PrCu_2","regionName":[{"regionName":"rh_PoCi-PrCu_2","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoCi-PrCu_2","name":"Probabilistic Map for rh_PoCi-PrCu_2","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoCi-PrCu_2","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-PrCu_2.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoCi-RAC_0","regionName":[{"regionName":"rh_PoCi-RAC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoCi-RAC_0","name":"Probabilistic Map for rh_PoCi-RAC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoCi-RAC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-RAC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-PrC_0","regionName":[{"regionName":"rh_PoC-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-PrC_0","name":"Probabilistic Map for rh_PoC-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-PrC_1","regionName":[{"regionName":"rh_PoC-PrC_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-PrC_1","name":"Probabilistic Map for rh_PoC-PrC_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-PrC_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-PrC_2","regionName":[{"regionName":"rh_PoC-PrC_2","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-PrC_2","name":"Probabilistic Map for rh_PoC-PrC_2","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-PrC_2","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_2.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-SM_0","regionName":[{"regionName":"rh_PoC-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-SM_0","name":"Probabilistic Map for rh_PoC-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-SP_0","regionName":[{"regionName":"rh_PoC-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-SP_0","name":"Probabilistic Map for rh_PoC-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-SP_1","regionName":[{"regionName":"rh_PoC-SP_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-SP_1","name":"Probabilistic Map for rh_PoC-SP_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-SP_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SP_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PrC-Ins_0","regionName":[{"regionName":"rh_PrC-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PrC-Ins_0","name":"Probabilistic Map for rh_PrC-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PrC-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PrC-SM_0","regionName":[{"regionName":"rh_PrC-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PrC-SM_0","name":"Probabilistic Map for rh_PrC-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PrC-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PrC-SP_0","regionName":[{"regionName":"rh_PrC-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PrC-SP_0","name":"Probabilistic Map for rh_PrC-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PrC-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_RAC-SF_0","regionName":[{"regionName":"rh_RAC-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_RAC-SF_0","name":"Probabilistic Map for rh_RAC-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_RAC-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RAC-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_RMF-SF_0","regionName":[{"regionName":"rh_RMF-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_RMF-SF_0","name":"Probabilistic Map for rh_RMF-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_RMF-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RMF-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_RMF-SF_1","regionName":[{"regionName":"rh_RMF-SF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_RMF-SF_1","name":"Probabilistic Map for rh_RMF-SF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_RMF-SF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RMF-SF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_SM-Ins_0","regionName":[{"regionName":"rh_SM-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_SM-Ins_0","name":"Probabilistic Map for rh_SM-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_SM-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_SM-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_SP-SM_0","regionName":[{"regionName":"rh_SP-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_SP-SM_0","name":"Probabilistic Map for rh_SP-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_SP-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_SP-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_ST-TT_0","regionName":[{"regionName":"rh_ST-TT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_ST-TT_0","name":"Probabilistic Map for rh_ST-TT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_ST-TT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_ST-TT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Tr-Ins_0","regionName":[{"regionName":"rh_Tr-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Tr-Ins_0","name":"Probabilistic Map for rh_Tr-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Tr-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Tr-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}],[{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Tr-SF_0","regionName":[{"regionName":"rh_Tr-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Tr-SF_0","name":"Probabilistic Map for rh_Tr-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Tr-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Tr-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}]] \ No newline at end of file +[{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CAC-PrCu_0","regionName":[{"regionName":"lh_CAC-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CAC-PrCu_0","name":"Probabilistic Map for lh_CAC-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CAC-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CAC-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-Op_0","regionName":[{"regionName":"lh_CMF-Op_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-Op_0","name":"Probabilistic Map for lh_CMF-Op_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-Op_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-Op_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-PoC_0","regionName":[{"regionName":"lh_CMF-PoC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-PoC_0","name":"Probabilistic Map for lh_CMF-PoC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-PoC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PoC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-PrC_0","regionName":[{"regionName":"lh_CMF-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-PrC_0","name":"Probabilistic Map for lh_CMF-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-PrC_1","regionName":[{"regionName":"lh_CMF-PrC_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-PrC_1","name":"Probabilistic Map for lh_CMF-PrC_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-PrC_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PrC_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-RMF_0","regionName":[{"regionName":"lh_CMF-RMF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-RMF_0","name":"Probabilistic Map for lh_CMF-RMF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-RMF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-RMF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_CMF-SF_0","regionName":[{"regionName":"lh_CMF-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_CMF-SF_0","name":"Probabilistic Map for lh_CMF-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_CMF-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Fu-LO_0","regionName":[{"regionName":"lh_Fu-LO_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Fu-LO_0","name":"Probabilistic Map for lh_Fu-LO_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Fu-LO_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Fu-LO_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IC-PrCu_0","regionName":[{"regionName":"lh_IC-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IC-PrCu_0","name":"Probabilistic Map for lh_IC-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IC-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IC-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-IT_0","regionName":[{"regionName":"lh_IP-IT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-IT_0","name":"Probabilistic Map for lh_IP-IT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-IT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-IT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-LO_1","regionName":[{"regionName":"lh_IP-LO_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-LO_1","name":"Probabilistic Map for lh_IP-LO_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-LO_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-LO_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-MT_0","regionName":[{"regionName":"lh_IP-MT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-MT_0","name":"Probabilistic Map for lh_IP-MT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-MT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-MT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-SM_0","regionName":[{"regionName":"lh_IP-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-SM_0","name":"Probabilistic Map for lh_IP-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-SP_0","regionName":[{"regionName":"lh_IP-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-SP_0","name":"Probabilistic Map for lh_IP-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IP-SP_1","regionName":[{"regionName":"lh_IP-SP_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IP-SP_1","name":"Probabilistic Map for lh_IP-SP_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IP-SP_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SP_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_IT-MT_0","regionName":[{"regionName":"lh_IT-MT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_IT-MT_0","name":"Probabilistic Map for lh_IT-MT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_IT-MT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IT-MT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_LOF-Or_0","regionName":[{"regionName":"lh_LOF-Or_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_LOF-Or_0","name":"Probabilistic Map for lh_LOF-Or_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_LOF-Or_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-Or_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_LOF-RMF_0","regionName":[{"regionName":"lh_LOF-RMF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_LOF-RMF_0","name":"Probabilistic Map for lh_LOF-RMF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_LOF-RMF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-RMF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_LOF-RMF_1","regionName":[{"regionName":"lh_LOF-RMF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_LOF-RMF_1","name":"Probabilistic Map for lh_LOF-RMF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_LOF-RMF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-RMF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_LOF-ST_0","regionName":[{"regionName":"lh_LOF-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_LOF-ST_0","name":"Probabilistic Map for lh_LOF-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_LOF-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_MOF-ST_0","regionName":[{"regionName":"lh_MOF-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_MOF-ST_0","name":"Probabilistic Map for lh_MOF-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_MOF-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MOF-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_MT-SM_0","regionName":[{"regionName":"lh_MT-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_MT-SM_0","name":"Probabilistic Map for lh_MT-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_MT-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MT-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_MT-ST_0","regionName":[{"regionName":"lh_MT-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_MT-ST_0","name":"Probabilistic Map for lh_MT-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_MT-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MT-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Op-Ins_0","regionName":[{"regionName":"lh_Op-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Op-Ins_0","name":"Probabilistic Map for lh_Op-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Op-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Op-PrC_0","regionName":[{"regionName":"lh_Op-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Op-PrC_0","name":"Probabilistic Map for lh_Op-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Op-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Op-SF_0","regionName":[{"regionName":"lh_Op-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Op-SF_0","name":"Probabilistic Map for lh_Op-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Op-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Or-Ins_0","regionName":[{"regionName":"lh_Or-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Or-Ins_0","name":"Probabilistic Map for lh_Or-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Or-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Or-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-Ins_0","regionName":[{"regionName":"lh_PoC-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-Ins_0","name":"Probabilistic Map for lh_PoC-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoCi-PrCu_0","regionName":[{"regionName":"lh_PoCi-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoCi-PrCu_0","name":"Probabilistic Map for lh_PoCi-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoCi-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoCi-PrCu_1","regionName":[{"regionName":"lh_PoCi-PrCu_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoCi-PrCu_1","name":"Probabilistic Map for lh_PoCi-PrCu_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoCi-PrCu_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-PrCu_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoCi-RAC_0","regionName":[{"regionName":"lh_PoCi-RAC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoCi-RAC_0","name":"Probabilistic Map for lh_PoCi-RAC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoCi-RAC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-RAC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoCi-SF_0","regionName":[{"regionName":"lh_PoCi-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoCi-SF_0","name":"Probabilistic Map for lh_PoCi-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoCi-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-PrC_0","regionName":[{"regionName":"lh_PoC-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-PrC_0","name":"Probabilistic Map for lh_PoC-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-PrC_1","regionName":[{"regionName":"lh_PoC-PrC_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-PrC_1","name":"Probabilistic Map for lh_PoC-PrC_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-PrC_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-PrC_2","regionName":[{"regionName":"lh_PoC-PrC_2","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-PrC_2","name":"Probabilistic Map for lh_PoC-PrC_2","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-PrC_2","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_2.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-PrC_3","regionName":[{"regionName":"lh_PoC-PrC_3","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-PrC_3","name":"Probabilistic Map for lh_PoC-PrC_3","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-PrC_3","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_3.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-SM_0","regionName":[{"regionName":"lh_PoC-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-SM_0","name":"Probabilistic Map for lh_PoC-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PoC-SM_1","regionName":[{"regionName":"lh_PoC-SM_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PoC-SM_1","name":"Probabilistic Map for lh_PoC-SM_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PoC-SM_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-SM_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PrC-Ins_0","regionName":[{"regionName":"lh_PrC-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PrC-Ins_0","name":"Probabilistic Map for lh_PrC-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PrC-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PrC-SF_0","regionName":[{"regionName":"lh_PrC-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PrC-SF_0","name":"Probabilistic Map for lh_PrC-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PrC-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_PrC-SM_0","regionName":[{"regionName":"lh_PrC-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_PrC-SM_0","name":"Probabilistic Map for lh_PrC-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_PrC-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_RAC-SF_1","regionName":[{"regionName":"lh_RAC-SF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_RAC-SF_1","name":"Probabilistic Map for lh_RAC-SF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_RAC-SF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RAC-SF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_RMF-SF_0","regionName":[{"regionName":"lh_RMF-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_RMF-SF_0","name":"Probabilistic Map for lh_RMF-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_RMF-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RMF-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_RMF-SF_1","regionName":[{"regionName":"lh_RMF-SF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_RMF-SF_1","name":"Probabilistic Map for lh_RMF-SF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_RMF-SF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RMF-SF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_SM-Ins_0","regionName":[{"regionName":"lh_SM-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_SM-Ins_0","name":"Probabilistic Map for lh_SM-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_SM-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_SM-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_SP-SM_0","regionName":[{"regionName":"lh_SP-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_SP-SM_0","name":"Probabilistic Map for lh_SP-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_SP-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_SP-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_ST-Ins_0","regionName":[{"regionName":"lh_ST-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_ST-Ins_0","name":"Probabilistic Map for lh_ST-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_ST-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_ST-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_ST-TT_0","regionName":[{"regionName":"lh_ST-TT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_ST-TT_0","name":"Probabilistic Map for lh_ST-TT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_ST-TT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_ST-TT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Tr-Ins_0","regionName":[{"regionName":"lh_Tr-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Tr-Ins_0","name":"Probabilistic Map for lh_Tr-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Tr-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Tr-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for lh_Tr-SF_0","regionName":[{"regionName":"lh_Tr-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for lh_Tr-SF_0","name":"Probabilistic Map for lh_Tr-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"lh_Tr-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Tr-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CAC-PoCi_0","regionName":[{"regionName":"rh_CAC-PoCi_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CAC-PoCi_0","name":"Probabilistic Map for rh_CAC-PoCi_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CAC-PoCi_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CAC-PoCi_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CAC-PrCu_0","regionName":[{"regionName":"rh_CAC-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CAC-PrCu_0","name":"Probabilistic Map for rh_CAC-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CAC-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CAC-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-PrC_0","regionName":[{"regionName":"rh_CMF-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-PrC_0","name":"Probabilistic Map for rh_CMF-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-PrC_1","regionName":[{"regionName":"rh_CMF-PrC_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-PrC_1","name":"Probabilistic Map for rh_CMF-PrC_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-PrC_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-PrC_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-RMF_0","regionName":[{"regionName":"rh_CMF-RMF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-RMF_0","name":"Probabilistic Map for rh_CMF-RMF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-RMF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-RMF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-SF_0","regionName":[{"regionName":"rh_CMF-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-SF_0","name":"Probabilistic Map for rh_CMF-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_CMF-SF_1","regionName":[{"regionName":"rh_CMF-SF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_CMF-SF_1","name":"Probabilistic Map for rh_CMF-SF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_CMF-SF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-SF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Cu-Li_0","regionName":[{"regionName":"rh_Cu-Li_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Cu-Li_0","name":"Probabilistic Map for rh_Cu-Li_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Cu-Li_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Cu-Li_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Fu-LO_1","regionName":[{"regionName":"rh_Fu-LO_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Fu-LO_1","name":"Probabilistic Map for rh_Fu-LO_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Fu-LO_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Fu-LO_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IC-PrCu_0","regionName":[{"regionName":"rh_IC-PrCu_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IC-PrCu_0","name":"Probabilistic Map for rh_IC-PrCu_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IC-PrCu_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IC-PrCu_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-IT_0","regionName":[{"regionName":"rh_IP-IT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-IT_0","name":"Probabilistic Map for rh_IP-IT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-IT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-IT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-LO_0","regionName":[{"regionName":"rh_IP-LO_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-LO_0","name":"Probabilistic Map for rh_IP-LO_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-LO_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-LO_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-MT_0","regionName":[{"regionName":"rh_IP-MT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-MT_0","name":"Probabilistic Map for rh_IP-MT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-MT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-MT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-SM_0","regionName":[{"regionName":"rh_IP-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-SM_0","name":"Probabilistic Map for rh_IP-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IP-SP_0","regionName":[{"regionName":"rh_IP-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IP-SP_0","name":"Probabilistic Map for rh_IP-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IP-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IT-MT_1","regionName":[{"regionName":"rh_IT-MT_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IT-MT_1","name":"Probabilistic Map for rh_IT-MT_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IT-MT_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IT-MT_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_IT-MT_2","regionName":[{"regionName":"rh_IT-MT_2","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_IT-MT_2","name":"Probabilistic Map for rh_IT-MT_2","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_IT-MT_2","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IT-MT_2.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LOF-MOF_0","regionName":[{"regionName":"rh_LOF-MOF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LOF-MOF_0","name":"Probabilistic Map for rh_LOF-MOF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LOF-MOF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-MOF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LOF-RMF_0","regionName":[{"regionName":"rh_LOF-RMF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LOF-RMF_0","name":"Probabilistic Map for rh_LOF-RMF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LOF-RMF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-RMF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LOF-RMF_1","regionName":[{"regionName":"rh_LOF-RMF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LOF-RMF_1","name":"Probabilistic Map for rh_LOF-RMF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LOF-RMF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-RMF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LOF-ST_0","regionName":[{"regionName":"rh_LOF-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LOF-ST_0","name":"Probabilistic Map for rh_LOF-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LOF-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_LO-SP_0","regionName":[{"regionName":"rh_LO-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_LO-SP_0","name":"Probabilistic Map for rh_LO-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_LO-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LO-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_MOF-ST_0","regionName":[{"regionName":"rh_MOF-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_MOF-ST_0","name":"Probabilistic Map for rh_MOF-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_MOF-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MOF-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_MT-SM_0","regionName":[{"regionName":"rh_MT-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_MT-SM_0","name":"Probabilistic Map for rh_MT-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_MT-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MT-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_MT-ST_0","regionName":[{"regionName":"rh_MT-ST_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_MT-ST_0","name":"Probabilistic Map for rh_MT-ST_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_MT-ST_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MT-ST_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Op-Ins_0","regionName":[{"regionName":"rh_Op-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Op-Ins_0","name":"Probabilistic Map for rh_Op-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Op-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Op-PrC_0","regionName":[{"regionName":"rh_Op-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Op-PrC_0","name":"Probabilistic Map for rh_Op-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Op-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Op-SF_0","regionName":[{"regionName":"rh_Op-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Op-SF_0","name":"Probabilistic Map for rh_Op-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Op-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Op-Tr_0","regionName":[{"regionName":"rh_Op-Tr_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Op-Tr_0","name":"Probabilistic Map for rh_Op-Tr_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Op-Tr_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-Tr_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Or-Ins_0","regionName":[{"regionName":"rh_Or-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Or-Ins_0","name":"Probabilistic Map for rh_Or-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Or-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Or-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoCi-PrCu_1","regionName":[{"regionName":"rh_PoCi-PrCu_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoCi-PrCu_1","name":"Probabilistic Map for rh_PoCi-PrCu_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoCi-PrCu_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-PrCu_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoCi-PrCu_2","regionName":[{"regionName":"rh_PoCi-PrCu_2","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoCi-PrCu_2","name":"Probabilistic Map for rh_PoCi-PrCu_2","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoCi-PrCu_2","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-PrCu_2.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoCi-RAC_0","regionName":[{"regionName":"rh_PoCi-RAC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoCi-RAC_0","name":"Probabilistic Map for rh_PoCi-RAC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoCi-RAC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-RAC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-PrC_0","regionName":[{"regionName":"rh_PoC-PrC_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-PrC_0","name":"Probabilistic Map for rh_PoC-PrC_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-PrC_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-PrC_1","regionName":[{"regionName":"rh_PoC-PrC_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-PrC_1","name":"Probabilistic Map for rh_PoC-PrC_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-PrC_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-PrC_2","regionName":[{"regionName":"rh_PoC-PrC_2","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-PrC_2","name":"Probabilistic Map for rh_PoC-PrC_2","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-PrC_2","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_2.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-SM_0","regionName":[{"regionName":"rh_PoC-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-SM_0","name":"Probabilistic Map for rh_PoC-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-SP_0","regionName":[{"regionName":"rh_PoC-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-SP_0","name":"Probabilistic Map for rh_PoC-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PoC-SP_1","regionName":[{"regionName":"rh_PoC-SP_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PoC-SP_1","name":"Probabilistic Map for rh_PoC-SP_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PoC-SP_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SP_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PrC-Ins_0","regionName":[{"regionName":"rh_PrC-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PrC-Ins_0","name":"Probabilistic Map for rh_PrC-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PrC-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PrC-SM_0","regionName":[{"regionName":"rh_PrC-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PrC-SM_0","name":"Probabilistic Map for rh_PrC-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PrC-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_PrC-SP_0","regionName":[{"regionName":"rh_PrC-SP_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_PrC-SP_0","name":"Probabilistic Map for rh_PrC-SP_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_PrC-SP_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-SP_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_RAC-SF_0","regionName":[{"regionName":"rh_RAC-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_RAC-SF_0","name":"Probabilistic Map for rh_RAC-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_RAC-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RAC-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_RMF-SF_0","regionName":[{"regionName":"rh_RMF-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_RMF-SF_0","name":"Probabilistic Map for rh_RMF-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_RMF-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RMF-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_RMF-SF_1","regionName":[{"regionName":"rh_RMF-SF_1","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_RMF-SF_1","name":"Probabilistic Map for rh_RMF-SF_1","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_RMF-SF_1","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RMF-SF_1.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_SM-Ins_0","regionName":[{"regionName":"rh_SM-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_SM-Ins_0","name":"Probabilistic Map for rh_SM-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_SM-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_SM-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_SP-SM_0","regionName":[{"regionName":"rh_SP-SM_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_SP-SM_0","name":"Probabilistic Map for rh_SP-SM_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_SP-SM_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_SP-SM_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_ST-TT_0","regionName":[{"regionName":"rh_ST-TT_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_ST-TT_0","name":"Probabilistic Map for rh_ST-TT_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_ST-TT_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_ST-TT_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Tr-Ins_0","regionName":[{"regionName":"rh_Tr-Ins_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Tr-Ins_0","name":"Probabilistic Map for rh_Tr-Ins_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Tr-Ins_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Tr-Ins_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"},{"type":"Probabilistic Map","name":"Probabilistic Map for rh_Tr-SF_0","regionName":[{"regionName":"rh_Tr-SF_0","relationship":"equals"}],"files":[{"filename":"Probabilistic Map for rh_Tr-SF_0","name":"Probabilistic Map for rh_Tr-SF_0","mimetype":"application/nifti","properties":{"name":null,"description":"","publications":[],"associatedRegion":"rh_Tr-SF_0","associatedParcellation":"Fibre Bundle Atlas - Short Bundle","datasetInfo":"MNIColin27_PMap.json"},"url":"https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Tr-SF_0.nii"}],"targetParcellation":"Fibre Bundle Atlas - Short Bundle"}] \ No newline at end of file diff --git a/src/res/ext/swmAggregatedData.json.bak b/src/res/ext/swmAggregatedData.json.bak new file mode 100644 index 000000000..f533c04ff --- /dev/null +++ b/src/res/ext/swmAggregatedData.json.bak @@ -0,0 +1,2868 @@ +[ + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_CAC-PrCu_0", + "regionName": [ + { + "regionName": "lh_CAC-PrCu_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_CAC-PrCu_0", + "name": "Probabilistic Map for lh_CAC-PrCu_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_CAC-PrCu_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CAC-PrCu_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_CMF-Op_0", + "regionName": [ + { + "regionName": "lh_CMF-Op_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_CMF-Op_0", + "name": "Probabilistic Map for lh_CMF-Op_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_CMF-Op_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-Op_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_CMF-PoC_0", + "regionName": [ + { + "regionName": "lh_CMF-PoC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_CMF-PoC_0", + "name": "Probabilistic Map for lh_CMF-PoC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_CMF-PoC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PoC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_CMF-PrC_0", + "regionName": [ + { + "regionName": "lh_CMF-PrC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_CMF-PrC_0", + "name": "Probabilistic Map for lh_CMF-PrC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_CMF-PrC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PrC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_CMF-PrC_1", + "regionName": [ + { + "regionName": "lh_CMF-PrC_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_CMF-PrC_1", + "name": "Probabilistic Map for lh_CMF-PrC_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_CMF-PrC_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-PrC_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_CMF-RMF_0", + "regionName": [ + { + "regionName": "lh_CMF-RMF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_CMF-RMF_0", + "name": "Probabilistic Map for lh_CMF-RMF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_CMF-RMF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-RMF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_CMF-SF_0", + "regionName": [ + { + "regionName": "lh_CMF-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_CMF-SF_0", + "name": "Probabilistic Map for lh_CMF-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_CMF-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_CMF-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_Fu-LO_0", + "regionName": [ + { + "regionName": "lh_Fu-LO_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_Fu-LO_0", + "name": "Probabilistic Map for lh_Fu-LO_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_Fu-LO_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Fu-LO_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_IC-PrCu_0", + "regionName": [ + { + "regionName": "lh_IC-PrCu_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_IC-PrCu_0", + "name": "Probabilistic Map for lh_IC-PrCu_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_IC-PrCu_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IC-PrCu_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_IP-IT_0", + "regionName": [ + { + "regionName": "lh_IP-IT_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_IP-IT_0", + "name": "Probabilistic Map for lh_IP-IT_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_IP-IT_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-IT_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_IP-LO_1", + "regionName": [ + { + "regionName": "lh_IP-LO_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_IP-LO_1", + "name": "Probabilistic Map for lh_IP-LO_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_IP-LO_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-LO_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_IP-MT_0", + "regionName": [ + { + "regionName": "lh_IP-MT_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_IP-MT_0", + "name": "Probabilistic Map for lh_IP-MT_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_IP-MT_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-MT_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_IP-SM_0", + "regionName": [ + { + "regionName": "lh_IP-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_IP-SM_0", + "name": "Probabilistic Map for lh_IP-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_IP-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_IP-SP_0", + "regionName": [ + { + "regionName": "lh_IP-SP_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_IP-SP_0", + "name": "Probabilistic Map for lh_IP-SP_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_IP-SP_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SP_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_IP-SP_1", + "regionName": [ + { + "regionName": "lh_IP-SP_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_IP-SP_1", + "name": "Probabilistic Map for lh_IP-SP_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_IP-SP_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IP-SP_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_IT-MT_0", + "regionName": [ + { + "regionName": "lh_IT-MT_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_IT-MT_0", + "name": "Probabilistic Map for lh_IT-MT_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_IT-MT_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_IT-MT_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_LOF-Or_0", + "regionName": [ + { + "regionName": "lh_LOF-Or_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_LOF-Or_0", + "name": "Probabilistic Map for lh_LOF-Or_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_LOF-Or_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-Or_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_LOF-RMF_0", + "regionName": [ + { + "regionName": "lh_LOF-RMF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_LOF-RMF_0", + "name": "Probabilistic Map for lh_LOF-RMF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_LOF-RMF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-RMF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_LOF-RMF_1", + "regionName": [ + { + "regionName": "lh_LOF-RMF_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_LOF-RMF_1", + "name": "Probabilistic Map for lh_LOF-RMF_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_LOF-RMF_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-RMF_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_LOF-ST_0", + "regionName": [ + { + "regionName": "lh_LOF-ST_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_LOF-ST_0", + "name": "Probabilistic Map for lh_LOF-ST_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_LOF-ST_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_LOF-ST_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_MOF-ST_0", + "regionName": [ + { + "regionName": "lh_MOF-ST_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_MOF-ST_0", + "name": "Probabilistic Map for lh_MOF-ST_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_MOF-ST_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MOF-ST_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_MT-SM_0", + "regionName": [ + { + "regionName": "lh_MT-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_MT-SM_0", + "name": "Probabilistic Map for lh_MT-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_MT-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MT-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_MT-ST_0", + "regionName": [ + { + "regionName": "lh_MT-ST_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_MT-ST_0", + "name": "Probabilistic Map for lh_MT-ST_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_MT-ST_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_MT-ST_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_Op-Ins_0", + "regionName": [ + { + "regionName": "lh_Op-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_Op-Ins_0", + "name": "Probabilistic Map for lh_Op-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_Op-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_Op-PrC_0", + "regionName": [ + { + "regionName": "lh_Op-PrC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_Op-PrC_0", + "name": "Probabilistic Map for lh_Op-PrC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_Op-PrC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-PrC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_Op-SF_0", + "regionName": [ + { + "regionName": "lh_Op-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_Op-SF_0", + "name": "Probabilistic Map for lh_Op-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_Op-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Op-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_Or-Ins_0", + "regionName": [ + { + "regionName": "lh_Or-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_Or-Ins_0", + "name": "Probabilistic Map for lh_Or-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_Or-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Or-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoC-Ins_0", + "regionName": [ + { + "regionName": "lh_PoC-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoC-Ins_0", + "name": "Probabilistic Map for lh_PoC-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoC-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoCi-PrCu_0", + "regionName": [ + { + "regionName": "lh_PoCi-PrCu_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoCi-PrCu_0", + "name": "Probabilistic Map for lh_PoCi-PrCu_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoCi-PrCu_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-PrCu_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoCi-PrCu_1", + "regionName": [ + { + "regionName": "lh_PoCi-PrCu_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoCi-PrCu_1", + "name": "Probabilistic Map for lh_PoCi-PrCu_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoCi-PrCu_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-PrCu_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoCi-RAC_0", + "regionName": [ + { + "regionName": "lh_PoCi-RAC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoCi-RAC_0", + "name": "Probabilistic Map for lh_PoCi-RAC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoCi-RAC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-RAC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoCi-SF_0", + "regionName": [ + { + "regionName": "lh_PoCi-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoCi-SF_0", + "name": "Probabilistic Map for lh_PoCi-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoCi-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoCi-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoC-PrC_0", + "regionName": [ + { + "regionName": "lh_PoC-PrC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoC-PrC_0", + "name": "Probabilistic Map for lh_PoC-PrC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoC-PrC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoC-PrC_1", + "regionName": [ + { + "regionName": "lh_PoC-PrC_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoC-PrC_1", + "name": "Probabilistic Map for lh_PoC-PrC_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoC-PrC_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoC-PrC_2", + "regionName": [ + { + "regionName": "lh_PoC-PrC_2", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoC-PrC_2", + "name": "Probabilistic Map for lh_PoC-PrC_2", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoC-PrC_2", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_2.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoC-PrC_3", + "regionName": [ + { + "regionName": "lh_PoC-PrC_3", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoC-PrC_3", + "name": "Probabilistic Map for lh_PoC-PrC_3", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoC-PrC_3", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-PrC_3.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoC-SM_0", + "regionName": [ + { + "regionName": "lh_PoC-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoC-SM_0", + "name": "Probabilistic Map for lh_PoC-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoC-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PoC-SM_1", + "regionName": [ + { + "regionName": "lh_PoC-SM_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PoC-SM_1", + "name": "Probabilistic Map for lh_PoC-SM_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PoC-SM_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PoC-SM_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PrC-Ins_0", + "regionName": [ + { + "regionName": "lh_PrC-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PrC-Ins_0", + "name": "Probabilistic Map for lh_PrC-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PrC-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PrC-SF_0", + "regionName": [ + { + "regionName": "lh_PrC-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PrC-SF_0", + "name": "Probabilistic Map for lh_PrC-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PrC-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_PrC-SM_0", + "regionName": [ + { + "regionName": "lh_PrC-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_PrC-SM_0", + "name": "Probabilistic Map for lh_PrC-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_PrC-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_PrC-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_RAC-SF_1", + "regionName": [ + { + "regionName": "lh_RAC-SF_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_RAC-SF_1", + "name": "Probabilistic Map for lh_RAC-SF_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_RAC-SF_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RAC-SF_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_RMF-SF_0", + "regionName": [ + { + "regionName": "lh_RMF-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_RMF-SF_0", + "name": "Probabilistic Map for lh_RMF-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_RMF-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RMF-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_RMF-SF_1", + "regionName": [ + { + "regionName": "lh_RMF-SF_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_RMF-SF_1", + "name": "Probabilistic Map for lh_RMF-SF_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_RMF-SF_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_RMF-SF_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_SM-Ins_0", + "regionName": [ + { + "regionName": "lh_SM-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_SM-Ins_0", + "name": "Probabilistic Map for lh_SM-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_SM-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_SM-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_SP-SM_0", + "regionName": [ + { + "regionName": "lh_SP-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_SP-SM_0", + "name": "Probabilistic Map for lh_SP-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_SP-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_SP-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_ST-Ins_0", + "regionName": [ + { + "regionName": "lh_ST-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_ST-Ins_0", + "name": "Probabilistic Map for lh_ST-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_ST-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_ST-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_ST-TT_0", + "regionName": [ + { + "regionName": "lh_ST-TT_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_ST-TT_0", + "name": "Probabilistic Map for lh_ST-TT_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_ST-TT_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_ST-TT_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_Tr-Ins_0", + "regionName": [ + { + "regionName": "lh_Tr-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_Tr-Ins_0", + "name": "Probabilistic Map for lh_Tr-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_Tr-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Tr-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for lh_Tr-SF_0", + "regionName": [ + { + "regionName": "lh_Tr-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for lh_Tr-SF_0", + "name": "Probabilistic Map for lh_Tr-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "lh_Tr-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/left-hemisphere/Probability_Maps/lh_Tr-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_CAC-PoCi_0", + "regionName": [ + { + "regionName": "rh_CAC-PoCi_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_CAC-PoCi_0", + "name": "Probabilistic Map for rh_CAC-PoCi_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_CAC-PoCi_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CAC-PoCi_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_CAC-PrCu_0", + "regionName": [ + { + "regionName": "rh_CAC-PrCu_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_CAC-PrCu_0", + "name": "Probabilistic Map for rh_CAC-PrCu_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_CAC-PrCu_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CAC-PrCu_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_CMF-PrC_0", + "regionName": [ + { + "regionName": "rh_CMF-PrC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_CMF-PrC_0", + "name": "Probabilistic Map for rh_CMF-PrC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_CMF-PrC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-PrC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_CMF-PrC_1", + "regionName": [ + { + "regionName": "rh_CMF-PrC_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_CMF-PrC_1", + "name": "Probabilistic Map for rh_CMF-PrC_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_CMF-PrC_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-PrC_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_CMF-RMF_0", + "regionName": [ + { + "regionName": "rh_CMF-RMF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_CMF-RMF_0", + "name": "Probabilistic Map for rh_CMF-RMF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_CMF-RMF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-RMF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_CMF-SF_0", + "regionName": [ + { + "regionName": "rh_CMF-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_CMF-SF_0", + "name": "Probabilistic Map for rh_CMF-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_CMF-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_CMF-SF_1", + "regionName": [ + { + "regionName": "rh_CMF-SF_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_CMF-SF_1", + "name": "Probabilistic Map for rh_CMF-SF_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_CMF-SF_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_CMF-SF_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Cu-Li_0", + "regionName": [ + { + "regionName": "rh_Cu-Li_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Cu-Li_0", + "name": "Probabilistic Map for rh_Cu-Li_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Cu-Li_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Cu-Li_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Fu-LO_1", + "regionName": [ + { + "regionName": "rh_Fu-LO_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Fu-LO_1", + "name": "Probabilistic Map for rh_Fu-LO_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Fu-LO_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Fu-LO_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_IC-PrCu_0", + "regionName": [ + { + "regionName": "rh_IC-PrCu_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_IC-PrCu_0", + "name": "Probabilistic Map for rh_IC-PrCu_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_IC-PrCu_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IC-PrCu_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_IP-IT_0", + "regionName": [ + { + "regionName": "rh_IP-IT_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_IP-IT_0", + "name": "Probabilistic Map for rh_IP-IT_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_IP-IT_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-IT_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_IP-LO_0", + "regionName": [ + { + "regionName": "rh_IP-LO_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_IP-LO_0", + "name": "Probabilistic Map for rh_IP-LO_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_IP-LO_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-LO_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_IP-MT_0", + "regionName": [ + { + "regionName": "rh_IP-MT_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_IP-MT_0", + "name": "Probabilistic Map for rh_IP-MT_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_IP-MT_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-MT_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_IP-SM_0", + "regionName": [ + { + "regionName": "rh_IP-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_IP-SM_0", + "name": "Probabilistic Map for rh_IP-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_IP-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_IP-SP_0", + "regionName": [ + { + "regionName": "rh_IP-SP_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_IP-SP_0", + "name": "Probabilistic Map for rh_IP-SP_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_IP-SP_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IP-SP_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_IT-MT_1", + "regionName": [ + { + "regionName": "rh_IT-MT_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_IT-MT_1", + "name": "Probabilistic Map for rh_IT-MT_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_IT-MT_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IT-MT_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_IT-MT_2", + "regionName": [ + { + "regionName": "rh_IT-MT_2", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_IT-MT_2", + "name": "Probabilistic Map for rh_IT-MT_2", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_IT-MT_2", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_IT-MT_2.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_LOF-MOF_0", + "regionName": [ + { + "regionName": "rh_LOF-MOF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_LOF-MOF_0", + "name": "Probabilistic Map for rh_LOF-MOF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_LOF-MOF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-MOF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_LOF-RMF_0", + "regionName": [ + { + "regionName": "rh_LOF-RMF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_LOF-RMF_0", + "name": "Probabilistic Map for rh_LOF-RMF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_LOF-RMF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-RMF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_LOF-RMF_1", + "regionName": [ + { + "regionName": "rh_LOF-RMF_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_LOF-RMF_1", + "name": "Probabilistic Map for rh_LOF-RMF_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_LOF-RMF_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-RMF_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_LOF-ST_0", + "regionName": [ + { + "regionName": "rh_LOF-ST_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_LOF-ST_0", + "name": "Probabilistic Map for rh_LOF-ST_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_LOF-ST_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LOF-ST_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_LO-SP_0", + "regionName": [ + { + "regionName": "rh_LO-SP_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_LO-SP_0", + "name": "Probabilistic Map for rh_LO-SP_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_LO-SP_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_LO-SP_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_MOF-ST_0", + "regionName": [ + { + "regionName": "rh_MOF-ST_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_MOF-ST_0", + "name": "Probabilistic Map for rh_MOF-ST_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_MOF-ST_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MOF-ST_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_MT-SM_0", + "regionName": [ + { + "regionName": "rh_MT-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_MT-SM_0", + "name": "Probabilistic Map for rh_MT-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_MT-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MT-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_MT-ST_0", + "regionName": [ + { + "regionName": "rh_MT-ST_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_MT-ST_0", + "name": "Probabilistic Map for rh_MT-ST_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_MT-ST_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_MT-ST_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Op-Ins_0", + "regionName": [ + { + "regionName": "rh_Op-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Op-Ins_0", + "name": "Probabilistic Map for rh_Op-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Op-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Op-PrC_0", + "regionName": [ + { + "regionName": "rh_Op-PrC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Op-PrC_0", + "name": "Probabilistic Map for rh_Op-PrC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Op-PrC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-PrC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Op-SF_0", + "regionName": [ + { + "regionName": "rh_Op-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Op-SF_0", + "name": "Probabilistic Map for rh_Op-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Op-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Op-Tr_0", + "regionName": [ + { + "regionName": "rh_Op-Tr_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Op-Tr_0", + "name": "Probabilistic Map for rh_Op-Tr_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Op-Tr_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Op-Tr_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Or-Ins_0", + "regionName": [ + { + "regionName": "rh_Or-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Or-Ins_0", + "name": "Probabilistic Map for rh_Or-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Or-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Or-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoCi-PrCu_1", + "regionName": [ + { + "regionName": "rh_PoCi-PrCu_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoCi-PrCu_1", + "name": "Probabilistic Map for rh_PoCi-PrCu_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoCi-PrCu_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-PrCu_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoCi-PrCu_2", + "regionName": [ + { + "regionName": "rh_PoCi-PrCu_2", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoCi-PrCu_2", + "name": "Probabilistic Map for rh_PoCi-PrCu_2", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoCi-PrCu_2", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-PrCu_2.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoCi-RAC_0", + "regionName": [ + { + "regionName": "rh_PoCi-RAC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoCi-RAC_0", + "name": "Probabilistic Map for rh_PoCi-RAC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoCi-RAC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoCi-RAC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoC-PrC_0", + "regionName": [ + { + "regionName": "rh_PoC-PrC_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoC-PrC_0", + "name": "Probabilistic Map for rh_PoC-PrC_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoC-PrC_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoC-PrC_1", + "regionName": [ + { + "regionName": "rh_PoC-PrC_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoC-PrC_1", + "name": "Probabilistic Map for rh_PoC-PrC_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoC-PrC_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoC-PrC_2", + "regionName": [ + { + "regionName": "rh_PoC-PrC_2", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoC-PrC_2", + "name": "Probabilistic Map for rh_PoC-PrC_2", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoC-PrC_2", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-PrC_2.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoC-SM_0", + "regionName": [ + { + "regionName": "rh_PoC-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoC-SM_0", + "name": "Probabilistic Map for rh_PoC-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoC-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoC-SP_0", + "regionName": [ + { + "regionName": "rh_PoC-SP_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoC-SP_0", + "name": "Probabilistic Map for rh_PoC-SP_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoC-SP_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SP_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PoC-SP_1", + "regionName": [ + { + "regionName": "rh_PoC-SP_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PoC-SP_1", + "name": "Probabilistic Map for rh_PoC-SP_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PoC-SP_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PoC-SP_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PrC-Ins_0", + "regionName": [ + { + "regionName": "rh_PrC-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PrC-Ins_0", + "name": "Probabilistic Map for rh_PrC-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PrC-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PrC-SM_0", + "regionName": [ + { + "regionName": "rh_PrC-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PrC-SM_0", + "name": "Probabilistic Map for rh_PrC-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PrC-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_PrC-SP_0", + "regionName": [ + { + "regionName": "rh_PrC-SP_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_PrC-SP_0", + "name": "Probabilistic Map for rh_PrC-SP_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_PrC-SP_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_PrC-SP_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_RAC-SF_0", + "regionName": [ + { + "regionName": "rh_RAC-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_RAC-SF_0", + "name": "Probabilistic Map for rh_RAC-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_RAC-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RAC-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_RMF-SF_0", + "regionName": [ + { + "regionName": "rh_RMF-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_RMF-SF_0", + "name": "Probabilistic Map for rh_RMF-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_RMF-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RMF-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + }, + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_RMF-SF_1", + "regionName": [ + { + "regionName": "rh_RMF-SF_1", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_RMF-SF_1", + "name": "Probabilistic Map for rh_RMF-SF_1", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_RMF-SF_1", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_RMF-SF_1.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_SM-Ins_0", + "regionName": [ + { + "regionName": "rh_SM-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_SM-Ins_0", + "name": "Probabilistic Map for rh_SM-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_SM-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_SM-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_SP-SM_0", + "regionName": [ + { + "regionName": "rh_SP-SM_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_SP-SM_0", + "name": "Probabilistic Map for rh_SP-SM_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_SP-SM_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_SP-SM_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_ST-TT_0", + "regionName": [ + { + "regionName": "rh_ST-TT_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_ST-TT_0", + "name": "Probabilistic Map for rh_ST-TT_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_ST-TT_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_ST-TT_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Tr-Ins_0", + "regionName": [ + { + "regionName": "rh_Tr-Ins_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Tr-Ins_0", + "name": "Probabilistic Map for rh_Tr-Ins_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Tr-Ins_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Tr-Ins_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ], + [ + { + "type": "Probabilistic Map", + "name": "Probabilistic Map for rh_Tr-SF_0", + "regionName": [ + { + "regionName": "rh_Tr-SF_0", + "relationship": "equals" + } + ], + "files": [ + { + "filename": "Probabilistic Map for rh_Tr-SF_0", + "name": "Probabilistic Map for rh_Tr-SF_0", + "mimetype": "application/nifti", + "properties": { + "name": null, + "description": "", + "publications": [], + "associatedRegion": "rh_Tr-SF_0", + "associatedParcellation": "Fibre Bundle Atlas - Short Bundle", + "datasetInfo": "MNIColin27_PMap.json" + }, + "url": "https://neuroglancer-dev.humanbrainproject.org/precomputed/Fiber_Bundle/SWM_atlas/right-hemisphere/Probability_Maps/rh_Tr-SF_0.nii" + } + ], + "targetParcellation": "Fibre Bundle Atlas - Short Bundle" + } + ] +] \ No newline at end of file diff --git a/src/services/stateStore.service.ts b/src/services/stateStore.service.ts index 55fb393ce..a641dae9a 100644 --- a/src/services/stateStore.service.ts +++ b/src/services/stateStore.service.ts @@ -1,18 +1,30 @@ import { Action } from '@ngrx/store' import { filter } from 'rxjs/operators'; -import { NgAnalyzeModulesHost } from '@angular/compiler'; export const NEWVIEWER = 'NEWVIEWER' export const FETCHED_TEMPLATES = 'FETCHED_TEMPLATES' export const SELECT_PARCELLATION = `SELECT_PARCELLATION` export const SELECT_REGIONS = `SELECT_REGIONS` -export const LABELIDX_MAP = 'LABELIDX_MAP' export const CHANGE_NAVIGATION = 'CHANGE_NAVIGATION' export const FETCHED_DATAENTRIES = 'FETCHED_DATAENTRIES' export const FETCHED_METADATA = 'FETCHED_METADATA' +export const FETCHED_SPATIAL_DATA = `FETCHED_SPATIAL_DATA` + +export const LOAD_DEDICATED_LAYER = 'LOAD_DEDICATED_LAYER' +export const UNLOAD_DEDICATED_LAYER = 'UNLOAD_DEDICATED_LAYER' + +export const SPATIAL_GOTO_PAGE = `SPATIAL_GOTO_PAGE` +export const UPDATE_SPATIAL_DATA = `UPDATE_SPATIAL_DATA` +export const UPDATE_SPATIAL_DATA_VISIBLE = `UPDATE_SPATIAL_DATA_VISIBLE ` + +export const TOGGLE_SIDE_PANEL = 'TOGGLE_SIDE_PANEL' +export const CLOSE_SIDE_PANEL = `CLOSE_SIDE_PANEL` +export const OPEN_SIDE_PANEL = `OPEN_SIDE_PANEL` + +export const MOUSE_OVER_SEGMENT = `MOUSE_OVER_SEGMENT` export interface ViewerStateInterface{ fetchedTemplates : any[] @@ -30,8 +42,9 @@ export interface AtlasAction extends Action{ selectTemplate? : any selectParcellation? : any selectRegions? : any[] + dedicatedView? : string - changeNavigation? : any + navigation? : any } export interface NewViewerAction extends Action{ @@ -41,6 +54,7 @@ export interface NewViewerAction extends Action{ export interface DatasetAction extends Action{ fetchedDataEntries : DataEntry[] + fetchedSpatialData : DataEntry[] fetchedMetadataMap : Map<string,Map<string,{properties:Property}>> } @@ -53,13 +67,27 @@ export interface DataStateInterface{ fetchedMetadataMap : Map<string,Map<string,{properties:Property}>> } -export function newViewer(state:any,action:NewViewerAction){ +export function uiState(state:UIStateInterface,action:UIAction){ switch(action.type){ - case NEWVIEWER: + case MOUSE_OVER_SEGMENT: return Object.assign({},state,{ - templateSelected:action.selectTemplate, - parcellationSelected : action.selectParcellation, - regionsSelected : [] + mouseOverSegment : action.segment + }) + case TOGGLE_SIDE_PANEL: + return Object.assign({},state,{ + sidePanelOpen : state ? + isDefined(state.sidePanelOpen) ? + !state.sidePanelOpen : + true : + true + }) + case OPEN_SIDE_PANEL : + return Object.assign({},state,{ + sidePanelOpen : true + }) + case CLOSE_SIDE_PANEL : + return Object.assign({},state,{ + sidePanelOpen : false }) default : return state @@ -68,11 +96,27 @@ export function newViewer(state:any,action:NewViewerAction){ export function viewerState(state:ViewerStateInterface,action:AtlasAction){ switch(action.type){ + case LOAD_DEDICATED_LAYER: + return Object.assign({},state,{ + dedicatedView : action.dedicatedView + }) + case UNLOAD_DEDICATED_LAYER: + return Object.assign({},state,{ + dedicatedView : null + }) + case NEWVIEWER: + return Object.assign({},state,{ + templateSelected : action.selectTemplate, + parcellationSelected : action.selectParcellation, + regionsSelected : [], + navigation : {}, + dedicatedView : null + }) case FETCHED_TEMPLATES : { return Object.assign({},state,{fetchedTemplates:action.fetchedTemplate}) } case CHANGE_NAVIGATION : { - return Object.assign({},state,{navigation : action.changeNavigation}) + return Object.assign({},state,{navigation : action.navigation}) } case SELECT_PARCELLATION : { return Object.assign({},state,{ @@ -81,10 +125,10 @@ export function viewerState(state:ViewerStateInterface,action:AtlasAction){ }) } case SELECT_REGIONS : { - return Object.assign({},state,{regionsSelected : action.selectRegions}) - } - case LABELIDX_MAP : { return Object.assign({},state,{ + regionsSelected : action.selectRegions.map(region=>Object.assign({},region,{ + labelIndex : Number(region.labelIndex) + })) }) } default : @@ -99,24 +143,80 @@ export function dataStore(state:any,action:DatasetAction){ fetchedDataEntries : action.fetchedDataEntries }) } + case FETCHED_SPATIAL_DATA :{ + return Object.assign({},state,{ + fetchedSpatialData : action.fetchedDataEntries + }) + } case FETCHED_METADATA : { return Object.assign({},state,{ fetchedMetadataMap : action.fetchedMetadataMap }) } + default: + return state + } +} + +export interface SpatialDataEntries extends Action +{ + pageNo? : number + totalResults? : number + visible? : boolean +} + +export function spatialSearchState(state:any,action:SpatialDataEntries){ + switch (action.type){ + case SPATIAL_GOTO_PAGE: + return Object.assign({},state,{ + spatialSearchPagination : action.pageNo + }) + case UPDATE_SPATIAL_DATA: + return Object.assign({},state,{ + spatialSearchTotalResults : action.totalResults + }) + case UPDATE_SPATIAL_DATA_VISIBLE: + return Object.assign({},state,{ + spatialDataVisible : action.visible + }) + default : + return state } } export function safeFilter(key:string){ return filter((state:any)=> - typeof state !== 'undefined' && - typeof state[key] !== 'undefined') + (typeof state !== 'undefined' && state !== null) && + typeof state[key] !== 'undefined' && state[key] !== null) } export function extractLabelIdx(region:any):number[]{ return region.children.reduce((acc,item)=>{ return acc.concat(extractLabelIdx(item)) - },[]).concat( region.labelIndex ? region.labelIndex : [] ) + },[]).concat( region.labelIndex ? Number(region.labelIndex) : [] ) +} + +export function getLabelIndexMap(regions:any[]):Map<number,any>{ + const returnMap = new Map() + + const reduceRegions = (regions:any[]) => { + regions.forEach(region=>{ + if( region.labelIndex ) returnMap.set(Number(region.labelIndex), + Object.assign({},region,{labelIndex : Number(region.labelIndex)})) + if( region.children && region.children.constructor === Array ) reduceRegions(region.children) + }) + } + + reduceRegions(regions) + return returnMap +} + +export interface DedicatedViewState{ + dedicatedView : string | null +} + +export interface DedicatedViewAction extends Action{ + dedicatedView : string | null } export interface DataEntry{ @@ -151,6 +251,15 @@ export interface Publication{ citation : string } -export interface DataTypeMetadata{ +export interface UIStateInterface{ + sidePanelOpen : boolean + mouseOverSegment : any | number +} + +export interface UIAction extends Action{ + segment : any | number +} +export function isDefined(obj){ + return typeof obj !== 'undefined' && obj !== null } \ No newline at end of file diff --git a/src/ui/banner/banner.component.ts b/src/ui/banner/banner.component.ts index 42a930934..4947e1111 100644 --- a/src/ui/banner/banner.component.ts +++ b/src/ui/banner/banner.component.ts @@ -1,7 +1,7 @@ -import { Component, HostBinding } from "@angular/core"; +import { Component, OnDestroy } from "@angular/core"; import { Store, select } from "@ngrx/store"; -import { ViewerStateInterface, safeFilter, SELECT_PARCELLATION, extractLabelIdx, SELECT_REGIONS, NEWVIEWER } from "../../services/stateStore.service"; -import { Observable } from "rxjs"; +import { ViewerStateInterface, safeFilter, SELECT_PARCELLATION, extractLabelIdx, SELECT_REGIONS, NEWVIEWER, getLabelIndexMap, isDefined } from "../../services/stateStore.service"; +import { Observable, Subscription, merge } from "rxjs"; import { map, filter } from "rxjs/operators"; import { FilterNameBySearch } from "../../util/pipes/filterNameBySearch.pipe"; @@ -13,10 +13,10 @@ import { FilterNameBySearch } from "../../util/pipes/filterNameBySearch.pipe"; ] }) -export class AtlasBanner{ +export class AtlasBanner implements OnDestroy{ public loadedTemplates$ : Observable<any[]> - public selectedTemplate$ : Observable<any> + public newViewer$ : Observable<any> public selectedParcellation$ : Observable<any> public selectedRegions$ : Observable<any[]> @@ -26,6 +26,8 @@ export class AtlasBanner{ public selectedParcellation : any public selectedRegions : any[] = [] + private subscriptions : Subscription[] = [] + searchTerm : string = '' constructor(private store:Store<ViewerStateInterface>){ @@ -34,9 +36,12 @@ export class AtlasBanner{ safeFilter('fetchedTemplates'), map(state=>state.fetchedTemplates)) - this.selectedTemplate$ = this.store.pipe( - select('newViewer'), - filter(state=>typeof state !== 'undefined') + this.newViewer$ = this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state) && isDefined(state.templateSelected)), + filter(state=> + !isDefined(this.selectedTemplate) || + state.templateSelected.name !== this.selectedTemplate.name) ) this.selectedParcellation$ = this.store.pipe( @@ -45,25 +50,39 @@ export class AtlasBanner{ map(state=>state.parcellationSelected) ) - this.selectedRegions$ = this.store.pipe( - select('viewerState'), - safeFilter('regionsSelected'), - map(state=>state.regionsSelected) + this.selectedRegions$ = merge( + this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state)&&isDefined(state.regionsSelected)), + map(state=>state.regionsSelected) + ) + ) + this.subscriptions.push( + this.newViewer$.subscribe((state)=>{ + + this.selectedTemplate = state.templateSelected + const selectedParcellation = state.parcellationSelected ? state.parcellationSelected : this.selectedTemplate.parcellations[0] + this.handleParcellationChange(selectedParcellation) + }) + ) + this.subscriptions.push( + this.selectedParcellation$.subscribe((this.handleParcellationChange).bind(this)) + ) + this.subscriptions.push( + this.selectedRegions$.subscribe((ev)=>{ + this.selectedRegions = ev + }) ) + } - this.selectedTemplate$.subscribe((state)=>{ - this.selectedTemplate = state.templateSelected - this.handleParcellationChange(state.parcellationSelected) - }) - this.selectedParcellation$.subscribe(this.handleParcellationChange) - this.selectedRegions$.subscribe((ev)=>{ - this.selectedRegions = ev - }) + ngOnDestroy(){ + this.subscriptions.forEach(s=>s.unsubscribe()) } - private handleParcellationChange(parcellation){ + handleParcellationChange(parcellation){ + // const selectedParcellation = this.selectedTemplate.parcellations.find(p=>p.ngId === parcellation.ngId) this.selectedParcellation = parcellation - this.mapRegions(parcellation.regions) + this.regionsLabelIndexMap = getLabelIndexMap(parcellation.regions) } selectTemplate(template:any){ @@ -71,7 +90,6 @@ export class AtlasBanner{ return } - /* hmm, is this right? */ this.store.dispatch({ type : NEWVIEWER, selectTemplate : template, @@ -79,11 +97,17 @@ export class AtlasBanner{ }) } + selectParcellation(parcellation:any){ + this.store.dispatch({ + type : SELECT_PARCELLATION, + selectParcellation : parcellation + }) + } + handleClickRegion(obj:any){ const region = obj.inputItem const selectedSet = new Set(extractLabelIdx(region)) const intersection = new Set([...this.selectedRegions.map(r=>r.labelIndex)].filter(v=>selectedSet.has(v))) - this.store.dispatch({ type : SELECT_REGIONS, selectRegions : intersection.size > 0 ? @@ -101,22 +125,11 @@ export class AtlasBanner{ } displayTreeNode(item:any){ - return typeof item.labelIndex !== 'undefined' && this.selectedRegions.findIndex(re=>re.labelIndex === item.labelIndex) >= 0 ? + return typeof item.labelIndex !== 'undefined' && this.selectedRegions.findIndex(re=>re.labelIndex === Number(item.labelIndex)) >= 0 ? `<span class = "regionSelected">${item.name}</span>` : `<span class = "regionNotSelected">${item.name}</span>` } - private mapRegions(regions:any[]){ - regions.forEach((region:any)=>{ - if(region.labelIndex){ - this.regionsLabelIndexMap.set(region.labelIndex,region) - } - if(region.children){ - this.mapRegions(region.children) - } - }) - } - get treeHeaderText():string{ return '' } @@ -125,10 +138,6 @@ export class AtlasBanner{ return this.filterNameBySearchPipe.transform([node.name],this.searchTerm) } - temp_filterTreeBySearch(node:any):boolean{ - return - } - clearRegions(event:Event){ event.stopPropagation() event.preventDefault() diff --git a/src/ui/banner/banner.template.html b/src/ui/banner/banner.template.html index 2b09f5ad1..bd06b9581 100644 --- a/src/ui/banner/banner.template.html +++ b/src/ui/banner/banner.template.html @@ -8,14 +8,15 @@ </dropdown> <dropdown - *ngIf = "selectedTemplate$ | async" + *ngIf = "selectedTemplate" + (itemSelected) = "selectParcellation($event)" [activeDisplay] = "displayActiveParcellation" [selectedItem] = "selectedParcellation" [inputArray] = "selectedTemplate.parcellations"> </dropdown> <div - *ngIf = "selectedTemplate$ | async" + *ngIf = "selectedTemplate" placement = "bottom" [outsideClick] = "true" [popover]="searchRegionTemplate" diff --git a/src/ui/databrowser/databrowser.component.ts b/src/ui/databrowser/databrowser.component.ts index 2e43a976b..85eb07f47 100644 --- a/src/ui/databrowser/databrowser.component.ts +++ b/src/ui/databrowser/databrowser.component.ts @@ -1,10 +1,14 @@ -import { Component, ChangeDetectionStrategy } from "@angular/core"; +import { Component, OnDestroy, ComponentFactoryResolver, ComponentFactory, OnInit, Injector } from "@angular/core"; import { Store, select } from "@ngrx/store"; -import { DataStateInterface, Property, safeFilter, DataEntry, File, SELECT_REGIONS } from "../../services/stateStore.service"; -import { map, filter } from "rxjs/operators"; -import { PathToNestedChildren, HasPathProperty } from "../../util/pipes/pathToNestedChildren.pipe"; -import { CopyPropertyPipe } from "../../util/pipes/copyProperty.pipe"; +import { DataStateInterface, Property, safeFilter, DataEntry, File, SELECT_REGIONS, getLabelIndexMap, LOAD_DEDICATED_LAYER, UNLOAD_DEDICATED_LAYER, FETCHED_SPATIAL_DATA, isDefined, SPATIAL_GOTO_PAGE, CHANGE_NAVIGATION, UPDATE_SPATIAL_DATA_VISIBLE } from "../../services/stateStore.service"; +import { map, filter, take, distinctUntilChanged } from "rxjs/operators"; +import { HasPathProperty } from "../../util/pipes/pathToNestedChildren.pipe"; import { TreeComponent } from "../../components/tree/tree.component"; +import { Observable, Subscription, merge } from "rxjs"; +import { FileViewer } from "../fileviewer/fileviewer.component"; +import { WidgetServices } from "../../atlasViewer/widgetUnit/widgetService.service"; +import { AtlasViewerConstantsServices } from "../../atlasViewer/atlasViewer.constantService.service"; +import { AtlasViewerDataService } from "../../atlasViewer/atlasViewer.dataService.service"; @Component({ selector : 'data-browser', @@ -14,7 +18,9 @@ import { TreeComponent } from "../../components/tree/tree.component"; ] }) -export class DataBrowserUI{ +export class DataBrowserUI implements OnDestroy,OnInit{ + + private fileViewerComponentFactory : ComponentFactory<FileViewer> hitsPerPage : number = 15 currentPage : number = 0 @@ -23,55 +29,224 @@ export class DataBrowserUI{ metadataMap : Map<string,Map<string,{properties:Property}>> dataEntries : DataEntry[] = [] + spatialDataEntries : DataEntry[] = [] + spatialPagination : number = 0 + spatialTotalNo : number = 0 hideDataTypes : Set<string> = new Set() + private _spatialDataVisible : boolean = true + private spatialSearchObj : {center:[number,number,number],searchWidth:number,templateSpace : string,pageNo:number} + + dedicatedViewString : string | null + private regionsLabelIndexMap : Map<number,any> = new Map() - constructor(private store : Store<DataStateInterface>){ + private regionSelected$ : Observable<any> + private metadataMap$ : Observable<any> + private fetchedDataEntries$ : Observable<any> + private newViewer$ : Observable<any> + private selectParcellation$ : Observable<any> + private dedicatedViewString$ : Observable<string|null> + private spatialDataEntries$ : Observable<any[]> + private spatialPagination$ : Observable<{spatialSearchPagination:number,spatialSearchTotalResults:number}> + private debouncedNavigation$ : Observable<any> - this.store.pipe( - select('viewerState'), - safeFilter('regionsSelected'), - map(state=>state.regionsSelected) - ) - .subscribe(rs=>this.selectedRegions = rs) + private subscriptions : Subscription[] = [] + private selectedTemplate : any - /* TODO may need to unsubscribe later */ - this.store.pipe( + constructor( + private cfr : ComponentFactoryResolver, + private store : Store<DataStateInterface>, + private atlasviewerDataService : AtlasViewerDataService, + private constantService : AtlasViewerConstantsServices, + private injector : Injector, + private widgetServices : WidgetServices + ){ + + this.fileViewerComponentFactory = this.cfr.resolveComponentFactory(FileViewer) + + this.regionSelected$ = merge( + this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state)&&isDefined(state.regionsSelected)), + map(state=>state.regionsSelected) + ) + ) + + this.metadataMap$ = this.store.pipe( select('dataStore'), safeFilter('fetchedMetadataMap'), map(v=>v.fetchedMetadataMap) ) - .subscribe(map=>this.metadataMap = map) - - /* TODO may need to unsubscribe later */ - this.store.pipe( + + this.fetchedDataEntries$ = this.store.pipe( select('dataStore'), safeFilter('fetchedDataEntries'), map(v=>v.fetchedDataEntries) ) - .subscribe(arr=>(this.dataEntries = arr,this.TEMP())) + + this.newViewer$ = this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state) && isDefined(state.templateSelected)), + filter(state=> + !isDefined(this.selectedTemplate) || + state.templateSelected.name !== this.selectedTemplate.name) + ) - /* TODO may need to unsubscribe later */ - this.store.pipe( - select('newViewer'), - filter(state=>typeof state !== 'undefined') + this.debouncedNavigation$ = this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state) && isDefined(state.navigation)), + map(state=>state.navigation) ) - .subscribe(data=> - this.handleParcellationSelection(data.parcellationSelected.regions)) + - this.store.pipe( + this.selectParcellation$ = this.store.pipe( select('viewerState'), - safeFilter('parcellationSelected') + safeFilter('parcellationSelected'), + map(state=>state.parcellationSelected), + distinctUntilChanged((p1,p2)=>p1.name === p2.name) + ) + + + this.dedicatedViewString$ = this.store.pipe( + select('viewerState'), + filter(state=> typeof state !== 'undefined' && state !== null), + map(state=>state.dedicatedView) + ) + + this.spatialDataEntries$ = this.store.pipe( + select('dataStore'), + safeFilter('fetchedSpatialData'), + map(state=>state.fetchedSpatialData) + ) + + this.spatialPagination$ = store.pipe( + select('spatialSearchState'), + filter(state=> isDefined(state) && + isDefined(state.spatialSearchPagination) && + isDefined(state.spatialSearchTotalResults) + ), + distinctUntilChanged((s1,s2)=> + s1.spatialSearchPagination === s2.spatialSearchPagination && + s1.spatialSearchTotalResults === s2.spatialSearchTotalResults && + s1.spatialDataVisible === s2.spatialDataVisible), + ) + } + + ngOnInit(){ + + this.subscriptions.push( + this.newViewer$.subscribe(state=>{ + this.selectedTemplate = state.templateSelected + this.handleParcellationSelection(state.parcellationSelected.regions) + this.store.dispatch({ + type : FETCHED_SPATIAL_DATA, + fetchedDataEntries : [] + }) + this.store.dispatch({ + type : SPATIAL_GOTO_PAGE, + pageNo : 0 + }) + }) + ) + + this.subscriptions.push( + this.debouncedNavigation$.subscribe(this.handleDebouncedNavigation.bind(this)) + ) + + this.subscriptions.push(this.regionSelected$ + .subscribe(rs=>this.selectedRegions = rs)) + + this.subscriptions.push(this.metadataMap$.subscribe(map=>(this.metadataMap = map))) + + this.subscriptions.push(this.fetchedDataEntries$.subscribe(arr=>(this.dataEntries = arr))) + + this.subscriptions.push(this.selectParcellation$.subscribe(parcellation=> + this.handleParcellationSelection(parcellation.regions))) + + this.subscriptions.push( + this.dedicatedViewString$.subscribe(dvs=>this.dedicatedViewString = dvs)) + + this.subscriptions.push( + this.spatialDataEntries$.subscribe(this.handleSpatialDataEntries.bind(this))) + + this.subscriptions.push( + this.spatialPagination$.subscribe(this.handleSpatialPaginationChange.bind(this)) ) - .subscribe(parcellation=> - this.handleParcellationSelection(parcellation.regions)) } + ngOnDestroy(){ + this.subscriptions.forEach(s=>s.unsubscribe()) + } + + /* spatial search functionalities */ + + spatialPaginationChange(pagenum:number){ + this.store.dispatch({ + type : SPATIAL_GOTO_PAGE, + pageNo : pagenum + }) + } + + get spatialPaginationHitsPerPage(){ + return this.constantService.spatialResultsPerPage + } + + toggleSpatialDataVisible(){ + this.store.dispatch({ + type : UPDATE_SPATIAL_DATA_VISIBLE, + visible : !this._spatialDataVisible + }) + } + + get spatialDataVisible(){ + return this._spatialDataVisible + } + + handleSpatialPaginationChange(state){ + if(isDefined (state.spatialSearchPagination) ) + this.spatialPagination = state.spatialSearchPagination + + if(isDefined(state.spatialSearchTotalResults)) + this.spatialTotalNo = state.spatialSearchTotalResults + + if(isDefined(state.spatialDataVisible)) + this._spatialDataVisible = state.spatialDataVisible + + if(this.spatialPagination === this.spatialSearchObj.pageNo) + return + + this.spatialSearchObj.pageNo = this.spatialPagination + this.atlasviewerDataService.spatialSearch(this.spatialSearchObj) + } + + handleDebouncedNavigation(navigation:any){ + if(!isDefined(navigation.position)) + return + const center = navigation.position.map(n=>n/1e6) + const searchWidth = this.constantService.spatialWidth / 4 * navigation.zoom / 1e6 + const templateSpace = this.selectedTemplate.name + const pageNo = this.spatialPagination + + this.spatialSearchObj = { + center, + searchWidth, + templateSpace, + pageNo + } + this.atlasviewerDataService.spatialSearch(this.spatialSearchObj) + } + + handleSpatialDataEntries(datas){ + this.spatialDataEntries = datas + } + + /* non-spatial data functionalities */ + regions : any[] = [] handleParcellationSelection(regions:any[]){ - this.mapRegions(regions) + this.regionsLabelIndexMap = getLabelIndexMap(regions) this.regions = Array.from(this.regionsLabelIndexMap.values()) } @@ -89,23 +264,22 @@ export class DataBrowserUI{ return `${file.name ? file.name : file.path}` } - TEMP(){ - } + handleDedicatedViewString = (dedicatedViewString:string|null)=>this.store.dispatch({ + type : dedicatedViewString ? LOAD_DEDICATED_LAYER : UNLOAD_DEDICATED_LAYER, + dedicatedView : dedicatedViewString + }) handleTreeNodeClick(obj:{inputItem:any,node:TreeComponent}){ obj.node.childrenExpanded = !obj.node.childrenExpanded - } - /* TODO transform this into functional */ - private mapRegions(regions:any[]){ - regions.forEach((region:any)=>{ - if(region.labelIndex){ - this.regionsLabelIndexMap.set(region.labelIndex,region) - } - if(region.children){ - this.mapRegions(region.children) - } - }) + if(obj.inputItem.mimetype){ + + const component = this.fileViewerComponentFactory.create(this.injector) + component.instance.searchResultFile = obj.inputItem + this.widgetServices.addNewWidget(component,{title:obj.inputItem.name,exitable:true,state:'floating'}) + }else{ + console.warn('the selected file has no mimetype defined') + } } get databrowserHeaderText() : string{ @@ -135,4 +309,32 @@ export class DataBrowserUI{ [...this.hideDataTypes] ) } -} \ No newline at end of file + + regionSelected(region:any){ + const idx = this.selectedRegions.findIndex(re=>re.name===region.name) + return idx >= 0 + } + + gothere(event:MouseEvent,position:any){ + event.stopPropagation() + event.preventDefault() + + this.store.dispatch({ + type : CHANGE_NAVIGATION, + navigation : { + position : position, + positionReal : true + } + }) + } + + removeRegion(event:MouseEvent,region:any){ + event.stopPropagation() + event.preventDefault() + + this.store.dispatch({ + type : SELECT_REGIONS, + selectRegions : this.selectedRegions.filter(re=>re.name!==region.name) + }) + } +} diff --git a/src/ui/databrowser/databrowser.style.css b/src/ui/databrowser/databrowser.style.css index 7b8c15c0b..ab2b3cb15 100644 --- a/src/ui/databrowser/databrowser.style.css +++ b/src/ui/databrowser/databrowser.style.css @@ -5,6 +5,29 @@ div[heading] overflow: hidden; } +div[heading][displayflex] +{ + display:flex; + flex-direction: row; +} + + div[heading][displayflex] > [maintext] + { + flex : 1 1 0px; + white-space: nowrap; + overflow: hidden; + } + + div[heading][displayflex] > [propertyicons] + { + flex : 0 0 auto; + } + + div[heading][displayflex] > [propertyicons] > * + { + margin-left:0.5em; + } + [dataentry] { width:100%; @@ -50,4 +73,11 @@ div.noResultClass { color:rgba(128,128,128,0.8); text-decoration: line-through; +} + +div[spatialSearchCell] +{ + padding: 0.3em 1em; + overflow:hidden; + white-space: nowrap; } \ No newline at end of file diff --git a/src/ui/databrowser/databrowser.template.html b/src/ui/databrowser/databrowser.template.html index 4b95ec135..54aeec21a 100644 --- a/src/ui/databrowser/databrowser.template.html +++ b/src/ui/databrowser/databrowser.template.html @@ -34,21 +34,78 @@ {{ type }} </small> </div> + <div + class = "clickable" + (click) = "toggleSpatialDataVisible()"> + <small> + <i + *ngIf = "spatialDataVisible" + class = "glyphicon glyphicon-check"> + </i> + <i + *ngIf = "!spatialDataVisible" + class = "glyphicon glyphicon-unchecked"> + </i> + </small> + <small> + Spatial Search + </small> + </div> </div> <!-- Data --> +<div *ngIf = "spatialDataVisible"> + <panel [collapseBody] = "true" [bodyCollapsable] = "true"> + <div heading> + <span> + Spatial Search Data + </span> + <span class = "mute-text"> + ({{ spatialTotalNo }}) + </span> + </div> + <div body> + <div *ngFor = "let data of spatialDataEntries" spatialSearchCell> + {{ data.properties.description }} + </div> + + <pagination-component + *ngIf = "spatialDataEntries.length > 0" + [hitsPerPage]="spatialPaginationHitsPerPage" + [total] = "spatialTotalNo" + [currentPage]="spatialPagination" + (paginationChange)="spatialPaginationChange($event)"> + + </pagination-component> + </div> + </panel> +</div> <div *ngFor = "let data of dataEntries | groupDatasetByRegion : regions | filterRegionDataEntries : selectedRegions | searchResultPagination : currentPage : hitsPerPage"> <panel [collapseBody] = "true" [bodyCollapsable] = "true"> - <div [ngClass] = "(data.searchResults | filterDataEntriesByType : hideDataTypes).length === 0 ? 'noResultClass' : ''" heading> - <span> - {{ data.region ? data.region.name : 'Not associated with any region' }} - </span> - <span class = "mute-text"> - ({{ (data.searchResults | filterDataEntriesByType : hideDataTypes).length }}) - </span> + <div [ngClass] = "(data.searchResults | filterDataEntriesByType : hideDataTypes).length === 0 ? 'noResultClass' : ''" + displayflex + heading> + <div maintext> + <span> + {{ data.region ? data.region.name : 'Not associated with any region' }} + </span> + <span class = "mute-text"> + ({{ (data.searchResults | filterDataEntriesByType : hideDataTypes).length }}) + </span> + </div> + <div propertyicons> + <i *ngIf = "data.region && data.region.position" + (click) = "gothere($event,data.region.position)" + class = "glyphicon glyphicon-screenshot" > + </i> + <i *ngIf = "regionSelected(data.region)" + (click) = "removeRegion($event,data.region)" + class = "glyphicon glyphicon-remove-sign"> + </i> + </div> </div> <div body> <panel @@ -84,4 +141,4 @@ [currentPage]="currentPage" (paginationChange)="paginationChange($event)"> -</pagination-component> \ No newline at end of file +</pagination-component> diff --git a/src/ui/fileviewer/dedicated/dedicated.component.ts b/src/ui/fileviewer/dedicated/dedicated.component.ts new file mode 100644 index 000000000..ca9f143b8 --- /dev/null +++ b/src/ui/fileviewer/dedicated/dedicated.component.ts @@ -0,0 +1,65 @@ +import { Component, OnDestroy, Input } from "@angular/core"; +import { Store, select } from "@ngrx/store"; +import { DedicatedViewState, File, UNLOAD_DEDICATED_LAYER, LOAD_DEDICATED_LAYER } from "../../../services/stateStore.service"; +import { Observable, Subscription } from "rxjs"; +import { filter, map } from "rxjs/operators"; + + +@Component({ + selector : 'dedicated-viewer', + templateUrl : './dedicated.template.html', + styleUrls : [ + `./dedicated.style.css` + ] +}) + +export class DedicatedViewer implements OnDestroy{ + @Input() searchResultFile : File + + private dedicatedView$ : Observable<string|null> + private dedicatedViewSubscription : Subscription + private dedicatedView : string | null + + constructor(private store:Store<DedicatedViewState>){ + this.dedicatedView$ = this.store.pipe( + select('viewerState'), + filter(state=>typeof state !== 'undefined' && state !== null), + map(state=>state.dedicatedView) + ) + + this.dedicatedViewSubscription = this.dedicatedView$.subscribe(url => this.dedicatedView = url) + } + + get isShowing(){ + return this.dedicatedView === `nifti://${this.searchResultFile.url}` + } + + get isObstructed(){ + return typeof this.dedicatedView !== 'undefined' && + this.dedicatedView !== null && + this.dedicatedView !== `nifti://${this.searchResultFile.url}` + } + + ngOnDestroy(){ + this.dedicatedViewSubscription.unsubscribe() + } + + showDedicatedView(){ + this.store.dispatch({ + type : LOAD_DEDICATED_LAYER, + dedicatedView : `nifti://${this.searchResultFile.url}` + }) + } + + removeDedicatedView(){ + this.store.dispatch({ + type : UNLOAD_DEDICATED_LAYER, + }) + } + + get nowShowing():string|null{ + return this.dedicatedView ? + this.dedicatedView.split('/')[this.dedicatedView.split('/').length-1]: + null + } +} \ No newline at end of file diff --git a/src/ui/fileviewer/dedicated/dedicated.style.css b/src/ui/fileviewer/dedicated/dedicated.style.css new file mode 100644 index 000000000..f8288c558 --- /dev/null +++ b/src/ui/fileviewer/dedicated/dedicated.style.css @@ -0,0 +1,20 @@ +.well +{ + border-radius:0; + border:0; + width:calc(100% - 2em); + box-sizing:border-box; + margin:1em; + overflow-x:auto; +} +.obstructedText +{ + display:inline-block; + margin:0 1em; + width : calc(100% - 2em); +} + +:host-context([darktheme="true"]) .well +{ + background-color:rgba(0,0,0,0.2); +} \ No newline at end of file diff --git a/src/ui/fileviewer/dedicated/dedicated.template.html b/src/ui/fileviewer/dedicated/dedicated.template.html new file mode 100644 index 000000000..254a40c54 --- /dev/null +++ b/src/ui/fileviewer/dedicated/dedicated.template.html @@ -0,0 +1,36 @@ +<span *ngIf = "!isShowing" > + <span + *ngIf = "isObstructed"> + + <span class = "obstructedText"> + The viewer is currently displaying another dataset: + </span> + + <div class = "well"> + {{ nowShowing }} + </div> + <span class = "obstructedText"> + This dataset can be displayed after the currently shown dataset is cleared. + </span> + <span (click)="removeDedicatedView()" class = "btn btn-link"> + clear the currently shown dataset + </span> + </span> + + <span + (click) = "showDedicatedView()" + class = "btn btn-link" + *ngIf = "!isObstructed"> + + show this dataset in the viewer + </span> + +</span> + +<span + (click) = "removeDedicatedView()" + *ngIf = "isShowing" + class = "btn btn-link"> + + clear this dataset from the viewer +</span> \ No newline at end of file diff --git a/src/ui/fileviewer/fileviewer.component.ts b/src/ui/fileviewer/fileviewer.component.ts index 0a3f5ff8b..035b4c1d5 100644 --- a/src/ui/fileviewer/fileviewer.component.ts +++ b/src/ui/fileviewer/fileviewer.component.ts @@ -1,7 +1,9 @@ -import { Component, Input, OnChanges, OnDestroy, AfterViewInit, ViewChild, ElementRef } from '@angular/core' +import { Component, Input, OnChanges, OnDestroy, ViewChild, ElementRef, OnInit, Output, EventEmitter } from '@angular/core' import { DomSanitizer } from '@angular/platform-browser'; -import { DataEntry, File } from '../../services/stateStore.service'; +import { File } from '../../services/stateStore.service'; +import { interval,from } from 'rxjs'; +import { switchMap,take,retry } from 'rxjs/operators' @Component({ selector : 'file-viewer', @@ -11,45 +13,31 @@ import { DataEntry, File } from '../../services/stateStore.service'; ] }) -export class FileViewer implements OnChanges,OnDestroy,AfterViewInit{ +export class FileViewer implements OnChanges,OnDestroy,OnInit{ @Input() searchResultFile : File + @ViewChild('childChart') childChart : ChartComponentInterface - constructor(private sanitizer:DomSanitizer){ + constructor( + private sanitizer:DomSanitizer + ){ } private _downloadUrl : string private _pngDownloadUrl : string ngOnDestroy(){ - if(this._downloadUrl){ - URL.revokeObjectURL(this._downloadUrl) - } - if(this._pngDownloadUrl){ - URL.revokeObjectURL(this._pngDownloadUrl) - } + this.revokeUrls() } + ngOnInit(){ + this.createUrls() + } ngOnChanges(){ - if(this._downloadUrl){ - URL.revokeObjectURL(this._downloadUrl) - } - if(!this.searchResultFile.url && this.searchResultFile.data){ - const stringJson = JSON.stringify(this.searchResultFile.data) - const newBlob = new Blob([stringJson],{type:'application/octet-stream'}) - this._downloadUrl = URL.createObjectURL(newBlob) - } + this.revokeUrls() + this.createUrls() } - /* seems a bit buggy right now */ - ngAfterViewInit(){ - if(this.childChart){ - (<HTMLCanvasElement>this.childChart.canvas.nativeElement).toBlob((blob)=>{ - this._pngDownloadUrl = URL.createObjectURL(blob) - },'image/png') - } - } - get downloadUrl(){ return this.searchResultFile.url ? this.searchResultFile.url : @@ -58,6 +46,44 @@ export class FileViewer implements OnChanges,OnDestroy,AfterViewInit{ null } + private createUrls(){ + + const timer$ = interval(50) + const timerSet$ = timer$.pipe( + switchMap(()=>from(new Promise((rs,rj)=>{ + if(!this.childChart) + rj('childChart not yet defined') + + this.childChart.canvas.nativeElement.toBlob((blob)=>{ + blob ? rs(blob) : rj('blob is undefined') + + },'image/png') + }))), + retry(10), + take(1) + ) + + timerSet$.subscribe((blob)=>{ + this._pngDownloadUrl = URL.createObjectURL(blob) + },(err)=>console.error('error',err)) + + + if(!this.searchResultFile.url && this.searchResultFile.data){ + const stringJson = JSON.stringify(this.searchResultFile.data) + const newBlob = new Blob([stringJson],{type:'application/octet-stream'}) + this._downloadUrl = URL.createObjectURL(newBlob) + } + } + + private revokeUrls(){ + if(this._downloadUrl){ + URL.revokeObjectURL(this._downloadUrl) + } + if(this._pngDownloadUrl){ + URL.revokeObjectURL(this._pngDownloadUrl) + } + } + get downloadName(){ return this.searchResultFile.filename } diff --git a/src/ui/fileviewer/fileviewer.template.html b/src/ui/fileviewer/fileviewer.template.html index 02ef18d7f..b0dc505c4 100644 --- a/src/ui/fileviewer/fileviewer.template.html +++ b/src/ui/fileviewer/fileviewer.template.html @@ -1,3 +1,6 @@ +<div *ngIf = "!searchResultFile"> + searchResultFile as an input is required for this component to work... +</div> <!-- file viewer --> <div @@ -38,14 +41,12 @@ </div> </div> <div *ngSwitchCase = "'application/nifti'"> - APPLICATION NIFTI - <!-- <dedicated-view-controller - [dedicatedViewString]="'nifti://'+searchResultFile.url"> - - </dedicated-view-controller> --> + <dedicated-viewer + [searchResultFile] = "searchResultFile"> + </dedicated-viewer> </div> <div *ngSwitchCase = "'application/nehuba-layer'"> - APPLICATION NEHUBA LAYER + APPLICATION NEHUBA LAYER - NOT YET IMPLEMENTED <!-- <dedicated-view-controller [dedicatedViewString]="'nehuba-layer://'+searchResultFile.url" [dedicatedViewNehubaLayerObject]="searchResultFile.data"> @@ -70,4 +71,4 @@ <div *ngIf = "downloadPng"> <a [href] = "downloadPng" target = "_blank" class = "btn btn-link" download>Download Chart as Image</a> -</div> \ No newline at end of file +</div> diff --git a/src/ui/fileviewer/radar/radar.chart.component.ts b/src/ui/fileviewer/radar/radar.chart.component.ts index 846eb22f7..591a0cc97 100644 --- a/src/ui/fileviewer/radar/radar.chart.component.ts +++ b/src/ui/fileviewer/radar/radar.chart.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnChanges, ViewChild, ElementRef } from '@angular/core' +import { Component, Input, OnChanges, ViewChild, ElementRef, AfterViewInit, AfterViewChecked } from '@angular/core' import { DatasetInterface, ChartColor, ScaleOptionInterface, TitleInterfacce, LegendInterface, applyOption } from '../chart.interface'; import { Color } from 'ng2-charts'; @@ -109,16 +109,6 @@ export class RadarChart implements OnChanges{ },0) applyOption(this.chartOption,this.options) - // this.colors = [ - // { - // borderColor : 'rgba(255,255,255,1)' - // }, - // { - // borderColor : ' rgba(255,255,255,1)', - // } - // ] - - // console.log(this.chartDataset) } } diff --git a/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.component.ts b/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.component.ts new file mode 100644 index 000000000..14eb184d3 --- /dev/null +++ b/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.component.ts @@ -0,0 +1,85 @@ +import { Component, Input, HostBinding, ChangeDetectionStrategy, OnChanges } from "@angular/core"; + + +@Component({ + selector : 'nehuba-2dlandmark-unit', + templateUrl : './landmarkUnit.template.html', + styleUrls : [ + `./landmarkUnit.style.css` + ], + changeDetection : ChangeDetectionStrategy.OnPush +}) + +export class LandmarkUnit implements OnChanges{ + @Input() positionX : number = 0 + @Input() positionY : number = 0 + @Input() positionZ : number = 0 + + @Input() highlight : boolean = false + @Input() flatProjection : boolean = false + + @HostBinding('style.transform') + transform : string = `translate(${this.positionX}px, ${this.positionY}px)` + + styleNode(){ + return({ + 'color' : `rgb(${this.highlight ? HOVER_COLOR : NORMAL_COLOR})`, + 'z-index' : this.positionZ >= 0 ? 0 : -2 + }) + } + + ngOnChanges(){ + this.transform = `translate(${this.positionX}px, ${this.positionY}px)` + } + + calcOpacity():number{ + return this.flatProjection ? + this.calcOpacityFlatMode() : + this.positionZ >= 0 ? + 1 : + 0.4 + } + + calcOpacityFlatMode():number{ + return this.highlight ? 1.0 : 10 / (Math.abs(this.positionZ) + 10) + } + + styleShadow(){ + + return ({ + 'background':`radial-gradient( + circle at center, + rgba(${this.highlight ? HOVER_COLOR + ',0.3' : NORMAL_COLOR + ',0.3'}) 10%, + rgba(${this.highlight ? HOVER_COLOR + ',0.8' : NORMAL_COLOR + ',0.8'}) 30%, + rgba(0,0,0,0.8))`, + 'transform' : `scale(3,3)` + }) + } + + get markerTransform(){ + return `translate(0px, ${-1*this.positionZ}px)` + } + + get beamTransform(){ + return `translate(0px, ${-1*this.positionZ/2}px) scale(1,${Math.abs(this.positionZ)})` + } + + styleBeamDashedColor(){ + return({ + 'border-left-color' :`rgba(${this.highlight ? HOVER_COLOR + ',0.8' : NORMAL_COLOR + ',0.8'})` + }) + } + + styleBeamColor(inner:boolean){ + return inner ? ({ + transform : `scale(1.0,1.0)`, + 'border-top-color' : `rgba(${this.highlight ? HOVER_COLOR + ',0.8' : NORMAL_COLOR + ',0.8'})` + }) : ({ + transform : `scale(1.5,1.0)`, + 'border-top-color' : 'rgb(0,0,0)' + }) + } +} + +const NORMAL_COLOR : string = '201,54,38' +const HOVER_COLOR : string = '250,150,80' \ No newline at end of file diff --git a/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.style.css b/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.style.css new file mode 100644 index 000000000..1846dd902 --- /dev/null +++ b/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.style.css @@ -0,0 +1,91 @@ +:host +{ + position : absolute; + display:block; +} + +div[landmarkContainer] +{ + position:relative; + pointer-events:auto; +} +.pos-shadow +{ + position:absolute; + left:0px; + top:0px; + z-index:-1; + + width:2px; + height:2px; + border-radius:1px +} +.pos-beam +{ + position:absolute; + left:0px; + top:0px; + + width:1px; + height:1px; + + box-sizing:border-box; +} +.pos-beam > .pos-beam-outer +{ + position:absolute; + top:0px; + left:-1px; + + width:2px; + height:1px; + + border-top:1px solid; + border-bottom:0px; + border-left:1px solid transparent; + border-right:1px solid transparent; +} +.pos-beam > .pos-beam-inner +{ + position : absolute; + top:0px; + + left:-1px; + width:2px; + height:1px; + + border-top:1px solid; + border-bottom:0px; + border-left:1px solid transparent; + border-right:1px solid transparent; +} + +.pos-beam > .pos-beam-dashed +{ + position : absolute; + top:0px; + + width:1px; + height:1px; + + border:none; + border-left:1px dashed; +} + +[nodeView] +{ + position:absolute; + left:0px; + top:0px; +} + +[nodeView] > .glyphicon +{ + margin-left:-0.5em; + margin-top:-1em; + display:block; + text-shadow: rgb(0, 0, 0) -1px 0px, + rgb(0, 0, 0) 0px 1px, + rgb(0, 0, 0) 1px 0px, + rgb(0, 0, 0) 0px -1px; +} \ No newline at end of file diff --git a/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.template.html b/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.template.html new file mode 100644 index 000000000..b6443d8fe --- /dev/null +++ b/src/ui/nehubaContainer/landmarkUnit/landmarkUnit.template.html @@ -0,0 +1,41 @@ +<div + [ngStyle] = "{opacity:calcOpacity()}" + landmarkContainer> + + <div + [style.transform] = "markerTransform | safeStyle" + [ngStyle] = "styleNode()" + nodeView + #nodeView> + <span + class="glyphicon glyphicon-map-marker"> + </span> + </div> + + <div + [style.transform] = "beamTransform | safeStyle" + class = "pos-beam"> + + <div + *ngIf = "positionZ >= 0" + [ngStyle] = "styleBeamColor(false)" + class = "pos-beam-outer"> + </div> + <div + *ngIf = "positionZ >= 0" + [ngStyle] = "styleBeamColor(true)" + class = "pos-beam-inner"> + </div> + + <div + *ngIf = "positionZ < 0" + [ngStyle] = "styleBeamDashedColor()" + class = "pos-beam-dashed"> + </div> + </div> + <div + [ngStyle]="styleShadow()" + class = "pos-shadow"> + + </div> +</div> \ No newline at end of file diff --git a/src/ui/nehubaContainer/nehubaContainer.component.ts b/src/ui/nehubaContainer/nehubaContainer.component.ts index 1be0b7208..294c23278 100644 --- a/src/ui/nehubaContainer/nehubaContainer.component.ts +++ b/src/ui/nehubaContainer/nehubaContainer.component.ts @@ -1,11 +1,11 @@ -import { Component, ViewChild, ViewContainerRef, ComponentFactoryResolver, ComponentFactory, ComponentRef, OnInit } from "@angular/core"; +import { Component, ViewChild, ViewContainerRef, ComponentFactoryResolver, ComponentFactory, ComponentRef, OnInit, OnDestroy, ElementRef, AfterViewInit } from "@angular/core"; import { NehubaViewerUnit } from "./nehubaViewer/nehubaViewer.component"; -import { NehubaDataService } from "../../services/services.module"; import { Store, select } from "@ngrx/store"; -import { ViewerStateInterface, safeFilter, SELECT_REGIONS } from "../../services/stateStore.service"; -import { Observable } from "rxjs"; -import { filter,map } from "rxjs/operators"; +import { ViewerStateInterface, safeFilter, SELECT_REGIONS, getLabelIndexMap, DataEntry, CHANGE_NAVIGATION, isDefined, SPATIAL_GOTO_PAGE, MOUSE_OVER_SEGMENT } from "../../services/stateStore.service"; +import { Observable, Subscription, fromEvent, combineLatest } from "rxjs"; +import { filter,map, take, scan, debounceTime, distinctUntilChanged } from "rxjs/operators"; import * as export_nehuba from 'export_nehuba' +import { AtlasViewerDataService } from "../../atlasViewer/atlasViewer.dataService.service"; @Component({ selector : 'ui-nehuba-container', @@ -15,32 +15,56 @@ import * as export_nehuba from 'export_nehuba' ] }) -export class NehubaContainner implements OnInit{ +export class NehubaContainer implements OnInit,OnDestroy,AfterViewInit{ @ViewChild('container',{read:ViewContainerRef}) container : ViewContainerRef + @ViewChild('[pos00]',{read:ElementRef}) topleft : ElementRef + @ViewChild('[pos01]',{read:ElementRef}) topright : ElementRef + @ViewChild('[pos10]',{read:ElementRef}) bottomleft : ElementRef + @ViewChild('[pos11]',{read:ElementRef}) bottomright : ElementRef private nehubaViewerFactory : ComponentFactory<NehubaViewerUnit> public viewerLoaded : boolean = false - private loadedTemplate$ : Observable<any> + + private newViewer$ : Observable<any> private loadedParcellation$ : Observable<any> private selectedRegions$ : Observable<any[]> + private dedicatedView$ : Observable<string|null> + private fetchedSpatialDatasets$ : Observable<any[]> + public onHoverSegment$ : Observable<string> + + private navigationChanges$ : Observable<any> + private redrawObservable$ : Observable<any> + public spatialResultsVisible$ : Observable<number> + private selectedTemplate : any | null private selectedRegionIndexSet : Set<number> = new Set() + public fetchedSpatialData : DataEntry[] = [] private cr : ComponentRef<NehubaViewerUnit> private nehubaViewer : NehubaViewerUnit private regionsLabelIndexMap : Map<number,any> = new Map() + private subscriptions : Subscription[] = [] + private nehubaViewerSubscriptions : Subscription[] = [] + + public nanometersToOffsetPixelsFn : Function[] = [] + + constructor( private csf:ComponentFactoryResolver, - public nehubaDS : NehubaDataService, - private store : Store<ViewerStateInterface> + private store : Store<ViewerStateInterface>, + private elementRef : ElementRef ){ this.nehubaViewerFactory = this.csf.resolveComponentFactory(NehubaViewerUnit) - this.loadedTemplate$ = this.store.pipe( - select('newViewer'), - filter(state=>typeof state !== 'undefined')) + this.newViewer$ = this.store.pipe( + select('viewerState'), + filter(state=>isDefined(state) && isDefined(state.templateSelected)), + filter(state=> + !isDefined(this.selectedTemplate) || + state.templateSelected.name !== this.selectedTemplate.name) + ) this.loadedParcellation$ = this.store.pipe( select('viewerState'), @@ -53,30 +77,202 @@ export class NehubaContainner implements OnInit{ map(state=>state.regionsSelected) ) + this.dedicatedView$ = this.store.pipe( + select('viewerState'), + filter(state=>typeof state !== 'undefined' && state !== null && typeof state.dedicatedView !== 'undefined'), + map(state=>state.dedicatedView) + ) + + this.fetchedSpatialDatasets$ = this.store.pipe( + select('dataStore'), + safeFilter('fetchedSpatialData'), + debounceTime(300), + map(state=>state.fetchedSpatialData) + ) + + this.redrawObservable$ = this.store.pipe( + select('uiState'), + safeFilter('sidePanelOpen') + ) + + this.navigationChanges$ = this.store.pipe( + select('viewerState'), + safeFilter('navigation'), + map(state=>state.navigation) + ) + + this.spatialResultsVisible$ = this.store.pipe( + select('spatialSearchState'), + map(state=> isDefined(state) ? + isDefined(state.spatialDataVisible) ? + state.spatialDataVisible : + true : + true), + distinctUntilChanged() + ) + + this.onHoverSegment$ = this.store.pipe( + select('uiState'), + filter(state=>isDefined(state)), + map(state=>state.mouseOverSegment ? + state.mouseOverSegment.constructor === Number ? + state.mouseOverSegment.toString() : + state.mouseOverSegment.name : + '' ), + distinctUntilChanged() + ) + /* patch NG */ this.patchNG() } ngOnInit(){ + this.subscriptions.push( + combineLatest( + this.fetchedSpatialDatasets$, + this.spatialResultsVisible$ + ).subscribe(([fetchedSpatialData,visible])=>{ + + this.fetchedSpatialData = fetchedSpatialData + this.nehubaViewer.remove3DLandmarks() + + if(visible) + this.nehubaViewer.add3DLandmarks(this.fetchedSpatialData.map((data:any)=>data.position)) + + }) + ) + /* order of subscription will determine the order of execution */ - this.loadedTemplate$.subscribe((state)=>{ - this.createNewNehuba(state.templateSelected) - this.handleParcellation(state.parcellationSelected) - }) + this.subscriptions.push( + this.newViewer$.subscribe((state)=>{ + this.nehubaViewerSubscriptions.forEach(s=>s.unsubscribe()) + + this.selectedTemplate = state.templateSelected + this.createNewNehuba(state.templateSelected) + const foundParcellation = state.templateSelected.parcellations.find(parcellation=> + state.parcellationSelected.name === parcellation.name) + this.handleParcellation(foundParcellation ? foundParcellation : state.templateSelected.parcellations[0]) + }) + ) - this.loadedParcellation$.subscribe(this.handleParcellation) + this.subscriptions.push( + this.loadedParcellation$.subscribe((this.handleParcellation).bind(this)) + ) - this.selectedRegions$.subscribe(regions=>{ - if(!this.nehubaViewer) return - this.selectedRegionIndexSet = new Set(regions.map(r=>r.labelIndex)) - this.selectedRegionIndexSet.size > 0 ? - this.nehubaViewer.showSegs([...this.selectedRegionIndexSet]) : - this.nehubaViewer.showAllSeg() - } + this.subscriptions.push( + combineLatest( + this.selectedRegions$, + this.dedicatedView$ + ).pipe( + filter(([_,dedicatedView])=>!isDefined(dedicatedView)), + map(([regions,_])=>regions) + ) + .subscribe(regions=>{ + if(!this.nehubaViewer) return + this.selectedRegionIndexSet = new Set(regions.map(r=>Number(r.labelIndex))) + this.selectedRegionIndexSet.size > 0 ? + this.nehubaViewer.showSegs([...this.selectedRegionIndexSet]) : + this.nehubaViewer.showAllSeg() + } + ) + ) + + this.subscriptions.push( + this.dedicatedView$.subscribe((this.handleDedicatedView).bind(this)) + ) + + this.subscriptions.push( + this.redrawObservable$.subscribe(()=>{ + if(this.nehubaViewer) + this.nehubaViewer.nehubaViewer.redraw() + }) + ) + + /* setup init view state */ + combineLatest( + this.navigationChanges$, + this.selectedRegions$, + this.dedicatedView$ + ).subscribe(([navigation,regions,dedicatedView])=>{ + this.nehubaViewer.initNav = + Object.assign({},navigation,{ + positionReal : true + }) + this.nehubaViewer.initRegions = regions.map(re=>re.labelIndex) + this.nehubaViewer.initDedicatedView = dedicatedView + }) + + this.subscriptions.push( + this.navigationChanges$.subscribe(this.handleDispatchedNavigationChange.bind(this),console.warn) ) } + ngAfterViewInit(){ + this.getNMToOffsetPixelFn() + } + + ngOnDestroy(){ + this.subscriptions.forEach(s=>s.unsubscribe()) + } + + returnTruePos(quadrant:number,data:any){ + const pos = quadrant > 2 ? + [0,0,0] : + this.nanometersToOffsetPixelsFn && this.nanometersToOffsetPixelsFn[quadrant] ? + this.nanometersToOffsetPixelsFn[quadrant](data.position.map(n=>n*1e6)) : + [0,0,0] + return pos + } + + getPositionX(quadrant:number,data:any){ + return this.returnTruePos(quadrant,data)[0] + } + getPositionY(quadrant:number,data:any){ + return this.returnTruePos(quadrant,data)[1] + } + getPositionZ(quadrant:number,data:any){ + return this.returnTruePos(quadrant,data)[2] + } + + handleMouseEnterLandmark(spatialData:any){ + spatialData.highlight = true + // console.log('mouseover',spatialData) + } + + handleMouseLeaveLandmark(spatialData:any){ + spatialData.highlight = false + // console.log('mouseleave') + } + + private getNMToOffsetPixelFn(){ + + fromEvent(this.elementRef.nativeElement,'sliceRenderEvent').pipe( + scan((acc:Event[],event:Event)=>{ + const target = (event as Event).target as HTMLElement + const key = target.offsetLeft < 5 && target.offsetTop < 5 ? + 0 : + target.offsetLeft > 5 && target.offsetTop < 5 ? + 1 : + target.offsetLeft < 5 && target.offsetTop > 5 ? + 2 : + target.offsetLeft > 5 && target.offsetTop > 5 ? + 3 : + 4 + + const _ = {} + _[key] = event + return Object.assign({},acc,_) + },[]), + filter(v=>{ + const isdefined = (obj) => typeof obj !== 'undefined' && obj !== null + return (isdefined(v[0]) && isdefined(v[1]) && isdefined(v[2])) + }), + take(1) + ).subscribe((events)=> + [0,1,2].forEach(idx=>this.nanometersToOffsetPixelsFn[idx] = (events[idx] as any).detail.nanometersToOffsetPixels)) + } + private patchNG(){ const { LayerManager, UrlHashBinding } = export_nehuba.getNgPatchableObj() @@ -104,44 +300,112 @@ export class NehubaContainner implements OnInit{ type : SELECT_REGIONS, selectRegions : [...this.selectedRegionIndexSet].map(idx=>this.regionsLabelIndexMap.get(idx)).concat(region) }) - // const idx = this.selectedRegions.findIndex(r=>r.name==foundRegion.name) - // if(idx>=0){ - // this.selectedRegionsBSubject.next(this.selectedRegions.filter((_,i)=>i!=idx)) - // }else{ - // this.selectedRegionsBSubject.next(this.selectedRegions.concat(foundRegion)) - // } } } } private handleParcellation(parcellation:any){ - if(!this.nehubaViewer) return - this.mapRegions(parcellation.regions) + this.regionsLabelIndexMap = getLabelIndexMap(parcellation.regions) this.nehubaViewer.regionsLabelIndexMap = this.regionsLabelIndexMap this.nehubaViewer.parcellationId = parcellation.ngId + } + private handleDedicatedView(dedicatedView:string){ + + this.handleNifti(dedicatedView) } + private handleNifti(url:string|null){ + if(!this.nehubaViewer || !this.nehubaViewer.nehubaViewer){ + /* if nehubaviewer has not yet been initialised for one reason or another, return */ + console.warn('handling nifti view, nehubaviewer has not yet been initialised.') + return + } + if(url === null){ + this.nehubaViewer.removeLayer({ + name : 'niftiViewer' + }) + this.nehubaViewer.showSegs([...this.selectedRegionIndexSet]) + + }else{ + this.nehubaViewer.hideAllSeg() + this.nehubaViewer.loadLayer({ + niftiViewer : { + type : 'image', + source : url, + shader : getActiveColorMapFragmentMain() + } + }) + } + } + + /* related spatial search */ + oldNavigation : any = {} + spatialSearchPagination : number = 0 + private createNewNehuba(template:any){ this.viewerLoaded = true this.container.clear() this.cr = this.container.createComponent(this.nehubaViewerFactory) this.nehubaViewer = this.cr.instance this.nehubaViewer.config = template.nehubaConfig + + this.nehubaViewerSubscriptions.push( + this.nehubaViewer.debouncedViewerPositionChange.subscribe(this.handleEmittedNavigationChange.bind(this)) + ) + + this.nehubaViewerSubscriptions.push( + this.nehubaViewer.mouseoverSegmentEmitter.subscribe(this.handleEmittedMouseoverSegment.bind(this)) + ) } - /* TODO transform this into functional */ - private mapRegions(regions:any[]){ - regions.forEach((region:any)=>{ - if(region.labelIndex){ - this.regionsLabelIndexMap.set(region.labelIndex,region) - } - if(region.children){ - this.mapRegions(region.children) - } + handleEmittedMouseoverSegment(emitted : any | number | null){ + this.store.dispatch({ + type : MOUSE_OVER_SEGMENT, + segment : emitted + }) + } + + /* because the navigation can be changed from two sources, + either dynamically (e.g. navigation panel in the UI or plugins etc) + or actively (via user interaction with the viewer) + or lastly, set on init + + This handler function is meant to handle anytime viewer's navigation changes from either sources */ + handleEmittedNavigationChange(navigation){ + + /* If the navigation is changed dynamically, this.oldnavigation is set prior to the propagation of the navigation state to the viewer. + As the viewer updates the dynamically changed navigation, it will emit the navigation state. + The emitted navigation state should be identical to this.oldnavigation */ + + const navigationChangedActively : boolean = Object.keys(this.oldNavigation).length === 0 || !Object.keys(this.oldNavigation).every(key=>{ + return this.oldNavigation[key].constructor === Number || this.oldNavigation[key].constructor === Boolean ? + this.oldNavigation[key] === navigation[key] : + this.oldNavigation[key].every((_,idx)=>this.oldNavigation[key][idx] === navigation[key][idx]) + }) + + /* if navigation is changed dynamically (ie not actively), the state would have been propagated to the store already. Hence return */ + if( !navigationChangedActively ) + return + + + /* navigation changed actively (by user interaction with the viewer) + probagate the changes to the store */ + + this.store.dispatch({ + type : CHANGE_NAVIGATION, + navigation }) } + handleDispatchedNavigationChange(navigation){ + /* set this.oldnavigation to represent the state of the store */ + this.oldNavigation = Object.assign({},this.oldNavigation,navigation) + this.nehubaViewer.setNavigationState(Object.assign({},this.oldNavigation,{ + positionReal : true + })) + } + /* related to info-card */ statusPanelRealSpace : boolean = true @@ -159,20 +423,23 @@ export class NehubaContainner implements OnInit{ '0 , 0 , 0 (nehubaViewer not defined)' } - get onHoverSegment():string{ - if(!this.nehubaViewer) return 'nehubaViewer not yet initialised' - const region = this.regionsLabelIndexMap.get(this.nehubaViewer.mouseOverSegment) - return region ? - region.name : - this.nehubaViewer.mouseOverSegment ? - `Segment labelIndex: ${this.nehubaViewer.mouseOverSegment}` : - `` - } + // get onHoverSegment():string{ + // if(!this.nehubaViewer) return 'nehubaViewer not yet initialised' + // const region = this.regionsLabelIndexMap.get(this.nehubaViewer.mouseOverSegment) + // return region ? + // region.name : + // this.nehubaViewer.mouseOverSegment !== null && + // this.nehubaViewer.mouseOverSegment !== 0 && + // this.nehubaViewer.mouseOverSegment <= 65500 ? + // `Segment labelIndex: ${this.nehubaViewer.mouseOverSegment}` : + // `` + // } editingNavState : boolean = false + textNavigateTo(string:string){ if(string.split(/[\s|,]+/).length>=3 && string.split(/[\s|,]+/).slice(0,3).every(entry=>!isNaN(Number(entry.replace(/mm/,''))))){ - const pos = (string.split(/[\s|,]+/).slice(0,3).map((entry,idx)=>Number(entry.replace(/mm/,''))*(this.statusPanelRealSpace ? 1000000 : 1))) + const pos = (string.split(/[\s|,]+/).slice(0,3).map((entry)=>Number(entry.replace(/mm/,''))*(this.statusPanelRealSpace ? 1000000 : 1))) this.nehubaViewer.setNavigationState({ position : (pos as [number,number,number]), positionReal : this.statusPanelRealSpace @@ -195,4 +462,8 @@ export class NehubaContainner implements OnInit{ Array.from(this.nehubaViewer.navPosVoxel.map(n=> isNaN(n) ? 0 : n)).join(' , ') : `[0,0,0] (neubaViewer is undefined)` } -} \ No newline at end of file +} + +export const CM_THRESHOLD = `0.05` +export const CM_MATLAB_JET = `float r;if( x < 0.7 ){r = 4.0 * x - 1.5;} else {r = -4.0 * x + 4.5;}float g;if (x < 0.5) {g = 4.0 * x - 0.5;} else {g = -4.0 * x + 3.5;}float b;if (x < 0.3) {b = 4.0 * x + 0.5;} else {b = -4.0 * x + 2.5;}float a = 1.0;` +export const getActiveColorMapFragmentMain = ():string=>`void main(){float x = toNormalized(getDataValue());${CM_MATLAB_JET}if(x>${CM_THRESHOLD}){emitRGB(vec3(r,g,b));}else{emitTransparent();}}` diff --git a/src/ui/nehubaContainer/nehubaContainer.style.css b/src/ui/nehubaContainer/nehubaContainer.style.css index 8e7cf156d..1daed932e 100644 --- a/src/ui/nehubaContainer/nehubaContainer.style.css +++ b/src/ui/nehubaContainer/nehubaContainer.style.css @@ -49,4 +49,40 @@ div[statusCard] { background-color:rgba(20,20,20,0.8); color : rgba(250,250,250,0.8); -} \ No newline at end of file +} + +div[landmarkMasterContainer] +{ + background:none; + position: absolute; + top:0; + left:0; + width:100%; + height:100%; + display:flex; + flex-wrap: wrap; + pointer-events: none; +} + +div[landmarkMasterContainer] > div +{ + flex: 0 0 50%; + height:50%; + overflow:hidden; + pointer-events: none; + position : relative; + border: 1 px solid blue; +} + + +div[landmarkMasterContainer] > div > [landmarkContainer] > div +{ + position : absolute; + left: 0; + top: 0; + width: 0; + height: 0; + margin-left:-0.5em; + margin-top:-1em; +} + diff --git a/src/ui/nehubaContainer/nehubaContainer.template.html b/src/ui/nehubaContainer/nehubaContainer.template.html index ec4140c09..6f01a65b4 100644 --- a/src/ui/nehubaContainer/nehubaContainer.template.html +++ b/src/ui/nehubaContainer/nehubaContainer.template.html @@ -1,7 +1,67 @@ <ng-template #container> </ng-template> + <ui-splashscreen *ngIf = "!viewerLoaded"> </ui-splashscreen> + +<div landmarkMasterContainer> + + <div> + <layout-floating-container + *ngIf = "spatialResultsVisible$ | async" + pos00 + landmarkContainer> + <nehuba-2dlandmark-unit + *ngFor = "let spatialData of fetchedSpatialData" + (mouseenter) = "handleMouseEnterLandmark(spatialData)" + (mouseleave) = "handleMouseLeaveLandmark(spatialData)" + [highlight] = "spatialData.highlight ? spatialData.highlight : false" + [positionX] = "getPositionX(0,spatialData)" + [positionY] = "getPositionY(0,spatialData)" + [positionZ] = "getPositionZ(0,spatialData)"> + </nehuba-2dlandmark-unit> + </layout-floating-container> + </div> + <div> + <layout-floating-container + *ngIf = "spatialResultsVisible$ | async" + pos01 + landmarkContainer> + <nehuba-2dlandmark-unit + *ngFor = "let spatialData of fetchedSpatialData" + (mouseenter) = "handleMouseEnterLandmark(spatialData)" + (mouseleave) = "handleMouseLeaveLandmark(spatialData)" + [highlight] = "spatialData.highlight ? spatialData.highlight : false" + [positionX] = "getPositionX(1,spatialData)" + [positionY] = "getPositionY(1,spatialData)" + [positionZ] = "getPositionZ(1,spatialData)"> + </nehuba-2dlandmark-unit> + </layout-floating-container> + </div> + <div> + <layout-floating-container + *ngIf = "spatialResultsVisible$ | async" + pos10 + landmarkContainer> + <nehuba-2dlandmark-unit + *ngFor = "let spatialData of fetchedSpatialData" + (mouseenter) = "handleMouseEnterLandmark(spatialData)" + (mouseleave) = "handleMouseLeaveLandmark(spatialData)" + [highlight] = "spatialData.highlight ? spatialData.highlight : false" + [positionX] = "getPositionX(2,spatialData)" + [positionY] = "getPositionY(2,spatialData)" + [positionZ] = "getPositionZ(2,spatialData)"> + </nehuba-2dlandmark-unit> + </layout-floating-container> + </div> + <div> + <layout-floating-container + pos11 + landmarkContainer> + </layout-floating-container> + </div> +</div> + <layout-floating-container *ngIf = "viewerLoaded"> <div statusCard> @@ -30,7 +90,7 @@ </small> <br /> <small> - {{ onHoverSegment }} + {{ onHoverSegment$ | async }} </small> </div> </div> diff --git a/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts b/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts index afcae1ca1..d69483896 100644 --- a/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts +++ b/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts @@ -1,9 +1,8 @@ -import { Component, AfterViewInit, OnDestroy } from "@angular/core"; +import { Component, AfterViewInit, OnDestroy, Output, EventEmitter } from "@angular/core"; import * as export_nehuba from 'export_nehuba' import 'export_nehuba/dist/min/chunk_worker.bundle.js' -import { Observable,Subject, Subscription } from 'rxjs' -import { combineLatest } from 'rxjs/operators' +import { getActiveColorMapFragmentMain } from "../nehubaContainer.component"; @Component({ templateUrl : './nehubaViewer.template.html', @@ -13,7 +12,17 @@ import { combineLatest } from 'rxjs/operators' }) export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ + + @Output() debouncedViewerPositionChange : EventEmitter<any> = new EventEmitter() + @Output() mouseoverSegmentEmitter : EventEmitter<any | number | null> = new EventEmitter() + + /* only used to set initial navigation state */ + initNav : any + initRegions : any[] + initDedicatedView : string + config : any + nehubaViewer : any _s1$ : any @@ -23,6 +32,7 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ _s5$ : any _s6$ : any _s7$ : any + _s8$ : any _s$ : any[] = [ this._s1$, @@ -31,10 +41,30 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ this._s4$, this._s5$, this._s6$, - this._s7$ + this._s7$, + this._s8$ ] - parcellationId : string + private _parcellationId : string + + get parcellationId(){ + return this._parcellationId + } + + set parcellationId(id:string){ + + if(this._parcellationId && this.nehubaViewer){ + const oldlayer = this.nehubaViewer.ngviewer.layerManager.getLayerByName(this._parcellationId) + if(oldlayer)oldlayer.setVisible(false) + else console.warn('could not find old layer',this.parcellationId) + } + + this._parcellationId = id + + if(this.nehubaViewer) + this.loadNewParcellation() + } + regionsLabelIndexMap : Map<number,any> navPosReal : [number,number,number] = [0,0,0] @@ -52,9 +82,14 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ this.nehubaViewer = export_nehuba.createNehubaViewer(this.config,console.warn) if(this.regionsLabelIndexMap){ - this.loadNewParcellation() + const managedLayers = this.nehubaViewer.ngviewer.layerManager.managedLayers + managedLayers.slice(1).forEach(layer=>layer.setVisible(false)) + this.nehubaViewer.redraw() } + this.newViewerInit() + this.loadNewParcellation() + window['nehubaViewer'] = this.nehubaViewer } ngOnDestroy(){ @@ -63,7 +98,69 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ }) } + private filterLayers(l:any,layerObj:any):boolean{ + return Object.keys(layerObj).length == 0 && layerObj.constructor == Object ? + true : + Object.keys(layerObj).every(key=> + !(<Object>l).hasOwnProperty(key) ? + false : + layerObj[key] instanceof RegExp ? + layerObj[key].test(l[key]) : + layerObj[key] == l[key]) + } + + + public add3DLandmarks(poss:[number,number,number][],scale?:number,type?:'icosahedron'){ + const _ = {} + poss.forEach((pos,idx)=>{ + + _[`vtk-${idx}`] = { + type : 'mesh', + source : `vtk://${ICOSAHEDRON_VTK_URL}`, + transform : [ + [2 ,0 ,0 , pos[0]*1e6], + [0 ,2 ,0 , pos[1]*1e6], + [0 ,0 ,2 , pos[2]*1e6], + [0 ,0 ,0 , 1 ], + ], + shader : FRAGMENT_MAIN_WHITE + } + }) + /* load layer triggers navigation view event, results in infinite loop */ + this.loadLayer(_) + } + + public remove3DLandmarks(){ + this.removeLayer({ + name : /vtk-[0-9]/ + }) + } + + public removeLayer(layerObj:any){ + const viewer = this.nehubaViewer.ngviewer + const removeLayer = (i) => (viewer.layerManager.removeManagedLayer(i),i.name) + + return viewer.layerManager.managedLayers + .filter(l=>this.filterLayers(l,layerObj)) + .map(removeLayer) + } + + public loadLayer(layerObj:any){ + const viewer = this.nehubaViewer.ngviewer + return Object.keys(layerObj) + .filter(key=> + /* if the layer exists, it will not be loaded */ + !viewer.layerManager.getLayerByName(key)) + .map(key=>{ + viewer.layerManager.addManagedLayer( + viewer.layerSpecification.getLayer(key,layerObj[key])) + + return layerObj[key] + }) + } + public hideAllSeg(){ + if(!this.nehubaViewer) return Array.from(this.regionsLabelIndexMap.keys()).forEach(idx=> this.nehubaViewer.hideSegment(idx,{ name : this.parcellationId @@ -74,6 +171,7 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ } public showAllSeg(){ + if(!this.nehubaViewer) return this.hideAllSeg() this.nehubaViewer.hideSegment(0,{ name : this.parcellationId @@ -81,6 +179,7 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ } public showSegs(array:number[]){ + if(!this.nehubaViewer) return this.hideAllSeg() this.nehubaViewer.hideSegment(0,{ @@ -93,7 +192,17 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ })) } + private vec3(pos:[number,number,number]){ + return export_nehuba.vec3.fromValues(...pos) + } + public setNavigationState(newViewerState:Partial<ViewerState>){ + + if(!this.nehubaViewer){ + console.warn('setNavigationState > this.nehubaViewer is not yet defined') + return + } + const { orientation, perspectiveOrientation, @@ -112,7 +221,7 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ if( orientation ) this.nehubaViewer.ngviewer.navigationState.pose.orientation.restoreState( orientation ) if( position ) - this.nehubaViewer.setPosition( position , positionReal ? true : false ) + this.nehubaViewer.setPosition( this.vec3(position) , positionReal ? true : false ) } private updateColorMap(arrayIdx:number[]){ @@ -129,39 +238,41 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ }) } - private loadNewParcellation(){ - this.nehubaViewer.setMeshesToLoad( - [ - ...Array.from(this.regionsLabelIndexMap.keys()), - ...[65535] - ], - { - name : this.parcellationId - } - ) + private newViewerInit(){ - this.defaultColormap = new Map( - Array.from( - [ - ...this.regionsLabelIndexMap.entries(), - ...[[65535,{}]] - ] - ).map(val=>([val[0],this.getRgb(val[1].rgb)])) as any) - - this.nehubaViewer.batchAddAndUpdateSegmentColors( - this.defaultColormap, - { name : this.parcellationId }) + /* isn't this segment specific? */ + this._s2$ = this.nehubaViewer.mouseOver.segment + .subscribe(obj=>this.mouseOverSegment = obj.segment) - this._s$.forEach(_s$=>{ - if(_s$) _s$.unsubscribe() - }) + if(this.initNav){ + this.setNavigationState(this.initNav) + } - this._s1$ = this.nehubaViewer.getShownSegmentsObservable({ - name : this.parcellationId - }).subscribe(arrayIdx=>this.updateColorMap(arrayIdx)) + if(this.initRegions){ + this.hideAllSeg() + this.showSegs(this.initRegions) + } + + if(this.initDedicatedView){ + this.hideAllSeg() + this.loadLayer({ + niftiViewer : { + type : 'image', + source : this.initDedicatedView, + shader : getActiveColorMapFragmentMain() + } + }) + } + + this._s8$ = this.nehubaViewer.mouseOver.segment.subscribe(({segment})=>{ + if( segment && segment < 65500 ) { + const region = this.regionsLabelIndexMap.get(segment) + this.mouseoverSegmentEmitter.emit(region ? region : segment) + }else{ + this.mouseoverSegmentEmitter.emit(null) + } + }) - this._s2$ = this.nehubaViewer.mouseOver.segment - .subscribe(obj=>this.mouseOverSegment = obj.segment) this._s3$ = this.nehubaViewer.navigationState.all .debounceTime(300) .subscribe(({ orientation, perspectiveOrientation, perspectiveZoom, position, zoom })=>{ @@ -173,6 +284,14 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ position, positionReal : false } + this.debouncedViewerPositionChange.emit({ + orientation : Array.from(orientation), + perspectiveOrientation : Array.from(perspectiveOrientation), + perspectiveZoom, + zoom, + position, + positionReal : true + }) }) this._s4$ = this.nehubaViewer.navigationState.position.inRealSpace @@ -189,13 +308,61 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ .subscribe(v=>(this.mousePosVoxel=v)) } - private getRgb(rgb?:number[]):{red:number,green:number,blue:number}{ - if(typeof rgb === 'undefined' || rgb === null) + private loadNewParcellation(){ + + /* show correct segmentation layer */ + + const newlayer = this.nehubaViewer.ngviewer.layerManager.getLayerByName(this.parcellationId) + if(newlayer)newlayer.setVisible(true) + else console.warn('could not find new layer',this.parcellationId) + + /* load meshes */ + this.nehubaViewer.setMeshesToLoad( + [ + ...Array.from(this.regionsLabelIndexMap.keys()), + ...getAuxilliaryLabelIndices() + ], + { + name : this.parcellationId + } + ) + + this.defaultColormap = new Map( + Array.from( + [ + ...this.regionsLabelIndexMap.entries(), + ...getAuxilliaryLabelIndices().map(i=>([ + i, {} + ])) + + ] + ).map(val=>([val[0],this.getRgb(val[0],val[1].rgb)])) as any) + + /* load colour maps */ + this.nehubaViewer.batchAddAndUpdateSegmentColors( + this.defaultColormap, + { name : this.parcellationId }) + + this._s$.forEach(_s$=>{ + if(_s$) _s$.unsubscribe() + }) + + if(this._s1$)this._s1$.unsubscribe() + this._s1$ = this.nehubaViewer.getShownSegmentsObservable({ + name : this.parcellationId + }).subscribe(arrayIdx=>this.updateColorMap(arrayIdx)) + + } + + private getRgb(labelIndex:number,rgb?:number[]):{red:number,green:number,blue:number}{ + if(typeof rgb === 'undefined' || rgb === null){ + const arr = intToColour(Number(labelIndex)) return { - red : 255, - green: 255, - blue : 255 + red : arr[0], + green: arr[1], + blue : arr[2] } + } return { red : rgb[0], green: rgb[1], @@ -204,6 +371,27 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ } } +/** + * + * https://stackoverflow.com/a/16348977/6059235 + */ +const intToColour = function(int) { + if(int >= 65500){ + return [255,255,255] + } + const str = String(int*65535) + let hash = 0 + for (let i = 0; i < str.length; i++) { + hash = str.charCodeAt(i) + ((hash << 5) - hash); + } + const returnV = [] + for (let i = 0; i < 3; i++) { + const value = (hash >> (i * 8)) & 0xFF; + returnV.push(value) + } + return returnV +} + export interface ViewerState{ orientation : [number,number,number,number] perspectiveOrientation : [number,number,number,number] @@ -212,3 +400,53 @@ export interface ViewerState{ positionReal : boolean zoom : number } + +export function getAuxilliaryLabelIndices(){ + return Array.from(Array(36)).map((_,i)=>65500+i) +} + +export const ICOSAHEDRON = `# vtk DataFile Version 2.0 +Converted using https://github.com/HumanBrainProject/neuroglancer-scripts +ASCII +DATASET POLYDATA +POINTS 12 float +-525731.0 0.0 850651.0 +525731.0 0.0 850651.0 +-525731.0 0.0 -850651.0 +525731.0 0.0 -850651.0 +0.0 850651.0 525731.0 +0.0 850651.0 -525731.0 +0.0 -850651.0 525731.0 +0.0 -850651.0 -525731.0 +850651.0 525731.0 0.0 +-850651.0 525731.0 0.0 +850651.0 -525731.0 0.0 +-850651.0 -525731.0 0.0 +POLYGONS 20 80 +3 1 4 0 +3 4 9 0 +3 4 5 9 +3 8 5 4 +3 1 8 4 +3 1 10 8 +3 10 3 8 +3 8 3 5 +3 3 2 5 +3 3 7 2 +3 3 10 7 +3 10 6 7 +3 6 11 7 +3 6 0 11 +3 6 1 0 +3 10 1 6 +3 11 0 9 +3 2 11 9 +3 5 2 9 +3 11 2 7` + +declare const TextEncoder + +export const _encoder = new TextEncoder() +export const ICOSAHEDRON_VTK_URL = URL.createObjectURL( new Blob([ _encoder.encode(ICOSAHEDRON) ],{type : 'application/octet-stream'} )) + +export const FRAGMENT_MAIN_WHITE = `void main(){emitRGB(vec3(1.0,1.0,1.0));}` \ No newline at end of file diff --git a/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.template.html b/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.template.html index 3ce1fa0c2..35a646dee 100644 --- a/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.template.html +++ b/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.template.html @@ -1,3 +1,3 @@ <div id = "neuroglancer-container"> - Loading Nehuba ... + Loading Nehuba Viewer ... </div> \ No newline at end of file diff --git a/src/ui/ui.module.ts b/src/ui/ui.module.ts index c0f49352e..5f573aded 100644 --- a/src/ui/ui.module.ts +++ b/src/ui/ui.module.ts @@ -3,7 +3,7 @@ import { BrowserModule } from "@angular/platform-browser"; import { ComponentsModule } from "../components/components.module"; import { NehubaViewerUnit } from "./nehubaContainer/nehubaViewer/nehubaViewer.component"; -import { NehubaContainner } from "./nehubaContainer/nehubaContainer.component"; +import { NehubaContainer } from "./nehubaContainer/nehubaContainer.component"; import { SplashScreen } from "./nehubaContainer/splashScreen/splashScreen.component"; import { LayoutModule } from "../layouts/layout.module"; import { FormsModule } from "@angular/forms"; @@ -19,6 +19,9 @@ import { PathToNestedChildren } from "../util/pipes/pathToNestedChildren.pipe"; import { CopyPropertyPipe } from "../util/pipes/copyProperty.pipe"; import { GetUniqueProperty } from "../util/pipes/getUniqueProperty.pipe"; import { FilterDataEntriesbyType } from "../util/pipes/filterDataEntriesByType.pipe"; +import { DedicatedViewer } from "./fileviewer/dedicated/dedicated.component"; +import { LandmarkUnit } from "./nehubaContainer/landmarkUnit/landmarkUnit.component"; +import { SafeStylePipe } from "../util/pipes/safeStyle.pipe"; @NgModule({ @@ -30,13 +33,15 @@ import { FilterDataEntriesbyType } from "../util/pipes/filterDataEntriesByType.p ComponentsModule ], declarations : [ - NehubaContainner, + NehubaContainer, NehubaViewerUnit, SplashScreen, DataBrowserUI, FileViewer, RadarChart, LineChart, + DedicatedViewer, + LandmarkUnit, /* pipes */ GroupDatasetByRegion, @@ -44,15 +49,18 @@ import { FilterDataEntriesbyType } from "../util/pipes/filterDataEntriesByType.p PathToNestedChildren, CopyPropertyPipe, GetUniqueProperty, - FilterDataEntriesbyType + FilterDataEntriesbyType, + SafeStylePipe ], entryComponents : [ /* dynamically created components needs to be declared here */ - NehubaViewerUnit + NehubaViewerUnit, + FileViewer, + DataBrowserUI ], exports : [ - NehubaContainner, + NehubaContainer, NehubaViewerUnit, DataBrowserUI, FileViewer diff --git a/src/util/directives/glyphiconTooltip.directive.ts b/src/util/directives/glyphiconTooltip.directive.ts new file mode 100644 index 000000000..bda7412a1 --- /dev/null +++ b/src/util/directives/glyphiconTooltip.directive.ts @@ -0,0 +1,158 @@ +import {Directive, + ViewContainerRef, + ElementRef, + Renderer2} from '@angular/core' +import { TooltipDirective } from 'ngx-bootstrap/tooltip' +import { ComponentLoaderFactory } from 'ngx-bootstrap/component-loader'; + +@Directive({ + selector : '.glyphicon.glyphicon-screenshot' +}) + +export class GlyphiconTooltipScreenshotDirective extends TooltipDirective{ + constructor( + public viewContainerRef:ViewContainerRef, + public rd : Renderer2, + public elementRef:ElementRef, + public clf:ComponentLoaderFactory, + ){ + super(viewContainerRef,rd,elementRef,clf,{ + placement : 'bottom', + triggers : 'mouseenter:mouseleave', + container : 'body' + }) + + this.tooltip = `navigate` + this.ngOnInit() + } +} + +@Directive({ + selector : '.glyphicon.glyphicon-remove-sign' +}) + +export class GlyphiconTooltipRemoveSignDirective extends TooltipDirective{ + constructor( + public viewContainerRef:ViewContainerRef, + public rd : Renderer2, + public elementRef:ElementRef, + public clf:ComponentLoaderFactory, + ){ + super(viewContainerRef,rd,elementRef,clf,{ + placement : 'bottom', + triggers : 'mouseenter:mouseleave', + container : 'body' + }) + + this.tooltip = `remove area` + this.ngOnInit() + } +} + +@Directive({ + selector : '.glyphicon.glyphicon-remove' +}) + +export class GlyphiconTooltipRemoveDirective extends TooltipDirective{ + constructor( + public viewContainerRef:ViewContainerRef, + public rd : Renderer2, + public elementRef:ElementRef, + public clf:ComponentLoaderFactory, + ){ + super(viewContainerRef,rd,elementRef,clf,{ + placement : 'bottom', + triggers : 'mouseenter:mouseleave', + container : 'body' + }) + + this.tooltip = `close` + this.ngOnInit() + } +} + +@Directive({ + selector : '.glyphicon.glyphicon-new-window' +}) + +export class GlyphiconTooltipNewWindowDirective extends TooltipDirective{ + constructor( + public viewContainerRef:ViewContainerRef, + public rd : Renderer2, + public elementRef:ElementRef, + public clf:ComponentLoaderFactory, + ){ + super(viewContainerRef,rd,elementRef,clf,{ + placement : 'bottom', + triggers : 'mouseenter:mouseleave', + container : 'body' + }) + + this.tooltip = `undock` + this.ngOnInit() + } +} + +@Directive({ + selector : '.glyphicon.glyphicon-log-in' +}) + +export class GlyphiconTooltipLogInDirective extends TooltipDirective{ + constructor( + public viewContainerRef:ViewContainerRef, + public rd : Renderer2, + public elementRef:ElementRef, + public clf:ComponentLoaderFactory, + ){ + super(viewContainerRef,rd,elementRef,clf,{ + placement : 'bottom', + triggers : 'mouseenter:mouseleave', + container : 'body' + }) + + this.tooltip = `dock` + this.ngOnInit() + } +} +@Directive({ + selector : '.glyphicon.glyphicon-question-sign' +}) + +export class GlyphiconTooltipQuestionSignDirective extends TooltipDirective{ + constructor( + public viewContainerRef:ViewContainerRef, + public rd : Renderer2, + public elementRef:ElementRef, + public clf:ComponentLoaderFactory, + ){ + super(viewContainerRef,rd,elementRef,clf,{ + placement : 'bottom', + triggers : 'mouseenter:mouseleave', + container : 'body' + }) + + this.tooltip = `help` + this.ngOnInit() + } +} +@Directive({ + selector : '.glyphicon.glyphicon-info-sign' +}) + +export class GlyphiconTooltipInfoSignDirective extends TooltipDirective{ + constructor( + public viewContainerRef:ViewContainerRef, + public rd : Renderer2, + public elementRef:ElementRef, + public clf:ComponentLoaderFactory, + ){ + super(viewContainerRef,rd,elementRef,clf,{ + placement : 'bottom', + triggers : 'mouseenter:mouseleave', + container : 'body' + }) + + this.tooltip = `more information` + this.ngOnInit() + } +} \ No newline at end of file diff --git a/src/util/pipes/copyProperty.pipe.ts b/src/util/pipes/copyProperty.pipe.ts index 2b599c629..a16610f3e 100644 --- a/src/util/pipes/copyProperty.pipe.ts +++ b/src/util/pipes/copyProperty.pipe.ts @@ -7,6 +7,8 @@ import { PipeTransform, Pipe } from "@angular/core"; export class CopyPropertyPipe implements PipeTransform{ public transform(inputArray:any[],src:string,dest:string):any[]{ + if(!inputArray) + return [] return inputArray.map(item=>{ const newObj = Object.assign({},item) newObj[dest] = item[src] diff --git a/src/util/pipes/getFileNameFromPathName.pipe.ts b/src/util/pipes/getFileNameFromPathName.pipe.ts new file mode 100644 index 000000000..d64a96c1c --- /dev/null +++ b/src/util/pipes/getFileNameFromPathName.pipe.ts @@ -0,0 +1,12 @@ +import { Pipe, PipeTransform } from "@angular/core"; + + +@Pipe({ + name : 'getFilenameFromPathname' +}) + +export class GetFilenameFromPathnamePipe implements PipeTransform{ + public transform(pathname:string):string{ + return pathname.split('/')[pathname.split('/').length - 1] + } +} \ No newline at end of file diff --git a/src/util/pipes/pathToNestedChildren.pipe.ts b/src/util/pipes/pathToNestedChildren.pipe.ts index 2ab5d634c..38ecb13fb 100644 --- a/src/util/pipes/pathToNestedChildren.pipe.ts +++ b/src/util/pipes/pathToNestedChildren.pipe.ts @@ -10,6 +10,8 @@ import { PipeTransform, Pipe } from "@angular/core"; export class PathToNestedChildren implements PipeTransform{ public transform(array:HasPathProperty[],prop?:string):NestedChildren[]{ + if(!array) + return [] return this.constructDoubleHeirachy(array) } diff --git a/src/util/pipes/safeStyle.pipe.ts b/src/util/pipes/safeStyle.pipe.ts new file mode 100644 index 000000000..c77976979 --- /dev/null +++ b/src/util/pipes/safeStyle.pipe.ts @@ -0,0 +1,16 @@ +import { Pipe, PipeTransform } from "@angular/core"; +import { DomSanitizer, SafeStyle } from "@angular/platform-browser"; + +@Pipe({ + name : 'safeStyle' +}) + +export class SafeStylePipe implements PipeTransform{ + constructor(private sanitizer:DomSanitizer){ + + } + + transform(style:string):SafeStyle{ + return this.sanitizer.bypassSecurityTrustStyle(style) + } +} \ No newline at end of file -- GitLab