diff --git a/.github/workflows/ibllib_ci.yml b/.github/workflows/ibllib_ci.yml index 7ca648938..b6a2b1f45 100644 --- a/.github/workflows/ibllib_ci.yml +++ b/.github/workflows/ibllib_ci.yml @@ -18,12 +18,12 @@ jobs: max-parallel: 2 matrix: os: ["windows-latest", "ubuntu-latest"] - python-version: ["3.8", "3.11"] + python-version: ["3.10", "3.12"] exclude: - os: windows-latest - python-version: 3.8 + python-version: 3.10 - os: ubuntu-latest - python-version: 3.11 + python-version: 3.12 steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index e3e79e129..b44d8962e 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -18,7 +18,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: '3.8' + python-version: '3.10' - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/README.md b/README.md index 46baec1ec..cfd209deb 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# IBL Python Libraries -[![Coverage badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fibllib.hooks.internationalbrainlab.org%2Fcoverage%2Fibllib%2Fmaster)](https://ibllib.hooks.internationalbrainlab.org/coverage/master) +# IBL Python Libraries +[![Coverage badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fibllib.hooks.internationalbrainlab.org%2Fcoverage%2Fibllib%2Fmaster)](https://ibllib.hooks.internationalbrainlab.org/coverage/master) [![Tests status badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fibllib.hooks.internationalbrainlab.org%2Ftests%2Fibllib%2Fmaster)](https://ibllib.hooks.internationalbrainlab.org/logs/records/master) [![Tests status badge](https://img.shields.io/endpoint?label=develop&url=https%3A%2F%2Fibllib.hooks.internationalbrainlab.org%2Ftests%2Fibllib%2Fdevelop)](https://ibllib.hooks.internationalbrainlab.org/logs/records/develop) @@ -14,7 +14,7 @@ The library is currently 2 main modules: ## Requirements **OS**: Only tested on Linux. Windows and Mac may work, but are not supported. -**Python Module**: Python 3.8 or higher +**Python Module**: Python 3.10 or higher, Python 3.12 recommended ## Installation, documentation and examples https://docs.internationalbrainlab.org @@ -23,7 +23,7 @@ https://docs.internationalbrainlab.org ## Contribution and development practices See https://int-brain-lab.github.io/iblenv/07_contribution.html -We use gitflow and Semantic Versioning. +We use Semantic Versioning. Before committing to your branch: - run tests diff --git a/brainbox/atlas.py b/brainbox/atlas.py deleted file mode 100644 index 8c28feb89..000000000 --- a/brainbox/atlas.py +++ /dev/null @@ -1,161 +0,0 @@ -""" -Functions which map metrics to the Allen atlas. - -Code by G. Meijer -""" - -import numpy as np -import seaborn as sns -import matplotlib.pyplot as plt -from iblatlas import atlas - - -def _label2values(imlabel, fill_values, ba): - """ - Fills a slice from the label volume with values to display - :param imlabel: 2D np-array containing label ids (slice of the label volume) - :param fill_values: 1D np-array containing values to fill into the slice - :return: 2D np-array filled with values - """ - im_unique, ilabels, iim = np.unique(imlabel, return_index=True, return_inverse=True) - _, ir_unique, _ = np.intersect1d(ba.regions.id, im_unique, return_indices=True) - im = np.squeeze(np.reshape(fill_values[ir_unique[iim]], (*imlabel.shape, 1))) - return im - - -def plot_atlas(regions, values, ML=-1, AP=0, DV=-1, hemisphere='left', color_palette='Reds', - minmax=None, axs=None, custom_region_list=None): - """ - Plot a sagittal, coronal and horizontal slice of the Allen atlas with regions colored in - according to any value that the user specifies. - - Parameters - ---------- - regions : 1D array - Array of strings with the acronyms of brain regions (in Allen convention) that should be - filled with color - values : 1D array - Array of values that correspond to the brain region acronyms - ML, AP, DV : float - The coordinates of the slices in mm - hemisphere : string - Which hemisphere to color, options are 'left' (default), 'right', 'both' - color_palette : any input that can be interpreted by sns.color_palette - The color palette of the plot - minmax : 2 element array - The min and max of the color map, if None it uses the min and max of values - axs : 3 element list of axis - A list of the three axis in which to plot the three slices - custom_region_list : 1D array with shape the same as ba.regions.acronym.shape - Input any custom list of acronyms that replaces the default list of acronyms - found in ba.regions.acronym. For example if you want to merge certain regions you can - give them the same name in the custom_region_list - """ - - # Import Allen atlas - ba = atlas.AllenAtlas(25) - - # Check input - assert regions.shape == values.shape - if minmax is not None: - assert len(minmax) == 2 - if axs is not None: - assert len(axs) == 3 - if custom_region_list is not None: - assert custom_region_list.shape == ba.regions.acronym.shape - - # Get region boundaries volume - boundaries = np.diff(ba.label, axis=0, append=0) - boundaries = boundaries + np.diff(ba.label, axis=1, append=0) - boundaries = boundaries + np.diff(ba.label, axis=2, append=0) - boundaries[boundaries != 0] = 1 - - # Get all brain region names, use custom list if inputted - if custom_region_list is None: - all_regions = ba.regions.acronym - else: - all_regions = custom_region_list - - # Set values outside colormap bounds - if minmax is not None: - values[values < minmax[0] + np.abs(minmax[0] / 1000)] = (minmax[0] - + np.abs(minmax[0] / 1000)) - values[values > minmax[1] - np.abs(minmax[1] / 1000)] = (minmax[1] - - np.abs(minmax[0] / 1000)) - - # Add values to brain region list - region_values = np.ones(ba.regions.acronym.shape) * (np.min(values) - (np.max(values) + 1)) - for i, region in enumerate(regions): - region_values[all_regions == region] = values[i] - - # Set 'void' to default white - region_values[0] = np.min(values) - (np.max(values) + 1) - - # Get slices with fill values - slice_sag = ba.slice(ML / 1000, axis=0, volume=ba.label) # saggital - slice_sag = _label2values(slice_sag, region_values, ba) - bound_sag = ba.slice(ML / 1000, axis=0, volume=boundaries) - slice_cor = ba.slice(AP / 1000, axis=1, volume=ba.label) # coronal - slice_cor = _label2values(slice_cor, region_values, ba) - bound_cor = ba.slice(AP / 1000, axis=1, volume=boundaries) - slice_hor = ba.slice(DV / 1000, axis=2, volume=ba.label) # horizontal - slice_hor = _label2values(slice_hor, region_values, ba) - bound_hor = ba.slice(DV / 1000, axis=2, volume=boundaries) - - # Only color specified hemisphere - if hemisphere == 'left': - slice_cor[:int(slice_cor.shape[0] / 2), :] = np.min(values) - (np.max(values) + 1) - slice_hor[:, int(slice_cor.shape[0] / 2):] = np.min(values) - (np.max(values) + 1) - elif hemisphere == 'right': - slice_cor[int(slice_cor.shape[0] / 2):, :] = np.min(values) - (np.max(values) + 1) - slice_hor[:, :int(slice_cor.shape[0] / 2)] = np.min(values) - (np.max(values) + 1) - if ((hemisphere == 'left') & (ML > 0)) or ((hemisphere == 'right') & (ML < 0)): - slice_sag[:] = np.min(values) - (np.max(values) + 1) - - # Add boundaries to slices outside of the fill value region and set to grey - if minmax is None: - slice_sag[bound_sag == 1] = np.max(values) + 1 - slice_cor[bound_cor == 1] = np.max(values) + 1 - slice_hor[bound_hor == 1] = np.max(values) + 1 - else: - slice_sag[bound_sag == 1] = minmax[1] + 1 - slice_cor[bound_cor == 1] = minmax[1] + 1 - slice_hor[bound_hor == 1] = minmax[1] + 1 - - # Construct color map - color_map = sns.color_palette(color_palette, 1000) - color_map.append((0.8, 0.8, 0.8)) # color of the boundaries between regions - color_map.insert(0, (1, 1, 1)) # color of the background and regions without a value - - # Get color scale - if minmax is None: - cmin = np.min(values) - cmax = np.max(values) - else: - cmin = minmax[0] - cmax = minmax[1] - - # Plot - if axs is None: - fig, axs = plt.subplots(1, 3, figsize=(16, 4)) - - # Saggital - sns.heatmap(np.rot90(slice_sag, 3), cmap=color_map, cbar=True, vmin=cmin, vmax=cmax, ax=axs[0]) - axs[0].set(title='ML: %.1f mm' % ML) - plt.axis('off') - axs[0].get_xaxis().set_visible(False) - axs[0].get_yaxis().set_visible(False) - - # Coronal - sns.heatmap(np.rot90(slice_cor, 3), cmap=color_map, cbar=True, vmin=cmin, vmax=cmax, ax=axs[1]) - axs[1].set(title='AP: %.1f mm' % AP) - plt.axis('off') - axs[1].get_xaxis().set_visible(False) - axs[1].get_yaxis().set_visible(False) - - # Horizontal - sns.heatmap(np.rot90(slice_hor, 3), cmap=color_map, cbar=True, vmin=cmin, vmax=cmax, ax=axs[2]) - axs[2].set(title='DV: %.1f mm' % DV) - plt.axis('off') - axs[2].get_xaxis().set_visible(False) - axs[2].get_yaxis().set_visible(False) diff --git a/brainbox/behavior/training.py b/brainbox/behavior/training.py index 6959c3bae..a8f2f383d 100644 --- a/brainbox/behavior/training.py +++ b/brainbox/behavior/training.py @@ -157,7 +157,7 @@ def get_subject_training_status(subj, date=None, details=True, one=None): if not trials: return sess_dates = list(trials.keys()) - status, info = get_training_status(trials, task_protocol, ephys_sess, n_delay) + status, info, _ = get_training_status(trials, task_protocol, ephys_sess, n_delay) if details: if np.any(info.get('psych')): @@ -265,13 +265,13 @@ def get_sessions(subj, date=None, one=None): if not np.any(np.array(task_protocol) == 'training'): ephys_sess = one.alyx.rest('sessions', 'list', subject=subj, date_range=[sess_dates[-1], sess_dates[0]], - django='json__PYBPOD_BOARD__icontains,ephys') + django='location__name__icontains,ephys') if len(ephys_sess) > 0: ephys_sess_dates = [sess['start_time'][:10] for sess in ephys_sess] n_delay = len(one.alyx.rest('sessions', 'list', subject=subj, date_range=[sess_dates[-1], sess_dates[0]], - django='json__SESSION_START_DELAY_SEC__gte,900')) + django='json__SESSION_DELAY_START__gte,900')) else: ephys_sess_dates = [] n_delay = 0 @@ -313,23 +313,32 @@ def get_training_status(trials, task_protocol, ephys_sess_dates, n_delay): info = Bunch() trials_all = concatenate_trials(trials) + info.session_dates = list(trials.keys()) + info.protocols = [p for p in task_protocol] # Case when all sessions are trainingChoiceWorld if np.all(np.array(task_protocol) == 'training'): - signed_contrast = get_signed_contrast(trials_all) + signed_contrast = np.unique(get_signed_contrast(trials_all)) (info.perf_easy, info.n_trials, info.psych, info.rt) = compute_training_info(trials, trials_all) - if not np.any(signed_contrast == 0): - status = 'in training' + + pass_criteria, criteria = criterion_1b(info.psych, info.n_trials, info.perf_easy, info.rt, + signed_contrast) + if pass_criteria: + failed_criteria = Bunch() + failed_criteria['NBiased'] = {'val': info.protocols, 'pass': False} + failed_criteria['Criteria'] = {'val': 'ready4ephysrig', 'pass': False} + status = 'trained 1b' else: - if criterion_1b(info.psych, info.n_trials, info.perf_easy, info.rt): - status = 'trained 1b' - elif criterion_1a(info.psych, info.n_trials, info.perf_easy): + failed_criteria = criteria + pass_criteria, criteria = criterion_1a(info.psych, info.n_trials, info.perf_easy, signed_contrast) + if pass_criteria: status = 'trained 1a' else: + failed_criteria = criteria status = 'in training' - return status, info + return status, info, failed_criteria # Case when there are < 3 biasedChoiceWorld sessions after reaching trained_1b criterion if ~np.all(np.array(task_protocol) == 'training') and \ @@ -338,7 +347,11 @@ def get_training_status(trials, task_protocol, ephys_sess_dates, n_delay): (info.perf_easy, info.n_trials, info.psych, info.rt) = compute_training_info(trials, trials_all) - return status, info + criteria = Bunch() + criteria['NBiased'] = {'val': info.protocols, 'pass': False} + criteria['Criteria'] = {'val': 'ready4ephysrig', 'pass': False} + + return status, info, criteria # Case when there is biasedChoiceWorld or ephysChoiceWorld in last three sessions if not np.any(np.array(task_protocol) == 'training'): @@ -346,37 +359,40 @@ def get_training_status(trials, task_protocol, ephys_sess_dates, n_delay): (info.perf_easy, info.n_trials, info.psych_20, info.psych_80, info.rt) = compute_bias_info(trials, trials_all) - # We are still on training rig and so all sessions should be biased - if len(ephys_sess_dates) == 0: - assert np.all(np.array(task_protocol) == 'biased') - if criterion_ephys(info.psych_20, info.psych_80, info.n_trials, info.perf_easy, - info.rt): - status = 'ready4ephysrig' - else: - status = 'trained 1b' - elif len(ephys_sess_dates) < 3: + n_ephys = len(ephys_sess_dates) + info.n_ephys = n_ephys + info.n_delay = n_delay + + # Criterion recording + pass_criteria, criteria = criteria_recording(n_ephys, n_delay, info.psych_20, info.psych_80, info.n_trials, + info.perf_easy, info.rt) + if pass_criteria: + # Here the criteria doesn't actually fail but we have no other criteria to meet so we return this + failed_criteria = criteria + status = 'ready4recording' + else: + failed_criteria = criteria assert all(date in trials for date in ephys_sess_dates) perf_ephys_easy = np.array([compute_performance_easy(trials[k]) for k in ephys_sess_dates]) n_ephys_trials = np.array([compute_n_trials(trials[k]) for k in ephys_sess_dates]) - if criterion_delay(n_ephys_trials, perf_ephys_easy): - status = 'ready4delay' - else: - status = 'ready4ephysrig' - - elif len(ephys_sess_dates) >= 3: - if n_delay > 0 and \ - criterion_ephys(info.psych_20, info.psych_80, info.n_trials, info.perf_easy, - info.rt): - status = 'ready4recording' - elif criterion_delay(info.n_trials, info.perf_easy): + pass_criteria, criteria = criterion_delay(n_ephys, n_ephys_trials, perf_ephys_easy) + + if pass_criteria: status = 'ready4delay' else: - status = 'ready4ephysrig' + failed_criteria = criteria + pass_criteria, criteria = criterion_ephys(info.psych_20, info.psych_80, info.n_trials, + info.perf_easy, info.rt) + if pass_criteria: + status = 'ready4ephysrig' + else: + failed_criteria = criteria + status = 'trained 1b' - return status, info + return status, info, failed_criteria def display_status(subj, sess_dates, status, perf_easy=None, n_trials=None, psych=None, @@ -814,7 +830,7 @@ def compute_reaction_time(trials, stim_on_type='stimOn_times', stim_off_type='re return reaction_time, contrasts, n_contrasts, -def criterion_1a(psych, n_trials, perf_easy): +def criterion_1a(psych, n_trials, perf_easy, signed_contrast): """ Returns bool indicating whether criteria for status 'trained_1a' are met. @@ -825,6 +841,7 @@ def criterion_1a(psych, n_trials, perf_easy): - Lapse rate on both sides is less than 0.2 - The total number of trials is greater than 200 for each session - Performance on easy contrasts > 80% for all sessions + - Zero contrast trials must be present Parameters ---------- @@ -835,11 +852,15 @@ def criterion_1a(psych, n_trials, perf_easy): The number for trials for each session. perf_easy : numpy.array of float The proportion of correct high contrast trials for each session. + signed_contrast: numpy.array + Unique list of contrasts displayed Returns ------- bool True if the criteria are met for 'trained_1a'. + Bunch + Bunch containing breakdown of the passing/ failing critieria Notes ----- @@ -847,12 +868,23 @@ def criterion_1a(psych, n_trials, perf_easy): for a number of sessions determined to be of 'good' performance by an experimenter. """ - criterion = (abs(psych[0]) < 16 and psych[1] < 19 and psych[2] < 0.2 and psych[3] < 0.2 and - np.all(n_trials > 200) and np.all(perf_easy > 0.8)) - return criterion + criteria = Bunch() + criteria['Zero_contrast'] = {'val': signed_contrast, 'pass': np.any(signed_contrast == 0)} + criteria['LapseLow_50'] = {'val': psych[2], 'pass': psych[2] < 0.2} + criteria['LapseHigh_50'] = {'val': psych[3], 'pass': psych[3] < 0.2} + criteria['Bias'] = {'val': psych[0], 'pass': abs(psych[0]) < 16} + criteria['Threshold'] = {'val': psych[1], 'pass': psych[1] < 19} + criteria['N_trials'] = {'val': n_trials, 'pass': np.all(n_trials > 200)} + criteria['Perf_easy'] = {'val': perf_easy, 'pass': np.all(perf_easy > 0.8)} + + passing = np.all([v['pass'] for k, v in criteria.items()]) + criteria['Criteria'] = {'val': 'trained_1a', 'pass': passing} -def criterion_1b(psych, n_trials, perf_easy, rt): + return passing, criteria + + +def criterion_1b(psych, n_trials, perf_easy, rt, signed_contrast): """ Returns bool indicating whether criteria for trained_1b are met. @@ -864,6 +896,7 @@ def criterion_1b(psych, n_trials, perf_easy, rt): - The total number of trials is greater than 400 for each session - Performance on easy contrasts > 90% for all sessions - The median response time across all zero contrast trials is less than 2 seconds + - Zero contrast trials must be present Parameters ---------- @@ -876,11 +909,15 @@ def criterion_1b(psych, n_trials, perf_easy, rt): The proportion of correct high contrast trials for each session. rt : float The median response time for zero contrast trials. + signed_contrast: numpy.array + Unique list of contrasts displayed Returns ------- bool True if the criteria are met for 'trained_1b'. + Bunch + Bunch containing breakdown of the passing/ failing critieria Notes ----- @@ -890,17 +927,27 @@ def criterion_1b(psych, n_trials, perf_easy, rt): regrettably means that the maximum threshold fit for 1b is greater than for 1a, meaning the slope of the psychometric curve may be slightly less steep than 1a. """ - criterion = (abs(psych[0]) < 10 and psych[1] < 20 and psych[2] < 0.1 and psych[3] < 0.1 and - np.all(n_trials > 400) and np.all(perf_easy > 0.9) and rt < 2) - return criterion + + criteria = Bunch() + criteria['Zero_contrast'] = {'val': signed_contrast, 'pass': np.any(signed_contrast == 0)} + criteria['LapseLow_50'] = {'val': psych[2], 'pass': psych[2] < 0.1} + criteria['LapseHigh_50'] = {'val': psych[3], 'pass': psych[3] < 0.1} + criteria['Bias'] = {'val': psych[0], 'pass': abs(psych[0]) < 10} + criteria['Threshold'] = {'val': psych[1], 'pass': psych[1] < 20} + criteria['N_trials'] = {'val': n_trials, 'pass': np.all(n_trials > 400)} + criteria['Perf_tasy'] = {'val': perf_easy, 'pass': np.all(perf_easy > 0.9)} + criteria['Reaction_time'] = {'val': rt, 'pass': rt < 2} + + passing = np.all([v['pass'] for k, v in criteria.items()]) + + criteria['Criteria'] = {'val': 'trained_1b', 'pass': passing} + + return passing, criteria def criterion_ephys(psych_20, psych_80, n_trials, perf_easy, rt): """ - Returns bool indicating whether criteria for ready4ephysrig or ready4recording are met. - - NB: The difference between these two is whether the sessions were acquired ot a recording rig - with a delay before the first trial. Neither of these two things are tested here. + Returns bool indicating whether criteria for ready4ephysrig are met. Criteria -------- @@ -929,21 +976,34 @@ def criterion_ephys(psych_20, psych_80, n_trials, perf_easy, rt): Returns ------- bool - True if subject passes the ready4ephysrig or ready4recording criteria. + True if subject passes the ready4ephysrig criteria. + Bunch + Bunch containing breakdown of the passing/ failing critieria """ + criteria = Bunch() + criteria['LapseLow_80'] = {'val': psych_80[2], 'pass': psych_80[2] < 0.1} + criteria['LapseHigh_80'] = {'val': psych_80[3], 'pass': psych_80[3] < 0.1} + criteria['LapseLow_20'] = {'val': psych_20[2], 'pass': psych_20[2] < 0.1} + criteria['LapseHigh_20'] = {'val': psych_20[3], 'pass': psych_20[3] < 0.1} + criteria['Bias_shift'] = {'val': psych_80[0] - psych_20[0], 'pass': psych_80[0] - psych_20[0] > 5} + criteria['N_trials'] = {'val': n_trials, 'pass': np.all(n_trials > 400)} + criteria['Perf_easy'] = {'val': perf_easy, 'pass': np.all(perf_easy > 0.9)} + criteria['Reaction_time'] = {'val': rt, 'pass': rt < 2} - criterion = (np.all(np.r_[psych_20[2:4], psych_80[2:4]] < 0.1) and # lapse - psych_80[0] - psych_20[0] > 5 and np.all(n_trials > 400) and # bias shift and n trials - np.all(perf_easy > 0.9) and rt < 2) # overall performance and response times - return criterion + passing = np.all([v['pass'] for k, v in criteria.items()]) + criteria['Criteria'] = {'val': 'ready4ephysrig', 'pass': passing} -def criterion_delay(n_trials, perf_easy): + return passing, criteria + + +def criterion_delay(n_ephys, n_trials, perf_easy): """ Returns bool indicating whether criteria for 'ready4delay' is met. Criteria -------- + - At least one session on an ephys rig - Total number of trials for any of the sessions is greater than 400 - Performance on easy contrasts is greater than 90% for any of the sessions @@ -959,9 +1019,69 @@ def criterion_delay(n_trials, perf_easy): ------- bool True if subject passes the 'ready4delay' criteria. + Bunch + Bunch containing breakdown of the passing/ failing critieria + """ + + criteria = Bunch() + criteria['N_ephys'] = {'val': n_ephys, 'pass': n_ephys > 0} + criteria['N_trials'] = {'val': n_trials, 'pass': np.any(n_trials > 400)} + criteria['Perf_easy'] = {'val': perf_easy, 'pass': np.any(perf_easy > 0.9)} + + passing = np.all([v['pass'] for k, v in criteria.items()]) + + criteria['Criteria'] = {'val': 'ready4delay', 'pass': passing} + + return passing, criteria + + +def criteria_recording(n_ephys, delay, psych_20, psych_80, n_trials, perf_easy, rt): """ - criterion = np.any(n_trials > 400) and np.any(perf_easy > 0.9) - return criterion + Returns bool indicating whether criteria for ready4recording are met. + + Criteria + -------- + - At least 3 ephys sessions + - Delay on any session > 0 + - Lapse on both sides < 0.1 for both bias blocks + - Bias shift between blocks > 5 + - Total number of trials > 400 for all sessions + - Performance on easy contrasts > 90% for all sessions + - Median response time for zero contrast stimuli < 2 seconds + + Parameters + ---------- + psych_20 : numpy.array + The fit psychometric parameters for the blocks where probability of a left stimulus is 0.2. + Parameters are bias, threshold, lapse high, lapse low. + psych_80 : numpy.array + The fit psychometric parameters for the blocks where probability of a left stimulus is 0.8. + Parameters are bias, threshold, lapse high, lapse low. + n_trials : numpy.array + The number of trials for each session (typically three consecutive sessions). + perf_easy : numpy.array + The proportion of correct high contrast trials for each session (typically three + consecutive sessions). + rt : float + The median response time for zero contrast trials. + + Returns + ------- + bool + True if subject passes the ready4recording criteria. + Bunch + Bunch containing breakdown of the passing/ failing critieria + """ + + _, criteria = criterion_ephys(psych_20, psych_80, n_trials, perf_easy, rt) + criteria['N_ephys'] = {'val': n_ephys, 'pass': n_ephys >= 3} + criteria['N_delay'] = {'val': delay, 'pass': delay > 0} + + passing = np.all([v['pass'] for k, v in criteria.items()]) + + criteria['Criteria'] = {'val': 'ready4recording', 'pass': passing} + + return passing, criteria def plot_psychometric(trials, ax=None, title=None, plot_ci=False, ci_alpha=0.032, **kwargs): diff --git a/brainbox/io/one.py b/brainbox/io/one.py index c9b25a778..fc621d98c 100644 --- a/brainbox/io/one.py +++ b/brainbox/io/one.py @@ -12,7 +12,7 @@ import matplotlib.pyplot as plt from one.api import ONE, One -from one.alf.files import get_alf_path, full_path_parts +from one.alf.path import get_alf_path, full_path_parts from one.alf.exceptions import ALFObjectNotFound, ALFMultipleCollectionsFound from one.alf import cache import one.alf.io as alfio @@ -866,13 +866,21 @@ def _get_attributes(dataset_types): waveform_attributes = list(set(WAVEFORMS_ATTRIBUTES + waveform_attributes)) return {'spikes': spike_attributes, 'clusters': cluster_attributes, 'waveforms': waveform_attributes} - def _get_spike_sorting_collection(self, spike_sorter='pykilosort'): + def _get_spike_sorting_collection(self, spike_sorter=None): """ Filters a list or array of collections to get the relevant spike sorting dataset if there is a pykilosort, load it """ - collection = next(filter(lambda c: c == f'alf/{self.pname}/{spike_sorter}', self.collections), None) - # otherwise, prefers the shortest + for sorter in list([spike_sorter, 'iblsorter', 'pykilosort']): + if sorter is None: + continue + if sorter == "": + collection = next(filter(lambda c: c == f'alf/{self.pname}', self.collections), None) + else: + collection = next(filter(lambda c: c == f'alf/{self.pname}/{sorter}', self.collections), None) + if collection is not None: + return collection + # if none is found amongst the defaults, prefers the shortest collection = collection or next(iter(sorted(filter(lambda c: f'alf/{self.pname}' in c, self.collections), key=len)), None) _logger.debug(f"selecting: {collection} to load amongst candidates: {self.collections}") return collection @@ -982,14 +990,13 @@ def download_raw_waveforms(self, **kwargs): """ _logger.debug(f"loading waveforms from {self.collection}") return self.one.load_object( - self.eid, "waveforms", - attribute=["traces", "templates", "table", "channels"], + id=self.eid, obj="waveforms", attribute=["traces", "templates", "table", "channels"], collection=self._get_spike_sorting_collection("pykilosort"), download_only=True, **kwargs ) def raw_waveforms(self, **kwargs): wf_paths = self.download_raw_waveforms(**kwargs) - return WaveformsLoader(wf_paths[0].parent, wfs_dtype=np.float16) + return WaveformsLoader(wf_paths[0].parent) def load_channels(self, **kwargs): """ @@ -1010,7 +1017,10 @@ def load_channels(self, **kwargs): self.download_spike_sorting_object(obj='channels', missing='ignore', **kwargs) channels = self._load_object(self.files['channels'], wildcards=self.one.wildcards) if 'electrodeSites' in self.files: # if common dict keys, electrodeSites prevails - channels = channels | self._load_object(self.files['electrodeSites'], wildcards=self.one.wildcards) + esites = channels | self._load_object(self.files['electrodeSites'], wildcards=self.one.wildcards) + if alfio.check_dimensions(esites) != 0: + esites = self._load_object(self.files['electrodeSites'], wildcards=self.one.wildcards) + esites['rawInd'] = np.arange(esites[list(esites.keys())[0]].shape[0]) if 'brainLocationIds_ccf_2017' not in channels: _logger.debug(f"loading channels from alyx for {self.files['channels']}") _channels, self.histology = _load_channel_locations_traj( @@ -1022,7 +1032,7 @@ def load_channels(self, **kwargs): self.histology = 'alf' return Bunch(channels) - def load_spike_sorting(self, spike_sorter='pykilosort', revision=None, enforce_version=True, good_units=False, **kwargs): + def load_spike_sorting(self, spike_sorter='iblsorter', revision=None, enforce_version=False, good_units=False, **kwargs): """ Loads spikes, clusters and channels @@ -1071,7 +1081,7 @@ def _assert_version_consistency(self): assert fn.relative_to(self.session_path).parts[2] == self.spike_sorter, \ f"You required strict version {self.spike_sorter}, {fn} does not match" if self.revision: - assert fn.relative_to(self.session_path).parts[3] == f"#{self.revision}#", \ + assert full_path_parts(fn)[5] == self.revision, \ f"You required strict revision {self.revision}, {fn} does not match" @staticmethod diff --git a/brainbox/io/spikeglx.py b/brainbox/io/spikeglx.py index 9c0618c11..f9c91da73 100644 --- a/brainbox/io/spikeglx.py +++ b/brainbox/io/spikeglx.py @@ -7,7 +7,7 @@ import random import numpy as np -from one.alf.files import remove_uuid_string +from one.alf.path import remove_uuid_string import spikeglx @@ -128,6 +128,7 @@ def __init__(self, pid, one, typ='ap', cache_folder=None, remove_cached=False): self.file_chunks = self.one.load_dataset(self.eid, f'*.{typ}.ch', collection=f"*{self.pname}") meta_file = self.one.load_dataset(self.eid, f'*.{typ}.meta', collection=f"*{self.pname}") cbin_rec = self.one.list_datasets(self.eid, collection=f"*{self.pname}", filename=f'*{typ}.*bin', details=True) + cbin_rec.index = cbin_rec.index.map(lambda x: (self.eid, x)) self.url_cbin = self.one.record2url(cbin_rec)[0] with open(self.file_chunks, 'r') as f: self.chunks = json.load(f) diff --git a/brainbox/lfp.py b/brainbox/lfp.py deleted file mode 100644 index 8b407d2f3..000000000 --- a/brainbox/lfp.py +++ /dev/null @@ -1,114 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Functions to analyse LFP signals. - -@author: Guido Meijer -Created on Fri Mar 13 14:57:53 2020 -""" - -from scipy.signal import welch, csd, filtfilt, butter -import numpy as np - - -def butter_filter(signal, highpass_freq=None, lowpass_freq=None, order=4, fs=2500): - - # The filter type is determined according to the values of cut-off frequencies - Fn = fs / 2. - if lowpass_freq and highpass_freq: - if highpass_freq < lowpass_freq: - Wn = (highpass_freq / Fn, lowpass_freq / Fn) - btype = 'bandpass' - else: - Wn = (lowpass_freq / Fn, highpass_freq / Fn) - btype = 'bandstop' - elif lowpass_freq: - Wn = lowpass_freq / Fn - btype = 'lowpass' - elif highpass_freq: - Wn = highpass_freq / Fn - btype = 'highpass' - else: - raise ValueError("Either highpass_freq or lowpass_freq must be given") - - # Filter signal - b, a = butter(order, Wn, btype=btype, output='ba') - filtered_data = filtfilt(b=b, a=a, x=signal, axis=1) - - return filtered_data - - -def power_spectrum(signal, fs=2500, segment_length=0.5, segment_overlap=0.5, scaling='density'): - """ - Calculate the power spectrum of an LFP signal - - Parameters - ---------- - signal : 2D array - LFP signal from different channels in V with dimensions (channels X samples) - fs : int - Sampling frequency - segment_length : float - Length of the segments for which the spectral density is calcualted in seconds - segment_overlap : float - Fraction of overlap between the segments represented as a float number between 0 (no - overlap) and 1 (complete overlap) - - Returns - ---------- - freqs : 1D array - Frequencies for which the spectral density is calculated - psd : 2D array - Power spectrum in V^2 with dimensions (channels X frequencies) - - """ - - # Transform segment from seconds to samples - segment_samples = int(fs * segment_length) - overlap_samples = int(segment_overlap * segment_samples) - - # Calculate power spectrum - freqs, psd = welch(signal, fs=fs, nperseg=segment_samples, noverlap=overlap_samples, - scaling=scaling) - return freqs, psd - - -def coherence(signal_a, signal_b, fs=2500, segment_length=1, segment_overlap=0.5): - """ - Calculate the coherence between two LFP signals - - Parameters - ---------- - signal_a : 1D array - LFP signal from different channels with dimensions (channels X samples) - fs : int - Sampling frequency - segment_length : float - Length of the segments for which the spectral density is calcualted in seconds - segment_overlap : float - Fraction of overlap between the segments represented as a float number between 0 (no - overlap) and 1 (complete overlap) - - Returns - ---------- - freqs : 1D array - Frequencies for which the coherence is calculated - coherence : 1D array - Coherence takes a value between 0 and 1, with 0 or 1 representing no or perfect coherence, - respectively - phase_lag : 1D array - Estimate of phase lag in radian between the input time series for each frequency - - """ - - # Transform segment from seconds to samples - segment_samples = int(fs * segment_length) - overlap_samples = int(segment_overlap * segment_samples) - - # Calculate coherence - freqs, Pxx = welch(signal_a, fs=fs, nperseg=segment_samples, noverlap=overlap_samples) - _, Pyy = welch(signal_b, fs=fs, nperseg=segment_samples, noverlap=overlap_samples) - _, Pxy = csd(signal_a, signal_b, fs=fs, nperseg=segment_samples, noverlap=overlap_samples) - coherence = np.abs(Pxy) ** 2 / (Pxx * Pyy) - phase_lag = np.angle(Pxy) - - return freqs, coherence, phase_lag diff --git a/brainbox/quality/__init__.py b/brainbox/quality/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/brainbox/quality/lfp_qc.py b/brainbox/quality/lfp_qc.py deleted file mode 100644 index 2dc50d0e3..000000000 --- a/brainbox/quality/lfp_qc.py +++ /dev/null @@ -1,115 +0,0 @@ -""" -Quality control on LFP -Based on code by Olivier Winter: -https://github.com/int-brain-lab/ibllib/blob/master/examples/ibllib/ephys_qc_raw.py - -adapted by Anne Urai -Instructions https://docs.google.com/document/d/1lBNcssodWdBILBN0PrPWi0te4f6I8H_Bb-7ESxQdv5U/edit# -""" - -from pathlib import Path - -import sys -import glob -import os -import matplotlib.pyplot as plt -import numpy as np -import seaborn as sns - - -from ibllib.ephys import ephysqc -import one.alf.io as alfio -# from IPython import embed as shell - - -def _plot_spectra(outpath, typ, savefig=True): - ''' - TODO document this function - ''' - - spec = alfio.load_object(outpath, 'ephysQcFreq' + typ.upper(), namespace='spikeglx') - - # hack to ensure a single key name - if 'power.probe_00' in spec.keys(): - spec['power'] = spec.pop('power.probe_00') - spec['freq'] = spec.pop('freq.probe_00') - elif 'power.probe_01' in spec.keys(): - spec['power'] = spec.pop('power.probe_01') - spec['freq'] = spec.pop('freq.probe_01') - - # plot - sns.set_style("whitegrid") - plt.figure(figsize=[9, 4.5]) - ax = plt.axes() - ax.plot(spec['freq'], 20 * np.log10(spec['power'] + 1e-14), - linewidth=0.5, color=[0.5, 0.5, 0.5]) - ax.plot(spec['freq'], 20 * np.log10(np.median(spec['power'] + 1e-14, axis=1)), label='median') - ax.set_xlabel(r'Frequency (Hz)') - ax.set_ylabel(r'dB rel to $V^2.$Hz$^{-1}$') - if typ == 'ap': - ax.set_ylim([-275, -125]) - elif typ == 'lf': - ax.set_ylim([-260, -60]) - ax.legend() - ax.set_title(outpath) - if savefig: - plt.savefig(outpath / (typ + '_spec.png'), dpi=150) - print('saved figure to %s' % (outpath / (typ + '_spec.png'))) - - -def _plot_rmsmap(outpath, typ, savefig=True): - ''' - TODO document this function - ''' - - rmsmap = alfio.load_object(outpath, 'ephysQcTime' + typ.upper(), namespace='spikeglx') - - # hack to ensure a single key name - if 'times.probe_00' in rmsmap.keys(): - rmsmap['times'] = rmsmap.pop('times.probe_00') - rmsmap['rms'] = rmsmap.pop('rms.probe_00') - elif 'times.probe_01' in rmsmap.keys(): - rmsmap['times'] = rmsmap.pop('times.probe_01') - rmsmap['rms'] = rmsmap.pop('rms.probe_01') - - plt.figure(figsize=[12, 4.5]) - axim = plt.axes([0.2, 0.1, 0.7, 0.8]) - axrms = plt.axes([0.05, 0.1, 0.15, 0.8]) - axcb = plt.axes([0.92, 0.1, 0.02, 0.8]) - - axrms.plot(np.median(rmsmap['rms'], axis=0)[:-1] * 1e6, np.arange(1, rmsmap['rms'].shape[1])) - axrms.set_ylim(0, rmsmap['rms'].shape[1]) - - im = axim.imshow(20 * np.log10(rmsmap['rms'].T + 1e-15), aspect='auto', origin='lower', - extent=[rmsmap['times'][0], rmsmap['times'][-1], 0, rmsmap['rms'].shape[1]]) - axim.set_xlabel(r'Time (s)') - axrms.set_ylabel(r'Channel Number') - plt.colorbar(im, cax=axcb) - if typ == 'ap': - im.set_clim(-110, -90) - axrms.set_xlim(100, 0) - elif typ == 'lf': - im.set_clim(-100, -60) - axrms.set_xlim(500, 0) - axim.set_xlim(0, 4000) - axim.set_title(outpath) - if savefig: - plt.savefig(outpath / (typ + '_rms.png'), dpi=150) - - -# ============================== ### -# FIND THE RIGHT FILES, RUN AS SCRIPT -# ============================== ### - -if __name__ == '__main__': - if len(sys.argv) != 2: - print("Please give the folder path as an input argument!") - else: - outpath = Path(sys.argv[1]) # grab from command line input - fbin = glob.glob(os.path.join(outpath, '*.lf.bin')) - assert len(fbin) > 0 - print('fbin: %s' % fbin) - # make sure you send a path for the time being and not a string - ephysqc.extract_rmsmap(Path(fbin[0])) - _plot_spectra(outpath, 'lf') - _plot_rmsmap(outpath, 'lf') diff --git a/brainbox/quality/permutation_test.py b/brainbox/quality/permutation_test.py deleted file mode 100644 index 6a58855d8..000000000 --- a/brainbox/quality/permutation_test.py +++ /dev/null @@ -1,105 +0,0 @@ -""" -Quality control for arbitrary metrics, using permutation testing. - -Written by Sebastian Bruijns -""" - -import numpy as np -import time -import matplotlib.pyplot as plt -# TODO: take in eids and download data yourself? - - -def permut_test(data1, data2, metric, n_permut=1000, show=False, title=None): - """ - Compute the probability of observating metric difference for datasets, via permutation testing. - - We're taking absolute values of differences, because the order of dataset input shouldn't - matter - We're only computing means, what if we want to apply a more complicated function to the - permutation result? - Pay attention to always give one list (even if its just one dataset, but then it doesn't make - sense anyway...) - - Parameters - ---------- - data1 : array-like - First data set, list or array of data-entities to use for permutation test - (make data2 optional and then permutation test more similar to tuning sensitivity?) - data2 : array-like - Second data set, also list or array of data-entities to use for permutation test - metric : function, array-like -> float - Metric to use for permutation test, will be used to reduce elements of data1 and data2 - to one number - n_permut : integer (optional) - Number of perumtations to use for test - plot : Boolean (optional) - Whether or not to show a plot of the permutation distribution and a marker for the position - of the true difference in relation to this distribution - - Returns - ------- - p : float - p-value of true difference in permutation distribution - - See Also - -------- - TODO: - - Examples - -------- - TODO: - """ - # Calculate metrics and true difference between groups - print('data1') - print(data1) - metrics1 = [metric(d) for d in data1] - print('metrics1') - print(metrics1) - metrics2 = [metric(d) for d in data2] - true_diff = np.abs(np.mean(metrics1) - np.mean(metrics2)) - - # Prepare permutations - size1 = len(metrics1) - diffs = np.concatenate((metrics1, metrics2)) - permutations = np.zeros((n_permut, diffs.size), dtype=np.int32) - - # Create permutations, could be parallelized or vectorized in principle, but unclear how - indizes = np.arange(diffs.size) - for i in range(n_permut): - np.random.shuffle(indizes) - permutations[i] = indizes - - permut_diffs = np.abs(np.mean(diffs[permutations[:, :size1]], axis=1) - - np.mean(diffs[permutations[:, size1:]], axis=1)) - p = len(permut_diffs[permut_diffs > true_diff]) / n_permut - - if show or title: - plot_permut_test(permut_diffs=permut_diffs, true_diff=true_diff, p=p, title=title) - - return p - - -def plot_permut_test(permut_diffs, true_diff, p, title=None): - """Plot permutation test result.""" - n, _, _ = plt.hist(permut_diffs) - plt.plot(true_diff, np.max(n) / 20, '*r', markersize=12) - - # Prettify plot - plt.gca().spines['top'].set_visible(False) - plt.gca().spines['right'].set_visible(False) - plt.title("p = {}".format(p)) - - if title: - plt.savefig(title + '.png') - plt.close() - - -if __name__ == '__main__': - rng = np.random.RandomState(2) - data1 = rng.normal(0, 1, (23, 5)) - data2 = rng.normal(0.1, 1, (32, 5)) - t = time.time() - p = permut_test(data1, data2, np.mean, plot=True) - print(time.time() - t) - print(p) diff --git a/brainbox/spike_features.py b/brainbox/spike_features.py deleted file mode 100644 index da31cb0c3..000000000 --- a/brainbox/spike_features.py +++ /dev/null @@ -1,107 +0,0 @@ -''' -Functions that compute spike features from spike waveforms. -''' - -import numpy as np -from brainbox.io.spikeglx import extract_waveforms - - -def depth(ephys_file, spks_b, clstrs_b, chnls_b, tmplts_b, unit, n_ch=12, n_ch_probe=385, sr=30000, - dtype='int16', car=False): - ''' - Gets `n_ch` channels around a unit's channel of max amplitude, extracts all unit spike - waveforms from binary datafile for these channels, and for each spike, computes the dot - products of waveform by unit template for those channels, and computes center-of-mass of these - dot products to get spike depth estimates. - - Parameters - ---------- - ephys_file : string - The file path to the binary ephys data. - spks_b : bunch - A spikes bunch containing fields with spike information (e.g. cluster IDs, times, features, - etc.) for all spikes. - clstrs_b : bunch - A clusters bunch containing fields with cluster information (e.g. amp, ch of max amp, depth - of ch of max amp, etc.) for all clusters. - chnls_b : bunch - A channels bunch containing fields with channel information (e.g. coordinates, indices, - etc.) for all probe channels. - tmplts_b : bunch - A unit templates bunch containing fields with unit template information (e.g. template - waveforms, etc.) for all unit templates. - unit : numeric - The unit for which to return the spikes depths. - n_ch : int (optional) - The number of channels to sample around the channel of max amplitude to compute the depths. - sr : int (optional) - The sampling rate (hz) that the ephys data was acquired at. - n_ch_probe : int (optional) - The number of channels of the recording. - dtype: str (optional) - The datatype represented by the bytes in `ephys_file`. - car: bool (optional) - A flag to perform common-average-referencing before extracting waveforms. - - Returns - ------- - d : ndarray - The estimated spike depths for all spikes in `unit`. - - See Also - -------- - io.extract_waveforms - - Examples - -------- - 1) Get the spike depths for unit 1. - >>> import numpy as np - >>> import brainbox as bb - >>> import alf.io as aio - >>> import ibllib.ephys.spikes as e_spks - (*Note, if there is no 'alf' directory, make 'alf' directory from 'ks2' output directory): - >>> e_spks.ks2_to_alf(path_to_ks_out, path_to_alf_out) - # Get the necessary alf objects from an alf directory. - >>> spks_b = aio.load_object(path_to_alf_out, 'spikes') - >>> clstrs_b = aio.load_object(path_to_alf_out, 'clusters') - >>> chnls_b = aio.load_object(path_to_alf_out, 'channels') - >>> tmplts_b = aio.load_object(path_to_alf_out, 'templates') - # Compute spike depths. - >>> unit1_depths = bb.spike_features.depth(path_to_ephys_file, spks_b, clstrs_b, chnls_b, - tmplts_b, unit=1) - ''' - - # Set constants: # - n_c_ch = n_ch // 2 # number of close channels to take on either side of max channel - - # Get unit waveforms: # - # Get unit timestamps. - unit_spk_indxs = np.where(spks_b['clusters'] == unit)[0] - ts = spks_b['times'][unit_spk_indxs] - # Get `n_close_ch` channels around channel of max amplitude. - max_ch = clstrs_b['channels'][unit] - if max_ch < n_c_ch: # take only channels greater than `max_ch`. - ch = np.arange(max_ch, max_ch + n_ch) - elif (max_ch + n_c_ch) > n_ch_probe: # take only channels less than `max_ch`. - ch = np.arange(max_ch - n_ch, max_ch) - else: # take `n_c_ch` around `max_ch`. - ch = np.arange(max_ch - n_c_ch, max_ch + n_c_ch) - # Get unit template across `ch` and extract waveforms from `ephys_file`. - tmplt_wfs = tmplts_b['waveforms'] - unit_tmplt = tmplt_wfs[unit, :, ch].T - wf_t = tmplt_wfs.shape[1] / (sr / 1000) # duration (ms) of each waveform - wf = extract_waveforms(ephys_file=ephys_file, ts=ts, ch=ch, t=wf_t, sr=sr, - n_ch_probe=n_ch_probe, dtype='int16', car=car) - - # Compute center-of-mass: # - ch_depths = chnls_b['localCoordinates'][[ch], [1]] - d = np.zeros_like(ts) # depths array - # Compute normalized dot product of (waveforms,unit_template) across `ch`, - # and get center-of-mass, `c_o_m`, of these dot products (one dot for each ch) - for spk in range(len(ts)): - dot_wf_template = np.sum(wf[spk, :, :] * unit_tmplt, axis=0) - dot_wf_template += np.abs(np.min(dot_wf_template)) - dot_wf_template /= np.max(dot_wf_template) - c_o_m = (1 / np.sum(dot_wf_template)) * np.sum(dot_wf_template * ch_depths) - d[spk] = c_o_m - return d diff --git a/brainbox/tests/test_behavior.py b/brainbox/tests/test_behavior.py index 8d02d185a..493234937 100644 --- a/brainbox/tests/test_behavior.py +++ b/brainbox/tests/test_behavior.py @@ -177,58 +177,65 @@ def test_in_training(self): trials, task_protocol = self._get_trials( sess_dates=['2020-08-25', '2020-08-24', '2020-08-21']) assert (np.all(np.array(task_protocol) == 'training')) - status, info = train.get_training_status( + status, info, crit = train.get_training_status( trials, task_protocol, ephys_sess_dates=[], n_delay=0) assert (status == 'in training') + assert (crit['Criteria']['val'] == 'trained_1a') def test_trained_1a(self): trials, task_protocol = self._get_trials( sess_dates=['2020-08-26', '2020-08-25', '2020-08-24']) assert (np.all(np.array(task_protocol) == 'training')) - status, info = train.get_training_status(trials, task_protocol, ephys_sess_dates=[], - n_delay=0) + status, info, crit = train.get_training_status(trials, task_protocol, ephys_sess_dates=[], + n_delay=0) assert (status == 'trained 1a') + assert (crit['Criteria']['val'] == 'trained_1b') def test_trained_1b(self): trials, task_protocol = self._get_trials( sess_dates=['2020-08-27', '2020-08-26', '2020-08-25']) assert (np.all(np.array(task_protocol) == 'training')) - status, info = train.get_training_status(trials, task_protocol, ephys_sess_dates=[], - n_delay=0) + status, info, crit = train.get_training_status(trials, task_protocol, ephys_sess_dates=[], + n_delay=0) self.assertEqual(status, 'trained 1b') + assert (crit['Criteria']['val'] == 'ready4ephysrig') def test_training_to_bias(self): trials, task_protocol = self._get_trials( sess_dates=['2020-08-31', '2020-08-28', '2020-08-27']) assert (~np.all(np.array(task_protocol) == 'training') and np.any(np.array(task_protocol) == 'training')) - status, info = train.get_training_status(trials, task_protocol, ephys_sess_dates=[], - n_delay=0) + status, info, crit = train.get_training_status(trials, task_protocol, ephys_sess_dates=[], + n_delay=0) assert (status == 'trained 1b') + assert (crit['Criteria']['val'] == 'ready4ephysrig') def test_ready4ephys(self): sess_dates = ['2020-09-01', '2020-08-31', '2020-08-28'] trials, task_protocol = self._get_trials(sess_dates=sess_dates) assert (np.all(np.array(task_protocol) == 'biased')) - status, info = train.get_training_status(trials, task_protocol, ephys_sess_dates=[], - n_delay=0) + status, info, crit = train.get_training_status(trials, task_protocol, ephys_sess_dates=[], + n_delay=0) assert (status == 'ready4ephysrig') + assert (crit['Criteria']['val'] == 'ready4delay') def test_ready4delay(self): sess_dates = ['2020-09-03', '2020-09-02', '2020-08-31'] trials, task_protocol = self._get_trials(sess_dates=sess_dates) assert (np.all(np.array(task_protocol) == 'biased')) - status, info = train.get_training_status(trials, task_protocol, - ephys_sess_dates=['2020-09-03'], n_delay=0) + status, info, crit = train.get_training_status(trials, task_protocol, + ephys_sess_dates=['2020-09-03'], n_delay=0) assert (status == 'ready4delay') + assert (crit['Criteria']['val'] == 'ready4recording') def test_ready4recording(self): sess_dates = ['2020-09-01', '2020-08-31', '2020-08-28'] trials, task_protocol = self._get_trials(sess_dates=sess_dates) assert (np.all(np.array(task_protocol) == 'biased')) - status, info = train.get_training_status(trials, task_protocol, - ephys_sess_dates=sess_dates, n_delay=1) + status, info, crit = train.get_training_status(trials, task_protocol, + ephys_sess_dates=sess_dates, n_delay=1) assert (status == 'ready4recording') + assert (crit['Criteria']['val'] == 'ready4recording') def test_query_criterion(self): """Test for brainbox.behavior.training.query_criterion function.""" diff --git a/brainbox/video.py b/brainbox/video.py index f5cc5d54c..9750260fe 100644 --- a/brainbox/video.py +++ b/brainbox/video.py @@ -5,7 +5,8 @@ def frame_diff(frame1, frame2): """ - Outputs pythagorean distance between two frames + Outputs pythagorean distance between two frames. + :param frame1: A numpy array of pixels with a shape of either (m, n, 3) or (m, n) :param frame2: A numpy array of pixels with a shape of either (m, n, 3) or (m, n) :return: An array with a shape equal to the input frames @@ -14,17 +15,21 @@ def frame_diff(frame1, frame2): raise ValueError('Frames must have the same shape') diff32 = np.float32(frame1) - np.float32(frame2) if frame1.ndim == 3: - norm32 = (np.sqrt(diff32[:, :, 0] ** 2 + diff32[:, :, 1] ** 2 + diff32[:, :, 2] ** 2) / - np.sqrt(255 ** 2 * 3)) + norm32 = np.float32( + np.sqrt(diff32[:, :, 0] ** 2 + diff32[:, :, 1] ** 2 + diff32[:, :, 2] ** 2) / + np.sqrt(255 ** 2 * 3) + ) else: - norm32 = np.sqrt(diff32 ** 2 * 3) / np.sqrt(255 ** 2 * 3) - return np.uint8(norm32 * 255) + norm32 = np.float32(np.sqrt(diff32 ** 2 * 3) / np.sqrt(255 ** 2 * 3)) + return np.uint8(np.round(norm32 * 255)) def frame_diffs(frames, diff=1): """ - Return the difference between frames. May also take difference between more than 1 frames. - Values are normalized between 0-255. + Return the difference between frames. + + May also take difference between more than 1 frames. Values are normalized between 0-255. + :param frames: Array or list of frames, where each frame is either (y, x) or (y, x, 3). :param diff: Take difference between frames N and frames N + diff. :return: uint8 array with shape (n-diff, y, x). @@ -35,9 +40,9 @@ def frame_diffs(frames, diff=1): diff32 = frames[diff:] - frames[:-diff] # Normalize if frames.ndim == 4: - norm32 = np.sqrt((diff32 ** 2).sum(axis=3)) / np.sqrt(255 ** 2 * 3) + norm32 = np.sqrt((diff32 ** 2).sum(axis=3)) / np.sqrt(255 ** 2 * 3).astype(np.float32) else: - norm32 = np.sqrt(diff32 ** 2 * 3) / np.sqrt(255 ** 2 * 3) + norm32 = np.sqrt(diff32 ** 2 * 3) / np.sqrt(255 ** 2 * 3).astype(np.float32) return np.uint8(norm32 * 255) diff --git a/examples/data_release/data_release_brainwidemap.ipynb b/examples/data_release/data_release_brainwidemap.ipynb index 533ca0a3a..2fd5dcb01 100644 --- a/examples/data_release/data_release_brainwidemap.ipynb +++ b/examples/data_release/data_release_brainwidemap.ipynb @@ -20,7 +20,7 @@ "metadata": {}, "source": [ "## Overview of the Data\n", - "We have released data from 459 Neuropixel recording sessions, which encompass 699 probe insertions, obtained in 139 subjects performing the IBL task across 12 different laboratories. As output of spike-sorting, there are 376730 units; of which 45085 are considered to be of good quality. In total, 138 brain regions were recorded in sufficient numbers for inclusion in IBL’s analyses [(IBL et al. 2023)](https://doi.org/10.1101/2023.07.04.547681).\n", + "We have released data from 459 Neuropixel experimental sessions, which encompass 699 distinct recordings, referred to as probe insertions. Those were obtained with 139 subjects performing the IBL task across 12 different laboratories. As output of spike-sorting, there are 621,733 units; of which 75,708 are considered to be of good quality. In total, 241 brain regions were recorded in sufficient numbers for inclusion in IBL’s analyses [(IBL et al. 2023)](https://doi.org/10.1101/2023.07.04.547681).\n", "\n", "## Data structure and download\n", "The organisation of the data follows the standard IBL data structure.\n", @@ -46,8 +46,12 @@ "### Receive updates on the data\n", "To receive a notification that we released new datasets, please fill up [this form](https://forms.gle/9ex2vL1JwV4QXnf98)\n", "\n", - "### 15 February 2024\n", - "We have added data from an additional 105 recording sessions, which encompass 152 probe insertions, obtained in 24 subjects performing the IBL task. As output of spike-sorting, there are 81229 new units; of which 12319 are considered to be of good quality.\n", + "### May 15th 2024\n", + "As data acquisition spanned several years, we decided to re-run the latest spike sorting version on the full dataset to get the state of the art sorting results and ensure consistency on the full datasets.\n", + "The improvements are described in [our updated spike sorting whitepaper](https://figshare.com/articles/online_resource/Spike_sorting_pipeline_for_the_International_Brain_Laboratory/19705522?file=49783080). The new run yielded many more units, bringing the total tally to 621,733 putative neurons, of which 75,708 pass the quality controls.\n", + "\n", + "### February 15th, 2024\n", + "We have added data from an additional 105 recording sessions, which encompass 152 probe insertions, obtained in 24 subjects performing the IBL task. As output of spike-sorting, there are 81_229 new units; of which 12_319 are considered to be of good quality.\n", "\n", "We have also replaced and removed some video data. Application of additional quality control processes revealed that the video timestamps for some of the previously released data were incorrect. We corrected the video timestamps where possible (285 videos: 137 left, 148 right) and removed video data for which the correction was not possible (139 videos: 135 body, 3 left, 1 right). We also added 31 videos (16 left, 15 right). **We strongly recommend that all data analyses using video data be rerun with the data currently in the database (please be sure to clear your cache directory first).**" ] diff --git a/examples/exploring_data/data_download.ipynb b/examples/exploring_data/data_download.ipynb index bfaca800f..48d706d2d 100644 --- a/examples/exploring_data/data_download.ipynb +++ b/examples/exploring_data/data_download.ipynb @@ -37,10 +37,10 @@ "source": [ "## Installation\n", "### Environment\n", - "To use IBL data you will need a python environment with python > 3.8. To create a new environment from scratch you can install [anaconda](https://www.anaconda.com/products/distribution#download-section) and follow the instructions below to create a new python environment (more information can also be found [here](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html))\n", + "To use IBL data you will need a python environment with python > 3.10, although Python 3.12 is recommended. To create a new environment from scratch you can install [anaconda](https://www.anaconda.com/products/distribution#download-section) and follow the instructions below to create a new python environment (more information can also be found [here](https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html))\n", "\n", "```\n", - "conda create --name ibl python=3.11\n", + "conda create --name ibl python=3.12\n", "```\n", "Make sure to always activate this environment before installing or working with the IBL data\n", "```\n", @@ -138,9 +138,33 @@ "outputs": [], "source": [ "# Each session is represented by a unique experiment id (eID)\n", - "print(sessions[0])" + "print(sessions[0],)" ] }, + { + "metadata": {}, + "cell_type": "markdown", + "source": [ + "### Find recordings of a specific brain region\n", + "If we are interested in a given brain region, we can use the `search_insertions` method to find all recordings associated with that region. For example, to find all recordings associated with the **Rhomboid Nucleus (RH)** region of the thalamus." + ] + }, + { + "metadata": {}, + "cell_type": "code", + "source": [ + "# this is the query that yields the few recordings for the Rhomboid Nucleus (RH) region\n", + "insertions_rh = one.search_insertions(atlas_acronym='RH', datasets='spikes.times.npy', project='brainwide')\n", + "\n", + "# if we want to extend the search to all thalamic regions, we can do the following\n", + "insertions_th = one.search_insertions(atlas_acronym='TH', datasets='spikes.times.npy', project='brainwide')\n", + "\n", + "# the Allen brain regions parcellation is hierarchical, and searching for Thalamus will return all child Rhomboid Nucleus (RH) regions\n", + "assert set(insertions_rh).issubset(set(insertions_th))\n" + ], + "outputs": [], + "execution_count": null + }, { "cell_type": "markdown", "metadata": {}, @@ -402,9 +426,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.16" + "version": "3.11.9" } }, "nbformat": 4, - "nbformat_minor": 1 + "nbformat_minor": 4 } diff --git a/examples/loading_data/loading_spike_waveforms.ipynb b/examples/loading_data/loading_spike_waveforms.ipynb deleted file mode 100644 index 44b659980..000000000 --- a/examples/loading_data/loading_spike_waveforms.ipynb +++ /dev/null @@ -1,184 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "f73e02ee", - "metadata": {}, - "source": [ - "# Loading Spike Waveforms" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ea70eb4a", - "metadata": { - "nbsphinx": "hidden" - }, - "outputs": [], - "source": [ - "# Turn off logging and disable tqdm this is a hidden cell on docs page\n", - "import logging\n", - "import os\n", - "\n", - "logger = logging.getLogger('ibllib')\n", - "logger.setLevel(logging.CRITICAL)\n", - "\n", - "os.environ[\"TQDM_DISABLE\"] = \"1\"" - ] - }, - { - "cell_type": "markdown", - "id": "64cec921", - "metadata": {}, - "source": [ - "Sample of spike waveforms extracted during spike sorting" - ] - }, - { - "cell_type": "markdown", - "id": "dca47f09", - "metadata": {}, - "source": [ - "## Relevant Alf objects\n", - "* \\_phy_spikes_subset" - ] - }, - { - "cell_type": "markdown", - "id": "eb34d848", - "metadata": {}, - "source": [ - "## Loading" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c5d32232", - "metadata": {}, - "outputs": [], - "source": [ - "%%capture\n", - "from one.api import ONE\n", - "from brainbox.io.one import SpikeSortingLoader\n", - "from iblatlas.atlas import AllenAtlas\n", - "\n", - "one = ONE()\n", - "ba = AllenAtlas()\n", - "pid = 'da8dfec1-d265-44e8-84ce-6ae9c109b8bd' \n", - "\n", - "# Load in the spikesorting\n", - "sl = SpikeSortingLoader(pid=pid, one=one, atlas=ba)\n", - "spikes, clusters, channels = sl.load_spike_sorting()\n", - "clusters = sl.merge_clusters(spikes, clusters, channels)\n", - "\n", - "# Load the spike waveforms\n", - "spike_wfs = one.load_object(sl.eid, '_phy_spikes_subset', collection=sl.collection)" - ] - }, - { - "cell_type": "markdown", - "id": "327a23e7", - "metadata": {}, - "source": [ - "## More details\n", - "* [Description of datasets](https://docs.google.com/document/d/1OqIqqakPakHXRAwceYLwFY9gOrm8_P62XIfCTnHwstg/edit#heading=h.vcop4lz26gs9)" - ] - }, - { - "cell_type": "markdown", - "id": "257fb8b8", - "metadata": {}, - "source": [ - "## Useful modules\n", - "* COMING SOON" - ] - }, - { - "cell_type": "markdown", - "id": "157bf219", - "metadata": {}, - "source": [ - "## Exploring sample waveforms" - ] - }, - { - "cell_type": "markdown", - "id": "a617f8fb", - "metadata": {}, - "source": [ - "### Example 1: Finding the cluster ID for each sample waveform" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1ac805b6", - "metadata": {}, - "outputs": [], - "source": [ - "# Find the cluster id for each sample waveform\n", - "wf_clusterIDs = spikes['clusters'][spike_wfs['spikes']]" - ] - }, - { - "cell_type": "markdown", - "id": "baf9eb11", - "metadata": {}, - "source": [ - "### Example 2: Compute average waveform for cluster" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3d8a729c", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "\n", - "# define cluster of interest\n", - "clustID = 2\n", - "\n", - "# Find waveforms for this cluster\n", - "wf_idx = np.where(wf_clusterIDs == clustID)[0]\n", - "wfs = spike_wfs['waveforms'][wf_idx, :, :]\n", - "\n", - "# Compute average waveform on channel with max signal (chn_index 0)\n", - "wf_avg_chn_max = np.mean(wfs[:, :, 0], axis=0)" - ] - }, - { - "cell_type": "markdown", - "id": "a20b24ea", - "metadata": {}, - "source": [ - "## Other relevant examples\n", - "* COMING SOON" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.6" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/loading_data/loading_spikesorting_data.ipynb b/examples/loading_data/loading_spikesorting_data.ipynb index f711414a1..db568215b 100644 --- a/examples/loading_data/loading_spikesorting_data.ipynb +++ b/examples/loading_data/loading_spikesorting_data.ipynb @@ -43,7 +43,8 @@ "## Relevant Alf objects\n", "* channels\n", "* clusters\n", - "* spikes" + "* spikes\n", + "* waveforms" ] }, { @@ -74,9 +75,10 @@ "outputs": [], "source": [ "pid = 'da8dfec1-d265-44e8-84ce-6ae9c109b8bd' \n", - "sl = SpikeSortingLoader(pid=pid, one=one)\n", - "spikes, clusters, channels = sl.load_spike_sorting()\n", - "clusters = sl.merge_clusters(spikes, clusters, channels)" + "ssl = SpikeSortingLoader(pid=pid, one=one)\n", + "spikes, clusters, channels = ssl.load_spike_sorting()\n", + "clusters = ssl.merge_clusters(spikes, clusters, channels)\n", + "waveforms = ssl.load_spike_sorting_object('waveforms') # loads in the template waveforms" ] }, { diff --git a/ibllib/__init__.py b/ibllib/__init__.py index efa1151d9..3525165e1 100644 --- a/ibllib/__init__.py +++ b/ibllib/__init__.py @@ -2,7 +2,7 @@ import logging import warnings -__version__ = '2.39.1' +__version__ = '3.1.0' warnings.filterwarnings('always', category=DeprecationWarning, module='ibllib') # if this becomes a full-blown library we should let the logging configuration to the discretion of the dev diff --git a/ibllib/atlas/__init__.py b/ibllib/atlas/__init__.py deleted file mode 100644 index b01f8f5e7..000000000 --- a/ibllib/atlas/__init__.py +++ /dev/null @@ -1,206 +0,0 @@ -"""(DEPRECATED) A package for working with brain atlases. - -For the correct atlas documentation, see -https://docs.internationalbrainlab.org/_autosummary/iblatlas.html - -For examples and tutorials on using the IBL atlas package, see -https://docs.internationalbrainlab.org/atlas_examples.html - -.. TODO Explain differences between this package and the Allen SDK. -Much of this was adapted from the `cortexlab allenCCF repository `_. - -Terminology ------------ -There are many terms used somewhat incoherently within this API and the community at large. Below -are some definitions of the most common terms. - -* **Atlas** - A set of serial sections along different anatomical planes of a brain where each relevant brain structure is - assigned a number of coordinates to define its outline or volume. An atlas essentially comprises a set of images, annotations, - and a coordinate system. -* **Annotation** - A set of identifiers assigned to different atlas regions. -* **Mapping** - A function that maps one ordered list of brain region IDs to another, allowing one to control annotation - granularity and brain region hierarchy, or to translate brain region names from one atlas to another. The default mapping is - identity. -* **Coordinate framework** - The way in which an atlas translates image coordinates (e.g. Cartesian or sperical coordinates) to - real-world anatomical coordinates in (typically physical distance from a given landmark such as bregma, along three axes, - ML-AP-DV). -* **Reference space** - The coordinate system and annotations used by a given atlas. It is sometimes useful to compare anatomy - between atlases, which requires expressing one atlas in another's reference space. -* **Structure tree** - The hirarchy of brain regions, handled by the BrainRegions class. -* **Scaling** - Atlases typically comprise images averaged over a number of brains. Scaling allows one to account for any - consistent and measurable imgaging or tissue distortion, or to better align to an individual brain of a specific size. The - default scaling is identity. -* **Flat map** - An annotated projection of the 3D brain to 2D. -* **Slice** - A 2D section of a brain atlas volume. Typically these are coronal (cut along the medio-lateral axis), sagittal - (along the dorso-ventral axis) or transverse a.k.a. axial, horizontal (along the rostro-caudal a.k.a. anterio-posterior axis). - - -Atlases -------- -There are two principal mouse brain atlases in this module: - -1. The Allen Common Coordinate Framework (CCF) [1]_. -2. The Mouse Brain in Stereotaxic Coordinates (MBSC) 4th Edition, by Paxinos G, and Franklin KBJ [2]_, matched to - to the Allen Common Coordiante Framework by Chon et al. [3]_. - -The latter is referred to here as the 'Franklin-Paxinos atlas'. These atlases comprise a 3D array of voxels and their associated -brain region identifiers (labels) at a given resolution. The Allen Atlas can be instantiated in 10um, 25um or 50um resolution. -The Franklin-Paxinos atlas has a resolution of 10um in the ML and DV axis, and 100um in the AP axis. **TODO Mention flat maps.** - - -Scalings --------- -Additionally there are two further atlases that apply some form of scaling to the Allen CCF atlas -to account for distortion that occurs during the imaging and tissue fixation process: - -1. The Needles atlas - 40 C57BL/6J (p84) mice underwnt MRI imaging post-mortem while the brain was still in the skull, followed by - conventional Nissl histology [4]_. These mouse brain atlas images combined with segmentation (known as DSURQE) were manually - transformed onto the Allen CCF atlas to determine the scaling. -2. The MRI Toronto - 12 p65 mice MRI images were taken *in vivo* then averaged and transformed on the Allen CCF atlas to determine - the scaling [5]_. - -All scaling is currently linear. Scaling of this kind can be applied arbitrarily to better represent a specific mouse age and -sex [5]_. NB: In addition to distortions, the Allen CFF atlas is pitched down by about 5 degrees relative to a flat skull (where -bregma and lambda are at the same DV height) [6]_, however this is not currently accounted for. - - -Mappings --------- -In addition to the atlases there are also multiple brain region mappings that serve one of two purposes: 1. control the -granularity particular brain regions; 2. support differing anatomical sub-devisions or nomenclature. The two Allen atlas mappings -below were created somewhat arbirarily by Nick Steinmetz to aid in analysis: - -1. Beryl - brain atlas annotations without layer sub-divisions or certain ganglial/nucleus sub-devisisions (e.g. the core/shell - sub-division of the lateral geniculate nucleus). Fibre tracts, pia, etc. are also absent. The choice of which areas to combine - was guided partially by the computed volume of each area. This mapping is used in the brainwide map and prior papers [7]_, [8]_ - . -2. Cosmos - coarse brain atlas annotations, dividing the atlas into 10 broad areas: isocortex, olfactory areas, cortical subplate, - cerebral nuclei, thalamus, hypothalamus, midbrain, hindbrain, cerebellum and hippocampal formation. - -The names of these two mappings appear to be without meaning. - -Non-Allen mappings: - -3. Swanson - the brain atlas annotations from the Swansan rat brain flat map [9]_, mapped to the Allen atlas manually by Olivier - Winter. See `Fixtures`_ for details. - -Each mapping includes both a lateralized (suffix '-lr') and non-laterized version. The lateralized mappings assign a different ID -to structures in the right side of the brain. The Allen atlas IDs are kept intact but lateralized as follows: labels are -duplicated and IDs multiplied by -1, with the understanding that left hemisphere regions have negative IDs. There is currently no -mapping between Franklin & Paxinos and the Allen atlases. - - -Notes ------ -The Allen atlas and the CCF annotations have different release dates and versions [10]_. The annotations used by IBL are the 2017 -version. - -The IBL uses the following conventions: - -- All atlas images have dimensions (AP, ML, DV). With C-ordering this makes coronal slicing most efficient. The origin is the top - left corner of the image. -- Coordinates are provided in the order (ML AP DV) and are in meters relative to bregma. -- Left hemisphere ML coordinates are -ve; right, +ve. -- AP coordinates anterior to bregma are +ve; posterior, -ve. -- DV coordinates ventral to bregma are -ve; ventral +ve. -- Bregma was determined by asking five experimentalists to pick the voxel containing bregma on the Allen atlas and taking the - average. NB: The midline appears slightly off-center in the Allen atlas image volume. -- All left hemisphere regions have negative region IDs in all lateralized mappings. - - -Examples --------- -Below are some breif API examples. For in depth tutorials on using the IBL atlas package, see -https://docs.internationalbrainlab.org/atlas_examples.html. - -Find bregma position in indices * resolution in um - ->>> ba = AllenAtlas() ->>> bregma_index = ALLEN_CCF_LANDMARKS_MLAPDV_UM['bregma'] / ba.res_um - -Find bregma position in xyz in m (expect this to be 0 0 0) - ->>> bregma_xyz = ba.bc.i2xyz(bregma_index) - - -Fixtures --------- - -.. TODO List the data files in this package, their purpose, data types, shape, etc. -.. TODO List the remote files used by this package, e.g. annotations files, swansonpaths.json, etc. - -Local files -^^^^^^^^^^^ - -* **allen_structure_tree.csv** - TODO Document. Where does this come from? Is it modified from either structure_tree_safe.csv or - structure_tree_safe_2017.csv? -* **franklin_paxinos_structure_tree.csv** - Obtained from Supplementary Data 2 in reference [10]. -* **beryl.npy** - A 306 x 1 int32 array of Allen CCF brain region IDs generated in MATLAB [*]_. See more information see - `Mappings`_. -* **cosmos.npy** - A 10 x 1 int32 array of Allen CCF brain region IDs generated in MATLAB [*]_. See more information see - `Mappings`_. -* **swanson_regions.npy** - A 1D array of length 323 containing the Allen CCF brain region IDs -* **mappings.pqt** - A table of mappings. Each column defines a mapping, with the '-lr' suffix indicating a lateralized version. - The rows contain the correspondence of each mapping to the int64 index of the lateralized Allen structure tree. The table is - generated by ibllib.atlas.regions.BrainRegions._compute_mappings. - -Remote files -^^^^^^^^^^^^ - -* **annotation_.nrrd** - A 3D volume containing indicies of the regions in the associated - structure tree. `res_um` indicates the isometric spacing in microns. These uint16 indicies are - known as the region 'index' in the structure tree, i.e. the position of the region in the - flattened tree. -* **average_template_.nrrd** - TODO Document -* **annotation__lut_.npz** - TODO Document -* **FranklinPaxinons/annotation_.npz** - A 3D volume containing indices of the regions associated with the Franklin- - Paxinos structure tree. -* **FranklinPaxinons/average_template_.npz** - A 3D volume containing the Allen dwi image slices corresponding to - the slices in the annotation volume [*] . -* **swansonpaths.json** - The paths of a vectorized Swanson flatmap image [*]. The vectorized version was generated - from the Swanson bitmap image using the matlab contour function to find the paths for each region. The paths for each - region were then simplified using the `Ramer Douglas Peucker algorithm `_ -* **swanson2allen.npz** - TODO Document who made this, its contents, purpose and data type -* **_.nrrd** - TODO Document who made this, its contents, purpose and data type -* **gene-expression.pqt** - TODO Document who made this, its contents, purpose and data type -* **gene-expression.bin** - TODO Document who made this, its contents, purpose and data type. - -.. [*] The annotation and average template volumes were created from the images provided in Supplemtary Data 4 of Chon et al. [3]_ - and stitched together as a single volume using SimpleITK. -.. [*] output of aggType 2 in https://github.com/cortex-lab/allenCCF/blob/master/Browsing%20Functions/aggregateAcr.m -.. [*] output of aggType 1 in https://github.com/cortex-lab/allenCCF/blob/master/Browsing%20Functions/aggregateAcr.m -.. [*] the paths were generated from a bitmap of the - `BM3 rat flatmap 3.0 foldout poster `_ - in `Swanson LW (2004) Brain Maps, 3rd ed. `_ TODO where is code for this? - - -References ----------- -.. [1] © 2015 Allen Institute for Brain Science. Allen Mouse Brain Atlas (2015) with region annotations (2017). - Available from: http://download.alleninstitute.org/informatics-archive/current-release/mouse_ccf/annotation/ -.. [2] Paxinos G, and Franklin KBJ (2012) The Mouse Brain in Stereotaxic Coordinates, 4th edition (Elsevier Academic Press) -.. [3] Chon U et al (2019) Enhanced and unified anatomical labeling for a common mouse brain atlas - [doi 10.1038/s41467-019-13057-w] -.. [4] Dorr AE, Lerch JP, Spring S, Kabani N, Henkelman RM (2008). High resolution three-dimensional brain atlas using an average - magnetic resonance image of 40 adult C57Bl/6J mice. Neuroimage 42(1):60-9. [doi 10.1016/j.neuroimage.2008.03.037] -.. [5] Qiu, LR, Fernandes, DJ, Szulc-Lerch, KU et al. (2018) Mouse MRI shows brain areas relatively larger - in males emerge before those larger in females. Nat Commun 9, 2615. [doi 10.1038/s41467-018-04921-2] -.. [6] International Brain Laboratory et al. (2022) Reproducibility of in-vivo electrophysiological measurements in mice. - bioRxiv. [doi 10.1101/2022.05.09.491042] -.. [7] International Brain Laboratory et al. (2023) A Brain-Wide Map of Neural Activity during Complex Behaviour. - bioRxiv. [doi 10.1101/2023.07.04.547681] -.. [8] Findling C et al. (2023) Brain-wide representations of prior information in mouse decision-making. - bioRxiv. [doi 10.1101/2023.07.04.547684] -.. [9] Swanson LW (2018) Brain maps 4.0—Structure of the rat brain: An open access atlas with global nervous system nomenclature - ontology and flatmaps. J Comp Neurol. [doi 10.1002/cne.24381] -.. [10] Allen Mouse Common Coordinate Framework Technical White Paper (October 2017 v3) - http://help.brain-map.org/download/attachments/8323525/Mouse_Common_Coordinate_Framework.pdf - -""" -from .atlas import * # noqa -from .regions import regions_from_allen_csv -from .flatmaps import FlatMap -import warnings - -warnings.warn('ibllib.atlas is deprecated. Please install iblatlas using "pip install iblatlas" and use ' - 'this module instead', DeprecationWarning) diff --git a/ibllib/atlas/allen_structure_tree.csv b/ibllib/atlas/allen_structure_tree.csv deleted file mode 100755 index 4ffa2947e..000000000 --- a/ibllib/atlas/allen_structure_tree.csv +++ /dev/null @@ -1,1329 +0,0 @@ -id,atlas_id,name,acronym,st_level,ontology_id,hemisphere_id,weight,parent_structure_id,depth,graph_id,graph_order,structure_id_path,color_hex_triplet,neuro_name_structure_id,neuro_name_structure_id_path,failed,sphinx_id,structure_name_facet,failed_facet,safe_name -0,,void,void,,,,,,,,,,,,,,,,,void -997,-1,root,root,,1,3,8690,,0,1,0,/997/,FFFFFF,,,f,1,385153371,734881840,root -8,0,Basic cell groups and regions,grey,,1,3,8690,997,1,1,1,/997/8/,BFDAE3,,,f,2,2244697386,734881840,Basic cell groups and regions -567,70,Cerebrum,CH,,1,3,8690,8,2,1,2,/997/8/567/,B0F0FF,,,f,3,2878815794,734881840,Cerebrum -688,85,Cerebral cortex,CTX,,1,3,8690,567,3,1,3,/997/8/567/688/,B0FFB8,,,f,4,3591311804,734881840,Cerebral cortex -695,86,Cortical plate,CTXpl,,1,3,8690,688,4,1,4,/997/8/567/688/695/,70FF70,,,f,5,3945900931,734881840,Cortical plate -315,746,Isocortex,Isocortex,,1,3,8690,695,5,1,5,/997/8/567/688/695/315/,70FF71,,,f,6,2323732626,734881840,Isocortex -184,871,Frontal pole cerebral cortex,FRP,,1,3,8690,315,6,1,6,/997/8/567/688/695/315/184/,268F45,,,f,7,2565719060,734881840,Frontal pole cerebral cortex -68,998,Frontal pole layer 1,FRP1,,1,3,8690,184,7,1,7,/997/8/567/688/695/315/184/68/,268F45,,,f,8,1397862467,734881840,Frontal pole layer 1 -667,1073,Frontal pole layer 2/3,FRP2/3,,1,3,8690,184,7,1,8,/997/8/567/688/695/315/184/667/,268F45,,,f,9,4268100038,734881840,Frontal pole layer 2/3 -526157192,,Frontal pole layer 5,FRP5,,1,3,8690,184,7,1,9,/997/8/567/688/695/315/184/526157192/,268F45,,,f,10,1413248090,734881840,Frontal pole layer 5 -526157196,,Frontal pole layer 6a,FRP6a,,1,3,8690,184,7,1,10,/997/8/567/688/695/315/184/526157196/,268F45,,,f,11,1215326494,734881840,Frontal pole layer 6a -526322264,,Frontal pole layer 6b,FRP6b,,1,3,8690,184,7,1,11,/997/8/567/688/695/315/184/526322264/,268F45,,,f,12,3514382500,734881840,Frontal pole layer 6b -500,203,Somatomotor areas,MO,,1,3,8690,315,6,1,12,/997/8/567/688/695/315/500/,1F9D5A,,,f,13,356591023,734881840,Somatomotor areas -107,1003,Somatomotor areas Layer 1,MO1,,1,3,8690,500,7,1,13,/997/8/567/688/695/315/500/107/,1F9D5A,,,f,14,900612548,734881840,Somatomotor areas Layer 1 -219,1017,Somatomotor areas Layer 2/3,MO2/3,,1,3,8690,500,7,1,14,/997/8/567/688/695/315/500/219/,1F9D5A,,,f,15,1075749695,734881840,Somatomotor areas Layer 2/3 -299,1027,Somatomotor areas Layer 5,MO5,,1,3,8690,500,7,1,15,/997/8/567/688/695/315/500/299/,1F9D5A,,,f,16,851674589,734881840,Somatomotor areas Layer 5 -644,787,Somatomotor areas Layer 6a,MO6a,,1,3,8690,500,7,1,16,/997/8/567/688/695/315/500/644/,1F9D5A,,,f,17,1003126892,734881840,Somatomotor areas Layer 6a -947,825,Somatomotor areas Layer 6b,MO6b,,1,3,8690,500,7,1,17,/997/8/567/688/695/315/500/947/,1F9D5A,,,f,18,2730742230,734881840,Somatomotor areas Layer 6b -985,830,Primary motor area,MOp,,1,3,8690,500,7,1,18,/997/8/567/688/695/315/500/985/,1F9D5A,,,f,19,1852742012,734881840,Primary motor area -320,888,Primary motor area Layer 1,MOp1,,1,3,8690,985,8,1,19,/997/8/567/688/695/315/500/985/320/,1F9D5A,,,f,20,571569106,734881840,Primary motor area Layer 1 -943,966,Primary motor area Layer 2/3,MOp2/3,,1,3,8690,985,8,1,20,/997/8/567/688/695/315/500/985/943/,1F9D5A,,,f,21,2488357079,734881840,Primary motor area Layer 2/3 -648,929,Primary motor area Layer 5,MOp5,,1,3,8690,985,8,1,21,/997/8/567/688/695/315/500/985/648/,1F9D5A,,,f,22,628930507,734881840,Primary motor area Layer 5 -844,1095,Primary motor area Layer 6a,MOp6a,,1,3,8690,985,8,1,22,/997/8/567/688/695/315/500/985/844/,1F9D5A,,,f,23,3473508879,734881840,Primary motor area Layer 6a -882,1100,Primary motor area Layer 6b,MOp6b,,1,3,8690,985,8,1,23,/997/8/567/688/695/315/500/985/882/,1F9D5A,,,f,24,1442896821,734881840,Primary motor area Layer 6b -993,831,Secondary motor area,MOs,,1,3,8690,500,7,1,24,/997/8/567/688/695/315/500/993/,1F9D5A,,,f,25,1043755260,734881840,Secondary motor area -656,930,Secondary motor area layer 1,MOs1,,1,3,8690,993,8,1,25,/997/8/567/688/695/315/500/993/656/,1F9D5A,,,f,26,4032915713,734881840,Secondary motor area layer 1 -962,1110,Secondary motor area layer 2/3,MOs2/3,,1,3,8690,993,8,1,26,/997/8/567/688/695/315/500/993/962/,1F9D5A,,,f,27,3274108161,734881840,Secondary motor area layer 2/3 -767,944,Secondary motor area layer 5,MOs5,,1,3,8690,993,8,1,27,/997/8/567/688/695/315/500/993/767/,1F9D5A,,,f,28,4144803096,734881840,Secondary motor area layer 5 -1021,1117,Secondary motor area layer 6a,MOs6a,,1,3,8690,993,8,1,28,/997/8/567/688/695/315/500/993/1021/,1F9D5A,,,f,29,3489757563,734881840,Secondary motor area layer 6a -1085,1125,Secondary motor area layer 6b,MOs6b,,1,3,8690,993,8,1,29,/997/8/567/688/695/315/500/993/1085/,1F9D5A,,,f,30,1225271489,734881840,Secondary motor area layer 6b -453,339,Somatosensory areas,SS,,1,3,8690,315,6,1,30,/997/8/567/688/695/315/453/,188064,,,f,31,3016301862,734881840,Somatosensory areas -12993,,Somatosensory areas layer 1,SS1,,1,3,8690,453,7,1,31,/997/8/567/688/695/315/453/12993/,188064,,,f,32,544207135,734881840,Somatosensory areas layer 1 -12994,,Somatosensory areas layer 2/3,SS2/3,,1,3,8690,453,7,1,32,/997/8/567/688/695/315/453/12994/,188064,,,f,33,3920828838,734881840,Somatosensory areas layer 2/3 -12995,,Somatosensory areas layer 4,SS4,,1,3,8690,453,7,1,33,/997/8/567/688/695/315/453/12995/,188064,,,f,34,1342506384,734881840,Somatosensory areas layer 4 -12996,,Somatosensory areas layer 5,SS5,,1,3,8690,453,7,1,34,/997/8/567/688/695/315/453/12996/,188064,,,f,35,654456070,734881840,Somatosensory areas layer 5 -12997,,Somatosensory areas layer 6a,SS6a,,1,3,8690,453,7,1,35,/997/8/567/688/695/315/453/12997/,188064,,,f,36,719211136,734881840,Somatosensory areas layer 6a -12998,,Somatosensory areas layer 6b,SS6b,,1,3,8690,453,7,1,36,/997/8/567/688/695/315/453/12998/,188064,,,f,37,3017218874,734881840,Somatosensory areas layer 6b -322,747,Primary somatosensory area,SSp,,1,3,8690,453,7,1,37,/997/8/567/688/695/315/453/322/,188064,,,f,38,131561364,734881840,Primary somatosensory area -793,1089,Primary somatosensory area layer 1,SSp1,,1,3,8690,322,8,1,38,/997/8/567/688/695/315/453/322/793/,188064,,,f,39,1205993041,734881840,Primary somatosensory area layer 1 -346,1033,Primary somatosensory area layer 2/3,SSp2/3,,1,3,8690,322,8,1,39,/997/8/567/688/695/315/453/322/346/,188064,,,f,40,401998130,734881840,Primary somatosensory area layer 2/3 -865,1098,Primary somatosensory area layer 4,SSp4,,1,3,8690,322,8,1,40,/997/8/567/688/695/315/453/322/865/,188064,,,f,41,931859166,734881840,Primary somatosensory area layer 4 -921,1105,Primary somatosensory area layer 5,SSp5,,1,3,8690,322,8,1,41,/997/8/567/688/695/315/453/322/921/,188064,,,f,42,1082931784,734881840,Primary somatosensory area layer 5 -686,934,Primary somatosensory area layer 6a,SSp6a,,1,3,8690,322,8,1,42,/997/8/567/688/695/315/453/322/686/,188064,,,f,43,3151865880,734881840,Primary somatosensory area layer 6a -719,938,Primary somatosensory area layer 6b,SSp6b,,1,3,8690,322,8,1,43,/997/8/567/688/695/315/453/322/719/,188064,,,f,44,584382882,734881840,Primary somatosensory area layer 6b -353,751,Primary somatosensory area nose,SSp-n,,1,3,8690,322,8,1,44,/997/8/567/688/695/315/453/322/353/,188064,,,f,45,3014838097,734881840,Primary somatosensory area nose -558,635,Primary somatosensory area nose layer 1,SSp-n1,,1,3,8690,353,9,1,45,/997/8/567/688/695/315/453/322/353/558/,188064,,,f,46,3903637663,734881840,Primary somatosensory area nose layer 1 -838,953,Primary somatosensory area nose layer 2/3,SSp-n2/3,,1,3,8690,353,9,1,46,/997/8/567/688/695/315/453/322/353/838/,188064,,,f,47,2369110310,734881840,Primary somatosensory area nose layer 2/3 -654,647,Primary somatosensory area nose layer 4,SSp-n4,,1,3,8690,353,9,1,47,/997/8/567/688/695/315/453/322/353/654/,188064,,,f,48,2563128336,734881840,Primary somatosensory area nose layer 4 -702,653,Primary somatosensory area nose layer 5,SSp-n5,,1,3,8690,353,9,1,48,/997/8/567/688/695/315/453/322/353/702/,188064,,,f,49,4022406278,734881840,Primary somatosensory area nose layer 5 -889,1101,Primary somatosensory area nose layer 6a,SSp-n6a,,1,3,8690,353,9,1,49,/997/8/567/688/695/315/453/322/353/889/,188064,,,f,50,3350071961,734881840,Primary somatosensory area nose layer 6a -929,1106,Primary somatosensory area nose layer 6b,SSp-n6b,,1,3,8690,353,9,1,50,/997/8/567/688/695/315/453/322/353/929/,188064,,,f,51,1588026147,734881840,Primary somatosensory area nose layer 6b -329,748,Primary somatosensory area barrel field,SSp-bfd,,1,3,8690,322,8,1,51,/997/8/567/688/695/315/453/322/329/,188064,,,f,52,3406319794,734881840,Primary somatosensory area barrel field -981,971,Primary somatosensory area barrel field layer 1,SSp-bfd1,,1,3,8690,329,9,1,52,/997/8/567/688/695/315/453/322/329/981/,188064,,,f,53,3178183090,734881840,Primary somatosensory area barrel field layer 1 -201,1015,Primary somatosensory area barrel field layer 2/3,SSp-bfd2/3,,1,3,8690,329,9,1,53,/997/8/567/688/695/315/453/322/329/201/,188064,,,f,54,1738869888,734881840,Primary somatosensory area barrel field layer 2/3 -1047,979,Primary somatosensory area barrel field layer 4,SSp-bfd4,,1,3,8690,329,9,1,54,/997/8/567/688/695/315/453/322/329/1047/,188064,,,f,55,3439709501,734881840,Primary somatosensory area barrel field layer 4 -1070,982,Primary somatosensory area barrel field layer 5,SSp-bfd5,,1,3,8690,329,9,1,55,/997/8/567/688/695/315/453/322/329/1070/,188064,,,f,56,3120758187,734881840,Primary somatosensory area barrel field layer 5 -1038,978,Primary somatosensory area barrel field layer 6a,SSp-bfd6a,,1,3,8690,329,9,1,56,/997/8/567/688/695/315/453/322/329/1038/,188064,,,f,57,2183435549,734881840,Primary somatosensory area barrel field layer 6a -1062,981,Primary somatosensory area barrel field layer 6b,SSp-bfd6b,,1,3,8690,329,9,1,57,/997/8/567/688/695/315/453/322/329/1062/,188064,,,f,58,455984295,734881840,Primary somatosensory area barrel field layer 6b -480149202,,Rostrolateral lateral visual area,VISrll,,1,3,8690,329,9,1,58,/997/8/567/688/695/315/453/322/329/480149202/,188064,,,f,59,3664552515,734881840,Rostrolateral lateral visual area -480149206,,Rostrolateral lateral visual area layer 1,VISrll1,,1,3,8690,480149202,10,1,59,/997/8/567/688/695/315/453/322/329/480149202/480149206/,188064,,,f,60,3014325736,734881840,Rostrolateral lateral visual area layer 1 -480149210,,Rostrolateral lateral visual area layer 2/3,VISrll2/3,,1,3,8690,480149202,10,1,60,/997/8/567/688/695/315/453/322/329/480149202/480149210/,188064,,,f,61,3038984448,734881840,Rostrolateral lateral visual area layer 2/3 -480149214,,Rostrolateral lateral visual area layer 4,VISrll4,,1,3,8690,480149202,10,1,61,/997/8/567/688/695/315/453/322/329/480149202/480149214/,188064,,,f,62,3284140391,734881840,Rostrolateral lateral visual area layer 4 -480149218,,Rostrolateral lateral visual arealayer 5,VISrll5,,1,3,8690,480149202,10,1,62,/997/8/567/688/695/315/453/322/329/480149202/480149218/,188064,,,f,63,1253499024,734881840,Rostrolateral lateral visual arealayer 5 -480149222,,Rostrolateral lateral visual area layer 6a,VISrll6a,,1,3,8690,480149202,10,1,63,/997/8/567/688/695/315/453/322/329/480149202/480149222/,188064,,,f,64,160753723,734881840,Rostrolateral lateral visual area layer 6a -480149226,,Rostrolateral lateral visual area layer 6b,VISrll6b,,1,3,8690,480149202,10,1,64,/997/8/567/688/695/315/453/322/329/480149202/480149226/,188064,,,f,65,2426255745,734881840,Rostrolateral lateral visual area layer 6b -337,749,Primary somatosensory area lower limb,SSp-ll,,1,3,8690,322,8,1,65,/997/8/567/688/695/315/453/322/337/,188064,,,f,66,533428449,734881840,Primary somatosensory area lower limb -1030,977,Primary somatosensory area lower limb layer 1,SSp-ll1,,1,3,8690,337,9,1,66,/997/8/567/688/695/315/453/322/337/1030/,188064,,,f,67,1906118639,734881840,Primary somatosensory area lower limb layer 1 -113,1004,Primary somatosensory area lower limb layer 2/3,SSp-ll2/3,,1,3,8690,337,9,1,67,/997/8/567/688/695/315/453/322/337/113/,188064,,,f,68,2802480882,734881840,Primary somatosensory area lower limb layer 2/3 -1094,985,Primary somatosensory area lower limb layer 4,SSp-ll4,,1,3,8690,337,9,1,68,/997/8/567/688/695/315/453/322/337/1094/,188064,,,f,69,33028960,734881840,Primary somatosensory area lower limb layer 4 -1128,989,Primary somatosensory area lower limb layer 5,SSp-ll5,,1,3,8690,337,9,1,69,/997/8/567/688/695/315/453/322/337/1128/,188064,,,f,70,1995492342,734881840,Primary somatosensory area lower limb layer 5 -478,625,Primary somatosensory area lower limb layer 6a,SSp-ll6a,,1,3,8690,337,9,1,70,/997/8/567/688/695/315/453/322/337/478/,188064,,,f,71,2536655458,734881840,Primary somatosensory area lower limb layer 6a -510,629,Primary somatosensory area lower limb layer 6b,SSp-ll6b,,1,3,8690,337,9,1,71,/997/8/567/688/695/315/453/322/337/510/,188064,,,f,72,238754776,734881840,Primary somatosensory area lower limb layer 6b -345,750,Primary somatosensory area mouth,SSp-m,,1,3,8690,322,8,1,72,/997/8/567/688/695/315/453/322/345/,188064,,,f,73,2638278704,734881840,Primary somatosensory area mouth -878,958,Primary somatosensory area mouth layer 1,SSp-m1,,1,3,8690,345,9,1,73,/997/8/567/688/695/315/453/322/345/878/,188064,,,f,74,3213023761,734881840,Primary somatosensory area mouth layer 1 -657,1072,Primary somatosensory area mouth layer 2/3,SSp-m2/3,,1,3,8690,345,9,1,74,/997/8/567/688/695/315/453/322/345/657/,188064,,,f,75,3683406469,734881840,Primary somatosensory area mouth layer 2/3 -950,967,Primary somatosensory area mouth layer 4,SSp-m4,,1,3,8690,345,9,1,75,/997/8/567/688/695/315/453/322/345/950/,188064,,,f,76,3488099998,734881840,Primary somatosensory area mouth layer 4 -974,970,Primary somatosensory area mouth layer 5,SSp-m5,,1,3,8690,345,9,1,76,/997/8/567/688/695/315/453/322/345/974/,188064,,,f,77,3102678536,734881840,Primary somatosensory area mouth layer 5 -1102,986,Primary somatosensory area mouth layer 6a,SSp-m6a,,1,3,8690,345,9,1,77,/997/8/567/688/695/315/453/322/345/1102/,188064,,,f,78,3455683244,734881840,Primary somatosensory area mouth layer 6a -2,990,Primary somatosensory area mouth layer 6b,SSp-m6b,,1,3,8690,345,9,1,78,/997/8/567/688/695/315/453/322/345/2/,188064,,,f,79,1425070870,734881840,Primary somatosensory area mouth layer 6b -369,753,Primary somatosensory area upper limb,SSp-ul,,1,3,8690,322,8,1,79,/997/8/567/688/695/315/453/322/369/,188064,,,f,80,3184285306,734881840,Primary somatosensory area upper limb -450,1046,Primary somatosensory area upper limb layer 1,SSp-ul1,,1,3,8690,369,9,1,80,/997/8/567/688/695/315/453/322/369/450/,188064,,,f,81,2333546951,734881840,Primary somatosensory area upper limb layer 1 -854,955,Primary somatosensory area upper limb layer 2/3,SSp-ul2/3,,1,3,8690,369,9,1,81,/997/8/567/688/695/315/453/322/369/854/,188064,,,f,82,243505027,734881840,Primary somatosensory area upper limb layer 2/3 -577,1062,Primary somatosensory area upper limb layer 4,SSp-ul4,,1,3,8690,369,9,1,82,/997/8/567/688/695/315/453/322/369/577/,188064,,,f,83,4219333960,734881840,Primary somatosensory area upper limb layer 4 -625,1068,Primary somatosensory area upper limb layer 5,SSp-ul5,,1,3,8690,369,9,1,83,/997/8/567/688/695/315/453/322/369/625/,188064,,,f,84,2356862430,734881840,Primary somatosensory area upper limb layer 5 -945,1108,Primary somatosensory area upper limb layer 6a,SSp-ul6a,,1,3,8690,369,9,1,84,/997/8/567/688/695/315/453/322/369/945/,188064,,,f,85,2726127758,734881840,Primary somatosensory area upper limb layer 6a -1026,1118,Primary somatosensory area upper limb layer 6b,SSp-ul6b,,1,3,8690,369,9,1,85,/997/8/567/688/695/315/453/322/369/1026/,188064,,,f,86,997472564,734881840,Primary somatosensory area upper limb layer 6b -361,752,Primary somatosensory area trunk,SSp-tr,,1,3,8690,322,8,1,86,/997/8/567/688/695/315/453/322/361/,188064,,,f,87,2078745056,734881840,Primary somatosensory area trunk -1006,974,Primary somatosensory area trunk layer 1,SSp-tr1,,1,3,8690,361,9,1,87,/997/8/567/688/695/315/453/322/361/1006/,188064,,,f,88,396802005,734881840,Primary somatosensory area trunk layer 1 -670,649,Primary somatosensory area trunk layer 2/3,SSp-tr2/3,,1,3,8690,361,9,1,88,/997/8/567/688/695/315/453/322/361/670/,188064,,,f,89,1192883470,734881840,Primary somatosensory area trunk layer 2/3 -1086,984,Primary somatosensory area trunk layer 4,SSp-tr4,,1,3,8690,361,9,1,89,/997/8/567/688/695/315/453/322/361/1086/,188064,,,f,90,1741439834,734881840,Primary somatosensory area trunk layer 4 -1111,987,Primary somatosensory area trunk layer 5,SSp-tr5,,1,3,8690,361,9,1,90,/997/8/567/688/695/315/453/322/361/1111/,188064,,,f,91,281768908,734881840,Primary somatosensory area trunk layer 5 -9,991,Primary somatosensory area trunk layer 6a,SSp-tr6a,,1,3,8690,361,9,1,91,/997/8/567/688/695/315/453/322/361/9/,188064,,,f,92,1364764776,734881840,Primary somatosensory area trunk layer 6a -461,623,Primary somatosensory area trunk layer 6b,SSp-tr6b,,1,3,8690,361,9,1,92,/997/8/567/688/695/315/453/322/361/461/,188064,,,f,93,3360815570,734881840,Primary somatosensory area trunk layer 6b -182305689,,Primary somatosensory area unassigned,SSp-un,,1,3,8690,322,8,1,93,/997/8/567/688/695/315/453/322/182305689/,188064,,,f,94,10092796,734881840,Primary somatosensory area unassigned -182305693,,Primary somatosensory area unassigned layer 1,SSp-un1,,1,3,8690,182305689,9,1,94,/997/8/567/688/695/315/453/322/182305689/182305693/,188064,,,f,95,1824943704,734881840,Primary somatosensory area unassigned layer 1 -182305697,,Primary somatosensory area unassigned layer 2/3,SSp-un2/3,,1,3,8690,182305689,9,1,95,/997/8/567/688/695/315/453/322/182305689/182305697/,188064,,,f,96,909836824,734881840,Primary somatosensory area unassigned layer 2/3 -182305701,,Primary somatosensory area unassigned layer 4,SSp-un4,,1,3,8690,182305689,9,1,96,/997/8/567/688/695/315/453/322/182305689/182305701/,188064,,,f,97,481073879,734881840,Primary somatosensory area unassigned layer 4 -182305705,,Primary somatosensory area unassigned layer 5,SSp-un5,,1,3,8690,182305689,9,1,97,/997/8/567/688/695/315/453/322/182305689/182305705/,188064,,,f,98,1806412353,734881840,Primary somatosensory area unassigned layer 5 -182305709,,Primary somatosensory area unassigned layer 6a,SSp-un6a,,1,3,8690,182305689,9,1,98,/997/8/567/688/695/315/453/322/182305689/182305709/,188064,,,f,99,3257546540,734881840,Primary somatosensory area unassigned layer 6a -182305713,,Primary somatosensory area unassigned layer 6b,SSp-un6b,,1,3,8690,182305689,9,1,99,/997/8/567/688/695/315/453/322/182305689/182305713/,188064,,,f,100,1529046678,734881840,Primary somatosensory area unassigned layer 6b -378,754,Supplemental somatosensory area,SSs,,1,3,8690,453,7,1,100,/997/8/567/688/695/315/453/378/,188064,,,f,101,713142416,734881840,Supplemental somatosensory area -873,1099,Supplemental somatosensory area layer 1,SSs1,,1,3,8690,378,8,1,101,/997/8/567/688/695/315/453/378/873/,188064,,,f,102,697782769,734881840,Supplemental somatosensory area layer 1 -806,949,Supplemental somatosensory area layer 2/3,SSs2/3,,1,3,8690,378,8,1,102,/997/8/567/688/695/315/453/378/806/,188064,,,f,103,4288179668,734881840,Supplemental somatosensory area layer 2/3 -1035,1119,Supplemental somatosensory area layer 4,SSs4,,1,3,8690,378,8,1,103,/997/8/567/688/695/315/453/378/1035/,188064,,,f,104,1509795198,734881840,Supplemental somatosensory area layer 4 -1090,1126,Supplemental somatosensory area layer 5,SSs5,,1,3,8690,378,8,1,104,/997/8/567/688/695/315/453/378/1090/,188064,,,f,105,788174312,734881840,Supplemental somatosensory area layer 5 -862,956,Supplemental somatosensory area layer 6a,SSs6a,,1,3,8690,378,8,1,105,/997/8/567/688/695/315/453/378/862/,188064,,,f,106,1835367775,734881840,Supplemental somatosensory area layer 6a -893,960,Supplemental somatosensory area layer 6b,SSs6b,,1,3,8690,378,8,1,106,/997/8/567/688/695/315/453/378/893/,188064,,,f,107,4100730085,734881840,Supplemental somatosensory area layer 6b -1057,131,Gustatory areas,GU,,1,3,8690,315,6,1,107,/997/8/567/688/695/315/1057/,009C75,,,f,108,722362724,734881840,Gustatory areas -36,994,Gustatory areas layer 1,GU1,,1,3,8690,1057,7,1,108,/997/8/567/688/695/315/1057/36/,009C75,,,f,109,2374290445,734881840,Gustatory areas layer 1 -180,729,Gustatory areas layer 2/3,GU2/3,,1,3,8690,1057,7,1,109,/997/8/567/688/695/315/1057/180/,009C75,,,f,110,3375335567,734881840,Gustatory areas layer 2/3 -148,1008,Gustatory areas layer 4,GU4,,1,3,8690,1057,7,1,110,/997/8/567/688/695/315/1057/148/,009C75,,,f,111,4260247682,734881840,Gustatory areas layer 4 -187,1013,Gustatory areas layer 5,GU5,,1,3,8690,1057,7,1,111,/997/8/567/688/695/315/1057/187/,009C75,,,f,112,2330527764,734881840,Gustatory areas layer 5 -638,645,Gustatory areas layer 6a,GU6a,,1,3,8690,1057,7,1,112,/997/8/567/688/695/315/1057/638/,009C75,,,f,113,3653947637,734881840,Gustatory areas layer 6a -662,648,Gustatory areas layer 6b,GU6b,,1,3,8690,1057,7,1,113,/997/8/567/688/695/315/1057/662/,009C75,,,f,114,1086554447,734881840,Gustatory areas layer 6b -677,367,Visceral area,VISC,,1,3,8690,315,6,1,114,/997/8/567/688/695/315/677/,11AD83,,,f,115,3549914160,734881840,Visceral area -897,1102,Visceral area layer 1,VISC1,,1,3,8690,677,7,1,115,/997/8/567/688/695/315/677/897/,11AD83,,,f,116,1291666049,734881840,Visceral area layer 1 -1106,1128,Visceral area layer 2/3,VISC2/3,,1,3,8690,677,7,1,116,/997/8/567/688/695/315/677/1106/,11AD83,,,f,117,1410936982,734881840,Visceral area layer 2/3 -1010,1116,Visceral area layer 4,VISC4,,1,3,8690,677,7,1,117,/997/8/567/688/695/315/677/1010/,11AD83,,,f,118,1016575502,734881840,Visceral area layer 4 -1058,1122,Visceral area layer 5,VISC5,,1,3,8690,677,7,1,118,/997/8/567/688/695/315/677/1058/,11AD83,,,f,119,1267762840,734881840,Visceral area layer 5 -857,1097,Visceral area layer 6a,VISC6a,,1,3,8690,677,7,1,119,/997/8/567/688/695/315/677/857/,11AD83,,,f,120,1023764080,734881840,Visceral area layer 6a -849,1096,Visceral area layer 6b,VISC6b,,1,3,8690,677,7,1,120,/997/8/567/688/695/315/677/849/,11AD83,,,f,121,2752264138,734881840,Visceral area layer 6b -247,30,Auditory areas,AUD,,1,3,8690,315,6,1,121,/997/8/567/688/695/315/247/,19399,,,f,122,3638065128,734881840,Auditory areas -1011,833,Dorsal auditory area,AUDd,,1,3,8690,247,7,1,122,/997/8/567/688/695/315/247/1011/,19399,,,f,123,2633724239,734881840,Dorsal auditory area -527,631,Dorsal auditory area layer 1,AUDd1,,1,3,8690,1011,8,1,123,/997/8/567/688/695/315/247/1011/527/,19399,,,f,124,2852024941,734881840,Dorsal auditory area layer 1 -600,923,Dorsal auditory area layer 2/3,AUDd2/3,,1,3,8690,1011,8,1,124,/997/8/567/688/695/315/247/1011/600/,19399,,,f,125,2148227545,734881840,Dorsal auditory area layer 2/3 -678,650,Dorsal auditory area layer 4,AUDd4,,1,3,8690,1011,8,1,125,/997/8/567/688/695/315/247/1011/678/,19399,,,f,126,3650389730,734881840,Dorsal auditory area layer 4 -252,738,Dorsal auditory area layer 5,AUDd5,,1,3,8690,1011,8,1,126,/997/8/567/688/695/315/247/1011/252/,19399,,,f,127,2928916084,734881840,Dorsal auditory area layer 5 -156,1009,Dorsal auditory area layer 6a,AUDd6a,,1,3,8690,1011,8,1,127,/997/8/567/688/695/315/247/1011/156/,19399,,,f,128,2489109267,734881840,Dorsal auditory area layer 6a -243,1020,Dorsal auditory area layer 6b,AUDd6b,,1,3,8690,1011,8,1,128,/997/8/567/688/695/315/247/1011/243/,19399,,,f,129,223713961,734881840,Dorsal auditory area layer 6b -480149230,,Laterolateral anterior visual area,VISlla,,1,3,8690,1011,8,1,129,/997/8/567/688/695/315/247/1011/480149230/,19399,,,f,130,3171817402,734881840,Laterolateral anterior visual area -480149234,,Laterolateral anterior visual area layer 1,VISlla1,,1,3,8690,480149230,9,1,130,/997/8/567/688/695/315/247/1011/480149230/480149234/,19399,,,f,131,1340972930,734881840,Laterolateral anterior visual area layer 1 -480149238,,Laterolateral anterior visual area layer 2/3,VISlla2/3,,1,3,8690,480149230,9,1,131,/997/8/567/688/695/315/247/1011/480149230/480149238/,19399,,,f,132,2270613036,734881840,Laterolateral anterior visual area layer 2/3 -480149242,,Laterolateral anterior visual area layer 4,VISlla4,,1,3,8690,480149230,9,1,132,/997/8/567/688/695/315/247/1011/480149230/480149242/,19399,,,f,133,1065839373,734881840,Laterolateral anterior visual area layer 4 -480149246,,Laterolateral anterior visual arealayer 5,VISlla5,,1,3,8690,480149230,9,1,133,/997/8/567/688/695/315/247/1011/480149230/480149246/,19399,,,f,134,3025467083,734881840,Laterolateral anterior visual arealayer 5 -480149250,,Laterolateral anterior visual area layer 6a,VISlla6a,,1,3,8690,480149230,9,1,134,/997/8/567/688/695/315/247/1011/480149230/480149250/,19399,,,f,135,2752456471,734881840,Laterolateral anterior visual area layer 6a -480149254,,Laterolateral anterior visual area layer 6b,VISlla6b,,1,3,8690,480149230,9,1,135,/997/8/567/688/695/315/247/1011/480149230/480149254/,19399,,,f,136,1023833773,734881840,Laterolateral anterior visual area layer 6b -1002,832,Primary auditory area,AUDp,,1,3,8690,247,7,1,136,/997/8/567/688/695/315/247/1002/,19399,,,f,137,760301534,734881840,Primary auditory area -735,940,Primary auditory area layer 1,AUDp1,,1,3,8690,1002,8,1,137,/997/8/567/688/695/315/247/1002/735/,19399,,,f,138,340215110,734881840,Primary auditory area layer 1 -251,1021,Primary auditory area layer 2/3,AUDp2/3,,1,3,8690,1002,8,1,138,/997/8/567/688/695/315/247/1002/251/,19399,,,f,139,1321647110,734881840,Primary auditory area layer 2/3 -816,950,Primary auditory area layer 4,AUDp4,,1,3,8690,1002,8,1,139,/997/8/567/688/695/315/247/1002/816/,19399,,,f,140,1680716233,734881840,Primary auditory area layer 4 -847,954,Primary auditory area layer 5,AUDp5,,1,3,8690,1002,8,1,140,/997/8/567/688/695/315/247/1002/847/,19399,,,f,141,321552735,734881840,Primary auditory area layer 5 -954,1109,Primary auditory area layer 6a,AUDp6a,,1,3,8690,1002,8,1,141,/997/8/567/688/695/315/247/1002/954/,19399,,,f,142,945654628,734881840,Primary auditory area layer 6a -1005,1115,Primary auditory area layer 6b,AUDp6b,,1,3,8690,1002,8,1,142,/997/8/567/688/695/315/247/1002/1005/,19399,,,f,143,2706692830,734881840,Primary auditory area layer 6b -1027,835,Posterior auditory area,AUDpo,,1,3,8690,247,7,1,143,/997/8/567/688/695/315/247/1027/,19399,,,f,144,57661303,734881840,Posterior auditory area -696,935,Posterior auditory area layer 1,AUDpo1,,1,3,8690,1027,8,1,144,/997/8/567/688/695/315/247/1027/696/,19399,,,f,145,235681893,734881840,Posterior auditory area layer 1 -643,1070,Posterior auditory area layer 2/3,AUDpo2/3,,1,3,8690,1027,8,1,145,/997/8/567/688/695/315/247/1027/643/,19399,,,f,146,3738950829,734881840,Posterior auditory area layer 2/3 -759,943,Posterior auditory area layer 4,AUDpo4,,1,3,8690,1027,8,1,146,/997/8/567/688/695/315/247/1027/759/,19399,,,f,147,2120666346,734881840,Posterior auditory area layer 4 -791,947,Posterior auditory area layer 5,AUDpo5,,1,3,8690,1027,8,1,147,/997/8/567/688/695/315/247/1027/791/,19399,,,f,148,157416572,734881840,Posterior auditory area layer 5 -249,455,Posterior auditory area layer 6a,AUDpo6a,,1,3,8690,1027,8,1,148,/997/8/567/688/695/315/247/1027/249/,19399,,,f,149,2585833835,734881840,Posterior auditory area layer 6a -456,622,Posterior auditory area layer 6b,AUDpo6b,,1,3,8690,1027,8,1,149,/997/8/567/688/695/315/247/1027/456/,19399,,,f,150,53076177,734881840,Posterior auditory area layer 6b -1018,834,Ventral auditory area,AUDv,,1,3,8690,247,7,1,150,/997/8/567/688/695/315/247/1018/,19399,,,f,151,3132221761,734881840,Ventral auditory area -959,968,Ventral auditory area layer 1,AUDv1,,1,3,8690,1018,8,1,151,/997/8/567/688/695/315/247/1018/959/,19399,,,f,152,2148641706,734881840,Ventral auditory area layer 1 -755,1084,Ventral auditory area layer 2/3,AUDv2/3,,1,3,8690,1018,8,1,152,/997/8/567/688/695/315/247/1018/755/,19399,,,f,153,4223622095,734881840,Ventral auditory area layer 2/3 -990,972,Ventral auditory area layer 4,AUDv4,,1,3,8690,1018,8,1,153,/997/8/567/688/695/315/247/1018/990/,19399,,,f,154,4034617125,734881840,Ventral auditory area layer 4 -1023,976,Ventral auditory area layer 5,AUDv5,,1,3,8690,1018,8,1,154,/997/8/567/688/695/315/247/1018/1023/,19399,,,f,155,2273079219,734881840,Ventral auditory area layer 5 -520,630,Ventral auditory area layer 6a,AUDv6a,,1,3,8690,1018,8,1,155,/997/8/567/688/695/315/247/1018/520/,19399,,,f,156,2440393689,734881840,Ventral auditory area layer 6a -598,640,Ventral auditory area layer 6b,AUDv6b,,1,3,8690,1018,8,1,156,/997/8/567/688/695/315/247/1018/598/,19399,,,f,157,142352995,734881840,Ventral auditory area layer 6b -669,366,Visual areas,VIS,,1,3,8690,315,6,1,157,/997/8/567/688/695/315/669/,08858C,,,f,158,3978948604,734881840,Visual areas -801,1090,Visual areas layer 1,VIS1,,1,3,8690,669,7,1,158,/997/8/567/688/695/315/669/801/,08858C,,,f,159,3577010707,734881840,Visual areas layer 1 -561,1060,Visual areas layer 2/3,VIS2/3,,1,3,8690,669,7,1,159,/997/8/567/688/695/315/669/561/,08858C,,,f,160,3921304241,734881840,Visual areas layer 2/3 -913,1104,Visual areas layer 4,VIS4,,1,3,8690,669,7,1,160,/997/8/567/688/695/315/669/913/,08858C,,,f,161,2774412956,734881840,Visual areas layer 4 -937,1107,Visual areas layer 5,VIS5,,1,3,8690,669,7,1,161,/997/8/567/688/695/315/669/937/,08858C,,,f,162,3529055754,734881840,Visual areas layer 5 -457,1047,Visual areas layer 6a,VIS6a,,1,3,8690,669,7,1,162,/997/8/567/688/695/315/669/457/,08858C,,,f,163,597515648,734881840,Visual areas layer 6a -497,1052,Visual areas layer 6b,VIS6b,,1,3,8690,669,7,1,163,/997/8/567/688/695/315/669/497/,08858C,,,f,164,3130264634,734881840,Visual areas layer 6b -402,757,Anterolateral visual area,VISal,,1,3,8690,669,7,1,164,/997/8/567/688/695/315/669/402/,08858C,,,f,165,1250787960,734881840,Anterolateral visual area -1074,1124,Anterolateral visual area layer 1,VISal1,,1,3,8690,402,8,1,165,/997/8/567/688/695/315/669/402/1074/,08858C,,,f,166,2830003304,734881840,Anterolateral visual area layer 1 -905,1103,Anterolateral visual area layer 2/3,VISal2/3,,1,3,8690,402,8,1,166,/997/8/567/688/695/315/669/402/905/,08858C,,,f,167,125014447,734881840,Anterolateral visual area layer 2/3 -1114,1129,Anterolateral visual area layer 4,VISal4,,1,3,8690,402,8,1,167,/997/8/567/688/695/315/669/402/1114/,08858C,,,f,168,3636762855,734881840,Anterolateral visual area layer 4 -233,453,Anterolateral visual area layer 5,VISal5,,1,3,8690,402,8,1,168,/997/8/567/688/695/315/669/402/233/,08858C,,,f,169,2948835441,734881840,Anterolateral visual area layer 5 -601,1065,Anterolateral visual area layer 6a,VISal6a,,1,3,8690,402,8,1,169,/997/8/567/688/695/315/669/402/601/,08858C,,,f,170,3828838274,734881840,Anterolateral visual area layer 6a -649,1071,Anterolateral visual area layer 6b,VISal6b,,1,3,8690,402,8,1,170,/997/8/567/688/695/315/669/402/649/,08858C,,,f,171,2101231160,734881840,Anterolateral visual area layer 6b -394,756,Anteromedial visual area,VISam,,1,3,8690,669,7,1,171,/997/8/567/688/695/315/669/394/,08858C,,,f,172,1045871632,734881840,Anteromedial visual area -281,1025,Anteromedial visual area layer 1,VISam1,,1,3,8690,394,8,1,172,/997/8/567/688/695/315/669/394/281/,08858C,,,f,173,660054922,734881840,Anteromedial visual area layer 1 -1066,1123,Anteromedial visual area layer 2/3,VISam2/3,,1,3,8690,394,8,1,173,/997/8/567/688/695/315/669/394/1066/,08858C,,,f,174,1625313305,734881840,Anteromedial visual area layer 2/3 -401,1040,Anteromedial visual area layer 4,VISam4,,1,3,8690,394,8,1,174,/997/8/567/688/695/315/669/394/401/,08858C,,,f,175,1463637765,734881840,Anteromedial visual area layer 4 -433,1044,Anteromedial visual area layer 5,VISam5,,1,3,8690,394,8,1,175,/997/8/567/688/695/315/669/394/433/,08858C,,,f,176,540698515,734881840,Anteromedial visual area layer 5 -1046,696,Anteromedial visual area layer 6a,VISam6a,,1,3,8690,394,8,1,176,/997/8/567/688/695/315/669/394/1046/,08858C,,,f,177,2864452889,734881840,Anteromedial visual area layer 6a -441,762,Anteromedial visual area layer 6b,VISam6b,,1,3,8690,394,8,1,177,/997/8/567/688/695/315/669/394/441/,08858C,,,f,178,867517603,734881840,Anteromedial visual area layer 6b -409,758,Lateral visual area,VISl,,1,3,8690,669,7,1,178,/997/8/567/688/695/315/669/409/,08858C,,,f,179,1805245805,734881840,Lateral visual area -421,618,Lateral visual area layer 1,VISl1,,1,3,8690,409,8,1,179,/997/8/567/688/695/315/669/409/421/,08858C,,,f,180,764316736,734881840,Lateral visual area layer 1 -973,687,Lateral visual area layer 2/3,VISl2/3,,1,3,8690,409,8,1,180,/997/8/567/688/695/315/669/409/973/,08858C,,,f,181,4196685917,734881840,Lateral visual area layer 2/3 -573,637,Lateral visual area layer 4,VISl4,,1,3,8690,409,8,1,181,/997/8/567/688/695/315/669/409/573/,08858C,,,f,182,1575254223,734881840,Lateral visual area layer 4 -613,642,Lateral visual area layer 5,VISl5,,1,3,8690,409,8,1,182,/997/8/567/688/695/315/669/409/613/,08858C,,,f,183,719538265,734881840,Lateral visual area layer 5 -74,999,Lateral visual area layer 6a,VISl6a,,1,3,8690,409,8,1,183,/997/8/567/688/695/315/669/409/74/,08858C,,,f,184,3506956184,734881840,Lateral visual area layer 6a -121,1005,Lateral visual area layer 6b,VISl6b,,1,3,8690,409,8,1,184,/997/8/567/688/695/315/669/409/121/,08858C,,,f,185,1208923682,734881840,Lateral visual area layer 6b -385,755,Primary visual area,VISp,,1,3,8690,669,7,1,185,/997/8/567/688/695/315/669/385/,08858C,,,f,186,3425643282,734881840,Primary visual area -593,1064,Primary visual area layer 1,VISp1,,1,3,8690,385,8,1,186,/997/8/567/688/695/315/669/385/593/,08858C,,,f,187,1371845489,734881840,Primary visual area layer 1 -821,951,Primary visual area layer 2/3,VISp2/3,,1,3,8690,385,8,1,187,/997/8/567/688/695/315/669/385/821/,08858C,,,f,188,2317291160,734881840,Primary visual area layer 2/3 -721,1080,Primary visual area layer 4,VISp4,,1,3,8690,385,8,1,188,/997/8/567/688/695/315/669/385/721/,08858C,,,f,189,565069822,734881840,Primary visual area layer 4 -778,1087,Primary visual area layer 5,VISp5,,1,3,8690,385,8,1,189,/997/8/567/688/695/315/669/385/778/,08858C,,,f,190,1453946728,734881840,Primary visual area layer 5 -33,428,Primary visual area layer 6a,VISp6a,,1,3,8690,385,8,1,190,/997/8/567/688/695/315/669/385/33/,08858C,,,f,191,2158341533,734881840,Primary visual area layer 6a -305,462,Primary visual area layer 6b,VISp6b,,1,3,8690,385,8,1,191,/997/8/567/688/695/315/669/385/305/,08858C,,,f,192,430767143,734881840,Primary visual area layer 6b -425,760,Posterolateral visual area,VISpl,,1,3,8690,669,7,1,192,/997/8/567/688/695/315/669/425/,08858C,,,f,193,3499952040,734881840,Posterolateral visual area -750,942,Posterolateral visual area layer 1,VISpl1,,1,3,8690,425,8,1,193,/997/8/567/688/695/315/669/425/750/,08858C,,,f,194,3976061451,734881840,Posterolateral visual area layer 1 -269,882,Posterolateral visual area layer 2/3,VISpl2/3,,1,3,8690,425,8,1,194,/997/8/567/688/695/315/669/425/269/,08858C,,,f,195,1134773183,734881840,Posterolateral visual area layer 2/3 -869,957,Posterolateral visual area layer 4,VISpl4,,1,3,8690,425,8,1,195,/997/8/567/688/695/315/669/425/869/,08858C,,,f,196,2627147396,734881840,Posterolateral visual area layer 4 -902,961,Posterolateral visual area layer 5,VISpl5,,1,3,8690,425,8,1,196,/997/8/567/688/695/315/669/425/902/,08858C,,,f,197,3952092690,734881840,Posterolateral visual area layer 5 -377,1037,Posterolateral visual area layer 6a,VISpl6a,,1,3,8690,425,8,1,197,/997/8/567/688/695/315/669/425/377/,08858C,,,f,198,818416878,734881840,Posterolateral visual area layer 6a -393,1039,Posterolateral visual area layer 6b,VISpl6b,,1,3,8690,425,8,1,198,/997/8/567/688/695/315/669/425/393/,08858C,,,f,199,2848021844,734881840,Posterolateral visual area layer 6b -533,915,posteromedial visual area,VISpm,,1,3,8690,669,7,1,199,/997/8/567/688/695/315/669/533/,08858C,,,f,200,558797901,734881840,posteromedial visual area -805,383,posteromedial visual area layer 1,VISpm1,,1,3,8690,533,8,1,200,/997/8/567/688/695/315/669/533/805/,08858C,,,f,201,403944131,734881840,posteromedial visual area layer 1 -41,995,posteromedial visual area layer 2/3,VISpm2/3,,1,3,8690,533,8,1,201,/997/8/567/688/695/315/669/533/41/,08858C,,,f,202,736869347,734881840,posteromedial visual area layer 2/3 -501,628,posteromedial visual area layer 4,VISpm4,,1,3,8690,533,8,1,202,/997/8/567/688/695/315/669/533/501/,08858C,,,f,203,1752778316,734881840,posteromedial visual area layer 4 -565,636,posteromedial visual area layer 5,VISpm5,,1,3,8690,533,8,1,203,/997/8/567/688/695/315/669/533/565/,08858C,,,f,204,528381658,734881840,posteromedial visual area layer 5 -257,456,posteromedial visual area layer 6a,VISpm6a,,1,3,8690,533,8,1,204,/997/8/567/688/695/315/669/533/257/,08858C,,,f,205,2776868924,734881840,posteromedial visual area layer 6a -469,624,posteromedial visual area layer 6b,VISpm6b,,1,3,8690,533,8,1,205,/997/8/567/688/695/315/669/533/469/,08858C,,,f,206,1015740806,734881840,posteromedial visual area layer 6b -312782574,,Laterointermediate area,VISli,,1,3,8690,669,7,1,206,/997/8/567/688/695/315/669/312782574/,08858C,,,f,207,2157470672,734881840,Laterointermediate area -312782578,,Laterointermediate area layer 1,VISli1,,1,3,8690,312782574,8,1,207,/997/8/567/688/695/315/669/312782574/312782578/,08858C,,,f,208,2221891232,734881840,Laterointermediate area layer 1 -312782582,,Laterointermediate area layer 2/3,VISli2/3,,1,3,8690,312782574,8,1,208,/997/8/567/688/695/315/669/312782574/312782582/,08858C,,,f,209,3431444904,734881840,Laterointermediate area layer 2/3 -312782586,,Laterointermediate area layer 4,VISli4,,1,3,8690,312782574,8,1,209,/997/8/567/688/695/315/669/312782574/312782586/,08858C,,,f,210,4094011951,734881840,Laterointermediate area layer 4 -312782590,,Laterointermediate area layer 5,VISli5,,1,3,8690,312782574,8,1,210,/997/8/567/688/695/315/669/312782574/312782590/,08858C,,,f,211,2197985977,734881840,Laterointermediate area layer 5 -312782594,,Laterointermediate area layer 6a,VISli6a,,1,3,8690,312782574,8,1,211,/997/8/567/688/695/315/669/312782574/312782594/,08858C,,,f,212,1906631730,734881840,Laterointermediate area layer 6a -312782598,,Laterointermediate area layer 6b,VISli6b,,1,3,8690,312782574,8,1,212,/997/8/567/688/695/315/669/312782574/312782598/,08858C,,,f,213,3903698312,734881840,Laterointermediate area layer 6b -312782628,,Postrhinal area,VISpor,,1,3,8690,669,7,1,213,/997/8/567/688/695/315/669/312782628/,08858C,,,f,214,2538084619,734881840,Postrhinal area -312782632,,Postrhinal area layer 1,VISpor1,,1,3,8690,312782628,8,1,214,/997/8/567/688/695/315/669/312782628/312782632/,08858C,,,f,215,1476324402,734881840,Postrhinal area layer 1 -312782636,,Postrhinal area layer 2/3,VISpor2/3,,1,3,8690,312782628,8,1,215,/997/8/567/688/695/315/669/312782628/312782636/,08858C,,,f,216,2862569473,734881840,Postrhinal area layer 2/3 -312782640,,Postrhinal area layer 4,VISpor4,,1,3,8690,312782628,8,1,216,/997/8/567/688/695/315/669/312782628/312782640/,08858C,,,f,217,664017085,734881840,Postrhinal area layer 4 -312782644,,Postrhinal area layer 5,VISpor5,,1,3,8690,312782628,8,1,217,/997/8/567/688/695/315/669/312782628/312782644/,08858C,,,f,218,1351821355,734881840,Postrhinal area layer 5 -312782648,,Postrhinal area layer 6a,VISpor6a,,1,3,8690,312782628,8,1,218,/997/8/567/688/695/315/669/312782628/312782648/,08858C,,,f,219,1870039016,734881840,Postrhinal area layer 6a -312782652,,Postrhinal area layer 6b,VISpor6b,,1,3,8690,312782628,8,1,219,/997/8/567/688/695/315/669/312782628/312782652/,08858C,,,f,220,4135573074,734881840,Postrhinal area layer 6b -31,3,Anterior cingulate area,ACA,,1,3,8690,315,6,1,220,/997/8/567/688/695/315/31/,40A666,,,f,221,758743580,734881840,Anterior cingulate area -572,1061,Anterior cingulate area layer 1,ACA1,,1,3,8690,31,7,1,221,/997/8/567/688/695/315/31/572/,40A666,,,f,222,1447442455,734881840,Anterior cingulate area layer 1 -1053,1121,Anterior cingulate area layer 2/3,ACA2/3,,1,3,8690,31,7,1,222,/997/8/567/688/695/315/31/1053/,40A666,,,f,223,3285360531,734881840,Anterior cingulate area layer 2/3 -739,1082,Anterior cingulate area layer 5,ACA5,,1,3,8690,31,7,1,223,/997/8/567/688/695/315/31/739/,40A666,,,f,224,1361837070,734881840,Anterior cingulate area layer 5 -179,1012,Anterior cingulate area layer 6a,ACA6a,,1,3,8690,31,7,1,224,/997/8/567/688/695/315/31/179/,40A666,,,f,225,611576699,734881840,Anterior cingulate area layer 6a -227,1018,Anterior cingulate area layer 6b,ACA6b,,1,3,8690,31,7,1,225,/997/8/567/688/695/315/31/227/,40A666,,,f,226,3178937025,734881840,Anterior cingulate area layer 6b -39,4,Anterior cingulate area dorsal part,ACAd,,1,3,8690,31,7,1,226,/997/8/567/688/695/315/31/39/,40A666,,,f,227,1697985147,734881840,Anterior cingulate area dorsal part -935,965,Anterior cingulate area dorsal part layer 1,ACAd1,,1,3,8690,39,8,1,227,/997/8/567/688/695/315/31/39/935/,40A666,,,f,228,3009154534,734881840,Anterior cingulate area dorsal part layer 1 -211,1016,Anterior cingulate area dorsal part layer 2/3,ACAd2/3,,1,3,8690,39,8,1,228,/997/8/567/688/695/315/31/39/211/,40A666,,,f,229,2563141206,734881840,Anterior cingulate area dorsal part layer 2/3 -1015,975,Anterior cingulate area dorsal part layer 5,ACAd5,,1,3,8690,39,8,1,229,/997/8/567/688/695/315/31/39/1015/,40A666,,,f,230,3023161855,734881840,Anterior cingulate area dorsal part layer 5 -919,963,Anterior cingulate area dorsal part layer 6a,ACAd6a,,1,3,8690,39,8,1,230,/997/8/567/688/695/315/31/39/919/,40A666,,,f,231,3995874244,734881840,Anterior cingulate area dorsal part layer 6a -927,964,Anterior cingulate area dorsal part layer 6b,ACAd6b,,1,3,8690,39,8,1,231,/997/8/567/688/695/315/31/39/927/,40A666,,,f,232,1998938750,734881840,Anterior cingulate area dorsal part layer 6b -48,5,Anterior cingulate area ventral part,ACAv,,1,3,8690,31,7,1,232,/997/8/567/688/695/315/31/48/,40A666,,,f,233,1783773415,734881840,Anterior cingulate area ventral part -588,1063,Anterior cingulate area ventral part layer 1,ACAv1,,1,3,8690,48,8,1,233,/997/8/567/688/695/315/31/48/588/,40A666,,,f,234,4171389733,734881840,Anterior cingulate area ventral part layer 1 -296,885,Anterior cingulate area ventral part layer 2/3,ACAv2/3,,1,3,8690,48,8,1,234,/997/8/567/688/695/315/31/48/296/,40A666,,,f,235,4195964388,734881840,Anterior cingulate area ventral part layer 2/3 -772,1086,Anterior cingulate area ventral part layer 5,ACAv5,,1,3,8690,48,8,1,235,/997/8/567/688/695/315/31/48/772/,40A666,,,f,236,4291796796,734881840,Anterior cingulate area ventral part layer 5 -810,1091,Anterior cingulate area ventral part 6a,ACAv6a,,1,3,8690,48,8,1,236,/997/8/567/688/695/315/31/48/810/,40A666,,,f,237,1257379109,734881840,Anterior cingulate area ventral part 6a -819,1092,Anterior cingulate area ventral part 6b,ACAv6b,,1,3,8690,48,8,1,237,/997/8/567/688/695/315/31/48/819/,40A666,,,f,238,3556459679,734881840,Anterior cingulate area ventral part 6b -972,262,Prelimbic area,PL,,1,3,8690,315,6,1,238,/997/8/567/688/695/315/972/,2FA850,,,f,239,1936208719,734881840,Prelimbic area -171,1011,Prelimbic area layer 1,PL1,,1,3,8690,972,7,1,239,/997/8/567/688/695/315/972/171/,2FA850,,,f,240,1260135134,734881840,Prelimbic area layer 1 -195,1014,Prelimbic area layer 2,PL2,,1,3,8690,972,7,1,240,/997/8/567/688/695/315/972/195/,2FA850,,,f,241,3524621156,734881840,Prelimbic area layer 2 -304,886,Prelimbic area layer 2/3,PL2/3,,1,3,8690,972,7,1,241,/997/8/567/688/695/315/972/304/,2FA850,,,f,242,612898740,734881840,Prelimbic area layer 2/3 -363,1035,Prelimbic area layer 5,PL5,,1,3,8690,972,7,1,242,/997/8/567/688/695/315/972/363/,2FA850,,,f,243,1282533063,734881840,Prelimbic area layer 5 -84,1000,Prelimbic area layer 6a,PL6a,,1,3,8690,972,7,1,243,/997/8/567/688/695/315/972/84/,2FA850,,,f,244,3335965557,734881840,Prelimbic area layer 6a -132,1006,Prelimbic area layer 6b,PL6b,,1,3,8690,972,7,1,244,/997/8/567/688/695/315/972/132/,2FA850,,,f,245,1608489679,734881840,Prelimbic area layer 6b -44,146,Infralimbic area,ILA,,1,3,8690,315,6,1,245,/997/8/567/688/695/315/44/,59B363,,,f,246,1110609938,734881840,Infralimbic area -707,1078,Infralimbic area layer 1,ILA1,,1,3,8690,44,7,1,246,/997/8/567/688/695/315/44/707/,59B363,,,f,247,3257448349,734881840,Infralimbic area layer 1 -747,1083,Infralimbic area layer 2,ILA2,,1,3,8690,44,7,1,247,/997/8/567/688/695/315/44/747/,59B363,,,f,248,1528948263,734881840,Infralimbic area layer 2 -556,1059,Infralimbic area layer 2/3,ILA2/3,,1,3,8690,44,7,1,248,/997/8/567/688/695/315/44/556/,59B363,,,f,249,2142889357,734881840,Infralimbic area layer 2/3 -827,1093,Infralimbic area layer 5,ILA5,,1,3,8690,44,7,1,249,/997/8/567/688/695/315/44/827/,59B363,,,f,250,3309663108,734881840,Infralimbic area layer 5 -1054,980,Infralimbic area layer 6a,ILA6a,,1,3,8690,44,7,1,250,/997/8/567/688/695/315/44/1054/,59B363,,,f,251,696971210,734881840,Infralimbic area layer 6a -1081,983,Infralimbic area layer 6b,ILA6b,,1,3,8690,44,7,1,251,/997/8/567/688/695/315/44/1081/,59B363,,,f,252,2961423984,734881840,Infralimbic area layer 6b -714,230,Orbital area,ORB,,1,3,8690,315,6,1,252,/997/8/567/688/695/315/714/,248A5E,,,f,253,4148313092,734881840,Orbital area -264,881,Orbital area layer 1,ORB1,,1,3,8690,714,7,1,253,/997/8/567/688/695/315/714/264/,248A5E,,,f,254,737328270,734881840,Orbital area layer 1 -492,1051,Orbital area layer 2/3,ORB2/3,,1,3,8690,714,7,1,254,/997/8/567/688/695/315/714/492/,248A5E,,,f,255,2307167309,734881840,Orbital area layer 2/3 -352,892,Orbital area layer 5,ORB5,,1,3,8690,714,7,1,255,/997/8/567/688/695/315/714/352/,248A5E,,,f,256,748648599,734881840,Orbital area layer 5 -476,1049,Orbital area layer 6a,ORB6a,,1,3,8690,714,7,1,256,/997/8/567/688/695/315/714/476/,248A5E,,,f,257,2916971551,734881840,Orbital area layer 6a -516,1054,Orbital area layer 6b,ORB6b,,1,3,8690,714,7,1,257,/997/8/567/688/695/315/714/516/,248A5E,,,f,258,886318501,734881840,Orbital area layer 6b -723,231,Orbital area lateral part,ORBl,,1,3,8690,714,7,1,258,/997/8/567/688/695/315/714/723/,248A5E,,,f,259,1366834321,734881840,Orbital area lateral part -448,621,Orbital area lateral part layer 1,ORBl1,,1,3,8690,723,8,1,259,/997/8/567/688/695/315/714/723/448/,248A5E,,,f,260,370428134,734881840,Orbital area lateral part layer 1 -412,1041,Orbital area lateral part layer 2/3,ORBl2/3,,1,3,8690,723,8,1,260,/997/8/567/688/695/315/714/723/412/,248A5E,,,f,261,2658172417,734881840,Orbital area lateral part layer 2/3 -630,644,Orbital area lateral part layer 5,ORBl5,,1,3,8690,723,8,1,261,/997/8/567/688/695/315/714/723/630/,248A5E,,,f,262,293178623,734881840,Orbital area lateral part layer 5 -440,620,Orbital area lateral part layer 6a,ORBl6a,,1,3,8690,723,8,1,262,/997/8/567/688/695/315/714/723/440/,248A5E,,,f,263,4001987457,734881840,Orbital area lateral part layer 6a -488,626,Orbital area lateral part layer 6b,ORBl6b,,1,3,8690,723,8,1,263,/997/8/567/688/695/315/714/723/488/,248A5E,,,f,264,2004888123,734881840,Orbital area lateral part layer 6b -731,232,Orbital area medial part,ORBm,,1,3,8690,714,7,1,264,/997/8/567/688/695/315/714/731/,248A5E,,,f,265,3012751712,734881840,Orbital area medial part -484,1050,Orbital area medial part layer 1,ORBm1,,1,3,8690,731,8,1,265,/997/8/567/688/695/315/714/731/484/,248A5E,,,f,266,1842613794,734881840,Orbital area medial part layer 1 -524,1055,Orbital area medial part layer 2,ORBm2,,1,3,8690,731,8,1,266,/997/8/567/688/695/315/714/731/524/,248A5E,,,f,267,4108148632,734881840,Orbital area medial part layer 2 -582,638,Orbital area medial part layer 2/3,ORBm2/3,,1,3,8690,731,8,1,267,/997/8/567/688/695/315/714/731/582/,248A5E,,,f,268,2925130542,734881840,Orbital area medial part layer 2/3 -620,1067,Orbital area medial part layer 5,ORBm5,,1,3,8690,731,8,1,268,/997/8/567/688/695/315/714/731/620/,248A5E,,,f,269,1790560827,734881840,Orbital area medial part layer 5 -910,962,Orbital area medial part layer 6a,ORBm6a,,1,3,8690,731,8,1,269,/997/8/567/688/695/315/714/731/910/,248A5E,,,f,270,1929100654,734881840,Orbital area medial part layer 6a -527696977,,Orbital area medial part layer 6b,ORBm6b,,1,3,8690,731,8,1,270,/997/8/567/688/695/315/714/731/527696977/,248A5E,,,f,271,3958566100,734881840,Orbital area medial part layer 6b -738,233,Orbital area ventral part,ORBv,,1,3,8690,714,7,1,271,/997/8/567/688/695/315/714/738/,248A5E,,,f,272,2360937885,734881840,Orbital area ventral part -746,234,Orbital area ventrolateral part,ORBvl,,1,3,8690,714,7,1,272,/997/8/567/688/695/315/714/746/,248A5E,,,f,273,981615620,734881840,Orbital area ventrolateral part -969,1111,Orbital area ventrolateral part layer 1,ORBvl1,,1,3,8690,746,8,1,273,/997/8/567/688/695/315/714/746/969/,248A5E,,,f,274,4095217692,734881840,Orbital area ventrolateral part layer 1 -288,884,Orbital area ventrolateral part layer 2/3,ORBvl2/3,,1,3,8690,746,8,1,274,/997/8/567/688/695/315/714/746/288/,248A5E,,,f,275,361975036,734881840,Orbital area ventrolateral part layer 2/3 -1125,1130,Orbital area ventrolateral part layer 5,ORBvl5,,1,3,8690,746,8,1,275,/997/8/567/688/695/315/714/746/1125/,248A5E,,,f,276,4084585477,734881840,Orbital area ventrolateral part layer 5 -608,924,Orbital area ventrolateral part layer 6a,ORBvl6a,,1,3,8690,746,8,1,276,/997/8/567/688/695/315/714/746/608/,248A5E,,,f,277,3003346139,734881840,Orbital area ventrolateral part layer 6a -680,933,Orbital area ventrolateral part layer 6b,ORBvl6b,,1,3,8690,746,8,1,277,/997/8/567/688/695/315/714/746/680/,248A5E,,,f,278,705314145,734881840,Orbital area ventrolateral part layer 6b -95,11,Agranular insular area,AI,,1,3,8690,315,6,1,278,/997/8/567/688/695/315/95/,219866,,,f,279,3198937984,734881840,Agranular insular area -104,12,Agranular insular area dorsal part,AId,,1,3,8690,95,7,1,279,/997/8/567/688/695/315/95/104/,219866,,,f,280,289370996,734881840,Agranular insular area dorsal part -996,1114,Agranular insular area dorsal part layer 1,AId1,,1,3,8690,104,8,1,280,/997/8/567/688/695/315/95/104/996/,219866,,,f,281,633930990,734881840,Agranular insular area dorsal part layer 1 -328,889,Agranular insular area dorsal part layer 2/3,AId2/3,,1,3,8690,104,8,1,281,/997/8/567/688/695/315/95/104/328/,219866,,,f,282,700697199,734881840,Agranular insular area dorsal part layer 2/3 -1101,1127,Agranular insular area dorsal part layer 5,AId5,,1,3,8690,104,8,1,282,/997/8/567/688/695/315/95/104/1101/,219866,,,f,283,581222647,734881840,Agranular insular area dorsal part layer 5 -783,946,Agranular insular area dorsal part layer 6a,AId6a,,1,3,8690,104,8,1,283,/997/8/567/688/695/315/95/104/783/,219866,,,f,284,3764465407,734881840,Agranular insular area dorsal part layer 6a -831,952,Agranular insular area dorsal part layer 6b,AId6b,,1,3,8690,104,8,1,284,/997/8/567/688/695/315/95/104/831/,219866,,,f,285,2036891461,734881840,Agranular insular area dorsal part layer 6b -111,13,Agranular insular area posterior part,AIp,,1,3,8690,95,7,1,285,/997/8/567/688/695/315/95/111/,219866,,,f,286,1382517995,734881840,Agranular insular area posterior part -120,863,Agranular insular area posterior part layer 1,AIp1,,1,3,8690,111,8,1,286,/997/8/567/688/695/315/95/111/120/,219866,,,f,287,3201384576,734881840,Agranular insular area posterior part layer 1 -163,1010,Agranular insular area posterior part layer 2/3,AIp2/3,,1,3,8690,111,8,1,287,/997/8/567/688/695/315/95/111/163/,219866,,,f,288,2735510231,734881840,Agranular insular area posterior part layer 2/3 -344,891,Agranular insular area posterior part layer 5,AIp5,,1,3,8690,111,8,1,288,/997/8/567/688/695/315/95/111/344/,219866,,,f,289,3116139673,734881840,Agranular insular area posterior part layer 5 -314,1029,Agranular insular area posterior part layer 6a,AIp6a,,1,3,8690,111,8,1,289,/997/8/567/688/695/315/95/111/314/,219866,,,f,290,1257274084,734881840,Agranular insular area posterior part layer 6a -355,1034,Agranular insular area posterior part layer 6b,AIp6b,,1,3,8690,111,8,1,290,/997/8/567/688/695/315/95/111/355/,219866,,,f,291,3556322142,734881840,Agranular insular area posterior part layer 6b -119,14,Agranular insular area ventral part,AIv,,1,3,8690,95,7,1,291,/997/8/567/688/695/315/95/119/,219866,,,f,292,4204343095,734881840,Agranular insular area ventral part -704,936,Agranular insular area ventral part layer 1,AIv1,,1,3,8690,119,8,1,292,/997/8/567/688/695/315/95/119/704/,219866,,,f,293,4142876190,734881840,Agranular insular area ventral part layer 1 -694,652,Agranular insular area ventral part layer 2/3,AIv2/3,,1,3,8690,119,8,1,293,/997/8/567/688/695/315/95/119/694/,219866,,,f,294,2779633736,734881840,Agranular insular area ventral part layer 2/3 -800,948,Agranular insular area ventral part layer 5,AIv5,,1,3,8690,119,8,1,294,/997/8/567/688/695/315/95/119/800/,219866,,,f,295,4051862023,734881840,Agranular insular area ventral part layer 5 -675,1074,Agranular insular area ventral part layer 6a,AIv6a,,1,3,8690,119,8,1,295,/997/8/567/688/695/315/95/119/675/,219866,,,f,296,1561328289,734881840,Agranular insular area ventral part layer 6a -699,1077,Agranular insular area ventral part layer 6b,AIv6b,,1,3,8690,119,8,1,296,/997/8/567/688/695/315/95/119/699/,219866,,,f,297,3288771355,734881840,Agranular insular area ventral part layer 6b -254,314,Retrosplenial area,RSP,,1,3,8690,315,6,1,297,/997/8/567/688/695/315/254/,1AA698,,,f,298,2130272923,734881840,Retrosplenial area -894,394,Retrosplenial area lateral agranular part,RSPagl,,1,3,8690,254,7,1,298,/997/8/567/688/695/315/254/894/,1AA698,,,f,299,3156484255,734881840,Retrosplenial area lateral agranular part -671,932,Retrosplenial area lateral agranular part layer 1,RSPagl1,,1,3,8690,894,8,1,299,/997/8/567/688/695/315/254/894/671/,1AA698,,,f,300,149448588,734881840,Retrosplenial area lateral agranular part layer 1 -965,969,Retrosplenial area lateral agranular part layer 2/3,RSPagl2/3,,1,3,8690,894,8,1,300,/997/8/567/688/695/315/254/894/965/,1AA698,,,f,301,2863914633,734881840,Retrosplenial area lateral agranular part layer 2/3 -774,945,Retrosplenial area lateral agranular part layer 5,RSPagl5,,1,3,8690,894,8,1,301,/997/8/567/688/695/315/254/894/774/,1AA698,,,f,302,260416405,734881840,Retrosplenial area lateral agranular part layer 5 -906,820,Retrosplenial area lateral agranular part layer 6a,RSPagl6a,,1,3,8690,894,8,1,302,/997/8/567/688/695/315/254/894/906/,1AA698,,,f,303,1139806184,734881840,Retrosplenial area lateral agranular part layer 6a -279,883,Retrosplenial area lateral agranular part layer 6b,RSPagl6b,,1,3,8690,894,8,1,303,/997/8/567/688/695/315/254/894/279/,1AA698,,,f,304,3673775698,734881840,Retrosplenial area lateral agranular part layer 6b -480149258,,Mediomedial anterior visual area,VISmma,,1,3,8690,894,8,1,304,/997/8/567/688/695/315/254/894/480149258/,1AA698,,,f,305,1884752328,734881840,Mediomedial anterior visual area -480149262,,Mediomedial anterior visual area layer 1,VISmma1,,1,3,8690,480149258,9,1,305,/997/8/567/688/695/315/254/894/480149258/480149262/,1AA698,,,f,306,2893913001,734881840,Mediomedial anterior visual area layer 1 -480149266,,Mediomedial anterior visual area layer 2/3,VISmma2/3,,1,3,8690,480149258,9,1,306,/997/8/567/688/695/315/254/894/480149258/480149266/,1AA698,,,f,307,4132115660,734881840,Mediomedial anterior visual area layer 2/3 -480149270,,Mediomedial anterior visual area layer 4,VISmma4,,1,3,8690,480149258,9,1,307,/997/8/567/688/695/315/254/894/480149258/480149270/,1AA698,,,f,308,3692523302,734881840,Mediomedial anterior visual area layer 4 -480149274,,Mediomedial anterior visual arealayer 5,VISmma5,,1,3,8690,480149258,9,1,308,/997/8/567/688/695/315/254/894/480149258/480149274/,1AA698,,,f,309,1197199171,734881840,Mediomedial anterior visual arealayer 5 -480149278,,Mediomedial anterior visual area layer 6a,VISmma6a,,1,3,8690,480149258,9,1,309,/997/8/567/688/695/315/254/894/480149258/480149278/,1AA698,,,f,310,139480659,734881840,Mediomedial anterior visual area layer 6a -480149282,,Mediomedial anterior visual area layer 6b,VISmma6b,,1,3,8690,480149258,9,1,310,/997/8/567/688/695/315/254/894/480149258/480149282/,1AA698,,,f,311,2438537193,734881840,Mediomedial anterior visual area layer 6b -480149286,,Mediomedial posterior visual area,VISmmp,,1,3,8690,894,8,1,311,/997/8/567/688/695/315/254/894/480149286/,1AA698,,,f,312,1089292433,734881840,Mediomedial posterior visual area -480149290,,Mediomedial posterior visual area layer 1,VISmmp1,,1,3,8690,480149286,9,1,312,/997/8/567/688/695/315/254/894/480149286/480149290/,1AA698,,,f,313,504923420,734881840,Mediomedial posterior visual area layer 1 -480149294,,Mediomedial posterior visual area layer 2/3,VISmmp2/3,,1,3,8690,480149286,9,1,313,/997/8/567/688/695/315/254/894/480149286/480149294/,1AA698,,,f,314,2515976503,734881840,Mediomedial posterior visual area layer 2/3 -480149298,,Mediomedial posterior visual area layer 4,VISmmp4,,1,3,8690,480149286,9,1,314,/997/8/567/688/695/315/254/894/480149286/480149298/,1AA698,,,f,315,1852993939,734881840,Mediomedial posterior visual area layer 4 -480149302,,Mediomedial posterior visual arealayer 5,VISmmp5,,1,3,8690,480149286,9,1,315,/997/8/567/688/695/315/254/894/480149286/480149302/,1AA698,,,f,316,2672710394,734881840,Mediomedial posterior visual arealayer 5 -480149306,,Mediomedial posterior visual area layer 6a,VISmmp6a,,1,3,8690,480149286,9,1,316,/997/8/567/688/695/315/254/894/480149286/480149306/,1AA698,,,f,317,3018419278,734881840,Mediomedial posterior visual area layer 6a -480149310,,Mediomedial posterior visual area layer 6b,VISmmp6b,,1,3,8690,480149286,9,1,317,/997/8/567/688/695/315/254/894/480149286/480149310/,1AA698,,,f,318,719338996,734881840,Mediomedial posterior visual area layer 6b -480149314,,Medial visual area,VISm,,1,3,8690,894,8,1,318,/997/8/567/688/695/315/254/894/480149314/,1AA698,,,f,319,2667387940,734881840,Medial visual area -480149318,,Medial visual area layer 1,VISm1,,1,3,8690,480149314,9,1,319,/997/8/567/688/695/315/254/894/480149314/480149318/,1AA698,,,f,320,1653035992,734881840,Medial visual area layer 1 -480149322,,Medial visual area layer 2/3,VISm2/3,,1,3,8690,480149314,9,1,320,/997/8/567/688/695/315/254/894/480149314/480149322/,1AA698,,,f,321,1439750147,734881840,Medial visual area layer 2/3 -480149326,,Medial visual area layer 4,VISm4,,1,3,8690,480149314,9,1,321,/997/8/567/688/695/315/254/894/480149314/480149326/,1AA698,,,f,322,317564759,734881840,Medial visual area layer 4 -480149330,,Medial visual arealayer 5,VISm5,,1,3,8690,480149314,9,1,322,/997/8/567/688/695/315/254/894/480149314/480149330/,1AA698,,,f,323,3698794804,734881840,Medial visual arealayer 5 -480149334,,Medial visual area layer 6a,VISm6a,,1,3,8690,480149314,9,1,323,/997/8/567/688/695/315/254/894/480149314/480149334/,1AA698,,,f,324,798815537,734881840,Medial visual area layer 6a -480149338,,Medial visual area layer 6b,VISm6b,,1,3,8690,480149314,9,1,324,/997/8/567/688/695/315/254/894/480149314/480149338/,1AA698,,,f,325,3063260299,734881840,Medial visual area layer 6b -879,392,Retrosplenial area dorsal part,RSPd,,1,3,8690,254,7,1,325,/997/8/567/688/695/315/254/879/,1AA698,,,f,326,1698653345,734881840,Retrosplenial area dorsal part -442,1045,Retrosplenial area dorsal part layer 1,RSPd1,,1,3,8690,879,8,1,326,/997/8/567/688/695/315/254/879/442/,1AA698,,,f,327,3307182297,734881840,Retrosplenial area dorsal part layer 1 -434,761,Retrosplenial area dorsal part layer 2/3,RSPd2/3,,1,3,8690,879,8,1,327,/997/8/567/688/695/315/254/879/434/,1AA698,,,f,328,1081955810,734881840,Retrosplenial area dorsal part layer 2/3 -545,1058,Retrosplenial area dorsal part layer 4,RSPd4,,1,3,8690,879,8,1,328,/997/8/567/688/695/315/254/879/545/,1AA698,,,f,329,3044371542,734881840,Retrosplenial area dorsal part layer 4 -610,1066,Retrosplenial area dorsal part layer 5,RSPd5,,1,3,8690,879,8,1,329,/997/8/567/688/695/315/254/879/610/,1AA698,,,f,330,3262274752,734881840,Retrosplenial area dorsal part layer 5 -274,1024,Retrosplenial area dorsal part layer 6a,RSPd6a,,1,3,8690,879,8,1,330,/997/8/567/688/695/315/254/879/274/,1AA698,,,f,331,1480351084,734881840,Retrosplenial area dorsal part layer 6a -330,1031,Retrosplenial area dorsal part layer 6b,RSPd6b,,1,3,8690,879,8,1,331,/997/8/567/688/695/315/254/879/330/,1AA698,,,f,332,3241479382,734881840,Retrosplenial area dorsal part layer 6b -886,393,Retrosplenial area ventral part,RSPv,,1,3,8690,254,7,1,332,/997/8/567/688/695/315/254/886/,1AA698,,,f,333,206834043,734881840,Retrosplenial area ventral part -542,633,Retrosplenial area ventral part layer 1,RSPv1,,1,3,8690,886,8,1,333,/997/8/567/688/695/315/254/886/542/,1AA698,,,f,334,1320301965,734881840,Retrosplenial area ventral part layer 1 -606,641,Retrosplenial area ventral part layer 2,RSPv2,,1,3,8690,886,8,1,334,/997/8/567/688/695/315/254/886/606/,1AA698,,,f,335,3619382327,734881840,Retrosplenial area ventral part layer 2 -430,619,Retrosplenial area ventral part layer 2/3,RSPv2/3,,1,3,8690,886,8,1,335,/997/8/567/688/695/315/254/886/430/,1AA698,,,f,336,919443786,734881840,Retrosplenial area ventral part layer 2/3 -687,651,Retrosplenial area ventral part layer 5,RSPv5,,1,3,8690,886,8,1,336,/997/8/567/688/695/315/254/886/687/,1AA698,,,f,337,1239413140,734881840,Retrosplenial area ventral part layer 5 -590,639,Retrosplenial area ventral part layer 6a,RSPv6a,,1,3,8690,886,8,1,337,/997/8/567/688/695/315/254/886/590/,1AA698,,,f,338,884041004,734881840,Retrosplenial area ventral part layer 6a -622,643,Retrosplenial area ventral part layer 6b,RSPv6b,,1,3,8690,886,8,1,338,/997/8/567/688/695/315/254/886/622/,1AA698,,,f,339,2914530454,734881840,Retrosplenial area ventral part layer 6b -22,285,Posterior parietal association areas,PTLp,,1,3,8690,315,6,1,339,/997/8/567/688/695/315/22/,009FAC,,,f,340,4041380584,734881840,Posterior parietal association areas -532,1056,Posterior parietal association areas layer 1,PTLp1,,1,3,8690,22,7,1,340,/997/8/567/688/695/315/22/532/,009FAC,,,f,341,1126558061,734881840,Posterior parietal association areas layer 1 -241,454,Posterior parietal association areas layer 2/3,PTLp2/3,,1,3,8690,22,7,1,341,/997/8/567/688/695/315/22/241/,009FAC,,,f,342,3889625550,734881840,Posterior parietal association areas layer 2/3 -635,1069,Posterior parietal association areas layer 4,PTLp4,,1,3,8690,22,7,1,342,/997/8/567/688/695/315/22/635/,009FAC,,,f,343,860823010,734881840,Posterior parietal association areas layer 4 -683,1075,Posterior parietal association areas layer 5,PTLp5,,1,3,8690,22,7,1,343,/997/8/567/688/695/315/22/683/,009FAC,,,f,344,1145580916,734881840,Posterior parietal association areas layer 5 -308,1028,Posterior parietal association areas layer 6a,PTLp6a,,1,3,8690,22,7,1,344,/997/8/567/688/695/315/22/308/,009FAC,,,f,345,2494959752,734881840,Posterior parietal association areas layer 6a -340,1032,Posterior parietal association areas layer 6b,PTLp6b,,1,3,8690,22,7,1,345,/997/8/567/688/695/315/22/340/,009FAC,,,f,346,230637874,734881840,Posterior parietal association areas layer 6b -312782546,,Anterior area,VISa,,1,3,8690,22,7,1,346,/997/8/567/688/695/315/22/312782546/,009FAC,,,f,347,3402453642,734881840,Anterior area -312782550,,Anterior area layer 1,VISa1,,1,3,8690,312782546,8,1,347,/997/8/567/688/695/315/22/312782546/312782550/,009FAC,,,f,348,10340068,734881840,Anterior area layer 1 -312782554,,Anterior area layer 2/3,VISa2/3,,1,3,8690,312782546,8,1,348,/997/8/567/688/695/315/22/312782546/312782554/,009FAC,,,f,349,2789647405,734881840,Anterior area layer 2/3 -312782558,,Anterior area layer 4,VISa4,,1,3,8690,312782546,8,1,349,/997/8/567/688/695/315/22/312782546/312782558/,009FAC,,,f,350,1895248491,734881840,Anterior area layer 4 -312782562,,Anterior area layer 5,VISa5,,1,3,8690,312782546,8,1,350,/997/8/567/688/695/315/22/312782546/312782562/,009FAC,,,f,351,133169917,734881840,Anterior area layer 5 -312782566,,Anterior area layer 6a,VISa6a,,1,3,8690,312782546,8,1,351,/997/8/567/688/695/315/22/312782546/312782566/,009FAC,,,f,352,9540387,734881840,Anterior area layer 6a -312782570,,Anterior area layer 6b,VISa6b,,1,3,8690,312782546,8,1,352,/997/8/567/688/695/315/22/312782546/312782570/,009FAC,,,f,353,2576925337,734881840,Anterior area layer 6b -417,759,Rostrolateral visual area,VISrl,,1,3,8690,22,7,1,353,/997/8/567/688/695/315/22/417/,009FAC,,,f,354,1848950861,734881840,Rostrolateral visual area -312782604,,Rostrolateral area layer 1,VISrl1,,1,3,8690,417,8,1,354,/997/8/567/688/695/315/22/417/312782604/,009FAC,,,f,355,3916570650,734881840,Rostrolateral area layer 1 -312782608,,Rostrolateral area layer 2/3,VISrl2/3,,1,3,8690,417,8,1,355,/997/8/567/688/695/315/22/417/312782608/,009FAC,,,f,356,1695598268,734881840,Rostrolateral area layer 2/3 -312782612,,Rostrolateral area layer 4,VISrl4,,1,3,8690,417,8,1,356,/997/8/567/688/695/315/22/417/312782612/,009FAC,,,f,357,2568541333,734881840,Rostrolateral area layer 4 -312782616,,Rostrolateral area layer 5,VISrl5,,1,3,8690,417,8,1,357,/997/8/567/688/695/315/22/417/312782616/,009FAC,,,f,358,3995067395,734881840,Rostrolateral area layer 5 -312782620,,Rostrolateral area layer 6a,VISrl6a,,1,3,8690,417,8,1,358,/997/8/567/688/695/315/22/417/312782620/,009FAC,,,f,359,1518183390,734881840,Rostrolateral area layer 6a -312782624,,Rostrolateral area layer 6b,VISrl6b,,1,3,8690,417,8,1,359,/997/8/567/688/695/315/22/417/312782624/,009FAC,,,f,360,3279221348,734881840,Rostrolateral area layer 6b -541,350,Temporal association areas,TEa,,1,3,8690,315,6,1,360,/997/8/567/688/695/315/541/,15B0B3,,,f,361,2291994334,734881840,Temporal association areas -97,1002,Temporal association areas layer 1,TEa1,,1,3,8690,541,7,1,361,/997/8/567/688/695/315/541/97/,15B0B3,,,f,362,456768453,734881840,Temporal association areas layer 1 -1127,706,Temporal association areas layer 2/3,TEa2/3,,1,3,8690,541,7,1,362,/997/8/567/688/695/315/541/1127/,15B0B3,,,f,363,74295275,734881840,Temporal association areas layer 2/3 -234,1019,Temporal association areas layer 4,TEa4,,1,3,8690,541,7,1,363,/997/8/567/688/695/315/541/234/,15B0B3,,,f,364,1800621898,734881840,Temporal association areas layer 4 -289,1026,Temporal association areas layer 5,TEa5,,1,3,8690,541,7,1,364,/997/8/567/688/695/315/541/289/,15B0B3,,,f,365,475299804,734881840,Temporal association areas layer 5 -729,1081,Temporal association areas layer 6a,TEa6a,,1,3,8690,541,7,1,365,/997/8/567/688/695/315/541/729/,15B0B3,,,f,366,1289955072,734881840,Temporal association areas layer 6a -786,1088,Temporal association areas layer 6b,TEa6b,,1,3,8690,541,7,1,366,/997/8/567/688/695/315/541/786/,15B0B3,,,f,367,3588912826,734881840,Temporal association areas layer 6b -922,256,Perirhinal area,PERI,,1,3,8690,315,6,1,367,/997/8/567/688/695/315/922/,0E9684,,,f,368,173995527,734881840,Perirhinal area -540,1057,Perirhinal area layer 1,PERI1,,1,3,8690,922,7,1,368,/997/8/567/688/695/315/922/540/,0E9684,,,f,369,161492388,734881840,Perirhinal area layer 1 -888,959,Perirhinal area layer 2/3,PERI2/3,,1,3,8690,922,7,1,369,/997/8/567/688/695/315/922/888/,0E9684,,,f,370,1642584549,734881840,Perirhinal area layer 2/3 -692,1076,Perirhinal area layer 5,PERI5,,1,3,8690,922,7,1,370,/997/8/567/688/695/315/922/692/,0E9684,,,f,371,248375741,734881840,Perirhinal area layer 5 -335,890,Perirhinal area layer 6a,PERI6a,,1,3,8690,922,7,1,371,/997/8/567/688/695/315/922/335/,0E9684,,,f,372,1984229208,734881840,Perirhinal area layer 6a -368,894,Perirhinal area layer 6b,PERI6b,,1,3,8690,922,7,1,372,/997/8/567/688/695/315/922/368/,0E9684,,,f,373,4014849762,734881840,Perirhinal area layer 6b -895,111,Ectorhinal area,ECT,,1,3,8690,315,6,1,373,/997/8/567/688/695/315/895/,0D9F91,,,f,374,3399607880,734881840,Ectorhinal area -836,1094,Ectorhinal area/Layer 1,ECT1,,1,3,8690,895,7,1,374,/997/8/567/688/695/315/895/836/,0D9F91,,,f,375,2240743692,734881840,Ectorhinal area/Layer 1 -427,1043,Ectorhinal area/Layer 2/3,ECT2/3,,1,3,8690,895,7,1,375,/997/8/567/688/695/315/895/427/,0D9F91,,,f,376,993691642,734881840,Ectorhinal area/Layer 2/3 -988,1113,Ectorhinal area/Layer 5,ECT5,,1,3,8690,895,7,1,376,/997/8/567/688/695/315/895/988/,0D9F91,,,f,377,2195901717,734881840,Ectorhinal area/Layer 5 -977,1112,Ectorhinal area/Layer 6a,ECT6a,,1,3,8690,895,7,1,377,/997/8/567/688/695/315/895/977/,0D9F91,,,f,378,2932206502,734881840,Ectorhinal area/Layer 6a -1045,1120,Ectorhinal area/Layer 6b,ECT6b,,1,3,8690,895,7,1,378,/997/8/567/688/695/315/895/1045/,0D9F91,,,f,379,936163868,734881840,Ectorhinal area/Layer 6b -698,228,Olfactory areas,OLF,,1,3,8690,695,5,1,379,/997/8/567/688/695/698/,9AD2BD,,,f,380,1234982955,734881840,Olfactory areas -507,204,Main olfactory bulb,MOB,,1,3,8690,698,6,1,380,/997/8/567/688/695/698/507/,9AD2BD,,,f,381,2457606556,734881840,Main olfactory bulb -212,733,Main olfactory bulb glomerular layer,MOBgl,,1,3,8690,507,7,1,381,/997/8/567/688/695/698/507/212/,82C7AE,,,f,382,224250866,734881840,Main olfactory bulb glomerular layer -220,734,Main olfactory bulb granule layer,MOBgr,,1,3,8690,507,7,1,382,/997/8/567/688/695/698/507/220/,82C7AE,,,f,383,1684821541,734881840,Main olfactory bulb granule layer -228,735,Main olfactory bulb inner plexiform layer,MOBipl,,1,3,8690,507,7,1,383,/997/8/567/688/695/698/507/228/,9AD2BD,,,f,384,1125023575,734881840,Main olfactory bulb inner plexiform layer -236,736,Main olfactory bulb mitral layer,MOBmi,,1,3,8690,507,7,1,384,/997/8/567/688/695/698/507/236/,82C7AE,,,f,385,1536894627,734881840,Main olfactory bulb mitral layer -244,737,Main olfactory bulb outer plexiform layer,MOBopl,,1,3,8690,507,7,1,385,/997/8/567/688/695/698/507/244/,9AD2BD,,,f,386,164653746,734881840,Main olfactory bulb outer plexiform layer -151,18,Accessory olfactory bulb,AOB,,1,3,8690,698,6,1,386,/997/8/567/688/695/698/151/,9DF0D2,,,f,387,3386724067,734881840,Accessory olfactory bulb -188,730,Accessory olfactory bulb glomerular layer,AOBgl,,1,3,8690,151,7,1,387,/997/8/567/688/695/698/151/188/,9DF0D2,,,f,388,2369905656,734881840,Accessory olfactory bulb glomerular layer -196,731,Accessory olfactory bulb granular layer,AOBgr,,1,3,8690,151,7,1,388,/997/8/567/688/695/698/151/196/,95E4C8,,,f,389,2164797365,734881840,Accessory olfactory bulb granular layer -204,732,Accessory olfactory bulb mitral layer,AOBmi,,1,3,8690,151,7,1,389,/997/8/567/688/695/698/151/204/,9DF0D2,,,f,390,4294648998,734881840,Accessory olfactory bulb mitral layer -159,19,Anterior olfactory nucleus,AON,,1,3,8690,698,6,1,390,/997/8/567/688/695/698/159/,54BF94,,,f,391,747766383,734881840,Anterior olfactory nucleus -167,20,Anterior olfactory nucleus dorsal part,AONd,,1,3,8690,159,7,1,391,/997/8/567/688/695/698/159/167/,54BF94,,,f,392,130265477,734881840,Anterior olfactory nucleus dorsal part -175,21,Anterior olfactory nucleus external part,AONe,,1,3,8690,159,7,1,392,/997/8/567/688/695/698/159/175/,54BF94,,,f,393,38711150,734881840,Anterior olfactory nucleus external part -183,22,Anterior olfactory nucleus lateral part,AONl,,1,3,8690,159,7,1,393,/997/8/567/688/695/698/159/183/,54BF94,,,f,394,3992199283,734881840,Anterior olfactory nucleus lateral part -191,23,Anterior olfactory nucleus medial part,AONm,,1,3,8690,159,7,1,394,/997/8/567/688/695/698/159/191/,54BF94,,,f,395,1494026705,734881840,Anterior olfactory nucleus medial part -199,24,Anterior olfactory nucleus posteroventral part,AONpv,,1,3,8690,159,7,1,395,/997/8/567/688/695/698/159/199/,54BF94,,,f,396,2533672001,734881840,Anterior olfactory nucleus posteroventral part -160,868,Anterior olfactory nucleus layer 1,AON1,,1,3,8690,159,7,1,396,/997/8/567/688/695/698/159/160/,54BF94,,,f,397,2989788171,734881840,Anterior olfactory nucleus layer 1 -168,869,Anterior olfactory nucleus layer 2,AON2,,1,3,8690,159,7,1,397,/997/8/567/688/695/698/159/168/,54BF94,,,f,398,725474737,734881840,Anterior olfactory nucleus layer 2 -589,356,Taenia tecta,TT,,1,3,8690,698,6,1,398,/997/8/567/688/695/698/589/,62D09F,,,f,399,2827574122,734881840,Taenia tecta -597,357,Taenia tecta dorsal part,TTd,,1,3,8690,589,7,1,399,/997/8/567/688/695/698/589/597/,62D09F,,,f,400,2019823208,734881840,Taenia tecta dorsal part -297,744,Taenia tecta dorsal part layers 1-4,TTd1-4,,1,3,8690,597,8,1,400,/997/8/567/688/695/698/589/597/297/,62D09F,,,f,401,4046455694,734881840,Taenia tecta dorsal part layers 1-4 -1034,836,Taenia tecta dorsal part layer 1,TTd1,,1,3,8690,597,8,1,401,/997/8/567/688/695/698/589/597/1034/,62D09F,,,f,402,1896447081,734881840,Taenia tecta dorsal part layer 1 -1042,837,Taenia tecta dorsal part layer 2,TTd2,,1,3,8690,597,8,1,402,/997/8/567/688/695/698/589/597/1042/,62D09F,,,f,403,3892325843,734881840,Taenia tecta dorsal part layer 2 -1050,838,Taenia tecta dorsal part layer 3,TTd3,,1,3,8690,597,8,1,403,/997/8/567/688/695/698/589/597/1050/,62D09F,,,f,404,2668043589,734881840,Taenia tecta dorsal part layer 3 -1059,839,Taenia tecta dorsal part layer 4,TTd4,,1,3,8690,597,8,1,404,/997/8/567/688/695/698/589/597/1059/,62D09F,,,f,405,23300326,734881840,Taenia tecta dorsal part layer 4 -605,358,Taenia tecta ventral part,TTv,,1,3,8690,589,7,1,405,/997/8/567/688/695/698/589/605/,62D09F,,,f,406,4008781829,734881840,Taenia tecta ventral part -306,745,Taenia tecta ventral part layers 1-3,TTv1-3,,1,3,8690,605,8,1,406,/997/8/567/688/695/698/589/605/306/,62D09F,,,f,407,3753542786,734881840,Taenia tecta ventral part layers 1-3 -1067,840,Taenia tecta ventral part layer 1,TTv1,,1,3,8690,605,8,1,407,/997/8/567/688/695/698/589/605/1067/,62D09F,,,f,408,2238157029,734881840,Taenia tecta ventral part layer 1 -1075,841,Taenia tecta ventral part layer 2,TTv2,,1,3,8690,605,8,1,408,/997/8/567/688/695/698/589/605/1075/,62D09F,,,f,409,477020511,734881840,Taenia tecta ventral part layer 2 -1082,842,Taenia tecta ventral part layer 3,TTv3,,1,3,8690,605,8,1,409,/997/8/567/688/695/698/589/605/1082/,62D09F,,,f,410,1802105289,734881840,Taenia tecta ventral part layer 3 -814,384,Dorsal peduncular area,DP,,1,3,8690,698,6,1,410,/997/8/567/688/695/698/814/,A4DAA4,,,f,411,327990420,734881840,Dorsal peduncular area -496,627,Dorsal peduncular area layer 1,DP1,,1,3,8690,814,7,1,411,/997/8/567/688/695/698/814/496/,A4DAA4,,,f,412,2060647510,734881840,Dorsal peduncular area layer 1 -535,632,Dorsal peduncular area layer 2,DP2,,1,3,8690,814,7,1,412,/997/8/567/688/695/698/814/535/,A4DAA4,,,f,413,3822824940,734881840,Dorsal peduncular area layer 2 -360,893,Dorsal peduncular area layer 2/3,DP2/3,,1,3,8690,814,7,1,413,/997/8/567/688/695/698/814/360/,A4DAA4,,,f,414,3065629674,734881840,Dorsal peduncular area layer 2/3 -646,646,Dorsal peduncular area layer 5,DP5,,1,3,8690,814,7,1,414,/997/8/567/688/695/698/814/646/,A4DAA4,,,f,415,2109683791,734881840,Dorsal peduncular area layer 5 -267,1023,Dorsal peduncular area layer 6a,DP6a,,1,3,8690,814,7,1,415,/997/8/567/688/695/698/814/267/,A4DAA4,,,f,416,629411513,734881840,Dorsal peduncular area layer 6a -961,261,Piriform area,PIR,,1,3,8690,698,6,1,416,/997/8/567/688/695/698/961/,6ACBBA,,,f,417,3867654445,734881840,Piriform area -152,867,Piriform area layers 1-3,PIR1-3,,1,3,8690,961,7,1,417,/997/8/567/688/695/698/961/152/,6ACBBA,,,f,418,2647697453,734881840,Piriform area layers 1-3 -276,741,Piriform area molecular layer,PIR1,,1,3,8690,961,7,1,418,/997/8/567/688/695/698/961/276/,6ACBBA,,,f,419,2554470513,734881840,Piriform area molecular layer -284,742,Piriform area pyramidal layer,PIR2,,1,3,8690,961,7,1,419,/997/8/567/688/695/698/961/284/,6ACBBA,,,f,420,274998294,734881840,Piriform area pyramidal layer -291,743,Piriform area polymorph layer,PIR3,,1,3,8690,961,7,1,420,/997/8/567/688/695/698/961/291/,6ACBBA,,,f,421,1551580350,734881840,Piriform area polymorph layer -619,218,Nucleus of the lateral olfactory tract,NLOT,,1,3,8690,698,6,1,421,/997/8/567/688/695/698/619/,95E4C8,,,f,422,1925788982,734881840,Nucleus of the lateral olfactory tract -392,897,Nucleus of the lateral olfactory tract layers 1-3,NLOT1-3,,1,3,8690,619,7,1,422,/997/8/567/688/695/698/619/392/,95E4C8,,,f,423,1369727155,734881840,Nucleus of the lateral olfactory tract layers 1-3 -260,739,Nucleus of the lateral olfactory tract molecular layer,NLOT1,,1,3,8690,619,7,1,423,/997/8/567/688/695/698/619/260/,95E4C8,,,f,424,1899636519,734881840,Nucleus of the lateral olfactory tract molecular layer -268,740,Nucleus of the lateral olfactory tract pyramidal layer,NLOT2,,1,3,8690,619,7,1,424,/997/8/567/688/695/698/619/268/,95E4C8,,,f,425,4179370816,734881840,Nucleus of the lateral olfactory tract pyramidal layer -1139,1137,Nucleus of the lateral olfactory tract layer 3,NLOT3,,1,3,8690,619,7,1,425,/997/8/567/688/695/698/619/1139/,95E4C8,,,f,426,2600277896,734881840,Nucleus of the lateral olfactory tract layer 3 -631,78,Cortical amygdalar area,COA,,1,3,8690,698,6,1,426,/997/8/567/688/695/698/631/,61E7B7,,,f,427,1492043464,734881840,Cortical amygdalar area -639,79,Cortical amygdalar area anterior part,COAa,,1,3,8690,631,7,1,427,/997/8/567/688/695/698/631/639/,61E7B7,,,f,428,3687551647,734881840,Cortical amygdalar area anterior part -192,872,Cortical amygdalar area anterior part layer 1,COAa1,,1,3,8690,639,8,1,428,/997/8/567/688/695/698/631/639/192/,61E7B7,,,f,429,1929526031,734881840,Cortical amygdalar area anterior part layer 1 -200,873,Cortical amygdalar area anterior part layer 2,COAa2,,1,3,8690,639,8,1,429,/997/8/567/688/695/698/631/639/200/,61E7B7,,,f,430,3926616757,734881840,Cortical amygdalar area anterior part layer 2 -208,874,Cortical amygdalar area anterior part layer 3,COAa3,,1,3,8690,639,8,1,430,/997/8/567/688/695/698/631/639/208/,61E7B7,,,f,431,2634832419,734881840,Cortical amygdalar area anterior part layer 3 -647,80,Cortical amygdalar area posterior part,COAp,,1,3,8690,631,7,1,431,/997/8/567/688/695/698/631/647/,61E7B7,,,f,432,713144098,734881840,Cortical amygdalar area posterior part -655,81,Cortical amygdalar area posterior part lateral zone,COApl,,1,3,8690,647,8,1,432,/997/8/567/688/695/698/631/647/655/,61E7B7,,,f,433,687250718,734881840,Cortical amygdalar area posterior part lateral zone -584,921,Cortical amygdalar area posterior part lateral zone layers 1-2,COApl1-2,,1,3,8690,655,9,1,433,/997/8/567/688/695/698/631/647/655/584/,61E7B7,,,f,434,2501743775,734881840,Cortical amygdalar area posterior part lateral zone layers 1-2 -376,895,Cortical amygdalar area posterior part lateral zone layers 1-3,COApl1-3,,1,3,8690,655,9,1,434,/997/8/567/688/695/698/631/647/655/376/,61E7B7,,,f,435,3793396745,734881840,Cortical amygdalar area posterior part lateral zone layers 1-3 -216,875,Cortical amygdalar area posterior part lateral zone layer 1,COApl1,,1,3,8690,655,9,1,435,/997/8/567/688/695/698/631/647/655/216/,61E7B7,,,f,436,2913726556,734881840,Cortical amygdalar area posterior part lateral zone layer 1 -224,876,Cortical amygdalar area posterior part lateral zone layer 2,COApl2,,1,3,8690,655,9,1,436,/997/8/567/688/695/698/631/647/655/224/,61E7B7,,,f,437,883073510,734881840,Cortical amygdalar area posterior part lateral zone layer 2 -232,877,Cortical amygdalar area posterior part lateral zone layer 3,COApl3,,1,3,8690,655,9,1,437,/997/8/567/688/695/698/631/647/655/232/,61E7B7,,,f,438,1134924144,734881840,Cortical amygdalar area posterior part lateral zone layer 3 -663,82,Cortical amygdalar area posterior part medial zone,COApm,,1,3,8690,647,8,1,438,/997/8/567/688/695/698/631/647/663/,61E7B7,,,f,439,2407177902,734881840,Cortical amygdalar area posterior part medial zone -592,922,Cortical amygdalar area posterior part medial zone layers 1-2,COApm1-2,,1,3,8690,663,9,1,439,/997/8/567/688/695/698/631/647/663/592/,61E7B7,,,f,440,21515473,734881840,Cortical amygdalar area posterior part medial zone layers 1-2 -383,896,Cortical amygdalar area posterior part medial zone layers 1-3,COApm1-3,,1,3,8690,663,9,1,440,/997/8/567/688/695/698/631/647/663/383/,61E7B7,,,f,441,1984920647,734881840,Cortical amygdalar area posterior part medial zone layers 1-3 -240,878,Cortical amygdalar area posterior part medial zone layer 1,COApm1,,1,3,8690,663,9,1,441,/997/8/567/688/695/698/631/647/663/240/,61E7B7,,,f,442,3787500355,734881840,Cortical amygdalar area posterior part medial zone layer 1 -248,879,Cortical amygdalar area posterior part medial zone layer 2,COApm2,,1,3,8690,663,9,1,442,/997/8/567/688/695/698/631/647/663/248/,61E7B7,,,f,443,2026502905,734881840,Cortical amygdalar area posterior part medial zone layer 2 -256,880,Cortical amygdalar area posterior part medial zone layer 3,COApm3,,1,3,8690,663,9,1,443,/997/8/567/688/695/698/631/647/663/256/,61E7B7,,,f,444,265210479,734881840,Cortical amygdalar area posterior part medial zone layer 3 -788,239,Piriform-amygdalar area,PAA,,1,3,8690,698,6,1,444,/997/8/567/688/695/698/788/,59DAAB,,,f,445,1121206289,734881840,Piriform-amygdalar area -400,898,Piriform-amygdalar area layers 1-3,PAA1-3,,1,3,8690,788,7,1,445,/997/8/567/688/695/698/788/400/,59DAAB,,,f,446,908149344,734881840,Piriform-amygdalar area layers 1-3 -408,899,Piriform-amygdalar area molecular layer,PAA1,,1,3,8690,788,7,1,446,/997/8/567/688/695/698/788/408/,59DAAB,,,f,447,2014732560,734881840,Piriform-amygdalar area molecular layer -416,900,Piriform-amygdalar area pyramidal layer,PAA2,,1,3,8690,788,7,1,447,/997/8/567/688/695/698/788/416/,59DAAB,,,f,448,4029703543,734881840,Piriform-amygdalar area pyramidal layer -424,901,Piriform-amygdalar area polymorph layer,PAA3,,1,3,8690,788,7,1,448,/997/8/567/688/695/698/788/424/,59DAAB,,,f,449,3157229023,734881840,Piriform-amygdalar area polymorph layer -566,353,Postpiriform transition area,TR,,1,3,8690,698,6,1,449,/997/8/567/688/695/698/566/,A8ECD3,,,f,450,2552138473,734881840,Postpiriform transition area -517,913,Postpiriform transition area layers 1-3,TR1-3,,1,3,8690,566,7,1,450,/997/8/567/688/695/698/566/517/,A8ECD3,,,f,451,3498621219,734881840,Postpiriform transition area layers 1-3 -1140,1138,Postpiriform transition area layers 1,TR1,,1,3,8690,566,7,1,451,/997/8/567/688/695/698/566/1140/,A8ECD3,,,f,452,1927513861,734881840,Postpiriform transition area layers 1 -1141,1139,Postpiriform transition area layers 2,TR2,,1,3,8690,566,7,1,452,/997/8/567/688/695/698/566/1141/,A8ECD3,,,f,453,3958036159,734881840,Postpiriform transition area layers 2 -1142,1140,Postpiriform transition area layers 3,TR3,,1,3,8690,566,7,1,453,/997/8/567/688/695/698/566/1142/,A8ECD3,,,f,454,2632836649,734881840,Postpiriform transition area layers 3 -1089,135,Hippocampal formation,HPF,,1,3,8690,695,5,1,454,/997/8/567/688/695/1089/,7ED04B,,,f,455,702348177,734881840,Hippocampal formation -1080,134,Hippocampal region,HIP,,1,3,8690,1089,6,1,455,/997/8/567/688/695/1089/1080/,7ED04B,,,f,456,190910866,734881840,Hippocampal region -375,46,Ammon's horn,CA,,1,3,8690,1080,7,1,456,/997/8/567/688/695/1089/1080/375/,7ED04B,,,f,457,1703331408,734881840,Ammon's horn -382,47,Field CA1,CA1,,1,3,8690,375,8,1,457,/997/8/567/688/695/1089/1080/375/382/,7ED04B,,,f,458,612190852,734881840,Field CA1 -391,48,Field CA1 stratum lacunosum-moleculare,CA1slm,,1,3,8690,382,9,1,458,/997/8/567/688/695/1089/1080/375/382/391/,7ED04B,,,f,459,660945402,734881840,Field CA1 stratum lacunosum-moleculare -399,49,Field CA1 stratum oriens,CA1so,,1,3,8690,382,9,1,459,/997/8/567/688/695/1089/1080/375/382/399/,7ED04B,,,f,460,3671153130,734881840,Field CA1 stratum oriens -407,50,Field CA1 pyramidal layer,CA1sp,,1,3,8690,382,9,1,460,/997/8/567/688/695/1089/1080/375/382/407/,66A83D,,,f,461,434863076,734881840,Field CA1 pyramidal layer -415,51,Field CA1 stratum radiatum,CA1sr,,1,3,8690,382,9,1,461,/997/8/567/688/695/1089/1080/375/382/415/,7ED04B,,,f,462,58650859,734881840,Field CA1 stratum radiatum -423,52,Field CA2,CA2,,1,3,8690,375,8,1,462,/997/8/567/688/695/1089/1080/375/423/,7ED04B,,,f,463,3178502974,734881840,Field CA2 -431,53,Field CA2 stratum lacunosum-moleculare,CA2slm,,1,3,8690,423,9,1,463,/997/8/567/688/695/1089/1080/375/423/431/,7ED04B,,,f,464,1673796834,734881840,Field CA2 stratum lacunosum-moleculare -438,54,Field CA2 stratum oriens,CA2so,,1,3,8690,423,9,1,464,/997/8/567/688/695/1089/1080/375/423/438/,7ED04B,,,f,465,4078562584,734881840,Field CA2 stratum oriens -446,55,Field CA2 pyramidal layer,CA2sp,,1,3,8690,423,9,1,465,/997/8/567/688/695/1089/1080/375/423/446/,66A83D,,,f,466,1248927840,734881840,Field CA2 pyramidal layer -454,56,Field CA2 stratum radiatum,CA2sr,,1,3,8690,423,9,1,466,/997/8/567/688/695/1089/1080/375/423/454/,7ED04B,,,f,467,3925355913,734881840,Field CA2 stratum radiatum -463,57,Field CA3,CA3,,1,3,8690,375,8,1,467,/997/8/567/688/695/1089/1080/375/463/,7ED04B,,,f,468,3396545448,734881840,Field CA3 -471,58,Field CA3 stratum lacunosum-moleculare,CA3slm,,1,3,8690,463,9,1,468,/997/8/567/688/695/1089/1080/375/463/471/,7ED04B,,,f,469,1604648938,734881840,Field CA3 stratum lacunosum-moleculare -479,59,Field CA3 stratum lucidum,CA3slu,,1,3,8690,463,9,1,469,/997/8/567/688/695/1089/1080/375/463/479/,7ED04B,,,f,470,41818108,734881840,Field CA3 stratum lucidum -486,60,Field CA3 stratum oriens,CA3so,,1,3,8690,463,9,1,470,/997/8/567/688/695/1089/1080/375/463/486/,7ED04B,,,f,471,1567718537,734881840,Field CA3 stratum oriens -495,61,Field CA3 pyramidal layer,CA3sp,,1,3,8690,463,9,1,471,/997/8/567/688/695/1089/1080/375/463/495/,66A83D,,,f,472,3453479715,734881840,Field CA3 pyramidal layer -504,62,Field CA3 stratum radiatum,CA3sr,,1,3,8690,463,9,1,472,/997/8/567/688/695/1089/1080/375/463/504/,7ED04B,,,f,473,111844200,734881840,Field CA3 stratum radiatum -726,90,Dentate gyrus,DG,,1,3,8690,1080,7,1,473,/997/8/567/688/695/1089/1080/726/,7ED04B,,,f,474,1938098114,734881840,Dentate gyrus -10703,,Dentate gyrus molecular layer,DG-mo,,1,3,8690,726,8,1,474,/997/8/567/688/695/1089/1080/726/10703/,7ED04B,,,f,475,4100692564,734881840,Dentate gyrus molecular layer -10704,,Dentate gyrus polymorph layer,DG-po,,1,3,8690,726,8,1,475,/997/8/567/688/695/1089/1080/726/10704/,7ED04B,,,f,476,810714779,734881840,Dentate gyrus polymorph layer -632,927,Dentate gyrus granule cell layer,DG-sg,,1,3,8690,726,8,1,476,/997/8/567/688/695/1089/1080/726/632/,66A83D,,,f,477,2252434327,734881840,Dentate gyrus granule cell layer -10702,,Dentate gyrus subgranular zone,DG-sgz,,1,3,8690,726,8,1,477,/997/8/567/688/695/1089/1080/726/10702/,7ED04B,,,f,478,2671485875,734881840,Dentate gyrus subgranular zone -734,91,Dentate gyrus crest,DGcr,,1,3,8690,726,8,1,478,/997/8/567/688/695/1089/1080/726/734/,7ED04B,,,f,479,3600589931,734881840,Dentate gyrus crest -742,92,Dentate gyrus crest molecular layer,DGcr-mo,,1,3,8690,734,9,1,479,/997/8/567/688/695/1089/1080/726/734/742/,7ED04B,,,f,480,1932703874,734881840,Dentate gyrus crest molecular layer -751,93,Dentate gyrus crest polymorph layer,DGcr-po,,1,3,8690,734,9,1,480,/997/8/567/688/695/1089/1080/726/734/751/,7ED04B,,,f,481,3070993485,734881840,Dentate gyrus crest polymorph layer -758,94,Dentate gyrus crest granule cell layer,DGcr-sg,,1,3,8690,734,9,1,481,/997/8/567/688/695/1089/1080/726/734/758/,7ED04B,,,f,482,3124792802,734881840,Dentate gyrus crest granule cell layer -766,95,Dentate gyrus lateral blade,DGlb,,1,3,8690,726,8,1,482,/997/8/567/688/695/1089/1080/726/766/,7ED04B,,,f,483,3990340696,734881840,Dentate gyrus lateral blade -775,96,Dentate gyrus lateral blade molecular layer,DGlb-mo,,1,3,8690,766,9,1,483,/997/8/567/688/695/1089/1080/726/766/775/,7ED04B,,,f,484,133010144,734881840,Dentate gyrus lateral blade molecular layer -782,97,Dentate gyrus lateral blade polymorph layer,DGlb-po,,1,3,8690,766,9,1,484,/997/8/567/688/695/1089/1080/726/766/782/,7ED04B,,,f,485,3285487151,734881840,Dentate gyrus lateral blade polymorph layer -790,98,Dentate gyrus lateral blade granule cell layer,DGlb-sg,,1,3,8690,766,9,1,485,/997/8/567/688/695/1089/1080/726/766/790/,7ED04B,,,f,486,2283049397,734881840,Dentate gyrus lateral blade granule cell layer -799,99,Dentate gyrus medial blade,DGmb,,1,3,8690,726,8,1,486,/997/8/567/688/695/1089/1080/726/799/,7ED04B,,,f,487,2717315927,734881840,Dentate gyrus medial blade -807,100,Dentate gyrus medial blade molecular layer,DGmb-mo,,1,3,8690,799,9,1,487,/997/8/567/688/695/1089/1080/726/799/807/,7ED04B,,,f,488,2851990255,734881840,Dentate gyrus medial blade molecular layer -815,101,Dentate gyrus medial blade polymorph layer,DGmb-po,,1,3,8690,799,9,1,488,/997/8/567/688/695/1089/1080/726/799/815/,7ED04B,,,f,489,1841624608,734881840,Dentate gyrus medial blade polymorph layer -823,102,Dentate gyrus medial blade granule cell layer,DGmb-sg,,1,3,8690,799,9,1,489,/997/8/567/688/695/1089/1080/726/799/823/,7ED04B,,,f,490,2031695292,734881840,Dentate gyrus medial blade granule cell layer -982,122,Fasciola cinerea,FC,8,1,3,8690,1080,7,1,490,/997/8/567/688/695/1089/1080/982/,7ED04B,,,f,491,2329016707,734881840,Fasciola cinerea -19,143,Induseum griseum,IG,,1,3,8690,1080,7,1,491,/997/8/567/688/695/1089/1080/19/,7ED04B,,,f,492,2117099319,734881840,Induseum griseum -822,385,Retrohippocampal region,RHP,,1,3,8690,1089,6,1,492,/997/8/567/688/695/1089/822/,32B825,,,f,493,3032553410,734881840,Retrohippocampal region -909,113,Entorhinal area,ENT,,1,3,8690,822,7,1,493,/997/8/567/688/695/1089/822/909/,32B825,,,f,494,2103154195,734881840,Entorhinal area -918,114,Entorhinal area lateral part,ENTl,,1,3,8690,909,8,1,494,/997/8/567/688/695/1089/822/909/918/,32B825,,,f,495,777102316,734881840,Entorhinal area lateral part -1121,988,Entorhinal area lateral part layer 1,ENTl1,,1,3,8690,918,9,1,495,/997/8/567/688/695/1089/822/909/918/1121/,32B825,,,f,496,1675684242,734881840,Entorhinal area lateral part layer 1 -20,992,Entorhinal area lateral part layer 2,ENTl2,,1,3,8690,918,9,1,496,/997/8/567/688/695/1089/822/909/918/20/,32B825,,,f,497,4209621032,734881840,Entorhinal area lateral part layer 2 -999,973,Entorhinal area lateral part layer 2/3,ENTl2/3,,1,3,8690,918,9,1,497,/997/8/567/688/695/1089/822/909/918/999/,32B825,,,f,498,1962026105,734881840,Entorhinal area lateral part layer 2/3 -715,1079,Entorhinal area lateral part layer 2a,ENTl2a,,1,3,8690,918,9,1,498,/997/8/567/688/695/1089/822/909/918/715/,32B825,,,f,499,3724082945,734881840,Entorhinal area lateral part layer 2a -764,1085,Entorhinal area lateral part layer 2b,ENTl2b,,1,3,8690,918,9,1,499,/997/8/567/688/695/1089/822/909/918/764/,32B825,,,f,500,1156689595,734881840,Entorhinal area lateral part layer 2b -52,996,Entorhinal area lateral part layer 3,ENTl3,,1,3,8690,918,9,1,500,/997/8/567/688/695/1089/822/909/918/52/,32B825,,,f,501,2381220030,734881840,Entorhinal area lateral part layer 3 -92,1001,Entorhinal area lateral part layer 4,ENTl4,,1,3,8690,918,9,1,501,/997/8/567/688/695/1089/822/909/918/92/,32B825,,,f,502,327818525,734881840,Entorhinal area lateral part layer 4 -312,887,Entorhinal area lateral part layer 4/5,ENTl4/5,,1,3,8690,918,9,1,502,/997/8/567/688/695/1089/822/909/918/312/,32B825,,,f,503,2568814078,734881840,Entorhinal area lateral part layer 4/5 -139,1007,Entorhinal area lateral part layer 5,ENTl5,,1,3,8690,918,9,1,503,/997/8/567/688/695/1089/822/909/918/139/,32B825,,,f,504,1686973835,734881840,Entorhinal area lateral part layer 5 -387,1038,Entorhinal area lateral part layer 5/6,ENTl5/6,,1,3,8690,918,9,1,504,/997/8/567/688/695/1089/822/909/918/387/,32B825,,,f,505,30918259,734881840,Entorhinal area lateral part layer 5/6 -28,993,Entorhinal area lateral part layer 6a,ENTl6a,,1,3,8690,918,9,1,505,/997/8/567/688/695/1089/822/909/918/28/,32B825,,,f,506,3113499141,734881840,Entorhinal area lateral part layer 6a -60,997,Entorhinal area lateral part layer 6b,ENTl6b,,1,3,8690,918,9,1,506,/997/8/567/688/695/1089/822/909/918/60/,32B825,,,f,507,547187647,734881840,Entorhinal area lateral part layer 6b -926,115,Entorhinal area medial part dorsal zone,ENTm,,1,3,8690,909,8,1,507,/997/8/567/688/695/1089/822/909/926/,32B825,,,f,508,3347737059,734881840,Entorhinal area medial part dorsal zone -526,914,Entorhinal area medial part dorsal zone layer 1,ENTm1,,1,3,8690,926,9,1,508,/997/8/567/688/695/1089/822/909/926/526/,32B825,,,f,509,2408608441,734881840,Entorhinal area medial part dorsal zone layer 1 -543,916,Entorhinal area medial part dorsal zone layer 2,ENTm2,,1,3,8690,926,9,1,509,/997/8/567/688/695/1089/822/909/926/543/,32B825,,,f,510,379134723,734881840,Entorhinal area medial part dorsal zone layer 2 -468,1048,Entorhinal area medial part dorsal zone layer 2a,ENTm2a,,1,3,8690,926,9,1,510,/997/8/567/688/695/1089/822/909/926/468/,32B825,,,f,511,1906865882,734881840,Entorhinal area medial part dorsal zone layer 2a -508,1053,Entorhinal area medial part dorsal zone layer 2b,ENTm2b,,1,3,8690,926,9,1,511,/997/8/567/688/695/1089/822/909/926/508/,32B825,,,f,512,3902875488,734881840,Entorhinal area medial part dorsal zone layer 2b -664,931,Entorhinal area medial part dorsal zone layer 3,ENTm3,,1,3,8690,926,9,1,512,/997/8/567/688/695/1089/822/909/926/664/,32B825,,,f,513,1637749653,734881840,Entorhinal area medial part dorsal zone layer 3 -712,937,Entorhinal area medial part dorsal zone layer 4,ENTm4,,1,3,8690,926,9,1,513,/997/8/567/688/695/1089/822/909/926/712/,32B825,,,f,514,4294608438,734881840,Entorhinal area medial part dorsal zone layer 4 -727,939,Entorhinal area medial part dorsal zone layer 5,ENTm5,,1,3,8690,926,9,1,514,/997/8/567/688/695/1089/822/909/926/727/,32B825,,,f,515,2298328736,734881840,Entorhinal area medial part dorsal zone layer 5 -550,634,Entorhinal area medial part dorsal zone layer 5/6,ENTm5/6,,1,3,8690,926,9,1,515,/997/8/567/688/695/1089/822/909/926/550/,32B825,,,f,516,276471206,734881840,Entorhinal area medial part dorsal zone layer 5/6 -743,941,Entorhinal area medial part dorsal zone layer 6,ENTm6,,1,3,8690,926,9,1,516,/997/8/567/688/695/1089/822/909/926/743/,32B825,,,f,517,301262618,734881840,Entorhinal area medial part dorsal zone layer 6 -934,116,Entorhinal area medial part ventral zone,ENTmv,,1,3,8690,909,8,1,517,/997/8/567/688/695/1089/822/909/934/,32B825,,,f,518,2437560989,734881840,Entorhinal area medial part ventral zone -259,1022,Entorhinal area medial part ventral zone layer 1,ENTmv1,,1,3,8690,934,9,1,518,/997/8/567/688/695/1089/822/909/934/259/,32B825,,,f,519,2194417390,734881840,Entorhinal area medial part ventral zone layer 1 -324,1030,Entorhinal area medial part ventral zone layer 2,ENTmv2,,1,3,8690,934,9,1,519,/997/8/567/688/695/1089/822/909/934/324/,32B825,,,f,520,465925972,734881840,Entorhinal area medial part ventral zone layer 2 -371,1036,Entorhinal area medial part ventral zone layer 3,ENTmv3,,1,3,8690,934,9,1,520,/997/8/567/688/695/1089/822/909/934/371/,32B825,,,f,521,1824671682,734881840,Entorhinal area medial part ventral zone layer 3 -419,1042,Entorhinal area medial part ventral zone layer 4,ENTmv4,,1,3,8690,934,9,1,521,/997/8/567/688/695/1089/822/909/934/419/,32B825,,,f,522,4071019105,734881840,Entorhinal area medial part ventral zone layer 4 -1133,1131,Entorhinal area medial part ventral zone layer 5/6,ENTmv5/6,,1,3,8690,934,9,1,522,/997/8/567/688/695/1089/822/909/934/1133/,32B825,,,f,523,2307313284,734881840,Entorhinal area medial part ventral zone layer 5/6 -843,246,Parasubiculum,PAR,,1,3,8690,822,7,1,523,/997/8/567/688/695/1089/822/843/,72D569,,,f,524,2447067507,734881840,Parasubiculum -10693,,Parasubiculum layer 1,PAR1,,1,3,8690,843,8,1,524,/997/8/567/688/695/1089/822/843/10693/,72D569,,,f,525,522985197,734881840,Parasubiculum layer 1 -10694,,Parasubiculum layer 2,PAR2,,1,3,8690,843,8,1,525,/997/8/567/688/695/1089/822/843/10694/,72D569,,,f,526,2250592087,734881840,Parasubiculum layer 2 -10695,,Parasubiculum layer 3,PAR3,,1,3,8690,843,8,1,526,/997/8/567/688/695/1089/822/843/10695/,72D569,,,f,527,4045569985,734881840,Parasubiculum layer 3 -1037,270,Postsubiculum,POST,,1,3,8690,822,7,1,527,/997/8/567/688/695/1089/822/1037/,48C83C,,,f,528,2028146433,734881840,Postsubiculum -10696,,Postsubiculum layer 1,POST1,,1,3,8690,1037,8,1,528,/997/8/567/688/695/1089/822/1037/10696/,48C83C,,,f,529,460318765,734881840,Postsubiculum layer 1 -10697,,Postsubiculum layer 2,POST2,,1,3,8690,1037,8,1,529,/997/8/567/688/695/1089/822/1037/10697/,48C83C,,,f,530,2187770263,734881840,Postsubiculum layer 2 -10698,,Postsubiculum layer 3,POST3,,1,3,8690,1037,8,1,530,/997/8/567/688/695/1089/822/1037/10698/,48C83C,,,f,531,4116809985,734881840,Postsubiculum layer 3 -1084,276,Presubiculum,PRE,,1,3,8690,822,7,1,531,/997/8/567/688/695/1089/822/1084/,59B947,,,f,532,1788290302,734881840,Presubiculum -10699,,Presubiculum layer 1,PRE1,,1,3,8690,1084,8,1,532,/997/8/567/688/695/1089/822/1084/10699/,59B947,,,f,533,2047674520,734881840,Presubiculum layer 1 -10700,,Presubiculum layer 2,PRE2,,1,3,8690,1084,8,1,533,/997/8/567/688/695/1089/822/1084/10700/,59B947,,,f,534,3808712994,734881840,Presubiculum layer 2 -10701,,Presubiculum layer 3,PRE3,,1,3,8690,1084,8,1,534,/997/8/567/688/695/1089/822/1084/10701/,59B947,,,f,535,2483251636,734881840,Presubiculum layer 3 -502,345,Subiculum,SUB,,1,3,8690,822,7,1,535,/997/8/567/688/695/1089/822/502/,4FC244,,,f,536,3628141206,734881840,Subiculum -509,346,Subiculum dorsal part,SUBd,,1,3,8690,502,8,1,536,/997/8/567/688/695/1089/822/502/509/,4FC244,,,f,537,454566553,734881840,Subiculum dorsal part -829,386,Subiculum dorsal part molecular layer,SUBd-m,,1,3,8690,509,9,1,537,/997/8/567/688/695/1089/822/502/509/829/,4FC244,,,f,538,3680523134,734881840,Subiculum dorsal part molecular layer -845,388,Subiculum dorsal part pyramidal layer,SUBd-sp,,1,3,8690,509,9,1,538,/997/8/567/688/695/1089/822/502/509/845/,4BB547,,,f,539,1397118745,734881840,Subiculum dorsal part pyramidal layer -837,387,Subiculum dorsal part stratum radiatum,SUBd-sr,,1,3,8690,509,9,1,539,/997/8/567/688/695/1089/822/502/509/837/,4FC244,,,f,540,3224949606,734881840,Subiculum dorsal part stratum radiatum -518,347,Subiculum ventral part,SUBv,,1,3,8690,502,8,1,540,/997/8/567/688/695/1089/822/502/518/,4FC244,,,f,541,606639779,734881840,Subiculum ventral part -853,389,Subiculum ventral part molecular layer,SUBv-m,,1,3,8690,518,9,1,541,/997/8/567/688/695/1089/822/502/518/853/,4FC244,,,f,542,1565058070,734881840,Subiculum ventral part molecular layer -870,391,Subiculum ventral part pyramidal layer,SUBv-sp,,1,3,8690,518,9,1,542,/997/8/567/688/695/1089/822/502/518/870/,4BB547,,,f,543,3580813425,734881840,Subiculum ventral part pyramidal layer -861,390,Subiculum ventral part stratum radiatum,SUBv-sr,,1,3,8690,518,9,1,543,/997/8/567/688/695/1089/822/502/518/861/,4FC244,,,f,544,2211910331,734881840,Subiculum ventral part stratum radiatum -484682470,,Prosubiculum,ProS,,1,3,8690,822,7,1,544,/997/8/567/688/695/1089/822/484682470/,58BA48,,,f,545,2109060151,734881840,Prosubiculum -484682475,,Prosubiculum dorsal part,ProSd,,1,3,8690,484682470,8,1,545,/997/8/567/688/695/1089/822/484682470/484682475/,58BA48,,,f,546,1109550123,734881840,Prosubiculum dorsal part -484682479,,Prosubiculum dorsal part molecular layer,ProSd-m,,1,3,8690,484682475,9,1,546,/997/8/567/688/695/1089/822/484682470/484682475/484682479/,58BA48,,,f,547,4007318067,734881840,Prosubiculum dorsal part molecular layer -484682483,,Prosubiculum dorsal part pyramidal layer,ProSd-sp,,1,3,8690,484682475,9,1,547,/997/8/567/688/695/1089/822/484682470/484682475/484682483/,56B84B,,,f,548,1727845972,734881840,Prosubiculum dorsal part pyramidal layer -484682487,,Prosubiculum dorsal part stratum radiatum,ProSd-sr,,1,3,8690,484682475,9,1,548,/997/8/567/688/695/1089/822/484682470/484682475/484682487/,58BA48,,,f,549,3361756362,734881840,Prosubiculum dorsal part stratum radiatum -484682492,,Prosubiculum ventral part,ProSv,,1,3,8690,484682470,8,1,549,/997/8/567/688/695/1089/822/484682470/484682492/,58BA48,,,f,550,18775621,734881840,Prosubiculum ventral part -484682496,,Prosubiculum ventral part molecular layer,ProSv-m,,1,3,8690,484682492,9,1,550,/997/8/567/688/695/1089/822/484682470/484682492/484682496/,58BA48,,,f,551,1427137466,734881840,Prosubiculum ventral part molecular layer -484682500,,Prosubiculum ventral part pyramidal layer,ProSv-sp,,1,3,8690,484682492,9,1,551,/997/8/567/688/695/1089/822/484682470/484682492/484682500/,56B84B,,,f,552,3711330269,734881840,Prosubiculum ventral part pyramidal layer -484682504,,Prosubiculum ventral part stratum radiatum,Prosv-sr,,1,3,8690,484682492,9,1,552,/997/8/567/688/695/1089/822/484682470/484682492/484682504/,58BA48,,,f,553,1556063743,734881840,Prosubiculum ventral part stratum radiatum -589508447,,Hippocampo-amygdalar transition area,HATA,,1,3,8690,822,7,1,553,/997/8/567/688/695/1089/822/589508447/,33B932,,,f,554,1243801218,734881840,Hippocampo-amygdalar transition area -484682508,,Area prostriata,APr,,1,3,8690,822,7,1,554,/997/8/567/688/695/1089/822/484682508/,33B932,,,f,555,407768279,734881840,Area prostriata -703,87,Cortical subplate,CTXsp,,1,3,8690,688,4,1,555,/997/8/567/688/703/,8ADA87,,,f,556,1297404944,734881840,Cortical subplate -16,1,Layer 6b isocortex,6b,,1,3,8690,703,5,1,556,/997/8/567/688/703/16/,8ADA87,,,f,557,2894025098,734881840,Layer 6b isocortex -583,72,Claustrum,CLA,,1,3,8690,703,5,1,557,/997/8/567/688/703/583/,8ADA87,,,f,558,2624439303,734881840,Claustrum -942,117,Endopiriform nucleus,EP,,1,3,8690,703,5,1,558,/997/8/567/688/703/942/,A0EE9D,,,f,559,2263280236,734881840,Endopiriform nucleus -952,118,Endopiriform nucleus dorsal part,EPd,,1,3,8690,942,6,1,559,/997/8/567/688/703/942/952/,A0EE9D,,,f,560,1669532679,734881840,Endopiriform nucleus dorsal part -966,120,Endopiriform nucleus ventral part,EPv,,1,3,8690,942,6,1,560,/997/8/567/688/703/942/966/,A0EE9D,,,f,561,870822862,734881840,Endopiriform nucleus ventral part -131,157,Lateral amygdalar nucleus,LA,,1,3,8690,703,5,1,561,/997/8/567/688/703/131/,90EB8D,,,f,562,437540953,734881840,Lateral amygdalar nucleus -295,36,Basolateral amygdalar nucleus,BLA,,1,3,8690,703,5,1,562,/997/8/567/688/703/295/,9DE79C,,,f,563,2535830127,734881840,Basolateral amygdalar nucleus -303,37,Basolateral amygdalar nucleus anterior part,BLAa,,1,3,8690,295,6,1,563,/997/8/567/688/703/295/303/,9DE79C,,,f,564,2570788319,734881840,Basolateral amygdalar nucleus anterior part -311,38,Basolateral amygdalar nucleus posterior part,BLAp,,1,3,8690,295,6,1,564,/997/8/567/688/703/295/311/,9DE79C,,,f,565,1545537085,734881840,Basolateral amygdalar nucleus posterior part -451,763,Basolateral amygdalar nucleus ventral part,BLAv,,1,3,8690,295,6,1,565,/997/8/567/688/703/295/451/,9DE79C,,,f,566,1149064021,734881840,Basolateral amygdalar nucleus ventral part -319,39,Basomedial amygdalar nucleus,BMA,,1,3,8690,703,5,1,566,/997/8/567/688/703/319/,84EA81,,,f,567,3634024678,734881840,Basomedial amygdalar nucleus -327,40,Basomedial amygdalar nucleus anterior part,BMAa,,1,3,8690,319,6,1,567,/997/8/567/688/703/319/327/,84EA81,,,f,568,2574993876,734881840,Basomedial amygdalar nucleus anterior part -334,41,Basomedial amygdalar nucleus posterior part,BMAp,,1,3,8690,319,6,1,568,/997/8/567/688/703/319/334/,84EA81,,,f,569,3419250657,734881840,Basomedial amygdalar nucleus posterior part -780,238,Posterior amygdalar nucleus,PA,,1,3,8690,703,5,1,569,/997/8/567/688/703/780/,97EC93,,,f,570,2472141022,734881840,Posterior amygdalar nucleus -623,77,Cerebral nuclei,CNU,,1,3,8690,567,3,1,570,/997/8/567/623/,98D6F9,,,f,571,3504435073,734881840,Cerebral nuclei -477,342,Striatum,STR,,1,3,8690,623,4,1,571,/997/8/567/623/477/,98D6F9,,,f,572,3310200382,734881840,Striatum -485,343,Striatum dorsal region,STRd,,1,3,8690,477,5,1,572,/997/8/567/623/477/485/,98D6F9,,,f,573,598493306,734881840,Striatum dorsal region -672,83,Caudoputamen,CP,,1,3,8690,485,6,1,573,/997/8/567/623/477/485/672/,98D6F9,,,f,574,2140591882,734881840,Caudoputamen -493,344,Striatum ventral region,STRv,,1,3,8690,477,5,1,574,/997/8/567/623/477/493/,80CDF8,,,f,575,1000674722,734881840,Striatum ventral region -56,6,Nucleus accumbens,ACB,,1,3,8690,493,6,1,575,/997/8/567/623/477/493/56/,80CDF8,,,f,576,2053079136,734881840,Nucleus accumbens -998,124,Fundus of striatum,FS,,1,3,8690,493,6,1,576,/997/8/567/623/477/493/998/,80CDF8,,,f,577,663741194,734881840,Fundus of striatum -754,235,Olfactory tubercle,OT,,1,3,8690,493,6,1,577,/997/8/567/623/477/493/754/,80CDF8,,,f,578,1598442672,734881840,Olfactory tubercle -481,767,Islands of Calleja,isl,,1,3,8690,754,7,1,578,/997/8/567/623/477/493/754/481/,80CDF8,,,f,579,2910337920,734881840,Islands of Calleja -489,768,Major island of Calleja,islm,,1,3,8690,754,7,1,579,/997/8/567/623/477/493/754/489/,80CDF8,,,f,580,883243095,734881840,Major island of Calleja -144,866,Olfactory tubercle layers 1-3,OT1-3,,1,3,8690,754,7,1,580,/997/8/567/623/477/493/754/144/,80CDF8,,,f,581,523471140,734881840,Olfactory tubercle layers 1-3 -458,764,Olfactory tubercle molecular layer,OT1,,1,3,8690,754,7,1,581,/997/8/567/623/477/493/754/458/,80CDF8,,,f,582,801971819,734881840,Olfactory tubercle molecular layer -465,765,Olfactory tubercle pyramidal layer,OT2,,1,3,8690,754,7,1,582,/997/8/567/623/477/493/754/465/,80CDF8,,,f,583,2817202700,734881840,Olfactory tubercle pyramidal layer -473,766,Olfactory tubercle polymorph layer,OT3,,1,3,8690,754,7,1,583,/997/8/567/623/477/493/754/473/,80CDF8,,,f,584,3958637220,734881840,Olfactory tubercle polymorph layer -549009199,,Lateral strip of striatum,LSS,,1,3,8690,493,6,1,584,/997/8/567/623/477/493/549009199/,80CDF8,,,f,585,1436254915,734881840,Lateral strip of striatum -275,175,Lateral septal complex,LSX,,1,3,8690,477,5,1,585,/997/8/567/623/477/275/,90CBED,,,f,586,1570366689,734881840,Lateral septal complex -242,171,Lateral septal nucleus,LS,,1,3,8690,275,6,1,586,/997/8/567/623/477/275/242/,90CBED,,,f,587,3913089740,734881840,Lateral septal nucleus -250,172,Lateral septal nucleus caudal (caudodorsal) part,LSc,,1,3,8690,242,7,1,587,/997/8/567/623/477/275/242/250/,90CBED,,,f,588,3378904121,734881840,Lateral septal nucleus caudal (caudodorsal) part -258,173,Lateral septal nucleus rostral (rostroventral) part,LSr,,1,3,8690,242,7,1,588,/997/8/567/623/477/275/242/258/,90CBED,,,f,589,2666394691,734881840,Lateral septal nucleus rostral (rostroventral) part -266,174,Lateral septal nucleus ventral part,LSv,,1,3,8690,242,7,1,589,/997/8/567/623/477/275/242/266/,90CBED,,,f,590,1660459064,734881840,Lateral septal nucleus ventral part -310,321,Septofimbrial nucleus,SF,,1,3,8690,275,6,1,590,/997/8/567/623/477/275/310/,90CBED,,,f,591,3780909616,734881840,Septofimbrial nucleus -333,324,Septohippocampal nucleus,SH,,1,3,8690,275,6,1,591,/997/8/567/623/477/275/333/,90CBED,,,f,592,2151592702,734881840,Septohippocampal nucleus -278,317,Striatum-like amygdalar nuclei,sAMY,,1,3,8690,477,5,1,592,/997/8/567/623/477/278/,80C0E2,,,f,593,746209354,734881840,Striatum-like amygdalar nuclei -23,2,Anterior amygdalar area,AAA,,1,3,8690,278,6,1,593,/997/8/567/623/477/278/23/,80C0E2,,,f,594,4252873038,734881840,Anterior amygdalar area -292,460,Bed nucleus of the accessory olfactory tract,BA,,1,3,8690,278,6,1,594,/997/8/567/623/477/278/292/,80C0E2,,,f,595,1650550173,734881840,Bed nucleus of the accessory olfactory tract -536,66,Central amygdalar nucleus,CEA,,1,3,8690,278,6,1,595,/997/8/567/623/477/278/536/,80C0E2,,,f,596,3284898075,734881840,Central amygdalar nucleus -544,67,Central amygdalar nucleus capsular part,CEAc,,1,3,8690,536,7,1,596,/997/8/567/623/477/278/536/544/,80C0E2,,,f,597,4187015181,734881840,Central amygdalar nucleus capsular part -551,68,Central amygdalar nucleus lateral part,CEAl,,1,3,8690,536,7,1,597,/997/8/567/623/477/278/536/551/,80C0E2,,,f,598,1239602128,734881840,Central amygdalar nucleus lateral part -559,69,Central amygdalar nucleus medial part,CEAm,,1,3,8690,536,7,1,598,/997/8/567/623/477/278/536/559/,80C0E2,,,f,599,2654652343,734881840,Central amygdalar nucleus medial part -1105,137,Intercalated amygdalar nucleus,IA,,1,3,8690,278,6,1,599,/997/8/567/623/477/278/1105/,80C0E2,,,f,600,1834113869,734881840,Intercalated amygdalar nucleus -403,191,Medial amygdalar nucleus,MEA,,1,3,8690,278,6,1,600,/997/8/567/623/477/278/403/,80C0E2,,,f,601,3783070713,734881840,Medial amygdalar nucleus -411,192,Medial amygdalar nucleus anterodorsal part,MEAad,,1,3,8690,403,7,1,601,/997/8/567/623/477/278/403/411/,80C0E2,,,f,602,2891844805,734881840,Medial amygdalar nucleus anterodorsal part -418,193,Medial amygdalar nucleus anteroventral part,MEAav,,1,3,8690,403,7,1,602,/997/8/567/623/477/278/403/418/,80C0E2,,,f,603,1178783058,734881840,Medial amygdalar nucleus anteroventral part -426,194,Medial amygdalar nucleus posterodorsal part,MEApd,,1,3,8690,403,7,1,603,/997/8/567/623/477/278/403/426/,80C0E2,,,f,604,4033616565,734881840,Medial amygdalar nucleus posterodorsal part -472,907,Medial amygdalar nucleus posterodorsal part sublayer a,MEApd-a,,1,3,8690,426,8,1,604,/997/8/567/623/477/278/403/426/472/,80C0E2,,,f,605,204681813,734881840,Medial amygdalar nucleus posterodorsal part sublayer a -480,908,Medial amygdalar nucleus posterodorsal part sublayer b,MEApd-b,,1,3,8690,426,8,1,605,/997/8/567/623/477/278/403/426/480/,80C0E2,,,f,606,2503631855,734881840,Medial amygdalar nucleus posterodorsal part sublayer b -487,909,Medial amygdalar nucleus posterodorsal part sublayer c,MEApd-c,,1,3,8690,426,8,1,606,/997/8/567/623/477/278/403/426/487/,80C0E2,,,f,607,3795669881,734881840,Medial amygdalar nucleus posterodorsal part sublayer c -435,195,Medial amygdalar nucleus posteroventral part,MEApv,,1,3,8690,403,7,1,607,/997/8/567/623/477/278/403/435/,80C0E2,,,f,608,370904696,734881840,Medial amygdalar nucleus posteroventral part -803,241,Pallidum,PAL,,1,3,8690,623,4,1,608,/997/8/567/623/803/,8599CC,,,f,609,1451914672,734881840,Pallidum -818,243,Pallidum dorsal region,PALd,,1,3,8690,803,5,1,609,/997/8/567/623/803/818/,8599CC,,,f,610,463940218,734881840,Pallidum dorsal region -1022,127,Globus pallidus external segment,GPe,,1,3,8690,818,6,1,610,/997/8/567/623/803/818/1022/,8599CC,,,f,611,3096725950,734881840,Globus pallidus external segment -1031,128,Globus pallidus internal segment,GPi,,1,3,8690,818,6,1,611,/997/8/567/623/803/818/1031/,8599CC,,,f,612,2033111499,734881840,Globus pallidus internal segment -835,245,Pallidum ventral region,PALv,,1,3,8690,803,5,1,612,/997/8/567/623/803/835/,A2B1D8,,,f,613,1000152768,734881840,Pallidum ventral region -342,325,Substantia innominata,SI,,1,3,8690,835,6,1,613,/997/8/567/623/803/835/342/,A2B1D8,,,f,614,4279866235,734881840,Substantia innominata -298,178,Magnocellular nucleus,MA,,1,3,8690,835,6,1,614,/997/8/567/623/803/835/298/,A2B1D8,,,f,615,1799914489,734881840,Magnocellular nucleus -826,244,Pallidum medial region,PALm,,1,3,8690,803,5,1,615,/997/8/567/623/803/826/,96A7D3,,,f,616,13293402,734881840,Pallidum medial region -904,395,Medial septal complex,MSC,,1,3,8690,826,6,1,616,/997/8/567/623/803/826/904/,96A7D3,,,f,617,3136033045,734881840,Medial septal complex -564,211,Medial septal nucleus,MS,,1,3,8690,904,7,1,617,/997/8/567/623/803/826/904/564/,96A7D3,,,f,618,239662904,734881840,Medial septal nucleus -596,215,Diagonal band nucleus,NDB,,1,3,8690,904,7,1,618,/997/8/567/623/803/826/904/596/,96A7D3,,,f,619,278981173,734881840,Diagonal band nucleus -581,355,Triangular nucleus of septum,TRS,,1,3,8690,826,6,1,619,/997/8/567/623/803/826/581/,96A7D3,,,f,620,609929054,734881840,Triangular nucleus of septum -809,242,Pallidum caudal region,PALc,,1,3,8690,803,5,1,620,/997/8/567/623/803/809/,B3C0DF,,,f,621,1672245294,734881840,Pallidum caudal region -351,43,Bed nuclei of the stria terminalis,BST,,1,3,8690,809,6,1,621,/997/8/567/623/803/809/351/,B3C0DF,,,f,622,972962091,734881840,Bed nuclei of the stria terminalis -359,44,Bed nuclei of the stria terminalis anterior division,BSTa,,1,3,8690,351,7,1,622,/997/8/567/623/803/809/351/359/,B3C0DF,,,f,623,463308472,734881840,Bed nuclei of the stria terminalis anterior division -537,774,Bed nuclei of the stria terminalis anterior division anterolateral area,BSTal,,1,3,8690,359,8,1,623,/997/8/567/623/803/809/351/359/537/,B3C0DF,,,f,624,1166114521,734881840,Bed nuclei of the stria terminalis anterior division anterolateral area -498,769,Bed nuclei of the stria terminalis anterior division anteromedial area,BSTam,,1,3,8690,359,8,1,624,/997/8/567/623/803/809/351/359/498/,B3C0DF,,,f,625,718255829,734881840,Bed nuclei of the stria terminalis anterior division anteromedial area -505,770,Bed nuclei of the stria terminalis anterior division dorsomedial nucleus,BSTdm,,1,3,8690,359,8,1,625,/997/8/567/623/803/809/351/359/505/,B3C0DF,,,f,626,2749560296,734881840,Bed nuclei of the stria terminalis anterior division dorsomedial nucleus -513,771,Bed nuclei of the stria terminalis anterior division fusiform nucleus,BSTfu,,1,3,8690,359,8,1,626,/997/8/567/623/803/809/351/359/513/,B3C0DF,,,f,627,1253377207,734881840,Bed nuclei of the stria terminalis anterior division fusiform nucleus -546,775,Bed nuclei of the stria terminalis anterior division juxtacapsular nucleus,BSTju,,1,3,8690,359,8,1,627,/997/8/567/623/803/809/351/359/546/,B3C0DF,,,f,628,3052837647,734881840,Bed nuclei of the stria terminalis anterior division juxtacapsular nucleus -521,772,Bed nuclei of the stria terminalis anterior division magnocellular nucleus,BSTmg,,1,3,8690,359,8,1,628,/997/8/567/623/803/809/351/359/521/,B3C0DF,,,f,629,178858531,734881840,Bed nuclei of the stria terminalis anterior division magnocellular nucleus -554,776,Bed nuclei of the stria terminalis anterior division oval nucleus,BSTov,,1,3,8690,359,8,1,629,/997/8/567/623/803/809/351/359/554/,B3C0DF,,,f,630,3357819933,734881840,Bed nuclei of the stria terminalis anterior division oval nucleus -562,777,Bed nuclei of the stria terminalis anterior division rhomboid nucleus,BSTrh,,1,3,8690,359,8,1,630,/997/8/567/623/803/809/351/359/562/,B3C0DF,,,f,631,1020963585,734881840,Bed nuclei of the stria terminalis anterior division rhomboid nucleus -529,773,Bed nuclei of the stria terminalis anterior division ventral nucleus,BSTv,,1,3,8690,359,8,1,631,/997/8/567/623/803/809/351/359/529/,B3C0DF,,,f,632,2523776098,734881840,Bed nuclei of the stria terminalis anterior division ventral nucleus -367,45,Bed nuclei of the stria terminalis posterior division,BSTp,,1,3,8690,351,7,1,632,/997/8/567/623/803/809/351/367/,B3C0DF,,,f,633,4020110230,734881840,Bed nuclei of the stria terminalis posterior division -569,778,Bed nuclei of the stria terminalis posterior division dorsal nucleus,BSTd,,1,3,8690,367,8,1,633,/997/8/567/623/803/809/351/367/569/,B3C0DF,,,f,634,1274650938,734881840,Bed nuclei of the stria terminalis posterior division dorsal nucleus -578,779,Bed nuclei of the stria terminalis posterior division principal nucleus,BSTpr,,1,3,8690,367,8,1,634,/997/8/567/623/803/809/351/367/578/,B3C0DF,,,f,635,366620301,734881840,Bed nuclei of the stria terminalis posterior division principal nucleus -585,780,Bed nuclei of the stria terminalis posterior division interfascicular nucleus,BSTif,,1,3,8690,367,8,1,635,/997/8/567/623/803/809/351/367/585/,B3C0DF,,,f,636,2460616957,734881840,Bed nuclei of the stria terminalis posterior division interfascicular nucleus -594,781,Bed nuclei of the stria terminalis posterior division transverse nucleus,BSTtr,,1,3,8690,367,8,1,636,/997/8/567/623/803/809/351/367/594/,B3C0DF,,,f,637,3708185785,734881840,Bed nuclei of the stria terminalis posterior division transverse nucleus -602,782,Bed nuclei of the stria terminalis posterior division strial extension,BSTse,,1,3,8690,367,8,1,637,/997/8/567/623/803/809/351/367/602/,B3C0DF,,,f,638,1576149119,734881840,Bed nuclei of the stria terminalis posterior division strial extension -287,35,Bed nucleus of the anterior commissure,BAC,,1,3,8690,809,6,1,638,/997/8/567/623/803/809/287/,B3C0DF,,,f,639,1468320867,734881840,Bed nucleus of the anterior commissure -343,42,Brain stem,BS,,1,3,8690,8,2,1,639,/997/8/343/,FF7080,,,f,640,1463546236,734881840,Brain stem -1129,140,Interbrain,IB,,1,3,8690,343,3,1,640,/997/8/343/1129/,FF7080,,,f,641,3609083732,734881840,Interbrain -549,351,Thalamus,TH,,1,3,8690,1129,4,1,641,/997/8/343/1129/549/,FF7080,,,f,642,3417047876,734881840,Thalamus -864,107,Thalamus sensory-motor cortex related,DORsm,,1,3,8690,549,5,1,642,/997/8/343/1129/549/864/,FF8084,,,f,643,3240123133,734881840,Thalamus sensory-motor cortex related -637,362,Ventral group of the dorsal thalamus,VENT,,1,3,8690,864,6,1,643,/997/8/343/1129/549/864/637/,FF8084,,,f,644,3720800461,734881840,Ventral group of the dorsal thalamus -629,361,Ventral anterior-lateral complex of the thalamus,VAL,,1,3,8690,637,7,1,644,/997/8/343/1129/549/864/637/629/,FF8084,,,f,645,387269350,734881840,Ventral anterior-lateral complex of the thalamus -685,368,Ventral medial nucleus of the thalamus,VM,,1,3,8690,637,7,1,645,/997/8/343/1129/549/864/637/685/,FF8084,,,f,646,1314288168,734881840,Ventral medial nucleus of the thalamus -709,371,Ventral posterior complex of the thalamus,VP,,1,3,8690,637,7,1,646,/997/8/343/1129/549/864/637/709/,FF8084,,,f,647,359843477,734881840,Ventral posterior complex of the thalamus -718,372,Ventral posterolateral nucleus of the thalamus,VPL,,1,3,8690,709,8,1,647,/997/8/343/1129/549/864/637/709/718/,FF8084,,,f,648,2885291680,734881840,Ventral posterolateral nucleus of the thalamus -725,373,Ventral posterolateral nucleus of the thalamus parvicellular part,VPLpc,,1,3,8690,709,8,1,648,/997/8/343/1129/549/864/637/709/725/,FF8084,,,f,649,2868220330,734881840,Ventral posterolateral nucleus of the thalamus parvicellular part -733,374,Ventral posteromedial nucleus of the thalamus,VPM,,1,3,8690,709,8,1,649,/997/8/343/1129/549/864/637/709/733/,FF8084,,,f,650,535836268,734881840,Ventral posteromedial nucleus of the thalamus -741,375,Ventral posteromedial nucleus of the thalamus parvicellular part,VPMpc,,1,3,8690,709,8,1,650,/997/8/343/1129/549/864/637/709/741/,FF8084,,,f,651,2993275992,734881840,Ventral posteromedial nucleus of the thalamus parvicellular part -563807435,,Posterior triangular thalamic nucleus,PoT,,1,3,8690,637,7,1,651,/997/8/343/1129/549/864/637/563807435/,FF8084,,,f,652,2408746103,734881840,Posterior triangular thalamic nucleus -406,333,Subparafascicular nucleus,SPF,,1,3,8690,864,6,1,652,/997/8/343/1129/549/864/406/,FF8084,,,f,653,411188720,734881840,Subparafascicular nucleus -414,334,Subparafascicular nucleus magnocellular part,SPFm,,1,3,8690,406,7,1,653,/997/8/343/1129/549/864/406/414/,FF8084,,,f,654,1493863119,734881840,Subparafascicular nucleus magnocellular part -422,335,Subparafascicular nucleus parvicellular part,SPFp,,1,3,8690,406,7,1,654,/997/8/343/1129/549/864/406/422/,FF8084,,,f,655,1800790730,734881840,Subparafascicular nucleus parvicellular part -609,783,Subparafascicular area,SPA,,1,3,8690,864,6,1,655,/997/8/343/1129/549/864/609/,FF8084,,,f,656,3168649413,734881840,Subparafascicular area -1044,271,Peripeduncular nucleus,PP,,1,3,8690,864,6,1,656,/997/8/343/1129/549/864/1044/,FF8084,,,f,657,4073956777,734881840,Peripeduncular nucleus -1008,125,Geniculate group dorsal thalamus,GENd,,1,3,8690,864,6,1,657,/997/8/343/1129/549/864/1008/,FF8084,,,f,658,4155059555,734881840,Geniculate group dorsal thalamus -475,200,Medial geniculate complex,MG,,1,3,8690,1008,7,1,658,/997/8/343/1129/549/864/1008/475/,FF8084,,,f,659,3303425611,734881840,Medial geniculate complex -1072,416,Medial geniculate complex dorsal part,MGd,,1,3,8690,475,8,1,659,/997/8/343/1129/549/864/1008/475/1072/,FF8084,,,f,660,69811582,734881840,Medial geniculate complex dorsal part -1079,417,Medial geniculate complex ventral part,MGv,,1,3,8690,475,8,1,660,/997/8/343/1129/549/864/1008/475/1079/,FF8084,,,f,661,442093671,734881840,Medial geniculate complex ventral part -1088,418,Medial geniculate complex medial part,MGm,,1,3,8690,475,8,1,661,/997/8/343/1129/549/864/1008/475/1088/,FF8084,,,f,662,1525122346,734881840,Medial geniculate complex medial part -170,162,Dorsal part of the lateral geniculate complex,LGd,,1,3,8690,1008,7,1,662,/997/8/343/1129/549/864/1008/170/,FF8084,,,f,663,2639836426,734881840,Dorsal part of the lateral geniculate complex -496345664,,Dorsal part of the lateral geniculate complex shell,LGd-sh,,1,3,8690,170,8,1,663,/997/8/343/1129/549/864/1008/170/496345664/,FF8084,,,f,664,3071297945,734881840,Dorsal part of the lateral geniculate complex shell -496345668,,Dorsal part of the lateral geniculate complex core,LGd-co,,1,3,8690,170,8,1,664,/997/8/343/1129/549/864/1008/170/496345668/,FF8084,,,f,665,2339811100,734881840,Dorsal part of the lateral geniculate complex core -496345672,,Dorsal part of the lateral geniculate complex ipsilateral zone,LGd-ip,,1,3,8690,170,8,1,665,/997/8/343/1129/549/864/1008/170/496345672/,FF8084,,,f,666,1161910872,734881840,Dorsal part of the lateral geniculate complex ipsilateral zone -856,106,Thalamus polymodal association cortex related,DORpm,,1,3,8690,549,5,1,666,/997/8/343/1129/549/856/,FF909F,,,f,667,171097726,734881840,Thalamus polymodal association cortex related -138,158,Lateral group of the dorsal thalamus,LAT,,1,3,8690,856,6,1,667,/997/8/343/1129/549/856/138/,FF909F,,,f,668,1237671945,734881840,Lateral group of the dorsal thalamus -218,168,Lateral posterior nucleus of the thalamus,LP,,1,3,8690,138,7,1,668,/997/8/343/1129/549/856/138/218/,FF909F,,,f,669,910558492,734881840,Lateral posterior nucleus of the thalamus -1020,268,Posterior complex of the thalamus,PO,,1,3,8690,138,7,1,669,/997/8/343/1129/549/856/138/1020/,FF909F,,,f,670,2102251263,734881840,Posterior complex of the thalamus -1029,269,Posterior limiting nucleus of the thalamus,POL,,1,3,8690,138,7,1,670,/997/8/343/1129/549/856/138/1029/,FF909F,,,f,671,3921343755,734881840,Posterior limiting nucleus of the thalamus -325,323,Suprageniculate nucleus,SGN,,1,3,8690,138,7,1,671,/997/8/343/1129/549/856/138/325/,FF909F,,,f,672,2630178778,734881840,Suprageniculate nucleus -560581551,,Ethmoid nucleus of the thalamus,Eth,,1,3,8690,138,7,1,672,/997/8/343/1129/549/856/138/560581551/,FF909F,,,f,673,2246666137,734881840,Ethmoid nucleus of the thalamus -560581555,,Retroethmoid nucleus,REth,,1,3,8690,138,7,1,673,/997/8/343/1129/549/856/138/560581555/,FF909F,,,f,674,214700216,734881840,Retroethmoid nucleus -239,29,Anterior group of the dorsal thalamus,ATN,,1,3,8690,856,6,1,674,/997/8/343/1129/549/856/239/,FF909F,,,f,675,3414692864,734881840,Anterior group of the dorsal thalamus -255,31,Anteroventral nucleus of thalamus,AV,,1,3,8690,239,7,1,675,/997/8/343/1129/549/856/239/255/,FF909F,,,f,676,2379451227,734881840,Anteroventral nucleus of thalamus -127,15,Anteromedial nucleus,AM,,1,3,8690,239,7,1,676,/997/8/343/1129/549/856/239/127/,FF909F,,,f,677,70138096,734881840,Anteromedial nucleus -1096,419,Anteromedial nucleus dorsal part,AMd,,1,3,8690,127,8,1,677,/997/8/343/1129/549/856/239/127/1096/,FF909F,,,f,678,2125395068,734881840,Anteromedial nucleus dorsal part -1104,420,Anteromedial nucleus ventral part,AMv,,1,3,8690,127,8,1,678,/997/8/343/1129/549/856/239/127/1104/,FF909F,,,f,679,4096603778,734881840,Anteromedial nucleus ventral part -64,7,Anterodorsal nucleus,AD,,1,3,8690,239,7,1,679,/997/8/343/1129/549/856/239/64/,FF909F,,,f,680,1062958533,734881840,Anterodorsal nucleus -1120,139,Interanteromedial nucleus of the thalamus,IAM,,1,3,8690,239,7,1,680,/997/8/343/1129/549/856/239/1120/,FF909F,,,f,681,3666899134,734881840,Interanteromedial nucleus of the thalamus -1113,138,Interanterodorsal nucleus of the thalamus,IAD,,1,3,8690,239,7,1,681,/997/8/343/1129/549/856/239/1113/,FF909F,,,f,682,3914886814,734881840,Interanterodorsal nucleus of the thalamus -155,160,Lateral dorsal nucleus of thalamus,LD,,1,3,8690,239,7,1,682,/997/8/343/1129/549/856/239/155/,FF909F,,,f,683,3458000123,734881840,Lateral dorsal nucleus of thalamus -444,196,Medial group of the dorsal thalamus,MED,,1,3,8690,856,6,1,683,/997/8/343/1129/549/856/444/,FF909F,,,f,684,2351110645,734881840,Medial group of the dorsal thalamus -59,148,Intermediodorsal nucleus of the thalamus,IMD,,1,3,8690,444,7,1,684,/997/8/343/1129/549/856/444/59/,FF909F,,,f,685,80523806,734881840,Intermediodorsal nucleus of the thalamus -362,186,Mediodorsal nucleus of thalamus,MD,,1,3,8690,444,7,1,685,/997/8/343/1129/549/856/444/362/,FF909F,,,f,686,2240499387,734881840,Mediodorsal nucleus of thalamus -617,784,Mediodorsal nucleus of the thalamus central part,MDc,,1,3,8690,362,8,1,686,/997/8/343/1129/549/856/444/362/617/,FF909F,,,f,687,1540012109,734881840,Mediodorsal nucleus of the thalamus central part -626,785,Mediodorsal nucleus of the thalamus lateral part,MDl,,1,3,8690,362,8,1,687,/997/8/343/1129/549/856/444/362/626/,FF909F,,,f,688,313529261,734881840,Mediodorsal nucleus of the thalamus lateral part -636,786,Mediodorsal nucleus of the thalamus medial part,MDm,,1,3,8690,362,8,1,688,/997/8/343/1129/549/856/444/362/636/,FF909F,,,f,689,307537672,734881840,Mediodorsal nucleus of the thalamus medial part -366,328,Submedial nucleus of the thalamus,SMT,,1,3,8690,444,7,1,689,/997/8/343/1129/549/856/444/366/,FF909F,,,f,690,524654949,734881840,Submedial nucleus of the thalamus -1077,275,Perireunensis nucleus,PR,,1,3,8690,444,7,1,690,/997/8/343/1129/549/856/444/1077/,FF909F,,,f,691,985229058,734881840,Perireunensis nucleus -571,212,Midline group of the dorsal thalamus,MTN,,1,3,8690,856,6,1,691,/997/8/343/1129/549/856/571/,FF909F,,,f,692,94203556,734881840,Midline group of the dorsal thalamus -149,301,Paraventricular nucleus of the thalamus,PVT,,1,3,8690,571,7,1,692,/997/8/343/1129/549/856/571/149/,FF909F,,,f,693,3631961400,734881840,Paraventricular nucleus of the thalamus -15,284,Parataenial nucleus,PT,,1,3,8690,571,7,1,693,/997/8/343/1129/549/856/571/15/,FF909F,,,f,694,1224128658,734881840,Parataenial nucleus -181,305,Nucleus of reuniens,RE,,1,3,8690,571,7,1,694,/997/8/343/1129/549/856/571/181/,FF909F,,,f,695,2113641023,734881840,Nucleus of reuniens -560581559,,Xiphoid thalamic nucleus,Xi,,1,3,8690,571,7,1,695,/997/8/343/1129/549/856/571/560581559/,FF909F,,,f,696,1561183712,734881840,Xiphoid thalamic nucleus -51,147,Intralaminar nuclei of the dorsal thalamus,ILM,,1,3,8690,856,6,1,696,/997/8/343/1129/549/856/51/,FF909F,,,f,697,53488759,734881840,Intralaminar nuclei of the dorsal thalamus -189,306,Rhomboid nucleus,RH,,1,3,8690,51,7,1,697,/997/8/343/1129/549/856/51/189/,FF909F,,,f,698,2507270646,734881840,Rhomboid nucleus -599,74,Central medial nucleus of the thalamus,CM,,1,3,8690,51,7,1,698,/997/8/343/1129/549/856/51/599/,FF909F,,,f,699,769425900,734881840,Central medial nucleus of the thalamus -907,254,Paracentral nucleus,PCN,,1,3,8690,51,7,1,699,/997/8/343/1129/549/856/51/907/,FF909F,,,f,700,34102893,734881840,Paracentral nucleus -575,71,Central lateral nucleus of the thalamus,CL,,1,3,8690,51,7,1,700,/997/8/343/1129/549/856/51/575/,FF909F,,,f,701,1181786423,734881840,Central lateral nucleus of the thalamus -930,257,Parafascicular nucleus,PF,,1,3,8690,51,7,1,701,/997/8/343/1129/549/856/51/930/,FF909F,,,f,702,2732022867,734881840,Parafascicular nucleus -560581563,,Posterior intralaminar thalamic nucleus,PIL,,1,3,8690,51,7,1,702,/997/8/343/1129/549/856/51/560581563/,FF909F,,,f,703,809074043,734881840,Posterior intralaminar thalamic nucleus -262,315,Reticular nucleus of the thalamus,RT,,1,3,8690,856,6,1,703,/997/8/343/1129/549/856/262/,FF909F,,,f,704,2529312902,734881840,Reticular nucleus of the thalamus -1014,126,Geniculate group ventral thalamus,GENv,,1,3,8690,856,6,1,704,/997/8/343/1129/549/856/1014/,FF909F,,,f,705,401556039,734881840,Geniculate group ventral thalamus -27,144,Intergeniculate leaflet of the lateral geniculate complex,IGL,,1,3,8690,1014,7,1,705,/997/8/343/1129/549/856/1014/27/,FF909F,,,f,706,1900856090,734881840,Intergeniculate leaflet of the lateral geniculate complex -563807439,,Intermediate geniculate nucleus,IntG,,1,3,8690,1014,7,1,706,/997/8/343/1129/549/856/1014/563807439/,FF909F,,,f,707,2887461472,734881840,Intermediate geniculate nucleus -178,163,Ventral part of the lateral geniculate complex,LGv,,1,3,8690,1014,7,1,707,/997/8/343/1129/549/856/1014/178/,FF909F,,,f,708,685555022,734881840,Ventral part of the lateral geniculate complex -300,461,Ventral part of the lateral geniculate complex lateral zone,LGvl,,1,3,8690,178,8,1,708,/997/8/343/1129/549/856/1014/178/300/,FF909F,,,f,709,3780597444,734881840,Ventral part of the lateral geniculate complex lateral zone -316,463,Ventral part of the lateral geniculate complex medial zone,LGvm,,1,3,8690,178,8,1,709,/997/8/343/1129/549/856/1014/178/316/,FF909F,,,f,710,579977949,734881840,Ventral part of the lateral geniculate complex medial zone -321,464,Subgeniculate nucleus,SubG,,1,3,8690,1014,7,1,710,/997/8/343/1129/549/856/1014/321/,FF909F,,,f,711,3545734096,734881840,Subgeniculate nucleus -958,119,Epithalamus,EPI,,1,3,8690,856,6,1,711,/997/8/343/1129/549/856/958/,FF909F,,,f,712,2649294941,734881840,Epithalamus -483,201,Medial habenula,MH,,1,3,8690,958,7,1,712,/997/8/343/1129/549/856/958/483/,FF909F,,,f,713,176609275,734881840,Medial habenula -186,164,Lateral habenula,LH,,1,3,8690,958,7,1,713,/997/8/343/1129/549/856/958/186/,FF909F,,,f,714,774070380,734881840,Lateral habenula -953,260,Pineal body,PIN,,1,3,8690,958,7,1,714,/997/8/343/1129/549/856/958/953/,FF909F,,,f,715,1539032129,734881840,Pineal body -1097,136,Hypothalamus,HY,,1,3,8690,1129,4,1,715,/997/8/343/1129/1097/,E64438,,,f,716,3938328193,734881840,Hypothalamus -157,302,Periventricular zone,PVZ,,1,3,8690,1097,5,1,716,/997/8/343/1129/1097/157/,FF5D50,,,f,717,1581950529,734881840,Periventricular zone -390,331,Supraoptic nucleus,SO,,1,3,8690,157,6,1,717,/997/8/343/1129/1097/157/390/,FF5D50,,,f,718,3787702178,734881840,Supraoptic nucleus -332,465,Accessory supraoptic group,ASO,,1,3,8690,157,6,1,718,/997/8/343/1129/1097/157/332/,FF5D50,,,f,719,1856950247,734881840,Accessory supraoptic group -432,902,Nucleus circularis,NC,,1,3,8690,332,7,1,719,/997/8/343/1129/1097/157/332/432/,FF5D50,,,f,720,163854910,734881840,Nucleus circularis -38,287,Paraventricular hypothalamic nucleus,PVH,,1,3,8690,157,6,1,720,/997/8/343/1129/1097/157/38/,FF5D50,,,f,721,3443963014,734881840,Paraventricular hypothalamic nucleus -71,291,Paraventricular hypothalamic nucleus magnocellular division,PVHm,,1,3,8690,38,7,1,721,/997/8/343/1129/1097/157/38/71/,FF5D50,,,f,722,4268996545,734881840,Paraventricular hypothalamic nucleus magnocellular division -47,288,Paraventricular hypothalamic nucleus magnocellular division anterior magnocellular part,PVHam,,1,3,8690,71,8,1,722,/997/8/343/1129/1097/157/38/71/47/,FF5D50,,,f,723,4203299482,734881840,Paraventricular hypothalamic nucleus magnocellular division anterior magnocellular part -79,292,Paraventricular hypothalamic nucleus magnocellular division medial magnocellular part,PVHmm,,1,3,8690,71,8,1,723,/997/8/343/1129/1097/157/38/71/79/,FF5D50,,,f,724,2109016078,734881840,Paraventricular hypothalamic nucleus magnocellular division medial magnocellular part -103,295,Paraventricular hypothalamic nucleus magnocellular division posterior magnocellular part,PVHpm,,1,3,8690,71,8,1,724,/997/8/343/1129/1097/157/38/71/103/,FF5D50,,,f,725,250376013,734881840,Paraventricular hypothalamic nucleus magnocellular division posterior magnocellular part -652,788,Paraventricular hypothalamic nucleus magnocellular division posterior magnocellular part lateral zone,PVHpml,,1,3,8690,103,9,1,725,/997/8/343/1129/1097/157/38/71/103/652/,FF5D50,,,f,726,2251532786,734881840,Paraventricular hypothalamic nucleus magnocellular division posterior magnocellular part lateral zone -660,789,Paraventricular hypothalamic nucleus magnocellular division posterior magnocellular part medial zone,PVHpmm,,1,3,8690,103,9,1,726,/997/8/343/1129/1097/157/38/71/103/660/,FF5D50,,,f,727,2602842182,734881840,Paraventricular hypothalamic nucleus magnocellular division posterior magnocellular part medial zone -94,294,Paraventricular hypothalamic nucleus parvicellular division,PVHp,,1,3,8690,38,7,1,727,/997/8/343/1129/1097/157/38/94/,FF5D50,,,f,728,2057162096,734881840,Paraventricular hypothalamic nucleus parvicellular division -55,289,Paraventricular hypothalamic nucleus parvicellular division anterior parvicellular part,PVHap,,1,3,8690,94,8,1,728,/997/8/343/1129/1097/157/38/94/55/,FF5D50,,,f,729,1148389696,734881840,Paraventricular hypothalamic nucleus parvicellular division anterior parvicellular part -87,293,Paraventricular hypothalamic nucleus parvicellular division medial parvicellular part dorsal zone,PVHmpd,,1,3,8690,94,8,1,729,/997/8/343/1129/1097/157/38/94/87/,FF5D50,,,f,730,4123394571,734881840,Paraventricular hypothalamic nucleus parvicellular division medial parvicellular part dorsal zone -110,296,Paraventricular hypothalamic nucleus parvicellular division periventricular part,PVHpv,,1,3,8690,94,8,1,730,/997/8/343/1129/1097/157/38/94/110/,FF5D50,,,f,731,3511387045,734881840,Paraventricular hypothalamic nucleus parvicellular division periventricular part -30,286,Periventricular hypothalamic nucleus anterior part,PVa,,1,3,8690,157,6,1,731,/997/8/343/1129/1097/157/30/,FF5D50,,,f,732,4028794868,734881840,Periventricular hypothalamic nucleus anterior part -118,297,Periventricular hypothalamic nucleus intermediate part,PVi,,1,3,8690,157,6,1,732,/997/8/343/1129/1097/157/118/,FF5D50,,,f,733,3086088557,734881840,Periventricular hypothalamic nucleus intermediate part -223,27,Arcuate hypothalamic nucleus,ARH,,1,3,8690,157,6,1,733,/997/8/343/1129/1097/157/223/,FF5D50,,,f,734,218062747,734881840,Arcuate hypothalamic nucleus -141,300,Periventricular region,PVR,,1,3,8690,1097,5,1,734,/997/8/343/1129/1097/141/,FF5547,,,f,735,227550009,734881840,Periventricular region -72,8,Anterodorsal preoptic nucleus,ADP,,1,3,8690,141,6,1,735,/997/8/343/1129/1097/141/72/,FF5547,,,f,736,1069999127,734881840,Anterodorsal preoptic nucleus -80,9,Anterior hypothalamic area,AHA,,1,3,8690,141,6,1,736,/997/8/343/1129/1097/141/80/,FF5547,,,f,737,1854528966,734881840,Anterior hypothalamic area -263,32,Anteroventral preoptic nucleus,AVP,,1,3,8690,141,6,1,737,/997/8/343/1129/1097/141/263/,FF5547,,,f,738,3572986309,734881840,Anteroventral preoptic nucleus -272,33,Anteroventral periventricular nucleus,AVPV,,1,3,8690,141,6,1,738,/997/8/343/1129/1097/141/272/,FF5547,,,f,739,1695582307,734881840,Anteroventral periventricular nucleus -830,103,Dorsomedial nucleus of the hypothalamus,DMH,,1,3,8690,141,6,1,739,/997/8/343/1129/1097/141/830/,FF5547,,,f,740,761673421,734881840,Dorsomedial nucleus of the hypothalamus -668,790,Dorsomedial nucleus of the hypothalamus anterior part,DMHa,,1,3,8690,830,7,1,740,/997/8/343/1129/1097/141/830/668/,FF5547,,,f,741,2890416846,734881840,Dorsomedial nucleus of the hypothalamus anterior part -676,791,Dorsomedial nucleus of the hypothalamus posterior part,DMHp,,1,3,8690,830,7,1,741,/997/8/343/1129/1097/141/830/676/,FF5547,,,f,742,916084112,734881840,Dorsomedial nucleus of the hypothalamus posterior part -684,792,Dorsomedial nucleus of the hypothalamus ventral part,DMHv,,1,3,8690,830,7,1,742,/997/8/343/1129/1097/141/830/684/,FF5547,,,f,743,2190129277,734881840,Dorsomedial nucleus of the hypothalamus ventral part -452,197,Median preoptic nucleus,MEPO,,1,3,8690,141,6,1,743,/997/8/343/1129/1097/141/452/,FF5547,,,f,744,1579277564,734881840,Median preoptic nucleus -523,206,Medial preoptic area,MPO,,1,3,8690,141,6,1,744,/997/8/343/1129/1097/141/523/,FF5547,,,f,745,1992330649,734881840,Medial preoptic area -763,236,Vascular organ of the lamina terminalis,OV,,1,3,8690,141,6,1,745,/997/8/343/1129/1097/141/763/,FF5547,,,f,746,3273533441,734881840,Vascular organ of the lamina terminalis -914,255,Posterodorsal preoptic nucleus,PD,,1,3,8690,141,6,1,746,/997/8/343/1129/1097/141/914/,FF5547,,,f,747,2759126254,734881840,Posterodorsal preoptic nucleus -1109,279,Parastrial nucleus,PS,,1,3,8690,141,6,1,747,/997/8/343/1129/1097/141/1109/,FF5547,,,f,748,747009513,734881840,Parastrial nucleus -1124,281,Suprachiasmatic preoptic nucleus,PSCH,,1,3,8690,141,6,1,748,/997/8/343/1129/1097/141/1124/,FF5547,,,f,749,1784798415,734881840,Suprachiasmatic preoptic nucleus -126,298,Periventricular hypothalamic nucleus posterior part,PVp,,1,3,8690,141,6,1,749,/997/8/343/1129/1097/141/126/,FF5547,,,f,750,4039829223,734881840,Periventricular hypothalamic nucleus posterior part -133,299,Periventricular hypothalamic nucleus preoptic part,PVpo,,1,3,8690,141,6,1,750,/997/8/343/1129/1097/141/133/,FF5547,,,f,751,2330540908,734881840,Periventricular hypothalamic nucleus preoptic part -347,467,Subparaventricular zone,SBPV,,1,3,8690,141,6,1,751,/997/8/343/1129/1097/141/347/,FF5547,,,f,752,1671743599,734881840,Subparaventricular zone -286,318,Suprachiasmatic nucleus,SCH,,1,3,8690,141,6,1,752,/997/8/343/1129/1097/141/286/,FF5547,,,f,753,3746645074,734881840,Suprachiasmatic nucleus -338,466,Subfornical organ,SFO,,1,3,8690,141,6,1,753,/997/8/343/1129/1097/141/338/,FF5547,,,f,754,1450047394,734881840,Subfornical organ -576073699,,Ventromedial preoptic nucleus,VMPO,,1,3,8690,141,6,1,754,/997/8/343/1129/1097/141/576073699/,FF5547,,,f,755,1315660689,734881840,Ventromedial preoptic nucleus -689,793,Ventrolateral preoptic nucleus,VLPO,,1,3,8690,141,6,1,755,/997/8/343/1129/1097/141/689/,FF5547,,,f,756,2706711435,734881840,Ventrolateral preoptic nucleus -467,199,Hypothalamic medial zone,MEZ,,1,3,8690,1097,5,1,756,/997/8/343/1129/1097/467/,FF4C3E,,,f,757,3546131949,734881840,Hypothalamic medial zone -88,10,Anterior hypothalamic nucleus,AHN,,1,3,8690,467,6,1,757,/997/8/343/1129/1097/467/88/,FF4C3E,,,f,758,2309913226,734881840,Anterior hypothalamic nucleus -700,794,Anterior hypothalamic nucleus anterior part,AHNa,,1,3,8690,88,7,1,758,/997/8/343/1129/1097/467/88/700/,FF4C3E,,,f,759,3087487115,734881840,Anterior hypothalamic nucleus anterior part -708,795,Anterior hypothalamic nucleus central part,AHNc,,1,3,8690,88,7,1,759,/997/8/343/1129/1097/467/88/708/,FF4C3E,,,f,760,1484728461,734881840,Anterior hypothalamic nucleus central part -716,796,Anterior hypothalamic nucleus dorsal part,AHNd,,1,3,8690,88,7,1,760,/997/8/343/1129/1097/467/88/716/,FF4C3E,,,f,761,1340658654,734881840,Anterior hypothalamic nucleus dorsal part -724,797,Anterior hypothalamic nucleus posterior part,AHNp,,1,3,8690,88,7,1,761,/997/8/343/1129/1097/467/88/724/,FF4C3E,,,f,762,809021341,734881840,Anterior hypothalamic nucleus posterior part -331,182,Mammillary body,MBO,,1,3,8690,467,6,1,762,/997/8/343/1129/1097/467/331/,FF4C3E,,,f,763,628444024,734881840,Mammillary body -210,167,Lateral mammillary nucleus,LM,,1,3,8690,331,7,1,763,/997/8/343/1129/1097/467/331/210/,FF4C3E,,,f,764,3256479391,734881840,Lateral mammillary nucleus -491,202,Medial mammillary nucleus,MM,,1,3,8690,331,7,1,764,/997/8/343/1129/1097/467/331/491/,FF4C3E,,,f,765,338961468,734881840,Medial mammillary nucleus -732,798,Medial mammillary nucleus median part,Mmme,,1,3,8690,491,8,1,765,/997/8/343/1129/1097/467/331/491/732/,FF4C3E,,,f,766,10911214,734881840,Medial mammillary nucleus median part -606826647,,Medial mammillary nucleus lateral part,Mml,,1,3,8690,491,8,1,766,/997/8/343/1129/1097/467/331/491/606826647/,FF4C3E,,,f,767,3428103955,734881840,Medial mammillary nucleus lateral part -606826651,,Medial mammillary nucleus medial part,Mmm,,1,3,8690,491,8,1,767,/997/8/343/1129/1097/467/331/491/606826651/,FF4C3E,,,f,768,1299111141,734881840,Medial mammillary nucleus medial part -606826655,,Medial mammillary nucleus posterior part,Mmp,,1,3,8690,491,8,1,768,/997/8/343/1129/1097/467/331/491/606826655/,FF4C3E,,,f,769,2687554049,734881840,Medial mammillary nucleus posterior part -606826659,,Medial mammillary nucleus dorsal part,Mmd,,1,3,8690,491,8,1,769,/997/8/343/1129/1097/467/331/491/606826659/,FF4C3E,,,f,770,329278641,734881840,Medial mammillary nucleus dorsal part -525,348,Supramammillary nucleus,SUM,,1,3,8690,331,7,1,770,/997/8/343/1129/1097/467/331/525/,FF4C3E,,,f,771,4172534656,734881840,Supramammillary nucleus -1110,421,Supramammillary nucleus lateral part,SUMl,,1,3,8690,525,8,1,771,/997/8/343/1129/1097/467/331/525/1110/,FF4C3E,,,f,772,3001814184,734881840,Supramammillary nucleus lateral part -1118,422,Supramammillary nucleus medial part,SUMm,,1,3,8690,525,8,1,772,/997/8/343/1129/1097/467/331/525/1118/,FF4C3E,,,f,773,1151982312,734881840,Supramammillary nucleus medial part -557,352,Tuberomammillary nucleus,TM,,1,3,8690,331,7,1,773,/997/8/343/1129/1097/467/331/557/,FF4C3E,,,f,774,1759031183,734881840,Tuberomammillary nucleus -1126,423,Tuberomammillary nucleus dorsal part,TMd,,1,3,8690,557,8,1,774,/997/8/343/1129/1097/467/331/557/1126/,FF4C3E,,,f,775,2136571968,734881840,Tuberomammillary nucleus dorsal part -1,424,Tuberomammillary nucleus ventral part,TMv,,1,3,8690,557,8,1,775,/997/8/343/1129/1097/467/331/557/1/,FF4C3E,,,f,776,3678649713,734881840,Tuberomammillary nucleus ventral part -515,205,Medial preoptic nucleus,MPN,,1,3,8690,467,6,1,776,/997/8/343/1129/1097/467/515/,FF4C3E,,,f,777,1542829951,734881840,Medial preoptic nucleus -740,799,Medial preoptic nucleus central part,MPNc,,1,3,8690,515,7,1,777,/997/8/343/1129/1097/467/515/740/,FF4C3E,,,f,778,2445156071,734881840,Medial preoptic nucleus central part -748,800,Medial preoptic nucleus lateral part,MPNl,,1,3,8690,515,7,1,778,/997/8/343/1129/1097/467/515/748/,FF4C3E,,,f,779,3636770055,734881840,Medial preoptic nucleus lateral part -756,801,Medial preoptic nucleus medial part,MPNm,,1,3,8690,515,7,1,779,/997/8/343/1129/1097/467/515/756/,FF4C3E,,,f,780,3694168057,734881840,Medial preoptic nucleus medial part -980,263,Dorsal premammillary nucleus,PMd,,1,3,8690,467,6,1,780,/997/8/343/1129/1097/467/980/,FF4C3E,,,f,781,282623527,734881840,Dorsal premammillary nucleus -1004,266,Ventral premammillary nucleus,PMv,,1,3,8690,467,6,1,781,/997/8/343/1129/1097/467/1004/,FF4C3E,,,f,782,959948768,734881840,Ventral premammillary nucleus -63,290,Paraventricular hypothalamic nucleus descending division,PVHd,,1,3,8690,467,6,1,782,/997/8/343/1129/1097/467/63/,FF4C3E,,,f,783,3500188330,734881840,Paraventricular hypothalamic nucleus descending division -439,903,Paraventricular hypothalamic nucleus descending division dorsal parvicellular part,PVHdp,,1,3,8690,63,7,1,783,/997/8/343/1129/1097/467/63/439/,FF4C3E,,,f,784,1456917687,734881840,Paraventricular hypothalamic nucleus descending division dorsal parvicellular part -447,904,Paraventricular hypothalamic nucleus descending division forniceal part,PVHf,,1,3,8690,63,7,1,784,/997/8/343/1129/1097/467/63/447/,FF4C3E,,,f,785,2729434072,734881840,Paraventricular hypothalamic nucleus descending division forniceal part -455,905,Paraventricular hypothalamic nucleus descending division lateral parvicellular part,PVHlp,,1,3,8690,63,7,1,785,/997/8/343/1129/1097/467/63/455/,FF4C3E,,,f,786,2133121895,734881840,Paraventricular hypothalamic nucleus descending division lateral parvicellular part -464,906,Paraventricular hypothalamic nucleus descending division medial parvicellular part ventral zone,PVHmpv,,1,3,8690,63,7,1,786,/997/8/343/1129/1097/467/63/464/,FF4C3E,,,f,787,3253784525,734881840,Paraventricular hypothalamic nucleus descending division medial parvicellular part ventral zone -693,369,Ventromedial hypothalamic nucleus,VMH,,1,3,8690,467,6,1,787,/997/8/343/1129/1097/467/693/,FF4C3E,,,f,788,313760851,734881840,Ventromedial hypothalamic nucleus -761,802,Ventromedial hypothalamic nucleus anterior part,VMHa,,1,3,8690,693,7,1,788,/997/8/343/1129/1097/467/693/761/,FF4C3E,,,f,789,3570676002,734881840,Ventromedial hypothalamic nucleus anterior part -769,803,Ventromedial hypothalamic nucleus central part,VMHc,,1,3,8690,693,7,1,789,/997/8/343/1129/1097/467/693/769/,FF4C3E,,,f,790,2374724825,734881840,Ventromedial hypothalamic nucleus central part -777,804,Ventromedial hypothalamic nucleus dorsomedial part,VMHdm,,1,3,8690,693,7,1,790,/997/8/343/1129/1097/467/693/777/,FF4C3E,,,f,791,3277783810,734881840,Ventromedial hypothalamic nucleus dorsomedial part -785,805,Ventromedial hypothalamic nucleus ventrolateral part,VMHvl,,1,3,8690,693,7,1,791,/997/8/343/1129/1097/467/693/785/,FF4C3E,,,f,792,2610967905,734881840,Ventromedial hypothalamic nucleus ventrolateral part -946,259,Posterior hypothalamic nucleus,PH,,1,3,8690,467,6,1,792,/997/8/343/1129/1097/467/946/,FF4C3E,,,f,793,303854195,734881840,Posterior hypothalamic nucleus -290,177,Hypothalamic lateral zone,LZ,,1,3,8690,1097,5,1,793,/997/8/343/1129/1097/290/,F2483B,,,f,794,3347032583,734881840,Hypothalamic lateral zone -194,165,Lateral hypothalamic area,LHA,,1,3,8690,290,6,1,794,/997/8/343/1129/1097/290/194/,F2483B,,,f,795,1636673296,734881840,Lateral hypothalamic area -226,169,Lateral preoptic area,LPO,,1,3,8690,290,6,1,795,/997/8/343/1129/1097/290/226/,F2483B,,,f,796,3138944663,734881840,Lateral preoptic area -356,468,Preparasubthalamic nucleus,PST,,1,3,8690,290,6,1,796,/997/8/343/1129/1097/290/356/,F2483B,,,f,797,3604508725,734881840,Preparasubthalamic nucleus -364,469,Parasubthalamic nucleus,PSTN,,1,3,8690,290,6,1,797,/997/8/343/1129/1097/290/364/,F2483B,,,f,798,2493706529,734881840,Parasubthalamic nucleus -576073704,,Perifornical nucleus,PeF,,1,3,8690,290,6,1,798,/997/8/343/1129/1097/290/576073704/,F2483B,,,f,799,702937889,734881840,Perifornical nucleus -173,304,Retrochiasmatic area,RCH,,1,3,8690,290,6,1,799,/997/8/343/1129/1097/290/173/,F2483B,,,f,800,3507634346,734881840,Retrochiasmatic area -470,341,Subthalamic nucleus,STN,,1,3,8690,290,6,1,800,/997/8/343/1129/1097/290/470/,F2483B,,,f,801,3450179653,734881840,Subthalamic nucleus -614,359,Tuberal nucleus,TU,,1,3,8690,290,6,1,801,/997/8/343/1129/1097/290/614/,F2483B,,,f,802,1119024411,734881840,Tuberal nucleus -797,382,Zona incerta,ZI,,1,3,8690,290,6,1,802,/997/8/343/1129/1097/290/797/,F2483B,,,f,803,3420252476,734881840,Zona incerta -796,806,Dopaminergic A13 group,A13,,1,3,8690,797,7,1,803,/997/8/343/1129/1097/290/797/796/,F2483B,,,f,804,4064653384,734881840,Dopaminergic A13 group -804,807,Fields of Forel,FF,,1,3,8690,797,7,1,804,/997/8/343/1129/1097/290/797/804/,F2483B,,,f,805,89343914,734881840,Fields of Forel -10671,,Median eminence,ME,,1,3,8690,1097,5,1,805,/997/8/343/1129/1097/10671/,F2483B,,,f,806,138849015,734881840,Median eminence -313,180,Midbrain,MB,,1,3,8690,343,3,1,806,/997/8/343/313/,FF64FF,,,f,807,789921203,734881840,Midbrain -339,183,Midbrain sensory related,MBsen,,1,3,8690,313,4,1,807,/997/8/343/313/339/,FF7AFF,,,f,808,3898370247,734881840,Midbrain sensory related -302,320,Superior colliculus sensory related,SCs,,1,3,8690,339,5,1,808,/997/8/343/313/339/302/,FF7AFF,,,f,809,3203592176,734881840,Superior colliculus sensory related -851,813,Superior colliculus optic layer,SCop,,1,3,8690,302,6,1,809,/997/8/343/313/339/302/851/,FF7AFF,,,f,810,1400323525,734881840,Superior colliculus optic layer -842,812,Superior colliculus superficial gray layer,SCsg,,1,3,8690,302,6,1,810,/997/8/343/313/339/302/842/,FF7AFF,,,f,811,2271559886,734881840,Superior colliculus superficial gray layer -834,811,Superior colliculus zonal layer,SCzo,,1,3,8690,302,6,1,811,/997/8/343/313/339/302/834/,FF7AFF,,,f,812,1177562266,734881840,Superior colliculus zonal layer -4,141,Inferior colliculus,IC,,1,3,8690,339,5,1,812,/997/8/343/313/339/4/,FF7AFF,,,f,813,3456805092,734881840,Inferior colliculus -811,808,Inferior colliculus central nucleus,ICc,,1,3,8690,4,6,1,813,/997/8/343/313/339/4/811/,FF7AFF,,,f,814,3750101210,734881840,Inferior colliculus central nucleus -820,809,Inferior colliculus dorsal nucleus,ICd,,1,3,8690,4,6,1,814,/997/8/343/313/339/4/820/,FF7AFF,,,f,815,3008108572,734881840,Inferior colliculus dorsal nucleus -828,810,Inferior colliculus external nucleus,ICe,,1,3,8690,4,6,1,815,/997/8/343/313/339/4/828/,FF7AFF,,,f,816,754697579,734881840,Inferior colliculus external nucleus -580,213,Nucleus of the brachium of the inferior colliculus,NB,,1,3,8690,339,5,1,816,/997/8/343/313/339/580/,FF7AFF,,,f,817,3573918372,734881840,Nucleus of the brachium of the inferior colliculus -271,316,Nucleus sagulum,SAG,,1,3,8690,339,5,1,817,/997/8/343/313/339/271/,FF7AFF,,,f,818,1209044118,734881840,Nucleus sagulum -874,250,Parabigeminal nucleus,PBG,,1,3,8690,339,5,1,818,/997/8/343/313/339/874/,FF7AFF,,,f,819,1543308203,734881840,Parabigeminal nucleus -460,198,Midbrain trigeminal nucleus,MEV,,1,3,8690,339,5,1,819,/997/8/343/313/339/460/,FF7AFF,,,f,820,881115082,734881840,Midbrain trigeminal nucleus -599626923,,Subcommissural organ,SCO,,1,3,8690,339,5,1,820,/997/8/343/313/339/599626923/,FF7AFF,,,f,821,2789650011,734881840,Subcommissural organ -323,181,Midbrain motor related,MBmot,,1,3,8690,313,4,1,821,/997/8/343/313/323/,FF90FF,,,f,822,780661248,734881840,Midbrain motor related -381,330,Substantia nigra reticular part,SNr,,1,3,8690,323,5,1,822,/997/8/343/313/323/381/,FF90FF,,,f,823,1375238552,734881840,Substantia nigra reticular part -749,376,Ventral tegmental area,VTA,,1,3,8690,323,5,1,823,/997/8/343/313/323/749/,FF90FF,,,f,824,393100752,734881840,Ventral tegmental area -607344830,,Paranigral nucleus,PN,,1,3,8690,323,5,1,824,/997/8/343/313/323/607344830/,FF90FF,,,f,825,394864153,734881840,Paranigral nucleus -246,313,Midbrain reticular nucleus retrorubral area,RR,,1,3,8690,323,5,1,825,/997/8/343/313/323/246/,FF90FF,,,f,826,2206996677,734881840,Midbrain reticular nucleus retrorubral area -128,864,Midbrain reticular nucleus,MRN,,1,3,8690,323,5,1,826,/997/8/343/313/323/128/,FF90FF,,,f,827,2371196921,734881840,Midbrain reticular nucleus -539,208,Midbrain reticular nucleus magnocellular part,MRNm,,1,3,8690,128,6,1,827,/997/8/343/313/323/128/539/,FF90FF,,,f,828,1986775418,734881840,Midbrain reticular nucleus magnocellular part -548,209,Midbrain reticular nucleus magnocellular part general,MRNmg,,1,3,8690,128,6,1,828,/997/8/343/313/323/128/548/,FF90FF,,,f,829,3215321597,734881840,Midbrain reticular nucleus magnocellular part general -555,210,Midbrain reticular nucleus parvicellular part,MRNp,,1,3,8690,128,6,1,829,/997/8/343/313/323/128/555/,FF90FF,,,f,830,1144299903,734881840,Midbrain reticular nucleus parvicellular part -294,319,Superior colliculus motor related,SCm,,1,3,8690,323,5,1,830,/997/8/343/313/323/294/,FF90FF,,,f,831,3666060048,734881840,Superior colliculus motor related -26,427,Superior colliculus motor related deep gray layer,SCdg,,1,3,8690,294,6,1,831,/997/8/343/313/323/294/26/,FF90FF,,,f,832,2056102031,734881840,Superior colliculus motor related deep gray layer -42,429,Superior colliculus motor related deep white layer,SCdw,,1,3,8690,294,6,1,832,/997/8/343/313/323/294/42/,FF90FF,,,f,833,3170401061,734881840,Superior colliculus motor related deep white layer -17,426,Superior colliculus motor related intermediate white layer,SCiw,,1,3,8690,294,6,1,833,/997/8/343/313/323/294/17/,FF90FF,,,f,834,2563539216,734881840,Superior colliculus motor related intermediate white layer -10,425,Superior colliculus motor related intermediate gray layer,SCig,,1,3,8690,294,6,1,834,/997/8/343/313/323/294/10/,FF90FF,,,f,835,4208210812,734881840,Superior colliculus motor related intermediate gray layer -494,910,Superior colliculus motor related intermediate gray layer sublayer a,SCig-a,,1,3,8690,10,7,1,835,/997/8/343/313/323/294/10/494/,FF90FF,,,f,836,132347639,734881840,Superior colliculus motor related intermediate gray layer sublayer a -503,911,Superior colliculus motor related intermediate gray layer sublayer b,SCig-b,,1,3,8690,10,7,1,836,/997/8/343/313/323/294/10/503/,FF90FF,,,f,837,2666145613,734881840,Superior colliculus motor related intermediate gray layer sublayer b -511,912,Superior colliculus motor related intermediate gray layer sublayer c,SCig-c,,1,3,8690,10,7,1,837,/997/8/343/313/323/294/10/511/,FF90FF,,,f,838,3924629467,734881840,Superior colliculus motor related intermediate gray layer sublayer c -795,240,Periaqueductal gray,PAG,,1,3,8690,323,5,1,838,/997/8/343/313/323/795/,FF90FF,,,f,839,3260726339,734881840,Periaqueductal gray -50,430,Precommissural nucleus,PRC,,1,3,8690,795,6,1,839,/997/8/343/313/323/795/50/,FF90FF,,,f,840,3014276231,734881840,Precommissural nucleus -67,149,Interstitial nucleus of Cajal,INC,,1,3,8690,795,6,1,840,/997/8/343/313/323/795/67/,FF90FF,,,f,841,4183673030,734881840,Interstitial nucleus of Cajal -587,214,Nucleus of Darkschewitsch,ND,,1,3,8690,795,6,1,841,/997/8/343/313/323/795/587/,FF90FF,,,f,842,4174754247,734881840,Nucleus of Darkschewitsch -614454277,,Supraoculomotor periaqueductal gray,Su3,,1,3,8690,795,6,1,842,/997/8/343/313/323/795/614454277/,FF90FF,,,f,843,349636566,734881840,Supraoculomotor periaqueductal gray -1100,278,Pretectal region,PRT,,1,3,8690,323,5,1,843,/997/8/343/313/323/1100/,FF90FF,,,f,844,3274676419,734881840,Pretectal region -215,26,Anterior pretectal nucleus,APN,,1,3,8690,1100,6,1,844,/997/8/343/313/323/1100/215/,FF90FF,,,f,845,3086286206,734881840,Anterior pretectal nucleus -531,207,Medial pretectal area,MPT,,1,3,8690,1100,6,1,845,/997/8/343/313/323/1100/531/,FF90FF,,,f,846,3076683016,734881840,Medial pretectal area -628,219,Nucleus of the optic tract,NOT,,1,3,8690,1100,6,1,846,/997/8/343/313/323/1100/628/,FF90FF,,,f,847,4240602259,734881840,Nucleus of the optic tract -634,220,Nucleus of the posterior commissure,NPC,,1,3,8690,1100,6,1,847,/997/8/343/313/323/1100/634/,FF90FF,,,f,848,848474446,734881840,Nucleus of the posterior commissure -706,229,Olivary pretectal nucleus,OP,,1,3,8690,1100,6,1,848,/997/8/343/313/323/1100/706/,FF90FF,,,f,849,4010106689,734881840,Olivary pretectal nucleus -1061,273,Posterior pretectal nucleus,PPT,,1,3,8690,1100,6,1,849,/997/8/343/313/323/1100/1061/,FF90FF,,,f,850,834486063,734881840,Posterior pretectal nucleus -549009203,,Retroparafascicular nucleus,RPF,,1,3,8690,1100,6,1,850,/997/8/343/313/323/1100/549009203/,FF90FF,,,f,851,2559458743,734881840,Retroparafascicular nucleus -549009207,,Intercollicular nucleus,InCo,,1,3,8690,323,5,1,851,/997/8/343/313/323/549009207/,FF90FF,,,f,852,3796827043,734881840,Intercollicular nucleus -616,76,Cuneiform nucleus,CUN,,1,3,8690,323,5,1,852,/997/8/343/313/323/616/,FF90FF,,,f,853,346062242,734881840,Cuneiform nucleus -214,309,Red nucleus,RN,,1,3,8690,323,5,1,853,/997/8/343/313/323/214/,FF90FF,,,f,854,2118050513,734881840,Red nucleus -35,145,Oculomotor nucleus,III,,1,3,8690,323,5,1,854,/997/8/343/313/323/35/,FF90FF,,,f,855,3545914074,734881840,Oculomotor nucleus -549009211,,Medial accesory oculomotor nucleus,MA3,,1,3,8690,323,5,1,855,/997/8/343/313/323/549009211/,FF90FF,,,f,856,842672202,734881840,Medial accesory oculomotor nucleus -975,121,Edinger-Westphal nucleus,EW,,1,3,8690,323,5,1,856,/997/8/343/313/323/975/,FF90FF,,,f,857,3165212518,734881840,Edinger-Westphal nucleus -115,155,Trochlear nucleus,IV,,1,3,8690,323,5,1,857,/997/8/343/313/323/115/,FF90FF,,,f,858,4115476116,734881840,Trochlear nucleus -606826663,,Paratrochlear nucleus,Pa4,,1,3,8690,323,5,1,858,/997/8/343/313/323/606826663/,FF90FF,,,f,859,2726323560,734881840,Paratrochlear nucleus -757,377,Ventral tegmental nucleus,VTN,,1,3,8690,323,5,1,859,/997/8/343/313/323/757/,FF90FF,,,f,860,4044693766,734881840,Ventral tegmental nucleus -231,28,Anterior tegmental nucleus,AT,,1,3,8690,323,5,1,860,/997/8/343/313/323/231/,FF90FF,,,f,861,569339657,734881840,Anterior tegmental nucleus -66,432,Lateral terminal nucleus of the accessory optic tract,LT,,1,3,8690,323,5,1,861,/997/8/343/313/323/66/,FF90FF,,,f,862,1984958584,734881840,Lateral terminal nucleus of the accessory optic tract -75,433,Dorsal terminal nucleus of the accessory optic tract,DT,,1,3,8690,323,5,1,862,/997/8/343/313/323/75/,FF90FF,,,f,863,313632257,734881840,Dorsal terminal nucleus of the accessory optic tract -58,431,Medial terminal nucleus of the accessory optic tract,MT,,1,3,8690,323,5,1,863,/997/8/343/313/323/58/,FF90FF,,,f,864,1464326049,734881840,Medial terminal nucleus of the accessory optic tract -615,925,Substantia nigra lateral part,SNl,,1,3,8690,323,5,1,864,/997/8/343/313/323/615/,FF90FF,,,f,865,3021759709,734881840,Substantia nigra lateral part -348,184,Midbrain behavioral state related,MBsta,,1,3,8690,313,4,1,865,/997/8/343/313/348/,FF90FF,,,f,866,2552492373,734881840,Midbrain behavioral state related -374,329,Substantia nigra compact part,SNc,,1,3,8690,348,5,1,866,/997/8/343/313/348/374/,FFA6FF,,,f,867,591190689,734881840,Substantia nigra compact part -1052,272,Pedunculopontine nucleus,PPN,,1,3,8690,348,5,1,867,/997/8/343/313/348/1052/,FFA6FF,,,f,868,2704258246,734881840,Pedunculopontine nucleus -165,303,Midbrain raphe nuclei,RAmb,,1,3,8690,348,5,1,868,/997/8/343/313/348/165/,FFA6FF,,,f,869,364635241,734881840,Midbrain raphe nuclei -12,142,Interfascicular nucleus raphe,IF,,1,3,8690,165,6,1,869,/997/8/343/313/348/165/12/,FFA6FF,,,f,870,1057138099,734881840,Interfascicular nucleus raphe -100,153,Interpeduncular nucleus,IPN,,1,3,8690,165,6,1,870,/997/8/343/313/348/165/100/,FFA6FF,,,f,871,814290991,734881840,Interpeduncular nucleus -607344834,,Interpeduncular nucleus rostral,IPR,,1,3,8690,100,7,1,871,/997/8/343/313/348/165/100/607344834/,FFA6FF,,,f,872,3342923784,734881840,Interpeduncular nucleus rostral -607344838,,Interpeduncular nucleus caudal,IPC,,1,3,8690,100,7,1,872,/997/8/343/313/348/165/100/607344838/,FFA6FF,,,f,873,3381879533,734881840,Interpeduncular nucleus caudal -607344842,,Interpeduncular nucleus apical,IPA,,1,3,8690,100,7,1,873,/997/8/343/313/348/165/100/607344842/,FFA6FF,,,f,874,3327886198,734881840,Interpeduncular nucleus apical -607344846,,Interpeduncular nucleus lateral,IPL,,1,3,8690,100,7,1,874,/997/8/343/313/348/165/100/607344846/,FFA6FF,,,f,875,2418971137,734881840,Interpeduncular nucleus lateral -607344850,,Interpeduncular nucleus intermediate,IPI,,1,3,8690,100,7,1,875,/997/8/343/313/348/165/100/607344850/,FFA6FF,,,f,876,1366249262,734881840,Interpeduncular nucleus intermediate -607344854,,Interpeduncular nucleus dorsomedial,IPDM,,1,3,8690,100,7,1,876,/997/8/343/313/348/165/100/607344854/,FFA6FF,,,f,877,1188587061,734881840,Interpeduncular nucleus dorsomedial -607344858,,Interpeduncular nucleus dorsolateral,IPDL,,1,3,8690,100,7,1,877,/997/8/343/313/348/165/100/607344858/,FFA6FF,,,f,878,2095963207,734881840,Interpeduncular nucleus dorsolateral -607344862,,Interpeduncular nucleus rostrolateral,IPRL,,1,3,8690,100,7,1,878,/997/8/343/313/348/165/100/607344862/,FFA6FF,,,f,879,2470356210,734881840,Interpeduncular nucleus rostrolateral -197,307,Rostral linear nucleus raphe,RL,,1,3,8690,165,6,1,879,/997/8/343/313/348/165/197/,FFA6FF,,,f,880,4030987523,734881840,Rostral linear nucleus raphe -591,73,Central linear nucleus raphe,CLI,,1,3,8690,165,6,1,880,/997/8/343/313/348/165/591/,FFA6FF,,,f,881,3351344971,734881840,Central linear nucleus raphe -872,108,Dorsal nucleus raphe,DR,,1,3,8690,165,6,1,881,/997/8/343/313/348/165/872/,FFA6FF,,,f,882,1547411830,734881840,Dorsal nucleus raphe -1065,132,Hindbrain,HB,,1,3,8690,343,3,1,882,/997/8/343/1065/,FF9B88,,,f,883,1911489865,734881840,Hindbrain -771,237,Pons,P,,1,3,8690,1065,4,1,883,/997/8/343/1065/771/,FF9B88,,,f,884,2612017676,734881840,Pons -1132,282,Pons sensory related,P-sen,,1,3,8690,771,5,1,884,/997/8/343/1065/771/1132/,FFAE6F,,,f,885,4249678601,734881840,Pons sensory related -612,217,Nucleus of the lateral lemniscus,NLL,,1,3,8690,1132,6,1,885,/997/8/343/1065/771/1132/612/,FFAE6F,,,f,886,3619563008,734881840,Nucleus of the lateral lemniscus -82,434,Nucleus of the lateral lemniscus dorsal part,NLLd,,1,3,8690,612,7,1,886,/997/8/343/1065/771/1132/612/82/,FFAE6F,,,f,887,713162928,734881840,Nucleus of the lateral lemniscus dorsal part -90,435,Nucleus of the lateral lemniscus horizontal part,NLLh,,1,3,8690,612,7,1,887,/997/8/343/1065/771/1132/612/90/,FFAE6F,,,f,888,622626105,734881840,Nucleus of the lateral lemniscus horizontal part -99,436,Nucleus of the lateral lemniscus ventral part,NLLv,,1,3,8690,612,7,1,888,/997/8/343/1065/771/1132/612/99/,FFAE6F,,,f,889,1722520813,734881840,Nucleus of the lateral lemniscus ventral part -7,283,Principal sensory nucleus of the trigeminal,PSV,,1,3,8690,1132,6,1,889,/997/8/343/1065/771/1132/7/,FFAE6F,,,f,890,977401861,734881840,Principal sensory nucleus of the trigeminal -867,249,Parabrachial nucleus,PB,,1,3,8690,1132,6,1,890,/997/8/343/1065/771/1132/867/,FFAE6F,,,f,891,1848997307,734881840,Parabrachial nucleus -123,156,Koelliker-Fuse subnucleus,KF,,1,3,8690,867,7,1,891,/997/8/343/1065/771/1132/867/123/,FFAE6F,,,f,892,3695440306,734881840,Koelliker-Fuse subnucleus -881,251,Parabrachial nucleus lateral division,PBl,,1,3,8690,867,7,1,892,/997/8/343/1065/771/1132/867/881/,FFAE6F,,,f,893,745283882,734881840,Parabrachial nucleus lateral division -860,814,Parabrachial nucleus lateral division central lateral part,PBlc,,1,3,8690,881,8,1,893,/997/8/343/1065/771/1132/867/881/860/,FFAE6F,,,f,894,4289412643,734881840,Parabrachial nucleus lateral division central lateral part -868,815,Parabrachial nucleus lateral division dorsal lateral part,PBld,,1,3,8690,881,8,1,894,/997/8/343/1065/771/1132/867/881/868/,FFAE6F,,,f,895,2459326582,734881840,Parabrachial nucleus lateral division dorsal lateral part -875,816,Parabrachial nucleus lateral division external lateral part,PBle,,1,3,8690,881,8,1,895,/997/8/343/1065/771/1132/867/881/875/,FFAE6F,,,f,896,609733919,734881840,Parabrachial nucleus lateral division external lateral part -883,817,Parabrachial nucleus lateral division superior lateral part,PBls,,1,3,8690,881,8,1,896,/997/8/343/1065/771/1132/867/881/883/,FFAE6F,,,f,897,2064930966,734881840,Parabrachial nucleus lateral division superior lateral part -891,818,Parabrachial nucleus lateral division ventral lateral part,PBlv,,1,3,8690,881,8,1,897,/997/8/343/1065/771/1132/867/881/891/,FFAE6F,,,f,898,887571737,734881840,Parabrachial nucleus lateral division ventral lateral part -890,252,Parabrachial nucleus medial division,PBm,,1,3,8690,867,7,1,898,/997/8/343/1065/771/1132/867/890/,FFAE6F,,,f,899,2193337520,734881840,Parabrachial nucleus medial division -899,819,Parabrachial nucleus medial division external medial part,PBme,,1,3,8690,890,8,1,899,/997/8/343/1065/771/1132/867/890/899/,FFAE6F,,,f,900,4150585958,734881840,Parabrachial nucleus medial division external medial part -915,821,Parabrachial nucleus medial division medial medial part,PBmm,,1,3,8690,890,8,1,900,/997/8/343/1065/771/1132/867/890/915/,FFAE6F,,,f,901,524500806,734881840,Parabrachial nucleus medial division medial medial part -923,822,Parabrachial nucleus medial division ventral medial part,PBmv,,1,3,8690,890,8,1,901,/997/8/343/1065/771/1132/867/890/923/,FFAE6F,,,f,902,3813309817,734881840,Parabrachial nucleus medial division ventral medial part -398,332,Superior olivary complex,SOC,,1,3,8690,1132,6,1,902,/997/8/343/1065/771/1132/398/,FFAE6F,,,f,903,1175552684,734881840,Superior olivary complex -122,439,Superior olivary complex periolivary region,POR,,1,3,8690,398,7,1,903,/997/8/343/1065/771/1132/398/122/,FFAE6F,,,f,904,197155834,734881840,Superior olivary complex periolivary region -105,437,Superior olivary complex medial part,SOCm,,1,3,8690,398,7,1,904,/997/8/343/1065/771/1132/398/105/,FFAE6F,,,f,905,3450441622,734881840,Superior olivary complex medial part -114,438,Superior olivary complex lateral part,SOCl,,1,3,8690,398,7,1,905,/997/8/343/1065/771/1132/398/114/,FFAE6F,,,f,906,98062534,734881840,Superior olivary complex lateral part -987,264,Pons motor related,P-mot,,1,3,8690,771,5,1,906,/997/8/343/1065/771/987/,FFBA86,,,f,907,583149041,734881840,Pons motor related -280,34,Barrington's nucleus,B,,1,3,8690,987,6,1,907,/997/8/343/1065/771/987/280/,FFBA86,,,f,908,3614612098,734881840,Barrington's nucleus -880,109,Dorsal tegmental nucleus,DTN,,1,3,8690,987,6,1,908,/997/8/343/1065/771/987/880/,FFBA86,,,f,909,978427151,734881840,Dorsal tegmental nucleus -283,176,Lateral tegmental nucleus,LTN,,1,3,8690,987,6,1,909,/997/8/343/1065/771/987/283/,FFBA86,,,f,910,787158495,734881840,Lateral tegmental nucleus -599626927,,Posterodorsal tegmental nucleus,PDTg,,1,3,8690,987,6,1,910,/997/8/343/1065/771/987/599626927/,FFBA86,,,f,911,1383431414,734881840,Posterodorsal tegmental nucleus -898,253,Pontine central gray,PCG,,1,3,8690,987,6,1,911,/997/8/343/1065/771/987/898/,FFBA86,,,f,912,771958956,734881840,Pontine central gray -931,823,Pontine gray,PG,,1,3,8690,987,6,1,912,/997/8/343/1065/771/987/931/,FFBA86,,,f,913,3482158520,734881840,Pontine gray -1093,277,Pontine reticular nucleus caudal part,PRNc,,1,3,8690,987,6,1,913,/997/8/343/1065/771/987/1093/,FFBA86,,,f,914,3254684830,734881840,Pontine reticular nucleus caudal part -552,917,Pontine reticular nucleus ventral part,PRNv,,1,3,8690,987,6,1,914,/997/8/343/1065/771/987/552/,FFBA86,,,f,915,3053786086,734881840,Pontine reticular nucleus ventral part -318,322,Supragenual nucleus,SG,,1,3,8690,987,6,1,915,/997/8/343/1065/771/987/318/,FFBA86,,,f,916,4273181680,734881840,Supragenual nucleus -462,340,Superior salivatory nucleus,SSN,,1,3,8690,987,6,1,916,/997/8/343/1065/771/987/462/,FFBA86,,,f,917,3836294039,734881840,Superior salivatory nucleus -534,349,Supratrigeminal nucleus,SUT,,1,3,8690,987,6,1,917,/997/8/343/1065/771/987/534/,FFBA86,,,f,918,252744374,734881840,Supratrigeminal nucleus -574,354,Tegmental reticular nucleus,TRN,,1,3,8690,987,6,1,918,/997/8/343/1065/771/987/574/,FFBA86,,,f,919,2119502237,734881840,Tegmental reticular nucleus -621,360,Motor nucleus of trigeminal,V,,1,3,8690,987,6,1,919,/997/8/343/1065/771/987/621/,FFBA86,,,f,920,298495636,734881840,Motor nucleus of trigeminal -549009215,,Peritrigeminal zone,P5,,1,3,8690,987,6,1,920,/997/8/343/1065/771/987/549009215/,FFBA86,,,f,921,2750316450,734881840,Peritrigeminal zone -549009219,,Accessory trigeminal nucleus,Acs5,,1,3,8690,987,6,1,921,/997/8/343/1065/771/987/549009219/,FFBA86,,,f,922,1603998582,734881840,Accessory trigeminal nucleus -549009223,,Parvicellular motor 5 nucleus,PC5,,1,3,8690,987,6,1,922,/997/8/343/1065/771/987/549009223/,FFBA86,,,f,923,2234903594,734881840,Parvicellular motor 5 nucleus -549009227,,Intertrigeminal nucleus,I5,,1,3,8690,987,6,1,923,/997/8/343/1065/771/987/549009227/,FFBA86,,,f,924,1777267098,734881840,Intertrigeminal nucleus -1117,280,Pons behavioral state related,P-sat,,1,3,8690,771,5,1,924,/997/8/343/1065/771/1117/,FFC395,,,f,925,2919861966,734881840,Pons behavioral state related -679,84,Superior central nucleus raphe,CS,,1,3,8690,1117,6,1,925,/997/8/343/1065/771/1117/679/,FFC395,,,f,926,734395698,734881840,Superior central nucleus raphe -137,441,Superior central nucleus raphe lateral part,CSl,,1,3,8690,679,7,1,926,/997/8/343/1065/771/1117/679/137/,FFC395,,,f,927,638768583,734881840,Superior central nucleus raphe lateral part -130,440,Superior central nucleus raphe medial part,CSm,,1,3,8690,679,7,1,927,/997/8/343/1065/771/1117/679/130/,FFC395,,,f,928,3729469793,734881840,Superior central nucleus raphe medial part -147,159,Locus ceruleus,LC,,1,3,8690,1117,6,1,928,/997/8/343/1065/771/1117/147/,FFC395,,,f,929,2295858987,734881840,Locus ceruleus -162,161,Laterodorsal tegmental nucleus,LDT,,1,3,8690,1117,6,1,929,/997/8/343/1065/771/1117/162/,FFC395,,,f,930,1067465072,734881840,Laterodorsal tegmental nucleus -604,216,Nucleus incertus,NI,,1,3,8690,1117,6,1,930,/997/8/343/1065/771/1117/604/,FFC395,,,f,931,3514282922,734881840,Nucleus incertus -146,442,Pontine reticular nucleus,PRNr,,1,3,8690,1117,6,1,931,/997/8/343/1065/771/1117/146/,FFC395,,,f,932,1626550003,734881840,Pontine reticular nucleus -238,312,Nucleus raphe pontis,RPO,,1,3,8690,1117,6,1,932,/997/8/343/1065/771/1117/238/,FFC395,,,f,933,663725501,734881840,Nucleus raphe pontis -350,326,Subceruleus nucleus,SLC,,1,3,8690,1117,6,1,933,/997/8/343/1065/771/1117/350/,FFC395,,,f,934,3054129819,734881840,Subceruleus nucleus -358,327,Sublaterodorsal nucleus,SLD,,1,3,8690,1117,6,1,934,/997/8/343/1065/771/1117/358/,FFC395,,,f,935,4160997876,734881840,Sublaterodorsal nucleus -354,185,Medulla,MY,,1,3,8690,1065,4,1,935,/997/8/343/1065/354/,FF9BCD,,,f,936,1659540268,734881840,Medulla -386,189,Medulla sensory related,MY-sen,,1,3,8690,354,5,1,936,/997/8/343/1065/354/386/,FFA5D2,,,f,937,846467907,734881840,Medulla sensory related -207,25,Area postrema,AP,,1,3,8690,386,6,1,937,/997/8/343/1065/354/386/207/,FFA5D2,,,f,938,265254740,734881840,Area postrema -607,75,Cochlear nuclei,CN,,1,3,8690,386,6,1,938,/997/8/343/1065/354/386/607/,FFA5D2,,,f,939,199055653,734881840,Cochlear nuclei -112,862,Granular lamina of the cochlear nuclei,CNlam,,1,3,8690,607,7,1,939,/997/8/343/1065/354/386/607/112/,FFA5D2,,,f,940,3067613847,734881840,Granular lamina of the cochlear nuclei -560,918,Cochlear nucleus subpedunclular granular region,CNspg,,1,3,8690,607,7,1,940,/997/8/343/1065/354/386/607/560/,FFA5D2,,,f,941,3306778024,734881840,Cochlear nucleus subpedunclular granular region -96,860,Dorsal cochlear nucleus,DCO,,1,3,8690,607,7,1,941,/997/8/343/1065/354/386/607/96/,FFA5D2,,,f,942,1628596813,734881840,Dorsal cochlear nucleus -101,861,Ventral cochlear nucleus,VCO,,1,3,8690,607,7,1,942,/997/8/343/1065/354/386/607/101/,FFA5D2,,,f,943,1142812669,734881840,Ventral cochlear nucleus -720,89,Dorsal column nuclei,DCN,,1,3,8690,386,6,1,943,/997/8/343/1065/354/386/720/,FFA5D2,,,f,944,3104895435,734881840,Dorsal column nuclei -711,88,Cuneate nucleus,CU,,1,3,8690,720,7,1,944,/997/8/343/1065/354/386/720/711/,FFA5D2,,,f,945,1566278280,734881840,Cuneate nucleus -1039,129,Gracile nucleus,GR,,1,3,8690,720,7,1,945,/997/8/343/1065/354/386/720/1039/,FFA5D2,,,f,946,4095548839,734881840,Gracile nucleus -903,112,External cuneate nucleus,ECU,,1,3,8690,386,6,1,946,/997/8/343/1065/354/386/903/,FFA5D2,,,f,947,868005914,734881840,External cuneate nucleus -642,221,Nucleus of the trapezoid body,NTB,,1,3,8690,386,6,1,947,/997/8/343/1065/354/386/642/,FFA5D2,,,f,948,3384679656,734881840,Nucleus of the trapezoid body -651,222,Nucleus of the solitary tract,NTS,,1,3,8690,386,6,1,948,/997/8/343/1065/354/386/651/,FFA5D2,,,f,949,1090041084,734881840,Nucleus of the solitary tract -659,223,Nucleus of the solitary tract central part,NTSce,,1,3,8690,651,7,1,949,/997/8/343/1065/354/386/651/659/,FFA5D2,,,f,950,4015698646,734881840,Nucleus of the solitary tract central part -666,224,Nucleus of the solitary tract commissural part,NTSco,,1,3,8690,651,7,1,950,/997/8/343/1065/354/386/651/666/,FFA5D2,,,f,951,133031180,734881840,Nucleus of the solitary tract commissural part -674,225,Nucleus of the solitary tract gelatinous part,NTSge,,1,3,8690,651,7,1,951,/997/8/343/1065/354/386/651/674/,FFA5D2,,,f,952,2723763350,734881840,Nucleus of the solitary tract gelatinous part -682,226,Nucleus of the solitary tract lateral part,NTSl,,1,3,8690,651,7,1,952,/997/8/343/1065/354/386/651/682/,FFA5D2,,,f,953,2787121462,734881840,Nucleus of the solitary tract lateral part -691,227,Nucleus of the solitary tract medial part,NTSm,,1,3,8690,651,7,1,953,/997/8/343/1065/354/386/651/691/,FFA5D2,,,f,954,2313161716,734881840,Nucleus of the solitary tract medial part -429,336,Spinal nucleus of the trigeminal caudal part,SPVC,,1,3,8690,386,6,1,954,/997/8/343/1065/354/386/429/,FFA5D2,,,f,955,3872657876,734881840,Spinal nucleus of the trigeminal caudal part -437,337,Spinal nucleus of the trigeminal interpolar part,SPVI,,1,3,8690,386,6,1,955,/997/8/343/1065/354/386/437/,FFA5D2,,,f,956,3412250118,734881840,Spinal nucleus of the trigeminal interpolar part -445,338,Spinal nucleus of the trigeminal oral part,SPVO,,1,3,8690,386,6,1,956,/997/8/343/1065/354/386/445/,FFA5D2,,,f,957,2940691791,734881840,Spinal nucleus of the trigeminal oral part -77,858,Spinal nucleus of the trigeminal oral part caudal dorsomedial part,SPVOcdm,,1,3,8690,445,7,1,957,/997/8/343/1065/354/386/445/77/,FFA5D2,,,f,958,4278948626,734881840,Spinal nucleus of the trigeminal oral part caudal dorsomedial part -53,855,Spinal nucleus of the trigeminal oral part middle dorsomedial part dorsal zone,SPVOmdmd,,1,3,8690,445,7,1,958,/997/8/343/1065/354/386/445/53/,FFA5D2,,,f,959,217466567,734881840,Spinal nucleus of the trigeminal oral part middle dorsomedial part dorsal zone -61,856,Spinal nucleus of the trigeminal oral part middle dorsomedial part ventral zone,SPVOmdmv,,1,3,8690,445,7,1,959,/997/8/343/1065/354/386/445/61/,FFA5D2,,,f,960,2911019619,734881840,Spinal nucleus of the trigeminal oral part middle dorsomedial part ventral zone -45,854,Spinal nucleus of the trigeminal oral part rostral dorsomedial part,SPVOrdm,,1,3,8690,445,7,1,960,/997/8/343/1065/354/386/445/45/,FFA5D2,,,f,961,3878567998,734881840,Spinal nucleus of the trigeminal oral part rostral dorsomedial part -69,857,Spinal nucleus of the trigeminal oral part ventrolateral part,SPVOvl,,1,3,8690,445,7,1,961,/997/8/343/1065/354/386/445/69/,FFA5D2,,,f,962,4273257522,734881840,Spinal nucleus of the trigeminal oral part ventrolateral part -589508451,,Paratrigeminal nucleus,Pa5,,1,3,8690,386,6,1,962,/997/8/343/1065/354/386/589508451/,FFA5D2,,,f,963,2968278306,734881840,Paratrigeminal nucleus -789,381,Nucleus z,z,,1,3,8690,386,6,1,963,/997/8/343/1065/354/386/789/,FFA5D2,,,f,964,2941323404,734881840,Nucleus z -370,187,Medulla motor related,MY-mot,,1,3,8690,354,5,1,964,/997/8/343/1065/354/370/,FFB3D9,,,f,965,1608897191,734881840,Medulla motor related -653,364,Abducens nucleus,VI,,1,3,8690,370,6,1,965,/997/8/343/1065/354/370/653/,FFB3D9,,,f,966,3487199484,734881840,Abducens nucleus -568,919,Accessory abducens nucleus,ACVI,,1,3,8690,370,6,1,966,/997/8/343/1065/354/370/568/,FFB3D9,,,f,967,1529583787,734881840,Accessory abducens nucleus -661,365,Facial motor nucleus,VII,,1,3,8690,370,6,1,967,/997/8/343/1065/354/370/661/,FFB3D9,,,f,968,3767076544,734881840,Facial motor nucleus -576,920,Accessory facial motor nucleus,ACVII,,1,3,8690,370,6,1,968,/997/8/343/1065/354/370/576/,FFB3D9,,,f,969,3949410146,734881840,Accessory facial motor nucleus -640,928,Efferent vestibular nucleus,EV,,1,3,8690,370,6,1,969,/997/8/343/1065/354/370/640/,FFB3D9,,,f,970,358747077,734881840,Efferent vestibular nucleus -135,16,Nucleus ambiguus,AMB,,1,3,8690,370,6,1,970,/997/8/343/1065/354/370/135/,FFB3D9,,,f,971,1540571580,734881840,Nucleus ambiguus -939,824,Nucleus ambiguus dorsal division,AMBd,,1,3,8690,135,7,1,971,/997/8/343/1065/354/370/135/939/,FFB3D9,,,f,972,2183877720,734881840,Nucleus ambiguus dorsal division -143,17,Nucleus ambiguus ventral division,AMBv,,1,3,8690,135,7,1,972,/997/8/343/1065/354/370/135/143/,FFB3D9,,,f,973,1830643471,734881840,Nucleus ambiguus ventral division -839,104,Dorsal motor nucleus of the vagus nerve,DMX,,1,3,8690,370,6,1,973,/997/8/343/1065/354/370/839/,FFB3D9,,,f,974,1434245940,734881840,Dorsal motor nucleus of the vagus nerve -887,110,Efferent cochlear group,ECO,,1,3,8690,370,6,1,974,/997/8/343/1065/354/370/887/,FFB3D9,,,f,975,2312383346,734881840,Efferent cochlear group -1048,130,Gigantocellular reticular nucleus,GRN,,1,3,8690,370,6,1,975,/997/8/343/1065/354/370/1048/,FFB3D9,,,f,976,3365807362,734881840,Gigantocellular reticular nucleus -372,470,Infracerebellar nucleus,ICB,,1,3,8690,370,6,1,976,/997/8/343/1065/354/370/372/,FFB3D9,,,f,977,7302009,734881840,Infracerebellar nucleus -83,151,Inferior olivary complex,IO,,1,3,8690,370,6,1,977,/997/8/343/1065/354/370/83/,FFB3D9,,,f,978,2657411510,734881840,Inferior olivary complex -136,865,Intermediate reticular nucleus,IRN,,1,3,8690,370,6,1,978,/997/8/343/1065/354/370/136/,FFB3D9,,,f,979,484077622,734881840,Intermediate reticular nucleus -106,154,Inferior salivatory nucleus,ISN,,1,3,8690,370,6,1,979,/997/8/343/1065/354/370/106/,FFB3D9,,,f,980,2611456062,734881840,Inferior salivatory nucleus -203,166,Linear nucleus of the medulla,LIN,,1,3,8690,370,6,1,980,/997/8/343/1065/354/370/203/,FFB3D9,,,f,981,311698439,734881840,Linear nucleus of the medulla -235,170,Lateral reticular nucleus,LRN,,1,3,8690,370,6,1,981,/997/8/343/1065/354/370/235/,FFB3D9,,,f,982,1748300472,734881840,Lateral reticular nucleus -955,826,Lateral reticular nucleus magnocellular part,LRNm,,1,3,8690,235,7,1,982,/997/8/343/1065/354/370/235/955/,FFB3D9,,,f,983,68562325,734881840,Lateral reticular nucleus magnocellular part -963,827,Lateral reticular nucleus parvicellular part,LRNp,,1,3,8690,235,7,1,983,/997/8/343/1065/354/370/235/963/,FFB3D9,,,f,984,910771600,734881840,Lateral reticular nucleus parvicellular part -307,179,Magnocellular reticular nucleus,MARN,,1,3,8690,370,6,1,984,/997/8/343/1065/354/370/307/,FFB3D9,,,f,985,1658667243,734881840,Magnocellular reticular nucleus -395,190,Medullary reticular nucleus,MDRN,,1,3,8690,370,6,1,985,/997/8/343/1065/354/370/395/,FFB3D9,,,f,986,90062647,734881840,Medullary reticular nucleus -1098,844,Medullary reticular nucleus dorsal part,MDRNd,,1,3,8690,395,7,1,986,/997/8/343/1065/354/370/395/1098/,FFB3D9,,,f,987,2459648443,734881840,Medullary reticular nucleus dorsal part -1107,845,Medullary reticular nucleus ventral part,MDRNv,,1,3,8690,395,7,1,987,/997/8/343/1065/354/370/395/1107/,FFB3D9,,,f,988,4055979044,734881840,Medullary reticular nucleus ventral part -852,247,Parvicellular reticular nucleus,PARN,,1,3,8690,370,6,1,988,/997/8/343/1065/354/370/852/,FFB3D9,,,f,989,3605828329,734881840,Parvicellular reticular nucleus -859,248,Parasolitary nucleus,PAS,,1,3,8690,370,6,1,989,/997/8/343/1065/354/370/859/,FFB3D9,,,f,990,2326551911,734881840,Parasolitary nucleus -938,258,Paragigantocellular reticular nucleus,PGRN,,1,3,8690,370,6,1,990,/997/8/343/1065/354/370/938/,FFB3D9,,,f,991,4192283845,734881840,Paragigantocellular reticular nucleus -970,828,Paragigantocellular reticular nucleus dorsal part,PGRNd,,1,3,8690,938,7,1,991,/997/8/343/1065/354/370/938/970/,FFB3D9,,,f,992,33977280,734881840,Paragigantocellular reticular nucleus dorsal part -978,829,Paragigantocellular reticular nucleus lateral part,PGRNl,,1,3,8690,938,7,1,992,/997/8/343/1065/354/370/938/978/,FFB3D9,,,f,993,3947319470,734881840,Paragigantocellular reticular nucleus lateral part -154,443,Perihypoglossal nuclei,PHY,,1,3,8690,370,6,1,993,/997/8/343/1065/354/370/154/,FFB3D9,,,f,994,2963771227,734881840,Perihypoglossal nuclei -161,444,Nucleus intercalatus,NIS,,1,3,8690,154,7,1,994,/997/8/343/1065/354/370/154/161/,FFB3D9,,,f,995,66776727,734881840,Nucleus intercalatus -177,446,Nucleus of Roller,NR,,1,3,8690,154,7,1,995,/997/8/343/1065/354/370/154/177/,FFB3D9,,,f,996,2483747197,734881840,Nucleus of Roller -169,445,Nucleus prepositus,PRP,,1,3,8690,154,7,1,996,/997/8/343/1065/354/370/154/169/,FFB3D9,,,f,997,2889042614,734881840,Nucleus prepositus -995,265,Paramedian reticular nucleus,PMR,,1,3,8690,370,6,1,997,/997/8/343/1065/354/370/995/,FFB3D9,,,f,998,1727467162,734881840,Paramedian reticular nucleus -1069,274,Parapyramidal nucleus,PPY,,1,3,8690,370,6,1,998,/997/8/343/1065/354/370/1069/,FFB3D9,,,f,999,4065444564,734881840,Parapyramidal nucleus -185,447,Parapyramidal nucleus deep part,PPYd,,1,3,8690,1069,7,1,999,/997/8/343/1065/354/370/1069/185/,FFB3D9,,,f,1000,3839043545,734881840,Parapyramidal nucleus deep part -193,448,Parapyramidal nucleus superficial part,PPYs,,1,3,8690,1069,7,1,1000,/997/8/343/1065/354/370/1069/193/,FFB3D9,,,f,1001,419402085,734881840,Parapyramidal nucleus superficial part -701,370,Vestibular nuclei,VNC,,1,3,8690,370,6,1,1001,/997/8/343/1065/354/370/701/,FFB3D9,,,f,1002,2805025276,734881840,Vestibular nuclei -209,450,Lateral vestibular nucleus,LAV,,1,3,8690,701,7,1,1002,/997/8/343/1065/354/370/701/209/,FFB3D9,,,f,1003,2027918559,734881840,Lateral vestibular nucleus -202,449,Medial vestibular nucleus,MV,,1,3,8690,701,7,1,1003,/997/8/343/1065/354/370/701/202/,FFB3D9,,,f,1004,2935119484,734881840,Medial vestibular nucleus -225,452,Spinal vestibular nucleus,SPIV,,1,3,8690,701,7,1,1004,/997/8/343/1065/354/370/701/225/,FFB3D9,,,f,1005,3627168871,734881840,Spinal vestibular nucleus -217,451,Superior vestibular nucleus,SUV,,1,3,8690,701,7,1,1005,/997/8/343/1065/354/370/701/217/,FFB3D9,,,f,1006,1654500180,734881840,Superior vestibular nucleus -765,378,Nucleus x,x,,1,3,8690,370,6,1,1006,/997/8/343/1065/354/370/765/,FFB3D9,,,f,1007,1096772000,734881840,Nucleus x -773,379,Hypoglossal nucleus,XII,,1,3,8690,370,6,1,1007,/997/8/343/1065/354/370/773/,FFB3D9,,,f,1008,2567805299,734881840,Hypoglossal nucleus -781,380,Nucleus y,y,,1,3,8690,370,6,1,1008,/997/8/343/1065/354/370/781/,FFB3D9,,,f,1009,911759670,734881840,Nucleus y -76,150,Interstitial nucleus of the vestibular nerve,INV,,1,3,8690,370,6,1,1009,/997/8/343/1065/354/370/76/,FFB3D9,,,f,1010,1070920716,734881840,Interstitial nucleus of the vestibular nerve -379,188,Medulla behavioral state related,MY-sat,,1,3,8690,354,5,1,1010,/997/8/343/1065/354/379/,FFC6E2,,,f,1011,492266850,734881840,Medulla behavioral state related -206,308,Nucleus raphe magnus,RM,,1,3,8690,379,6,1,1011,/997/8/343/1065/354/379/206/,FFC6E2,,,f,1012,2906210024,734881840,Nucleus raphe magnus -230,311,Nucleus raphe pallidus,RPA,,1,3,8690,379,6,1,1012,/997/8/343/1065/354/379/230/,FFC6E2,,,f,1013,2034543671,734881840,Nucleus raphe pallidus -222,310,Nucleus raphe obscurus,RO,,1,3,8690,379,6,1,1013,/997/8/343/1065/354/379/222/,FFC6E2,,,f,1014,2676196695,734881840,Nucleus raphe obscurus -512,63,Cerebellum,CB,,1,3,8690,8,2,1,1014,/997/8/512/,F0F080,,,f,1015,4069546324,734881840,Cerebellum -528,65,Cerebellar cortex,CBX,,1,3,8690,512,3,1,1015,/997/8/512/528/,F0F080,,,f,1016,1183639712,734881840,Cerebellar cortex -1144,1142,Cerebellar cortex molecular layer,CBXmo,,1,3,8690,528,4,1,1016,/997/8/512/528/1144/,FFFC91,,,f,1017,2797331721,734881840,Cerebellar cortex molecular layer -1145,1143,Cerebellar cortex Purkinje layer,CBXpu,,1,3,8690,528,4,1,1017,/997/8/512/528/1145/,FFFC91,,,f,1018,2145022156,734881840,Cerebellar cortex Purkinje layer -1143,1141,Cerebellar cortex granular layer,CBXgr,,1,3,8690,528,4,1,1018,/997/8/512/528/1143/,ECE754,,,f,1019,706018392,734881840,Cerebellar cortex granular layer -645,363,Vermal regions,VERM,,1,3,8690,528,4,1,1019,/997/8/512/528/645/,FFFC91,,,f,1020,210800080,734881840,Vermal regions -912,396,Lingula (I),LING,,1,3,8690,645,5,1,1020,/997/8/512/528/645/912/,FFFC91,,,f,1021,1157192956,734881840,Lingula (I) -10707,,Lingula (I) molecular layer,LINGmo,,1,3,8690,912,6,1,1021,/997/8/512/528/645/912/10707/,FFFC91,,,f,1022,3473711823,734881840,Lingula (I) molecular layer -10706,,Lingula (I) Purkinje layer,LINGpu,,1,3,8690,912,6,1,1022,/997/8/512/528/645/912/10706/,FFFC91,,,f,1023,3462350943,734881840,Lingula (I) Purkinje layer -10705,,Lingula (I) granular layer,LINGgr,,1,3,8690,912,6,1,1023,/997/8/512/528/645/912/10705/,ECE754,,,f,1024,2610021579,734881840,Lingula (I) granular layer -920,397,Central lobule,CENT,,1,3,8690,645,5,1,1024,/997/8/512/528/645/920/,FFFC91,,,f,1025,3534428959,734881840,Central lobule -976,404,Lobule II,CENT2,,1,3,8690,920,6,1,1025,/997/8/512/528/645/920/976/,FFFC91,,,f,1026,3597550065,734881840,Lobule II -10710,,Lobule II molecular layer,CENT2mo,,1,3,8690,976,7,1,1026,/997/8/512/528/645/920/976/10710/,FFFC91,,,f,1027,2316780061,734881840,Lobule II molecular layer -10709,,Lobule II Purkinje layer,CENT2pu,,1,3,8690,976,7,1,1027,/997/8/512/528/645/920/976/10709/,FFFC91,,,f,1028,182710130,734881840,Lobule II Purkinje layer -10708,,Lobule II granular layer,CENT2gr,,1,3,8690,976,7,1,1028,/997/8/512/528/645/920/976/10708/,ECE754,,,f,1029,1596810214,734881840,Lobule II granular layer -984,405,Lobule III,CENT3,,1,3,8690,920,6,1,1029,/997/8/512/528/645/920/984/,FFFC91,,,f,1030,393132658,734881840,Lobule III -10713,,Lobule III molecular layer,CENT3mo,,1,3,8690,984,7,1,1030,/997/8/512/528/645/920/984/10713/,FFFC91,,,f,1031,2843540171,734881840,Lobule III molecular layer -10712,,Lobule III Purkinje layer,CENT3pu,,1,3,8690,984,7,1,1031,/997/8/512/528/645/920/984/10712/,FFFC91,,,f,1032,3090974341,734881840,Lobule III Purkinje layer -10711,,Lobule III granular layer,CENT3gr,,1,3,8690,984,7,1,1032,/997/8/512/528/645/920/984/10711/,ECE754,,,f,1033,3992062481,734881840,Lobule III granular layer -928,398,Culmen,CUL,,1,3,8690,645,5,1,1033,/997/8/512/528/645/928/,FFFC91,,,f,1034,2319676843,734881840,Culmen -992,406,Lobule IV,CUL4,,1,3,8690,928,6,1,1034,/997/8/512/528/645/928/992/,FFFC91,,,f,1035,1533430788,734881840,Lobule IV -10716,,Lobule IV molecular layer,CUL4mo,,1,3,8690,992,7,1,1035,/997/8/512/528/645/928/992/10716/,FFFC91,,,f,1036,1539631285,734881840,Lobule IV molecular layer -10715,,Lobule IV Purkinje layer,CUL4pu,,1,3,8690,992,7,1,1036,/997/8/512/528/645/928/992/10715/,FFFC91,,,f,1037,1647228630,734881840,Lobule IV Purkinje layer -10714,,Lobule IV granular layer,CUL4gr,,1,3,8690,992,7,1,1037,/997/8/512/528/645/928/992/10714/,ECE754,,,f,1038,937441858,734881840,Lobule IV granular layer -1001,407,Lobule V,CUL5,,1,3,8690,928,6,1,1038,/997/8/512/528/645/928/1001/,FFFC91,,,f,1039,981492794,734881840,Lobule V -10719,,Lobule V molecular layer,CUL5mo,,1,3,8690,1001,7,1,1039,/997/8/512/528/645/928/1001/10719/,FFFC91,,,f,1040,3910893890,734881840,Lobule V molecular layer -10718,,Lobule V Purkinje layer,CUL5pu,,1,3,8690,1001,7,1,1040,/997/8/512/528/645/928/1001/10718/,FFFC91,,,f,1041,5007727,734881840,Lobule V Purkinje layer -10717,,Lobule V granular layer,CUL5gr,,1,3,8690,1001,7,1,1041,/997/8/512/528/645/928/1001/10717/,ECE754,,,f,1042,1434641915,734881840,Lobule V granular layer -1091,843,Lobules IV-V,CUL4 5,,1,3,8690,928,6,1,1042,/997/8/512/528/645/928/1091/,FFFC91,,,f,1043,3691274609,734881840,Lobules IV-V -10722,,Lobules IV-V molecular layer,CUL4 5mo,,1,3,8690,1091,7,1,1043,/997/8/512/528/645/928/1091/10722/,FFFC91,,,f,1044,983212771,734881840,Lobules IV-V molecular layer -10721,,Lobules IV-V Purkinje layer,CUL4 5pu,,1,3,8690,1091,7,1,1044,/997/8/512/528/645/928/1091/10721/,FFFC91,,,f,1045,1469788936,734881840,Lobules IV-V Purkinje layer -10720,,Lobules IV-V granular layer,CUL4 5gr,,1,3,8690,1091,7,1,1045,/997/8/512/528/645/928/1091/10720/,ECE754,,,f,1046,39174044,734881840,Lobules IV-V granular layer -936,399,Declive (VI),DEC,,1,3,8690,645,5,1,1046,/997/8/512/528/645/936/,FFFC91,,,f,1047,1592716230,734881840,Declive (VI) -10725,,Declive (VI) molecular layer,DECmo,,1,3,8690,936,6,1,1047,/997/8/512/528/645/936/10725/,FFFC91,,,f,1048,1587631392,734881840,Declive (VI) molecular layer -10724,,Declive (VI) Purkinje layer,DECpu,,1,3,8690,936,6,1,1048,/997/8/512/528/645/936/10724/,FFFC91,,,f,1049,130297873,734881840,Declive (VI) Purkinje layer -10723,,Declive (VI) granular layer,DECgr,,1,3,8690,936,6,1,1049,/997/8/512/528/645/936/10723/,ECE754,,,f,1050,1376435333,734881840,Declive (VI) granular layer -944,400,Folium-tuber vermis (VII),FOTU,,1,3,8690,645,5,1,1050,/997/8/512/528/645/944/,FFFC91,,,f,1051,1120315048,734881840,Folium-tuber vermis (VII) -10728,,Folium-tuber vermis (VII) molecular layer,FOTUmo,,1,3,8690,944,6,1,1051,/997/8/512/528/645/944/10728/,FFFC91,,,f,1052,2702663346,734881840,Folium-tuber vermis (VII) molecular layer -10727,,Folium-tuber vermis (VII) Purkinje layer,FOTUpu,,1,3,8690,944,6,1,1052,/997/8/512/528/645/944/10727/,FFFC91,,,f,1053,3198538440,734881840,Folium-tuber vermis (VII) Purkinje layer -10726,,Folium-tuber vermis (VII) granular layer,FOTUgr,,1,3,8690,944,6,1,1053,/997/8/512/528/645/944/10726/,ECE754,,,f,1054,3949682268,734881840,Folium-tuber vermis (VII) granular layer -951,401,Pyramus (VIII),PYR,,1,3,8690,645,5,1,1054,/997/8/512/528/645/951/,FFFC91,,,f,1055,1195853048,734881840,Pyramus (VIII) -10731,,Pyramus (VIII) molecular layer,PYRmo,,1,3,8690,951,6,1,1055,/997/8/512/528/645/951/10731/,FFFC91,,,f,1056,3458346904,734881840,Pyramus (VIII) molecular layer -10730,,Pyramus (VIII) Purkinje layer,PYRpu,,1,3,8690,951,6,1,1056,/997/8/512/528/645/951/10730/,FFFC91,,,f,1057,1000544542,734881840,Pyramus (VIII) Purkinje layer -10729,,Pyramus (VIII) granular layer,PYRgr,,1,3,8690,951,6,1,1057,/997/8/512/528/645/951/10729/,ECE754,,,f,1058,1852675466,734881840,Pyramus (VIII) granular layer -957,402,Uvula (IX),UVU,,1,3,8690,645,5,1,1058,/997/8/512/528/645/957/,FFFC91,,,f,1059,3218909973,734881840,Uvula (IX) -10734,,Uvula (IX) molecular layer,UVUmo,,1,3,8690,957,6,1,1059,/997/8/512/528/645/957/10734/,FFFC91,,,f,1060,276896234,734881840,Uvula (IX) molecular layer -10733,,Uvula (IX) Purkinje layer,UVUpu,,1,3,8690,957,6,1,1060,/997/8/512/528/645/957/10733/,FFFC91,,,f,1061,587968243,734881840,Uvula (IX) Purkinje layer -10732,,Uvula (IX) granular layer,UVUgr,,1,3,8690,957,6,1,1061,/997/8/512/528/645/957/10732/,ECE754,,,f,1062,1992630887,734881840,Uvula (IX) granular layer -968,403,Nodulus (X),NOD,,1,3,8690,645,5,1,1062,/997/8/512/528/645/968/,FFFC91,,,f,1063,626869262,734881840,Nodulus (X) -10737,,Nodulus (X) molecular layer,NODmo,,1,3,8690,968,6,1,1063,/997/8/512/528/645/968/10737/,FFFC91,,,f,1064,3288502643,734881840,Nodulus (X) molecular layer -10736,,Nodulus (X) Purkinje layer,NODpu,,1,3,8690,968,6,1,1064,/997/8/512/528/645/968/10736/,FFFC91,,,f,1065,464770448,734881840,Nodulus (X) Purkinje layer -10735,,Nodulus (X) granular layer,NODgr,,1,3,8690,968,6,1,1065,/997/8/512/528/645/968/10735/,ECE754,,,f,1066,1316837636,734881840,Nodulus (X) granular layer -1073,133,Hemispheric regions,HEM,,1,3,8690,528,4,1,1066,/997/8/512/528/1073/,FFFC91,,,f,1067,697387705,734881840,Hemispheric regions -1007,408,Simple lobule,SIM,,1,3,8690,1073,5,1,1067,/997/8/512/528/1073/1007/,FFFC91,,,f,1068,3723950850,734881840,Simple lobule -10674,,Simple lobule molecular layer,SIMmo,,1,3,8690,1007,6,1,1068,/997/8/512/528/1073/1007/10674/,FFFC91,,,f,1069,4097504869,734881840,Simple lobule molecular layer -10673,,Simple lobule Purkinje layer,SIMpu,,1,3,8690,1007,6,1,1069,/997/8/512/528/1073/1007/10673/,FFFC91,,,f,1070,2519411327,734881840,Simple lobule Purkinje layer -10672,,Simple lobule granular layer,SIMgr,,1,3,8690,1007,6,1,1070,/997/8/512/528/1073/1007/10672/,ECE754,,,f,1071,3286607595,734881840,Simple lobule granular layer -1017,409,Ansiform lobule,AN,,1,3,8690,1073,5,1,1071,/997/8/512/528/1073/1017/,FFFC91,,,f,1072,3221901529,734881840,Ansiform lobule -1056,414,Crus 1,ANcr1,,1,3,8690,1017,6,1,1072,/997/8/512/528/1073/1017/1056/,FFFC91,,,f,1073,1964034289,734881840,Crus 1 -10677,,Crus 1 molecular layer,ANcr1mo,,1,3,8690,1056,7,1,1073,/997/8/512/528/1073/1017/1056/10677/,FFFC91,,,f,1074,1036534048,734881840,Crus 1 molecular layer -10676,,Crus 1 Purkinje layer,ANcr1pu,,1,3,8690,1056,7,1,1074,/997/8/512/528/1073/1017/1056/10676/,FFFC91,,,f,1075,1757210892,734881840,Crus 1 Purkinje layer -10675,,Crus 1 granular layer,ANcr1gr,,1,3,8690,1056,7,1,1075,/997/8/512/528/1073/1017/1056/10675/,ECE754,,,f,1076,1030907288,734881840,Crus 1 granular layer -1064,415,Crus 2,ANcr2,,1,3,8690,1017,6,1,1076,/997/8/512/528/1073/1017/1064/,FFFC91,,,f,1077,3961100619,734881840,Crus 2 -10680,,Crus 2 molecular layer,ANcr2mo,,1,3,8690,1064,7,1,1077,/997/8/512/528/1073/1017/1064/10680/,FFFC91,,,f,1078,1850874532,734881840,Crus 2 molecular layer -10679,,Crus 2 Purkinje layer,ANcr2pu,,1,3,8690,1064,7,1,1078,/997/8/512/528/1073/1017/1064/10679/,FFFC91,,,f,1079,1098145278,734881840,Crus 2 Purkinje layer -10678,,Crus 2 granular layer,ANcr2gr,,1,3,8690,1064,7,1,1079,/997/8/512/528/1073/1017/1064/10678/,ECE754,,,f,1080,347787626,734881840,Crus 2 granular layer -1025,410,Paramedian lobule,PRM,,1,3,8690,1073,5,1,1080,/997/8/512/528/1073/1025/,FFFC91,,,f,1081,2367515256,734881840,Paramedian lobule -10683,,Paramedian lobule molecular layer,PRMmo,,1,3,8690,1025,6,1,1081,/997/8/512/528/1073/1025/10683/,FFFC91,,,f,1082,636299035,734881840,Paramedian lobule molecular layer -10682,,Paramedian lobule Purkinje layer,PRMpu,,1,3,8690,1025,6,1,1082,/997/8/512/528/1073/1025/10682/,FFFC91,,,f,1083,4204635611,734881840,Paramedian lobule Purkinje layer -10681,,Paramedian lobule granular layer,PRMgr,,1,3,8690,1025,6,1,1083,/997/8/512/528/1073/1025/10681/,ECE754,,,f,1084,2941462863,734881840,Paramedian lobule granular layer -1033,411,Copula pyramidis,COPY,,1,3,8690,1073,5,1,1084,/997/8/512/528/1073/1033/,FFFC91,,,f,1085,2916242466,734881840,Copula pyramidis -10686,,Copula pyramidis molecular layer,COPYmo,,1,3,8690,1033,6,1,1085,/997/8/512/528/1073/1033/10686/,FFFC91,,,f,1086,536021991,734881840,Copula pyramidis molecular layer -10685,,Copula pyramidis Purkinje layer,COPYpu,,1,3,8690,1033,6,1,1086,/997/8/512/528/1073/1033/10685/,FFFC91,,,f,1087,1373673402,734881840,Copula pyramidis Purkinje layer -10684,,Copula pyramidis granular layer,COPYgr,,1,3,8690,1033,6,1,1087,/997/8/512/528/1073/1033/10684/,ECE754,,,f,1088,70130478,734881840,Copula pyramidis granular layer -1041,412,Paraflocculus,PFL,,1,3,8690,1073,5,1,1088,/997/8/512/528/1073/1041/,FFFC91,,,f,1089,775625608,734881840,Paraflocculus -10689,,Paraflocculus molecular layer,PFLmo,,1,3,8690,1041,6,1,1089,/997/8/512/528/1073/1041/10689/,FFFC91,,,f,1090,2192132592,734881840,Paraflocculus molecular layer -10688,,Paraflocculus Purkinje layer,PFLpu,,1,3,8690,1041,6,1,1090,/997/8/512/528/1073/1041/10688/,FFFC91,,,f,1091,3654627135,734881840,Paraflocculus Purkinje layer -10687,,Paraflocculus granular layer,PFLgr,,1,3,8690,1041,6,1,1091,/997/8/512/528/1073/1041/10687/,ECE754,,,f,1092,2350621611,734881840,Paraflocculus granular layer -1049,413,Flocculus,FL,,1,3,8690,1073,5,1,1092,/997/8/512/528/1073/1049/,FFFC91,,,f,1093,1738627181,734881840,Flocculus -10692,,Flocculus molecular layer,FLmo,,1,3,8690,1049,6,1,1093,/997/8/512/528/1073/1049/10692/,FFFC91,,,f,1094,1260681159,734881840,Flocculus molecular layer -10691,,Flocculus Purkinje layer,FLpu,,1,3,8690,1049,6,1,1094,/997/8/512/528/1073/1049/10691/,FFFC91,,,f,1095,1489739340,734881840,Flocculus Purkinje layer -10690,,Flocculus granular layer,FLgr,,1,3,8690,1049,6,1,1095,/997/8/512/528/1073/1049/10690/,ECE754,,,f,1096,218436312,734881840,Flocculus granular layer -519,64,Cerebellar nuclei,CBN,,1,3,8690,512,3,1,1096,/997/8/512/519/,F0F080,,,f,1097,1080202909,734881840,Cerebellar nuclei -989,123,Fastigial nucleus,FN,,1,3,8690,519,4,1,1097,/997/8/512/519/989/,FFFDBC,,,f,1098,960199658,734881840,Fastigial nucleus -91,152,Interposed nucleus,IP,,1,3,8690,519,4,1,1098,/997/8/512/519/91/,FFFDBC,,,f,1099,3559061393,734881840,Interposed nucleus -846,105,Dentate nucleus,DN,,1,3,8690,519,4,1,1099,/997/8/512/519/846/,FFFDBC,,,f,1100,928321645,734881840,Dentate nucleus -589508455,,Vestibulocerebellar nucleus,VeCB,,1,3,8690,519,4,1,1100,/997/8/512/519/589508455/,FFFDBC,,,f,1101,3164461348,734881840,Vestibulocerebellar nucleus -1009,691,fiber tracts,fiber tracts,,1,3,8690,997,1,1,1101,/997/1009/,CCCCCC,,,f,1102,771268094,734881840,fiber tracts -967,686,cranial nerves,cm,,1,3,8690,1009,2,1,1102,/997/1009/967/,CCCCCC,,,f,1103,1191830544,734881840,cranial nerves -885,676,terminal nerve,tn,,1,3,8690,967,3,1,1103,/997/1009/967/885/,CCCCCC,,,f,1104,3037669130,734881840,terminal nerve -949,684,vomeronasal nerve,von,,1,3,8690,967,3,1,1104,/997/1009/967/949/,CCCCCC,,,f,1105,277092608,734881840,vomeronasal nerve -840,670,olfactory nerve,In,,1,3,8690,967,3,1,1105,/997/1009/967/840/,CCCCCC,,,f,1106,1727601264,734881840,olfactory nerve -1016,692,olfactory nerve layer of main olfactory bulb,onl,,1,3,8690,840,4,1,1106,/997/1009/967/840/1016/,CCCCCC,,,f,1107,3450858286,734881840,olfactory nerve layer of main olfactory bulb -21,568,lateral olfactory tract general,lotg,,1,3,8690,840,4,1,1107,/997/1009/967/840/21/,CCCCCC,,,f,1108,2601931165,734881840,lateral olfactory tract general -665,507,lateral olfactory tract body,lot,,1,3,8690,21,5,1,1108,/997/1009/967/840/21/665/,CCCCCC,,,f,1109,2791586724,734881840,lateral olfactory tract body -538,491,dorsal limb,lotd,,1,3,8690,21,5,1,1109,/997/1009/967/840/21/538/,CCCCCC,,,f,1110,2177072245,734881840,dorsal limb -459,481,accessory olfactory tract,aolt,,1,3,8690,21,5,1,1110,/997/1009/967/840/21/459/,CCCCCC,,,f,1111,1866105457,734881840,accessory olfactory tract -900,536,anterior commissure olfactory limb,aco,,1,3,8690,840,4,1,1111,/997/1009/967/840/900/,CCCCCC,,,f,1112,1365430169,734881840,anterior commissure olfactory limb -848,671,optic nerve,IIn,,1,3,8690,967,3,1,1112,/997/1009/967/848/,CCCCCC,,,f,1113,3100185865,734881840,optic nerve -876,533,accessory optic tract,aot,,1,3,8690,848,4,1,1113,/997/1009/967/848/876/,CCCCCC,,,f,1114,2019784696,734881840,accessory optic tract -916,538,brachium of the superior colliculus,bsc,,1,3,8690,848,4,1,1114,/997/1009/967/848/916/,CCCCCC,,,f,1115,2637319906,734881840,brachium of the superior colliculus -336,607,superior colliculus commissure,csc,,1,3,8690,848,4,1,1115,/997/1009/967/848/336/,CCCCCC,,,f,1116,4201356620,734881840,superior colliculus commissure -117,580,optic chiasm,och,,1,3,8690,848,4,1,1116,/997/1009/967/848/117/,CCCCCC,,,f,1117,1585611786,734881840,optic chiasm -125,581,optic tract,opt,,1,3,8690,848,4,1,1117,/997/1009/967/848/125/,CCCCCC,,,f,1118,473050819,734881840,optic tract -357,610,tectothalamic pathway,ttp,,1,3,8690,848,4,1,1118,/997/1009/967/848/357/,CCCCCC,,,f,1119,2212800702,734881840,tectothalamic pathway -832,669,oculomotor nerve,IIIn,,1,3,8690,967,3,1,1119,/997/1009/967/832/,CCCCCC,,,f,1120,4065434170,734881840,oculomotor nerve -62,573,medial longitudinal fascicle,mlf,,1,3,8690,832,4,1,1120,/997/1009/967/832/62/,CCCCCC,,,f,1121,2996842461,734881840,medial longitudinal fascicle -158,585,posterior commissure,pc,,1,3,8690,832,4,1,1121,/997/1009/967/832/158/,CCCCCC,,,f,1122,4129046125,734881840,posterior commissure -911,679,trochlear nerve,IVn,,1,3,8690,967,3,1,1122,/997/1009/967/911/,CCCCCC,,,f,1123,1219326126,734881840,trochlear nerve -384,613,trochlear nerve decussation,IVd,,1,3,8690,911,4,1,1123,/997/1009/967/911/384/,CCCCCC,,,f,1124,2082477936,734881840,trochlear nerve decussation -710,654,abducens nerve,VIn,,1,3,8690,967,3,1,1124,/997/1009/967/710/,CCCCCC,,,f,1125,12381790,734881840,abducens nerve -901,678,trigeminal nerve,Vn,,1,3,8690,967,3,1,1125,/997/1009/967/901/,CCCCCC,,,f,1126,3826678836,734881840,trigeminal nerve -93,577,motor root of the trigeminal nerve,moV,,1,3,8690,901,4,1,1126,/997/1009/967/901/93/,CCCCCC,,,f,1127,511291358,734881840,motor root of the trigeminal nerve -229,594,sensory root of the trigeminal nerve,sV,,1,3,8690,901,4,1,1127,/997/1009/967/901/229/,CCCCCC,,,f,1128,1119694834,734881840,sensory root of the trigeminal nerve -705,512,midbrain tract of the trigeminal nerve,mtV,,1,3,8690,229,5,1,1128,/997/1009/967/901/229/705/,CCCCCC,,,f,1129,1926814004,734881840,midbrain tract of the trigeminal nerve -794,523,spinal tract of the trigeminal nerve,sptV,,1,3,8690,229,5,1,1129,/997/1009/967/901/229/794/,CCCCCC,,,f,1130,853181822,734881840,spinal tract of the trigeminal nerve -798,665,facial nerve,VIIn,,1,3,8690,967,3,1,1130,/997/1009/967/798/,CCCCCC,,,f,1131,2302244085,734881840,facial nerve -1131,565,intermediate nerve,iVIIn,,1,3,8690,798,4,1,1131,/997/1009/967/798/1131/,CCCCCC,,,f,1132,2336161075,734881840,intermediate nerve -1116,563,genu of the facial nerve,gVIIn,,1,3,8690,798,4,1,1132,/997/1009/967/798/1116/,CCCCCC,,,f,1133,3232359188,734881840,genu of the facial nerve -933,682,vestibulocochlear nerve,VIIIn,,1,3,8690,967,3,1,1133,/997/1009/967/933/,CCCCCC,,,f,1134,3849290809,734881840,vestibulocochlear nerve -1076,558,efferent cochleovestibular bundle,cvb,,1,3,8690,933,4,1,1134,/997/1009/967/933/1076/,CCCCCC,,,f,1135,4075971237,734881840,efferent cochleovestibular bundle -413,617,vestibular nerve,vVIIIn,,1,3,8690,933,4,1,1135,/997/1009/967/933/413/,CCCCCC,,,f,1136,3018519253,734881840,vestibular nerve -948,542,cochlear nerve,cVIIIn,,1,3,8690,933,4,1,1136,/997/1009/967/933/948/,CCCCCC,,,f,1137,962095195,734881840,cochlear nerve -841,529,trapezoid body,tb,,1,3,8690,948,5,1,1137,/997/1009/967/933/948/841/,CCCCCC,,,f,1138,1491826042,734881840,trapezoid body -641,504,intermediate acoustic stria,ias,,1,3,8690,948,5,1,1138,/997/1009/967/933/948/641/,CCCCCC,,,f,1139,2460821868,734881840,intermediate acoustic stria -506,487,dorsal acoustic stria,das,,1,3,8690,948,5,1,1139,/997/1009/967/933/948/506/,CCCCCC,,,f,1140,2563848709,734881840,dorsal acoustic stria -658,506,lateral lemniscus,ll,,1,3,8690,948,5,1,1140,/997/1009/967/933/948/658/,CCCCCC,,,f,1141,2249670554,734881840,lateral lemniscus -633,503,inferior colliculus commissure,cic,,1,3,8690,948,5,1,1141,/997/1009/967/933/948/633/,CCCCCC,,,f,1142,1506772234,734881840,inferior colliculus commissure -482,484,brachium of the inferior colliculus,bic,,1,3,8690,948,5,1,1142,/997/1009/967/933/948/482/,CCCCCC,,,f,1143,2423549855,734881840,brachium of the inferior colliculus -808,666,glossopharyngeal nerve,IXn,,1,3,8690,967,3,1,1143,/997/1009/967/808/,CCCCCC,,,f,1144,2892311360,734881840,glossopharyngeal nerve -917,680,vagus nerve,Xn,,1,3,8690,967,3,1,1144,/997/1009/967/917/,CCCCCC,,,f,1145,2090451855,734881840,vagus nerve -237,595,solitary tract,ts,,1,3,8690,917,4,1,1145,/997/1009/967/917/237/,CCCCCC,,,f,1146,3517832558,734881840,solitary tract -717,655,accessory spinal nerve,XIn,,1,3,8690,967,3,1,1146,/997/1009/967/717/,CCCCCC,,,f,1147,2966859887,734881840,accessory spinal nerve -813,667,hypoglossal nerve,XIIn,,1,3,8690,967,3,1,1147,/997/1009/967/813/,CCCCCC,,,f,1148,2776584549,734881840,hypoglossal nerve -925,681,ventral roots,vrt,,1,3,8690,967,3,1,1148,/997/1009/967/925/,CCCCCC,,,f,1149,4038675037,734881840,ventral roots -792,664,dorsal roots,drt,,1,3,8690,967,3,1,1149,/997/1009/967/792/,CCCCCC,,,f,1150,3729235522,734881840,dorsal roots -932,540,cervicothalamic tract,cett,,1,3,8690,792,4,1,1150,/997/1009/967/792/932/,CCCCCC,,,f,1151,2955091529,734881840,cervicothalamic tract -570,495,dorsolateral fascicle,dl,,1,3,8690,932,5,1,1151,/997/1009/967/792/932/570/,CCCCCC,,,f,1152,4232767129,734881840,dorsolateral fascicle -522,489,dorsal commissure of the spinal cord,dcm,,1,3,8690,932,5,1,1152,/997/1009/967/792/932/522/,CCCCCC,,,f,1153,2940092852,734881840,dorsal commissure of the spinal cord -858,531,ventral commissure of the spinal cord,vc,,1,3,8690,932,5,1,1153,/997/1009/967/792/932/858/,CCCCCC,,,f,1154,391042733,734881840,ventral commissure of the spinal cord -586,497,fasciculus proprius,fpr,,1,3,8690,932,5,1,1154,/997/1009/967/792/932/586/,CCCCCC,,,f,1155,2538399429,734881840,fasciculus proprius -514,488,dorsal column,dc,,1,3,8690,932,5,1,1155,/997/1009/967/792/932/514/,CCCCCC,,,f,1156,4021874632,734881840,dorsal column -380,471,cuneate fascicle,cuf,,1,3,8690,514,6,1,1156,/997/1009/967/792/932/514/380/,CCCCCC,,,f,1157,1158547825,734881840,cuneate fascicle -388,472,gracile fascicle,grf,,1,3,8690,514,6,1,1157,/997/1009/967/792/932/514/388/,CCCCCC,,,f,1158,4000740023,734881840,gracile fascicle -396,473,internal arcuate fibers,iaf,,1,3,8690,514,6,1,1158,/997/1009/967/792/932/514/396/,CCCCCC,,,f,1159,3611554723,734881840,internal arcuate fibers -697,511,medial lemniscus,ml,,1,3,8690,932,5,1,1159,/997/1009/967/792/932/697/,CCCCCC,,,f,1160,3519337805,734881840,medial lemniscus -871,674,spinothalamic tract,sst,,1,3,8690,967,3,1,1160,/997/1009/967/871/,CCCCCC,,,f,1161,3879904993,734881840,spinothalamic tract -29,569,lateral spinothalamic tract,sttl,,1,3,8690,871,4,1,1161,/997/1009/967/871/29/,CCCCCC,,,f,1162,1590160233,734881840,lateral spinothalamic tract -389,614,ventral spinothalamic tract,sttv,,1,3,8690,871,4,1,1162,/997/1009/967/871/389/,CCCCCC,,,f,1163,797556340,734881840,ventral spinothalamic tract -245,596,spinocervical tract,scrt,,1,3,8690,871,4,1,1163,/997/1009/967/871/245/,CCCCCC,,,f,1164,1786118986,734881840,spinocervical tract -261,598,spino-olivary pathway,sop,,1,3,8690,871,4,1,1164,/997/1009/967/871/261/,CCCCCC,,,f,1165,3501259155,734881840,spino-olivary pathway -270,599,spinoreticular pathway,srp,,1,3,8690,871,4,1,1165,/997/1009/967/871/270/,CCCCCC,,,f,1166,2749725572,734881840,spinoreticular pathway -293,602,spinovestibular pathway,svp,,1,3,8690,871,4,1,1166,/997/1009/967/871/293/,CCCCCC,,,f,1167,2122676298,734881840,spinovestibular pathway -277,600,spinotectal pathway,stp,,1,3,8690,871,4,1,1167,/997/1009/967/871/277/,CCCCCC,,,f,1168,2155059607,734881840,spinotectal pathway -253,597,spinohypothalamic pathway,shp,,1,3,8690,871,4,1,1168,/997/1009/967/871/253/,CCCCCC,,,f,1169,966214946,734881840,spinohypothalamic pathway -285,601,spinotelenchephalic pathway,step,,1,3,8690,871,4,1,1169,/997/1009/967/871/285/,CCCCCC,,,f,1170,1805493208,734881840,spinotelenchephalic pathway -627,502,hypothalamohypophysial tract,hht,,1,3,8690,285,5,1,1170,/997/1009/967/871/285/627/,CCCCCC,,,f,1171,2160377595,734881840,hypothalamohypophysial tract -960,685,cerebellum related fiber tracts,cbf,,1,3,8690,1009,2,1,1171,/997/1009/960/,CCCCCC,,,f,1172,4010653894,734881840,cerebellum related fiber tracts -744,658,cerebellar commissure,cbc,,1,3,8690,960,3,1,1172,/997/1009/960/744/,CCCCCC,,,f,1173,137458081,734881840,cerebellar commissure -752,659,cerebellar peduncles,cbp,,1,3,8690,960,3,1,1173,/997/1009/960/752/,CCCCCC,,,f,1174,3845133906,734881840,cerebellar peduncles -326,606,superior cerebelar peduncles,scp,,1,3,8690,752,4,1,1174,/997/1009/960/752/326/,CCCCCC,,,f,1175,1423960324,734881840,superior cerebelar peduncles -812,525,superior cerebellar peduncle decussation,dscp,,1,3,8690,326,5,1,1175,/997/1009/960/752/326/812/,CCCCCC,,,f,1176,3545529547,734881840,superior cerebellar peduncle decussation -85,859,spinocerebellar tract,sct,,1,3,8690,812,6,1,1176,/997/1009/960/752/326/812/85/,CCCCCC,,,f,1177,855849778,734881840,spinocerebellar tract -850,530,uncinate fascicle,uf,,1,3,8690,326,5,1,1177,/997/1009/960/752/326/850/,CCCCCC,,,f,1178,496405985,734881840,uncinate fascicle -866,532,ventral spinocerebellar tract,sctv,,1,3,8690,326,5,1,1178,/997/1009/960/752/326/866/,CCCCCC,,,f,1179,744035824,734881840,ventral spinocerebellar tract -78,575,middle cerebellar peduncle,mcp,,1,3,8690,752,4,1,1179,/997/1009/960/752/78/,CCCCCC,,,f,1180,733008278,734881840,middle cerebellar peduncle -1123,564,inferior cerebellar peduncle,icp,,1,3,8690,752,4,1,1180,/997/1009/960/752/1123/,CCCCCC,,,f,1181,202676826,734881840,inferior cerebellar peduncle -553,493,dorsal spinocerebellar tract,sctd,,1,3,8690,1123,5,1,1181,/997/1009/960/752/1123/553/,CCCCCC,,,f,1182,3857282012,734881840,dorsal spinocerebellar tract -499,486,cuneocerebellar tract,cct,,1,3,8690,1123,5,1,1182,/997/1009/960/752/1123/499/,CCCCCC,,,f,1183,3833856484,734881840,cuneocerebellar tract -650,505,juxtarestiform body,jrb,,1,3,8690,1123,5,1,1183,/997/1009/960/752/1123/650/,CCCCCC,,,f,1184,1765241487,734881840,juxtarestiform body -490,485,bulbocerebellar tract,bct,,1,3,8690,1123,5,1,1184,/997/1009/960/752/1123/490/,CCCCCC,,,f,1185,4005859055,734881840,bulbocerebellar tract -404,474,olivocerebellar tract,oct,,1,3,8690,490,6,1,1185,/997/1009/960/752/1123/490/404/,CCCCCC,,,f,1186,1173242057,734881840,olivocerebellar tract -410,475,reticulocerebellar tract,rct,,1,3,8690,490,6,1,1186,/997/1009/960/752/1123/490/410/,CCCCCC,,,f,1187,3086551336,734881840,reticulocerebellar tract -373,612,trigeminocerebellar tract,tct,,1,3,8690,752,4,1,1187,/997/1009/960/752/373/,CCCCCC,,,f,1188,496531143,734881840,trigeminocerebellar tract -728,656,arbor vitae,arb,,1,3,8690,960,3,1,1188,/997/1009/960/728/,CCCCCC,,,f,1189,756994283,734881840,arbor vitae -484682512,,supra-callosal cerebral white matter,scwm,,1,3,8690,1009,2,1,1189,/997/1009/484682512/,CCCCCC,,,f,1190,860296328,734881840,supra-callosal cerebral white matter -983,688,lateral forebrain bundle system,lfbs,,1,3,8690,1009,2,1,1190,/997/1009/983/,CCCCCC,,,f,1191,1446894155,734881840,lateral forebrain bundle system -776,662,corpus callosum,cc,,1,3,8690,983,3,1,1191,/997/1009/983/776/,CCCCCC,,,f,1192,3022588286,734881840,corpus callosum -956,543,corpus callosum anterior forceps,fa,,1,3,8690,776,4,1,1192,/997/1009/983/776/956/,CCCCCC,,,f,1193,4281334996,734881840,corpus callosum anterior forceps -579,496,external capsule,ec,,1,3,8690,956,5,1,1193,/997/1009/983/776/956/579/,CCCCCC,,,f,1194,1857747964,734881840,external capsule -964,544,corpus callosum extreme capsule,ee,,1,3,8690,776,4,1,1194,/997/1009/983/776/964/,CCCCCC,,,f,1195,3643110747,734881840,corpus callosum extreme capsule -1108,562,genu of corpus callosum,ccg,,1,3,8690,776,4,1,1195,/997/1009/983/776/1108/,CCCCCC,,,f,1196,3387198454,734881840,genu of corpus callosum -971,545,corpus callosum posterior forceps,fp,,1,3,8690,776,4,1,1196,/997/1009/983/776/971/,CCCCCC,,,f,1197,2598038340,734881840,corpus callosum posterior forceps -979,546,corpus callosum rostrum,ccr,,1,3,8690,776,4,1,1197,/997/1009/983/776/979/,CCCCCC,,,f,1198,2612427861,734881840,corpus callosum rostrum -484682516,,corpus callosum body,ccb,,1,3,8690,776,4,1,1198,/997/1009/983/776/484682516/,CCCCCC,,,f,1199,1909459776,734881840,corpus callosum body -986,547,corpus callosum splenium,ccs,,1,3,8690,776,4,1,1199,/997/1009/983/776/986/,CCCCCC,,,f,1200,2236557760,734881840,corpus callosum splenium -784,663,corticospinal tract,cst,,1,3,8690,983,3,1,1200,/997/1009/983/784/,CCCCCC,,,f,1201,2338134602,734881840,corticospinal tract -6,566,internal capsule,int,,1,3,8690,784,4,1,1201,/997/1009/983/784/6/,CCCCCC,,,f,1202,2936038281,734881840,internal capsule -924,539,cerebal peduncle,cpd,,1,3,8690,784,4,1,1202,/997/1009/983/784/924/,CCCCCC,,,f,1203,993976011,734881840,cerebal peduncle -1036,553,corticotectal tract,cte,,1,3,8690,784,4,1,1203,/997/1009/983/784/1036/,CCCCCC,,,f,1204,245941098,734881840,corticotectal tract -1012,550,corticorubral tract,crt,,1,3,8690,784,4,1,1204,/997/1009/983/784/1012/,CCCCCC,,,f,1205,3552293109,734881840,corticorubral tract -1003,549,corticopontine tract,cpt,,1,3,8690,784,4,1,1205,/997/1009/983/784/1003/,CCCCCC,,,f,1206,2049138094,734881840,corticopontine tract -994,548,corticobulbar tract,cbt,,1,3,8690,784,4,1,1206,/997/1009/983/784/994/,CCCCCC,,,f,1207,1514915928,734881840,corticobulbar tract -190,589,pyramid,py,,1,3,8690,784,4,1,1207,/997/1009/983/784/190/,CCCCCC,,,f,1208,3813563721,734881840,pyramid -198,590,pyramidal decussation,pyd,,1,3,8690,784,4,1,1208,/997/1009/983/784/198/,CCCCCC,,,f,1209,3272625759,734881840,pyramidal decussation -1019,551,corticospinal tract crossed,cstc,,1,3,8690,784,4,1,1209,/997/1009/983/784/1019/,CCCCCC,,,f,1210,188728262,734881840,corticospinal tract crossed -1028,552,corticospinal tract uncrossed,cstu,,1,3,8690,784,4,1,1210,/997/1009/983/784/1028/,CCCCCC,,,f,1211,3178799578,734881840,corticospinal tract uncrossed -896,677,thalamus related,lfbst,,1,3,8690,983,3,1,1211,/997/1009/983/896/,CCCCCC,,,f,1212,443856761,734881840,thalamus related -1092,560,external medullary lamina of the thalamus,em,,1,3,8690,896,4,1,1212,/997/1009/983/896/1092/,CCCCCC,,,f,1213,3515725381,734881840,external medullary lamina of the thalamus -14,567,internal medullary lamina of the thalamus,im,,1,3,8690,896,4,1,1213,/997/1009/983/896/14/,CCCCCC,,,f,1214,1272383137,734881840,internal medullary lamina of the thalamus -86,576,middle thalamic commissure,mtc,,1,3,8690,896,4,1,1214,/997/1009/983/896/86/,CCCCCC,,,f,1215,48183717,734881840,middle thalamic commissure -365,611,thalamic peduncles,tp,,1,3,8690,896,4,1,1215,/997/1009/983/896/365/,CCCCCC,,,f,1216,406163682,734881840,thalamic peduncles -484682520,,optic radiation,or,,1,3,8690,896,4,1,1216,/997/1009/983/896/484682520/,CCCCCC,,,f,1217,3215415810,734881840,optic radiation -484682524,,auditory radiation,ar,,1,3,8690,896,4,1,1217,/997/1009/983/896/484682524/,CCCCCC,,,f,1218,601332939,734881840,auditory radiation -1000,690,extrapyramidal fiber systems,eps,,1,3,8690,1009,2,1,1218,/997/1009/1000/,CCCCCC,,,f,1219,738013408,734881840,extrapyramidal fiber systems -760,660,cerebral nuclei related,epsc,,1,3,8690,1000,3,1,1219,/997/1009/1000/760/,CCCCCC,,,f,1220,3574075519,734881840,cerebral nuclei related -142,583,pallidothalamic pathway,pap,,1,3,8690,760,4,1,1220,/997/1009/1000/760/142/,CCCCCC,,,f,1221,653835859,734881840,pallidothalamic pathway -102,578,nigrostriatal tract,nst,,1,3,8690,760,4,1,1221,/997/1009/1000/760/102/,CCCCCC,,,f,1222,1908794680,734881840,nigrostriatal tract -109,579,nigrothalamic fibers,ntt,,1,3,8690,760,4,1,1222,/997/1009/1000/760/109/,CCCCCC,,,f,1223,3579496032,734881840,nigrothalamic fibers -134,582,pallidotegmental fascicle,ptf,,1,3,8690,760,4,1,1223,/997/1009/1000/760/134/,CCCCCC,,,f,1224,2146198276,734881840,pallidotegmental fascicle -309,604,striatonigral pathway,snp,,1,3,8690,760,4,1,1224,/997/1009/1000/760/309/,CCCCCC,,,f,1225,4190731397,734881840,striatonigral pathway -317,605,subthalamic fascicle,stf,,1,3,8690,760,4,1,1225,/997/1009/1000/760/317/,CCCCCC,,,f,1226,2911396376,734881840,subthalamic fascicle -877,675,tectospinal pathway,tsp,,1,3,8690,1000,3,1,1226,/997/1009/1000/877/,CCCCCC,,,f,1227,1244119023,734881840,tectospinal pathway -1051,555,direct tectospinal pathway,tspd,,1,3,8690,877,4,1,1227,/997/1009/1000/877/1051/,CCCCCC,,,f,1228,1709212737,734881840,direct tectospinal pathway -1060,556,doral tegmental decussation,dtd,,1,3,8690,877,4,1,1228,/997/1009/1000/877/1060/,CCCCCC,,,f,1229,2067491806,734881840,doral tegmental decussation -1043,554,crossed tectospinal pathway,tspc,,1,3,8690,877,4,1,1229,/997/1009/1000/877/1043/,CCCCCC,,,f,1230,3614935982,734881840,crossed tectospinal pathway -863,673,rubrospinal tract,rust,,1,3,8690,1000,3,1,1230,/997/1009/1000/863/,CCCCCC,,,f,1231,3405101120,734881840,rubrospinal tract -397,615,ventral tegmental decussation,vtd,,1,3,8690,863,4,1,1231,/997/1009/1000/863/397/,CCCCCC,,,f,1232,2482574838,734881840,ventral tegmental decussation -221,593,rubroreticular tract,rrt,,1,3,8690,863,4,1,1232,/997/1009/1000/863/221/,CCCCCC,,,f,1233,1583476119,734881840,rubroreticular tract -736,657,central tegmental bundle,ctb,,1,3,8690,1000,3,1,1233,/997/1009/1000/736/,CCCCCC,,,f,1234,3774459016,734881840,central tegmental bundle -855,672,retriculospinal tract,rst,,1,3,8690,1000,3,1,1234,/997/1009/1000/855/,CCCCCC,,,f,1235,2997135223,734881840,retriculospinal tract -205,591,retriculospinal tract lateral part,rstl,,1,3,8690,855,4,1,1235,/997/1009/1000/855/205/,CCCCCC,,,f,1236,4229476297,734881840,retriculospinal tract lateral part -213,592,retriculospinal tract medial part,rstm,,1,3,8690,855,4,1,1236,/997/1009/1000/855/213/,CCCCCC,,,f,1237,3028938506,734881840,retriculospinal tract medial part -941,683,vestibulospinal pathway,vsp,,1,3,8690,1000,3,1,1237,/997/1009/1000/941/,CCCCCC,,,f,1238,850039596,734881840,vestibulospinal pathway -991,689,medial forebrain bundle system,mfbs,,1,3,8690,1009,2,1,1238,/997/1009/991/,CCCCCC,,,f,1239,2045370912,734881840,medial forebrain bundle system -768,661,cerebrum related,mfbc,,1,3,8690,991,3,1,1239,/997/1009/991/768/,CCCCCC,,,f,1240,1315990495,734881840,cerebrum related -884,534,amygdalar capsule,amc,,1,3,8690,768,4,1,1240,/997/1009/991/768/884/,CCCCCC,,,f,1241,4125640418,734881840,amygdalar capsule -892,535,ansa peduncularis,apd,,1,3,8690,768,4,1,1241,/997/1009/991/768/892/,CCCCCC,,,f,1242,668804162,734881840,ansa peduncularis -908,537,anterior commissure temporal limb,act,,1,3,8690,768,4,1,1242,/997/1009/991/768/908/,CCCCCC,,,f,1243,3387830123,734881840,anterior commissure temporal limb -940,541,cingulum bundle,cing,,1,3,8690,768,4,1,1243,/997/1009/991/768/940/,CCCCCC,,,f,1244,1622445056,734881840,cingulum bundle -1099,561,fornix system,fxs,,1,3,8690,768,4,1,1244,/997/1009/991/768/1099/,CCCCCC,,,f,1245,2860735463,734881840,fornix system -466,482,alveus,alv,,1,3,8690,1099,5,1,1245,/997/1009/991/768/1099/466/,CCCCCC,,,f,1246,3047472302,734881840,alveus -530,490,dorsal fornix,df,,1,3,8690,1099,5,1,1246,/997/1009/991/768/1099/530/,CCCCCC,,,f,1247,2407031315,734881840,dorsal fornix -603,499,fimbria,fi,,1,3,8690,1099,5,1,1247,/997/1009/991/768/1099/603/,CCCCCC,,,f,1248,1937983833,734881840,fimbria -745,517,precommissural fornix general,fxprg,,1,3,8690,1099,5,1,1248,/997/1009/991/768/1099/745/,CCCCCC,,,f,1249,3184126177,734881840,precommissural fornix general -420,476,precommissural fornix diagonal band,db,,1,3,8690,745,6,1,1249,/997/1009/991/768/1099/745/420/,CCCCCC,,,f,1250,2942592889,734881840,precommissural fornix diagonal band -737,516,postcommissural fornix,fxpo,,1,3,8690,1099,5,1,1250,/997/1009/991/768/1099/737/,CCCCCC,,,f,1251,267891942,734881840,postcommissural fornix -428,477,medial corticohypothalamic tract,mct,,1,3,8690,737,6,1,1251,/997/1009/991/768/1099/737/428/,CCCCCC,,,f,1252,597319395,734881840,medial corticohypothalamic tract -436,478,columns of the fornix,fx,,1,3,8690,737,6,1,1252,/997/1009/991/768/1099/737/436/,CCCCCC,,,f,1253,2234311931,734881840,columns of the fornix -618,501,hippocampal commissures,hc,,1,3,8690,1099,5,1,1253,/997/1009/991/768/1099/618/,CCCCCC,,,f,1254,4236453345,734881840,hippocampal commissures -443,479,dorsal hippocampal commissure,dhc,,1,3,8690,618,6,1,1254,/997/1009/991/768/1099/618/443/,CCCCCC,,,f,1255,1923336249,734881840,dorsal hippocampal commissure -449,480,ventral hippocampal commissure,vhc,,1,3,8690,618,6,1,1255,/997/1009/991/768/1099/618/449/,CCCCCC,,,f,1256,1085412540,734881840,ventral hippocampal commissure -713,513,perforant path,per,,1,3,8690,1099,5,1,1256,/997/1009/991/768/1099/713/,CCCCCC,,,f,1257,436991788,734881840,perforant path -474,483,angular path,ab,,1,3,8690,1099,5,1,1257,/997/1009/991/768/1099/474/,CCCCCC,,,f,1258,1144121309,734881840,angular path -37,570,longitudinal association bundle,lab,,1,3,8690,768,4,1,1258,/997/1009/991/768/37/,CCCCCC,,,f,1259,2214700383,734881840,longitudinal association bundle -301,603,stria terminalis,st,,1,3,8690,768,4,1,1259,/997/1009/991/768/301/,CCCCCC,,,f,1260,2061919402,734881840,stria terminalis -484682528,,commissural branch of stria terminalis,stc,,1,3,8690,301,5,1,1260,/997/1009/991/768/301/484682528/,CCCCCC,,,f,1261,2072512978,734881840,commissural branch of stria terminalis -824,668,hypothalamus related,mfsbshy,,1,3,8690,991,3,1,1261,/997/1009/991/824/,CCCCCC,,,f,1262,2437385590,734881840,hypothalamus related -54,572,medial forebrain bundle,mfb,,1,3,8690,824,4,1,1262,/997/1009/991/824/54/,CCCCCC,,,f,1263,4274696721,734881840,medial forebrain bundle -405,616,ventrolateral hypothalamic tract,vlt,,1,3,8690,824,4,1,1263,/997/1009/991/824/405/,CCCCCC,,,f,1264,1856932850,734881840,ventrolateral hypothalamic tract -174,587,preoptic commissure,poc,,1,3,8690,824,4,1,1264,/997/1009/991/824/174/,CCCCCC,,,f,1265,2036221800,734881840,preoptic commissure -349,609,supraoptic commissures,sup,,1,3,8690,824,4,1,1265,/997/1009/991/824/349/,CCCCCC,,,f,1266,2214211240,734881840,supraoptic commissures -817,526,supraoptic commissures anterior,supa,,1,3,8690,349,5,1,1266,/997/1009/991/824/349/817/,CCCCCC,,,f,1267,1403329227,734881840,supraoptic commissures anterior -825,527,supraoptic commissures dorsal,supd,,1,3,8690,349,5,1,1267,/997/1009/991/824/349/825/,CCCCCC,,,f,1268,3242142431,734881840,supraoptic commissures dorsal -833,528,supraoptic commissures ventral,supv,,1,3,8690,349,5,1,1268,/997/1009/991/824/349/833/,CCCCCC,,,f,1269,1115209038,734881840,supraoptic commissures ventral -166,586,premammillary commissure,pmx,,1,3,8690,824,4,1,1269,/997/1009/991/824/166/,CCCCCC,,,f,1270,3539788693,734881840,premammillary commissure -341,608,supramammillary decussation,smd,,1,3,8690,824,4,1,1270,/997/1009/991/824/341/,CCCCCC,,,f,1271,100905605,734881840,supramammillary decussation -182,588,propriohypothalamic pathways,php,,1,3,8690,824,4,1,1271,/997/1009/991/824/182/,CCCCCC,,,f,1272,1784420150,734881840,propriohypothalamic pathways -762,519,propriohypothalamic pathways dorsal,phpd,,1,3,8690,182,5,1,1272,/997/1009/991/824/182/762/,CCCCCC,,,f,1273,162338143,734881840,propriohypothalamic pathways dorsal -770,520,propriohypothalamic pathways lateral,phpl,,1,3,8690,182,5,1,1273,/997/1009/991/824/182/770/,CCCCCC,,,f,1274,901943838,734881840,propriohypothalamic pathways lateral -779,521,propriohypothalamic pathways medial,phpm,,1,3,8690,182,5,1,1274,/997/1009/991/824/182/779/,CCCCCC,,,f,1275,13726419,734881840,propriohypothalamic pathways medial -787,522,propriohypothalamic pathways ventral,phpv,,1,3,8690,182,5,1,1275,/997/1009/991/824/182/787/,CCCCCC,,,f,1276,2936581201,734881840,propriohypothalamic pathways ventral -150,584,periventricular bundle of the hypothalamus,pvbh,,1,3,8690,824,4,1,1276,/997/1009/991/824/150/,CCCCCC,,,f,1277,548763661,734881840,periventricular bundle of the hypothalamus -46,571,mammillary related,mfbsma,,1,3,8690,824,4,1,1277,/997/1009/991/824/46/,CCCCCC,,,f,1278,2838641316,734881840,mammillary related -753,518,principal mammillary tract,pm,,1,3,8690,46,5,1,1278,/997/1009/991/824/46/753/,CCCCCC,,,f,1279,856199296,734881840,principal mammillary tract -690,510,mammillothalamic tract,mtt,,1,3,8690,46,5,1,1279,/997/1009/991/824/46/690/,CCCCCC,,,f,1280,1649345323,734881840,mammillothalamic tract -681,509,mammillotegmental tract,mtg,,1,3,8690,46,5,1,1280,/997/1009/991/824/46/681/,CCCCCC,,,f,1281,1041591581,734881840,mammillotegmental tract -673,508,mammillary peduncle,mp,,1,3,8690,46,5,1,1281,/997/1009/991/824/46/673/,CCCCCC,,,f,1282,4130265730,734881840,mammillary peduncle -1068,557,dorsal thalamus related,mfbst,,1,3,8690,824,4,1,1282,/997/1009/991/824/1068/,CCCCCC,,,f,1283,3637129625,734881840,dorsal thalamus related -722,514,periventricular bundle of the thalamus,pvbt,,1,3,8690,1068,5,1,1283,/997/1009/991/824/1068/722/,CCCCCC,,,f,1284,3496322953,734881840,periventricular bundle of the thalamus -1083,559,epithalamus related,mfbse,,1,3,8690,824,4,1,1284,/997/1009/991/824/1083/,CCCCCC,,,f,1285,2734318942,734881840,epithalamus related -802,524,stria medullaris,sm,,1,3,8690,1083,5,1,1285,/997/1009/991/824/1083/802/,CCCCCC,,,f,1286,1930258468,734881840,stria medullaris -595,498,fasciculus retroflexus,fr,,1,3,8690,1083,5,1,1286,/997/1009/991/824/1083/595/,CCCCCC,,,f,1287,3233680072,734881840,fasciculus retroflexus -611,500,habenular commissure,hbc,,1,3,8690,1083,5,1,1287,/997/1009/991/824/1083/611/,CCCCCC,,,f,1288,4058360785,734881840,habenular commissure -730,515,pineal stalk,PIS,,1,3,8690,1083,5,1,1288,/997/1009/991/824/1083/730/,CCCCCC,,,f,1289,4197780532,734881840,pineal stalk -70,574,midbrain related,mfbsm,,1,3,8690,824,4,1,1289,/997/1009/991/824/70/,CCCCCC,,,f,1290,4145502087,734881840,midbrain related -547,492,dorsal longitudinal fascicle,dlf,,1,3,8690,70,5,1,1290,/997/1009/991/824/70/547/,CCCCCC,,,f,1291,3503738477,734881840,dorsal longitudinal fascicle -563,494,dorsal tegmental tract,dtt,,1,3,8690,70,5,1,1291,/997/1009/991/824/70/563/,CCCCCC,,,f,1292,1985590940,734881840,dorsal tegmental tract -73,716,ventricular systems,VS,,1,3,8690,997,1,1,1292,/997/73/,AAAAAA,,,f,1293,959784099,734881840,ventricular systems -81,717,lateral ventricle,VL,,1,3,8690,73,2,1,1293,/997/73/81/,AAAAAA,,,f,1294,1797046580,734881840,lateral ventricle -89,718,rhinocele,RC,,1,3,8690,81,3,1,1294,/997/73/81/89/,AAAAAA,,,f,1295,2684298025,734881840,rhinocele -98,719,subependymal zone,SEZ,,1,3,8690,81,3,1,1295,/997/73/81/98/,AAAAAA,,,f,1296,1826888016,734881840,subependymal zone -108,720,choroid plexus,chpl,,1,3,8690,81,3,1,1296,/997/73/81/108/,AAAAAA,,,f,1297,1492204019,734881840,choroid plexus -116,721,choroid fissure,chfl,,1,3,8690,81,3,1,1297,/997/73/81/116/,AAAAAA,,,f,1298,3192898784,734881840,choroid fissure -124,722,interventricular foramen,IVF,,1,3,8690,73,2,1,1298,/997/73/124/,AAAAAA,,,f,1299,1644273448,734881840,interventricular foramen -129,723,third ventricle,V3,,1,3,8690,73,2,1,1299,/997/73/129/,AAAAAA,,,f,1300,562407244,734881840,third ventricle -140,724,cerebral aqueduct,AQ,,1,3,8690,73,2,1,1300,/997/73/140/,AAAAAA,,,f,1301,3509002335,734881840,cerebral aqueduct -145,725,fourth ventricle,V4,,1,3,8690,73,2,1,1301,/997/73/145/,AAAAAA,,,f,1302,2366263365,734881840,fourth ventricle -153,726,lateral recess,V4r,,1,3,8690,145,3,1,1302,/997/73/145/153/,AAAAAA,,,f,1303,4006455201,734881840,lateral recess -164,727,central canal spinal cord/medulla,c,,1,3,8690,73,2,1,1303,/997/73/164/,AAAAAA,,,f,1304,3758121442,734881840,central canal spinal cord/medulla -1024,693,grooves,grv,,1,3,8690,997,1,1,1304,/997/1024/,AAAAAA,,,f,1305,1816833424,734881840,grooves -1032,694,grooves of the cerebral cortex,grv of CTX,,1,3,8690,1024,2,1,1305,/997/1024/1032/,AAAAAA,,,f,1306,4010583074,734881840,grooves of the cerebral cortex -1055,697,endorhinal groove,eg,,1,3,8690,1032,3,1,1306,/997/1024/1032/1055/,AAAAAA,,,f,1307,2757546022,734881840,endorhinal groove -1063,698,hippocampal fissure,hf,,1,3,8690,1032,3,1,1307,/997/1024/1032/1063/,AAAAAA,,,f,1308,1845828307,734881840,hippocampal fissure -1071,699,rhinal fissure,rf,,1,3,8690,1032,3,1,1308,/997/1024/1032/1071/,AAAAAA,,,f,1309,915997995,734881840,rhinal fissure -1078,700,rhinal incisure,ri,,1,3,8690,1032,3,1,1309,/997/1024/1032/1078/,AAAAAA,,,f,1310,1408661066,734881840,rhinal incisure -1040,695,grooves of the cerebellar cortex,grv of CBX,,1,3,8690,1024,2,1,1310,/997/1024/1040/,AAAAAA,,,f,1311,306524468,734881840,grooves of the cerebellar cortex -1087,701,precentral fissure,pce,,1,3,8690,1040,3,1,1311,/997/1024/1040/1087/,AAAAAA,,,f,1312,2084828473,734881840,precentral fissure -1095,702,preculminate fissure,pcf,,1,3,8690,1040,3,1,1312,/997/1024/1040/1095/,AAAAAA,,,f,1313,3439430666,734881840,preculminate fissure -1103,703,primary fissure,pri,,1,3,8690,1040,3,1,1313,/997/1024/1040/1103/,AAAAAA,,,f,1314,1359711822,734881840,primary fissure -1112,704,posterior superior fissure,psf,,1,3,8690,1040,3,1,1314,/997/1024/1040/1112/,AAAAAA,,,f,1315,706594763,734881840,posterior superior fissure -1119,705,prepyramidal fissure,ppf,,1,3,8690,1040,3,1,1315,/997/1024/1040/1119/,AAAAAA,,,f,1316,90069120,734881840,prepyramidal fissure -3,707,secondary fissure,sec,,1,3,8690,1040,3,1,1316,/997/1024/1040/3/,AAAAAA,,,f,1317,1603026106,734881840,secondary fissure -11,708,posterolateral fissure,plf,,1,3,8690,1040,3,1,1317,/997/1024/1040/11/,AAAAAA,,,f,1318,3968698314,734881840,posterolateral fissure -18,709,nodular fissure,nf,,1,3,8690,1040,3,1,1318,/997/1024/1040/18/,AAAAAA,,,f,1319,3778172686,734881840,nodular fissure -25,710,simple fissure,sif,,1,3,8690,1040,3,1,1319,/997/1024/1040/25/,AAAAAA,,,f,1320,3504067713,734881840,simple fissure -34,711,intercrural fissure,icf,,1,3,8690,1040,3,1,1320,/997/1024/1040/34/,AAAAAA,,,f,1321,1415991612,734881840,intercrural fissure -43,712,ansoparamedian fissure,apf,,1,3,8690,1040,3,1,1321,/997/1024/1040/43/,AAAAAA,,,f,1322,2452402730,734881840,ansoparamedian fissure -49,713,intraparafloccular fissure,ipf,,1,3,8690,1040,3,1,1322,/997/1024/1040/49/,AAAAAA,,,f,1323,2654107150,734881840,intraparafloccular fissure -57,714,paramedian sulcus,pms,,1,3,8690,1040,3,1,1323,/997/1024/1040/57/,AAAAAA,,,f,1324,3972977495,734881840,paramedian sulcus -65,715,parafloccular sulcus,pfs,,1,3,8690,1040,3,1,1324,/997/1024/1040/65/,AAAAAA,,,f,1325,771629690,734881840,parafloccular sulcus -624,926,Interpeduncular fossa,IPF,,1,3,8690,1024,2,1,1325,/997/1024/624/,AAAAAA,,,f,1326,1476705011,734881840,Interpeduncular fossa -304325711,,retina,retina,,1,3,8690,997,1,1,1326,/997/304325711/,7F2E7E,,,f,1327,3295290839,734881840,retina diff --git a/ibllib/atlas/atlas.py b/ibllib/atlas/atlas.py deleted file mode 100644 index 428c2ca2a..000000000 --- a/ibllib/atlas/atlas.py +++ /dev/null @@ -1,124 +0,0 @@ -""" -Classes for manipulating brain atlases, insertions, and coordinates. -""" - -import warnings -import iblatlas.atlas - - -def deprecated_decorator(function): - def deprecated_function(*args, **kwargs): - warning_text = f"{function.__module__}.{function.__name__} is deprecated. " \ - f"Use iblatlas.{function.__module__.split('.')[-1]}.{function.__name__} instead" - warnings.warn(warning_text, DeprecationWarning) - return function(*args, **kwargs) - - return deprecated_function - - -@deprecated_decorator -def BrainCoordinates(*args, **kwargs): - return iblatlas.atlas.BrainCoordinates(*args, **kwargs) - - -@deprecated_decorator -def BrainAtlas(*args, **kwargs): - return iblatlas.atlas.BrainAtlas(*args, **kwargs) - - -class Trajectory(iblatlas.atlas.Trajectory): - """ - 3D Trajectory (usually for a linear probe), minimally defined by a vector and a point. - - Examples - -------- - Instantiate from a best fit from an n by 3 array containing xyz coordinates: - - >>> trj = Trajectory.fit(xyz) - """ - - -class Insertion(iblatlas.atlas.Insertion): - """ - Defines an ephys probe insertion in 3D coordinate. IBL conventions. - - To instantiate, use the static methods: `Insertion.from_track` and `Insertion.from_dict`. - """ - - -@deprecated_decorator -def AllenAtlas(*args, **kwargs): - return iblatlas.atlas.AllenAtlas(*args, **kwargs) - - -@deprecated_decorator -def NeedlesAtlas(*args, **kwargs): - """ - Instantiates an atlas.BrainAtlas corresponding to the Allen CCF at the given resolution - using the IBL Bregma and coordinate system. The Needles atlas defines a stretch along AP - axis and a squeeze along the DV axis. - - Parameters - ---------- - res_um : {10, 25, 50} int - The Atlas resolution in micrometres; one of 10, 25 or 50um. - **kwargs - See AllenAtlas. - - Returns - ------- - AllenAtlas - An Allen atlas object with MRI atlas scaling applied. - - Notes - ----- - The scaling was determined by manually transforming the DSURQE atlas [1]_ onto the Allen CCF. - The DSURQE atlas is an MRI atlas acquired from 40 C57BL/6J mice post-mortem, with 40um - isometric resolution. The alignment was performed by Mayo Faulkner. - The atlas data can be found `here `__. - More information on the dataset and segmentation can be found - `here `__. - - References - ---------- - .. [1] Dorr AE, Lerch JP, Spring S, Kabani N, Henkelman RM (2008). High resolution - three-dimensional brain atlas using an average magnetic resonance image of 40 adult C57Bl/6J - mice. Neuroimage 42(1):60-9. [doi 10.1016/j.neuroimage.2008.03.037] - """ - - return iblatlas.atlas.NeedlesAtlas(*args, **kwargs) - - -@deprecated_decorator -def MRITorontoAtlas(*args, **kwargs): - """ - The MRI Toronto brain atlas. - - Instantiates an atlas.BrainAtlas corresponding to the Allen CCF at the given resolution - using the IBL Bregma and coordinate system. The MRI Toronto atlas defines a stretch along AP - a squeeze along DV *and* a squeeze along ML. These are based on 12 p65 mice MRIs averaged [1]_. - - Parameters - ---------- - res_um : {10, 25, 50} int - The Atlas resolution in micrometres; one of 10, 25 or 50um. - **kwargs - See AllenAtlas. - - Returns - ------- - AllenAtlas - An Allen atlas object with MRI atlas scaling applied. - - References - ---------- - .. [1] Qiu, LR, Fernandes, DJ, Szulc-Lerch, KU et al. (2018) Mouse MRI shows brain areas - relatively larger in males emerge before those larger in females. Nat Commun 9, 2615. - [doi 10.1038/s41467-018-04921-2] - """ - return iblatlas.atlas.MRITorontoAtlas(*args, **kwargs) - - -@deprecated_decorator -def FranklinPaxinosAtlas(*args, **kwargs): - return iblatlas.atlas.FranklinPaxinosAtlas(*args, **kwargs) diff --git a/ibllib/atlas/beryl.npy b/ibllib/atlas/beryl.npy deleted file mode 100644 index 7ae66acc9..000000000 Binary files a/ibllib/atlas/beryl.npy and /dev/null differ diff --git a/ibllib/atlas/cosmos.npy b/ibllib/atlas/cosmos.npy deleted file mode 100644 index d7a5afbc1..000000000 Binary files a/ibllib/atlas/cosmos.npy and /dev/null differ diff --git a/ibllib/atlas/flatmaps.py b/ibllib/atlas/flatmaps.py deleted file mode 100644 index 4dcedc764..000000000 --- a/ibllib/atlas/flatmaps.py +++ /dev/null @@ -1,58 +0,0 @@ -"""Techniques to project the brain volume onto 2D images for visualisation purposes.""" - -from ibllib.atlas import deprecated_decorator -from iblatlas import flatmaps - - -@deprecated_decorator -def FlatMap(**kwargs): - return flatmaps.FlatMap(**kwargs) - - -@deprecated_decorator -def circles(N=5, atlas=None, display='flat'): - """ - :param N: number of circles - :param atlas: brain atlas at 25 m - :param display: "flat" or "pyramid" - :return: 2D map of indices, ap_coordinate, ml_coordinate - """ - - return flatmaps.circles(N=N, atlas=atlas, display=display) - - -@deprecated_decorator -def swanson(filename="swanson2allen.npz"): - """ - FIXME Document! Which publication to reference? Are these specifically for flat maps? - Shouldn't this be made into an Atlas class with a mapping or scaling applied? - - Parameters - ---------- - filename - - Returns - ------- - - """ - - return flatmaps.swanson(filename=filename) - - -@deprecated_decorator -def swanson_json(filename="swansonpaths.json", remap=True): - """ - Vectorized version of the swanson bitmap file. The vectorized version was generated from swanson() using matlab - contour to find the paths for each region. The paths for each region were then simplified using the - Ramer Douglas Peucker algorithm https://rdp.readthedocs.io/en/latest/ - - Parameters - ---------- - filename - remap - - Returns - ------- - - """ - return flatmaps.swanson_json(filename=filename, remap=remap) diff --git a/ibllib/atlas/franklin_paxinos_structure_tree.csv b/ibllib/atlas/franklin_paxinos_structure_tree.csv deleted file mode 100644 index 0b7af9533..000000000 --- a/ibllib/atlas/franklin_paxinos_structure_tree.csv +++ /dev/null @@ -1,1649 +0,0 @@ -Franklin-Paxinos Full name,Franklin-Paxinos abbreviation,Structural ID,structure Order,red,green,blue,Parent ID,Parent abbreviation,Allen Full name,Allen abbreviation,,, -Basic cell groups and regions,grey,8,100,176,255,255,997,root,Basic cell groups and regions,grey,,, -Cerebrum,CH,567,200,176,240,255,8,grey,Cerebrum,CH,,, -Cerebral cortex,CTX,688,300,176,255,184,567,CH,Cerebral cortex,CTX,,, -Cortical plate,CTXpl,695,400,112,255,112,688,CTX,Cortical plate,CTXpl,,, -Isocortex,Isocortex,315,500,112,255,113,695,CTXpl,Isocortex,Isocortex,,, -Frontal association cortex,FrA,184,600,112,255,113,315,Isocortex,"Frontal pole, cerebral cortex",FRP,,, -"Frontal pole, layer 1",FrA-1,68,700,121,161,59,184,FrA,"Frontal pole, layer 1",FRP1,,, -"Frontal pole, layer 2/3",FrA-2/3,667,800,132,165,74,184,FrA,"Frontal pole, layer 2/3",FRP2/3,,, -"Frontal pole, layer 5",FrA-5,2325,810,132,165,74,184,FrA,,,,, -motor cortex,M,500,900,112,255,116,315,Isocortex,Somatomotor areas,MO,,, -Primary motor cortex,M1,985,500,112,255,116,500,M,Primary motor area,MOp,,, -Primary motor cortex Layer 1,M1-1,320,985,45,161,79,985,M1,"Primary motor area, Layer 1",MOp1,,, -Primary motor cortex Layer 2/3,M1-2/3,943,985,73,166,99,985,M1,"Primary motor area, Layer 2/3",MOp2/3,,, -Primary motor cortex Layer 5,M1-5,648,985,94,172,111,985,M1,"Primary motor area, Layer 5",MOp5,,, -Primary motor cortex Layer 6a,M1-6a,844,985,120,188,130,985,M1,"Primary motor area, Layer 6a",MOp6a,,, -Primary motor cortex Layer 6b,M1-6b,882,985,143,196,143,985,M1,"Primary motor area, Layer 6b",MOp6b,,, -"Frontal cortex, area 3",FrC3,2017,2010,132,165,74,985,M1,,,,, -"Frontal cortex, area 3, layer1",FrC3-1,2334,2020,132,165,74,2017,FrC3,,,,, -"Frontal cortex, area 3, layer2/3",FrC3-2/3,2335,2020,132,165,74,2017,FrC3,,,,, -"Frontal cortex, area 3, layer5",FrC3-5,2336,2040,132,165,74,2017,FrC3,,,,, -"Frontal cortex, area 3, layer6a",FrC3-6a,2337,2050,132,165,74,2017,FrC3,,,,, -"Frontal cortex, area 3, layer6b",FrC3-6b,2351,2060,132,165,74,2017,FrC3,,,,, -Secondary motor cortex,M2,993,2100,112,255,116,500,M,Secondary motor area,MOs,,, -"Secondary motor cortex, layer 1",M2-1,656,2200,63,147,68,993,M2,"Secondary motor area, layer 1",MOs1,,, -"Secondary motor cortex, layer 2/3",M2-2/3,962,2300,83,152,86,993,M2,"Secondary motor area, layer 2/3",MOs2/3,,, -"Secondary motor cortex, layer 5",M2-5,767,2400,101,157,97,993,M2,"Secondary motor area, layer 5",MOs5,,, -"Secondary motor cortex, layer 6a",M2-6a,1021,2500,129,174,115,993,M2,"Secondary motor area, layer 6a",MOs6a,,, -"Secondary motor cortex, layer 6b",M2-6b,1085,2600,139,178,127,993,M2,"Secondary motor area, layer 6b",MOs6b,,, -Somatosensory cortex,S,453,2700,112,255,121,315,Isocortex,Somatosensory areas,SS,,, -Primary somatosensory cortex,S1,322,2800,112,255,121,453,S,Primary somatosensory area,SSp,,, -Primary somatosensory cortex layer 1,S1-1,793,2900,0,177,92,322,S1,"Primary somatosensory area, layer 1",SSp1,,, -Primary somatosensory cortex layer 2/3,S1-2/3,346,3000,67,185,112,322,S1,"Primary somatosensory area, layer 2/3",SSp2/3,,, -Primary somatosensory cortex layer 4,S1-4,865,3100,93,191,126,322,S1,"Primary somatosensory area, layer 4",SSp4,,, -Primary somatosensory cortex layer 5,S1-5,921,3200,116,197,139,322,S1,"Primary somatosensory area, layer 5",SSp5,,, -Primary somatosensory cortex layer 6a,S1-6a,686,3300,138,204,153,322,S1,"Primary somatosensory area, layer 6a",SSp6a,,, -Primary somatosensory cortex layer 6b,S1-6b,719,3400,163,213,170,322,S1,"Primary somatosensory area, layer 6b",SSp6b,,, -"Primary somatosensory area, jaw",S1J,2338,3410,163,213,170,322,S1,,,,, -"Primary somatosensory area, jaw, layer 1",S1J-1,2339,3420,163,213,170,2338,S1J,,,,, -"Primary somatosensory area, jaw, layer 2/3",S1J-2/3,2340,3430,163,213,170,2338,S1J,,,,, -"Primary somatosensory area, jaw, layer 4",S1J-4,2341,3440,163,213,170,2338,S1J,,,,, -"Primary somatosensory area, jaw, layer 5",S1J-5,2342,3450,163,213,170,2338,S1J,,,,, -"Primary somatosensory area, jaw, layer 6a",S1J-6a,2343,3460,163,213,170,2338,S1J,,,,, -"Primary somatosensory area, jaw, layer 6b",S1J-6b,2344,3470,163,213,170,2338,S1J,,,,, -,,,,,,,,,"Primary somatosensory area, nose",SSp-n,,, -,,,,,,,,,"Primary somatosensory area, nose, layer 1",SSp-n1,,, -,,,,,,,,,"Primary somatosensory area, nose, layer 2/3",SSp-n2/3,,, -,,,,,,,,,"Primary somatosensory area, nose, layer 4",SSp-n4,,, -,,,,,,,,,"Primary somatosensory area, nose, layer 5",SSp-n5,,, -,,,,,,,,,"Primary somatosensory area, nose, layer 6a",SSp-n6a,,, -,,,,,,,,,"Primary somatosensory area, nose, layer 6b",SSp-n6b,,, -"Primary somatosensory cortex, barrel field",S1BF,329,4200,112,255,121,322,S1,"Primary somatosensory area, barrel field",SSp-bfd,,, -"Primary somatosensory cortex, barrel field, layer 1",S1BF-1,981,4300,0,178,156,329,S1BF,"Primary somatosensory area, barrel field, layer 1",SSp-bfd1,,, -"Primary somatosensory cortex, barrel field, layer 2/3",S1BF-2/3,201,4400,19,186,171,329,S1BF,"Primary somatosensory area, barrel field, layer 2/3",SSp-bfd2/3,,, -"Primary somatosensory cortex, barrel field, layer 4",S1BF-4,1047,4500,66,191,179,329,S1BF,"Primary somatosensory area, barrel field, layer 4",SSp-bfd4,,, -"Primary somatosensory cortex, barrel field, layer 5 ",S1BF-5,1070,4600,93,197,188,329,S1BF,"Primary somatosensory area, barrel field, layer 5 ",SSp-bfd5,,, -"Primary somatosensory cortex, barrel field, layer 6a",S1BF-6a,1038,4700,117,203,197,329,S1BF,"Primary somatosensory area, barrel field, layer 6a",SSp-bfd6a,,, -"Primary somatosensory cortex, barrel field, layer 6b",S1BF-6b,1062,4800,143,211,208,329,S1BF,"Primary somatosensory area, barrel field, layer 6b",SSp-bfd6b,,, -"Primary somatosensory cortex, hindlimb region",S1HL,337,4900,112,255,121,322,S1,"Primary somatosensory area, lower limb",SSp-ll,,, -"Primary somatosensory cortex, hindlimb region, layer 1",S1HL-1,1030,5000,0,177,142,337,S1HL,"Primary somatosensory area, lower limb, layer 1",SSp-ll1,,, -"Primary somatosensory cortex, hindlimb region, layer 2/3",S1HL-2/3,113,5100,0,183,155,337,S1HL,"Primary somatosensory area, lower limb, layer 2/3",SSp-ll2/3,,, -"Primary somatosensory cortex, hindlimb region, layer 4",S1HL-4,1094,5200,69,191,171,337,S1HL,"Primary somatosensory area, lower limb, layer 4",SSp-ll4,,, -"Primary somatosensory cortex, hindlimb region, layer 5",S1HL-5,1128,5300,96,196,179,337,S1HL,"Primary somatosensory area, lower limb, layer 5",SSp-ll5,,, -"Primary somatosensory cortex, hindlimb region, layer 6a",S1HL-6a,478,5400,119,202,188,337,S1HL,"Primary somatosensory area, lower limb, layer 6a",SSp-ll6a,,, -"Primary somatosensory cortex, hindlimb region, layer 6b",S1HL-6b,510,5500,145,211,198,337,S1HL,"Primary somatosensory area, lower limb, layer 6b",SSp-ll6b,,, -"Primary somatosensory cortex, upper lip region",S1ULp,345,5600,112,255,121,322,S1,"Primary somatosensory area, mouth",SSp-m,,, -"Primary somatosensory cortex, upper lip region, layer 1",S1ULp-1,878,5700,0,173,94,345,S1ULp,"Primary somatosensory area, mouth, layer 1",SSp-m1,,, -"Primary somatosensory cortex, upper lip region, layer 2/3",S1ULp-2/3,657,5800,20,180,107,345,S1ULp,"Primary somatosensory area, mouth, layer 2/3",SSp-m2/3,,, -"Primary somatosensory cortex, upper lip region, layer 4",S1ULp-4,950,5900,66,185,120,345,S1ULp,"Primary somatosensory area, mouth, layer 4",SSp-m4,,, -"Primary somatosensory cortex, upper lip region, layer 5",S1ULp-5,974,6000,92,191,133,345,S1ULp,"Primary somatosensory area, mouth, layer 5",SSp-m5,,, -"Primary somatosensory cortex, upper lip region, layer 6a",S1ULp-6a,1102,6100,115,197,146,345,S1ULp,"Primary somatosensory area, mouth, layer 6a",SSp-m6a,,, -"Primary somatosensory cortex, upper lip region, layer 6b",S1ULp-6b,2,6200,137,205,161,345,S1ULp,"Primary somatosensory area, mouth, layer 6b",SSp-m6b,,, -"Primary somatosensory cortex, dysgranular zone ",S1DZ,2000,6210,112,255,121,322,S1,,,,, -"Primary somatosensory cortex, dysgranular zone 1",S1DZ-1,2287,6211,112,255,121,2000,S1DZ,,,,, -"Primary somatosensory cortex, dysgranular zone 2/3",S1DZ-2/3,2288,6212,112,255,121,2000,S1DZ,,,,, -"Primary somatosensory cortex, dysgranular zone 4",S1DZ-4,2289,6213,112,255,121,2000,S1DZ,,,,, -"Primary somatosensory cortex, dysgranular zone 5",S1DZ-5,2290,6214,112,255,121,2000,S1DZ,,,,, -"Primary somatosensory cortex, dysgranular zone 6a",S1DZ-6a,2291,6215,112,255,121,2000,S1DZ,,,,, -"Primary somatosensory cortex, dysgranular zone 6b",S1DZ-6b,2292,6216,112,255,121,2000,S1DZ,,,,, -"Primary somatosensory cortex, oral dysgranular zone ",S1DZO,2352,6220,112,255,121,322,S1,,,,, -"Primary somatosensory cortex, oral dysgranular zone 1",S1DZO-1,2353,6221,112,255,121,2352,S1DZO,,,,, -"Primary somatosensory cortex, oral dysgranular zone 2/3",S1DZO-2/3,2354,6222,112,255,121,2352,S1DZO,,,,, -"Primary somatosensory cortex, oral dysgranular zone 4",S1DZO-4,2355,6223,112,255,121,2352,S1DZO,,,,, -"Primary somatosensory cortex, oral dysgranular zone 5",S1DZO-5,2356,6224,112,255,121,2352,S1DZO,,,,, -"Primary somatosensory cortex, oral dysgranular zone 6a",S1DZO-6a,2357,6225,112,255,121,2352,S1DZO,,,,, -"Primary somatosensory cortex, oral dysgranular zone 6b",S1DZO-6b,2358,6226,112,255,121,2352,S1DZO,,,,, -"Primary somatosensory cortex, shoulder region",S1Sh,2041,6230,112,255,121,322,S1,,,,, -"Primary somatosensory cortex, shoulder region 1",S1Sh-1,2310,6231,112,255,121,2041,S1Sh,,,,, -"Primary somatosensory cortex, shoulder region 2/3",S1Sh-2/3,2311,6232,112,255,121,2041,S1Sh,,,,, -"Primary somatosensory cortex, shoulder region 4",S1Sh-4,2312,6233,112,255,121,2041,S1Sh,,,,, -"Primary somatosensory cortex, shoulder region 5",S1Sh-5,2313,6234,112,255,121,2041,S1Sh,,,,, -"Primary somatosensory cortex, shoulder region 6a",S1Sh-6a,2314,6235,112,255,121,2041,S1Sh,,,,, -"Primary somatosensory cortex, shoulder region 6b",S1Sh-6b,2315,6236,112,255,121,2041,S1Sh,,,,, -"Primary somatosensory cortex, forelimb region",S1FL,369,6300,112,255,121,322,S1,"Primary somatosensory area, upper limb",SSp-ul,,, -"Primary somatosensory cortex, forelimb region, layer 1",S1FL-1,450,6400,0,174,103,369,S1FL,"Primary somatosensory area, upper limb, layer 1",SSp-ul1,,, -"Primary somatosensory cortex, forelimb region, layer 2/3",S1FL-2/3,854,6500,46,183,120,369,S1FL,"Primary somatosensory area, upper limb, layer 2/3",SSp-ul2/3,,, -"Primary somatosensory cortex, forelimb region, layer 4",S1FL-4,577,6600,79,188,133,369,S1FL,"Primary somatosensory area, upper limb, layer 4",SSp-ul4,,, -"Primary somatosensory cortex, forelimb region, layer 5",S1FL-5,625,6700,103,194,147,369,S1FL,"Primary somatosensory area, upper limb, layer 5",SSp-ul5,,, -"Primary somatosensory cortex, forelimb region, layer 6a",S1FL-6a,945,6800,114,198,154,369,S1FL,"Primary somatosensory area, upper limb, layer 6a",SSp-ul6a,,, -"Primary somatosensory cortex, forelimb region, layer 6b",S1FL-6b,1026,6900,124,201,162,369,S1FL,"Primary somatosensory area, upper limb, layer 6b",SSp-ul6b,,, -"Primary somatosensory cortex, trunk region",S1Tr,361,7000,112,255,121,322,S1,"Primary somatosensory area, trunk",SSp-tr,,, -"Primary somatosensory cortex, trunk region, layer 1",S1Tr-1,1006,7100,0,179,171,361,S1Tr,"Primary somatosensory area, trunk, layer 1",SSp-tr1,,, -"Primary somatosensory cortex, trunk region, layer 2/3",S1Tr-2/3,670,7200,0,185,179,361,S1Tr,"Primary somatosensory area, trunk, layer 2/3",SSp-tr2/3,,, -"Primary somatosensory cortex, trunk region, layer 4",S1Tr-4,1086,7300,63,192,187,361,S1Tr,"Primary somatosensory area, trunk, layer 4",SSp-tr4,,, -"Primary somatosensory cortex, trunk region, layer 5",S1Tr-5,1111,7400,91,197,197,361,S1Tr,"Primary somatosensory area, trunk, layer 5",SSp-tr5,,, -"Primary somatosensory cortex, trunk region, layer 6a",S1Tr-6a,9,7500,115,203,207,361,S1Tr,"Primary somatosensory area, trunk, layer 6a",SSp-tr6a,,, -"Primary somatosensory cortex, trunk region, layer 6b",S1Tr-6b,461,7600,156,216,218,361,S1Tr,"Primary somatosensory area, trunk, layer 6b",SSp-tr6b,,, -Secondary somatosensory cortex,S2,378,7700,112,255,121,453,S,Supplemental somatosensory area,SSs,,, -"Secondary somatosensory cortex, layer 1",S2-1,873,7800,0,176,129,378,S2,"Supplemental somatosensory area, layer 1",SSs1,,, -"Secondary somatosensory cortex, layer 2/3",S2-2/3,806,7900,0,180,135,378,S2,"Supplemental somatosensory area, layer 2/3",SSs2/3,,, -"Secondary somatosensory cortex, layer 4",S2-4,1035,8000,40,184,141,378,S2,"Supplemental somatosensory area, layer 4",SSs4,,, -"Secondary somatosensory cortex, layer 5",S2-5,1090,8100,74,190,155,378,S2,"Supplemental somatosensory area, layer 5",SSs5,,, -"Secondary somatosensory cortex, layer 6a",S2-6a,862,8200,98,196,170,378,S2,"Supplemental somatosensory area, layer 6a",SSs6a,,, -"Secondary somatosensory cortex, layer 6b",S2-6b,893,8300,121,202,179,378,S2,"Supplemental somatosensory area, layer 6b",SSs6b,,, -"Cingulate cortex, area 24a (infralimbic)",A24a (IL),44,8400,112,255,104,315,Isocortex,Infralimbic area,ILA,,, -"Cingulate cortex, area 24a (infralimbic), layer 1",A24a (IL)-1,707,8500,0,137,72,44,A24a (IL),"Infralimbic area, layer 1",ILA1,,, -"Cingulate cortex, area 24a (infralimbic), layer 2/3",A24a (IL)-2,747,8600,13,142,83,44,A24a (IL),"Infralimbic area, layer 2",ILA2,,, -"Cingulate cortex, area 24a (infralimbic), layer 4",A24a (IL)-2/3,556,8700,50,146,93,44,A24a (IL),"Infralimbic area, layer 2/3",ILA2/3,,, -"Cingulate cortex, area 24a (infralimbic), layer 5",A24a (IL)-5,827,8800,77,160,111,44,A24a (IL),"Infralimbic area, layer 5",ILA5,,, -"Cingulate cortex, area 24a (infralimbic), layer 6a",A24a (IL)-6a,1054,8900,97,166,122,44,A24a (IL),"Infralimbic area, layer 6a",ILA6a,,, -"Cingulate cortex, area 24a (infralimbic), layer 6b",A24a (IL)-6b,1081,9000,116,172,135,44,A24a (IL),"Infralimbic area, layer 6b",ILA6b,,, -Dysgranular insular cortex,DI,1057,9100,112,255,105,315,Isocortex,Gustatory areas,GU,,, -"Dysgranular insular cortex, layer 1",DI-1,36,9200,51,181,90,1057,DI,"Gustatory areas, layer 1",GU1,,, -"Dysgranular insular cortex, layer 2/3",DI-2/3,180,9300,82,187,112,1057,DI,"Gustatory areas, layer 2/3",GU2/3,,, -"Dysgranular insular cortex, layer 4",DI-4,148,9400,106,193,125,1057,DI,"Gustatory areas, layer 4",GU4,,, -"Dysgranular insular cortex, layer 5",DI-5,187,9500,127,200,138,1057,DI,"Gustatory areas, layer 5",GU5,,, -"Dysgranular insular cortex, layer 6a",DI-6a,638,9600,152,208,152,1057,DI,"Gustatory areas, layer 6a",GU6a,,, -"Dysgranular insular cortex, layer 6b",DI-6b,662,9700,175,218,179,1057,DI,"Gustatory areas, layer 6b",GU6b,,, -Granular insular cortex,GI,677,9800,112,255,100,315,Isocortex,Visceral area,VISC,,, -"Granular insular cortex, layer 1",GI-1,897,9900,0,155,91,677,GI,"Visceral area, layer 1",VISC1,,, -"Granular insular cortex, layer 2/3",GI-2/3,1106,10000,42,163,106,677,GI,"Visceral area, layer 2/3",VISC2/3,,, -"Granular insular cortex, layer 4",GI-4,1010,10100,70,168,118,677,GI,"Visceral area, layer 4",VISC4,,, -"Granular insular cortex, layer 5",GI-5,1058,10200,97,183,138,677,GI,"Visceral area, layer 5",VISC5,,, -"Granular insular cortex, layer 6a",GI-6a,857,10300,108,186,144,677,GI,"Visceral area, layer 6a",VISC6a,,, -"Granular insular cortex, layer 6b",GI-6b,849,10400,117,189,152,677,GI,"Visceral area, layer 6b",VISC6b,,, -Auditory cortex,Au,247,10500,120,255,120,315,Isocortex,Auditory areas,AUD,,, -"Secondary auditory cortex, dorsal area",AuD,1011,10600,120,255,120,247,Au,Dorsal auditory area,AUDd,,, -"Secondary auditory cortex, dorsal area, layer 1",AuD-1,527,10700,0,157,125,1011,AuD,"Dorsal auditory area, layer 1",AUDd1,,, -"Secondary auditory cortex, dorsal area, layer 2/3",AuD-2/3,600,10800,0,163,137,1011,AuD,"Dorsal auditory area, layer 2/3",AUDd2/3,,, -"Secondary auditory cortex, dorsal area, layer 4",AuD-4,678,10900,63,170,151,1011,AuD,"Dorsal auditory area, layer 4",AUDd4,,, -"Secondary auditory cortex, dorsal area, layer 5",AuD-5,252,11000,91,185,168,1011,AuD,"Dorsal auditory area, layer 5",AUDd5,,, -"Secondary auditory cortex, dorsal area, layer 6a",AuD-6a,156,11100,113,190,176,1011,AuD,"Dorsal auditory area, layer 6a",AUDd6a,,, -"Secondary auditory cortex, dorsal area, layer 6b",AuD-16b,243,11200,137,198,186,1011,AuD,"Dorsal auditory area, layer 6b",AUDd6b,,, -Primary auditory cortex,Au1,1002,11300,120,255,120,247,Au,Primary auditory area,AUDp,,, -"Primary auditory cortex, layer 1",Au1-1,735,11400,0,157,114,1002,Au1,"Primary auditory area, layer 1",AUDp1,,, -"Primary auditory cortex, layer 2/3",Au1-2/3,251,11500,0,160,119,1002,Au1,"Primary auditory area, layer 2/3",AUDp2/3,,, -"Primary auditory cortex, layer 4",Au1-4,816,11600,37,164,125,1002,Au1,"Primary auditory area, layer 4",AUDp4,,, -"Primary auditory cortex, layer 5",Au1-5,847,11700,71,178,145,1002,Au1,"Primary auditory area, layer 5",AUDp5,,, -"Primary auditory cortex, layer 6a",Au1-6a,954,11800,93,184,160,1002,Au1,"Primary auditory area, layer 6a",AUDp6a,,, -"Primary auditory cortex, layer 6b",Au1-6b,1005,11900,115,190,168,1002,Au1,"Primary auditory area, layer 6b",AUDp6b,,, -,,,,,,,,,Posterior auditory area,AUDpo,,, -,,,,,,,,,"Posterior auditory area, layer 1",AUDpo1,,, -,,,,,,,,,"Posterior auditory area, layer 2/3",AUDpo2/3,,, -,,,,,,,,,"Posterior auditory area, layer 4",AUDpo4,,, -,,,,,,,,,"Posterior auditory area, layer 5",AUDpo5,,, -,,,,,,,,,"Posterior auditory area, layer 6a",AUDpo6a,,, -,,,,,,,,,"Posterior auditory area, layer 6b",AUDpo6b,,, -"Secondary auditory cortex, ventral area",AuV,1018,12700,120,255,120,247,Au,Ventral auditory area,AUDv,,, -"Secondary auditory cortex, ventral area, layer 1",AuV-1,959,12800,0,156,102,1018,AuV,"Ventral auditory area, layer 1",AUDv1,,, -"Secondary auditory cortex, ventral area, layer 2/3",AuV-2/3,755,12900,41,163,113,1018,AuV,"Ventral auditory area, layer 2/3",AUDv2/3,,, -"Secondary auditory cortex, ventral area, layer 4",AuV-4,990,13000,70,168,124,1018,AuV,"Ventral auditory area, layer 4",AUDv4,,, -"Secondary auditory cortex, ventral area, layer 5",AuV-5,1023,13100,96,183,144,1018,AuV,"Ventral auditory area, layer 5",AUDv5,,, -"Secondary auditory cortex, ventral area, layer 6a",AuV-6a,520,13200,116,190,160,1018,AuV,"Ventral auditory area, layer 6a",AUDv6a,,, -"Secondary auditory cortex, ventral area, layer 6b",AuV-6b,598,13300,127,193,168,1018,AuV,"Ventral auditory area, layer 6b",AUDv6b,,, -Visual cortex,V,669,13400,112,255,98,315,Isocortex,Visual areas,VIS,,, -"Secondary visual cortex, lateral area",V2L,2170,14010,108,173,178,669,V,"Secondary visual cortex, lateral area",VISLa,,, -"Secondary visual cortex, lateral area, anterior region",V2La,402,14100,112,255,98,2170,V2L,Anterolateral visual area,VISal,,, -"Secondary visual cortex, lateral area, anterior region, layer1",V2La-1,1074,14200,0,160,181,402,V2La,"Anterolateral visual area, layer 1",VISal1,,, -"Secondary visual cortex, lateral area, anterior region, layer2/3",V2La-2/3,905,14300,0,161,189,402,V2La,"Anterolateral visual area, layer 2/3",VISal2/3,,, -"Secondary visual cortex, lateral area, anterior region, layer4",V2La-4,1114,14400,0,161,197,402,V2La,"Anterolateral visual area, layer 4",VISal4,,, -"Secondary visual cortex, lateral area, anterior region, layer5",V2La-5,233,14500,16,179,202,402,V2La,"Anterolateral visual area, layer 5",VISal5,,, -"Secondary visual cortex, lateral area, anterior region, layer6a",V2La-6a,601,14600,105,193,212,402,V2La,"Anterolateral visual area, layer 6a",VISal6a,,, -"Secondary visual cortex, lateral area, anterior region, layer6b",V2La-6b,649,14700,103,193,221,402,V2La,"Anterolateral visual area, layer 6b",VISal6b,,, -"Secondary visual cortex, lateral area, intermediate region",V2Li,409,14800,112,255,98,2170,V2L,Lateral visual area,VISl,,, -"Secondary visual cortex, lateral area, intermediate region, layer1",V2Li-1,421,14900,0,159,158,409,V2Li,"Lateral visual area, layer 1",VISl1,,, -"Secondary visual cortex, lateral area, intermediate region, layer2/3",V2Li-2/3,973,15000,0,159,165,409,V2Li,"Lateral visual area, layer 2/3",VISl23,,, -"Secondary visual cortex, lateral area, intermediate region, layer4",V2Li-4,573,15100,0,161,173,409,V2Li,"Lateral visual area, layer 4",VISl4,,, -"Secondary visual cortex, lateral area, intermediate region, layer5",V2Li-5,613,15200,0,176,184,409,V2Li,"Lateral visual area, layer 5",VISl5,,, -"Secondary visual cortex, lateral area, intermediate region, layer6a",V2Li-6a,74,15300,69,183,193,409,V2Li,"Lateral visual area, layer 6a",VISl6a,,, -"Secondary visual cortex, lateral area, intermediate region, layer6b",V2Li-6b,121,15400,107,192,203,409,V2Li,"Lateral visual area, layer 6b",VISl6b,,, -"Secondary visual cortex, lateral area, posterior region",V2Lp,425,15500,112,255,98,2170,V2L,Posterolateral visual area,VISpl,,, -"Secondary visual cortex, lateral area, posterior region, layer1",V2Lp-1,750,15600,0,180,205,425,V2Lp,"Posterolateral visual area, layer 1",VISpl1,,, -"Secondary visual cortex, lateral area, posterior region, layer2/3",V2Lp-2/3,269,15700,0,181,214,425,V2Lp,"Posterolateral visual area, layer 2/3",VISpl2/3,,, -"Secondary visual cortex, lateral area, posterior region, layer4",V2Lp-4,869,15800,0,181,223,425,V2Lp,"Posterolateral visual area, layer 4",VISpl4,,, -"Secondary visual cortex, lateral area, posterior region, layer15",V2Lp-5,902,15900,2,190,215,425,V2Lp,"Posterolateral visual area, layer 5",VISpl5,,, -"Secondary visual cortex, lateral area, posterior region, layer6a",V2Lp-6a,377,16000,110,205,226,425,V2Lp,"Posterolateral visual area, layer 6a",VISpl6a,,, -"Secondary visual cortex, lateral area, posterior region, layer6b",V2Lp-6b,393,16100,107,205,236,425,V2Lp,"Posterolateral visual area, layer 6b",VISpl6b,,, -"Secondary Visual Cortex, Medial area",V2M,2096,16110,107,205,236,669,V,"Secondary Visual Cortex, Medial area",VISM,,, -"Secondary visual cortex, mediolateral area",V2ML,2097,16120,107,205,236,2096,V2M,,,,, -"Secondary visual cortex, mediolateral area, layer1",V2ML-1,2393,16130,107,205,236,2097,V2ML,,,,, -"Secondary visual cortex, mediolateral area, layer2/3",V2ML-2/3,2409,16140,107,205,236,2097,V2ML,,,,, -"Secondary visual cortex, mediolateral area, layer4",V2ML-4,2410,16150,107,205,236,2097,V2ML,,,,, -"Secondary visual cortex, mediolateral area, layer5",V2ML-5,2411,16160,107,205,236,2097,V2ML,,,,, -"Secondary visual cortex, mediolateral area, layer6a",V2ML-6a,2412,16170,107,205,236,2097,V2ML,,,,, -"Secondary visual cortex, mediolateral area, layer6b",V2ML-6b,2413,16180,107,205,236,2097,V2ML,,,,, -"Secondary visual cortex, mediomedial area, anterior region",V2MMa,394,16200,112,255,98,2096,V2M,Anteromedial visual area,VISam,,, -"Secondary visual cortex, mediomedial area, anterior region, layer1",V2MMa-1,281,16300,0,141,139,394,V2MMa,"Anteromedial visual area, layer 1",VISam1,,, -"Secondary visual cortex, mediomedial area, anterior region, layer2/3",V2MMa-2/3,1066,16400,0,142,145,394,V2MMa,"Anteromedial visual area, layer 2/3",VISam2/3,,, -"Secondary visual cortex, mediomedial area, anterior region, layer4",V2MMa-4,401,16500,0,143,152,394,V2MMa,"Anteromedial visual area, layer 4",VISam4,,, -"Secondary visual cortex, mediomedial area, anterior region, layer5",V2MMa-5,433,16600,0,158,163,394,V2MMa,"Anteromedial visual area, layer 5",VISam5,,, -"Secondary visual cortex, mediomedial area, anterior region, layer6a",V2MMa-6a,1046,16700,64,164,172,394,V2MMa,"Anteromedial visual area, layer 6a",VISam6a,,, -"Secondary visual cortex, mediomedial area, anterior region, layer6b",V2MMa-6b,441,16800,98,172,181,394,V2MMa,"Anteromedial visual area, layer 6b",VISam6b,,, -"Secondary visual cortex, mediomedial area, posterior region",V2MMp,533,16900,112,255,98,2096,V2M,posteromedial visual area,VISpm,,, -"Secondary visual cortex, mediomedial area, posterior region, layer1",V2MMp-1,805,17000,0,174,184,533,V2MMp,"posteromedial visual area, layer 1",VISpm1,,, -"Secondary visual cortex, mediomedial area, posterior region, layer2/3",V2MMp-2/3,41,17100,0,175,191,533,V2MMp,"posteromedial visual area, layer 2/3",VISpm2/3,,, -"Secondary visual cortex, mediomedial area, posterior region, layer4",V2MMp-4,501,17200,0,179,200,533,V2MMp,"posteromedial visual area, layer 4",VISpm4,,, -"Secondary visual cortex, mediomedial area, posterior region, layer5",V2MMp-5,565,17300,63,184,201,533,V2MMp,"posteromedial visual area, layer 5",VISpm5,,, -"Secondary visual cortex, mediomedial area, posterior region, layer6a",V2MMp-6a,257,17400,93,188,201,533,V2MMp,"posteromedial visual area, layer 6a",VISpm6a,,, -"Secondary visual cortex, mediomedial area, posterior region, layer6b",V2MMp-6b,469,17500,119,194,202,533,V2MMp,"posteromedial visual area, layer 6b",VISpm6b,,, -Primary visual cortex,V1,385,17600,112,255,98,669,V,Primary visual area,VISp,,, -"Primary visual cortex, layer1",V1-1,593,17700,0,147,153,385,V1,"Primary visual area, layer 1",VISp1,,, -"Primary visual cortex, layer2/3",V1-2/3,821,17800,0,148,159,385,V1,"Primary visual area, layer 2/3",VISp2/3,,, -"Primary visual cortex, layer4",V1-4,721,17900,17,151,167,385,V1,"Primary visual area, layer 4",VISp4,,, -"Primary visual cortex, layer5",V1-5,778,18000,60,163,177,385,V1,"Primary visual area, layer 5",VISp5,,, -"Primary visual cortex, layer6a",V1-6a,33,18100,85,168,178,385,V1,"Primary visual area, layer 6a",VISp6a,,, -"Primary visual cortex, layer6b",V1-6b,305,18200,107,173,178,385,V1,"Primary visual area, layer 6b",VISp6b,,, -"Primary visual cortex, monocular area",V1M,2098,18210,112,255,98,385,V1,,,,, -"Primary visual cortex, monocular area, layer1",V1M-1,2428,18220,112,255,98,2098,V1M,,,,, -"Primary visual cortex, monocular area, layer2/3",V1M-2/3,2429,18230,112,255,98,2098,V1M,,,,, -"Primary visual cortex, monocular area, layer4",V1M-4,2430,18240,112,255,98,2098,V1M,,,,, -"Primary visual cortex, monocular area, layer5",V1M-5,2431,18250,112,255,98,2098,V1M,,,,, -"Primary visual cortex, monocular area, layer6a",V1M-6a,2432,18260,112,255,98,2098,V1M,,,,, -"Primary visual cortex, monocular area, layer16b",V1M-6b,2433,18270,112,255,98,2098,V1M,,,,, -"Primary visual cortex, binocular area",V1B,2133,18280,112,255,98,385,V1,,,,, -"Primary visual cortex, binocular area, layer1",V1B-1,2434,18290,112,255,98,2133,V1B,,,,, -"Primary visual cortex, binocular area, layer2/3",V1B-2/3,2435,18291,112,255,98,2133,V1B,,,,, -"Primary visual cortex, binocular area, layer4",V1B-4,2436,18292,112,255,98,2133,V1B,,,,, -"Primary visual cortex, binocular area, layer5",V1B-5,2437,18293,112,255,98,2133,V1B,,,,, -"Primary visual cortex, binocular area, layer6a",V1B-6a,2438,18294,112,255,98,2133,V1B,,,,, -"Primary visual cortex, binocular area, layer6b",V1B-6b,2439,18295,112,255,98,2133,V1B,,,,, -Cingulate cortex,A24 (Cg),31,18300,112,255,113,315,Isocortex,Anterior cingulate area,ACA,,, -"Cingulate cortex, area 24b ",A24b (Cg1),2345,18810,169,203,142,31,A24 (Cg),,,,, -"Cingulate cortex, area 24b, layer1",A24b (Cg1)-1,2346,18820,169,203,142,2345,A24b (Cg1),,,,, -"Cingulate cortex, area 24b, layer2/3",A24b (Cg1)-2/3,2347,18830,169,203,142,2345,A24b (Cg1),,,,, -"Cingulate cortex, area 24b, layer5",A24b (Cg1)-5,2348,18840,169,203,142,2345,A24b (Cg1),,,,, -"Cingulate cortex, area 24b, layer6a",A24b (Cg1)-6a,2349,18850,169,203,142,2345,A24b (Cg1),,,,, -"Cingulate cortex, area 24b, layer6b",A24b (Cg1)-6b,2350,18860,169,203,142,2345,A24b (Cg1),,,,, -"Cingulate cortex, area 24b2",A24b2 (Cg1),39,18900,113,255,113,31,A24 (Cg),"Anterior cingulate area, dorsal part",ACAd,,, -"Cingulate cortex, area 24b2, layer1",A24b2 (Cg1)-1,935,19000,96,170,75,39,A24b2 (Cg1),"Anterior cingulate area, dorsal part, layer 1",ACAd1,,, -"Cingulate cortex, area 24b2, layer2/3",A24b2 (Cg1)-2/3,211,19100,116,175,88,39,A24b2 (Cg1),"Anterior cingulate area, dorsal part, layer 2/3",ACAd2/3,,, -"Cingulate cortex, area 24b2, layer5",A24b2 (Cg1)-5,1015,19200,137,183,108,39,A24b2 (Cg1),"Anterior cingulate area, dorsal part, layer 5",ACAd5,,, -"Cingulate cortex, area 24b2, layer6a",A24b2 (Cg1)-6a,919,19300,157,199,128,39,A24b2 (Cg1),"Anterior cingulate area, dorsal part, layer 6a",ACAd6a,,, -"Cingulate cortex, area 24b2, layer6b",A24b2 (Cg1)-6b,927,19400,168,203,142,39,A24b2 (Cg1),"Anterior cingulate area, dorsal part, layer 6b",ACAd6b,,, -"Cingulate cortex, area 24a2",A24a2 (Cg2),48,19500,114,255,113,31,A24 (Cg),"Anterior cingulate area, ventral part",ACAv,,, -"Cingulate cortex, area 24a2, layer1",A24a2 (Cg2)-1,588,19600,109,191,85,48,A24a2 (Cg2),"Anterior cingulate area, ventral part, layer 1",ACAv1,,, -"Cingulate cortex, area 24a2, layer2/3",A24a2 (Cg2)-2/3,296,19700,131,198,100,48,A24a2 (Cg2),"Anterior cingulate area, ventral part, layer 2/3",ACAv2/3,,, -"Cingulate cortex, area 24a2, layer5",A24a2 (Cg2)-5,772,19800,155,207,122,48,A24a2 (Cg2),"Anterior cingulate area, ventral part, layer 5",ACAv5,,, -"Cingulate cortex, area 24a2, layer6a",A24a2 (Cg2)-6a,810,19900,167,212,136,48,A24a2 (Cg2),"Anterior cingulate area, ventral part, 6a",ACAv6a,,, -"Cingulate cortex, area 24a2, layer6b",A24a2 (Cg2)-6b,819,20000,178,217,152,48,A24a2 (Cg2),"Anterior cingulate area, ventral part, 6b",ACAv6b,,, -"Cingulate cortex, area 32 (Prelimbic cortex)",A32 (PrL),972,20100,112,255,118,315,Isocortex,Prelimbic area,PL,,, -"Cingulate cortex, area 32 (Prelimbic cortex), layer1",A32 (PrL)-1,171,20200,83,150,66,972,A32 (PrL),"Prelimbic area, layer 1",PL1,,, -"Cingulate cortex, area 32 (Prelimbic cortex), layer2",A32 (PrL)-2,195,20300,101,156,78,972,A32 (PrL),"Prelimbic area, layer 2",PL2,,, -"Cingulate cortex, area 32 (Prelimbic cortex), layer2/3",A32 (PrL)-2/3,304,20400,121,163,95,972,A32 (PrL),"Prelimbic area, layer 2/3",PL2/3,,, -"Cingulate cortex, area 32 (Prelimbic cortex), layer5",A32 (PrL)-5,363,20500,140,178,114,972,A32 (PrL),"Prelimbic area, layer 5",PL5,,, -"Cingulate cortex, area 32 (Prelimbic cortex), layer6a",A32 (PrL)-6a,84,20600,150,182,127,972,A32 (PrL),"Prelimbic area, layer 6a",PL6a,,, -"Cingulate cortex, area 32 (Prelimbic cortex), layer6b",A32 (PrL)-6b,132,20700,160,187,142,972,A32 (PrL),"Prelimbic area, layer 6b",PL6b,,, -Orbital cortex,O,714,20800,128,255,128,315,Isocortex,Orbital area,ORB,,, -Lateral orbital cortex,LO,723,21400,127,255,128,714,O,"Orbital area, lateral part",ORBl,,, -"Lateral orbital cortex, layer1",LO-1,448,21500,37,143,69,723,LO,"Orbital area, lateral part, layer 1",ORBl1,,, -"Lateral orbital cortex, layer2/3",LO-2/3,412,21600,63,148,87,723,LO,"Orbital area, lateral part, layer 2/3",ORBl2/3,,, -"Lateral orbital cortex, layer5",LO-5,630,21700,82,152,98,723,LO,"Orbital area, lateral part, layer 5",ORBl5,,, -"Lateral orbital cortex, layer6a",LO-6a,440,21800,107,168,116,723,LO,"Orbital area, lateral part, layer 6a",ORBl6a,,, -"Lateral orbital cortex, layer6b",LO-6b,488,21900,128,175,128,723,LO,"Orbital area, lateral part, layer 6b",ORBl6b,,, -Medial orbital cortex,MO,731,22000,126,255,128,714,O,"Orbital area, medial part",ORBm,,, -"Medial orbital cortex, layer1",MO-1,484,22100,102,155,63,731,MO,"Orbital area, medial part, layer 1",ORBm1,,, -"Medial orbital cortex, layer2/3",MO-2/3,524,22200,121,162,82,731,MO,"Orbital area, medial part, layer 2",ORBm2,,, -"Medial orbital cortex, layer5",MO-5,582,22300,131,166,95,731,MO,"Orbital area, medial part, layer 2/3",ORBm2/3,,, -"Medial orbital cortex, layer6a",MO-6a,620,22400,150,181,113,731,MO,"Orbital area, medial part, layer 5",ORBm5,,, -"Medial orbital cortex, layer6b",MO-6b,910,22500,161,186,127,731,MO,"Orbital area, medial part, layer 6a",ORBm6a,,, -Ventral orbital cortex,VO,738,22600,125,255,128,714,O,"Orbital area, ventral part",ORBv,,, -"Orbital cortex, ventral part, layer 1",VO-1,2320,22610,125,255,128,738,VO,,,,, -"Orbital cortex, ventral part, layer 2/3",VO-2/3,2321,22620,125,255,128,738,VO,,,,, -"Orbital cortex, ventral part, layer 5",VO-5,2322,22630,125,255,128,738,VO,,,,, -"Orbital cortex, ventral part, layer 6a",VO-6a,2323,22640,125,255,128,738,VO,,,,, -"Orbital cortex, ventral part, layer 6b",VO-6b,2324,22650,125,255,128,738,VO,,,,, -,,,,,,,,,"Orbital area, ventrolateral part",ORBvl,,, -,,,,,,,,,"Orbital area, ventrolateral part, layer 1",ORBvl1,,, -,,,,,,,,,"Orbital area, ventrolateral part, layer 2/3",ORBvl2/3,,, -,,,,,,,,,"Orbital area, ventrolateral part, layer 5",ORBvl5,,, -,,,,,,,,,"Orbital area, ventrolateral part, layer 6a",ORBvl6a,,, -,,,,,,,,,"Orbital area, ventrolateral part, layer 6b",ORBvl6b,,, -Agranular insular cortex,AI,95,23300,112,255,114,315,Isocortex,Agranular insular area,AI,,, -"Agranular insular cortex, layer 1",AI1,2331,23310,112,255,114,95,AI,,,,, -"Agranular insular cortex, layer 2/3",AI2/3,2332,23320,112,255,114,95,AI,,,,, -"Agranular insular cortex, layer 5",AI5,2333,23330,112,255,114,95,AI,,,,, -"Agranular insular cortex, dorsal part",AID,104,23400,113,255,114,95,AI,"Agranular insular area, dorsal part",AId,,, -"Agranular insular cortex, dorsal part, layer1",AID-1,996,23500,74,165,77,104,AID,"Agranular insular area, dorsal part, layer 1",AId1,,, -"Agranular insular cortex, dorsal part, layer2/3",AID-2/3,328,23600,95,171,97,104,AID,"Agranular insular area, dorsal part, layer 2/3",AId2/3,,, -"Agranular insular cortex, dorsal part, layer5",AID-5,1101,23700,114,177,110,104,AID,"Agranular insular area, dorsal part, layer 5",AId5,,, -"Agranular insular cortex, dorsal part, layer6a",AID-6a,783,23800,144,195,129,104,AID,"Agranular insular area, dorsal part, layer 6a",AId6a,,, -"Agranular insular cortex, dorsal part, layer6b",AID-6b,831,23900,156,200,143,104,AID,"Agranular insular area, dorsal part, layer 6b",AId6b,,, -Dorsolateral orbital cortex,DLO,2020,23910,156,200,143,104,AID,,,,, -"Dorsolateral orbital cortex, layer 1",DLO-1,2326,23920,156,200,143,2020,DLO,,,,, -"Dorsolateral orbital cortex, layer 2/3",DLO-2/3,2327,23930,156,200,143,2020,DLO,,,,, -Dorsolateral orbital cortex layer 5,DLO-5,2328,23940,156,200,143,2020,DLO,,,,, -Dorsolateral orbital cortex layer 6a,DLO-6a,2329,23950,156,200,143,2020,DLO,,,,, -Dorsolateral orbital cortex layer 6b,DLO-6b,2330,23960,156,200,143,2020,DLO,,,,, -"Agranular insular cortex, posterior part",AIP,111,24000,111,255,114,95,AI,"Agranular insular area, posterior part",AIp,,, -"Agranular insular cortex, posterior part, layer1",AIP-1,120,24100,0,154,82,111,AIP,"Agranular insular area, posterior part, layer 1",AIp1,,, -"Agranular insular cortex, posterior part, layer2/3",AIP-2/3,163,24200,20,160,94,111,AIP,"Agranular insular area, posterior part, layer 2/3",AIp2/3,,, -"Agranular insular cortex, posterior part, layer5",AIP-5,344,24300,59,165,106,111,AIP,"Agranular insular area, posterior part, layer 5",AIp5,,, -"Agranular insular cortex, posterior part, layer6a",AIP-6a,314,24400,87,180,124,111,AIP,"Agranular insular area, posterior part, layer 6a",AIp6a,,, -"Agranular insular cortex, posterior part, layer6b",AIP-6b,355,24500,108,186,137,111,AIP,"Agranular insular area, posterior part, layer 6b",AIp6b,,, -"Agranular insular cortex, ventral part",AIV,119,24600,110,255,114,95,AI,"Agranular insular area, ventral part",AIv,,, -"Agranular insular cortex, ventral part, layer1",AIV-1,704,24700,84,186,88,119,AIV,"Agranular insular area, ventral part, layer 1",AIv1,,, -"Agranular insular cortex, ventral part, layer2/3",AIV-2/3,694,24800,107,192,110,119,AIV,"Agranular insular area, ventral part, layer 2/3",AIv2/3,,, -"Agranular insular cortex, ventral part, layer5",AIV-5,800,24900,129,199,124,119,AIV,"Agranular insular area, ventral part, layer 5",AIv5,,, -"Agranular insular cortex, ventral part, layer6a",AIV-6a,675,25000,153,207,137,119,AIV,"Agranular insular area, ventral part, layer 6a",AIv6a,,, -"Agranular insular cortex, ventral part, layer6b",AIV-6b,699,25100,166,213,152,119,AIV,"Agranular insular area, ventral part, layer 6b",AIv6b,,, -"Cingulate cortex, area 29 and 30 (retrosplenial cortex)",A29-30 (RS),254,25200,112,255,120,315,Isocortex,Retrosplenial area,RSP,,, -,,,,,,,,,"Retrosplenial area, lateral agranular part",RSPagl,,, -,,,,,,,,,"Retrosplenial area, lateral agranular part, layer 1",RSPagl1,,, -,,,,,,,,,"Retrosplenial area, lateral agranular part, layer 2/3",RSPagl2/3,,, -,,,,,,,,,"Retrosplenial area, lateral agranular part, layer 5",RSPagl5,,, -,,,,,,,,,"Retrosplenial area, lateral agranular part, layer 6a",RSPagl6a,,, -,,,,,,,,,"Retrosplenial area, lateral agranular part, layer 6b",RSPagl6b,,, -"Cingulate cortex, area 30 (Retrosplenial dysgranular cortex)",A30 (RSD),879,25900,112,255,120,254,A29-30 (RS),"Retrosplenial area, dorsal part",RSPd,,, -"Cingulate cortex, area 30 (Retrosplenial dysgranular cortex), layer1",A30 (RSD)-1,442,26000,0,139,89,879,A30 (RSD),"Retrosplenial area, dorsal part, layer 1",RSPd1,,, -"Cingulate cortex, area 30 (Retrosplenial dysgranular cortex), layer2/3",A30 (RSD)-2/3,434,26100,34,145,99,879,A30 (RSD),"Retrosplenial area, dorsal part, layer 2/3",RSPd2/3,,, -"Cingulate cortex, area 30 (Retrosplenial dysgranular cortex), layer4",A30 (RSD)-4,545,26200,35,145,99,879,A30 (RSD),"Retrosplenial area, dorsal part, layer 4",RSPd4,,, -"Cingulate cortex, area 30 (Retrosplenial dysgranular cortex), layer5",A30 (RSD)-5,610,26300,60,149,109,879,A30 (RSD),"Retrosplenial area, dorsal part, layer 5",RSPd5,,, -"Cingulate cortex, area 30 (Retrosplenial dysgranular cortex), layer6a",A30 (RSD)-6a,274,26400,86,164,129,879,A30 (RSD),"Retrosplenial area, dorsal part, layer 6a",RSPd6a,,, -"Cingulate cortex, area 30 (Retrosplenial dysgranular cortex), layer6b",A30 (RSD)-6b,330,26500,104,170,142,879,A30 (RSD),"Retrosplenial area, dorsal part, layer 6b",RSPd6b,,, -"Cingulate cortex, area 29 (Retrosplenial granular cortex)",A29 (RSG),886,26600,112,255,120,254,A29-30 (RS),"Retrosplenial area, ventral part",RSPv,,, -"Cingulate cortex, area 29c (Retrosplenial granular cortex c)",A29c (RSGc),2132,26610,112,255,120,886,A29 (RSG),,,,, -"Cingulate cortex, area 29c (Retrosplenial granular cortex c), layer1",A29c (RSGc)-1,542,26700,0,138,79,2132,A29c (RSGc),"Retrosplenial area, ventral part, part c, layer 1",RSPv-c1,,modified ontology, -"Cingulate cortex, area 29c (Retrosplenial granular cortex c), layer2",A29c (RSGc)-2,606,26800,35,145,94,2132,A29c (RSGc),"Retrosplenial area, ventral part, part c, layer 2",RSPv-c2,,modified ontology, -"Cingulate cortex, area 29c (Retrosplenial granular cortex c), layer2/3",A29c (RSGc)-2/3,430,26900,61,149,104,2132,A29c (RSGc),"Retrosplenial area, ventral part, part c, layer 2/3",RSPv-c2/3,,modified ontology, -"Cingulate cortex, area 29c (Retrosplenial granular cortex c), layer5",A29c (RSGc)-5,687,27000,87,163,123,2132,A29c (RSGc),"Retrosplenial area, ventral part, part c, layer 5",RSPv-c5,,modified ontology, -"Cingulate cortex, area 29c (Retrosplenial granular cortex c), layer6a",A29c (RSGc)-6a,590,27100,96,166,129,2132,A29c (RSGc),"Retrosplenial area, ventral part, part c, layer 6a",RSPv-c6a,,modified ontology, -"Cingulate cortex, area 29c (Retrosplenial granular cortex c), layer6b",A29c (RSGc)-6b,622,27200,105,169,135,2132,A29c (RSGc),"Retrosplenial area, ventral part, part c, layer 6b",RSPv-c6b,,modified ontology, -"Cingulate cortex, area 29b (Retrosplenial granular cortex b)",A29b (RSGb),2066,27210,112,255,120,886,A29 (RSG),,,,, -"Cingulate cortex, area 29b (Retrosplenial granular cortex b), layer1",A29b (RSGb)-1,2416,27220,112,255,120,2066,A29b (RSGb),,,,, -"Cingulate cortex, area 29b (Retrosplenial granular cortex b), layer2/3",A29b (RSGb)-2/3,2417,27230,112,255,120,2066,A29b (RSGb),,,,, -"Cingulate cortex, area 29b (Retrosplenial granular cortex b), layer5",A29b (RSGb)-5,2418,27240,112,255,120,2066,A29b (RSGb),,,,, -"Cingulate cortex, area 29b (Retrosplenial granular cortex b), layer6a",A29b (RSGb)-6a,2419,27250,112,255,120,2066,A29b (RSGb),,,,, -"Cingulate cortex, area 29b (Retrosplenial granular cortex b), layer6b",A29b (RSGb)-6b,2420,27260,112,255,120,2066,A29b (RSGb),,,,, -"Cingulate cortex, area 29a (Retrosplenial granular cortex a)",A29a (RSGa),2067,27270,112,255,120,886,A29 (RSG),,,,, -"Cingulate cortex, area 29a (Retrosplenial granular cortex a), layer1",A29a (RSGa)-1,2421,27280,112,255,120,2067,A29a (RSGa),,,,, -"Cingulate cortex, area 29a (Retrosplenial granular cortex a), layer2/3",A29a (RSGa)-2/3,2422,27290,112,255,120,2067,A29a (RSGa),,,,, -"Cingulate cortex, area 29a (Retrosplenial granular cortex a), layer5",A29a (RSGa)-5,2423,27291,112,255,120,2067,A29a (RSGa),,,,, -"Cingulate cortex, area 29a (Retrosplenial granular cortex a), layer6a",A29a (RSGa)-6a,2424,27292,112,255,120,2067,A29a (RSGa),,,,, -"Cingulate cortex, area 29a (Retrosplenial granular cortex a), layer6b",A29a (RSGa)-6b,2425,27293,112,255,120,2067,A29a (RSGa),,,,, -parietal association cortex,PtA,22,27300,112,255,119,315,Isocortex,Posterior parietal association areas,PTLp,,, -,,,,,,,,,"Posterior parietal association areas, layer 1",PTLp1,,, -,,,,,,,,,"Posterior parietal association areas, layer 2/3",PTLp2/3,,, -,,,,,,,,,"Posterior parietal association areas, layer 4",PTLp4,,, -,,,,,,,,,"Posterior parietal association areas, layer 5",PTLp5,,, -,,,,,,,,,"Posterior parietal association areas, layer 6a",PTLp6a,,, -,,,,,,,,,"Posterior parietal association areas, layer 6b",PTLp6b,,, -Medial parietal association cortex,MPtA,2056,27910,105,169,135,22,PtA,,,,, -"Medial parietal association cortex, layer 1",MPtA-1,2381,27911,105,169,135,2056,MPtA,,,,, -"Medial parietal association cortex, layer 2/3",MPtA-2,2382,27912,105,169,135,2056,MPtA,,,,, -"Medial parietal association cortex, layer 4",MPtA-4,2383,27913,105,169,135,2056,MPtA,,,,, -"Medial parietal association cortex, layer 5",MPtA-5,2384,27914,105,169,135,2056,MPtA,,,,, -"Medial parietal association cortex, layer 6a",MPtA-6a,2385,27915,105,169,135,2056,MPtA,,,,, -"Medial parietal association cortex, layer 6b",MPtA-6b,2386,27916,105,169,135,2056,MPtA,,,,, -Lateral parietal association cortex,LPtA,2057,27920,105,169,135,22,PtA,,,,, -"Lateral parietal association cortex, layer 1",LPtA-1,2387,27921,105,169,135,2057,LPtA,,,,, -"Lateral parietal association cortex, layer 2/3",LPtA-2/3,2388,27922,105,169,135,2057,LPtA,,,,, -"Lateral parietal association cortex, layer 4",LPtA-4,2389,27923,105,169,135,2057,LPtA,,,,, -"Lateral parietal association cortex, layer 5",LPtA-5,2390,27924,105,169,135,2057,LPtA,,,,, -"Lateral parietal association cortex, layer 6a",LPtA-6a,2391,27925,105,169,135,2057,LPtA,,,,, -"Lateral parietal association cortex, layer 6b",LPtA-6b,2392,27926,105,169,135,2057,LPtA,,,,, -"parietal cortex, posterior area, dorsal part",PtPD,2082,27940,112,255,119,22,PtA,,,,, -"Parietal cortex, posterior area, dorsal part, layer1",PtPD-1,2402,27941,112,255,119,2082,PtPD,,,,, -"Parietal cortex, posterior area, dorsal part, layer2/3",PtPD-2/3,2403,27942,112,255,119,2082,PtPD,,,,, -"Parietal cortex, posterior area, dorsal part, layer4",PtPD-4,2404,27943,112,255,119,2082,PtPD,,,,, -"Parietal cortex, posterior area, dorsal part, layer5",PtPD-5,2405,27944,112,255,119,2082,PtPD,,,,, -"Parietal cortex, posterior area, dorsal part, layer6a",PtPD-6a,2406,27945,112,255,119,2082,PtPD,,,,, -"Parietal cortex, posterior area, dorsal part, layer6b",PtPD-6b,2407,27946,112,255,119,2082,PtPD,,,,, -Temporal association cortex,TeA ,541,28000,112,255,122,315,Isocortex,Temporal association areas,TEa,,, -"Temporal association cortex, layer1",TeA-1,97,28100,0,140,110,541,TeA ,"Temporal association areas, layer 1",TEa1,,, -"Temporal association cortex, layer2/3",TeA-2/3,1127,28200,0,145,121,541,TeA ,"Temporal association areas, layer 2/3",TEa2/3,,, -"Temporal association cortex, layer4",TeA-4,234,28300,56,151,133,541,TeA ,"Temporal association areas, layer 4",TEa4,,, -"Temporal association cortex, layer5",TeA-5,289,28400,82,165,150,541,TeA ,"Temporal association areas, layer 5",TEa5,,, -"Temporal association cortex, layer6a",TeA-6a,729,28500,102,170,157,541,TeA ,"Temporal association areas, layer 6a",TEa6a,,, -"Temporal association cortex, layer6b",TeA-6b,786,28600,124,177,165,541,TeA ,"Temporal association areas, layer 6b",TEa6b,,, -Perihinal cortex,PRh,922,28700,112,255,117,315,Isocortex,Perirhinal area,PERI,,, -"Perihinal cortex, layer6a",PRh-6a,335,28800,79,166,164,922,PRh,"Perirhinal area, layer 6a",PERI6a,,, -"Perihinal cortex, layer6b",PRh-6b,368,28900,99,171,173,922,PRh,"Perirhinal area, layer 6b",PERI6b,,, -"Parietal cortex, posterior area, rostral part",PtPR,2286,28930,112,255,119,22,PtA,,,,, -"Parietal cortex, posterior area, rostral part, layer1",PtPR-1,2396,28931,112,255,119,2286,PtPR,,,,, -"Parietal cortex, posterior area, rostral part, layer2/3",PtPR-2/3,2397,28932,112,255,119,2286,PtPR,,,,, -"Parietal cortex, posterior area, rostral part, layer4",PtPR-4,2398,28933,112,255,119,2286,PtPR,,,,, -"Parietal cortex, posterior area, rostral part, layer5",PtPR-5,2399,28934,112,255,119,2286,PtPR,,,,, -"Parietal cortex, posterior area, rostral part, layer6a",PtPR-6a,2400,28935,112,255,119,2286,PtPR,,,,, -"Parietal cortex, posterior area, rostral part, layer6b",PtPR-6b,2401,28936,112,255,119,2286,PtPR,,,,, -"Perihinal cortex, layer1",PRh-1,540,29000,0,141,133,922,PRh,"Perirhinal area, layer 1",PERI1,,, -"Perihinal cortex, layer5",PRh-5,692,29100,52,151,146,922,PRh,"Perirhinal area, layer 5",PERI5,,, -"Perihinal cortex, layer2/3",PRh-2/3,888,29200,0,146,139,922,PRh,"Perirhinal area, layer 2/3",PERI2/3,,, -Ectorhinal cortex,Ect,895,29300,112,255,115,315,Isocortex,Ectorhinal area,ECT,,, -"Ectorhinal cortex, layer1",Ect-1,836,29400,0,140,121,895,Ect,Ectorhinal area/Layer 1,ECT1,,, -"Ectorhinal cortex, layer2/3",Ect-2/3,427,29500,19,147,133,895,Ect,Ectorhinal area/Layer 2/3,ECT2/3,,, -"Ectorhinal cortex, layer5",Ect-5,988,29600,54,151,140,895,Ect,Ectorhinal area/Layer 5,ECT5,,, -"Ectorhinal cortex, layer6a",Ect-6a,977,29700,80,165,156,895,Ect,Ectorhinal area/Layer 6a,ECT6a,,, -"Ectorhinal cortex, layer6b",Ect-6b,1045,29800,101,171,165,895,Ect,Ectorhinal area/Layer 6b,ECT6b,,, -Olfactory areas,OLF,698,29900,144,255,144,695,CTXpl,Olfactory areas,OLF,,, -Main olfactory bulb,MOB,507,30000,160,255,171,698,OLF,Main olfactory bulb,MOB,,, -Glomerular layer of the olfactory bulb,Gl,212,30100,140,235,151,507,MOB,"Main olfactory bulb, glomerular layer",MOBgl,,, -Granule cell layer of the olfactory bulb,GrO,220,30200,110,205,121,507,MOB,"Main olfactory bulb, granule layer",MOBgr,,, -Internal plxiform layer of the olfactory bulb,IPl,228,30300,160,255,171,507,MOB,"Main olfactory bulb, inner plexiform layer",MOBipl,,, -Mitral cell layer of the olfactory bulb,Mi,236,30400,130,225,141,507,MOB,"Main olfactory bulb, mitral layer",MOBmi,,, -External plexiform layer of the olfactory bulb,EPl,244,30500,160,255,171,507,MOB,"Main olfactory bulb, outer plexiform layer",MOBopl,,, -Accessory olfactory bulb,AOB,151,30600,160,255,176,698,OLF,Accessory olfactory bulb,AOB,,, -Glomerular layer of the accessory olfactory bulb,GlA,188,30700,140,235,156,151,AOB,"Accessory olfactory bulb, glomerular layer",AOBgl,,, -Granule cell layer of the accessory olfactory bulb,GrA,196,30800,110,205,126,151,AOB,"Accessory olfactory bulb, granular layer",AOBgr,,, -Mitral cell layer of the accessory olfactory bulb,MiA,204,30900,130,225,146,151,AOB,"Accessory olfactory bulb, mitral layer",AOBmi,,, -External plexiform layer of the accessory olfactory b,EPIA,2021,30910,130,225,146,151,AOB,,,,, -Anterior olfactory area,AO,159,31000,144,255,184,698,OLF,Anterior olfactory nucleus,AON,,, -Anterior olfactory area dorsal part,AOD,167,31100,192,255,200,159,AO,"Anterior olfactory nucleus, dorsal part",AONd,,, -Anterior olfactory area external part,AOE,175,31200,192,255,201,159,AO,"Anterior olfactory nucleus, external part",AONe,,, -Anterior olfactory area lateral part,AOL,183,31300,192,255,202,159,AO,"Anterior olfactory nucleus, lateral part",AONl,,, -Anterior olfactory area medial part,AOM,191,31400,192,255,203,159,AO,"Anterior olfactory nucleus, medial part",AONm,,, -"Anterior olfactory area, posteroventral part",AOP/AOV,199,31500,192,255,204,159,AO,"Anterior olfactory nucleus, posteroventral part",AONpv,,, -"Anterior olfactory area, ventral part",AOV,2318,31510,192,255,204,199,AOP/AOV,,,,, -"Anterior olfactory area, posterior part",AOP,2319,31520,192,255,204,199,AOP/AOV,,,,, -Anterior olfactory area layer 1,AO1,160,31600,144,255,184,159,AO,"Anterior olfactory nucleus, layer 1",AON1,,, -Anterior olfactory area layer 2,AO2,168,31700,144,255,184,159,AO,"Anterior olfactory nucleus, layer 2",AON2,,, -Taenia tecta,TT,589,31800,160,255,160,698,OLF,Taenia tecta,TT,,, -Dorsal tenia tecta,DTT,597,31900,160,255,162,589,TT,"Taenia tecta, dorsal part",TTd,,, -"Dorsal tenia tecta, layer 1",DTT1,1034,32100,160,255,162,589,DTT,"Taenia tecta, dorsal part, layer 1",TTd1,,, -"Dorsal tenia tecta, layer 2",DTT2,1042,32200,160,255,162,589,DTT,"Taenia tecta, dorsal part, layer 2",TTd2,,, -"Dorsal tenia tecta, layer 3",DTT3,1050,32300,160,255,162,589,DTT,"Taenia tecta, dorsal part, layer 3",TTd3,,, -"Dorsal tenia tecta, layer 4",DTT4,1059,32400,160,255,162,589,DTT,"Taenia tecta, dorsal part, layer 4",TTd4,,, -Ventral tenia tecta,VTT,605,32500,160,255,161,589,TT,"Taenia tecta, ventral part",TTv,,, -"Ventral tenia tecta, layer 1",VTT1,1067,32700,160,255,161,589,VTT,"Taenia tecta, ventral part, layer 1",TTv1,,, -"Ventral tenia tecta, layer 2",VTT2,1075,32800,160,255,161,589,VTT,"Taenia tecta, ventral part, layer 2",TTv2,,, -"Ventral tenia tecta, layer 3",VTT3,1082,32900,160,255,161,589,VTT,"Taenia tecta, ventral part, layer 3",TTv3,,, -"Cingulate cortex, area 25 (dorsal peduncular cortex)",A25 (DP),814,33000,112,255,125,698,OLF,Dorsal peduncular area,DP,,, -"Cingulate cortex, area 25 (dorsal peduncular cortex), layer1",A25 (DP)-1,496,33100,0,158,81,814,A25 (DP),"Dorsal peduncular area, layer 1",DP1,,, -"Cingulate cortex, area 25 (dorsal peduncular cortex), layer2",A25 (DP)-2,535,33200,60,164,99,814,A25 (DP),"Dorsal peduncular area, layer 2",DP2,,, -"Cingulate cortex, area 25 (dorsal peduncular cortex), layer2/3",A25 (DP)-2/3,360,33300,83,169,111,814,A25 (DP),"Dorsal peduncular area, layer 2/3",DP2/3,,, -"Cingulate cortex, area 25 (dorsal peduncular cortex), layer5",A25 (DP)-5,646,33400,109,185,130,814,A25 (DP),"Dorsal peduncular area, layer 5",DP5,,, -"Cingulate cortex, area 25 (dorsal peduncular cortex), layer6a",A25 (DP)-6a,267,33500,130,192,143,814,A25 (DP),"Dorsal peduncular area, layer 6a",DP6a,,, -Dorsal transition zone,DTr,2019,33510,130,192,143,814,A25 (DP),,,,, -Piriform cortex,PIR,961,33600,160,255,167,698,OLF,Piriform area,PIR,,, -Piriform cortex 1,Pir1,276,33800,160,255,167,961,PIR,"Piriform area, molecular layer",PIR1,,, -Piriform cortex 2,Pir2,284,33900,160,255,167,961,PIR,"Piriform area, pyramidal layer",PIR2,,, -Piriform cortex 3,Pir3,291,34000,160,255,167,961,PIR,"Piriform area, polymorph layer",PIR3,,, -Cortex-amygdala transition zone,CxA,2024,34010,160,255,170,961,PIR,,,,, -Cortex-amygdala transition zone Layer1,CxA1,2303,34020,160,255,170,2024,CxA,,,,, -Cortex-amygdala transition zone Layer2,CxA2,2304,34030,160,255,170,2024,CxA,,,,, -Cortex-amygdala transition zone Layer3,CxA3,2305,34040,160,255,170,2024,CxA,,,,, -Nucleus of the lateral olfactory tract,LOT,619,34100,160,255,170,698,OLF,Nucleus of the lateral olfactory tract,NLOT,,, -Nucleus of the lateral olfactory tract 1,LOT1,260,34300,160,255,170,619,LOT,"Nucleus of the lateral olfactory tract, molecular layer",NLOT1,,, -Nucleus of the lateral olfactory tract 2,LOT2,268,34400,160,255,170,619,LOT,"Nucleus of the lateral olfactory tract, pyramidal layer",NLOT2,,, -Nucleus of the lateral olfactory tract 3,LOT3,1139,34500,160,255,170,619,LOT,"Nucleus of the lateral olfactory tract, layer 3",NLOT3,,, -cortical amygdaloid nucleus,CO,631,34600,160,255,177,698,OLF,Cortical amygdalar area,COA,,, -Anterior cortical amygdaloid nucleus,ACo ,639,34700,160,255,178,631,CO,"Cortical amygdalar area, anterior part",COAa,,, -"Anterior cortical amygdaloid nucleus, layer1",ACo-1,192,34800,160,255,178,639,ACo ,"Cortical amygdalar area, anterior part, layer 1",COAa1,,, -"Anterior cortical amygdaloid nucleus, layer2",ACo-2,200,34900,160,255,178,639,ACo ,"Cortical amygdalar area, anterior part, layer 2",COAa2,,, -"Anterior cortical amygdaloid nucleus, layer3",ACo-3,208,35000,160,255,178,639,ACo ,"Cortical amygdalar area, anterior part, layer 3",COAa3,,, -Posterior cortical amygdaloid area,PCO,647,35100,160,255,179,631,CO,"Cortical amygdalar area, posterior part",COAp,,, -Posterolateral cortical amygdaloid area,PLCo,655,35200,160,255,180,647,PCO,"Cortical amygdalar area, posterior part, lateral zone",COApl,,, -Posterolateral cortical amygdaloid area 1,PLCo1,216,35500,160,255,180,655,PLCo,"Cortical amygdalar area, posterior part, lateral zone, layer 1",COApl1,,, -Posterolateral cortical amygdaloid area 2,PLCo2,224,35600,160,255,180,655,PLCo,"Cortical amygdalar area, posterior part, lateral zone, layer 2",COApl2,,, -Posterolateral cortical amygdaloid area 3,PLCo3,232,35700,160,255,180,655,PLCo,"Cortical amygdalar area, posterior part, lateral zone, layer 3",COApl3,,, -Posteromedial cortical amygdaloid area,PMCo,663,35800,160,255,181,647,PCO,"Cortical amygdalar area, posterior part, medial zone",COApm,,, -Posteromedial cortical amygdaloid area 1,PMCo1,240,36100,160,255,181,663,PMCo,"Cortical amygdalar area, posterior part, medial zone, layer 1",COApm1,,, -Posteromedial cortical amygdaloid area 2,PMCo2,248,36200,160,255,181,663,PMCo,"Cortical amygdalar area, posterior part, medial zone, layer 2",COApm2,,, -Posteromedial cortical amygdaloid area 3,PMCo3,256,36300,160,255,181,663,PMCo,"Cortical amygdalar area, posterior part, medial zone, layer 3",COApm3,,, -Rostral amygdalopiriform area,RAPir,788,36400,160,255,169,698,OLF,Piriform-amygdalar area,PAA,,, -Rostral amygdalopiriform area 1,RAPir1,408,36600,160,255,169,788,RAPir,"Piriform-amygdalar area, molecular layer",PAA1,,, -Rostral amygdalopiriform area 2,RAPir2,416,36700,160,255,169,788,RAPir,"Piriform-amygdalar area, pyramidal layer",PAA2,,, -Rostral amygdalopiriform area 3,RAPir3,424,36800,160,255,169,788,RAPir,"Piriform-amygdalar area, polymorph layer",PAA3,,, -Amygdalopiriform transition area,Apir,566,36900,160,255,166,698,OLF,Postpiriform transition area,TR,,, -"Postpiriform transition area, layers 1",APir1,1140,37100,160,255,166,566,Apir,"Postpiriform transition area, layers 1",TR1,,, -"Postpiriform transition area, layers 2",APir2,1141,37200,160,255,166,566,Apir,"Postpiriform transition area, layers 2",TR2,,, -"Postpiriform transition area, layers 3",APir3,1142,37300,160,255,166,566,Apir,"Postpiriform transition area, layers 3",TR3,,, -Hippocampal formation,HPF,1089,37400,144,255,176,695,CTXpl,Hippocampal formation,HPF,,, -Hippocampal region,HIP,1080,37500,121,255,128,1089,HPF,Hippocampal region,HIP,,, -"'""Ammon''s horn""'",CA,375,37600,122,255,122,1080,HIP,Ammon's horn,CA,,, -Field CA1 of the hippocampus,CA1,382,37700,122,255,121,375,CA,Field CA1,CA1,,, -Field CA1 of the hippocampus- lacunosum moleculare layer of the hippocampus,LMol ,391,37800,123,255,121,382,CA1,"Field CA1, stratum lacunosum-moleculare",CA1slm,,, -Field CA1 of the hippocampus- oriens layer of the hippocampus,Or,399,37900,124,255,121,382,CA1,"Field CA1, stratum oriens",CA1so,,, -Field CA1 of the hippocampus- pyramidal layer of the hippocampus,Py,407,38000,75,230,70,382,CA1,"Field CA1, pyramidal layer",CA1sp,,, -Field CA1 of the hippocampus- radiatum layer of the hippocampus,Rad,415,38100,126,255,121,382,CA1,"Field CA1, stratum radiatum",CA1sr,,, -Field CA2 of the hippocampus,CA2,423,38200,122,255,120,375,CA,Field CA2,CA2,,, -Field CA2 of the hippocampus- lacunosum moleculare layer of the hippocampus,LMol ,431,38300,123,255,120,423,CA2,"Field CA2, stratum lacunosum-moleculare",CA2slm,,, -Field CA2 of the hippocampus- oriens layer of the hippocampus,Or,438,38400,124,255,120,423,CA2,"Field CA2, stratum oriens",CA2so,,, -Field CA2 of the hippocampus- pyramidal layer of the hippocampus,Py,446,38500,75,230,70,423,CA2,"Field CA2, pyramidal layer",CA2sp,,, -Field CA2 of the hippocampus- radiatum layer of the hippocampus,Rad,454,38600,126,255,120,423,CA2,"Field CA2, stratum radiatum",CA2sr,,, -Field CA3 of the hippocampus,CA3,463,38700,122,255,119,375,CA,Field CA3,CA3,,, -Field CA3 of the hippocampus- lacunosum moleculare layer of the hippocampus,LMol ,471,38800,123,255,119,463,CA3,"Field CA3, stratum lacunosum-moleculare",CA3slm,,, -Field CA3 of the hippocampus- stratum lucidum of the hippocampus,SLu ,479,38900,124,255,119,463,CA3,"Field CA3, stratum lucidum",CA3slu,,, -Field CA3 of the hippocampus- oriens layer of the hippocampus,Or,486,39000,125,255,119,463,CA3,"Field CA3, stratum oriens",CA3so,,, -Field CA3 of the hippocampus- pyramidal layer of the hippocampus,Py,495,39100,75,230,70,463,CA3,"Field CA3, pyramidal layer",CA3sp,,, -Field CA3 of the hippocampus- radiatum layer of the hippocampus,Rad,504,39200,127,255,119,463,CA3,"Field CA3, stratum radiatum",CA3sr,,, -Dentate gyrus,DG,726,39300,114,250,114,1080,HIP,Dentate gyrus,DG,,, -Molecular layer of the dentate gyrus,MoDG,10703,39400,114,250,114,726,DG,"Dentate gyrus, molecular layer",DG-mo,,, -Polymorph layer of the dentate gyrus,PoDG,10704,39500,94,230,94,726,DG,"Dentate gyrus, polymorph layer",DG-po,,, -Granule cell layer of the dentate gyrus,GrDG,632,39600,64,200,64,726,DG,"Dentate gyrus, granule cell layer",DG-sg,,, -,,,,,,,,,"Dentate gyrus, subgranular zone",DG-sgz,,, -,,,,,,,,,Dentate gyrus crest,DGcr,,, -,,,,,,,,,"Dentate gyrus crest, molecular layer",DGcr-mo,,, -,,,,,,,,,"Dentate gyrus crest, polymorph layer",DGcr-po,,, -,,,,,,,,,"Dentate gyrus crest, granule cell layer",DGcr-sg,,, -,,,,,,,,,Dentate gyrus lateral blade,DGlb,,, -,,,,,,,,,"Dentate gyrus lateral blade, molecular layer",DGlb-mo,,, -,,,,,,,,,"Dentate gyrus lateral blade, polymorph layer",DGlb-po,,, -,,,,,,,,,"Dentate gyrus lateral blade, granule cell layer",DGlb-sg,,, -,,,,,,,,,Dentate gyrus medial blade,DGmb,,, -,,,,,,,,,"Dentate gyrus medial blade, molecular layer",DGmb-mo,,, -,,,,,,,,,"Dentate gyrus medial blade, polymorph layer",DGmb-po,,, -,,,,,,,,,"Dentate gyrus medial blade, granule cell layer",DGmb-sg,,, -Fasciola cinereum,FC,982,41000,114,253,114,1080,HIP,Fasciola cinerea,FC,,, -Induseum griseum,IG,19,41100,114,254,114,1080,HIP,Induseum griseum,IG,,, -Retrohippocampal region,RHP,822,41200,144,255,176,1089,HPF,Retrohippocampal region,RHP,,, -Entorhinal area,ENT,909,41300,128,255,144,822,RHP,Entorhinal area,ENT,,, -Dorsolateral entorhinal cortex,DLEnt,918,41350,128,255,145,909,ENT,"Entorhinal area, lateral part",ENTl,,, -"Dorsolateral entorhinal cortex, layer 1",DLEnt1,1121,41400,0,104,101,918,DLEnt,"Entorhinal area, lateral part, layer 1",ENTl1,,, -"Dorsolateral entorhinal cortex, layer 2",DLEnt2,20,41500,0,114,116,918,DLEnt,"Entorhinal area, lateral part, layer 2",ENTl2,,, -"Dorsolateral entorhinal cortex, layer 2/3",DLEnt2/3,999,41600,50,133,139,918,DLEnt,"Entorhinal area, lateral part, layer 2/3",ENTl2/3,,, -"Dorsolateral entorhinal cortex, layer 2a",DLEnta,715,41700,0,115,122,918,DLEnt,"Entorhinal area, lateral part, layer 2a",ENTl2a,,, -"Dorsolateral entorhinal cortex, layer 2b",DLEntb,764,41800,0,128,132,918,DLEnt,"Entorhinal area, lateral part, layer 2b",ENTl2b,,, -"Dorsolateral entorhinal cortex, layer 3",DLEnt3,52,41900,86,151,158,918,DLEnt,"Entorhinal area, lateral part, layer 3",ENTl3,,, -"Dorsolateral entorhinal cortex, layer 4",DLEnt4,92,42000,117,161,167,918,DLEnt,"Entorhinal area, lateral part, layer 4",ENTl4,,, -"Dorsolateral entorhinal cortex, layer 4/5",DLEnt4/5,312,42100,157,184,189,918,DLEnt,"Entorhinal area, lateral part, layer 4/5",ENTl4/5,,, -"Dorsolateral entorhinal cortex, layer 5",DLEnt5,139,42200,190,204,206,918,DLEnt,"Entorhinal area, lateral part, layer 5",ENTl5,,, -"Dorsolateral entorhinal cortex, layer 5/6",DLEnt5/6,387,42300,138,168,168,918,DLEnt,"Entorhinal area, lateral part, layer 5/6",ENTl5/6,,, -"Dorsolateral entorhinal cortex, layer 6a",DLEnt6a,28,42400,148,179,173,918,DLEnt,"Entorhinal area, lateral part, layer 6a",ENTl6a,,, -"Dorsolateral entorhinal cortex, layer 6b",DLEnt6b,60,42500,180,199,193,918,DLEnt,"Entorhinal area, lateral part, layer 6b",ENTl6b,,, -Dorsal intermediate entorhinal cortex,DIEnt,926,42700,128,255,146,909,ENT,"Entorhinal area, medial part, dorsal zone",ENTm,,, -"Dorsal intermediate entorhinal cortex, layer 1",DIEnt1,526,42800,0,104,87,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 1",ENTm1,,, -"Dorsal intermediate entorhinal cortex, layer 2",DIEnt2,543,42900,0,118,106,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 2",ENTm2,,, -"Dorsal intermediate entorhinal cortex, layer 2a",DIEnt2a,468,43000,1,118,106,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 2a",ENTm2a,,, -"Dorsal intermediate entorhinal cortex, layer 2b",DIEnt2b,508,43100,2,118,106,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 2b",ENTm2b,,, -"Dorsal intermediate entorhinal cortex, layer 2/3",DIEnt2/3,2408,43110,2,118,106,926,DIEnt,,,,, -"Dorsal intermediate entorhinal cortex, layer 3",DIEnt3,664,43200,36,122,111,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 3",ENTm3,,, -"Dorsal intermediate entorhinal cortex, layer 4",DIEnt4,712,43300,63,135,126,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 4",ENTm4,,, -"Dorsal intermediate entorhinal cortex, layer 5",DIEnt5,727,43400,64,135,126,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 5",ENTm5,,, -"Dorsal intermediate entorhinal cortex, layer 5/6",DIEnt5/6,550,43500,81,139,133,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 5/6",ENTm5/6,,, -"Dorsal intermediate entorhinal cortex, layer 6",DIEnt6,743,43600,108,156,152,926,DIEnt,"Entorhinal area, medial part, dorsal zone, layer 6",ENTm6,,, -Ventral intermediate entorhinal cortex,VIEnt,934,43700,128,255,147,909,ENT,"Entorhinal area, medial part, ventral zone",ENTmv,,, -"Ventral intermediate entorhinal cortex, layer 1",VIEnt1,259,43800,0,104,96,934,VIEnt,"Entorhinal area, medial part, ventral zone, layer 1",ENTmv1,,, -"Ventral intermediate entorhinal cortex, layer 2",VIEnt2,324,43900,0,117,111,934,VIEnt,"Entorhinal area, medial part, ventral zone, layer 2",ENTmv2,,, -"Ventral intermediate entorhinal cortex, layer 3",VIEnt3,371,44000,35,122,117,934,VIEnt,"Entorhinal area, medial part, ventral zone, layer 3",ENTmv3,,, -"Ventral intermediate entorhinal cortex, layer 4",VIEnt4,419,44100,62,135,133,934,VIEnt,"Entorhinal area, medial part, ventral zone, layer 4",ENTmv4,,, -"Ventral intermediate entorhinal cortex, layer 5/6",VIEnt5/6,1133,44200,80,140,140,934,VIEnt,"Entorhinal area, medial part, ventral zone, layer 5/6",ENTmv5/6,,, -Medial entorhinal cortex,MEnt,2159,44220,80,140,140,909,ENT,,,,, -"Medial entorhinal cortex, layer 1",MEnt1,2164,44230,80,140,140,2159,MEnt,,,,, -"Medial entorhinal cortex, layer 2",MEnt2,2444,44240,80,140,140,2159,MEnt,,,,, -"Medial entorhinal cortex, layer 3",MEnt3,2445,44250,80,140,140,2159,MEnt,,,,, -"Medial entorhinal cortex, layer 5",MEnt5,2446,44260,80,140,140,2159,MEnt,,,,, -"Medial entorhinal cortex, layer 6",MEnt6,2447,44270,80,140,140,2159,MEnt,,,,, -Caudomedial entothinal cortex,CEnt,2161,44280,80,140,140,909,ENT,,,,, -"Caudomedial entothinal cortex, layer 1",CEnt1,2448,44290,80,140,140,2161,CEnt,,,,, -"Caudomedial entothinal cortex, layer 2",CEnt2,2449,44291,80,140,140,2161,CEnt,,,,, -"Caudomedial entothinal cortex, layer 3",CEnt3,2450,44292,80,140,140,2161,CEnt,,,,, -"Caudomedial entothinal cortex, layer 5",CEnt5,2451,44293,80,140,140,2161,CEnt,,,,, -"Caudomedial entothinal cortex, layer 6",CEnt6,2452,44294,80,140,140,2161,CEnt,,,,, -Parasubiculum,PaS,843,44300,129,255,160,822,RHP,Parasubiculum,PAR,,, -"Parasubiculum, layer 1",PaS1,10693,44400,129,255,160,843,PaS,"Parasubiculum, layer 1",PAR1,,, -"Parasubiculum, layer 2",PaS2,10694,44500,129,255,160,843,PaS,"Parasubiculum, layer 2",PAR2,,, -"Parasubiculum, layer 3",PaS3,10695,44600,129,255,160,843,PaS,"Parasubiculum, layer 3",PAR3,,, -Postsubiculum,Post,1037,44700,128,255,160,822,RHP,Postsubiculum,POST,,, -"Postsubiculum, layer 1",Post1,10696,44800,128,255,160,1037,Post,"Postsubiculum, layer 1",POST1,,, -"Postsubiculum, layer 2",Post2,10697,44900,128,255,160,1037,Post,"Postsubiculum, layer 2",POST2,,, -"Postsubiculum, layer 3",Post3,10698,45000,128,255,160,1037,Post,"Postsubiculum, layer 3",POST3,,, -Presubiculum,PrS,1084,45100,129,255,161,822,RHP,Presubiculum,PRE,,, -"Presubiculum, layer 1",PrS1,10699,45200,129,255,161,1084,PrS,"Presubiculum, layer 1",PRE1,,, -"Presubiculum, layer 2",PrS2,10700,45300,129,255,161,1084,PrS,"Presubiculum, layer 2",PRE2,,, -"Presubiculum, layer 3",PrS3,10701,45400,129,255,161,1084,PrS,"Presubiculum, layer 3",PRE3,,, -Subiculum,SUB,502,45500,128,255,151,822,RHP,Subiculum,SUB,,, -Dorsal subiculum,DS,509,45600,129,255,151,502,SUB,"Subiculum, dorsal part",SUBd,,, -"Dorsal subiculum, molecular layer",DS-m,829,45700,129,255,151,509,DS,"Subiculum, dorsal part, molecular layer",SUBd-m,,, -"Dorsal subiculum, pyramidal layer",DS-sp,845,45800,100,230,121,509,DS,"Subiculum, dorsal part, pyramidal layer",SUBd-sp,,, -"Dorsal subiculum, stratum radiatum",DS-sr,837,45900,129,255,151,509,DS,"Subiculum, dorsal part, stratum radiatum",SUBd-sr,,, -Ventral subiculum,VS,518,46000,130,255,151,502,SUB,"Subiculum, ventral part",SUBv,,, -"Ventral subiculum, molecular layer",VS-m,853,46100,130,255,151,518,VS,"Subiculum, ventral part, molecular layer",SUBv-m,,, -"Ventral subiculum, pyramidal layer",VS-sp,870,46200,100,230,121,518,VS,"Subiculum, ventral part, pyramidal layer",SUBv-sp,,, -"Ventral subiculum, stratum radiatum",VS-sr,861,46300,130,255,151,518,VS,"Subiculum, ventral part, stratum radiatum",SUBv-sr,,, -"Subiculum, transition area",STr,2440,46310,130,255,151,502,SUB,"Subiculum, transition area",SUBt,,, -"Subiculum, transition area, molecular layer",STr-m,2441,46320,130,255,151,2440,STr,"Subiculum, transition area, molecular layer",SUBt-m,,, -"Subiculum, transition area, pyramidal layer",STr-sp,2442,46330,130,255,151,2440,STr,"Subiculum, transition area, pyramidal layer",SUBt-sp,,, -"Subiculum, transition area, stratum radiatum",STr-sr,2443,46340,130,255,151,2440,STr,"Subiculum, transition area, stratum radiatum",SUBt-sr,,, -Cortical subplate,CTXsp,703,46400,80,255,80,688,CTX,Cortical subplate,CTXsp,,, -"Layer 6b, isocortex",6b,16,46500,80,255,81,703,CTXsp,"Layer 6b, isocortex",6b,,, -Claustrum,Cl,583,46600,80,255,85,703,CTXsp,Claustrum,CLA,,, -Dorsal claustrum,DCl,2002,46610,80,255,85,583,Cl,,,,, -Ventral claustrum,VCl,2003,46620,80,255,85,583,Cl,,,,, -Endopiriform nucleus,En,942,46700,80,255,87,703,CTXsp,Endopiriform nucleus,EP,,, -Dorsal endopiriform nucleus,DEn ,952,46800,81,255,87,942,En,"Endopiriform nucleus, dorsal part",EPd,,, -Ventral endopiriform nucleus,VEn,966,46900,82,255,87,942,En,"Endopiriform nucleus, ventral part",EPv,,, -Intermediate endopiriform claustrum,IEn,2085,46910,82,255,87,942,En,,,,, -Retroendopiriform nucleus ,REn,2426,46920,82,255,87,942,En,,,,, -Lateral amygdaloid nucleus,La,131,47000,80,255,88,703,CTXsp,Lateral amygdalar nucleus,LA,,, -"Lateral amygdaloid nucleus, dorsolateral part",LaDL,2068,47010,80,255,88,131,La,,,,, -"Lateral amygdaloid nucleus, ventrolateral part",LaVL,2052,47020,80,255,88,131,La,,,,, -"Lateral amygdaloid nucleus, ventromedial part",LaVM,2060,47030,80,255,88,131,La,,,,, -Basolateral amygdalar nucleus,BL,295,47100,80,255,83,703,CTXsp,Basolateral amygdalar nucleus,BLA,,, -"Basolateral amygdaloid nucleus, anterior part",BLA,303,47200,81,255,83,295,BL,"Basolateral amygdalar nucleus, anterior part",BLAa,,, -"Basolateral amygdaloid nucleus, posterior part",BLP,311,47300,82,255,83,295,BL,"Basolateral amygdalar nucleus, posterior part",BLAp,,, -"Basolateral amygdaloid nucleus, ventral part",BLV,451,47400,73,255,83,295,BL,"Basolateral amygdalar nucleus, ventral part",BLAv,,, -Basomedial amygdalar nucleus,BM,319,47500,80,255,84,703,CTXsp,Basomedial amygdalar nucleus,BMA,,, -"Basomedial amygdaloid nucleus, anterior part",BMA,327,47600,81,255,84,319,BM,"Basomedial amygdalar nucleus, anterior part",BMAa,,, -"Basomedial amygdaloid nucleus, posterior part",BMP,334,47700,82,255,84,319,BM,"Basomedial amygdalar nucleus, posterior part",BMAp,,, -Amygdalohippocampal area,AHi,780,47800,80,255,89,703,CTXsp,Posterior amygdalar nucleus,PA,,, -"Amygdalohippocampal area, anterolateral part",AHiAL,2086,47810,80,255,89,780,AHi,,,,, -"Amygdalohippocampal area, posteromedial part",AHiPM,2087,47820,80,255,89,780,AHi,,,,, -"Amygdalohippocampal area, posterolateral",AHiPL,2088,47830,80,255,89,780,AHi,,,,, -Cerebral nuclei,CNU,623,47900,176,216,255,567,CH,Cerebral nuclei,CNU,,, -Striatum,STR,477,48000,160,200,232,623,CNU,Striatum,STR,,, -Striatum dorsal region,STRd,485,48100,160,216,232,477,STR,Striatum dorsal region,STRd,,, -Caudate Putamen ,CP,672,48200,160,216,248,485,STRd,Caudoputamen,CP,,, -Caudoputamen- rostral extreme,CPre,2376,48210,160,216,248,672,CP,,,,, -Caudoputamen- rostral,CPr,2491,48220,160,216,248,672,CP,,,,, -"Caudoputamen- rostral, medial","CPr, m",2294,48221,160,216,248,2491,CPr,,,,, -"Caudoputamen- rostral, intermediate, dorsal","CPr, imd",2295,48222,160,216,248,2491,CPr,,,,, -"Caudoputamen- rostral, intermediate, ventral","CPr, imv",2296,48223,160,216,248,2491,CPr,,,,, -"Caudoputamen- rostral, lateral","CPr, l",2497,48224,160,216,248,2491,CPr,,,,, -"Caudoputamen- rostral, lateral, lateral strip","CPr, l, ls",2395,48225,160,216,248,2497,"CPr, l",,,,, -"Caudoputamen- rostra,l lateral, ventromedial","CPr, l, vm",2297,48226,160,216,248,2497,"CPr, l",,,,, -Caudoputamen- intermediate,CPi,2492,48230,160,216,248,672,CP,,,,, -"Caudoputamen- intermediate, dorsomedial","CPi, dm",2498,48231,160,216,248,2492,CPi,,,,, -"Caudoputamen- intermediate, dorsomedial, dorsolateral","CPi, dm, dl",2299,48232,160,216,248,2498,"Cpi, dm",,,,, -"Caudoputamen- intermediate, dorsomedial, intermedial","CPi, dm, im",2298,48233,160,216,248,2498,"Cpi, dm",,,,, -"Caudoputamen- intermediate, dorsomedial, central dorsal","CPi, dm, cd",2374,48234,160,216,248,2498,"Cpi, dm",,,,, -"Caudoputamen- intermediate, dorsomedial, dorsal tip ","CPi, dm, dt",2380,48235,160,216,248,2498,"Cpi, dm",,,,, -"Caudoputamen- intermediate, ventromedial","CPi, vm",2500,48236,160,216,248,2492,CPi,,,,, -"Caudoputamen- intermediate, ventromedial, ventromedial","CPi, vm, vm",2302,48237,160,216,248,2500,"CPi, vm",,,,, -"Caudoputamen- intermediate, ventromedial, ventral","CPi, vm, v",2480,48238,160,216,248,2500,"CPi, vm",,,,, -"Caudoputamen- intermediate, ventromedial, central ventromedial","CPi, vm, cvm",2483,48239,160,216,248,2500,"CPi, vm",,,,, -"Caudoputamen- intermediate, dorsolateral, ","CPi, dl",2499,48240,160,216,248,2492,CPi,,,,, -"Caudoputamen- intermediate, dorsolateral, dorsal","CPi, dl, d",2300,48241,160,216,248,2499,"Cpi, dl",,,,, -"Caudoputamen- intermediate, dorsolateral, intermedial dorsal","CPi, dl, imd",2301,48242,160,216,248,2499,"Cpi, dl",,,,, -"Caudoputamen- intermediate, ventrolateral","CPi, vl",2501,48243,160,216,248,2492,CPi,,,,, -"Caudoputamen- intermediate, ventrolateral, intermedial ventral","CPi, vl, imv",2479,48244,160,216,248,2501,"CPi, vl",,,,, -"Caudoputamen- intermediate, ventrolateral, ventral","CPi, vl, v",2482,48245,160,216,248,2501,"CPi, vl",,,,, -"Caudoputamen- intermediate, ventrolateral, ventral tip","CPi, vl, vt",2481,48246,160,216,248,2501,"CPi, vl",,,,, -"Caudoputamen- intermediate, ventrolateral, central ventrolateral","CPi, vl, cvl",2370,48247,160,216,248,2501,"CPi, vl",,,,, -Caudoputamen- caudal,CPc,2496,48250,160,216,248,672,CP,,,,, -"Caudoputamen- caudal, dorsal","CPc, d",2493,48251,160,216,248,2496,CPc,,,,, -"Caudoputamen- caudal, dorsal, dorsomedial","CPc, d, dm",2484,48252,160,216,248,2493,"CPc, d",,,,, -"Caudoputamen- caudal, dorsal, dorsolateral","CPc, d, dl",2485,48253,160,216,248,2493,"CPc, d",,,,, -"Caudoputamen- caudal, dorsal, ventromedial","CPc, d, vm",2486,48254,160,216,248,2493,"CPc, d",,,,, -"Caudoputamen- caudal, intermediate","CPc, i",2494,48255,160,216,248,2496,CPc,,,,, -"Caudoputamen- caudal, intermediate, dorsal","CPc, i, d",2487,48256,160,216,248,2494,"CPc, i",,,,, -"Caudoputamen- caudal, intermediate, ventromedial","CPc, i, vm",2489,48257,160,216,248,2494,"CPc, i",,,,, -"Caudoputamen- caudal, intermediate, ventrolateral","CPc, i, vl",2488,48258,160,216,248,2494,"CPc, i",,,,, -"Caudoputamen- caudal, ventral","CPc, v",2490,48259,160,216,248,2496,CPc,,,,, -Caudoputamen- caudal extreme,CPce,2495,48260,160,216,248,672,CP,,,,, -Lateral stripe of the striatum ,LSS,2001,48270,160,216,248,477,STR,,,,, -Amygdalostriatal transition area,ASt ,2050,48280,160,216,248,477,STR,,,,, -Striatum ventral region,STRv,493,48300,160,232,232,477,STR,Striatum ventral region,STRv,,, -Accumbens nucleus,Acb,56,48400,160,232,224,493,STRv,Nucleus accumbens,ACB,,, -"Accumbens nucleus, core region",AcbC,2074,48410,160,232,224,56,Acb,,,,, -"Accumbens nucleus, shell region",AcbSh,2006,48420,160,232,224,56,Acb,,,,, -"Lateral accumbens, shell region",LAcbSh,2007,48430,160,232,224,56,Acb,,,,, -Interstitial nucleus of the posterior limb of the anterior commissure,IPAC,998,48500,160,228,224,493,STRv,Fundus of striatum,FS,,, -"Interstitial nucleus of the posterior limb of the anterior commissure, medial part",IPACM,2012,48510,160,228,224,998,IPAC,,,,, -"Interstitial nucleus of the posterior limb of the anterior commissure, lateral part",IPACL,2372,48520,160,228,224,998,IPAC,,,,, -Olfactory tubercle,Tu,754,48600,160,224,224,493,STRv,Olfactory tubercle,OT,,, -Island of Calleja,ICj,481,48700,160,224,224,754,Tu,Islands of Calleja,isl,,, -"Island of Calleja, major island",ICjM,489,48800,160,224,224,754,Tu,Major island of Calleja,islm,,, -Olfactory tubercle 1 ,Tu1,458,49000,160,224,224,754,Tu,"Olfactory tubercle, molecular layer",OT1,,, -Olfactory tubercle 2,Tu2,465,49100,160,224,224,754,Tu,"Olfactory tubercle, pyramidal layer",OT2,,, -Olfactory tubercle 3,Tu3,473,49200,160,224,224,754,Tu,"Olfactory tubercle, polymorph layer",OT3,,, -Navicular nucleus of the basal forebrain,Nv,2018,49210,160,224,224,754,Tu,,,,, -Lateral septal complex,LSX,275,49300,160,239,232,477,STR,Lateral septal complex,LSX,,, -Lateral septal nucleus,LS,242,49400,153,239,232,275,LSX,Lateral septal nucleus,LS,,, -"Lateral septal nucleus, dorsal part",LSD,250,49500,153,237,232,242,LS,"Lateral septal nucleus, caudal (caudodorsal) part",LSc,,, -"Lateral septal nucleus, intermediate part",LSI,258,49600,153,237,233,242,LS,"Lateral septal nucleus, rostral (rostroventral) part",LSr,,, -"Lateral septal nucleus, ventral part",LSV,266,49700,153,237,234,242,LS,"Lateral septal nucleus, ventral part",LSv,,, -Zona limitans,ZL,2008,49710,153,237,234,242,LS,,,,, -Septofimbrial nucleus,SFi ,310,49800,147,239,232,275,LSX,Septofimbrial nucleus,SF,,, -Septohippocampal nucleus,SHi ,333,49900,139,239,232,275,LSX,Septohippocampal nucleus,SH,,, -Septohypothalamic nucleus,SHy ,2009,49910,139,239,232,275,LSX,,,,, -Striatum-like amygdalar nuclei,sAMY,278,50000,160,208,232,477,STR,Striatum-like amygdalar nuclei,sAMY,,, -Anterior amygdaloid area,AA,23,50100,186,208,248,278,sAMY,Anterior amygdalar area,AAA,,, -Bed nucleus of the accessory olfactory tract,BAOT,292,50200,160,208,232,278,sAMY,Bed nucleus of the accessory olfactory tract,BA,,, -Central amygdalar nucleus,Ce,536,50300,171,208,248,278,sAMY,Central amygdalar nucleus,CEA,,, -"Central amygdaloid nucleus, capsular part",CeC,544,50400,171,209,248,536,Ce,"Central amygdalar nucleus, capsular part",CEAc,,, -"Central amygdaloid nucleus, lateral part",CeL,551,50500,171,209,249,536,Ce,"Central amygdalar nucleus, lateral part",CEAl,,, -"Central amygdaloid nucleus, medial part",CeM,559,50600,171,209,250,536,Ce,"Central amygdalar nucleus, medial part",CEAm,,, -Intercalated nuclei of the amygdala,I,1105,50700,184,208,248,278,sAMY,Intercalated amygdalar nucleus,IA,,, -"Intercalated amygdalar nucleus, main part",IM,2375,50710,184,208,248,1105,I,,,,, -Medial amygdaloid nucleus,Me,403,50800,176,208,248,278,sAMY,Medial amygdalar nucleus,MEA,,, -"Medial amygdaloid nucleus, anterodorsal part",MeAD,411,50900,176,209,248,403,Me,"Medial amygdalar nucleus, anterodorsal part",MEAad,,, -"Medial amygdaloid nucleus, anterventral part",MeAV,418,51000,176,208,249,403,Me,"Medial amygdalar nucleus, anteroventral part",MEAav,,, -"Medial amygdaloid nucleus, posterodorsal part",MePD,426,51100,176,208,250,403,Me,"Medial amygdalar nucleus, posterodorsal part",MEApd,,, -,,,,,,,,,"Medial amygdalar nucleus, posterodorsal part, sublayer a",MEApd-a,,, -,,,,,,,,,"Medial amygdalar nucleus, posterodorsal part, sublayer b",MEApd-b,,, -,,,,,,,,,"Medial amygdalar nucleus, posterodorsal part, sublayer c",MEApd-c,,, -"Medial amygdaloid nucleus, posteroventral part",MePV ,435,51500,176,208,251,403,Me,"Medial amygdalar nucleus, posteroventral part",MEApv,,, -Pallidum,PAL,803,51600,160,200,176,623,CNU,Pallidum,PAL,,, -,,,,,,,,,"Pallidum, dorsal region",PALd,,, -Globus pallidus,GP,1022,51800,160,216,177,803,PAL,"Globus pallidus, external segment",GPe,,, -Entopeduncular nucleus,EP,1031,51900,160,216,178,803,PAL,"Globus pallidus, internal segment",GPi,,, -Ventral pallidum,VP,835,52000,160,208,176,803,PAL,"Pallidum, ventral region",PALv,,, -Substantia innominata,SI,342,52100,152,208,176,803,PAL,Substantia innominata,SI,,, -"Substantia innominata, basal part",SIB,2371,52110,152,208,176,342,SI,,,,, -Extension of the amygdala,EA,2027,52120,152,208,176,342,SI,,,,, -Cell bridges of the ventral striatum,CB,2013,52130,160,228,224,342,SI,,,,, -Magnocellular nucleus,MCPO,298,52200,162,208,176,803,PAL,Magnocellular nucleus,MA,,, -Basal nucleus (Meynert),B,2028,52210,162,208,176,803,PAL,,,,, -"Pallidum, medial region",PALm,826,52300,160,224,176,803,PAL,"Pallidum, medial region",PALm,,, -Medial septal complex,MSC,904,52400,160,224,176,826,PALm,Medial septal complex,MSC,,, -Medial septal nucleus,MS,564,52500,118,224,176,904,MSC,Medial septal nucleus,MS,,, -Lambdoid septal zone,Ld,2005,52510,118,224,176,564,MS,,,,, -Diagonal band nucleus,NDB,2280,52600,138,224,176,904,MSC,,,,, -Nucleus of the vertical limb of the diagonal band,VDB,596,52610,138,224,176,2280,NDB,,,,, -Lateral nucleus of the diagnoal band,LDB,2293,52620,138,224,176,2280,NDB,,,,, -Nucleus of the horizontal limb of the diagonal band,HDB,2004,52630,138,224,176,2280,NDB,,,,, -Triangular septal nucleus,TS,581,52700,128,224,176,826,PALm,Triangular nucleus of septum,TRS,,, -"Pallidum, caudal region",PALc,809,52800,160,190,176,803,PAL,"Pallidum, caudal region",PALc,,, -Nucleus of stria medullaris,SM,2308,52810,160,190,176,809,PALc,,,,, -Bed nuclei of the stria terminalis,ST,351,52900,160,190,160,809,PALc,Bed nuclei of the stria terminalis,BST,,, -"Bed nuclei of the stria terminalis, anterior division",STa,359,53000,160,190,161,351,ST,"Bed nuclei of the stria terminalis, anterior division",BSTa,,, -"Bed nucleus of the stria terminalis, medial division, anterolateral part",STMAL,537,53100,160,190,161,359,STa,"Bed nuclei of the stria terminalis, anterior division, anterolateral area",BSTal,,, -"Bed nucleus of the stria terminalis, medial division, anterior part",STMA,498,53200,160,190,161,359,STa,"Bed nuclei of the stria terminalis, anterior division, anteromedial area",BSTam,,, -,,,,,,,,,"Bed nuclei of the stria terminalis, anterior division, dorsomedial nucleus",BSTdm,,, -"Bed nuclei of the stria terminalis, fusiform nucleus",Fu,513,53400,160,190,161,359,STa,"Bed nuclei of the stria terminalis, anterior division, fusiform nucleus",BSTfu,,, -"Bed nucleus of the stria terminalis, lateral division, juxtacapsular part",STLJ,546,53500,160,190,161,359,STa,"Bed nuclei of the stria terminalis, anterior division, juxtacapsular nucleus",BSTju,,, -,,,,,,,,,"Bed nuclei of the stria terminalis, anterior division, magnocellular nucleus",BSTmg,,, -"Bed nucleus of the stria terminalis, lateral division, dorsal part",STLD,554,53700,160,190,161,359,STa,"Bed nuclei of the stria terminalis, anterior division, oval nucleus",BSTov,,, -,,,,,,,,,"Bed nuclei of the stria terminalis, anterior division, rhomboid nucleus",BSTrh,,, -"Bed nucleus of the stria terminalis, medial division, posterolateral part",STMPL,529,53900,160,190,161,359,STa,"Bed nuclei of the stria terminalis, anterior division, ventral nucleus",BSTv,,, -"Bed nuclei of the stria terminalis, medial division",STm,2359,53910,160,190,161,351,ST,"Bed nuclei of the stria terminalis, medial division",BSTm,,, -"Bed nucleus of the stria terminalis, medial division, ventral part",STMV,2010,53920,160,190,161,2359,STm,,,,, -"Bed nucleus of the stria terminalis, medial division, posteromedial part",STMPM,2025,53930,160,190,168,2359,STm,,,,, -"Bed nuclei of the stria terminalis, posterior division",STp,367,54000,160,190,168,351,ST,"Bed nuclei of the stria terminalis, posterior division",BSTp,,, -,,,,,,,,,"Bed nuclei of the stria terminalis, posterior division, dorsal nucleus",BSTd,,, -"Bed nucleus of the stria terminalis, medial division, anteromedial part",STMAM,578,54200,160,190,168,367,STp,"Bed nuclei of the stria terminalis, posterior division, principal nucleus",BSTpr,,, -"Bed nucleus of the stria terminalis, medial division, posterointermediate part",STMPI,585,54300,160,190,168,367,STp,"Bed nuclei of the stria terminalis, posterior division, interfascicular nucleus",BSTif,,, -,,,,,,,,,"Bed nuclei of the stria terminalis, posterior division, transverse nucleus",BSTtr,,, -,,,,,,,,,"Bed nuclei of the stria terminalis, posterior division, strial extension",BSTse,,, -"Bed nuclei of the stria terminialis, lateral division",STl,2360,54510,160,190,168,351,ST,"Bed nuclei of the stria terminialis, lateral division",BSTl,,, -"Bed nuclus of the stria terminalis, lateral division, posterior part",STLP,2015,54520,160,190,168,2360,STl,,,,, -"Bed nucleus of the stria terminalis, lateral division, ventral part ",STLV,2014,54530,160,190,168,2360,STl,,,,, -"Bed nucleus of the stria terminalis, lateral division, intermediate part",STLI,2022,54540,160,190,168,2360,STl,,,,, -"Bed nucleus of the stria terminalis, intraamygdaloid",STIA,2049,54550,160,190,168,351,ST,,,,, -Bed nucleus of the anterior commissure,BAC,287,54600,160,190,152,809,PALc,Bed nucleus of the anterior commissure,BAC,,, -Cerebellum,CBL,512,54700,240,255,160,8,grey,Cerebellum,CB,,, -Cerebellar cortex,CBX,528,54800,240,240,128,512,CBL,Cerebellar cortex,CBX,,, -Vermal regions,VERM,645,54900,240,242,128,528,CBX,Vermal regions,VERM,,, -Lobule 1 of the cerebellar vermis,1Cb,912,55000,240,242,128,645,VERM,Lingula (I),LING,,, -"Lobule 1 of the cerebellar vermis, molecular layer",1Cb-mo,10707,55100,240,242,128,912,1Cb,"Lingula (I), molecular layer",LINGmo,,, -,,,,,,,,,"Lingula (I), Purkinje layer",LINGpu,,, -"Lobule 1 of the cerebellar vermis, granular layer",1Cb-gr,10705,55300,227,219,97,912,1Cb,"Lingula (I), granular layer",LINGgr,,, -,,,,,,,,,Central lobule,CENT,,, -Lobule 2 of the cerebellar vermis,2Cb,976,55500,240,242,128,645,VERM,Lobule II,CENT2,,, -"Lobule 2 of the cerebellar vermis, molecular layer",2Cb-mo,10710,55600,240,242,128,976,2Cb,"Lobule II, molecular layer",CENT2mo,,, -,,,,,,,,,"Lobule II, Purkinje layer",CENT2pu,,, -"Lobule 2 of the cerebellar vermis, granular layer",2Cb-gr,10708,55800,227,219,97,976,2Cb,"Lobule II, granular layer",CENT2gr,,, -Lobule 3 of the cerebellar vermis,3Cb,984,55900,240,242,128,645,VERM,Lobule III,CENT3,,, -"Lobule 3 of the cerebellar vermis, molecular layer",3Cb-mo,10713,56000,240,242,128,984,3Cb,"Lobule III, molecular layer",CENT3mo,,, -,,,,,,,,,"Lobule III, Purkinje layer",CENT3pu,,, -"Lobule 3 of the cerebellar vermis, granular layer",3Cb-gr,10711,56200,227,219,97,984,3Cb,"Lobule III, granular layer",CENT3gr,,, -Culmen,CUL,928,56300,240,242,128,645,VERM,Culmen,CUL,,, -Lobule 4 of the cerebellar vermis,4Cb,992,56400,240,242,128,928,CUL,Lobule IV,CUL4,,, -,,,,,,,,,"Lobule IV, molecular layer",CUL4mo,,, -,,,,,,,,,"Lobule IV, Purkinje layer",CUL4pu,,, -,,,,,,,,,"Lobule IV, granular layer",CUL4gr,,, -Lobule 5 of the cerebellar vermis,5Cb,1001,56800,240,242,128,928,CUL,Lobule V,CUL5,,, -,,,,,,,,,"Lobule V, molecular layer",CUL5mo,,, -,,,,,,,,,"Lobule V, Purkinje layer",CUL5pu,,, -,,,,,,,,,"Lobule V, granular layer",CUL5gr,,, -Lobules 4 and 5 of the cerebellar vermis,4/5Cb,1091,57200,240,242,128,928,CUL,Lobules IV-V,CUL4_5,,, -"Lobules 4 and 5 of the cerebellar vermis, molecular layer",4/5Cb-mo,10722,57300,240,242,128,1091,4/5Cb,"Lobules IV-V, molecular layer",CUL4_5mo,,, -,,,,,,,,,"Lobules IV-V, Purkinje layer",CUL4_5pu,,, -"Lobules 4 and 5 of the cerebellar vermis, granular layer",4/5Cb-gr,10720,57500,227,219,97,1091,4/5Cb,"Lobules IV-V, granular layer",CUL4_5gr,,, -Lobule 6 of the cerebellar vermis,6Cb,936,57600,240,242,128,645,VERM,Declive (VI),DEC,,, -"Lobule 6 of the cerebellar vermis, molecular layer",6Cb-mo,10725,57700,240,242,128,936,6Cb,"Declive (VI), molecular layer",DECmo,,, -,,,,,,,,,"Declive (VI), Purkinje layer",DECpu,,, -"Lobule 6 of the cerebellar vermis, granular layer",6Cb-gr,10723,57900,227,219,97,936,6Cb,"Declive (VI), granular layer",DECgr,,, -Lobule 7 of the cerebellar vermis,7Cb,944,58000,240,242,128,645,VERM,Folium-tuber vermis (VII),FOTU,,, -"Lobule 7 of the cerebellar vermis, molecular layer",7Cb-mo,10728,58100,240,242,128,944,7Cb,"Folium-tuber vermis (VII), molecular layer",FOTUmo,,, -,,,,,,,,,"Folium-tuber vermis (VII), Purkinje layer",FOTUpu,,, -"Lobule 7 of the cerebellar vermis, granular layer",7Cb-gr,10726,58300,227,219,97,944,7Cb,"Folium-tuber vermis (VII), granular layer",FOTUgr,,, -Lobule 8 of the cerebellar vermis,8Cb,951,58400,240,242,128,645,VERM,Pyramus (VIII),PYR,,, -"Lobule 8 of the cerebellar vermis, molecular layer",8Cb-mo,10731,58500,240,242,128,951,8Cb,"Pyramus (VIII), molecular layer",PYRmo,,, -,,,,,,,,,"Pyramus (VIII), Purkinje layer",PYRpu,,, -"Lobule 8 of the cerebellar vermis, granular layer",8Cb-gr,10729,58700,227,219,97,951,8Cb,"Pyramus (VIII), granular layer",PYRgr,,, -Lobule 9 of the cerebellar vermis,9Cb,957,58800,240,242,128,645,VERM,Uvula (IX),UVU,,, -"Lobule 9 of the cerebellar vermis, molecular layer",9Cb-mo,10734,58900,240,242,128,957,9Cb,"Uvula (IX), molecular layer",UVUmo,,, -,,,,,,,,,"Uvula (IX), Purkinje layer",UVUpu,,, -Lobule 9 of the cerebellar vermis,9Cb-gr,10732,59100,227,219,97,957,9Cb,"Uvula (IX), granular layer",UVUgr,,, -Lobule 10 of the cerebellar vermis,10Cb,968,59200,240,242,128,645,VERM,Nodulus (X),NOD,,, -"Lobule 10 of the cerebellar vermis, molecular layer",10Cb-mo,10737,59300,240,242,128,968,10Cb,"Nodulus (X), molecular layer",NODmo,,, -,,,,,,,,,"Nodulus (X), Purkinje layer",NODpu,,, -"Lobule 10 of the cerebellar vermis, granular layer",10Cb-gr,10735,59500,227,219,97,968,10Cb,"Nodulus (X), granular layer",NODgr,,, -Hemispheric regions,HEM,1073,59600,240,241,128,528,CBX,Hemispheric regions,HEM,,, -Simple lobule,Sim,1007,59700,240,241,128,1073,HEM,Simple lobule,SIM,,, -"Simple lobule, molecular layer",Sim-mo,10674,59800,240,241,128,1007,Sim,"Simple lobule, molecular layer",SIMmo,,, -,,,,,,,,,"Simple lobule, Purkinje layer",SIMpu,,, -"Simple lobule, granular layer",Sim-gr,10672,60000,227,219,97,1007,Sim,"Simple lobule, granular layer",SIMgr,,, -,,,,,,,,,Ansiform lobule,AN,,, -Crus 1 of the ansiform lobule,Crus1,1056,60200,240,241,128,1073,HEM,Crus 1,ANcr1,,, -"Crus 1 of the ansiform lobule, molecular layer",Crus1-mo,10677,60300,240,241,128,1056,Crus1,"Crus 1, molecular layer",ANcr1mo,,, -,,,,,,,,,"Crus 1, Purkinje layer",ANcr1pu,,, -"Crus 1 of the ansiform lobule, granular layer",Crus1-gr,10675,60500,227,219,97,1056,Crus1,"Crus 1, granular layer",ANcr1gr,,, -Crus 2 of the ansiform lobule,Crus2,1064,60600,240,241,128,1073,HEM,Crus 2,ANcr2,,, -"Crus 2 of the ansiform lobule, molecular layer",Crus2-mo,10680,60700,240,241,128,1064,Crus2,"Crus 2, molecular layer",ANcr2mo,,, -,,,,,,,,,"Crus 2, Purkinje layer",ANcr2pu,,, -"Crus 2 of the ansiform lobule, granular layer",Crus2-gr,10678,60900,227,219,97,1064,Crus2,"Crus 2, granular layer",ANcr2gr,,, -Paramedian lobule,PM,1025,61000,240,241,128,1073,HEM,Paramedian lobule,PRM,,, -"Paramedian lobule, molecular layer",PM-mo,10683,61100,240,241,128,1025,PM,"Paramedian lobule, molecular layer",PRMmo,,, -,,,,,,,,,"Paramedian lobule, Purkinje layer",PRMpu,,, -"Paramedian lobule, granular layer",PM-gr,10681,61300,227,219,97,1025,PM,"Paramedian lobule, granular layer",PRMgr,,, -Copula of the pyramis,Cop,1033,61400,240,241,128,1073,HEM,Copula pyramidis,COPY,,, -"Copula of the pyramis, molecular layer",Cop-mo,10686,61500,240,241,128,1033,Cop,"Copula pyramidis, molecular layer",COPYmo,,, -,,,,,,,,,"Copula pyramidis, Purkinje layer",COPYpu,,, -"Copula of the pyramis, granular layer",Cop-gr,10684,61700,227,219,97,1033,Cop,"Copula pyramidis, granular layer",COPYgr,,, -Paraflocculus,PFl,1041,61800,240,241,128,1073,HEM,Paraflocculus,PFL,,, -"Paraflocculus, molecular layer",PFl-mo,10689,61900,240,241,128,1041,PFl,"Paraflocculus, molecular layer",PFLmo,,, -,,,,,,,,,"Paraflocculus, Purkinje layer",PFLpu,,, -"Paraflocculus, granular layer",PFl-gr,10687,62100,227,219,97,1041,PFl,"Paraflocculus, granular layer",PFLgr,,, -Flocculus,Fl,1049,62200,240,241,128,1073,HEM,Flocculus,FL,,, -"Flocculus, molecular layer",Fl-mo,10692,62300,240,241,128,1049,Fl,"Flocculus, molecular layer",FLmo,,, -,,,,,,,,,"Flocculus, Purkinje layer",FLpu,,, -"Flocculus, granular layer",Fl-gr,10690,62500,227,219,97,1049,Fl,"Flocculus, granular layer",FLgr,,, -,,,,,,,,,"Cerebellar cortex, molecular layer",CBXmo,,, -,,,,,,,,,"Cerebellar cortex, Purkinje layer",CBXpu,,, -,,,,,,,,,"Cerebellar cortex, granular layer",CBXgr,,, -Cerebellar nuclei,CBN,519,62900,240,240,144,512,CBL,Cerebellar nuclei,CBN,,, -Medial cerebellar nucleus,Med,989,63000,240,240,82,519,CBN,Fastigial nucleus,FN,,, -"Medial cerebellar nucleus, dorsolateral protuberance",MedDL,2244,63010,240,240,82,989,Med,,,,, -"Medial cerebellar nucleus, lateral part",MedL,2245,63020,240,240,82,989,Med,,,,, -Interposed cerebellar nucleus,Int,91,63100,240,240,82,519,CBN,Interposed nucleus,IP,,, -"Interposed cerebellar nucleus, anterior part",IntA,2239,63110,240,240,82,91,Int,,,,, -"Interposed cerebellar nucleus, dorsolateral hump",IntDL,2240,63120,240,240,82,91,Int,,,,, -"Interposed cerebellar nucleus, posterior part",IntP,2241,63130,240,240,82,91,Int,,,,, -"Interposed cerebellar nucleus, posterior parvicellular",IntPPC,2242,63140,240,240,82,91,Int,,,,, -Dentate nucleus ,DN,2281,63200,240,240,82,519,CBN,,,,, -Lateral (dentate) cerebellar nucleus,Lat,846,63210,240,240,82,2281,DN,,,,, -"Lateral cerebellar nucleus, parvicellular part",LatPC,2247,63220,240,240,82,2281,DN,,,,, -Brain stem,BS,343,63300,144,96,128,8,grey,Brain stem,BS,,, -Interbrain,IB,1129,63400,255,95,95,343,BS,Interbrain,IB,,, -Thalamus,TH,549,63500,255,112,128,1129,IB,Thalamus,TH,,, -Periventricular gray ,PVG,2414,63510,255,112,128,549,TH,Periventricular gray ,PVG,,, -"Thalamus, sensory-motor cortex related",DORsm,864,63600,255,128,176,549,TH,"Thalamus, sensory-motor cortex related",DORsm,,, -Ethmoid thalamic nucleus,Eth,2115,63610,255,131,130,864,DORsm,,,,, -Retroethmoid nucleus,REth,2116,63620,255,131,130,864,DORsm,,,,, -Scaphoid thalamic nucleus,Sc,2117,63630,255,131,130,864,DORsm,,,,, -Posterior intralaminar thalamic nucleus,PIL,2120,63640,255,108,144,864,DORsm,,,,, -Ventral group thalamic nucleus,VENT,637,63700,255,108,160,864,DORsm,Ventral group of the dorsal thalamus,VENT,,, -Ventrolateral thalamic nucleus,VL,629,63800,255,108,161,637,VENT,Ventral anterior-lateral complex of the thalamus,VAL,,, -Ventral anterior thalamic nucleus,VA,2316,63810,255,108,161,637,VENT,,,,, -Ventromedial thalamic nucleus,VM,685,63900,255,108,162,637,VENT,Ventral medial nucleus of the thalamus,VM,,, -Ventral posterior thalamic nucleus,VP,709,64000,255,108,144,637,VENT,Ventral posterior complex of the thalamus,VP,,, -Ventral posterolateral thalamic nucleus,VPL,718,64100,255,108,145,709,VP,Ventral posterolateral nucleus of the thalamus,VPL,,, -Ventral posteromedial thalamic nucleus,VPM,733,64200,255,108,147,709,VP,Ventral posteromedial nucleus of the thalamus,VPM,,, -"Ventral posteromedial nucleus of the thalamus, dorsal part",VPMd,2362,64210,255,108,147,733,VPM,"Ventral posteromedial nucleus of the thalamus, dorsal part",VPMd,,, -"Ventral posteromedial nucleus of the thalamus, ventral part",VPMv,2363,64220,255,108,147,733,VPM,"Ventral posteromedial nucleus of the thalamus, ventral part",VPMv,,, -"Ventral posterior nucleus of the thalamus, parvicellular",VPPC,2361,64230,255,108,147,709,VP,,,,, -,,,,,,,,,"Ventral posterolateral nucleus of the thalamus, parvicellular part",VPLpc,,709,VP -,,,,,,,,,"Ventral posteromedial nucleus of the thalamus, parvicellular part",VPMpc,,733,VPM -Subparafascicular thalamic nucleus,SPF,406,64500,255,112,165,864,DORsm,Subparafascicular nucleus,SPF,,, -,,,,,,,,,"Subparafascicular nucleus, magnocellular part",SPFm,,, -"Subparafascicular thalamic nucleus, parvicellular part",SPFPC,422,64700,255,110,165,406,SPF,"Subparafascicular nucleus, parvicellular part",SPFp,,, -,,,,,,,,,Subparafascicular area,SPA,,, -Peripeduncular nucleus,PP,1044,64900,255,112,163,864,DORsm,Peripeduncular nucleus,PP,,, -Subbrachial nucleus,SubB,2158,64910,255,112,160,864,DORsm,,,,, -Geniculate group of the thalamus,GENd,1008,65000,255,112,160,864,DORsm,"Geniculate group, dorsal thalamus",GENd,,, -Medial geniculate nucleus,MG,475,65100,255,112,162,1008,GENd,Medial geniculate complex,MG,,, -"Medial geniculate nucleus, dorsal part",MGD,1072,65200,255,112,162,475,MG,"Medial geniculate complex, dorsal part",MGd,,, -"Medial geniculate nucleus, ventral part",MGV,1079,65300,255,112,162,475,MG,"Medial geniculate complex, ventral part",MGv,,, -"Medial geniculate nucleus, medial part",MGM,1088,65400,255,112,162,475,MG,"Medial geniculate complex, medial part",MGm,,, -Marginal zone of the medial geniculate,MZMG,2126,65410,255,112,162,475,MG,,,,, -Dorsal lateral geniculate nucleus,DLG,170,65500,255,112,161,1008,GENd,Dorsal part of the lateral geniculate complex,LGd,,, -"Thalamus, polymodal association cortex related",DORpm,856,65600,255,136,176,549,TH,"Thalamus, polymodal association cortex related",DORpm,,, -Lateral group of the dorsal thalamus,LAT,138,65700,255,130,130,856,DORpm,Lateral group of the dorsal thalamus,LAT,,, -Lateral posterior thalamic nucleus,LP,218,65800,255,135,130,138,LAT,Lateral posterior nucleus of the thalamus,LP,,, -"Lateral posterior thalamic nucleus, mediorostral part",LPMR,2069,65810,255,135,130,218,LP,,,,, -"Lateral posterior thalamic nucleus, mediocaudal part",LPMC,2070,65820,255,135,130,218,LP,,,,, -"Lateral posterior thalamic nucleus, laterorostral part",LPLR,2071,65830,255,135,130,218,LP,,,,, -"Lateral posterior thalamic nucleus, laterocaudal part",LPLC,2127,65840,255,135,130,218,LP,,,,, -Intramedullary thalamic area,IMA,2094,65850,255,135,130,138,LAT,,,,, -Posterior thalamic nuclear group,Po,1020,65900,255,134,130,138,LAT,Posterior complex of the thalamus,PO,,, -Angular thalamic nucleus,Ang,2055,65910,255,134,130,1020,Po,,,,, -"Posterior thalamic nuclear group, triangular part",PoT,2128,65920,255,134,130,1020,Po,,,,, -Posterior limitans thalamic nucleus,PLi,1029,66000,255,133,130,138,LAT,Posterior limiting nucleus of the thalamus,POL,,, -Suprageniculate thalamic nucleus,SG,325,66100,255,131,130,138,LAT,Suprageniculate nucleus,SGN,,, -Anterior group of the dorsal thalamus,ATN,239,66200,255,136,136,856,DORpm,Anterior group of the dorsal thalamus,ATN,,, -Anteroventral thalamic nucleus,AV,255,66300,255,136,133,239,ATN,Anteroventral nucleus of thalamus,AV,,, -"Anteroventral thalamic nucleus, ventrolateral part",AVVL,2035,66310,255,136,133,255,AV,,,,, -"Anterovent thalamic nucleus, dorsomedial part",AVDM,2036,66320,255,136,133,255,AV,,,,, -Anteromedial thalamic nucleus,AM,1096,66400,255,136,134,239,ATN,Anteromedial nucleus,AM,,, -,,,,,,,,,"Anteromedial nucleus, dorsal part",AMd,,, -"Anteromedial thalamic nucleus, ventral part",AMV,1104,66600,255,136,134,1096,AM,"Anteromedial nucleus, ventral part",AMv,,, -Anterodorsal thalamic nucleus,AD,64,66700,255,136,135,239,ATN,Anterodorsal nucleus,AD,,, -Interanteromedial thalamic nucleus,IAM,1120,66800,255,136,129,239,ATN,Interanteromedial nucleus of the thalamus,IAM,,, -Interanterodorsal thalamic nucleus,IAD,1113,66900,255,144,159,239,ATN,Interanterodorsal nucleus of the thalamus,IAD,,, -Lateral dorsal nucleus of thalamus,LD,2282,67000,255,136,128,239,ATN,,,,, -"Laterodorsal thalamic nucleus, ventrolateral part",LDVL,155,67010,255,136,128,2282,LD,,,,, -"Laterodorsal thalamic nucleus, dorsomedial part",LDDM,2046,67020,255,136,128,2282,LD,,,,, -Medial group of the dorsal thalamus,MED,444,67100,255,144,176,856,DORpm,Medial group of the dorsal thalamus,MED,,, -Intermediodorsal thalamic nucleus,IMD,59,67200,255,144,164,444,MED,Intermediodorsal nucleus of the thalamus,IMD,,, -Posteromedian thalamic nucleus,PoMn,2091,67210,255,144,164,444,MED,,,,, -Mediodorsal thalamic nucleus,MD,362,67300,255,144,163,444,MED,Mediodorsal nucleus of thalamus,MD,,, -"Mediodorsal thalamic nucleus, central part",MDC,617,67400,255,144,163,362,MD,"Mediodorsal nucleus of the thalamus, central part",MDc,,, -"Mediodorsal thalamic nucleus, lateral part ",MDL,626,67500,255,144,163,362,MD,"Mediodorsal nucleus of the thalamus, lateral part",MDl,,, -"Mediodorsal thalamic nucleus, medial part",MDM,636,67600,255,144,163,362,MD,"Mediodorsal nucleus of the thalamus, medial part",MDm,,, -Submedius thalamic nucleus,Sub,366,67700,255,144,161,444,MED,Submedial nucleus of the thalamus,SMT,,, -"Submedius thalamic nucleus, dorsal part",SubD,2377,67710,255,144,161,366,Sub,,,,, -"Submedius thalamic nucleus, ventral part",SubV,2378,67720,255,144,161,366,Sub,,,,, -,,,,,,,,,Perireunensis nucleus,PR,,, -Midline group of the dorsal thalamus,MTN,571,67900,255,134,134,856,DORpm,Midline group of the dorsal thalamus,MTN,,, -Paraventricular nucleus of the thalamus,PVT,149,68000,255,133,133,571,MTN,Paraventricular nucleus of the thalamus,PVT,,, -"Paraventricular thalamic nucleus, anterior part",PV,2089,68010,255,133,133,149,PVT,,,,, -"Paraventricular thalamic nucleus, posterior part",PVP,2090,68020,255,133,133,149,PVT,,,,, -Parataenial thalamic nucleus,PT,15,68100,255,133,134,571,MTN,Parataenial nucleus,PT,,, -Xiphoid thalamic nucleus,Xi,2038,68110,255,133,134,15,PT,,,,, -Paraxiphoid nucleus of thalamus,PaXi,2039,68120,255,133,134,2038,Xi,,,,, -Accessory neuosecretory nuclei,ANS,2032,68130,255,133,134,571,MTN,,,,, -Reuniens area,RE,181,68200,255,133,132,571,MTN,Nucleus of reunions,RE,,, -Reuniens thalamic nucleus,Re,2092,68210,255,133,132,181,RE,,,,, -Retrouniens area,RRe,2093,68220,255,133,132,181,RE,,,,, -Ventral reuniens thalamic nucleus,VRe ,2037,68230,255,133,132,181,RE,,,,, -Intralaminar nuclei of the dorsal thalamus,ILM,51,68300,255,136,132,856,DORpm,Intralaminar nuclei of the dorsal thalamus,ILM,,, -Rhomboid thalamic nucleus,Rh,189,68400,255,128,132,51,ILM,Rhomboid nucleus,RH,,, -Central medial thalamic nucleus,CM,599,68500,255,134,132,51,ILM,Central medial nucleus of the thalamus,CM,,, -Paracentral thalamic nucleus,PC,907,68600,255,132,132,51,ILM,Paracentral nucleus,PCN,,, -Oval paracentral thalamic nucleus,OPC,2064,68610,255,132,132,907,PC,,,,, -Centrolateral thalamic nucleus,CL,575,68700,255,135,132,51,ILM,Central lateral nucleus of the thalamus,CL,,, -Parafascicular thalamic nucleus,PaF,930,68800,255,130,132,51,ILM,Parafascicular nucleus,PF,,, -Reticular nucleus (prethalamus),Rt,262,68900,255,128,128,856,DORpm,Reticular nucleus of the thalamus,RT,,, -"Geniculate group, ventral thalamus",GENv,1014,69000,255,135,133,856,DORpm,"Geniculate group, ventral thalamus",GENv,,, -Intergeniculate leaflet,IGL,27,69100,255,135,134,1014,GENv,Intergeniculate leaflet of the lateral geniculate complex,IGL,,, -Pregeniculate nucleus of the prethalamus,PrG,178,69200,255,135,135,1014,GENv,Ventral part of the lateral geniculate complex,LGv,,, -"Pregeniculate nucleus, magnocellular part",PrGMC,2072,69210,255,135,135,178,PrG,,,,, -"Pregeniculate nucleus, parvicellular part",PrGPC,2073,69220,255,135,135,178,PrG,,,,, -,,,,,,,,,"Ventral part of the lateral geniculate complex, lateral zone",LGvl,,, -,,,,,,,,,"Ventral part of the lateral geniculate complex, medial zone",LGvm,,, -Subgeniculate nucleus of the prethalamus,SubG,321,69500,255,135,133,1014,GENv,Subgeniculate nucleus,SubG,,, -Epithalamus,EPI,958,69600,255,136,144,856,DORpm,Epithalamus,EPI,,, -Medial habenular nucleus,MHb,483,69700,255,134,144,958,EPI,Medial habenula,MH,,, -Lateral habenular nucleus,LHb,186,69800,255,135,144,958,EPI,Lateral habenula,LH,,, -"Lateral habenular nucleus, medial part",LHbM,2058,69810,255,135,144,186,LHb,,,,, -"Lateral habenular nucleus, lateral part",LHbL,2059,69820,255,135,144,186,LHb,,,,, -Pineal gland,Pi,953,69900,255,132,144,958,EPI,Pineal body,PIN,,, -Hypothalamus,HY,1097,70000,255,105,110,1129,IB,Hypothalamus,HY,,, -Periventricular zone,PVZ,157,70100,255,76,80,1097,HY,Periventricular zone,PVZ,,, -Supraoptic nucleus,SO,390,70200,255,76,60,157,PVZ,Supraoptic nucleus,SO,,, -"Supraoptic nucleus, retrochiasmatic part",SOR,2051,70210,255,76,60,390,SO,,,,, -Episupraoptic nucleus,ESO,2034,70220,255,76,60,390,SO,,,,, -Accessory supraoptic group,ASO,332,70300,255,76,62,157,PVZ,Accessory supraoptic group,ASO,,, -Circulur nucleus,Cir,432,70400,255,76,62,332,ASO,Nucleus circularis,NC,,, -"Paraventricular thalamic nucleus, anterior part",PVA,38,70500,255,76,77,157,PVZ,Paraventricular hypothalamic nucleus,PVH,,, -"Paraventricular hypothalamic nucleus, magnocellular division",PVAm,71,70600,255,76,76,38,PVA,"Paraventricular hypothalamic nucleus, magnocellular division",PVHm,,, -,,,,,,,,,"Paraventricular hypothalamic nucleus, magnocellular division, anterior magnocellular part",PVHam,,, -"Paraventricular hypothalamic nucleus, medial magnocellular part",PaMM,79,70800,255,76,74,71,PVAm,"Paraventricular hypothalamic nucleus, magnocellular division, medial magnocellular part",PVHmm,,, -,,,,,,,,,"Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part",PVHpm,,, -"Paraventricular hypothalamic nucleus, lateral magnocellular part",PaLM,652,71000,255,76,73,71,PVAm,"Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part, lateral zone",PVHpml,,, -"Paraventricular hypothalamic nucleus, posterior part",PaPo,660,71100,255,76,73,71,PVAm,"Paraventricular hypothalamic nucleus, magnocellular division, posterior magnocellular part, medial zone",PVHpmm,,, -"Paraventricular hypothalamic nucleus, parvicellular division",PVAp,94,71200,255,76,72,38,PVA,"Paraventricular hypothalamic nucleus, parvicellular division",PVHp,,, -"Paraventricular hypothalamic nucleus, anterior parivcellular part",PaAP,55,71300,255,76,69,94,PVAp,"Paraventricular hypothalamic nucleus, parvicellular division, anterior parvicellular part",PVHap,,, -Anterior perifornical nucleus,APF,2026,71310,255,76,69,55,PaAP,,,,, -"Paraventricular hypothalamic nucleus, medial parvicellular part",PaMP,87,71400,255,76,71,94,PVAp,"Paraventricular hypothalamic nucleus, parvicellular division, medial parvicellular part, dorsal zone",PVHmpd,,, -,,,,,,,,,"Paraventricular hypothalamic nucleus, parvicellular division, periventricular part",PVHpv,,, -"Paraventricular hypothalamic nucleus, ventral part",PaV,30,71600,255,76,78,157,PVZ,"Periventricular hypothalamic nucleus, anterior part",PVa,,, -,,,,,,,,,"Periventricular hypothalamic nucleus, intermediate part",PVi,,, -Arcuate hypothalamic nucleus,Arc,223,71800,255,76,79,157,PVZ,Arcuate hypothalamic nucleus,ARH,,, -"Arcuate hypothalamic nucleus, dorsal part",ArcD,2061,71810,255,76,79,223,Arc,,,,, -"Arcuate hypothalamic nucleus, lateral part",ArcL,2062,71820,255,76,79,223,Arc,,,,, -"Arcuate hypothalamic nucleus, lateroposterior part",ArcLP,2104,71830,255,76,79,223,Arc,,,,, -"Arcuate hypothalamic nucleus, medial part",ArcM,2095,71840,255,76,79,223,Arc,,,,, -"Arcuate hypothalamic nucleus, medial posterior part",ArcMP,2103,71850,255,76,79,223,Arc,,,,, -Periventricular region,PVR,141,71900,255,77,80,1097,HY,Periventricular region,PVR,,, -,,,,,,,,,Anterodorsal preoptic nucleus,ADP,,, -,,,,,,,,,Anterior hypothalamic area,AHA,,, -,,,,,,,,,Anteroventral preoptic nucleus,AVP,,, -Anteroventral periventricular nucleus,AVPe,272,72300,255,77,84,141,PVR,Anteroventral periventricular nucleus,AVPV,,, -Dorsomedial hypothalamic nucleus,DM,830,72400,255,77,85,141,PVR,Dorsomedial nucleus of the hypothalamus,DMH,,, -"Dorsomedial hypothalamic nucleus, dorsal part",DMD,2076,72500,255,77,85,830,DM,"Dorsomedial nucleus of the hypothalamus, anterior part",DMHa,,, -"Dorsomedial hypothalamic nucleus, compact part",DMC,2077,72600,255,77,85,830,DM,"Dorsomedial nucleus of the hypothalamus, posterior part",DMHp,,, -"Dorsomedial hypothalamic nucleus, ventral part",DMV,2078,72700,255,77,85,830,DM,"Dorsomedial nucleus of the hypothalamus, ventral part",DMHv,,, -"Dorsomedial nucleus of the hypothalamus, anterior part",DMHa,668,72710,255,77,85,467,MEZ ,Posterior hypothalamic nucleus,PH,,, -Median preoptic nucleus,MnPO,452,72800,255,77,86,141,PVR,Median preoptic nucleus,MEPO,,, -DA14 Dopamine Cells,DA14,2307,72810,255,77,86,141,PVR,,,,, -Medial preoptic area,MPA,523,72900,255,77,87,141,PVR,Medial preoptic area,MPO,,, -Strial part of the preoptic area,StA,2016,72910,255,77,87,523,MPA,,,,, -Striohypothalamic nucleus,StHy,2023,72920,255,77,87,523,MPA,,,,, -Anterior commissural nucleus,AC,2306,72930,255,77,87,523,MPA,,,,, -Vascular organ of the lamina terminalis,VOLT,763,73000,255,77,88,141,PVR,Vascular organ of the lamina terminalis,OV,,, -Posterodorsal preoptic nucleus,PDPO,914,73100,255,77,89,141,PVR,Posterodorsal preoptic nucleus,PD,,, -Parastrial nucleus,PS,1109,73200,255,77,90,141,PVR,Parastrial nucleus,PS,,, -,,,,,,,,,Suprachiasmatic preoptic nucleus,PSCH,,, -,,,,,,,,,"Periventricular hypothalamic nucleus, posterior part",PVp,,, -Periventricular hypothalamic nucleus,Pe,133,73500,255,77,93,141,PVR,"Periventricular hypothalamic nucleus, preoptic part",PVpo,,, -Subparaventricular zone of the hypothalamus,SPa ,347,73600,255,77,80,141,PVR,Subparaventricular zone,SBPV,,, -Suprachiasmatic nucleus,SCh,286,73700,255,77,94,141,PVR,Suprachiasmatic nucleus,SCH,,, -"Suprachiasmatic nucleus, dorsolateral part",SChDL,2030,73710,255,77,94,286,SCh,,,,, -"Suprachiasmatic nucleus, ventromedial part",SChVM,2031,73720,255,77,94,286,SCh,,,,, -Subfornical organ,SFO,338,73800,255,77,80,141,PVR,Subfornical organ,SFO,,, -Ventromedidal preoptic nucleus,VMPO,2011,73810,255,77,80,141,PVR,,,,, -Ventrolateral preoptic nucleus,VLPO,689,73900,255,77,80,141,PVR,Ventrolateral preoptic nucleus,VLPO,,, -Hypothalamic medial zone,MEZ ,467,74000,255,78,80,1097,HY,Hypothalamic medial zone,MEZ ,,, -Anterior hypothalamic nucleus,AHN,88,74100,255,78,81,467,MEZ ,Anterior hypothalamic nucleus,AHN,,, -"Anterior hypothalamic area, anterior part",AHA,700,74200,255,78,81,88,AHN,"Anterior hypothalamic nucleus, anterior part",AHNa,,, -"Anterior hypothalamic area, central part",AHC,708,74300,255,78,81,88,AHN,"Anterior hypothalamic nucleus, central part",AHNc,,, -,,,,,,,,,"Anterior hypothalamic nucleus, dorsal part",AHNd,,, -"Anterior hypothalamic area, posterior part",AHP,724,74500,255,78,81,88,AHN,"Anterior hypothalamic nucleus, posterior part",AHNp,,, -Lateroanterior hypothalamic nucleus,LA,2029,74510,255,78,81,88,AHN,,,,, -Stigmoid hypothalamic nucleus,Stg,2047,74520,255,78,81,724,AHP,,,,, -Mammillary body,MBO,331,74600,255,78,82,467,MEZ ,Mammillary body,MBO,,, -Lateral mamilllary nucleus,LM,210,74700,255,78,83,331,MBO,Lateral mammillary nucleus,LM,,, -"Medial mammillary nucleus, medial part",MM,491,74800,255,78,84,331,MBO,Medial mammillary nucleus,MM,,, -Mammillary recess of the 3rd ventricle,MRe,2118,74810,255,78,84,491,MM,,,,, -"Medial mammillary nucleus, lateral part",ML,2119,74820,255,78,84,491,MM,,,,, -"Medial mammillary nucleus, median part",MnM,732,74900,255,78,84,491,MM,"Medial mammillary nucleus, median part",Mmme,,, -Retromamillary nucleus,RM,525,75000,255,78,85,331,MBO,Supramammillary nucleus,SUM ,,, -"Retromamillary nucleus, lateral part",RML,1110,75100,255,78,85,525,RM,"Supramammillary nucleus, lateral part",SUMl,,, -"Retromamillary nucleus, medial part",RMM,1118,75200,255,78,85,525,RM,"Supramammillary nucleus, medial part",SUMm,,, -Tuberomammillary nucleus,TM,557,75300,255,78,86,331,MBO,Tuberomammillary nucleus,TM,,, -Dorsal tuberomammillary nucleus,DTM,1126,75400,255,78,86,557,TM,"Tuberomammillary nucleus, dorsal part",TMd,,, -Ventral tuberomammillary nucleus,VTM,1,75500,255,78,86,557,TM,"Tuberomammillary nucleus, ventral part",TMv,,, -Medial preoptic nucleus,MPO,515,75600,255,78,87,467,MEZ ,Medial preoptic nucleus,MPN,,, -,,,,,,,,,"Medial preoptic nucleus, central part",MPNc,,, -"Medial preoptic nucleus, lateral part",MPOL,748,75800,255,78,87,515,MPO,"Medial preoptic nucleus, lateral part",MPNl,,, -"Medial preoptic nucleus, medial part",MPOM,756,75900,255,78,87,515,MPO,"Medial preoptic nucleus, medial part",MPNm,,, -"Premamillary nucleus, dorsal part",PMD,980,76000,255,78,88,467,MEZ ,Dorsal premammillary nucleus,PMd,,, -"Premamillary nucleus, ventral part",PMV,1004,76100,255,78,89,467,MEZ ,Ventral premammillary nucleus,PMv,,, -"Paraventricular hypothalamic nucleus, descending division",PVHd,63,76200,255,78,90,467,MEZ ,"Paraventricular hypothalamic nucleus, descending division",PVHd,,, -"Paraventricular hypothalamic nucleus, dorsal cap",PaDC,439,76300,255,78,90,63,PVHd,"Paraventricular hypothalamic nucleus, descending division, dorsal parvicellular part",PVHdp,,, -,,,,,,,,,"Paraventricular hypothalamic nucleus, descending division, forniceal part",PVHf,,, -,,,,,,,,,"Paraventricular hypothalamic nucleus, descending division, lateral parvicellular part",PVHlp,,, -,,,,,,,,,"Paraventricular hypothalamic nucleus, descending division, medial parvicellular part, ventral zone",PVHmpv,,, -Ventromedial hypothalamic nucleus,VMH,693,76700,255,78,91,467,MEZ ,Ventromedial hypothalamic nucleus,VMH,,, -"Ventromedial hypothalamic nucleus, shell region",VMHSh,2044,76710,255,78,91,693,VMH,,,,, -,,,,,,,,,"Ventromedial hypothalamic nucleus, anterior part",VMHa,,, -"Ventromedial hypothalamic nucleus, central part",VMHC,769,76900,255,78,91,693,VMH,"Ventromedial hypothalamic nucleus, central part",VMHc,,, -"Ventromedial hypothalamic nucleus, dorsomedial part",VMHDM,777,77000,255,78,91,693,VMH,"Ventromedial hypothalamic nucleus, dorsomedial part",VMHdm,,, -"Ventromedial hypothalamic nucleus, ventrolateral part",VMHVL,785,77100,255,78,91,693,VMH,"Ventromedial hypothalamic nucleus, ventrolateral part",VMHvl,,, -Posterior hypothalamic area,PHA,2474,77110,255,78,91,467,MEZ ,Posterior hypothalamic area,PHA,,, -Posterior hypothalamic nucleus,PH,946,77150,255,79,83,2474,PHA,Posterior hypothalamic nucleus,PH,,, -"Posterior hypothalamic nucleus, dorsal part",PHnd,2364,77160,255,79,83,946,PH,"Posterior hypothalamic nucleus, dorsal part",PHnd,,, -"Posterior hypothalamic nucleus, ventral part",PHnv,2365,77170,255,79,83,946,PH,"Posterior hypothalamic nucleus, ventral part",PHnv,,, -"Posterior hypothalamic area, dorsal part",PHD,2075,77180,255,79,83,946,PH,,,,, -Submammillothalamic nucleus,SMT,2102,77190,255,79,83,946,PH,,,,, -Hypothalamic lateral zone,LZ,290,77200,255,79,80,1097,HY,Hypothalamic lateral zone,LZ,,, -Lateral hypothalamic area,LH,194,77300,255,79,81,290,LZ,,,,, -Juxtaparaventricular part of lateral hypothalamus,JPLH,2309,77300,255,79,81,194,LH,Lateral hypothalamic area,LHA,,, -Magnocellular nucleus of the lateral hypothalamus,MCLH,2065,77310,255,79,81,194,LH,,,,, -Ventrolateral hypothalamic nucleus ,VLH,2033,77320,255,79,81,194,LH,,,,, -Gemini hypothalamic nucleus,Gem,2105,77330,255,79,81,194,LH,,,,, -Peduncular lateral hypothalamus,PLH,2081,77340,255,79,81,194,LH,,,,, -Tuberal region of lateral hypothalamus,TuLH,2048,77350,255,79,81,194,LH,,,,, -Perifornical part of lateral hypothalamus,PeFLH,2473,77360,255,79,81,194,LH,,,,, -Lateral preoptic area,LPO,226,77400,255,79,82,290,LZ,Lateral preoptic area,LPO,,, -,,,,,,,,,Preparasubthalamic nucleus,PST,,, -Paraterete nucleus,PTe,2379,77610,255,79,80,290,LZ,,,,, -Parasubthalamic nucleus,PSTh,364,77700,255,79,80,290,LZ,Parasubthalamic nucleus,PSTN,,, -Retrochiasmatic area,RCh,173,77800,255,79,84,290,LZ,Retrochiasmatic area,RCH,,, -"Retrochiasmatic area, lateral part",RchL,2042,77810,255,79,84,173,RCh,,,,, -"Retrochiasmatic area, medial part",RchM,2283,77820,255,79,84,173,RCh,,,,, -Subthalamic nucleus,STh,470,77900,255,79,85,290,LZ,Subthalamic nucleus,STN,,, -Subincertal nucleus,SubI,2063,77910,255,79,85,290,LZ,,,,, -Medial tuberal nucleus,MTu,614,78000,255,79,86,290,LZ,Tuberal nucleus,TU,,, -Terete hypothalamic nucleus,Te,2080,78010,255,79,86,614,MTu,,,,, -Perifornical nucleus,PeF,2079,78020,255,79,86,290,LZ,,,,, -Ventral linear nucleus of the thalamus,VLi,2111,78030,255,79,87,290,LZ,,,,, -Zona incerta,ZI,797,78100,255,79,87,290,LZ,Zona incerta,ZI,,, -"Zona incerta, caudal part",ZIC,2125,78110,255,79,87,797,ZI,,,,, -"Zona incerta, rostral part",ZIR,2043,78120,255,79,87,797,ZI,,,,, -"Zona incerta, dosal part",ZID,2053,78130,255,79,87,797,ZI,,,,, -"Zona incerta, ventral part",ZIV,2054,78140,255,79,87,797,ZI,,,,, -DA13 dopamine cells,DA13,796,78200,255,79,87,797,ZI,Dopaminergic A13 group,A13,,, -Nucleus of the fields of Forel,F,2110,78300,255,79,87,797,ZI,Fields of Forel,FF,,, -Median eminence,ME,10671,78400,255,80,80,1097,HY,Median eminence,ME,,, -Midbrain,MB,313,78500,255,200,255,343,BS,Midbrain,MB,,, -Prerubral field,PR,2107,78510,255,200,255,313,MB,,,,, -"Midbrain, sensory related",MBsen,339,78600,255,176,254,313,MB,"Midbrain, sensory related",MBsen,,, -Superior colliculus,SC,2476,78610,255,176,254,339,MBsen,,,,, -"Superior colliculus, sensory related",SCs,302,78700,255,152,250,2476,SC,"Superior colliculus, sensory related",SCs,,, -Optic layer of the superior colliculus,Op,851,78800,255,152,250,302,SCs,"Superior colliculus, optic layer",SCop,,, -Superficial gray layer of the superior colliculus,SuG,842,78900,255,152,250,302,SCs,"Superior colliculus, superficial gray layer",SCsg,,, -Zonal layer of superior colliculus,Zo,834,79000,255,152,250,302,SCs,"Superior colliculus, zonal layer",SCzo,,, -Inferior colliculus,IC,4,79100,255,152,255,339,MBsen,Inferior colliculus,IC,,, -Central nucleus of the inferior colliculus,CIC,811,79200,255,152,255,4,IC,"Inferior colliculus, central nucleus",ICc,,, -Dorsal cortex of the inferior colliculus,DCIC,820,79300,255,152,255,4,IC,"Inferior colliculus, dorsal nucleus",ICd,,, -External cortex of the inferior colliculus,ECIC,828,79400,255,152,255,4,IC,"Inferior colliculus, external nucleus",ICe,,, -"External cortex of the inferior colliculus, layer 1",ECIC1,2188,79410,255,152,255,828,ECIC,,,,, -"External cortex of the inferior colliculus, layer 2",ECIC2,2189,79420,255,152,255,828,ECIC,,,,, -"External cortex of the inferior colliculus, layer 3",ECIC3,2190,79430,255,152,255,828,ECIC,,,,, -Commissural nucleus of the inferior colliculus,Com,2457,79440,255,152,255,4,IC,,,,, -Recess of the inferior colliculus,ReIC,2475,79450,255,152,255,4,IC,,,,, -Nucleus of the brachium of the inferior colliculus,BIC,580,79500,255,152,253,339,MBsen,Nucleus of the brachium of the inferior colliculus,NB,,, -Sagulum nucleus,Sag,271,79600,255,152,251,339,MBsen,Nucleus sagulum,SAG,,, -Parabigeminal nucleus,PBG,874,79700,255,152,252,339,MBsen,Parabigeminal nucleus,PBG,,, -Microcellular tegmental nucleus,MiTg,2163,79710,255,152,252,339,MBsen,,,,, -Mesencephalic trigeminal nucleus,Me5,460,79800,255,152,254,339,MBsen,Midbrain trigeminal nucleus,MEV,,, -Subcommissural organ ,SCO,2108,79810,255,152,254,339,MBsen,,,,, -"Midbrain, motor related",MBmot,323,79900,255,132,255,313,MB,"Midbrain, motor related",MBmot,,, -Mesencephalic reticular formation,mRt,2147,79910,255,132,255,323,MBmot,,,,, -prosomere 1 reticular formation,p1Rt,2131,79920,255,132,255,323,MBmot,,,,, -Isthmic reticular formation,isRt,2181,79930,255,132,255,323,MBmot,,,,, -Pararubral nucleus,PaR,2154,79940,255,132,255,323,MBmot,,,,, -"Substantia nigra, reticular part",SNR,381,80000,255,178,247,323,MBmot,"Substantia nigra, reticular part",SNr,,, -Ventral tegmental area,VTA,749,80100,255,178,246,323,MBmot,Ventral tegmental area,VTA,,, -Paranigral nucleus of the VTA,PN,2138,80110,255,178,246,749,VTA,,,,, -Parainterfascicular nucleus of the VTA,PIF,2144,80120,255,178,246,749,VTA,,,,, -Parabranchial pigmented nucleus of the VTA,PBP,2124,80130,255,178,246,749,VTA,,,,, -"Ventral tegmental area, rostral part",VTAR,2427,80140,255,178,246,749,VTA,,,,, -Rostral interstitial nucleus of the medial longitudinal fasciculus,RI,2112,80150,255,178,246,323,MBmot,,,,, -DA11 dopamine cells,DA11,2101,80160,255,178,246,323,MBmot,,,,, -Retroisthmic nucleus,RIs,246,80200,255,178,249,323,MBmot,"Midbrain reticular nucleus, retrorubral area",RR,,, -Retrorubral field,RRF,2153,80210,255,178,249,246,RIs,,,,, -,,,,,,,,,Midbrain reticular nucleus,MRN,,, -,,,,,,,,,"Midbrain reticular nucleus, magnocellular part",MRNm,,, -,,,,,,,,,"Midbrain reticular nucleus, magnocellular part, general",MRNmg,,, -,,,,,,,,,"Midbrain reticular nucleus, parvicellular part",MRNp,,, -"Superior colliculus, motor related",SCm,294,80700,255,178,248,2476,SC,"Superior colliculus, motor related",SCm,,, -Deep gray layer of the superior colliculus,DpG,26,80800,255,178,248,294,SCm,"Superior colliculus, motor related, deep gray layer",SCdg,,, -Deep white layer of the superior colliculus,DpWh,42,80900,255,178,248,294,SCm,"Superior colliculus, motor related, deep white layer",SCdw,,, -Intermediate white layer of the superior colliculus,InWh,17,81000,255,178,248,294,SCm,"Superior colliculus, motor related, intermediate white layer",SCiw,,, -Intermediate gray layer of the superior colliculus,InG,10,81100,255,178,248,294,SCm,"Superior colliculus, motor related, intermediate gray layer",SCig,,, -,,,,,,,,,"Superior colliculus, motor related, intermediate gray layer, sublayer a",SCig-a,,, -,,,,,,,,,"Superior colliculus, motor related, intermediate gray layer, sublayer b",SCig-b,,, -,,,,,,,,,"Superior colliculus, motor related, intermediate gray layer, sublayer c",SCig-c,,, -Periaqueductal gray,PAG,795,81500,255,144,255,323,MBmot,Periaqueductal gray,PAG,,, -Dorsomedial periaqueductal gray,DMPAG,2141,81510,255,144,255,795,PAG,,,,, -Lateral periaqueductal gray,LPAG,2142,81520,255,144,255,795,PAG,,,,, -Pleoglial periaqueductal gray,PlPAG,2143,81530,255,144,255,795,PAG,,,,, -Dorsolateral periaqueductal gray,DLPAG,2148,81540,255,144,255,795,PAG,,,,, -Ventrolateral periaqueductal gray,VLPAG,2162,81550,255,144,255,795,PAG,,,,, -prosomere 1 periaqueductal gray,p1PAG,2114,81560,255,144,255,795,PAG,,,,, -Lithoid nucleus,Lth,2123,81570,255,144,255,323,MBmot,,,,, -Precommissural nucleus,PrC,50,81600,255,144,255,323,MBmot,Precommissural nucleus,PRC,,, -Interstitial nucleus of Cajal,InC,67,81700,255,145,255,323,MBmot,Interstitial nucleus of Cajal,INC,,, -"Interstitial nucleus of Cajal, shell region",InCSh,2129,81710,255,145,255,67,InC,,,,, -Nucleus of Darkschewitsch,Dk,587,81800,255,146,255,323,MBmot,Nucleus of Darkschewitsch,ND,,, -Supraoculomotor cap,Su3C,2152,81810,255,146,255,323,MBmot,,,,, -Supraoculomotor periaqueductal gray,Su3,2156,81820,255,146,255,323,MBmot,,,,, -Pretectal region,PRT,1100,81900,255,176,250,323,MBmot,Pretectal region,PRT,,, -Anterior pretectal nucleus,APT,215,82000,255,176,249,1100,PRT,Anterior pretectal nucleus,APN,,, -"Anterior pretectal nucleus, dorsal part",APTD,2099,82010,255,176,249,215,APT,,,,, -"Anterior pretectal nucleus, ventral part",APTV,2100,82020,255,176,249,215,APT,,,,, -Medial pretectal area,MPT,531,82100,255,176,248,1100,PRT,Medial pretectal area,MPT,,, -Retrocommissural nucleus,ReC,2415,82110,255,176,248,1100,PRT,,,,, -Nucleus of the optic tract,OT,628,82200,255,176,247,1100,PRT,Nucleus of the optic tract,NOT,,, -Nucleus of the posterior commissure,PCom,634,82300,255,176,246,1100,PRT,Nucleus of the posterior commissure,NPC,,, -Magnocellular nucleus of the posterior commissure,MCPC,2121,82310,255,176,246,634,PCom,,,,, -Olivary pretectal nucleus,OPT,706,82400,255,176,245,1100,PRT,Olivary pretectal nucleus,OP,,, -Posterior pretectal nucleus,PPT,1061,82500,255,176,244,1100,PRT,Posterior pretectal nucleus,PPT,,, -Retroparafascicular nucleus,RPF,2122,82510,255,176,244,1100,PRT,,,,, -Cuneiform nucleus,CnF,616,82600,255,178,254,323,MBmot,Cuneiform nucleus,CUN,,, -Precuneiform area,PrCnF,2192,82610,255,178,254,616,CnF,,,,, -Red nucleus,R,214,82700,255,134,249,323,MBmot,Red nucleus,RN,,, -"Red nucleus, parvicellular part",RPC,2137,82710,255,134,249,214,R,,,,, -"Red nucleus, magnocellular part",RMC,2139,82720,255,134,249,214,R,,,,, -Medial accessory oculomotor nucleus,MA3,2136,82730,255,168,255,323,MBmot,,,,, -Oculomotor nerve,3N,35,82800,255,168,255,323,MBmot,Oculomotor nucleus,III,,, -"Oculomotor nucleus, parvicellular part",3PC,2157,82810,255,168,255,35,3N,,,,, -Edinger-Westphal nucleus,EW,975,82900,255,178,253,323,MBmot,Edinger-Westphal nucleus,EW,,, -Pre-Edinger-Westphal nucleus,PrEW,2130,82910,255,178,253,975,EW,,,,, -Trochlear nucleus,4N,115,83000,255,178,255,323,MBmot,Trochlear nucleus,IV,,, -Trochlear nucleus shell region,4Sh,2180,83010,255,178,255,115,4N,,,,, -Paratrochlear nucleus,Pa4,2179,83020,255,178,255,115,4N,,,,, -Ventral tegmental nucleus,VTg,757,83100,255,177,250,323,MBmot,Ventral tegmental nucleus,VTN,,, -Anterior tegmental nucleus,ATg,231,83200,255,177,252,323,MBmot,Anterior tegmental nucleus,AT,,, -Rhabdoid nucleus,Rbd,2168,83210,255,177,252,323,MBmot,,,,, -Lateral terminal nucleus of the accessory optic tract,LT,66,83300,255,177,253,323,MBmot,Lateral terminal nucleus of the accessory optic tract,LT,,, -Dorsal terminal nucleus,DT,75,83400,255,177,253,323,MBmot,Dorsal terminal nucleus of the accessory optic tract,DT,,, -Medial terminal nucleus,MT,58,83500,255,177,253,323,MBmot,Medial terminal nucleus of the accessory optic tract,MT,,, -"Substantia nigra, lateral part",SNL,615,83600,255,178,247,323,MBmot,"Substantia nigra, lateral part",SNl,,, -"Midbrain, behavioral state related",MBsta,348,83700,255,176,253,313,MB,"Midbrain, behavioral state related",MBsta,,, -"Substantia nigra, compact part",SNC,374,83800,255,158,248,348,MBsta,"Substantia nigra, compact part",SNc,,, -"Substantia nigra, compact part, dorsal tier",SNCD,2134,83810,255,158,248,374,SNC,,,,, -"Substantia nigra, compact part, medial tier",SNCM,2135,83820,255,158,248,374,SNC,,,,, -Pedunculotegmental nucleus,PTg,1052,83900,255,158,255,348,MBsta,Pedunculopontine nucleus,PPN,,, -Subpeduncular tegmental nucleus,SPTg,2183,83910,255,158,255,1052,PTg,,,,, -Midbrain raphÈ nuclei,RAmb,165,84000,255,158,254,348,MBsta,Midbrain raphÈ nuclei,RAmb,,, -Interfascicular nucleus,IF,12,84100,255,158,251,165,RAmb,Interfascicular nucleus raphÈ,IF,,, -Interpeduncular nucleus,IP,100,84200,255,158,247,165,RAmb,Interpeduncular nucleus,IPN,,, -"Interpeduncular nucleus, rostral subnucleus",IPR,2140,84210,255,158,247,100,IP,,,,, -"Interpeduncular nucleus, lateral subnucleus",IPL,2145,84220,255,158,247,100,IP,,,,, -"Interpeduncular nucleus, caudal subnucleus",IPC,2146,84230,255,158,247,100,IP,,,,, -"Interpeduncular nucleus, dorsomedial subnucleus",IPDM,2149,84240,255,158,247,100,IP,,,,, -"Interpeduncular nucleus, dorsolateral subnucleus",IPDL,2151,84250,255,158,247,100,IP,,,,, -"Interpeduncular nucleus, intermediate subnucleus",IPI,2150,84260,255,158,247,100,IP,,,,, -"Interpeduncular nucleus, apical subnucleus",IPA,2160,84270,255,158,247,100,IP,,,,, -Rostral linear nucleus (midbrain),RLi ,197,84300,255,158,249,165,RAmb,Rostral linear nucleus raphÈ,RL,,, -Caudal linear nucleus of the raphÈ,CLi,591,84400,255,158,253,165,RAmb,Central linear nucleus raphÈ,CLI,,, -Dorsal raphÈ nucleus,DR,872,84500,255,158,252,165,RAmb,Dorsal nucleus raphÈ,DR,,, -"Dorsal raphÈ nucleus, caudal part",DRC,2173,84510,255,158,252,872,DR,,,,, -"Dorsal raphÈ nucleus, dorsal part",DRD,2174,84520,255,158,252,872,DR,,,,, -Dorsal raphÈ interfascicular part,DRI,2175,84530,255,158,252,872,DR,,,,, -"Dorsal raphÈ nucleus, lateral part",DRL,2176,84540,255,158,252,872,DR,,,,, -"Dorsal raphÈ nucleus, ventral part",DRV,2177,84550,255,158,252,872,DR,,,,, -Posterodorsal raphÈ nucleus,PDR,2178,84560,255,158,252,872,DR,,,,, -Hindbrain,HB,1065,84600,255,155,168,343,BS,Hindbrain,HB,,, -Pons,P,771,84700,255,155,136,1065,HB,Pons,P,,, -"Pons, sensory related",P-sen,1132,84800,255,170,98,771,P,"Pons, sensory related",P-sen,,, -Paralemniscal nucleus,PL,612,84900,255,170,97,1132,P-sen,Nucleus of the lateral lemniscus,NLL,,, -Dorsal nucleus of the lateral lemniscus,DLL,82,85000,255,170,97,612,PL,"Nucleus of the lateral lemniscus, dorsal part",NLLd,,, -,,,,,,,,,"Nucleus of the lateral lemniscus, horizontal part",NLLh,,, -Ventral nucleus of the lateral lemniscus,VLL,99,85200,255,170,97,612,PL,"Nucleus of the lateral lemniscus, ventral part",NLLv,,, -Intermediate nucleus of the lateral lemniscus,ILL,2172,85210,255,170,97,612,PL,,,,, -"Triangular nucleus, lateral lemniscus",TrLL,2184,85220,255,170,97,612,PL,,,,, -Principal sensory trigeminal nucleus,Pr5,7,85300,255,170,95,1132,P-sen,Principal sensory nucleus of the trigeminal,PSV,,, -"Principal sensory trigeminal nucleus, dorsomedial part",Pr5DM,2203,85310,255,170,95,7,Pr5,,,,, -"Principal sensory trigeminal nucleus, ventrolateral part",Pr5VL,2202,85320,255,170,95,7,Pr5,,,,, -Parabrachial nucleus,PB,867,85400,255,170,96,1132,P-sen,Parabrachial nucleus,PB,,, -Kolliker-Fuse nucleus,KF,123,85500,255,165,96,867,PB,Kolliker-Fuse subnucleus,KF,,, -Lateral parabrachial nucleus,LPB,881,85600,255,169,96,867,PB,"Parabrachial nucleus, lateral division",PBl,,, -"Lateral parabrachial nucleus, central part",LPBC,860,85700,255,169,96,881,LPB,"Parabrachial nucleus, lateral division, central lateral part",PBlc,,, -"Lateral parabrachial nucleus, crescent part",LPBCr,2458,85710,255,169,96,881,LPB,,,,, -"Lateral parabrachial nucleus, dorsal part",LPBD,868,85800,255,169,96,881,LPB,"Parabrachial nucleus, lateral division, dorsal lateral part",PBld,,, -"Lateral parabrachial nucleus, external part",LPBE,875,85900,255,169,96,881,LPB,"Parabrachial nucleus, lateral division, external lateral part",PBle,,, -"Lateral parabrachial nucleus, superior part",LPBS,883,86000,255,169,96,881,LPB,"Parabrachial nucleus, lateral division, superior lateral part",PBls,,, -"Lateral parabrachial nucleus, central part",LPBV,891,86100,255,169,96,881,LPB,"Parabrachial nucleus, lateral division, ventral lateral part",PBlv,,, -"Lateral parabrachial nucleus, internal part",LPBI,2213,86110,255,169,96,881,LPB,,,,, -Medial parabrachial nucleus,MPB,890,86200,255,168,96,867,PB,"Parabrachial nucleus, medial division",PBm,,, -"Medial parabrachial nucleus, external part",MPBE,899,86300,255,168,96,890,MPB,"Parabrachial nucleus, medial division, external medial part",PBme,,, -,,,,,,,,,"Parabrachial nucleus, medial division, medial medial part",PBmm,,, -,,,,,,,,,"Parabrachial nucleus, medial division, ventral medial part",PBmv,,, -Superior olivary complex,SOC,398,86600,255,170,94,1132,P-sen,Superior olivary complex,SOC,,, -"Superior olivary complex, periolivary nucleus",POR,122,86700,255,170,94,398,SOC,"Superior olivary complex, periolivary region",POR,,, -Lateroventral periolivary nucleus,LVPO,2207,86710,255,170,94,122,POR,,,,, -Medioventral periolivary nucleus,MVPO,2208,86720,255,170,94,122,POR,,,,, -Dorsal periolivary region,DPO,2209,86730,255,170,94,122,POR,,,,, -Caudal periolivary nucleus,CPO,2227,86740,255,170,94,122,POR,,,,, -Superior paraolivary nucleus,SPO,2456,86750,255,170,94,398,SOC,,,,, -Medial superior olive,MSO,105,86800,255,170,94,398,SOC,"Superior olivary complex, medial part",SOCm,,, -Lateral superior olive,LSO,114,86900,255,170,94,398,SOC,"Superior olivary complex, lateral part",SOCl,,, -Nucleus of the central acoustic tract,CAT,2187,86910,255,170,94,398,SOC,,,,, -"Pons, motor related",P-mot,987,87000,255,174,92,771,P,"Pons, motor related",P-mot,,, -A7 noradrenaline cells,A7,2191,87010,255,79,87,987,P-mot,,,,, -Barrington nucleus,Bar,280,87100,255,174,80,987,P-mot,Barrington's nucleus,B,,, -"Barrington nucleus, dorsal part",Bard,2459,87110,255,174,80,280,Bar,"Barrington's nucleus, dorsal part",Bd,,, -"Barrington nucleus, ventral part",Barv,2460,87120,255,174,80,280,Bar,"Barrington's nucleus, ventral part",Bv,,, -Dorsal tegmental nucleus,DTg,880,87200,255,174,87,987,P-mot,Dorsal tegmental nucleus,DTN,,, -"Dorsal tegmental nucleus, central part",DTgC,2210,87210,255,174,87,880,DTg,,,,, -"Dorsal tegmental nucleus, pericentral part",DTgP,2201,87220,255,174,87,880,DTg,,,,, -Posterodorsal tegmental nucleus,PDTg,2230,87230,255,174,87,880,DTg,,,,, -,,,,,,,,,Lateral tegmental nucleus,LTN,,, -Central gray,CG,898,87400,255,174,120,987,P-mot,Pontine central gray,PCG,,, -"Central gray, alpha part",CGA,2215,87410,255,174,120,898,CG,,,,, -"Central gray, beta part",CGB,2216,87420,255,174,120,898,CG,,,,, -"Central gray, gamma part",CGG,2231,87430,255,174,120,898,CG,,,,, -"Central gray, nucleus O",CGO,2221,87440,255,174,120,898,CG,,,,, -Pontine nuclei,Pn,931,87500,255,174,92,987,P-mot,Pontine gray,PG,,, -"Pontine reticular nucleus, caudal part",PnC,2206,87600,255,174,85,987,P-mot,"pontine reticular nucleus, caudal part",PRNc,,, -Dorsomedial tegmental area,DMTg,2197,87610,255,174,85,1117,P-sat,,,,, -,,,,,,,,,"Pontine reticular nucleus, ventral part",PRNv,,, -Sphenoid nucleus,Sph,2220,87710,255,174,92,987,P-mot,,,,, -Supragenual nucleus,SGe,318,87800,255,174,84,987,P-mot,Supragenual nucleus,SG,,, -Superior salivatory nucleus,SuS,462,87900,255,174,83,987,P-mot,Superior salivatory nucleus,SSN,,, -Supratrigeminal nucleus,Su5,534,88000,255,174,82,987,P-mot,Supratrigeminal nucleus,SUT,,, -Reticulotegmental nucleus of the pons,RtTg,574,88100,255,174,81,987,P-mot,Tegmental reticular nucleus,TRN,,, -"Reticulotegmental nucleus of the pons, pericentral part",RtTgP,2165,88110,255,174,81,574,RtTg,,,,, -B9 serotonin cells,B9,2166,88120,255,174,81,771,P,,,,, -Motor trigeminal nucleus,5N,621,88200,255,174,104,987,P-mot,Motor nucleus of trigeminal,V,,, -"Motor trigeminal nucleus, anterior digastric part",5ADi,2204,88210,255,174,104,621,5N,,,,, -"Motor trigeminal nucleus, temporalis part",5Te,2453,88210,255,174,104,621,5N,"Motor trigeminal nucleus, temporalis part",Vte,,, -Interfascicular trigeminar nucleus,IF5/5TT,2194,88220,255,174,104,621,5N,,,,, -"Motor trigeminal nucleus, masseter part",5Ma,2454,88220,255,174,104,621,5N,"Motor trigeminal nucleus, masseter part",Vma,,, -Peritrigeminal zone,P5,2193,88230,255,174,104,987,P-mot,"Motor trigeminal nucleus, medial pterygoid part",Vmpt,,, -"Motor trigeminal nucleus, medial pterygoid part",5MPt,2455,88230,255,174,104,621,5N,,,,, -"Pons, behavioral state related",P-sat,1117,88300,255,172,120,771,P,"Pons, behavioral state related",P-sat,,, -Nucleus raphÈ,NR,679,88400,255,172,119,1117,P-sat,Superior central nucleus raphÈ,CS,,, -Paramedian raphÈ nucleus,PMnR,137,88500,255,172,119,679,NR,"Superior central nucleus raphÈ, lateral part",CSl,,, -Median raphÈ nucleus,MnR,130,88600,255,172,119,679,NR,"Superior central nucleus raphÈ, medial part",CSm,,, -Locus coeruleus,LC,147,88700,255,172,118,1117,P-sat,Locus ceruleus,LC,,, -Laterodorsal tegmental nucleus,LDT,2284,88800,255,172,117,1117,P-sat,,,,, -"Laterodorsal tegmental nucleus, dorsal part",LDTg,162,88810,255,172,117,2284,LDT,"Laterodorsal tegmental nucleus, dorsal part",LDTd,,, -"Laterodorsal tegmental nucleus, dorsal part, lateral division",LDTg-dl,2366,88820,255,172,117,162,LDTg,"Laterodorsal tegmental nucleus, dorsal part, lateral division",LDTdl,,, -"Laterodorsal tegmental nucleus, dorsal part, medial division",LDTg-dm,2367,88830,255,172,117,162,LDTg,"Laterodorsal tegmental nucleus, dorsal part, medial division",LDTdm,,, -"Laterodorsal tegmental nucleus, ventral part",LDTgV,2195,88840,255,172,117,2284,LDT,,,,, -,,,,,,,,,Nucleus incertus,NI,,, -"Pontine reticular nucleus, oral part",PnO,2205,89010,255,172,120,987,P-mot,,,,, -"Pontine reticular nucleus, ventral part",PnV,2217,89020,255,172,120,987,P-mot,,,,, -Epirubrospinal nucleus,ERS,2182,89030,255,172,120,987,P-mot,,,,, -Medial paralemniscial nucleus,MPL,2185,89040,255,172,120,1117,P-sat,,,,, -"Perilemniscal nucleus, ventral part",PLV,2186,89050,255,172,120,1117,P-sat,,,,, -Pontine raphÈ nucleus,PnR,238,89100,255,172,115,1117,P-sat,Nucleus raphÈ pontis,RPO,,, -,,,,,,,,,Subceruleus nucleus,SLC,,, -,,,,,,,,,Sublaterodorsal nucleus,SLD,,, -Medulla,MY,354,89400,255,160,176,1065,HB,Medulla,MY,,, -"Medulla, sensory related",MY-sen,386,89500,255,176,176,354,MY,"Medulla, sensory related",MY-sen,,, -Area postrema,AP,207,89600,255,176,178,386,MY-sen,Area postrema,AP,,, -Area subpostrema,SubP,2274,89610,255,176,178,386,MY-sen,,,,, -Cochlear nuclei,CN,607,89700,255,176,177,386,MY-sen,Cochlear nuclei,CN,,, -Granule cell layer of the cochlear nuclei,GrC (VCCap in 81),112,89800,255,176,177,607,CN,Granular lamina of the cochlear nuclei,CNlam,,, -"Ventral cochlear nucleus, granule cell layer",VCAGr,560,89900,255,176,177,607,CN,"Cochlear nucleus, subpedunclular granular region",CNspg,,, -Dorsal cochlear nucleus,DC,96,90000,255,155,205,607,CN,Dorsal cochlear nucleus,DCO,,, -"Dorsal cochlear nucleus, molecular layer",DCMo,2234,90010,255,155,205,96,DC,,,,, -"Dorsal cochlear nucleus, fusiform layer",DCFu,2235,90020,255,155,205,96,DC,,,,, -"Dorsal cochlear nucleus, deep layer",DCDp,2236,90030,255,155,205,96,DC,,,,, -Ventral cochlear nucleus,VC,101,90100,255,155,205,607,CN,Ventral cochlear nucleus,VCO,,, -"Ventral cochlear nucleus, anterior part",VCA,2238,90110,255,155,205,101,VC,,,,, -"Ventral cochlear nucleus, posterior part",VCP,2237,90120,255,155,205,101,VC,,,,, -"Ventral cochlear nucleus, posterior part, octopus cell area",VCPO,2243,90130,255,155,205,101,VC,,,,, -Dorsal column nuclei,DCN,720,90200,255,177,176,386,MY-sen,Dorsal column nuclei,DCN,,, -Cuneate nucleus,Cu,711,90300,255,177,177,720,DCN,Cuneate nucleus,CU,,, -"Cuneate nucleus, dorsal part",CuD,2285,90310,255,177,177,711,Cu,,,,, -"Cuneate nucleus, rotundus part",CuR,2278,90320,255,177,177,711,Cu,,,,, -Gracile nucleus,Gr,1039,90400,255,177,178,720,DCN,Gracile nucleus,GR,,, -External cuneate nucleus,ECu,903,90500,255,176,179,386,MY-sen,External cuneate nucleus,ECU,,, -Nucleus of the trapezoid body,Tz,642,90600,255,176,181,386,MY-sen,Nucleus of the trapezoid body,NTB,,, -Trigeminal-solitary transition zone,5Sol,2249,90610,255,176,181,386,MY-sen,,,,, -Solitary nucleus,Sol,651,90700,255,178,176,386,MY-sen,Nucleus of the solitary tract,NTS,,, -"Solitary nucleus, central part",SolCe,659,90800,255,178,177,651,Sol,"Nucleus of the solitary tract, central part",NTSce,,, -"Solitary nucleus, commissural part",SolC,666,90900,255,178,178,651,Sol,"Nucleus of the solitary tract, commissural part",NTSco,,, -"Solitary nucleus, gelatinous part",SolG,674,91000,255,178,179,651,Sol,"Nucleus of the solitary tract, gelatinous part",NTSge,,, -"Solitary nucleus, intermediate part",SolIM,2250,91010,255,178,179,651,Sol,,,,, -"Solitary nucleus, lateral part",SolL,682,91100,255,178,180,651,Sol,"Nucleus of the solitary tract, lateral part",NTSl,,, -"Solitary nucleus, medial part",SolM,691,91200,255,178,181,651,Sol,"Nucleus of the solitary tract, medial part",NTSm,,, -"Solitary nucleus, ventral part",SolV,2263,91210,255,178,181,651,Sol,,,,, -"Solitary nucleus, ventrolateral part",SolVL,2273,91220,255,178,181,651,Sol,,,,, -"Solitary nucleus, dorsolateral part",SolDL,2271,91230,255,178,181,651,Sol,,,,, -"Solitary nucleus, dorsomedial part",SolDM,2264,91240,255,178,181,651,Sol,,,,, -"Solitary nucleus, interstitial part",SolI,2265,91250,255,178,181,651,Sol,,,,, -"Soltary nucleus, rostrolateral part",SolRL,2470,91260,255,178,181,651,Sol,,,,, -"Spinal trigeminal nucleus, caudal part",Sp5C,429,91300,255,176,183,386,MY-sen,"Spinal nucleus of the trigeminal, caudal part",SPVC,,, -"Spinal trigeminal nucleus, interpolar part",Sp5I,437,91400,255,176,184,386,MY-sen,"Spinal nucleus of the trigeminal, interpolar part",SPVI,,, -"Spinal trigeminal nucleus, oral part",Sp5O,445,91500,255,176,182,386,MY-sen,"Spinal nucleus of the trigeminal, oral part",SPVO,,, -,,,,,,,,,"Spinal nucleus of the trigeminal, oral part, caudal dorsomedial part",SPVOcdm,,, -,,,,,,,,,"Spinal nucleus of the trigeminal, oral part, middle dorsomedial part, dorsal zone",SPVOmdmd,,, -,,,,,,,,,"Spinal nucleus of the trigeminal, oral part, middle dorsomedial part, ventral zone",SPVOmdmv,,, -Dorsomedial spinal trigeminal nucleus,DMSp5,45,91900,255,176,182,445,Sp5O,"Spinal nucleus of the trigeminal, oral part, rostral dorsomedial part",SPVOrdm,,, -,,,,,,,,,"Spinal nucleus of the trigeminal, oral part, ventrolateral part",SPVOvl,,, -Paratrigeminal nucleus,Pa5,2270,92010,255,176,182,386,MY-sen,,,,, -,,,,,,,,,Nucleus z,z,,, -"Medulla, motor related",MY-mot,370,92200,255,212,219,354,MY,"Medulla, motor related",MY-mot,,, -A5 noradrenaline cells,A5,2246,92201,255,79,87,354,MY,,,,, -Ad1 adrenaline cells,Ad1,2477,92202,255,79,87,370,MY-mot,,,,, -Ad2 adrenaline cells,Ad2,2478,92203,255,79,87,370,MY-mot,,,,, -Ad3 adrenaline cells,Ad3,2266,92204,255,79,87,370,MY-mot,,,,, -"Subcoeruleus nucleus, alpha part",SubCA,2198,92210,255,212,219,370,MY-mot,,,,, -"Subcoeruleus nucleus, dorsal part",SubCD,2199,92220,255,212,219,370,MY-mot,,,,, -"Subcoeruleus nucleus, ventral part",SubCV,2200,92230,255,212,219,370,MY-mot,,,,, -Abducens nucleus,6N,653,92300,255,212,225,370,MY-mot,Abducens nucleus,VI,,, -Paraabducens nucleus,Pa6,2229,92310,255,212,225,653,6N,,,,, -"Abducens nucleus, retractor bulbi part",6RB,2228,92400,255,212,226,370,MY-mot,,,,, -Facial nucleus,7N,661,92500,255,212,234,370,MY-mot,Facial motor nucleus,VII,,, -Perifacial zone,P7,2226,92510,255,212,234,661,7N,,,,, -"Facial nucleus, lateral subnucleus",7L,2462,92520,255,212,234,661,7N,,,,, -"Facial nucleus, dorsolateral subnucleus",7DL,2463,92530,255,212,234,661,7N,,,,, -"Facial nucleus, ventral intermediate subnucleus",7VI,2464,92540,255,212,234,661,7N,,,,, -"Facial nucleus, dorsal intermediate subnucleus",7DI,2465,92550,255,212,234,661,7N,,,,, -"Facial nucleus, dorsomedial subnucleus",7DM,2466,92560,255,212,234,661,7N,,,,, -"Facial nucleus, ventromedial subnucleus",7VM ,2467,92570,255,212,234,661,7N,,,,, -"Facial motor nucleus, stylohyoid part",7SH,576,92600,255,212,235,370,MY-mot,Accessory facial motor nucleus,ACVII,,, -Nucleus of the origin of efferents of the vestibular nerve,EVe,640,92700,255,212,230,370,MY-mot,Efferent vestibular nucleus,EV,,, -Ambiguus nucleus,Amb,2472,92800,255,212,216,370,MY-mot,Nucleus ambiguus,AMB,,, -"Ambiguus nucleus, compact part",AmbC,135,92810,255,212,216,2472,Amb,"Nucleus ambiguus, compact part",AMBc,,, -"Ambiguus nucleus, loose part",AmbL,2277,92820,255,212,216,2472,Amb,,,,, -Retroambiguus nucleus,RAmb,2471,92830,255,212,216,2472,Amb,,,,, -,,,,,,,,,"Nucleus ambiguus, dorsal division",AMBd,,, -,,,,,,,,,"Nucleus ambiguus, ventral division",AMBv,,, -Vagus nerve nucleus,10N,839,93100,255,212,184,370,MY-mot,Dorsal motor nucleus of the vagus nerve,DMX,,, -,,,,,,,,,Efferent cochlear group,ECO,,, -Gigantocellular reticular nucleus,Gi,1048,93300,255,212,187,370,MY-mot,Gigantocellular reticular nucleus,GRN,,, -"Gigantocellular reticular nucleus, alpha part",GiA,2223,93310,255,212,187,1048,Gi,,,,, -"Gigantocellular reticular nucleus, ventral part",GiV,2224,93320,255,212,187,1048,Gi,,,,, -,,,,,,,,,Infracerebellar nucleus,ICB,,, -Inferior olivary nucleus,IO,83,93500,255,212,189,370,MY-mot,Inferior olivary complex,IO,,, -"Inferior olive, subnucleus A of medial nucleus",IOA,2253,93510,255,212,189,83,IO,,,,, -"Inferior olive, subnucleus B of medial nucleus",IOB,2254,93520,255,212,189,83,IO,,,,, -"Inferior olive, subnucleus C of medial nucleus",IOC,2255,93530,255,212,189,83,IO,,,,, -"Inferior olive, dorsal nucleus",IOD,2256,93540,255,212,189,83,IO,,,,, -"Inferior olive, dorsomedial cell group",IODM,2257,93550,255,212,189,83,IO,,,,, -"Inferior olive, principal nucleus",IOPr,2258,93560,255,212,189,83,IO,,,,, -"Inferior olive, ventrolateral protrusion",IOVL,2259,93570,255,212,189,83,IO,,,,, -"Inferior olive, cap of Kooy of the medial nucleus",IOK,2260,93580,255,212,189,83,IO,,,,, -"Inferior olive, beta subnucleus of the medial nucleus",IOBe,2261,93590,255,212,189,83,IO,,,,, -"Inferior olive, medial nucleus",IOM,2262,93595,255,212,189,83,IO,,,,, -Intermediate reticular nucleus,IRt,136,93600,255,212,187,370,MY-mot,Intermediate reticular nucleus,IRN,,, -"Intermediate reticular nucleus, alpha part",IRtA,2225,93610,255,212,187,136,IRt,,,,, -Inferior salivatory nucleus,IS,106,93700,255,212,190,370,MY-mot,Inferior salivatory nucleus,ISN,,, -Linear nucleus of the hindbrain,Li,203,93800,255,212,191,370,MY-mot,Linear nucleus of the medulla,LIN,,, -Lateral reticular nucleus,LRt,235,93900,255,212,193,370,MY-mot,Lateral reticular nucleus,LRN,,, -,,,,,,,,,"Lateral reticular nucleus, magnocellular part",LRNm,,, -"Lateral reticular nucleus, parvicellular part",LRtPC,963,94100,255,212,193,235,LRt,"Lateral reticular nucleus, parvicellular part",LRNp,,, -,,,,,,,,,Magnocellular reticular nucleus,MARN,,, -Paramedian reticular nucleus,PMn,395,94300,255,212,195,370,MY-mot,Medullary reticular nucleus,MDRN,,, -"Medullary reticular nucleus, dorsal part",MdD,1098,94400,255,212,195,395,PMn,"Medullary reticular nucleus, dorsal part",MDRNd,,, -"Medullary reticular nucleus, ventral part",MdV,1107,94500,255,212,195,395,PMn,"Medullary reticular nucleus, ventral part",MDRNv,,, -Parvicellular reticular nucleus,PCRt,852,94600,255,212,196,370,MY-mot,Parvicellular reticular nucleus,PARN,,, -"Parvicellular reticular nucleus, alpha part",PCRtA,2214,94610,255,212,196,852,PCRt,,,,, -Trigeminal transition zone,5Tr,2211,94620,255,212,196,370,MY-mot,,,,, -Parasolitary nucleus,PSol,859,94700,255,212,197,370,MY-mot,Parasolitary nucleus,PAS,,, -Lateral paragigantocellular nucleus,LPGi,938,94800,255,212,198,370,MY-mot,Paragigantocellular reticular nucleus,PGRN,,, -"Lateral paragigantocellular nucleus, external part",LPGiE,2248,94810,255,212,198,938,LPGi,,,,, -Dorsal paragigantocellular nucleus,DPGi,970,94900,255,212,198,938,LPGi,"Paragigantocellular reticular nucleus, dorsal part",PGRNd,,, -"Paragigantocellular reticular nucleus, lateral part",PGRNl,978,95000,255,212,198,938,LPGi,"Paragigantocellular reticular nucleus, lateral part",PGRNl,,, -Caudoventrolateral reticular nucleus,CVL,2252,95010,255,212,198,370,PGRNl,,,,, -Rostroventrolateral reticular nucleus,RVL,2469,95020,255,212,198,370,PGRNl,,,,, -Rostral ventral respiratory group,RVRG,2269,95030,255,212,198,370,PGRNl,,,,, -Botzinger complex,Bo,2468,95040,255,212,198,370,MY-mot,,,,, -Pre-Botzinger complex,PrBo,2251,95050,255,212,198,2468,Bo,,,,, -Perihypoglossal nuclei,PHY,154,95100,255,212,219,370,MY-mot,Perihypoglossal nuclei,PHY,,, -Intercalated nucleus,In,161,95200,255,212,219,154,PHY,Nucleus intercalatus,NIS,,, -Intermedius nucleus of the medulla,InM,2276,95210,255,212,219,161,In,,,,, -Nucleus of Roller,Ro,177,95300,255,212,221,154,PHY,Nucleus of Roller,NR,,, -Prepositus nucleus,Pr,169,95400,255,212,219,154,PHY,Nucleus prepositus,PRP,,, -,,,,,,,,,Paramedian reticular nucleus,PMR,,, -Parapyramidal nucleus,PPy,1069,95600,255,212,200,370,MY-mot,Parapyramidal nucleus,PPY,,, -,,,,,,,,,"Parapyramidal nucleus, deep part",PPYd,,, -,,,,,,,,,"Parapyramidal nucleus, superficial part",PPYs,,, -Vestibulocerebellar nucleus,VeCb,701,95900,255,212,201,370,MY-mot,Vestibular nuclei,VNC,,, -Lateral vestibular nucleus,LVe,209,96000,255,214,201,701,VeCb,Lateral vestibular nucleus,LAV,,, -Medial vestibular nucleus,MVe,202,96100,255,216,201,701,VeCb,Medial vestibular nucleus,MV,,, -"Medial vestibular nucleus, magnocellular part",MVeMC,2232,96110,255,216,201,202,MVe,,,,, -"Medial vestibular nucleus, parvicellular part",MVePC,2233,96120,255,216,201,202,MVe,,,,, -"Medial vestibular nucleus, parvicellular part, dorsal",MVePd,2368,96130,255,216,201,2233,MVePC,"Medial vestibular nucleus, parvicellular part, dorsal",MVpd,,, -"Medial vestibular nucleus, parvicellular part, ventral",MVePv,2369,96140,255,216,201,2233,MVePC,"Medial vestibular nucleus, parvicellular part, ventral",MVpv,,, -Spinal vestibular nucleus,SpVe,225,96200,255,212,201,701,VeCb,Spinal vestibular nucleus,SPIV,,, -Superior vestibular nucleus,SuVe,217,96210,255,212,201,701,VeCb,Superior vestibular nucleus,SUV,,, -F cell group of the vestibular complex,FVe,2268,96310,255,212,201,701,VeCb,,,,, -Paracochlear glial substance,PCGS,2218,96320,255,212,201,701,VeCb,,,,, -Nucleus X,X,765,96400,255,212,202,370,MY-mot,Nucleus x,x,,, -Matrix region of the medulla,Mx,2267,96410,255,212,202,370,MY-mot,,,,, -Hypoglossal nucleus,12N,773,96500,255,212,192,370,MY-mot,Hypoglossal nucleus,XII,,, -Central cervical nucleus of the spinal cord,CeCv,2272,96510,255,212,192,370,MY-mot,,,,, -Nucleus Y of the vestibular complex,Y,781,96600,255,212,203,370,MY-mot,Nucleus y,y,,, -,,,,,,,,,Interstitial nucleus of the vestibular nerve,INV,,, -"Medulla, behavioral state related",MY-sat,379,96800,255,176,192,354,MY,"Medulla, behavioral state related",MY-sat,,, -raphÈ magnus nucleus,RMg,206,96900,255,176,193,379,MY-sat,Nucleus raphÈ magnus,RM,,, -raphÈ interpositus nucleus,RIP,2212,96910,255,176,193,206,RMg,,,,, -raphÈ pallidus nucleus,RPa,230,97000,255,176,195,379,MY-sat,Nucleus raphÈ pallidus,RPA,,, -raphÈ obscurus nucleus,ROb,222,97100,255,176,194,379,MY-sat,Nucleus raphÈ obscurus,RO,,, -fiber tracts,fiber_tracts,1009,97200,204,204,204,997,root,fiber tracts,fiber_tracts,,, -basilar artery,bas,2155,97210,204,204,204,997,fiber_tracts,,,,, -cranial nerves,cm,967,97300,204,204,204,1009,fiber_tracts,cranial nerves,cm,,, -,,,,,,,,,terminal nerve,tn,,, -vomeronasal nerve,vn,949,97500,204,204,204,967,cm,vomeronasal nerve,von,,, -olfactory nerve,In,840,97600,204,204,204,967,cm,olfactory nerve,In,,, -olfactory nerve layer,ON,1016,97700,204,204,204,840,In,olfactory nerve layer of main olfactory bulb,onl,,, -"lateral olfactory tract, general",lotg,21,97800,204,204,204,840,In,"lateral olfactory tract, general",lotg,,, -lateral olfactory tract,lo,665,97900,204,204,204,21,lotg,dorsal lateral olfactory tract,dlo,,, -dorsal lateral olfactory tract,dlo,2279,97900,204,204,204,21,lotg,"lateral olfactory tract, body",lot,,, -,,,,,,,,,dorsal limb,lotd,,, -accessory olfactory tract,aot,459,98100,204,204,204,21,lotg,accessory olfactory tract,aolt,,, -"anterior commissure, anterior part",aca,900,98200,204,204,204,840,In,"anterior commissure, olfactory limb",aco,,, -"anterior commissure, intrabulbar part",aci,2317,98210,204,204,204,840,In,,,,, -optic nerve,2n,848,98300,204,204,204,967,cm,optic nerve,IIn,,, -,,,,,,,,,accessory optic tract,aot,,, -brachium of the superior colliculus,bsc,916,98500,204,204,204,848,2n,brachium of the superior colliculus,bsc,,, -commissure of the superior colliculus,csc,336,98600,204,204,204,848,2n,superior colliculus commissure,csc,,, -optic chiasm,och,117,98700,204,204,204,848,2n,optic chiasm,och,,, -optic tract,opt,125,98800,204,204,204,848,2n,optic tract,opt,,, -supraoptic decussation,sox,2040,98810,204,204,204,848,2n,,,,, -,,,,,,,,,tectothalamic pathway,ttp,,, -oculomotor nerve,3n,832,99000,204,204,204,967,cm,oculomotor nerve,IIIn,,, -medial longitudinal fasciculus,mlf,62,99100,204,204,204,832,3n,medial longitudinal fascicle,mlf,,, -posterior commissure,pc,158,99200,204,204,204,832,3n,posterior commissure,pc,,, -trochlear nerve,4n,911,99300,204,204,204,967,cm,trochlear nerve,IVn,,, -,,,,,,,,,trochlear nerve decussation,IVd,,, -,,,,,,,,,abducens nerve,VIn,,, -trigeminal nerve,5n,901,99600,204,204,204,967,cm,trigeminal nerve,Vn,,, -motor root of the trigeminal nerve,m5,93,99700,204,204,204,901,5n,motor root of the trigeminal nerve,moV,,, -sensory root of the trigeminal nerve,s5,229,99800,204,204,204,901,5n,sensory root of the trigeminal nerve,sV,,, -mesencephalic trigeminal tract,me5,705,99900,204,204,204,229,s5,midbrain tract of the trigeminal nerve,mtV,,, -spinal trigeminal tract,sp5,794,100000,204,204,204,229,s5,spinal tract of the trigeminal nerve,sptV,,, -facial nerve,7n,798,100100,204,204,204,967,cm,facial nerve,VIIn,,, -ascending fibers of the facial nerve,asc7,1131,100200,204,204,204,798,7n,intermediate nerve,iVIIn,,, -genu of the facial nerve,g7,1116,100300,204,204,204,798,7n,genu of the facial nerve,gVIIn,,, -vestibulocochlear nerve,8n,933,100400,204,204,204,967,cm,vestibulocochlear nerve,VIIIn,,, -interstitial nucleus of the vestibular part of the 8th nerve,I8,2461,100410,204,204,204,933,8n,,,,, -,,,,,,,,,efferent cochleovestibular bundle,cvb,,, -vestibular root of the vestibulocochlear nerve,8vn,413,100600,204,204,204,933,8n,vestibular nerve,vVIIIn,,, -cochlear nerve,8cn,948,100700,204,204,204,933,VIIIn,cochlear nerve,cVIIIn,,, -olivocochlear bundle,ocb,2222,100710,204,204,204,967,cm,,,,, -trapezoid body,tz,841,100800,204,204,204,948,8cn,trapezoid body,tb,,, -,,,,,,,,,intermediate acoustic stria,ias,,, -dorsal acoustic stria,das,506,101000,204,204,204,948,8cn,dorsal acoustic stria,das,,, -lateral lemniscus,ll,658,101100,204,204,204,948,8cn,lateral lemniscus,ll,,, -commissure of the inferior colliculus,cic,633,101200,204,204,204,948,8cn,inferior colliculus commissure,cic,,, -brachium of the inferior colliculus,bic,482,101300,204,204,204,948,8cn,brachium of the inferior colliculus,bic,,, -glossopharyngeal nerve,9n,808,101400,204,204,204,967,cm,glossopharyngeal nerve,IXn,,, -vagus nerve,10n,917,101500,204,204,204,967,cm,vagus nerve,Xn,,, -solitary tract,sol,237,101600,204,204,204,917,10n,solitary tract,ts,,, -,,,,,,,,,accessory spinal nerve,XIn,,, -hypoglossal nerve,12n,813,101800,204,204,204,967,cm,hypoglossal nerve,XIIn,,, -,,,,,,,,,ventral roots,vrt,,, -dorsal roots,drt,792,102000,204,204,204,967,cm,dorsal roots,drt,,, -cervicothalamic tract,cett,932,102100,204,204,204,792,drt,cervicothalamic tract,cett,,, -,,,,,,,,,dorsolateral fascicle,dl,,, -,,,,,,,,,dorsal commissure of the spinal cord,dcm,,, -,,,,,,,,,ventral commissure of the spinal cord,vc,,, -,,,,,,,,,fasciculus proprius,fpr,,, -dorsal column,dc,514,102600,204,204,204,932,cett,dorsal column,dc,,, -cuneate fascicle,cu,380,102700,204,204,204,514,dc,cuneate fascicle,cuf,,, -gracile fasciculus,gr,388,102800,204,204,204,514,dc,gracile fascicle,grf,,, -,,,,,,,,,internal arcuate fibers,iaf,,, -medial lemniscus,ml,697,103000,204,204,204,932,cett,medial lemniscus,ml,,, -spinothalamic tract,sst,871,103100,204,204,204,967,cm,spinothalamic tract,sst,,, -,,,,,,,,,lateral spinothalamic tract,sttl,,, -,,,,,,,,,ventral spinothalamic tract,sttv,,, -,,,,,,,,,spinocervical tract,scrt,,, -,,,,,,,,,spino-olivary pathway,sop,,, -,,,,,,,,,spinoreticular pathway,srp,,, -vestibulospinal tract,vesp,293,103700,204,204,204,871,sst,spinovestibular pathway,svp,,, -,,,,,,,,,spinotectal pathway,stp,,, -,,,,,,,,,spinohypothalamic pathway,shp,,, -hypothalamohypophysial tract,hht,627,103800,204,204,204,1009,fiber_tracts,spinotelenchephalic pathway,step,,, -,,,,,,,,,hypothalamohypophysial tract,hht,,, -cerebellum related fiber tracts,cbf,960,104200,204,204,204,1009,fiber_tracts,cerebellum related fiber tracts,cbf,,, -cerebellar commissure,cbc,744,104300,204,204,204,960,cbf,cerebellar commissure,cbc,,, -cerebellar peduncles,cbp,752,104400,204,204,204,960,cbf,cerebellar peduncles,cbp,,, -superior cerebellar peduncle,scp,326,104500,204,204,204,752,cbp,superior cerebelar peduncles,scp,,, -decussation of the superior cerebellar peduncle,xscp,812,104600,204,204,204,326,scp,superior cerebellar peduncle decussation,dscp,,, -ventral spinocerebellar tract,vsc,85,104700,204,204,204,812,xscp,spinocerebellar tract,sct,,, -uncinate fasciculus of the cerebellum,un,850,104800,204,204,204,326,scp,uncinate fascicle,uf,,, -ventral spinocerebellar tract,vsc,866,104900,204,204,204,326,scp,ventral spinocerebellar tract,sctv,,, -middle cerebellar peduncle,mcp,78,105000,204,204,204,752,cbp,middle cerebellar peduncle,mcp,,, -transverse fibers of the pons,tfp,2167,105010,204,204,204,78,mcp,,,,, -inferior cerebellar peduncle,icp,1123,105100,204,204,204,752,cbp,inferior cerebellar peduncle,icp,,, -dorsal spinocerebellar tract,dsc,553,105200,204,204,204,1123,icp,dorsal spinocerebellar tract,sctd,,, -,,,,,,,,,cuneocerebellar tract,cct,,, -,,,,,,,,,juxtarestiform body,jrb,,, -bulbocerebellar tract,bct,490,105500,204,204,204,1123,icp,bulbocerebellar tract,bct,,, -olivocerebellar tract,oc,404,105600,204,204,204,490,bct,olivocerebellar tract,oct,,, -,,,,,,,,,reticulocerebellar tract,rct,,, -,,,,,,,,,trigeminocerebellar tract,tct,,, -cerebellar white matter,cbw,2275,105810,204,204,204,967,cm,,,,, -middle cerebellar peduncle,mcp,728,105900,204,204,204,960,cbf,arbor vitae,arb,,, -lateral forebrain bundle system,lfbs,983,106000,204,204,204,1009,fiber_tracts,lateral forebrain bundle system,lfbs,,, -corpus callosum,cc,776,106100,204,204,204,983,lfbs,corpus callosum,cc,,, -forceps minor of the corpus callosum,fmi,956,106200,204,204,204,776,cc,"corpus callosum, anterior forceps",fa,,, -external capsule,ec,579,106300,204,204,204,956,fmi,external capsule,ec,,, -,,,,,,,,,"corpus callosum, extreme capsule",ee,,, -genu of the corpus callosum,gcc,1108,106500,204,204,204,776,cc,genu of corpus callosum,ccg,,, -forceps major of the corpus callosum,fmj,971,106600,204,204,204,776,cc,"corpus callosum, posterior forceps",fp,,, -,,,,,,,,,"corpus callosum, rostrum",ccr,,, -splenium of the corpus callosum,scc,986,106800,204,204,204,776,cc,"corpus callosum, splenium",ccs,,, -corticospinal tract,cst,784,106900,204,204,204,983,lfbs,corticospinal tract,cst,,, -internal capsule,ic,6,107000,204,204,204,784,cst,internal capsule,int,,, -cerebral peduncle,cp,924,107100,204,204,204,784,cst,cerebal peduncle,cpd,,, -,,,,,,,,,corticotectal tract,cte,,, -,,,,,,,,,corticorubral tract,crt,,, -,,,,,,,,,corticopontine tract,cpt,,, -,,,,,,,,,corticobulbar tract,cbt,,, -pyramidal tract,py,190,107600,204,204,204,784,cst,pyramid,py,,, -pyramidal decussation,pyx,198,107700,204,204,204,784,cst,pyramidal decussation,pyd,,, -,,,,,,,,,"corticospinal tract, crossed",cstc,,, -,,,,,,,,,"corticospinal tract, uncrossed",cstu,,, -longitudinal fasciculus of the pons,lfp,2169,107910,204,204,204,784,cst,,,,, -thalamus related,lfbst,896,108000,204,204,204,983,lfbs,thalamus related,lfbst,,, -External medullary lamina,eml,1092,108100,204,204,204,896,lfbst,external medullary lamina of the thalamus,em,,, -internal medullary lamina,iml,14,108200,204,204,204,896,lfbst,internal medullary lamina of the thalamus,im,,, -superior thalamic radiation,str,2109,108210,204,204,204,896,lfbst,,,,, -,,,,,,,,,middle thalamic commissure,mtc,,, -,,,,,,,,,thalamic peduncles,tp,,, -extrapyramidal fiber systems,eps,1000,108500,204,204,204,1009,fiber_tracts,extrapyramidal fiber systems,eps,,, -cerebral nuclei related,epsc,760,108600,204,204,204,1000,eps,cerebral nuclei related,epsc,,, -,,,,,,,,,pallidothalmic pathway,pap,,, -nigrostriatal bundle,ns,102,108800,204,204,204,760,epsc,nigrostriatal tract,nst,,, -,,,,,,,,,nigrothalamic fibers,ntt,,, -,,,,,,,,,pallidotegmental fascicle,ptf,,, -,,,,,,,,,striatonigral pathway,snp,,, -,,,,,,,,,subthalamic fascicle,stf,,, -tectospinal tract,ts,877,109300,204,204,204,1000,eps,tectospinal pathway,tsp,,, -,,,,,,,,,direct tectospinal pathway,tspd,,, -dorsal tegmental decussation,dtgx,1060,109500,204,204,204,877,ts,doral tegmental decussation,dtd,,, -,,,,,,,,,crossed tectospinal pathway,ig,,, -rubrospinal tract,rs,863,109700,204,204,204,1000,eps,rubrospinal tract,rust,,, -ventral tegmental decussation,vtgx,397,109800,204,204,204,863,rs,ventral tegmental decussation,vtd,,, -,,,,,,,,,rubroreticular tract,rrt,,, -,,,,,,,,,central tegmental bundle,ctb,,, -,,,,,,,,,retriculospinal tract,rst,,, -,,,,,,,,,"retriculospinal tract, lateral part",rstl,,, -,,,,,,,,,"retriculospinal tract, medial part",rstm,,, -vestibulomesencephalic tract,veme,941,110400,204,204,204,1000,eps,vestibulospinal pathway,vsp,,, -medial forebrain bundle system,mfbs,991,110500,204,204,204,1009,fiber_tracts,medial forebrain bundle system,mfbs,,, -cerebrum related,mfbc,768,110600,204,204,204,991,mfbs,cerebrum related,mfbc,,, -,,,,,,,,,amygdalar capsule,amc,,, -,,,,,,,,,ansa peduncularis,apd,,, -"anterior commissure, posterior limb",acp,908,110900,204,204,204,768,mfbc,"anterior commissure, temporal limb",act,,, -cingulum,cg,940,111000,204,204,204,768,mfbc,cingulum bundle,cing,,, -fornix system,fxs,1099,111100,204,204,204,768,mfbc,fornix system,fxs,,, -alveus of the hippocampus,alv,466,111200,204,204,204,1099,fxs,alveus,alv,,, -dorsal fornix,df,530,111300,204,204,204,1099,fxs,dorsal fornix,df,,, -fimbria of the hippocampus,fi,603,111400,204,204,204,1099,fxs,fimbria,fi,,, -,,,,,,,,,"precommissural fornix, general",fxprg,,, -,,,,,,,,,precommissural fornix diagonal band,db,,, -postcommissural fornix,fxpo,737,111700,204,204,204,1099,fxs,postcommissural fornix,fxpo,,, -,,,,,,,,,medial corticohypothalmic tract,mct,,, -fornix,f,436,111900,204,204,204,737,fxpo,columns of the fornix,fx,,, -hippocampal commissures,hc,618,112000,204,204,204,1099,fxs,hippocampal commissures,hc,,, -dorsal hippocampal commissure,dhc,443,112100,204,204,204,618,hc,dorsal hippocampal commissure,dhc,,, -ventral hippocampal commissure,vhc,449,112200,204,204,204,618,hc,ventral hippocampal commissure,vhc,,, -,,,,,,,,,perforant path,per,,, -,,,,,,,,,angular path,ab,,, -longitudinal association bundle,lab,37,112500,204,204,204,768,mfbc,longitudinal association bundle,lab,,, -stria terminalis,st,301,112600,204,204,204,768,mfbc,stria terminalis,st,,, -commissural stria terminalis,cst,2394,112610,204,204,204,301,st,,,,, -hypothalamus related,mfsbshy,824,112700,204,204,204,991,mfbs,hypothalamus related,mfsbshy,,, -medial forebrain bundle,mfb,54,112800,204,204,204,824,mfsbshy,medial forebrain bundle,mfb,,, -,,,,,,,,,ventrolateral hypothalamic tract,vlt,,, -,,,,,,,,,preoptic commissure,poc,,, -,,,,,,,,,supraoptic commissures,sup,,, -,,,,,,,,,"supraoptic commissures, anterior",supa,,, -,,,,,,,,,"supraoptic commissures, dorsal",supd,,, -,,,,,,,,,"supraoptic commissures, ventral",supv,,, -,,,,,,,,,premammillary commissure,pmx,,, -retromammillary decussation,rmx,341,113600,204,204,204,824,mfsbshy,supramammillary decussation,smd,,, -,,,,,,,,,propriohypothalamic pathways,php,,, -,,,,,,,,,"propriohypothalamic pathways, dorsal",phpd,,, -,,,,,,,,,"propriohypothalamic pathways, lateral",phpl,,, -,,,,,,,,,"propriohypothalamic pathways, medial",phpm,,, -,,,,,,,,,"propriohypothalamic pathways, ventral",phpv,,, -,,,,,,,,,periventricular bundle of the hypothalamus,pvbh,,, -mammillary related,mfbsma,46,114300,204,204,204,824,mfsbshy,mammillary related,mfbsma,,, -principal mammillary tract,pm,753,114400,204,204,204,46,mfbsma,principal mammillary tract,pm,,, -mammilothalmic tract,mt,690,114500,204,204,204,46,mfbsma,mammilothalmic tract,mtt,,, -mammillotegmental tract,mtg,681,114600,204,204,204,46,mfbsma,mammillotegmental tract,mtg,,, -mammillary peduncle,mp,673,114700,204,204,204,46,mfbsma,mammillary peduncle,mp,,, -,,,,,,,,,dorsal thalamus related,mfbst,,, -,,,,,,,,,periventricular bundle of the thalamus,pvbt,,, -epithalamus related,mfbse,1083,115000,204,204,204,824,mfsbshy,epithalamus related,mfbse,,, -stria medullaris,sm,802,115100,204,204,204,1083,mfbse,stria medullaris,sm,,, -fasciculus retroflexus,fr,595,115200,204,204,204,1083,mfbse,fasciculus retroflexus,fr,,, -habenular commissure,hbc,611,115300,204,204,204,1083,mfbse,habenular commissure,hbc,,, -,,,,,,,,,pineal stalk,PIS,,, -,,,,,,,,,midbrain related,mfbsm,,, -,,,,,,,,,dorsal longitudinal fascicle,dlf,,, -,,,,,,,,,dorsal tegmental tract,dtt,,, -ventricular systems,VS,73,115800,170,170,170,997,root,ventricular systems,VS,,, -lateral ventricle,LV,81,115900,170,170,170,73,VS,lateral ventricle,VL,,, -,,,,,,,,,rhinocele,RC,,, -ependymal and subendymal layer/olfacotry ventricle,E/OV,98,116100,170,170,170,81,LV,subependymal zone,SEZ,,, -choroid plexus,chp,108,116200,170,170,170,81,LV,choroid plexus,chpl,,, -,,,,,,,,,choroid fissure,chfl,,, -interventricular foramen,IVF,124,116400,170,170,170,73,VS,interventricular foramen,IVF,,, -3rd Ventricle,3V,129,116500,170,170,170,73,VS,third ventricle,V3,,, -dorsal third ventricle,D3V,2373,116510,170,170,170,129,3V,,,,, -aqueduct,Aq,140,116600,170,170,170,73,VS,cerebral aqueduct,AQ,,, -4th Ventricle,4V,145,116700,170,170,170,73,VS,fourth ventricle,V4,,, -superior medullary velum,SMV,2219,116710,170,170,170,145,4V,,,,, -lateral recess of the 4th ventricle,LR4V,153,116800,170,170,170,145,4V,lateral recess,V4r,,, -central canal,CC,164,116900,170,170,170,73,VS,"central canal, spinal cord/medulla",c,,, -grooves,grv,1024,117000,170,170,170,997,root,grooves,grv,,, -grooves of the cerebral cortex,grv_of_CTX,1032,117100,170,170,170,1024,grv,grooves of the cerebral cortex,grv_of_CTX,,, -,,,,,,,,,endorhinal groove,eg,,, -hippocampal fissure,hif,1063,117300,170,170,170,1032,grv_of_CTX,hippocampal fissure,hf,,, -rhinal fissure,rf,1071,117400,170,170,170,1032,grv_of_CTX,rhinal fissure,rf,,, -,,,,,,,,,rhinal incisure,ri,,, -grooves of the cerebellar cortex,grv_of_CBX,1040,117600,170,170,170,1024,grv,grooves of the cerebellar cortex,grv_of_CBX,,, -precentral fissure,pcn,1087,117700,170,170,170,1040,grv_of_CBX,precentral fissure,pce,,, -preculminate,pcuf,1095,117800,170,170,170,1040,grv_of_CBX,preculminate fissure,pcf,,, -primary fissure,prf,1103,117900,170,170,170,1040,grv_of_CBX,primary fissure,pri,,, -post superior fissure,psf,1112,118000,170,170,170,1040,grv_of_CBX,posterior superior fissure,psf,,, -prepyramidal fissure,ppf,1119,118100,170,170,170,1040,grv_of_CBX,prepyramidal fissure,ppf,,, -secondary fissure,sf,3,118200,170,170,170,1040,grv_of_CBX,secondary fissure,sec,,, -posterolateral fissure,plf,11,118300,170,170,170,1040,grv_of_CBX,posterolateral fissure,plf,,, -,,,,,,,,,nodular fissure,nf,,, -,,,,,,,,,simple fissure,sif,,, -intercrural fissure,icf,34,118600,170,170,170,1040,grv_of_CBX,intercrural fissure,icf,,, -ansoparamedian fissure,apmf,43,118700,170,170,170,1040,grv_of_CBX,ansoparamedian fissure,apf,,, -,,,,,,,,,intraparafloccular fissure,ipf,,, -,,,,,,,,,paramedian sulcus,pms,,, -parafloccular sulcus,pfs,65,119000,170,170,170,1040,grv_of_CBX,parafloccular sulcus,pfs,,, -Interpeduncular fossa,IPF,624,119100,170,170,170,1024,grv,Interpeduncular fossa,IPF,,, diff --git a/ibllib/atlas/genes.py b/ibllib/atlas/genes.py deleted file mode 100644 index f9c8c4b5d..000000000 --- a/ibllib/atlas/genes.py +++ /dev/null @@ -1,18 +0,0 @@ -"""Gene expression maps.""" - -from iblatlas.genomics import agea -from ibllib.atlas import deprecated_decorator - - -@deprecated_decorator -def allen_gene_expression(filename='gene-expression.pqt', folder_cache=None): - """ - Reads in the Allen gene expression experiments binary data. - :param filename: - :param folder_cache: - :return: a dataframe of experiments, where each record corresponds to a single gene expression - and a memmap of all experiments volumes, size (4345, 58, 41, 67) corresponding to - (nexperiments, ml, dv, ap). The spacing between slices is 200 um - """ - - return agea.load(filename=filename, folder_cache=folder_cache) diff --git a/ibllib/atlas/mappings.pqt b/ibllib/atlas/mappings.pqt deleted file mode 100644 index fb5418773..000000000 Binary files a/ibllib/atlas/mappings.pqt and /dev/null differ diff --git a/ibllib/atlas/plots.py b/ibllib/atlas/plots.py deleted file mode 100644 index c6e691877..000000000 --- a/ibllib/atlas/plots.py +++ /dev/null @@ -1,336 +0,0 @@ -""" -Module that has convenience plotting functions for 2D atlas slices and flatmaps. -""" - -import iblatlas.plots as atlas_plots -from ibllib.atlas import deprecated_decorator - - -@deprecated_decorator -def prepare_lr_data(acronyms_lh, values_lh, acronyms_rh, values_rh): - """ - Prepare data in format needed for plotting when providing different region values per hemisphere - - :param acronyms_lh: array of acronyms on left hemisphere - :param values_lh: values for each acronym on left hemisphere - :param acronyms_rh: array of acronyms on right hemisphere - :param values_rh: values for each acronym on left hemisphere - :return: combined acronyms and two column array of values - """ - - return atlas_plots.prepare_lr_data(acronyms_lh, values_lh, acronyms_rh, values_rh) - - -@deprecated_decorator -def reorder_data(acronyms, values, brain_regions=None): - """ - Reorder list of acronyms and values to match the Allen ordering. - - TODO Document more - - Parameters - ---------- - acronyms : array_like of str - The acronyms to match the Allen ordering, whatever that means. - values : array_like - An array of some sort of values I guess... - brain_regions : ibllib.atlas.regions.BrainRegions - A brain regions object. - - Returns - ------- - numpy.array of str - An ordered array of acronyms - numpy.array - An ordered array of values. I don't know what those values are, not IDs, so maybe indices? - """ - - return atlas_plots.reorder_data(acronyms, values, brain_regions=brain_regions) - - -@deprecated_decorator -def plot_scalar_on_slice(regions, values, coord=-1000, slice='coronal', mapping=None, hemisphere='left', - background='image', cmap='viridis', clevels=None, show_cbar=False, empty_color='silver', - brain_atlas=None, ax=None, vector=False, slice_files=None, **kwargs): - """ - Function to plot scalar value per region on histology slice. - - Parameters - ---------- - regions : array_like - An array of brain region acronyms. - values : numpy.array - An array of scalar value per acronym. If hemisphere is 'both' and different values want to - be shown on each hemisphere, values should contain 2 columns, 1st column for LH values, 2nd - column for RH values. - coord : float - Coordinate of slice in um (not needed when slice='top'). - slice : {'coronal', 'sagittal', 'horizontal', 'top'}, default='coronal' - Orientation of slice. - mapping : str, optional - Atlas mapping to use, options are depend on atlas used (see `ibllib.atlas.BrainRegions`). - If None, the atlas default mapping is used. - hemisphere : {'left', 'right', 'both'}, default='left' - The hemisphere to display. - background : {image', 'boundary'}, default='image' - Background slice to overlay onto, options are 'image' or 'boundary'. If `vector` is false, - this argument is ignored. - cmap: str, default='viridis' - Colormap to use. - clevels : array_like - The min and max color levels to use. - show_cbar: bool, default=False - Whether to display a colorbar. - empty_color : str, default='silver' - Color to use for regions without any values (only used when `vector` is true). - brain_atlas : ibllib.atlas.AllenAtlas - A brain atlas object. - ax : matplotlib.pyplot.Axes - An axis object to plot onto. - vector : bool, default=False - Whether to show as bitmap or vector graphic. - slice_files: numpy.array - The set of vectorised slices for this slice, obtained using `load_slice_files(slice, mapping)`. - **kwargs - Set of kwargs passed into matplotlib.patches.Polygon, e.g. linewidth=2, edgecolor='None' - (only used when vector = True). - - Returns - ------- - fig: matplotlib.figure.Figure - The plotted figure. - ax: matplotlib.pyplot.Axes - The plotted axes. - cbar: matplotlib.pyplot.colorbar, optional - matplotlib colorbar object, only returned if show_cbar=True. - """ - - return (atlas_plots.plot_scalar_on_slice(regions, values, coord=coord, slice=slice, mapping=mapping, - hemisphere=hemisphere, background=background, cmap=cmap, clevels=clevels, - show_cbar=show_cbar, empty_color=empty_color, brain_atlas=brain_atlas, - ax=ax, vector=vector, slice_files=slice_files, **kwargs)) - - -@deprecated_decorator -def plot_scalar_on_flatmap(regions, values, depth=0, flatmap='dorsal_cortex', mapping='Allen', hemisphere='left', - background='boundary', cmap='viridis', clevels=None, show_cbar=False, flmap_atlas=None, ax=None): - """ - Function to plot scalar value per allen region on flatmap slice - - :param regions: array of acronyms of Allen regions - :param values: array of scalar value per acronym. If hemisphere is 'both' and different values want to be shown on each - hemispheres, values should contain 2 columns, 1st column for LH values, 2nd column for RH values - :param depth: depth in flatmap in um - :param flatmap: name of flatmap (currently only option is 'dorsal_cortex') - :param mapping: atlas mapping to use, options are 'Allen', 'Beryl' or 'Cosmos' - :param hemisphere: hemisphere to display, options are 'left', 'right', 'both' - :param background: background slice to overlay onto, options are 'image' or 'boundary' - :param cmap: colormap to use - :param clevels: min max color levels [cmin, cmax] - :param show_cbar: whether to add colorbar to axis - :param flmap_atlas: FlatMap object - :param ax: optional axis object to plot on - :return: - """ - - return atlas_plots.plot_scalar_on_slice(regions, values, depth=depth, flatmap=flatmap, mapping=mapping, - hemisphere=hemisphere, background=background, cmap=cmap, clevels=clevels, - show_cbar=show_cbar, flmap_atlas=flmap_atlas, ax=ax) - - -@deprecated_decorator -def plot_volume_on_slice(volume, coord=-1000, slice='coronal', mapping='Allen', background='boundary', cmap='Reds', - clevels=None, show_cbar=False, brain_atlas=None, ax=None): - """ - Plot slice through a volume - - :param volume: 3D array of volume (must be same shape as brain_atlas object) - :param coord: coordinate of slice in um - :param slice: orientation of slice, options are 'coronal', 'sagittal', 'horizontal' - :param mapping: atlas mapping to use, options are 'Allen', 'Beryl' or 'Cosmos' - :param background: background slice to overlay onto, options are 'image' or 'boundary' - :param cmap: colormap to use - :param clevels: min max color levels [cmin, cmax] - :param show_cbar: whether to add colorbar to axis - :param brain_atlas: AllenAtlas object - :param ax: optional axis object to plot on - :return: - """ - - return atlas_plots.plot_volume_on_slice(volume, coord=coord, slice=slice, mapping=mapping, background=background, - cmap=cmap, clevels=clevels, show_cbar=show_cbar, brain_atlas=brain_atlas, - ax=ax) - - -@deprecated_decorator -def plot_points_on_slice(xyz, values=None, coord=-1000, slice='coronal', mapping='Allen', background='boundary', cmap='Reds', - clevels=None, show_cbar=False, aggr='mean', fwhm=100, brain_atlas=None, ax=None): - """ - Plot xyz points on slice. Points that lie in the same voxel within slice are aggregated according to method specified. - A 3D Gaussian smoothing kernel with distance specified by fwhm is applied to images. - - :param xyz: 3 column array of xyz coordinates of points in metres - :param values: array of values per xyz coordinates, if no values are given the sum of xyz points in each voxel is - returned - :param coord: coordinate of slice in um (not needed when slice='top') - :param slice: orientation of slice, options are 'coronal', 'sagittal', 'horizontal', 'top' (top view of brain) - :param mapping: atlas mapping to use, options are 'Allen', 'Beryl' or 'Cosmos' - :param background: background slice to overlay onto, options are 'image' or 'boundary' - :param cmap: colormap to use - :param clevels: min max color levels [cmin, cmax] - :param show_cbar: whether to add colorbar to axis - :param aggr: aggregation method. Options are sum, count, mean, std, median, min and max. - Can also give in custom function (https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.binned_statistic.html) - :param fwhm: fwhm distance of gaussian kernel in um - :param brain_atlas: AllenAtlas object - :param ax: optional axis object to plot on - - :return: - """ - - return atlas_plots.plot_points_on_slice(xyz, values=values, coord=coord, slice=slice, mapping=mapping, - background=background, cmap=cmap, clevels=clevels, show_cbar=show_cbar, - aggr=aggr, fwhm=fwhm, brain_atlas=brain_atlas, ax=ax) - - -@deprecated_decorator -def plot_scalar_on_barplot(acronyms, values, errors=None, order=True, ax=None, brain_regions=None): - """ - Function to plot scalar value per allen region on a bar plot. If order=True, the acronyms and values are reordered - according to the order defined in the Allen structure tree - - Parameters - ---------- - acronyms: numpy.array - A 1D array of acronyms - values: numpy.array - A 1D array of values corresponding to each acronym in the acronyms array - errors: numpy.array - A 1D array of error values corresponding to each acronym in the acronyms array - order: bool, default=True - Whether to order the acronyms according to the order defined by the Allen structure tree - ax : matplotlib.pyplot.Axes - An axis object to plot onto. - brain_regions : ibllib.atlas.regions.BrainRegions - A brain regions object - - Returns - ------- - fig: matplotlib.figure.Figure - The plotted figure - ax: matplotlib.pyplot.Axes - The plotted axes. - - """ - - return atlas_plots.plot_scalar_on_barplot(acronyms, values, errors=errors, order=order, ax=ax, - brain_regions=brain_regions) - - -@deprecated_decorator -def plot_swanson_vector(acronyms=None, values=None, ax=None, hemisphere=None, br=None, orientation='landscape', - empty_color='silver', vmin=None, vmax=None, cmap='viridis', annotate=False, annotate_n=10, - annotate_order='top', annotate_list=None, mask=None, mask_color='w', fontsize=10, **kwargs): - """ - Function to plot scalar value per allen region on the swanson projection. Plots on a vecortised version of the - swanson projection - - Parameters - ---------- - acronyms: numpy.array - A 1D array of acronyms or atlas ids - values: numpy.array - A 1D array of values corresponding to each acronym in the acronyms array - ax : matplotlib.pyplot.Axes - An axis object to plot onto. - hemisphere : {'left', 'right', 'both', 'mirror'} - The hemisphere to display. - br : ibllib.atlas.BrainRegions - A brain regions object. - orientation : {landscape', 'portrait'}, default='landscape' - The plot orientation. - empty_color : str, tuple of int, default='silver' - The greyscale matplotlib color code or an RGBA int8 tuple defining the filling of brain - regions not provided. - vmin: float - Minimum value to restrict the colormap - vmax: float - Maximum value to restrict the colormap - cmap: string - matplotlib named colormap to use - annotate : bool, default=False - If true, labels the regions with acronyms. - annotate_n: int - The number of regions to annotate - annotate_order: {'top', 'bottom'} - If annotate_n is specified, whether to annotate the n regions with the highest (top) or lowest (bottom) values - annotate_list: numpy.array of list - List of regions to annotate, if this is provided, if overwrites annotate_n and annotate_order - mask: numpy.array or list - List of regions to apply a mask to (fill them with a specific color) - mask_color: string, tuple or list - Color for the mask - fontsize : int - The annotation font size in points. - **kwargs - See plot_polygon and plot_polygon_with_hole. - - Returns - ------- - matplotlib.pyplot.Axes - The plotted axes. - - """ - - return atlas_plots.plot_swanson_vector(acronyms=acronyms, values=values, ax=ax, hemisphere=hemisphere, br=br, - orientation=orientation, empty_color=empty_color, vmin=vmin, vmax=vmax, - cmap=cmap, annotate=annotate, annotate_n=annotate_n, - annotate_order=annotate_order, annotate_list=annotate_list, mask=mask, - mask_color=mask_color, fontsize=fontsize, **kwargs) - - -@deprecated_decorator -def plot_swanson(acronyms=None, values=None, ax=None, hemisphere=None, br=None, - orientation='landscape', annotate=False, empty_color='silver', **kwargs): - """ - Displays the 2D image corresponding to the swanson flatmap. - - This case is different from the others in the sense that only a region maps to another regions, - there is no correspondence to the spatial 3D coordinates. - - Parameters - ---------- - acronyms: numpy.array - A 1D array of acronyms or atlas ids - values: numpy.array - A 1D array of values corresponding to each acronym in the acronyms array - ax : matplotlib.pyplot.Axes - An axis object to plot onto. - hemisphere : {'left', 'right', 'both', 'mirror'} - The hemisphere to display. - br : ibllib.atlas.BrainRegions - A brain regions object. - orientation : {landscape', 'portrait'}, default='landscape' - The plot orientation. - empty_color : str, tuple of int, default='silver' - The greyscale matplotlib color code or an RGBA int8 tuple defining the filling of brain - regions not provided. - vmin: float - Minimum value to restrict the colormap - vmax: float - Maximum value to restrict the colormap - cmap: string - matplotlib named colormap to use - annotate : bool, default=False - If true, labels the regions with acronyms. - **kwargs - See matplotlib.pyplot.imshow. - - Returns - ------- - matplotlib.pyplot.Axes - The plotted axes. - """ - - return atlas_plots.plot_swanson(acronyms=acronyms, values=values, ax=ax, hemisphere=hemisphere, br=br, - orientation=orientation, annotate=annotate, empty_color=empty_color, **kwargs) diff --git a/ibllib/atlas/regions.py b/ibllib/atlas/regions.py deleted file mode 100644 index c5f3f609a..000000000 --- a/ibllib/atlas/regions.py +++ /dev/null @@ -1,57 +0,0 @@ -"""Brain region mappings. - -Four mappings are currently available within the IBL, these are: - -* Allen Atlas - total of 1328 annotation regions provided by Allen Atlas. -* Beryl Atlas - total of 308 annotation regions determined by Nick Steinmetz for the brain wide map, mainly at the level of - major cortical areas, nuclei/ganglia. Thus annotations relating to layers and nuclear subregions are absent. -* Cosmos Atlas - total of 10 annotation regions determined by Nick Steinmetz for coarse analysis. Annotations include the major - divisions of the brain only. -* Swanson Atlas - total of 319 annotation regions provided by the Swanson atlas (FIXME which one?). - -Terminology ------------ -* **Name** - The full anatomical name of a brain region. -* **Acronymn** - A shortened version of a brain region name. -* **Index** - The index of the of the brain region within the ordered list of brain regions. -* **ID** - A unique numerical identifier of a brain region. These are typically integers that - therefore take up less space than storing the region names or acronyms. -* **Mapping** - A function that maps one ordered list of brain region IDs to another, allowing one - to control annotation granularity and brain region hierarchy, or to translate brain region names - from one atlas to another. The default mapping is identity. See - [atlas package documentation](./ibllib.atlas.html#mappings) for other mappings. -* **Order** - Each structure is assigned a consistent position within the flattened graph. This - value is known as the annotation index, i.e. the annotation volume contains the brain region - order at each point in the image. - -FIXME Document the two structure trees. Which Website did they come from, and which publication/edition? -""" -import logging -from iblatlas import regions -from ibllib.atlas import deprecated_decorator - -_logger = logging.getLogger(__name__) - - -@deprecated_decorator -def BrainRegions(): - return regions.BrainRegions() - - -@deprecated_decorator -def FranklinPaxinosRegions(): - return regions.FranklinPaxinosRegions() - - -@deprecated_decorator -def regions_from_allen_csv(): - """ - (DEPRECATED) Reads csv file containing the ALlen Ontology and instantiates a BrainRegions object. - - NB: Instantiate BrainRegions directly instead. - - :return: BrainRegions object - """ - _logger.warning("ibllib.atlas.regions.regions_from_allen_csv() is deprecated. " - "Use BrainRegions() instead") - return BrainRegions() diff --git a/ibllib/atlas/swanson_regions.npy b/ibllib/atlas/swanson_regions.npy deleted file mode 100644 index 2475d392b..000000000 Binary files a/ibllib/atlas/swanson_regions.npy and /dev/null differ diff --git a/ibllib/ephys/spikes.py b/ibllib/ephys/spikes.py index f81e2e503..e365f7d4a 100644 --- a/ibllib/ephys/spikes.py +++ b/ibllib/ephys/spikes.py @@ -5,7 +5,7 @@ import tarfile import numpy as np -from one.alf.files import get_session_path +from one.alf.path import get_session_path import spikeglx from iblutil.util import Bunch diff --git a/ibllib/ephys/sync_probes.py b/ibllib/ephys/sync_probes.py index 3f3411479..54106b245 100644 --- a/ibllib/ephys/sync_probes.py +++ b/ibllib/ephys/sync_probes.py @@ -47,7 +47,7 @@ def sync(ses_path, **kwargs): return version3B(ses_path, **kwargs) -def version3A(ses_path, display=True, type='smooth', tol=2.1): +def version3A(ses_path, display=True, type='smooth', tol=2.1, probe_names=None): """ From a session path with _spikeglx_sync arrays extracted, locate ephys files for 3A and outputs one sync.timestamps.probeN.npy file per acquired probe. By convention the reference diff --git a/ibllib/io/extractors/bpod_trials.py b/ibllib/io/extractors/bpod_trials.py index 00f21eb06..3089b52cf 100644 --- a/ibllib/io/extractors/bpod_trials.py +++ b/ibllib/io/extractors/bpod_trials.py @@ -3,17 +3,14 @@ This module will extract the Bpod trials and wheel data based on the task protocol, i.e. habituation, training or biased. """ -import logging import importlib -from ibllib.io.extractors.base import get_bpod_extractor_class, protocol2extractor +from ibllib.io.extractors.base import get_bpod_extractor_class, protocol2extractor, BaseExtractor from ibllib.io.extractors.habituation_trials import HabituationTrials from ibllib.io.extractors.training_trials import TrainingTrials from ibllib.io.extractors.biased_trials import BiasedTrials, EphysTrials from ibllib.io.extractors.base import BaseBpodTrialsExtractor -_logger = logging.getLogger(__name__) - def get_bpod_extractor(session_path, protocol=None, task_collection='raw_behavior_data') -> BaseBpodTrialsExtractor: """ @@ -39,20 +36,25 @@ def get_bpod_extractor(session_path, protocol=None, task_collection='raw_behavio 'BiasedTrials': BiasedTrials, 'EphysTrials': EphysTrials } + if protocol: - class_name = protocol2extractor(protocol) + extractor_class_name = protocol2extractor(protocol) else: - class_name = get_bpod_extractor_class(session_path, task_collection=task_collection) - if class_name in builtins: - return builtins[class_name](session_path) + extractor_class_name = get_bpod_extractor_class(session_path, task_collection=task_collection) + if extractor_class_name in builtins: + return builtins[extractor_class_name](session_path) # look if there are custom extractor types in the personal projects repo - if not class_name.startswith('projects.'): - class_name = 'projects.' + class_name - module, class_name = class_name.rsplit('.', 1) + if not extractor_class_name.startswith('projects.'): + extractor_class_name = 'projects.' + extractor_class_name + module, extractor_class_name = extractor_class_name.rsplit('.', 1) mdl = importlib.import_module(module) - extractor_class = getattr(mdl, class_name, None) + extractor_class = getattr(mdl, extractor_class_name, None) if extractor_class: - return extractor_class(session_path) + my_extractor = extractor_class(session_path) + if not isinstance(my_extractor, BaseExtractor): + raise ValueError( + f"{my_extractor} should be an Extractor class inheriting from ibllib.io.extractors.base.BaseExtractor") + return my_extractor else: - raise ValueError(f'extractor {class_name} not found') + raise ValueError(f'extractor {extractor_class_name} not found') diff --git a/ibllib/io/extractors/camera.py b/ibllib/io/extractors/camera.py index 5ce07dd9e..76ae83279 100644 --- a/ibllib/io/extractors/camera.py +++ b/ibllib/io/extractors/camera.py @@ -303,14 +303,13 @@ def _times_from_bpod(self): n_frames = 0 n_out_of_sync = 0 missed_trials = [] - for ind in np.arange(ntrials): + for ind in range(ntrials): # get upgoing and downgoing fronts - pin = np.array(self.bpod_trials[ind]['behavior_data'] - ['Events timestamps'].get('Port1In')) - pout = np.array(self.bpod_trials[ind]['behavior_data'] - ['Events timestamps'].get('Port1Out')) + events = self.bpod_trials[ind]['behavior_data']['Events timestamps'] + pin = np.array(events.get('Port1In') or [np.nan]) + pout = np.array(events.get('Port1Out') or [np.nan]) # some trials at startup may not have the camera working, discard - if np.all(pin) is None: + if np.isnan(pin).all(): missed_trials.append(ind) continue # if the trial starts in the middle of a square, discard the first downgoing front diff --git a/ibllib/io/extractors/ephys_fpga.py b/ibllib/io/extractors/ephys_fpga.py index c941ce4c8..2980eb7bf 100644 --- a/ibllib/io/extractors/ephys_fpga.py +++ b/ibllib/io/extractors/ephys_fpga.py @@ -45,7 +45,7 @@ import spikeglx import ibldsp.utils import one.alf.io as alfio -from one.alf.files import filename_parts +from one.alf.path import filename_parts from iblutil.util import Bunch from iblutil.spacer import Spacer diff --git a/ibllib/io/extractors/ephys_passive.py b/ibllib/io/extractors/ephys_passive.py index 4fbbfc868..c6af7c813 100644 --- a/ibllib/io/extractors/ephys_passive.py +++ b/ibllib/io/extractors/ephys_passive.py @@ -426,10 +426,10 @@ def _extract_passiveAudio_intervals(audio: dict, rig_version: str) -> Tuple[np.a noiseOff_times = soundOff_times[diff > 0.3] # append with nans - toneOn_times = np.r_[toneOn_times, np.full((NTONES - len(toneOn_times)), np.NAN)] - toneOff_times = np.r_[toneOff_times, np.full((NTONES - len(toneOff_times)), np.NAN)] - noiseOn_times = np.r_[noiseOn_times, np.full((NNOISES - len(noiseOn_times)), np.NAN)] - noiseOff_times = np.r_[noiseOff_times, np.full((NNOISES - len(noiseOff_times)), np.NAN)] + toneOn_times = np.r_[toneOn_times, np.full((NTONES - len(toneOn_times)), np.nan)] + toneOff_times = np.r_[toneOff_times, np.full((NTONES - len(toneOff_times)), np.nan)] + noiseOn_times = np.r_[noiseOn_times, np.full((NNOISES - len(noiseOn_times)), np.nan)] + noiseOff_times = np.r_[noiseOff_times, np.full((NNOISES - len(noiseOff_times)), np.nan)] else: # Get all sound onsets and offsets @@ -676,7 +676,7 @@ def _extract(self, sync_collection: str = 'raw_ephys_data', task_collection: str else: # If we don't have task replay then we set the treplay intervals to NaN in our passivePeriods_df dataset passiveGabor_df, passiveStims_df = (None, None) - passivePeriods_df.taskReplay = np.NAN + passivePeriods_df.taskReplay = np.nan if plot: f, ax = plt.subplots(1, 1) diff --git a/ibllib/io/extractors/fibrephotometry.py b/ibllib/io/extractors/fibrephotometry.py deleted file mode 100644 index d11a5856e..000000000 --- a/ibllib/io/extractors/fibrephotometry.py +++ /dev/null @@ -1,269 +0,0 @@ -"""Data extraction from fibrephotometry DAQ files. - -Below is the expected folder structure for a fibrephotometry session: - - subject/ - ├─ 2021-06-30/ - │ ├─ 001/ - │ │ ├─ raw_photometry_data/ - │ │ │ │ ├─ _neurophotometrics_fpData.raw.pqt - │ │ │ │ ├─ _neurophotometrics_fpData.channels.csv - │ │ │ │ ├─ _mcc_DAQdata.raw.tdms - -fpData.raw.pqt is a copy of the 'FPdata' file, the output of the Neuophotometrics Bonsai workflow. -fpData.channels.csv is table of frame flags for deciphering LED and GPIO states. The default table, -copied from the Neurophotometrics manual can be found in iblscripts/deploy/fppc/ -_mcc_DAQdata.raw.tdms is the DAQ tdms file, containing the pulses from bpod and from the neurophotometrics system -""" -import logging - -import pandas as pd -import numpy as np -import scipy.interpolate - -import one.alf.io as alfio -from ibllib.io.extractors.base import BaseExtractor -from ibllib.io.raw_daq_loaders import load_channels_tdms, load_raw_daq_tdms -from ibllib.io.extractors.training_trials import GoCueTriggerTimes -from ibldsp.utils import rises, sync_timestamps - -_logger = logging.getLogger(__name__) - -DAQ_CHMAP = {"photometry": 'AI0', 'bpod': 'AI1'} -V_THRESHOLD = 3 - -""" -Neurophotometrics FP3002 specific information. -The light source map refers to the available LEDs on the system. -The flags refers to the byte encoding of led states in the system. -""" -LIGHT_SOURCE_MAP = { - 'color': ['None', 'Violet', 'Blue', 'Green'], - 'wavelength': [0, 415, 470, 560], - 'name': ['None', 'Isosbestic', 'GCaMP', 'RCaMP'], -} - -NEUROPHOTOMETRICS_LED_STATES = { - 'Condition': { - 0: 'No additional signal', - 1: 'Output 1 signal HIGH', - 2: 'Output 0 signal HIGH', - 3: 'Stimulation ON', - 4: 'GPIO Line 2 HIGH', - 5: 'GPIO Line 3 HIGH', - 6: 'Input 1 HIGH', - 7: 'Input 0 HIGH', - 8: 'Output 0 signal HIGH + Stimulation', - 9: 'Output 0 signal HIGH + Input 0 signal HIGH', - 10: 'Input 0 signal HIGH + Stimulation', - 11: 'Output 0 HIGH + Input 0 HIGH + Stimulation', - }, - 'No LED ON': {0: 0, 1: 8, 2: 16, 3: 32, 4: 64, 5: 128, 6: 256, 7: 512, 8: 48, 9: 528, 10: 544, 11: 560}, - 'L415': {0: 1, 1: 9, 2: 17, 3: 33, 4: 65, 5: 129, 6: 257, 7: 513, 8: 49, 9: 529, 10: 545, 11: 561}, - 'L470': {0: 2, 1: 10, 2: 18, 3: 34, 4: 66, 5: 130, 6: 258, 7: 514, 8: 50, 9: 530, 10: 546, 11: 562}, - 'L560': {0: 4, 1: 12, 2: 20, 3: 36, 4: 68, 5: 132, 6: 260, 7: 516, 8: 52, 9: 532, 10: 548, 11: 564} -} - - -def sync_photometry_to_daq(vdaq, fs, df_photometry, chmap=DAQ_CHMAP, v_threshold=V_THRESHOLD): - """ - :param vdaq: dictionary of daq traces. - :param fs: sampling frequency - :param df_photometry: - :param chmap: - :param v_threshold: - :return: - """ - # here we take the flag that is the most common - daq_frames, tag_daq_frames = read_daq_timestamps(vdaq=vdaq, v_threshold=v_threshold) - nf = np.minimum(tag_daq_frames.size, df_photometry['Input0'].size) - - # we compute the framecounter for the DAQ, and match the bpod up state frame by frame for different shifts - # the shift that minimizes the mismatch is usually good - df = np.median(np.diff(df_photometry['Timestamp'])) - fc = np.cumsum(np.round(np.diff(daq_frames) / fs / df).astype(np.int32)) - 1 # this is a daq frame counter - fc = fc[fc < (nf - 1)] - max_shift = 300 - error = np.zeros(max_shift * 2 + 1) - shifts = np.arange(-max_shift, max_shift + 1) - for i, shift in enumerate(shifts): - rolled_fp = np.roll(df_photometry['Input0'].values[fc], shift) - error[i] = np.sum(np.abs(rolled_fp - tag_daq_frames[:fc.size])) - # a negative shift means that the DAQ is ahead of the photometry and that the DAQ misses frame at the beginning - frame_shift = shifts[np.argmax(-error)] - if np.sign(frame_shift) == -1: - ifp = fc[np.abs(frame_shift):] - elif np.sign(frame_shift) == 0: - ifp = fc - elif np.sign(frame_shift) == 1: - ifp = fc[:-np.abs(frame_shift)] - t_photometry = df_photometry['Timestamp'].values[ifp] - t_daq = daq_frames[:ifp.size] / fs - # import matplotlib.pyplot as plt - # plt.plot(shifts, -error) - fcn_fp2daq = scipy.interpolate.interp1d(t_photometry, t_daq, fill_value='extrapolate') - drift_ppm = (np.polyfit(t_daq, t_photometry, 1)[0] - 1) * 1e6 - if drift_ppm > 120: - _logger.warning(f"drift photometry to DAQ PPM: {drift_ppm}") - else: - _logger.info(f"drift photometry to DAQ PPM: {drift_ppm}") - # here is a bunch of safeguards - assert np.unique(np.diff(df_photometry['FrameCounter'])).size == 1 # checks that there are no missed frames on photo - assert np.abs(frame_shift) <= 5 # it's always the end frames that are missing - assert np.abs(drift_ppm) < 60 - ts_daq = fcn_fp2daq(df_photometry['Timestamp'].values) # those are the timestamps in daq time - return ts_daq, fcn_fp2daq, drift_ppm - - -def read_daq_voltage(daq_file, chmap=DAQ_CHMAP): - channel_names = [c.name for c in load_raw_daq_tdms(daq_file)['Analog'].channels()] - assert all([v in channel_names for v in chmap.values()]), "Missing channel" - vdaq, fs = load_channels_tdms(daq_file, chmap=chmap) - vdaq = {k: v - np.median(v) for k, v in vdaq.items()} - return vdaq, fs - - -def read_daq_timestamps(vdaq, v_threshold=V_THRESHOLD): - """ - From a tdms daq file, extracts the photometry frames and their tagging. - :param vsaq: dictionary of the voltage traces from the DAQ. Each item has a key describing - the channel as per the channel map, and contains a single voltage trace. - :param v_threshold: - :return: - """ - daq_frames = rises(vdaq['photometry'], step=v_threshold, analog=True) - if daq_frames.size == 0: - daq_frames = rises(-vdaq['photometry'], step=v_threshold, analog=True) - _logger.warning(f'No photometry pulses detected, attempting to reverse voltage and detect again,' - f'found {daq_frames.size} in reverse voltage. CHECK YOUR FP WIRING TO THE DAQ !!') - tagged_frames = vdaq['bpod'][daq_frames] > v_threshold - return daq_frames, tagged_frames - - -def check_timestamps(daq_file, photometry_file, tolerance=20, chmap=DAQ_CHMAP, v_threshold=V_THRESHOLD): - """ - Reads data file and checks that the number of timestamps check out with a tolerance of n_frames - :param daq_file: - :param photometry_file: - :param tolerance: number of acceptable missing frames between the daq and the photometry file - :param chmap: - :param v_threshold: - :return: None - """ - df_photometry = pd.read_csv(photometry_file) - v, fs = read_daq_voltage(daq_file=daq_file, chmap=chmap) - daq_frames, _ = read_daq_timestamps(vdaq=v, v_threshold=v_threshold) - assert (daq_frames.shape[0] - df_photometry.shape[0]) < tolerance - _logger.info(f"{daq_frames.shape[0] - df_photometry.shape[0]} frames difference, " - f"{'/'.join(daq_file.parts[-2:])}: {daq_frames.shape[0]} frames, " - f"{'/'.join(photometry_file.parts[-2:])}: {df_photometry.shape[0]}") - - -class FibrePhotometry(BaseExtractor): - """ - FibrePhotometry(self.session_path, collection=self.collection) - """ - save_names = ('photometry.signal.pqt') - var_names = ('df_out') - - def __init__(self, *args, collection='raw_photometry_data', **kwargs): - """An extractor for all Neurophotometrics fibrephotometry data""" - self.collection = collection - super().__init__(*args, **kwargs) - - @staticmethod - def _channel_meta(light_source_map=None): - """ - Return table of light source wavelengths and corresponding colour labels. - - Parameters - ---------- - light_source_map : dict - An optional map of light source wavelengths (nm) used and their corresponding colour name. - - Returns - ------- - pandas.DataFrame - A sorted table of wavelength and colour name. - """ - light_source_map = light_source_map or LIGHT_SOURCE_MAP - meta = pd.DataFrame.from_dict(light_source_map) - meta.index.rename('channel_id', inplace=True) - return meta - - def _extract(self, light_source_map=None, collection=None, regions=None, **kwargs): - """ - - Parameters - ---------- - regions: list of str - The list of regions to extract. If None extracts all columns containing "Region". Defaults to None. - light_source_map : dict - An optional map of light source wavelengths (nm) used and their corresponding colour name. - collection: str / pathlib.Path - An optional relative path from the session root folder to find the raw photometry data. - Defaults to `raw_photometry_data` - - Returns - ------- - numpy.ndarray - A 1D array of signal values. - numpy.ndarray - A 1D array of ints corresponding to the active light source during a given frame. - pandas.DataFrame - A table of intensity for each region, with associated times, wavelengths, names and colors - """ - collection = collection or self.collection - fp_data = alfio.load_object(self.session_path / collection, 'fpData') - ts = self.extract_timestamps(fp_data['raw'], **kwargs) - - # Load channels and - channel_meta_map = self._channel_meta(kwargs.get('light_source_map')) - led_states = fp_data.get('channels', pd.DataFrame(NEUROPHOTOMETRICS_LED_STATES)) - led_states = led_states.set_index('Condition') - # Extract signal columns into 2D array - regions = regions or [k for k in fp_data['raw'].keys() if 'Region' in k] - out_df = fp_data['raw'].filter(items=regions, axis=1).sort_index(axis=1) - out_df['times'] = ts - out_df['wavelength'] = np.NaN - out_df['name'] = '' - out_df['color'] = '' - # Extract channel index - states = fp_data['raw'].get('LedState', fp_data['raw'].get('Flags', None)) - for state in states.unique(): - ir, ic = np.where(led_states == state) - if ic.size == 0: - continue - for cn in ['name', 'color', 'wavelength']: - out_df.loc[states == state, cn] = channel_meta_map.iloc[ic[0]][cn] - return out_df - - def extract_timestamps(self, fp_data, **kwargs): - """Extract the photometry.timestamps array. - - This depends on the DAQ and task synchronization protocol. - - Parameters - ---------- - fp_data : dict - A Bunch of raw fibrephotometry data, with the keys ('raw', 'channels'). - - Returns - ------- - numpy.ndarray - An array of timestamps, one per frame. - """ - daq_file = next(self.session_path.joinpath(self.collection).glob('*.tdms')) - vdaq, fs = read_daq_voltage(daq_file, chmap=DAQ_CHMAP) - ts, fcn_daq2_, drift_ppm = sync_photometry_to_daq( - vdaq=vdaq, fs=fs, df_photometry=fp_data, v_threshold=V_THRESHOLD) - gc_bpod, _ = GoCueTriggerTimes(session_path=self.session_path).extract(task_collection='raw_behavior_data', save=False) - gc_daq = rises(vdaq['bpod']) - - fcn_daq2_bpod, drift_ppm, idaq, ibp = sync_timestamps( - rises(vdaq['bpod']) / fs, gc_bpod, return_indices=True) - assert drift_ppm < 100, f"Drift between bpod and daq is above 100 ppm: {drift_ppm}" - assert (gc_daq.size - idaq.size) < 5, "Bpod and daq synchronisation failed as too few" \ - "events could be matched" - ts = fcn_daq2_bpod(ts) - return ts diff --git a/ibllib/io/extractors/mesoscope.py b/ibllib/io/extractors/mesoscope.py index a3a4a7d58..5f915cf82 100644 --- a/ibllib/io/extractors/mesoscope.py +++ b/ibllib/io/extractors/mesoscope.py @@ -4,7 +4,7 @@ import numpy as np from scipy.signal import find_peaks import one.alf.io as alfio -from one.alf.files import session_path_parts +from one.alf.path import session_path_parts from iblutil.util import ensure_list import matplotlib.pyplot as plt from packaging import version diff --git a/ibllib/io/extractors/opto_trials.py b/ibllib/io/extractors/opto_trials.py index 9b720259e..b3a931c0d 100644 --- a/ibllib/io/extractors/opto_trials.py +++ b/ibllib/io/extractors/opto_trials.py @@ -16,8 +16,8 @@ class LaserBool(BaseBpodTrialsExtractor): def _extract(self, **kwargs): _logger.info('Extracting laser datasets') # reference pybpod implementation - lstim = np.array([float(t.get('laser_stimulation', np.NaN)) for t in self.bpod_trials]) - lprob = np.array([float(t.get('laser_probability', np.NaN)) for t in self.bpod_trials]) + lstim = np.array([float(t.get('laser_stimulation', np.nan)) for t in self.bpod_trials]) + lprob = np.array([float(t.get('laser_probability', np.nan)) for t in self.bpod_trials]) # Karolina's choice world legacy implementation - from Slack message: # it is possible that some versions I have used: @@ -30,9 +30,9 @@ def _extract(self, **kwargs): # laserOFF_trials=(optoOUT ==0); if 'PROBABILITY_OPTO' in self.settings.keys() and np.all(np.isnan(lstim)): lprob = np.zeros_like(lprob) + self.settings['PROBABILITY_OPTO'] - lstim = np.array([float(t.get('opto_ON_time', np.NaN)) for t in self.bpod_trials]) + lstim = np.array([float(t.get('opto_ON_time', np.nan)) for t in self.bpod_trials]) if np.all(np.isnan(lstim)): - lstim = np.array([float(t.get('optoOUT', np.NaN)) for t in self.bpod_trials]) + lstim = np.array([float(t.get('optoOUT', np.nan)) for t in self.bpod_trials]) lstim[lstim == 255] = 1 else: lstim[~np.isnan(lstim)] = 1 diff --git a/ibllib/io/extractors/training_trials.py b/ibllib/io/extractors/training_trials.py index 645151383..6b787340d 100644 --- a/ibllib/io/extractors/training_trials.py +++ b/ibllib/io/extractors/training_trials.py @@ -32,7 +32,7 @@ def _extract(self): feedbackType = np.zeros(len(self.bpod_trials), np.int64) for i, t in enumerate(self.bpod_trials): state_names = ['correct', 'error', 'no_go', 'omit_correct', 'omit_error', 'omit_no_go'] - outcome = {sn: ~np.isnan(t['behavior_data']['States timestamps'].get(sn, [[np.NaN]])[0][0]) for sn in state_names} + outcome = {sn: ~np.isnan(t['behavior_data']['States timestamps'].get(sn, [[np.nan]])[0][0]) for sn in state_names} assert np.sum(list(outcome.values())) == 1 outcome = next(k for k in outcome if outcome[k]) if outcome == 'correct': diff --git a/ibllib/io/npy_header.py b/ibllib/io/npy_header.py deleted file mode 100644 index 03511893a..000000000 --- a/ibllib/io/npy_header.py +++ /dev/null @@ -1,19 +0,0 @@ -from collections import namedtuple -import ast - - -def read(filename): - header = namedtuple('npy_header', - 'magic_string, version, header_len, descr, fortran_order, shape') - - with open(filename, 'rb') as fid: - header.magic_string = fid.read(6) - header.version = fid.read(2) - header.header_len = int.from_bytes(fid.read(2), byteorder='little') - d = ast.literal_eval(fid.read(header.header_len).decode()) - - for k in d.keys(): - print(k) - setattr(header, k, d[k]) - - return header diff --git a/ibllib/io/raw_data_loaders.py b/ibllib/io/raw_data_loaders.py index 36bed4abe..d2ed0f688 100644 --- a/ibllib/io/raw_data_loaders.py +++ b/ibllib/io/raw_data_loaders.py @@ -200,6 +200,7 @@ def load_embedded_frame_data(session_path, label: str, raw=False): """ Load the embedded frame count and GPIO for a given session. If the file doesn't exist, or is empty, None values are returned. + :param session_path: Absolute path of session folder :param label: The specific video to load, one of ('left', 'right', 'body') :param raw: If True the raw data are returned without preprocessing, otherwise frame count is diff --git a/ibllib/io/session_params.py b/ibllib/io/session_params.py index c344795c9..b5a1d0692 100644 --- a/ibllib/io/session_params.py +++ b/ibllib/io/session_params.py @@ -27,6 +27,7 @@ import logging import socket from pathlib import Path +from itertools import chain from copy import deepcopy from one.converters import ConversionMixin @@ -77,6 +78,9 @@ def _patch_file(data: dict) -> dict: if 'tasks' in data and isinstance(data['tasks'], dict): data['tasks'] = [{k: v} for k, v in data['tasks'].copy().items()] data['version'] = SPEC_VERSION + # Ensure all items in tasks list are single value dicts + if 'tasks' in data: + data['tasks'] = [{k: v} for k, v in chain.from_iterable(map(dict.items, data['tasks']))] return data @@ -131,7 +135,7 @@ def read_params(path) -> dict: """ if (path := Path(path)).is_dir(): - yaml_file = next(path.glob('_ibl_experiment.description*'), None) + yaml_file = next(path.glob('_ibl_experiment.description*.yaml'), None) else: yaml_file = path if path.exists() else None if not yaml_file: @@ -161,6 +165,11 @@ def merge_params(a, b, copy=False): dict A merged dictionary consisting of fields from `a` and `b`. """ + def to_hashable(dict_item): + """Convert protocol -> dict map to hashable tuple of protocol + sorted key value pairs.""" + hashable = (dict_item[0], *chain.from_iterable(sorted(dict_item[1].items()))) + return tuple(tuple(x) if isinstance(x, list) else x for x in hashable) + if copy: a = deepcopy(a) for k in b: @@ -168,8 +177,17 @@ def merge_params(a, b, copy=False): assert k not in a or a[k] == b[k], 'multiple sync fields defined' if isinstance(b[k], list): prev = list(a.get(k, [])) - # For procedures and projects, remove duplicates - to_add = b[k] if k == 'tasks' else set(b[k]) - set(prev) + if k == 'tasks': + # For tasks, keep order and skip duplicates + # Assert tasks is a list of single value dicts + assert (not prev or set(map(len, prev)) == {1}) and set(map(len, b[k])) == {1} + # Get the set of previous tasks + prev_tasks = set(map(to_hashable, chain.from_iterable(map(dict.items, prev)))) + tasks = chain.from_iterable(map(dict.items, b[k])) + to_add = [dict([itm]) for itm in tasks if to_hashable(itm) not in prev_tasks] + else: + # For procedures and projects, remove duplicates + to_add = set(b[k]) - set(prev) a[k] = prev + list(to_add) elif isinstance(b[k], dict): a[k] = {**a.get(k, {}), **b[k]} diff --git a/ibllib/oneibl/data_handlers.py b/ibllib/oneibl/data_handlers.py index ba713babb..a0b085150 100644 --- a/ibllib/oneibl/data_handlers.py +++ b/ibllib/oneibl/data_handlers.py @@ -16,12 +16,12 @@ from one.api import ONE from one.webclient import AlyxClient from one.util import filter_datasets -from one.alf.files import add_uuid_string, session_path_parts +from one.alf.path import add_uuid_string, session_path_parts, get_alf_path from one.alf.cache import _make_datasets_df from iblutil.util import flatten, ensure_list from ibllib.oneibl.registration import register_dataset, get_lab, get_local_data_repository -from ibllib.oneibl.patcher import FTPPatcher, SDSCPatcher, SDSC_ROOT_PATH, SDSC_PATCH_PATH +from ibllib.oneibl.patcher import FTPPatcher, SDSCPatcher, SDSC_ROOT_PATH, SDSC_PATCH_PATH, S3Patcher _logger = logging.getLogger(__name__) @@ -45,7 +45,7 @@ def __init__(self, name, collection, register=None, revision=None, unique=True): collection : str, None An ALF collection or pattern. register : bool - Whether to register the output file. Default is False for input files, True for output + Whether to register the file. Default is False for input files, True for output files. revision : str An optional revision. @@ -305,7 +305,7 @@ def input(name, collection, required=True, register=False, **kwargs): required : bool Whether file must always be present, or is an optional dataset. Default is True. register : bool - Whether to register the output file. Default is False for input files, True for output + Whether to register the input file. Default is False for input files, True for output files. revision : str An optional revision. @@ -540,26 +540,30 @@ def __init__(self, session_path, signature, one=None): self.one = one self.processed = {} # Map of filepaths and their processed records (e.g. upload receipts or Alyx records) - def setUp(self): + def setUp(self, **kwargs): """Function to optionally overload to download required data to run task.""" pass def getData(self, one=None): - """Finds the datasets required for task based on input signatures.""" + """Finds the datasets required for task based on input signatures. + + Parameters + ---------- + one : one.api.One, optional + An instance of ONE to use. + + Returns + ------- + pandas.DataFrame, None + A data frame of required datasets. An empty frame is returned if no registered datasets are required, + while None is returned if no instance of ONE is set. + """ if self.one is None and one is None: return - one = one or self.one session_datasets = one.list_datasets(one.path2eid(self.session_path), details=True) dfs = [file.filter(session_datasets)[1] for file in self.signature['input_files']] - if len(dfs) == 0: - return pd.DataFrame() - df = pd.concat(dfs) - - # Some cases the eid is stored in the index. If so we drop this level - if 'eid' in df.index.names: - df = df.droplevel(level='eid') - return df + return one._cache.datasets.iloc[0:0] if len(dfs) == 0 else pd.concat(dfs).drop_duplicates() def getOutputFiles(self): """ @@ -594,7 +598,7 @@ def uploadData(self, outputs, version): return versions - def cleanUp(self): + def cleanUp(self, **kwargs): """Function to optionally overload to clean up files after running task.""" pass @@ -655,7 +659,7 @@ def uploadData(self, outputs, version, clobber=False, **kwargs): self.processed.update({k: v for k, v in zip(to_upload, records) if v}) return [self.processed[x] for x in outputs if x in self.processed] - def cleanUp(self): + def cleanUp(self, **_): """Empties and returns the processed dataset mep.""" super().cleanUp() processed = self.processed @@ -691,7 +695,7 @@ def __init__(self, session_path, signatures, one=None): self.local_paths = [] - def setUp(self): + def setUp(self, **_): """Function to download necessary data to run tasks using globus-sdk.""" if self.lab == 'cortexlab' and 'cortexlab' in self.one.alyx.base_url: df = super().getData(one=ONE(base_url='https://alyx.internationalbrainlab.org', cache_rest=self.one.alyx.cache_mode)) @@ -709,9 +713,7 @@ def setUp(self): _logger.warning('Space left on server is < 500GB, won\'t re-download new data') return - rel_sess_path = '/'.join(df.iloc[0]['session_path'].split('/')[-3:]) - assert rel_sess_path.split('/')[0] == self.one.path2ref(self.session_path)['subject'] - + rel_sess_path = '/'.join(self.session_path.parts[-3:]) target_paths = [] source_paths = [] for i, d in df.iterrows(): @@ -741,12 +743,44 @@ def uploadData(self, outputs, version, **kwargs): data_repo = get_local_data_repository(self.one.alyx) return register_dataset(outputs, one=self.one, versions=versions, repository=data_repo, **kwargs) - def cleanUp(self): + def cleanUp(self, **_): """Clean up, remove the files that were downloaded from Globus once task has completed.""" for file in self.local_paths: os.unlink(file) +class RemoteEC2DataHandler(DataHandler): + def __init__(self, session_path, signature, one=None): + """ + Data handler for running tasks on remote compute node. Will download missing data via http using ONE + + :param session_path: path to session + :param signature: input and output file signatures + :param one: ONE instance + """ + super().__init__(session_path, signature, one=one) + + def setUp(self, **_): + """ + Function to download necessary data to run tasks using ONE + :return: + """ + df = super().getData() + self.one._check_filesystem(df) + + def uploadData(self, outputs, version, **kwargs): + """ + Function to upload and register data of completed task via S3 patcher + :param outputs: output files from task to register + :param version: ibllib version + :return: output info of registered datasets + """ + versions = super().uploadData(outputs, version) + s3_patcher = S3Patcher(one=self.one) + return s3_patcher.patch_dataset(outputs, created_by=self.one.alyx.user, + versions=versions, **kwargs) + + class RemoteHttpDataHandler(DataHandler): def __init__(self, session_path, signature, one=None): """ @@ -758,7 +792,7 @@ def __init__(self, session_path, signature, one=None): """ super().__init__(session_path, signature, one=one) - def setUp(self): + def setUp(self, **_): """ Function to download necessary data to run tasks using ONE :return: @@ -780,7 +814,7 @@ def uploadData(self, outputs, version, **kwargs): class RemoteAwsDataHandler(DataHandler): - def __init__(self, task, session_path, signature, one=None): + def __init__(self, session_path, signature, one=None): """ Data handler for running tasks on remote compute node. @@ -792,11 +826,9 @@ def __init__(self, task, session_path, signature, one=None): :param one: ONE instance """ super().__init__(session_path, signature, one=one) - self.task = task - self.local_paths = [] - def setUp(self): + def setUp(self, **_): """Function to download necessary data to run tasks using AWS boto3.""" df = super().getData() self.local_paths = self.one._download_aws(map(lambda x: x[1], df.iterrows())) @@ -875,9 +907,9 @@ def uploadData(self, outputs, version, **kwargs): # return ftp_patcher.create_dataset(path=outputs, created_by=self.one.alyx.user, # versions=versions, **kwargs) - def cleanUp(self): + def cleanUp(self, task): """Clean up, remove the files that were downloaded from globus once task has completed.""" - if self.task.status == 0: + if task.status == 0: for file in self.local_paths: os.unlink(file) @@ -893,7 +925,7 @@ class RemoteGlobusDataHandler(DataHandler): def __init__(self, session_path, signature, one=None): super().__init__(session_path, signature, one=one) - def setUp(self): + def setUp(self, **_): """Function to download necessary data to run tasks using globus.""" # TODO pass @@ -920,30 +952,29 @@ class SDSCDataHandler(DataHandler): :param one: ONE instance """ - def __init__(self, task, session_path, signatures, one=None): + def __init__(self, session_path, signatures, one=None): super().__init__(session_path, signatures, one=one) - self.task = task - self.SDSC_PATCH_PATH = SDSC_PATCH_PATH - self.SDSC_ROOT_PATH = SDSC_ROOT_PATH + self.patch_path = os.getenv('SDSC_PATCH_PATH', SDSC_PATCH_PATH) + self.root_path = SDSC_ROOT_PATH - def setUp(self): + def setUp(self, task): """Function to create symlinks to necessary data to run tasks.""" df = super().getData() - SDSC_TMP = Path(self.SDSC_PATCH_PATH.joinpath(self.task.__class__.__name__)) - for i, d in df.iterrows(): - file_path = Path(d['session_path']).joinpath(d['rel_path']) - uuid = i + SDSC_TMP = Path(self.patch_path.joinpath(task.__class__.__name__)) + session_path = Path(get_alf_path(self.session_path)) + for uuid, d in df.iterrows(): + file_path = session_path / d['rel_path'] file_uuid = add_uuid_string(file_path, uuid) file_link = SDSC_TMP.joinpath(file_path) file_link.parent.mkdir(exist_ok=True, parents=True) try: file_link.symlink_to( - Path(self.SDSC_ROOT_PATH.joinpath(file_uuid))) + Path(self.root_path.joinpath(file_uuid))) except FileExistsError: pass - self.task.session_path = SDSC_TMP.joinpath(d['session_path']) + task.session_path = SDSC_TMP.joinpath(session_path) def uploadData(self, outputs, version, **kwargs): """ @@ -956,24 +987,24 @@ def uploadData(self, outputs, version, **kwargs): sdsc_patcher = SDSCPatcher(one=self.one) return sdsc_patcher.patch_datasets(outputs, dry=False, versions=versions, **kwargs) - def cleanUp(self): + def cleanUp(self, task): """Function to clean up symlinks created to run task.""" - assert SDSC_PATCH_PATH.parts[0:4] == self.task.session_path.parts[0:4] - shutil.rmtree(self.task.session_path) + assert self.patch_path.parts[0:4] == task.session_path.parts[0:4] + shutil.rmtree(task.session_path) class PopeyeDataHandler(SDSCDataHandler): - def __init__(self, task, session_path, signatures, one=None): - super().__init__(task, session_path, signatures, one=one) - self.SDSC_PATCH_PATH = Path(os.getenv('SDSC_PATCH_PATH', "/mnt/sdceph/users/ibl/data/quarantine/tasks/")) - self.SDSC_ROOT_PATH = Path("/mnt/sdceph/users/ibl/data") + def __init__(self, session_path, signatures, one=None): + super().__init__(session_path, signatures, one=one) + self.patch_path = Path(os.getenv('SDSC_PATCH_PATH', "/mnt/sdceph/users/ibl/data/quarantine/tasks/")) + self.root_path = Path("/mnt/sdceph/users/ibl/data") def uploadData(self, outputs, version, **kwargs): raise NotImplementedError( "Cannot register data from Popeye. Login as Datauser and use the RegisterSpikeSortingSDSC task." ) - def cleanUp(self): + def cleanUp(self, **_): """Symlinks are preserved until registration.""" pass diff --git a/ibllib/oneibl/patcher.py b/ibllib/oneibl/patcher.py index 3738d7bcf..987c26bf6 100644 --- a/ibllib/oneibl/patcher.py +++ b/ibllib/oneibl/patcher.py @@ -34,13 +34,13 @@ import globus_sdk import iblutil.io.params as iopar from iblutil.util import ensure_list -from one.alf.files import get_session_path, add_uuid_string +from one.alf.path import get_session_path, add_uuid_string, full_path_parts from one.alf.spec import is_uuid_string, is_uuid from one import params from one.webclient import AlyxClient from one.converters import path_from_dataset from one.remote import globus -from one.remote.aws import url2uri +from one.remote.aws import url2uri, get_s3_from_alyx from ibllib.oneibl.registration import register_dataset @@ -115,7 +115,7 @@ def _patch_dataset(self, path, dset_id=None, revision=None, dry=False, ftp=False assert is_uuid_string(dset_id) # If the revision is not None then we need to add the revision into the path. Note the moving of the file # is handled by one registration client - if revision is not None and f'#{revision}' not in str(path): + if revision and f'#{revision}' not in str(path): path = path.parent.joinpath(f'#{revision}#', path.name) assert path.exists() dset = self.one.alyx.rest('datasets', 'read', id=dset_id) @@ -633,3 +633,55 @@ def _scp(self, local_path, remote_path, dry=True): def _rm(self, flatiron_path, dry=True): raise PermissionError("This Patcher does not have admin permissions to remove data " "from the FlatIron server") + + +class S3Patcher(Patcher): + + def __init__(self, one=None): + assert one + super().__init__(one=one) + self.s3_repo = 's3_patcher' + self.s3_path = 'patcher' + + # Instantiate boto connection + self.s3, self.bucket = get_s3_from_alyx(self.one.alyx, repo_name=self.s3_repo) + + def check_datasets(self, file_list): + # Here we want to check if the datasets exist, if they do we don't want to patch unless we force. + exists = [] + for file in file_list: + collection = full_path_parts(file, as_dict=True)['collection'] + dset = self.one.alyx.rest('datasets', 'list', session=self.one.path2eid(file), name=file.name, + collection=collection, clobber=True) + if len(dset) > 0: + exists.append(file) + + return exists + + def patch_dataset(self, file_list, dry=False, ftp=False, force=False, **kwargs): + + exists = self.check_datasets(file_list) + if len(exists) > 0 and not force: + _logger.error(f'Files: {", ".join([f.name for f in file_list])} already exist, to force set force=True') + return + + response = super().patch_dataset(file_list, dry=dry, repository=self.s3_repo, ftp=False, **kwargs) + # TODO in an ideal case the flatiron filerecord won't be altered when we register this dataset. This requires + # changing the the alyx.data.register_view + for ds in response: + frs = ds['file_records'] + fr_server = next(filter(lambda fr: 'flatiron' in fr['data_repository'], frs)) + # Update the flatiron file record to be false + self.one.alyx.rest('files', 'partial_update', id=fr_server['id'], + data={'exists': False}) + + def _scp(self, local_path, remote_path, dry=True): + + aws_remote_path = Path(self.s3_path).joinpath(remote_path.relative_to(FLATIRON_MOUNT)) + _logger.info(f'Transferring file {local_path} to {aws_remote_path}') + self.s3.Bucket(self.bucket).upload_file(str(PurePosixPath(local_path)), str(PurePosixPath(aws_remote_path))) + + return 0, '' + + def _rm(self, *args, **kwargs): + raise PermissionError("This Patcher does not have admin permissions to remove data.") diff --git a/ibllib/oneibl/registration.py b/ibllib/oneibl/registration.py index 2b410e3ef..51a4af84f 100644 --- a/ibllib/oneibl/registration.py +++ b/ibllib/oneibl/registration.py @@ -6,7 +6,7 @@ from packaging import version from requests import HTTPError -from one.alf.files import get_session_path, folder_parts, get_alf_path +from one.alf.path import get_session_path, folder_parts, get_alf_path from one.registration import RegistrationClient, get_dataset_type from one.remote.globus import get_local_endpoint_id, get_lab_from_endpoint_id from one.webclient import AlyxClient, no_cache @@ -24,7 +24,8 @@ _logger = logging.getLogger(__name__) EXCLUDED_EXTENSIONS = ['.flag', '.error', '.avi'] -REGISTRATION_GLOB_PATTERNS = ['alf/**/*.*', +REGISTRATION_GLOB_PATTERNS = ['_ibl_experiment.description.yaml', + 'alf/**/*.*.*', 'raw_behavior_data/**/_iblrig_*.*', 'raw_task_data_*/**/_iblrig_*.*', 'raw_passive_data/**/_iblrig_*.*', @@ -220,6 +221,13 @@ def register_session(self, ses_path, file_list=True, projects=None, procedures=N procedures = list({*experiment_description_file.get('procedures', []), *(procedures or [])}) collections = session_params.get_task_collection(experiment_description_file) + # Read narrative.txt + if (narrative_file := ses_path.joinpath('narrative.txt')).exists(): + with narrative_file.open('r') as f: + narrative = f.read() + else: + narrative = '' + # query Alyx endpoints for subject, error if not found subject = self.assert_exists(subject, 'subjects') @@ -238,9 +246,9 @@ def register_session(self, ses_path, file_list=True, projects=None, procedures=N missing = [k for k in required if not session_details[k]] assert not any(missing), 'missing session information: ' + ', '.join(missing) task_protocols = task_data = settings = [] - json_field = None + json_field = end_time = None users = session_details['users'] - n_trials, n_correct_trials = 0 + n_trials = n_correct_trials = 0 else: # Get session info from task data collections = ensure_list(collections) # read meta data from the rig for the session from the task settings file @@ -285,6 +293,11 @@ def register_session(self, ses_path, file_list=True, projects=None, procedures=N poo_counts = [md.get('POOP_COUNT') for md in settings if md.get('POOP_COUNT') is not None] if poo_counts: json_field['POOP_COUNT'] = int(sum(poo_counts)) + # Get the session start delay if available, needed for the training status + session_delay = [md.get('SESSION_DELAY_START') for md in settings + if md.get('SESSION_DELAY_START') is not None] + if session_delay: + json_field['SESSION_DELAY_START'] = int(sum(session_delay)) if not len(session): # Create session and weighings ses_ = {'subject': subject['nickname'], @@ -300,6 +313,7 @@ def register_session(self, ses_path, file_list=True, projects=None, procedures=N 'end_time': self.ensure_ISO8601(end_time) if end_time else None, 'n_correct_trials': n_correct_trials, 'n_trials': n_trials, + 'narrative': narrative, 'json': json_field } session = self.one.alyx.rest('sessions', 'create', data=ses_) @@ -315,6 +329,8 @@ def register_session(self, ses_path, file_list=True, projects=None, procedures=N else: # if session exists update a few key fields data = {'procedures': procedures, 'projects': projects, 'n_correct_trials': n_correct_trials, 'n_trials': n_trials} + if len(narrative) > 0: + data['narrative'] = narrative if task_protocols: data['task_protocol'] = '/'.join(task_protocols) if end_time: diff --git a/ibllib/pipes/behavior_tasks.py b/ibllib/pipes/behavior_tasks.py index 1813f2955..3f519a10c 100644 --- a/ibllib/pipes/behavior_tasks.py +++ b/ibllib/pipes/behavior_tasks.py @@ -4,7 +4,7 @@ from packaging import version import one.alf.io as alfio -from one.alf.files import session_path_parts +from one.alf.path import session_path_parts from one.api import ONE from ibllib.oneibl.registration import get_lab diff --git a/ibllib/pipes/dynamic_pipeline.py b/ibllib/pipes/dynamic_pipeline.py index 5c2fc224f..8a3a584f7 100644 --- a/ibllib/pipes/dynamic_pipeline.py +++ b/ibllib/pipes/dynamic_pipeline.py @@ -41,8 +41,7 @@ import ibllib.pipes.video_tasks as vtasks import ibllib.pipes.ephys_tasks as etasks import ibllib.pipes.audio_tasks as atasks -import ibllib.pipes.photometry_tasks as ptasks -# from ibllib.pipes.photometry_tasks import FibrePhotometryPreprocess, FibrePhotometryRegisterRaw +import ibllib.pipes.neurophotometrics as ptasks _logger = logging.getLogger(__name__) @@ -490,8 +489,6 @@ def make_pipeline(session_path, **pkwargs): tasks[f'RawEphysQC_{pname}'] = type(f'RawEphysQC_{pname}', (etasks.RawEphysQC,), {})( **kwargs, **ephys_kwargs, pname=pname, parents=register_task) - tasks[f'EphysCellQC_{pname}'] = type(f'EphysCellQC_{pname}', (etasks.EphysCellsQc,), {})( - **kwargs, **ephys_kwargs, pname=pname, parents=[tasks[f'Spikesorting_{pname}']]) # Video tasks if 'cameras' in devices: @@ -584,14 +581,12 @@ def make_pipeline(session_path, **pkwargs): tasks['MesoscopeCompress'] = type('MesoscopeCompress', (mscope_tasks.MesoscopeCompress,), {})( **kwargs, **mscope_kwargs, parents=[tasks['MesoscopePreprocess']]) - if 'photometry' in devices: - # {'collection': 'raw_photometry_data', 'sync_label': 'frame_trigger', 'regions': ['Region1G', 'Region3G']} - photometry_kwargs = devices['photometry'] - tasks['FibrePhotometryRegisterRaw'] = type('FibrePhotometryRegisterRaw', ( - ptasks.FibrePhotometryRegisterRaw,), {})(**kwargs, **photometry_kwargs) - tasks['FibrePhotometryPreprocess'] = type('FibrePhotometryPreprocess', ( - ptasks.FibrePhotometryPreprocess,), {})(**kwargs, **photometry_kwargs, **sync_kwargs, - parents=[tasks['FibrePhotometryRegisterRaw']] + sync_tasks) + if 'neurophotometrics' in devices: + # {'collection': 'raw_photometry_data', 'datetime': '2024-09-18T16:43:55.207000', + # 'fibers': {'G0': {'location': 'NBM'}, 'G1': {'location': 'SI'}}, 'sync_channel': 1} + photometry_kwargs = devices['neurophotometrics'] + tasks['FibrePhotometrySync'] = type('FibrePhotometrySync', ( + ptasks.FibrePhotometrySync,), {})(**kwargs, **photometry_kwargs) p = mtasks.Pipeline(session_path=session_path, **pkwargs) p.tasks = tasks diff --git a/ibllib/pipes/ephys_tasks.py b/ibllib/pipes/ephys_tasks.py index 4d794b19f..8596a1619 100644 --- a/ibllib/pipes/ephys_tasks.py +++ b/ibllib/pipes/ephys_tasks.py @@ -355,9 +355,9 @@ class EphysSyncPulses(SyncPulses): @property def signature(self): signature = { - 'input_files': [('*nidq.cbin', self.sync_collection, True), + 'input_files': [('*nidq.cbin', self.sync_collection, False), ('*nidq.ch', self.sync_collection, False), - ('*nidq.meta', self.sync_collection, True), + ('*nidq.meta', self.sync_collection, False), ('*nidq.wiring.json', self.sync_collection, True)], 'output_files': [('_spikeglx_sync.times.npy', self.sync_collection, True), ('_spikeglx_sync.polarities.npy', self.sync_collection, True), @@ -393,13 +393,19 @@ def __init__(self, *args, **kwargs): @property def signature(self): signature = { - 'input_files': [('*ap.meta', f'{self.device_collection}/{pname}', True) for pname in self.pname] + - [('*ap.cbin', f'{self.device_collection}/{pname}', True) for pname in self.pname] + - [('*ap.ch', f'{self.device_collection}/{pname}', True) for pname in self.pname] + - [('*ap.wiring.json', f'{self.device_collection}/{pname}', False) for pname in self.pname] + - [('_spikeglx_sync.times.npy', self.sync_collection, True), - ('_spikeglx_sync.polarities.npy', self.sync_collection, True), - ('_spikeglx_sync.channels.npy', self.sync_collection, True)], + 'input_files': + [('*ap.meta', f'{self.device_collection}/{pname}', True) for pname in self.pname] + + [('*ap.cbin', f'{self.device_collection}/{pname}', True) for pname in self.pname] + + [('*ap.ch', f'{self.device_collection}/{pname}', True) for pname in self.pname] + + [('*ap.wiring.json', f'{self.device_collection}/{pname}', False) for pname in self.pname] + + [('_spikeglx_sync.times.*npy', f'{self.device_collection}/{pname}', False) for pname in self.pname] + + [('_spikeglx_sync.polarities.*npy', f'{self.device_collection}/{pname}', False) for pname in self.pname] + + [('_spikeglx_sync.channels.*npy', f'{self.device_collection}/{pname}', False) for pname in self.pname] + + [('_spikeglx_sync.times.*npy', self.sync_collection, True), + ('_spikeglx_sync.polarities.*npy', self.sync_collection, True), + ('_spikeglx_sync.channels.*npy', self.sync_collection, True), + ('*ap.meta', self.sync_collection, True) + ], 'output_files': [(f'_spikeglx_sync.times.{pname}.npy', f'{self.device_collection}/{pname}', True) for pname in self.pname] + [(f'_spikeglx_sync.polarities.{pname}.npy', f'{self.device_collection}/{pname}', True) @@ -517,8 +523,22 @@ def compute_cell_qc(folder_alf_probe): df_units = pd.concat( [df_units, ks2_labels['ks2_label'].reindex(df_units.index)], axis=1) # save as parquet file - df_units.to_parquet(folder_alf_probe.joinpath("clusters.metrics.pqt")) - return folder_alf_probe.joinpath("clusters.metrics.pqt"), df_units, drift + df_units.to_parquet(file_metrics := folder_alf_probe.joinpath("clusters.metrics.pqt")) + + assert np.all((df_units['bitwise_fail'] == 0) == (df_units['label'] == 1)) # useless but sanity check for OW + + cok = df_units['bitwise_fail'] == 0 + sok = cok[spikes['clusters']].values + spikes['templates'] = spikes['templates'].astype(np.uint16) + spikes['clusters'] = spikes['clusters'].astype(np.uint16) + spikes['depths'] = spikes['depths'].astype(np.float32) + spikes['amps'] = spikes['amps'].astype(np.float32) + file_passing = folder_alf_probe.joinpath('passingSpikes.table.pqt') + df_spikes = pd.DataFrame(spikes) + df_spikes = df_spikes.iloc[sok, :].reset_index(drop=True) + df_spikes.to_parquet(file_passing) + + return [file_metrics, file_passing], df_units, drift def _label_probe_qc(self, folder_probe, df_units, drift): """ @@ -564,26 +584,87 @@ class SpikeSorting(base_tasks.EphysTask, CellQCMixin): priority = 60 job_size = 'large' force = True - + env = 'iblsorter' + _sortername = 'iblsorter' SHELL_SCRIPT = Path.home().joinpath( - "Documents/PYTHON/iblscripts/deploy/serverpc/iblsorter/run_iblsorter.sh" + f"Documents/PYTHON/iblscripts/deploy/serverpc/{_sortername}/sort_recording.sh" ) SPIKE_SORTER_NAME = 'iblsorter' - PYKILOSORT_REPO = Path.home().joinpath('Documents/PYTHON/SPIKE_SORTING/ibl-sorter') + SORTER_REPOSITORY = Path.home().joinpath('Documents/PYTHON/SPIKE_SORTING/ibl-sorter') @property def signature(self): signature = { - 'input_files': [('*ap.meta', f'{self.device_collection}/{self.pname}', True), - ('*ap.*bin', f'{self.device_collection}/{self.pname}', True), - ('*ap.ch', f'{self.device_collection}/{self.pname}', False), - ('*sync.npy', f'{self.device_collection}/{self.pname}', True)], - 'output_files': [('spike_sorting_pykilosort.log', f'spike_sorters/pykilosort/{self.pname}', True), - ('_iblqc_ephysTimeRmsAP.rms.npy', f'{self.device_collection}/{self.pname}', True), - ('_iblqc_ephysTimeRmsAP.timestamps.npy', f'{self.device_collection}/{self.pname}', True)] + 'input_files': [ + ('*ap.meta', f'{self.device_collection}/{self.pname}', True), + ('*ap.*bin', f'{self.device_collection}/{self.pname}', True), + ('*ap.ch', f'{self.device_collection}/{self.pname}', False), + ('*sync.npy', f'{self.device_collection}/{self.pname}', True) + ], + 'output_files': [ + # ./raw_ephys_data/probe00/ + ('_iblqc_ephysTimeRmsAP.rms.npy', f'{self.device_collection}/{self.pname}/', True), + ('_iblqc_ephysTimeRmsAP.timestamps.npy', f'{self.device_collection}/{self.pname}/', True), + ('_iblqc_ephysSaturation.samples.npy', f'{self.device_collection}/{self.pname}/', True), + # ./spike_sorters/iblsorter/probe00 + ('spike_sorting_iblsorter.log', f'spike_sorters/{self._sortername}/{self.pname}', True), + ('_kilosort_raw.output.tar', f'spike_sorters/{self._sortername}/{self.pname}/', True), + # ./alf/probe00/iblsorter + ('_kilosort_whitening.matrix.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('_phy_spikes_subset.channels.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('_phy_spikes_subset.spikes.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('_phy_spikes_subset.waveforms.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('channels.labels.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('channels.localCoordinates.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('channels.rawInd.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('clusters.amps.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('clusters.channels.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('clusters.depths.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('clusters.metrics.pqt', f'alf/{self.pname}/{self._sortername}/', True), + ('clusters.peakToTrough.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('clusters.uuids.csv', f'alf/{self.pname}/{self._sortername}/', True), + ('clusters.waveforms.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('clusters.waveformsChannels.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('drift.times.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('drift.um.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('drift_depths.um.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('passingSpikes.table.pqt', f'alf/{self.pname}/{self._sortername}/', True), + ('spikes.amps.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('spikes.clusters.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('spikes.depths.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('spikes.samples.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('spikes.templates.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('spikes.times.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('templates.amps.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('templates.waveforms.npy', f'alf/{self.pname}/{self._sortername}/', True), + ('templates.waveformsChannels.npy', f'alf/{self.pname}/{self._sortername}/', True), + ], } return signature + @property + def scratch_folder_run(self): + """ + Constructs a path to a temporary folder for the spike sorting output and scratch files + This is usually on a high performance drive, and we should factor around 2.5 times the uncompressed raw recording size + For a scratch drive at /mnt/h0 we would have the following temp dir: + /mnt/h0/iblsorter_1.8.0_CSHL071_2020-10-04_001_probe01/ + """ + # get the scratch drive from the shell script + if self.scratch_folder is None: + with open(self.SHELL_SCRIPT) as fid: + lines = fid.readlines() + line = [line for line in lines if line.startswith("SCRATCH_DRIVE=")][0] + m = re.search(r"\=(.*?)(\#|\n)", line)[0] + scratch_drive = Path(m[1:-1].strip()) + else: + scratch_drive = self.scratch_folder + assert scratch_drive.exists(), f"Scratch drive {scratch_drive} not found" + # get the version of the sorter + self.version = self._fetch_iblsorter_version(self.SORTER_REPOSITORY) + spikesorter_dir = f"{self.version}_{'_'.join(list(self.session_path.parts[-3:]))}_{self.pname}" + return scratch_drive.joinpath(spikesorter_dir) + @staticmethod def _sample2v(ap_file): md = spikeglx.read_meta_data(ap_file.with_suffix(".meta")) @@ -597,7 +678,7 @@ def _fetch_iblsorter_version(repo_path): return f"iblsorter_{iblsorter.__version__}" except ImportError: _logger.info('IBL-sorter not in environment, trying to locate the repository') - init_file = Path(repo_path).joinpath('ibl-sorter', '__init__.py') + init_file = Path(repo_path).joinpath('iblsorter', '__init__.py') try: with open(init_file) as fid: lines = fid.readlines() @@ -619,7 +700,7 @@ def _fetch_iblsorter_run_version(log_file): line = fid.readline() version = re.search('version (.*), output', line) version = version or re.search('version (.*)', line) # old versions have output, new have a version line - version = re.sub(r'\^\[{2}[0-9]+m', '', version.group(1)) # removes the coloring tags + version = re.sub(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])', '', version.group(1)) return version def _run_iblsort(self, ap_file): @@ -629,9 +710,7 @@ def _run_iblsort(self, ap_file): (discontinued support for old spike sortings in the probe folder <1.5.5) :return: path of the folder containing ks2 spike sorting output """ - self.version = self._fetch_iblsorter_version(self.PYKILOSORT_REPO) - label = ap_file.parts[-2] # this is usually the probe name - sorter_dir = self.session_path.joinpath("spike_sorters", self.SPIKE_SORTER_NAME, label) + sorter_dir = self.session_path.joinpath("spike_sorters", self.SPIKE_SORTER_NAME, self.pname) self.FORCE_RERUN = False if not self.FORCE_RERUN: log_file = sorter_dir.joinpath(f"spike_sorting_{self.SPIKE_SORTER_NAME}.log") @@ -643,24 +722,15 @@ def _run_iblsort(self, ap_file): return sorter_dir else: self.FORCE_RERUN = True - # get the scratch drive from the shell script - with open(self.SHELL_SCRIPT) as fid: - lines = fid.readlines() - line = [line for line in lines if line.startswith("SCRATCH_DRIVE=")][0] - m = re.search(r"\=(.*?)(\#|\n)", line)[0] - scratch_drive = Path(m[1:-1].strip()) - assert scratch_drive.exists() - spikesorter_dir = f"{self.version}_{'_'.join(list(self.session_path.parts[-3:]))}_{self.pname}" - temp_dir = scratch_drive.joinpath(spikesorter_dir) - _logger.info(f"job progress command: tail -f {temp_dir} *.log") - temp_dir.mkdir(parents=True, exist_ok=True) + _logger.info(f"job progress command: tail -f {self.scratch_folder_run} *.log") + self.scratch_folder_run.mkdir(parents=True, exist_ok=True) check_nvidia_driver() try: # if pykilosort is in the environment, use the installed version within the task import iblsorter.ibl # noqa - iblsorter.ibl.run_spike_sorting_ibl(bin_file=ap_file, scratch_dir=temp_dir) + iblsorter.ibl.run_spike_sorting_ibl(bin_file=ap_file, scratch_dir=self.scratch_folder_run, delete=False) except ImportError: - command2run = f"{self.SHELL_SCRIPT} {ap_file} {temp_dir}" + command2run = f"{self.SHELL_SCRIPT} {ap_file} {self.scratch_folder_run}" _logger.info(command2run) process = subprocess.Popen( command2run, @@ -675,16 +745,13 @@ def _run_iblsort(self, ap_file): if process.returncode != 0: error_str = error.decode("utf-8").strip() # try and get the kilosort log if any - for log_file in temp_dir.rglob('*_kilosort.log'): + for log_file in self.scratch_folder_run.rglob('*_kilosort.log'): with open(log_file) as fid: log = fid.read() _logger.error(log) break raise RuntimeError(f"{self.SPIKE_SORTER_NAME} {info_str}, {error_str}") - - shutil.copytree(temp_dir.joinpath('output'), sorter_dir, dirs_exist_ok=True) - shutil.rmtree(temp_dir, ignore_errors=True) - + shutil.copytree(self.scratch_folder_run.joinpath('output'), sorter_dir, dirs_exist_ok=True) return sorter_dir def _run(self): @@ -698,34 +765,41 @@ def _run(self): """ efiles = spikeglx.glob_ephys_files(self.session_path.joinpath(self.device_collection, self.pname)) ap_files = [(ef.get("ap"), ef.get("label")) for ef in efiles if "ap" in ef.keys()] + assert len(ap_files) != 0, f"No ap file found for probe {self.session_path.joinpath(self.device_collection, self.pname)}" assert len(ap_files) == 1, f"Several bin files found for the same probe {ap_files}" ap_file, label = ap_files[0] out_files = [] - ks2_dir = self._run_iblsort(ap_file) # runs the sorter, skips if it already ran + sorter_dir = self._run_iblsort(ap_file) # runs the sorter, skips if it already ran + # convert the data to ALF in the ./alf/probeXX/SPIKE_SORTER_NAME folder probe_out_path = self.session_path.joinpath("alf", label, self.SPIKE_SORTER_NAME) shutil.rmtree(probe_out_path, ignore_errors=True) probe_out_path.mkdir(parents=True, exist_ok=True) ibllib.ephys.spikes.ks2_to_alf( - ks2_dir, + sorter_dir, bin_path=ap_file.parent, out_path=probe_out_path, bin_file=ap_file, ampfactor=self._sample2v(ap_file), ) - logfile = ks2_dir.joinpath(f"spike_sorting_{self.SPIKE_SORTER_NAME}.log") + logfile = sorter_dir.joinpath(f"spike_sorting_{self.SPIKE_SORTER_NAME}.log") if logfile.exists(): shutil.copyfile(logfile, probe_out_path.joinpath(f"_ibl_log.info_{self.SPIKE_SORTER_NAME}.log")) + # recover the QC files from the spike sorting output and copy them + for file_qc in sorter_dir.glob('_iblqc_*.npy'): + shutil.move(file_qc, file_qc_out := ap_file.parent.joinpath(file_qc.name)) + out_files.append(file_qc_out) # Sync spike sorting with the main behaviour clock: the nidq for 3B+ and the main probe for 3A out, _ = ibllib.ephys.spikes.sync_spike_sorting(ap_file=ap_file, out_path=probe_out_path) out_files.extend(out) # Now compute the unit metrics - self.compute_cell_qc(probe_out_path) + files_qc, df_units, drift = self.compute_cell_qc(probe_out_path) + out_files.extend(files_qc) # convert ks2_output into tar file and also register # Make this in case spike sorting is in old raw_ephys_data folders, for new # sessions it should already exist tar_dir = self.session_path.joinpath('spike_sorters', self.SPIKE_SORTER_NAME, label) tar_dir.mkdir(parents=True, exist_ok=True) - out = ibllib.ephys.spikes.ks2_to_tar(ks2_dir, tar_dir, force=self.FORCE_RERUN) + out = ibllib.ephys.spikes.ks2_to_tar(sorter_dir, tar_dir, force=self.FORCE_RERUN) out_files.extend(out) # run waveform extraction _logger.info("Running waveform extraction") @@ -733,28 +807,29 @@ def _run(self): clusters = alfio.load_object(probe_out_path, 'clusters', attribute=['channels']) channels = alfio.load_object(probe_out_path, 'channels') extract_wfs_cbin( - cbin_file=ap_file, + bin_file=ap_file, output_dir=probe_out_path, spike_samples=spikes['samples'], spike_clusters=spikes['clusters'], spike_channels=clusters['channels'][spikes['clusters']], - h=None, # todo the geometry needs to be set using the spikeglx object channel_labels=channels['labels'], max_wf=256, trough_offset=42, spike_length_samples=128, - chunksize_samples=int(3000), + chunksize_samples=int(30_000), n_jobs=None, wfs_dtype=np.float16, - preprocessing_steps=["phase_shift", - "bad_channel_interpolation", - "butterworth", - "car"] + preprocess_steps=["phase_shift", "bad_channel_interpolation", "butterworth", "car"], + scratch_dir=self.scratch_folder_run, ) + _logger.info(f"Cleaning up temporary folder {self.scratch_folder_run}") + shutil.rmtree(self.scratch_folder_run, ignore_errors=True) if self.one: eid = self.one.path2eid(self.session_path, query_type='remote') ins = self.one.alyx.rest('insertions', 'list', session=eid, name=label, query_type='remote') if len(ins) != 0: + _logger.info("Populating probe insertion with qc") + self._label_probe_qc(probe_out_path, df_units, drift) _logger.info("Creating SpikeSorting QC plots") plot_task = ApPlots(ins[0]['id'], session_path=self.session_path, one=self.one) _ = plot_task.run() @@ -772,39 +847,3 @@ def _run(self): out_files.extend(out) return out_files - - -class EphysCellsQc(base_tasks.EphysTask, CellQCMixin): - priority = 90 - job_size = 'small' - - @property - def signature(self): - signature = { - 'input_files': [('spikes.times.npy', f'alf/{self.pname}*', True), - ('spikes.clusters.npy', f'alf/{self.pname}*', True), - ('spikes.amps.npy', f'alf/{self.pname}*', True), - ('spikes.depths.npy', f'alf/{self.pname}*', True), - ('clusters.channels.npy', f'alf/{self.pname}*', True)], - 'output_files': [('clusters.metrics.pqt', f'alf/{self.pname}*', True)] - } - return signature - - def _run(self): - """ - Post spike-sorting quality control at the cluster level. - Outputs a QC table in the clusters ALF object and labels corresponding probes in Alyx - """ - files_spikes = Path(self.session_path).joinpath('alf', self.pname).rglob('spikes.times.npy') - folder_probes = [f.parent for f in files_spikes] - out_files = [] - for folder_probe in folder_probes: - try: - qc_file, df_units, drift = self.compute_cell_qc(folder_probe) - out_files.append(qc_file) - self._label_probe_qc(folder_probe, df_units, drift) - except Exception: - _logger.error(traceback.format_exc()) - self.status = -1 - continue - return out_files diff --git a/ibllib/pipes/local_server.py b/ibllib/pipes/local_server.py index 88fa27ebe..cb93d786d 100644 --- a/ibllib/pipes/local_server.py +++ b/ibllib/pipes/local_server.py @@ -17,6 +17,8 @@ from one.api import ONE from one.webclient import AlyxClient from one.remote.globus import get_lab_from_endpoint_id, get_local_endpoint_id +from one.alf.spec import is_session_path +from one.alf.path import session_path_parts from ibllib import __version__ as ibllib_version from ibllib.pipes import tasks @@ -104,11 +106,15 @@ def job_creator(root_path, one=None, dry=False, rerun=False): if not one: one = ONE(cache_rest=None) rc = IBLRegistrationClient(one=one) - flag_files = list(Path(root_path).glob('**/raw_session.flag')) + flag_files = Path(root_path).glob('*/????-??-??/*/raw_session.flag') + flag_files = filter(lambda x: is_session_path(x.parent), flag_files) pipes = [] all_datasets = [] for flag_file in flag_files: session_path = flag_file.parent + if session_path_parts(session_path)[1] in ('test', 'test_subject'): + _logger.debug('skipping test session %s', session_path) + continue _logger.info(f'creating session for {session_path}') if dry: continue diff --git a/ibllib/pipes/mesoscope_tasks.py b/ibllib/pipes/mesoscope_tasks.py index 427086b88..4f036d6f4 100644 --- a/ibllib/pipes/mesoscope_tasks.py +++ b/ibllib/pipes/mesoscope_tasks.py @@ -32,7 +32,7 @@ from scipy.interpolate import interpn import one.alf.io as alfio from one.alf.spec import to_alf -from one.alf.files import filename_parts, session_path_parts +from one.alf.path import filename_parts, session_path_parts import one.alf.exceptions as alferr from iblutil.util import flatten, ensure_list from iblatlas.atlas import ALLEN_CCF_LANDMARKS_MLAPDV_UM, MRITorontoAtlas @@ -486,23 +486,42 @@ def _consolidate_exptQC(exptQC): numpy.array An array of frame indices where QC code != 0. """ - - # Merge and make sure same indexes have same names across all files - frameQC_names_list = [e['frameQC_names'] for e in exptQC] - frameQC_names_list = [{k: i for i, k in enumerate(ensure_list(f))} for f in frameQC_names_list] - frameQC_names = {k: v for d in frameQC_names_list for k, v in d.items()} - for d in frameQC_names_list: - for k, v in d.items(): - if frameQC_names[k] != v: - raise IOError(f'exptQC.mat files have different values for name "{k}"') - - frameQC_names = pd.DataFrame(sorted([(v, k) for k, v in frameQC_names.items()]), - columns=['qc_values', 'qc_labels']) - + # Create a new enumeration combining all unique QC labels. + # 'ok' will always have an enum of 0, the rest are determined by order alone + qc_labels = ['ok'] + frame_qc = [] + for e in exptQC: + assert e.keys() >= set(['frameQC_names', 'frameQC_frames']) + # Initialize an NaN array the same size of frameQC_frames to fill with new enum values + frames = np.full(e['frameQC_frames'].shape, fill_value=np.nan) + # May be numpy array of str or a single str, in both cases we cast to list of str + names = list(ensure_list(e['frameQC_names'])) + # For each label for the old enum, populate initialized array with the new one + for name in names: + i_old = names.index(name) # old enumeration + name = name if len(name) else 'unknown' # handle empty array and empty str + try: + i_new = qc_labels.index(name) + except ValueError: + i_new = len(qc_labels) + qc_labels.append(name) + frames[e['frameQC_frames'] == i_old] = i_new + frame_qc.append(frames) # Concatenate frames - frameQC = np.concatenate([e['frameQC_frames'] for e in exptQC], axis=0) - bad_frames = np.where(frameQC != 0)[0] - return frameQC, frameQC_names, bad_frames + frame_qc = np.concatenate(frame_qc) + # If any NaNs left over, assign 'unknown' label + if (missing_name := np.isnan(frame_qc)).any(): + try: + i = qc_labels.index('unknown') + except ValueError: + i = len(qc_labels) + qc_labels.append('unknown') + frame_qc[missing_name] = i + frame_qc = frame_qc.astype(np.uint32) # case to uint + bad_frames, = np.where(frame_qc != 0) + # Convert labels to value -> label data frame + frame_qc_names = pd.DataFrame(list(enumerate(qc_labels)), columns=['qc_values', 'qc_labels']) + return frame_qc, frame_qc_names, bad_frames def get_default_tau(self): """ @@ -771,14 +790,14 @@ def _run(self, rename_files=True, use_badframes=True, **kwargs): # If applicable, save as bad_frames.npy in first raw_imaging_folder for suite2p # badframes.mat contains QC values that do affect ROI detection (e.g. no PMT, lens artefacts) - badframes = np.array([], dtype='i8') + badframes = np.array([], dtype='uint32') total_frames = 0 # Ensure all indices are relative to total cumulative frames for m, collection in zip(all_meta, raw_image_collections): badframes_path = self.session_path.joinpath(collection, 'badframes.mat') if badframes_path.exists(): - raw_mat = loadmat(badframes_path, squeeze_me=True, simplify_cells=True)['badframes'] - badframes = np.r_[badframes, raw_mat + total_frames] + raw_mat = loadmat(badframes_path, squeeze_me=True, simplify_cells=True) + badframes = np.r_[badframes, raw_mat['badframes'].astype('uint32') + total_frames] total_frames += m['nFrames'] if len(badframes) > 0 and use_badframes is True: # The badframes array should always be a subset of the frameQC array diff --git a/ibllib/pipes/neurophotometrics.py b/ibllib/pipes/neurophotometrics.py new file mode 100644 index 000000000..18f558c59 --- /dev/null +++ b/ibllib/pipes/neurophotometrics.py @@ -0,0 +1,186 @@ +"""Extraction tasks for fibrephotometry""" + +import logging +import numpy as np +import pandas as pd + +import ibldsp.utils +import ibllib.io.session_params +from ibllib.pipes import base_tasks +from iblutil.io import jsonable + +_logger = logging.getLogger('ibllib') + + +""" +Neurophotometrics FP3002 specific information. +The light source map refers to the available LEDs on the system. +The flags refers to the byte encoding of led states in the system. +""" +LIGHT_SOURCE_MAP = { + 'color': ['None', 'Violet', 'Blue', 'Green'], + 'wavelength': [0, 415, 470, 560], + 'name': ['None', 'Isosbestic', 'GCaMP', 'RCaMP'], +} + +LED_STATES = { + 'Condition': { + 0: 'No additional signal', + 1: 'Output 1 signal HIGH', + 2: 'Output 0 signal HIGH', + 3: 'Stimulation ON', + 4: 'GPIO Line 2 HIGH', + 5: 'GPIO Line 3 HIGH', + 6: 'Input 1 HIGH', + 7: 'Input 0 HIGH', + 8: 'Output 0 signal HIGH + Stimulation', + 9: 'Output 0 signal HIGH + Input 0 signal HIGH', + 10: 'Input 0 signal HIGH + Stimulation', + 11: 'Output 0 HIGH + Input 0 HIGH + Stimulation', + }, + 'No LED ON': {0: 0, 1: 8, 2: 16, 3: 32, 4: 64, 5: 128, 6: 256, 7: 512, 8: 48, 9: 528, 10: 544, 11: 560}, + 'L415': {0: 1, 1: 9, 2: 17, 3: 33, 4: 65, 5: 129, 6: 257, 7: 513, 8: 49, 9: 529, 10: 545, 11: 561}, + 'L470': {0: 2, 1: 10, 2: 18, 3: 34, 4: 66, 5: 130, 6: 258, 7: 514, 8: 50, 9: 530, 10: 546, 11: 562}, + 'L560': {0: 4, 1: 12, 2: 20, 3: 36, 4: 68, 5: 132, 6: 260, 7: 516, 8: 52, 9: 532, 10: 548, 11: 564} +} + + +def _channel_meta(light_source_map=None): + """ + Return table of light source wavelengths and corresponding colour labels. + + Parameters + ---------- + light_source_map : dict + An optional map of light source wavelengths (nm) used and their corresponding colour name. + + Returns + ------- + pandas.DataFrame + A sorted table of wavelength and colour name. + """ + light_source_map = light_source_map or LIGHT_SOURCE_MAP + meta = pd.DataFrame.from_dict(light_source_map) + meta.index.rename('channel_id', inplace=True) + return meta + + +class FibrePhotometrySync(base_tasks.DynamicTask): + priority = 90 + job_size = 'small' + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.device_collection = self.get_device_collection( + 'neurophotometrics', device_collection='raw_photometry_data') + # we will work with the first protocol here + for task in self.session_params['tasks']: + self.task_protocol = next(k for k in task) + self.task_collection = ibllib.io.session_params.get_task_collection(self.session_params, self.task_protocol) + break + + @property + def signature(self): + signature = { + 'input_files': [('_neurophotometrics_fpData.raw.pqt', self.device_collection, True, True), + ('_iblrig_taskData.raw.jsonable', self.task_collection, True, True), + ('_neurophotometrics_fpData.channels.csv', self.device_collection, True, True), + ('_neurophotometrics_fpData.digitalIntputs.pqt', self.device_collection, True)], + 'output_files': [('photometry.signal.pqt', 'alf/photometry', True), + ('photometryROI.locations.pqt', 'alf/photometry', True)] + } + return signature + + def _sync_bpod_neurophotometrics(self): + """ + Perform the linear clock correction between bpod and neurophotometrics timestamps. + :return: interpolation function that outputs bpod timestamsp from neurophotometrics timestamps + """ + folder_raw_photometry = self.session_path.joinpath(self.device_collection) + df_digital_inputs = pd.read_parquet(folder_raw_photometry.joinpath('_neurophotometrics_fpData.digitalIntputs.pqt')) + # normally we should disregard the states and use the sync label. But bpod doesn't log TTL outs, + # only the states. This will change in the future but for now we are stuck with this. + if 'habituation' in self.task_protocol: + sync_states_names = ['iti', 'reward'] + else: + sync_states_names = ['trial_start', 'reward', 'exit_state'] + # read in the raw behaviour data for syncing + file_jsonable = self.session_path.joinpath(self.task_collection, '_iblrig_taskData.raw.jsonable') + trials_table, bpod_data = jsonable.load_task_jsonable(file_jsonable) + # we get the timestamps of the states from the bpod data + tbpod = [] + for sname in sync_states_names: + tbpod.append(np.array( + [bd['States timestamps'][sname][0][0] + bd['Trial start timestamp'] for bd in bpod_data if + sname in bd['States timestamps']])) + tbpod = np.sort(np.concatenate(tbpod)) + tbpod = tbpod[~np.isnan(tbpod)] + # we get the timestamps for the photometry data + tph = df_digital_inputs['SystemTimestamp'].values[df_digital_inputs['Channel'] == self.kwargs['sync_channel']] + tph = tph[15:] # TODO: we may want to detect the spacers before removing it, especially for successive sessions + # sync the behaviour events to the photometry timestamps + fcn_nph_to_bpod_times, drift_ppm, iph, ibpod = ibldsp.utils.sync_timestamps( + tph, tbpod, return_indices=True, linear=True) + # then we check the alignment, should be less than the screen refresh rate + tcheck = fcn_nph_to_bpod_times(tph[iph]) - tbpod[ibpod] + _logger.info( + f'sync: n trials {len(bpod_data)}, n bpod sync {len(tbpod)}, n photometry {len(tph)}, n match {len(iph)}') + assert np.all(np.abs(tcheck) < 1 / 60), 'Sync issue detected, residual above 1/60s' + assert len(iph) / len(tbpod) > 0.95, 'Sync issue detected, less than 95% of the bpod events matched' + valid_bounds = [bpod_data[0]['Trial start timestamp'] - 2, bpod_data[-1]['Trial end timestamp'] + 2] + return fcn_nph_to_bpod_times, valid_bounds + + def _run(self, **kwargs): + """ + Extract photometry data from the raw neurophotometrics data in parquet + The extraction has 3 main steps: + 1. Synchronise the bpod and neurophotometrics timestamps. + 2. Extract the photometry data from the raw neurophotometrics data. + 3. Label the fibers correspondance with brain regions in a small table + :param kwargs: + :return: + """ + # 1) sync: we check the synchronisation, right now we only have bpod but soon the daq will be used + match list(self.session_params['sync'].keys())[0]: + case 'bpod': + fcn_nph_to_bpod_times, valid_bounds = self._sync_bpod_neurophotometrics() + case _: + raise NotImplementedError('Syncing with daq is not supported yet.') + # 2) reformat the raw data with wavelengths and meta-data + folder_raw_photometry = self.session_path.joinpath(self.device_collection) + fp_data = pd.read_parquet(folder_raw_photometry.joinpath('_neurophotometrics_fpData.raw.pqt')) + # Load channels and wavelength information + channel_meta_map = _channel_meta() + if (fn := folder_raw_photometry.joinpath('_neurophotometrics_fpData.channels.csv')).exists(): + led_states = pd.read_csv(fn) + else: + led_states = pd.DataFrame(LED_STATES) + led_states = led_states.set_index('Condition') + # Extract signal columns into 2D array + rois = list(self.kwargs['fibers'].keys()) + out_df = fp_data.filter(items=rois, axis=1).sort_index(axis=1) + out_df['times'] = fcn_nph_to_bpod_times(fp_data['SystemTimestamp']) + out_df['valid'] = np.logical_and(out_df['times'] >= valid_bounds[0], out_df['times'] <= valid_bounds[1]) + out_df['wavelength'] = np.nan + out_df['name'] = '' + out_df['color'] = '' + # Extract channel index + states = fp_data.get('LedState', fp_data.get('Flags', None)) + for state in states.unique(): + ir, ic = np.where(led_states == state) + if ic.size == 0: + continue + for cn in ['name', 'color', 'wavelength']: + out_df.loc[states == state, cn] = channel_meta_map.iloc[ic[0]][cn] + # 3) label the brain regions + rois = [] + c = 0 + for k, v in self.kwargs['fibers'].items(): + rois.append({'ROI': k, 'fiber': f'fiber{c:02d}', 'brain_region': v['location']}) + df_rois = pd.DataFrame(rois).set_index('ROI') + # to finish we write the dataframes to disk + out_path = self.session_path.joinpath('alf', 'photometry') + out_path.mkdir(parents=True, exist_ok=True) + out_df.to_parquet(file_signal := out_path.joinpath('photometry.signal.pqt')) + df_rois.to_parquet(file_locations := out_path.joinpath('photometryROI.locations.pqt')) + return file_signal, file_locations diff --git a/ibllib/pipes/photometry_tasks.py b/ibllib/pipes/photometry_tasks.py deleted file mode 100644 index 97c5be434..000000000 --- a/ibllib/pipes/photometry_tasks.py +++ /dev/null @@ -1,54 +0,0 @@ -"""Extraction tasks for fibrephotometry""" - -import logging - -from ibllib.pipes import base_tasks -from ibllib.io.extractors.fibrephotometry import FibrePhotometry - -_logger = logging.getLogger('ibllib') - - -class FibrePhotometryRegisterRaw(base_tasks.RegisterRawDataTask): - - priority = 100 - job_size = 'small' - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.collection = self.get_task_collection(kwargs.get('collection', None)) - self.device_collection = self.get_device_collection('photometry', device_collection='raw_photometry_data') - - @property - def signature(self): - signature = { - 'input_files': [], - 'output_files': [('_mcc_DAQdata.raw.tdms', self.device_collection, True), - ('_neurophotometrics_fpData.raw.pqt', self.device_collection, True)] - } - return signature - - -class FibrePhotometryPreprocess(base_tasks.DynamicTask): - @property - def signature(self): - signature = { - 'input_files': [('_mcc_DAQdata.raw.tdms', self.device_collection, True), - ('_neurophotometrics_fpData.raw.pqt', self.device_collection, True)], - 'output_files': [('photometry.signal.pqt', 'alf/photometry', True)] - } - return signature - - priority = 90 - level = 1 - - def __init__(self, session_path, regions=None, **kwargs): - super().__init__(session_path, **kwargs) - # Task collection (this needs to be specified in the task kwargs) - self.collection = self.get_task_collection(kwargs.get('collection', None)) - self.device_collection = self.get_device_collection('photometry', device_collection='raw_photometry_data') - self.regions = regions - - def _run(self, **kwargs): - _, out_files = FibrePhotometry(self.session_path, collection=self.device_collection).extract( - regions=self.regions, path_out=self.session_path.joinpath('alf', 'photometry'), save=True) - return out_files diff --git a/ibllib/pipes/purge_rig_data.py b/ibllib/pipes/purge_rig_data.py deleted file mode 100644 index 9b7afba05..000000000 --- a/ibllib/pipes/purge_rig_data.py +++ /dev/null @@ -1,76 +0,0 @@ -""" -Purge data from acquisition PC. - -Steps: - -- Find all files by rglob -- Find all sessions of the found files -- Check Alyx if corresponding datasetTypes have been registered as existing - sessions and files on Flatiron -- Delete local raw file if found on Flatiron -""" -import argparse -from pathlib import Path - -from one.api import ONE -from one.alf.files import get_session_path - - -def session_name(path) -> str: - """Returns the session name (subject/date/number) string for any filepath - using session_path""" - return '/'.join(get_session_path(path).parts[-3:]) - - -def purge_local_data(local_folder, file_name, lab=None, dry=False): - # Figure out datasetType from file_name or file path - file_name = Path(file_name).name - alf_parts = file_name.split('.') - dstype = '.'.join(alf_parts[:2]) - print(f'Looking for file <{file_name}> in folder <{local_folder}>') - # Get all paths for file_name in local folder - local_folder = Path(local_folder) - files = list(local_folder.rglob(f'*{file_name}')) - print(f'Found {len(files)} files') - print(f'Checking on Flatiron for datsetType: {dstype}...') - # Get all sessions and details from Alyx that have the dstype - one = ONE(cache_rest=None) - if lab is None: - eid, det = one.search(dataset_types=[dstype], details=True) - else: - eid, det = one.search(dataset_types=[dstype], lab=lab, details=True) - urls = [] - for d in det: - urls.extend([x['data_url'] for x in d['data_dataset_session_related'] - if x['dataset_type'] == dstype]) - # Remove None answers when session is registered but dstype not htere yet - urls = [u for u in urls if u is not None] - print(f'Found files on Flatiron: {len(urls)}') - to_remove = [] - for f in files: - sess_name = session_name(f) - for u in urls: - if sess_name in u: - to_remove.append(f) - print(f'Local files to remove: {len(to_remove)}') - for f in to_remove: - print(f) - if dry: - continue - else: - f.unlink() - return - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description='Delete files from rig') - parser.add_argument('folder', help='Local iblrig_data folder') - parser.add_argument( - 'file', help='File name to search and destroy for every session') - parser.add_argument('-lab', required=False, default=None, - help='Lab name, search on Alyx faster. default: None') - parser.add_argument('--dry', required=False, default=False, - action='store_true', help='Dry run? default: False') - args = parser.parse_args() - purge_local_data(args.folder, args.file, lab=args.lab, dry=args.dry) - print('Done\n') diff --git a/ibllib/pipes/remote_server.py b/ibllib/pipes/remote_server.py deleted file mode 100644 index 1e7a5f702..000000000 --- a/ibllib/pipes/remote_server.py +++ /dev/null @@ -1,143 +0,0 @@ -import logging -from pathlib import Path, PosixPath -import re -import subprocess -import os - -from ibllib.ephys import sync_probes -from ibllib.pipes import ephys_preprocessing as ephys -from ibllib.oneibl.patcher import FTPPatcher -from one.api import ONE - -_logger = logging.getLogger(__name__) - -FLATIRON_HOST = 'ibl.flatironinstitute.org' -FLATIRON_PORT = 61022 -FLATIRON_USER = 'datauser' -root_path = '/mnt/s0/Data/' - - -def _run_command(cmd): - process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, - stderr=subprocess.PIPE) - info, error = process.communicate() - if process.returncode != 0: - return None, error.decode('utf-8') - else: - return info.decode('utf-8').strip(), None - - -def job_transfer_ks2(probe_path): - - assert isinstance(probe_path, str) - - def _get_volume_usage_percentage(vol): - cmd = f'df {vol}' - res, _ = _run_command(cmd) - size_list = re.split(' +', res.split('\n')[-1]) - per_usage = int(size_list[4][:-1]) - return per_usage - - # First check disk availability - space = _get_volume_usage_percentage('/mnt/s0') - # If we are less than 80% full we can transfer more stuff - if space < 80: - # Transfer data from flatiron to s3 - cmd = f'ssh -i ~/.ssh/mayo_alyx.pem -p {FLATIRON_PORT} ' \ - f'{FLATIRON_USER}@{FLATIRON_HOST} ./transfer_to_aws.sh {probe_path}' - result, error = _run_command(cmd) - - # Check that command has run as expected and output info to logger - if not result: - _logger.error(f'{probe_path}: Could not transfer data from FlatIron to s3 \n' - f'Error: {error}') - return - else: - _logger.info(f'{probe_path}: Data transferred from FlatIron to s3') - - # Transfer data from s3 to /mnt/s0/Data on aws - session = str(PosixPath(probe_path).parent.parent) - cmd = f'aws s3 sync s3://ibl-ks2-storage/{session} "/mnt/s0/Data/{session}"' - result, error = _run_command(cmd) - - # Check that command has run as expected and output info to logger - if not result: - _logger.error(f'{probe_path}: Could not transfer data from s3 to aws \n' - f'Error: {error}') - return - else: - _logger.info(f'{probe_path}: Data transferred from s3 to aws') - - # Rename the files to get rid of eid associated with each dataset - session_path = Path(root_path).joinpath(session) - for file in session_path.glob('**/*'): - if len(Path(file.stem).suffix) == 37: - file.rename(Path(file.parent, str(Path(file.stem).stem) + file.suffix)) - _logger.info(f'Renamed dataset {file.stem} to {str(Path(file.stem).stem)}') - else: - _logger.warning(f'Dataset {file.stem} not renamed') - continue - - # Create a sort_me.flag - cmd = f'touch /mnt/s0/Data/{session}/sort_me.flag' - result, error = _run_command(cmd) - _logger.info(f'{session}: sort_me.flag created') - - # Remove files from s3 - cmd = f'aws s3 rm --recursive s3://ibl-ks2-storage/{session}' - result, error = _run_command(cmd) - if not result: - _logger.error(f'{session}: Could not remove data from s3 \n' - f'Error: {error}') - return - else: - _logger.info(f'{session}: Data removed from s3') - - return - - -def job_run_ks2(): - - # Look for flag files in /mnt/s0/Data and sort them in order of date they were created - flag_files = list(Path(root_path).glob('**/sort_me.flag')) - flag_files.sort(key=os.path.getmtime) - - # Start with the oldest flag - session_path = flag_files[0].parent - session = str(PosixPath(*session_path.parts[4:])) - flag_files[0].unlink() - - # Instantiate one - one = ONE(cache_rest=None) - - # sync the probes - status, sync_files = sync_probes.sync(session_path) - - if not status: - _logger.error(f'{session}: Could not sync probes') - return - else: - _logger.info(f'{session}: Probes successfully synced') - - # run ks2 - task = ephys.SpikeSorting(session_path, one=one) - status = task.run() - - if status != 0: - _logger.error(f'{session}: Could not run ks2') - return - else: - _logger.info(f'{session}: ks2 successfully completed') - - # Run the cell qc - # qc_file = [] - - # Register and upload files to FTP Patcher - outfiles = task.outputs - ftp_patcher = FTPPatcher(one=one) - ftp_patcher.create_dataset(path=outfiles, created_by=one._par.ALYX_LOGIN) - - # Remove everything apart from alf folder and spike sorter folder - # Don't do this for now unitl we are sure it works for 3A and 3B!! - # cmd = f'rm -r {session_path}/raw_ephys_data rm -r {session_path}/raw_behavior_data' - # result, error = _run_command(cmd) diff --git a/ibllib/pipes/scan_fix_passive_files.py b/ibllib/pipes/scan_fix_passive_files.py index 0c0b0052d..fab675c5f 100644 --- a/ibllib/pipes/scan_fix_passive_files.py +++ b/ibllib/pipes/scan_fix_passive_files.py @@ -7,7 +7,7 @@ import shutil from pathlib import Path, PureWindowsPath -from one.alf.files import get_session_path +from one.alf.path import get_session_path log = logging.getLogger("ibllib") diff --git a/ibllib/pipes/sdsc_tasks.py b/ibllib/pipes/sdsc_tasks.py deleted file mode 100644 index efd3aa058..000000000 --- a/ibllib/pipes/sdsc_tasks.py +++ /dev/null @@ -1,43 +0,0 @@ -import numpy as np - -import spikeglx -from ibllib.ephys.sync_probes import apply_sync -from ibllib.pipes.tasks import Task - - -class RegisterSpikeSortingSDSC(Task): - - @property - def signature(self): - signature = { - 'input_files': [('*sync.npy', f'raw_ephys_data/{self.pname}', False), - ('*ap.meta', f'raw_ephys_data/{self.pname}', False)], - 'output_files': [] - } - return signature - - def __init__(self, session_path, pname=None, revision_label='#test#', **kwargs): - super().__init__(session_path, **kwargs) - - self.pname = pname - self.revision_label = revision_label - - def _run(self): - - out_path = self.session_path.joinpath('alf', self.pname, 'pykilosort', self.revision_label) - - def _fs(meta_file): - # gets sampling rate from data - md = spikeglx.read_meta_data(meta_file) - return spikeglx._get_fs_from_meta(md) - - sync_file = next(self.session_path.joinpath('raw_ephys_data', self.pname).glob('*sync.npy')) - meta_file = next(self.session_path.joinpath('raw_ephys_data', self.pname).glob('*ap.meta')) - - st_file = out_path.joinpath('spikes.times.npy') - spike_samples = np.load(out_path.joinpath('spikes.samples.npy')) - interp_times = apply_sync(sync_file, spike_samples / _fs(meta_file), forward=True) - np.save(st_file, interp_times) - - out = list(self.session_path.joinpath('alf', self.pname, 'pykilosort', self.revision_label).glob('*')) - return out diff --git a/ibllib/pipes/tasks.py b/ibllib/pipes/tasks.py index 61125a635..660c6502d 100644 --- a/ibllib/pipes/tasks.py +++ b/ibllib/pipes/tasks.py @@ -78,6 +78,7 @@ from collections import OrderedDict import traceback import json +from typing import List, Dict from graphviz import Digraph @@ -108,13 +109,13 @@ class Task(abc.ABC): time_elapsed_secs = None time_out_secs = 3600 * 2 # time-out after which a task is considered dead version = ibllib.__version__ - signature = {'input_files': [], 'output_files': []} # list of tuples (filename, collection, required_flag[, register]) force = False # whether to re-download missing input files on local server if not present job_size = 'small' # either 'small' or 'large', defines whether task should be run as part of the large or small job services env = None # the environment name within which to run the task (NB: the env is not activated automatically!) + on_error = 'continue' # whether to raise an exception on error ('raise') or report the error and continue ('continue') def __init__(self, session_path, parents=None, taskid=None, one=None, - machine=None, clobber=True, location='server', **kwargs): + machine=None, clobber=True, location='server', scratch_folder=None, on_error='continue', **kwargs): """ Base task class :param session_path: session path @@ -125,9 +126,11 @@ def __init__(self, session_path, parents=None, taskid=None, one=None, :param clobber: whether or not to overwrite log on rerun :param location: location where task is run. Options are 'server' (lab local servers'), 'remote' (remote compute node, data required for task downloaded via one), 'AWS' (remote compute node, data required for task downloaded via AWS), - or 'SDSC' (SDSC flatiron compute node) # TODO 'Globus' (remote compute node, data required for task downloaded via Globus) + or 'SDSC' (SDSC flatiron compute node) + :param scratch_folder: optional: Path where to write intermediate temporary data :param args: running arguments """ + self.on_error = on_error self.taskid = taskid self.one = one self.session_path = session_path @@ -141,8 +144,34 @@ def __init__(self, session_path, parents=None, taskid=None, one=None, self.clobber = clobber self.location = location self.plot_tasks = [] # Plotting task/ tasks to create plot outputs during the task + self.scratch_folder = scratch_folder self.kwargs = kwargs + @property + def signature(self) -> Dict[str, List]: + """ + The signature of the task specifies inputs and outputs for the given task. + For some tasks it is dynamic and calculated. The legacy code specifies those as tuples. + The preferred way is to use the ExpectedDataset input and output constructors. + + I = ExpectedDataset.input + O = ExpectedDataset.output + signature = { + 'input_files': [ + I(name='extract.me.npy', collection='raw_data', required=True, register=False, unique=False), + ], + 'output_files': [ + O(name='look.atme.npy', collection='shiny_data', required=True, register=True, unique=False) + ]} + is equivalent to: + signature = { + 'input_files': [('extract.me.npy', 'raw_data', True, True)], + 'output_files': [('look.atme.npy', 'shiny_data', True)], + } + :return: + """ + return {'input_files': [], 'output_files': []} + @property def name(self): return self.__class__.__name__ @@ -221,7 +250,7 @@ def run(self, **kwargs): if self.gpu >= 1: if not self._creates_lock(): self.status = -2 - _logger.info(f'Job {self.__class__} exited as a lock was found') + _logger.info(f'Job {self.__class__} exited as a lock was found at {self._lock_file_path()}') new_log = log_capture_string.getvalue() self.log = new_log if self.clobber else self.log + new_log _logger.removeHandler(ch) @@ -236,10 +265,12 @@ def run(self, **kwargs): self.outputs = outputs if not self.outputs else self.outputs # ensure None if no inputs registered else: self.outputs.extend(ensure_list(outputs)) # Add output files to list of inputs to register - except Exception: + except Exception as e: _logger.error(traceback.format_exc()) _logger.info(f'Job {self.__class__} errored') self.status = -1 + if self.on_error == 'raise': + raise e self.time_elapsed_secs = time.time() - start_time # log the outputs @@ -388,14 +419,14 @@ def setUp(self, **kwargs): # Attempts to download missing data using globus _logger.info('Not all input files found locally: attempting to re-download required files') self.data_handler = self.get_data_handler(location='serverglobus') - self.data_handler.setUp() + self.data_handler.setUp(task=self) # Double check we now have the required files to run the task # TODO in future should raise error if even after downloading don't have the correct files self.assert_expected_inputs(raise_error=False) return True else: self.data_handler = self.get_data_handler() - self.data_handler.setUp() + self.data_handler.setUp(task=self) self.get_signatures(**kwargs) self.assert_expected_inputs(raise_error=False) return True @@ -414,7 +445,7 @@ def cleanUp(self): Function to optionally overload to clean up :return: """ - self.data_handler.cleanUp() + self.data_handler.cleanUp(task=self) def assert_expected_outputs(self, raise_error=True): """ @@ -434,7 +465,7 @@ def assert_expected_outputs(self, raise_error=True): return everything_is_fine, files - def assert_expected_inputs(self, raise_error=True): + def assert_expected_inputs(self, raise_error=True, raise_ambiguous=False): """ Check that all the files necessary to run the task have been are present on disk. @@ -469,7 +500,7 @@ def assert_expected_inputs(self, raise_error=True): for k, v in variant_datasets.items() if any(v)} _logger.error('Ambiguous input datasets found: %s', ambiguous) - if raise_error or self.location == 'sdsc': # take no chances on SDSC + if raise_ambiguous or self.location == 'sdsc': # take no chances on SDSC # This could be mitigated if loading with data OneSDSC raise NotImplementedError( 'Multiple variant datasets found. Loading for these is undefined.') @@ -523,11 +554,13 @@ def get_data_handler(self, location=None): elif location == 'remote': dhandler = data_handlers.RemoteHttpDataHandler(self.session_path, self.signature, one=self.one) elif location == 'aws': - dhandler = data_handlers.RemoteAwsDataHandler(self, self.session_path, self.signature, one=self.one) + dhandler = data_handlers.RemoteAwsDataHandler(self.session_path, self.signature, one=self.one) elif location == 'sdsc': - dhandler = data_handlers.SDSCDataHandler(self, self.session_path, self.signature, one=self.one) + dhandler = data_handlers.SDSCDataHandler(self.session_path, self.signature, one=self.one) elif location == 'popeye': - dhandler = data_handlers.PopeyeDataHandler(self, self.session_path, self.signature, one=self.one) + dhandler = data_handlers.PopeyeDataHandler(self.session_path, self.signature, one=self.one) + elif location == 'ec2': + dhandler = data_handlers.RemoteEC2DataHandler(self.session_path, self.signature, one=self.one) else: raise ValueError(f'Unknown location "{location}"') return dhandler diff --git a/ibllib/pipes/training_status.py b/ibllib/pipes/training_status.py index f985c2dcc..50d28707f 100644 --- a/ibllib/pipes/training_status.py +++ b/ibllib/pipes/training_status.py @@ -8,7 +8,7 @@ from iblutil.numerical import ismember import one.alf.io as alfio from one.alf.exceptions import ALFObjectNotFound -import one.alf.files as alfiles +import one.alf.path as alfiles import matplotlib.pyplot as plt import matplotlib.dates as mdates from matplotlib.lines import Line2D @@ -208,9 +208,11 @@ def load_combined_trials(sess_paths, one, force=True): """ trials_dict = {} for sess_path in sess_paths: - trials = load_trials(Path(sess_path), one, force=force) + trials = load_trials(Path(sess_path), one, force=force, mode='warn') if trials is not None: - trials_dict[Path(sess_path).stem] = load_trials(Path(sess_path), one, force=force) + trials_dict[Path(sess_path).stem] = load_trials(Path(sess_path), one, force=force, mode='warn' + + ) return training.concatenate_trials(trials_dict) @@ -270,7 +272,7 @@ def get_latest_training_information(sess_path, one, save=True): # Find the earliest date in missing dates that we need to recompute the training status for missing_status = find_earliest_recompute_date(df.drop_duplicates('date').reset_index(drop=True)) for date in missing_status: - df = compute_training_status(df, date, one) + df, _, _, _ = compute_training_status(df, date, one) df_lim = df.drop_duplicates(subset='session_path', keep='first') @@ -314,7 +316,7 @@ def find_earliest_recompute_date(df): return df[first_index:].date.values -def compute_training_status(df, compute_date, one, force=True): +def compute_training_status(df, compute_date, one, force=True, populate=True): """ Compute the training status for compute date based on training from that session and two previous days. @@ -331,11 +333,19 @@ def compute_training_status(df, compute_date, one, force=True): An instance of ONE for loading trials data. force : bool When true and if the session trials can't be found, will attempt to re-extract from disk. + populate : bool + Whether to update the training data frame with the new training status value Returns ------- pandas.DataFrame - The input data frame with a 'training_status' column populated for `compute_date`. + The input data frame with a 'training_status' column populated for `compute_date` if populate=True + Bunch + Bunch containing information fit parameters information for the combined sessions + Bunch + Bunch cotaining the training status criteria information + str + The training status """ # compute_date = str(alfiles.session_path_parts(session_path, as_dict=True)['date']) @@ -378,11 +388,12 @@ def compute_training_status(df, compute_date, one, force=True): ephys_sessions.append(df_date.iloc[-1]['date']) n_status = np.max([-2, -1 * len(status)]) - training_status, _ = training.get_training_status(trials, protocol, ephys_sessions, n_delay) + training_status, info, criteria = training.get_training_status(trials, protocol, ephys_sessions, n_delay) training_status = pass_through_training_hierachy(training_status, status[n_status]) - df.loc[df['date'] == compute_date, 'training_status'] = training_status + if populate: + df.loc[df['date'] == compute_date, 'training_status'] = training_status - return df + return df, info, criteria, training_status def pass_through_training_hierachy(status_new, status_old): @@ -433,12 +444,13 @@ def compute_session_duration_delay_location(sess_path, collections=None, **kwarg try: start_time, end_time = _get_session_times(sess_path, md, sess_data) session_duration = session_duration + int((end_time - start_time).total_seconds() / 60) - session_delay = session_delay + md.get('SESSION_START_DELAY_SEC', 0) + session_delay = session_delay + md.get('SESSION_DELAY_START', + md.get('SESSION_START_DELAY_SEC', 0)) except Exception: session_duration = session_duration + 0 session_delay = session_delay + 0 - if 'ephys' in md.get('PYBPOD_BOARD', None): + if 'ephys' in md.get('RIG_NAME', md.get('PYBPOD_BOARD', None)): session_location = 'ephys_rig' else: session_location = 'training_rig' @@ -586,9 +598,12 @@ def get_training_info_for_session(session_paths, one, force=True): session_path = Path(session_path) protocols = [] for c in collections: - prot = get_bpod_extractor_class(session_path, task_collection=c) - prot = prot[:-6].lower() - protocols.append(prot) + try: + prot = get_bpod_extractor_class(session_path, task_collection=c) + prot = prot[:-6].lower() + protocols.append(prot) + except ValueError: + continue un_protocols = np.unique(protocols) # Example, training, training, biased - training would be combined, biased not @@ -751,9 +766,54 @@ def plot_performance_easy_median_reaction_time(df, subject): return ax +def display_info(df, axs): + compute_date = df['date'].values[-1] + _, info, criteria, _ = compute_training_status(df, compute_date, None, force=False, populate=False) + + def _array_to_string(vals): + if isinstance(vals, (str, bool, int, float)): + if isinstance(vals, float): + vals = np.round(vals, 3) + return f'{vals}' + + str_vals = '' + for v in vals: + if isinstance(v, float): + v = np.round(v, 3) + str_vals += f'{v}, ' + return str_vals[:-2] + + pos = np.arange(len(criteria))[::-1] * 0.1 + for i, (k, v) in enumerate(info.items()): + str_v = _array_to_string(v) + text = axs[0].text(0, pos[i], k.capitalize(), color='k', weight='bold', fontsize=8, transform=axs[0].transAxes) + axs[0].annotate(': ' + str_v, xycoords=text, xy=(1, 0), verticalalignment="bottom", + color='k', fontsize=7) + + pos = np.arange(len(criteria))[::-1] * 0.1 + crit_val = criteria.pop('Criteria') + c = 'g' if crit_val['pass'] else 'r' + str_v = _array_to_string(crit_val['val']) + text = axs[1].text(0, pos[0], 'Criteria', color='k', weight='bold', fontsize=8, transform=axs[1].transAxes) + axs[1].annotate(': ' + str_v, xycoords=text, xy=(1, 0), verticalalignment="bottom", + color=c, fontsize=7) + pos = pos[1:] + + for i, (k, v) in enumerate(criteria.items()): + c = 'g' if v['pass'] else 'r' + str_v = _array_to_string(v['val']) + text = axs[1].text(0, pos[i], k.capitalize(), color='k', weight='bold', fontsize=8, transform=axs[1].transAxes) + axs[1].annotate(': ' + str_v, xycoords=text, xy=(1, 0), verticalalignment="bottom", + color=c, fontsize=7) + + axs[0].set_axis_off() + axs[1].set_axis_off() + + def plot_fit_params(df, subject): - fig, axs = plt.subplots(2, 2, figsize=(12, 6)) - axs = axs.ravel() + fig, axs = plt.subplots(2, 3, figsize=(12, 6), gridspec_kw={'width_ratios': [2, 2, 1]}) + + display_info(df, axs=[axs[0, 2], axs[1, 2]]) df = df.drop_duplicates('date').reset_index(drop=True) @@ -777,11 +837,11 @@ def plot_fit_params(df, subject): 'color': cmap[0], 'join': False} - plot_over_days(df, subject, y50, ax=axs[0], legend=False, title=False) - plot_over_days(df, subject, y80, ax=axs[0], legend=False, title=False) - plot_over_days(df, subject, y20, ax=axs[0], legend=False, title=False) - axs[0].axhline(16, linewidth=2, linestyle='--', color='k') - axs[0].axhline(-16, linewidth=2, linestyle='--', color='k') + plot_over_days(df, subject, y50, ax=axs[0, 0], legend=False, title=False) + plot_over_days(df, subject, y80, ax=axs[0, 0], legend=False, title=False) + plot_over_days(df, subject, y20, ax=axs[0, 0], legend=False, title=False) + axs[0, 0].axhline(16, linewidth=2, linestyle='--', color='k') + axs[0, 0].axhline(-16, linewidth=2, linestyle='--', color='k') y50['column'] = 'combined_thres_50' y50['title'] = 'Threshold' @@ -793,10 +853,10 @@ def plot_fit_params(df, subject): y20['title'] = 'Threshold' y80['lim'] = [0, 100] - plot_over_days(df, subject, y50, ax=axs[1], legend=False, title=False) - plot_over_days(df, subject, y80, ax=axs[1], legend=False, title=False) - plot_over_days(df, subject, y20, ax=axs[1], legend=False, title=False) - axs[1].axhline(19, linewidth=2, linestyle='--', color='k') + plot_over_days(df, subject, y50, ax=axs[0, 1], legend=False, title=False) + plot_over_days(df, subject, y80, ax=axs[0, 1], legend=False, title=False) + plot_over_days(df, subject, y20, ax=axs[0, 1], legend=False, title=False) + axs[0, 1].axhline(19, linewidth=2, linestyle='--', color='k') y50['column'] = 'combined_lapselow_50' y50['title'] = 'Lapse Low' @@ -808,10 +868,10 @@ def plot_fit_params(df, subject): y20['title'] = 'Lapse Low' y20['lim'] = [0, 1] - plot_over_days(df, subject, y50, ax=axs[2], legend=False, title=False) - plot_over_days(df, subject, y80, ax=axs[2], legend=False, title=False) - plot_over_days(df, subject, y20, ax=axs[2], legend=False, title=False) - axs[2].axhline(0.2, linewidth=2, linestyle='--', color='k') + plot_over_days(df, subject, y50, ax=axs[1, 0], legend=False, title=False) + plot_over_days(df, subject, y80, ax=axs[1, 0], legend=False, title=False) + plot_over_days(df, subject, y20, ax=axs[1, 0], legend=False, title=False) + axs[1, 0].axhline(0.2, linewidth=2, linestyle='--', color='k') y50['column'] = 'combined_lapsehigh_50' y50['title'] = 'Lapse High' @@ -823,19 +883,21 @@ def plot_fit_params(df, subject): y20['title'] = 'Lapse High' y20['lim'] = [0, 1] - plot_over_days(df, subject, y50, ax=axs[3], legend=False, title=False, training_lines=True) - plot_over_days(df, subject, y80, ax=axs[3], legend=False, title=False, training_lines=False) - plot_over_days(df, subject, y20, ax=axs[3], legend=False, title=False, training_lines=False) - axs[3].axhline(0.2, linewidth=2, linestyle='--', color='k') + plot_over_days(df, subject, y50, ax=axs[1, 1], legend=False, title=False, training_lines=True) + plot_over_days(df, subject, y80, ax=axs[1, 1], legend=False, title=False, training_lines=False) + plot_over_days(df, subject, y20, ax=axs[1, 1], legend=False, title=False, training_lines=False) + axs[1, 1].axhline(0.2, linewidth=2, linestyle='--', color='k') fig.suptitle(f'{subject} {df.iloc[-1]["date"]}: {df.iloc[-1]["training_status"]}') - lines, labels = axs[3].get_legend_handles_labels() - fig.legend(lines, labels, loc='upper center', bbox_to_anchor=(0.5, 0.1), fancybox=True, shadow=True, ncol=5) + lines, labels = axs[1, 1].get_legend_handles_labels() + fig.legend(lines, labels, loc='upper center', bbox_to_anchor=(0.5, 0.1), facecolor='w', fancybox=True, shadow=True, + ncol=5) legend_elements = [Line2D([0], [0], marker='o', color='w', label='p=0.5', markerfacecolor=cmap[1], markersize=8), Line2D([0], [0], marker='o', color='w', label='p=0.2', markerfacecolor=cmap[0], markersize=8), Line2D([0], [0], marker='o', color='w', label='p=0.8', markerfacecolor=cmap[2], markersize=8)] - legend2 = plt.legend(handles=legend_elements, loc='upper right', bbox_to_anchor=(1.1, -0.2), fancybox=True, shadow=True) + legend2 = plt.legend(handles=legend_elements, loc='upper right', bbox_to_anchor=(1.1, -0.2), fancybox=True, + shadow=True, facecolor='w') fig.add_artist(legend2) return axs @@ -844,7 +906,7 @@ def plot_fit_params(df, subject): def plot_psychometric_curve(df, subject, one): df = df.drop_duplicates('date').reset_index(drop=True) sess_path = Path(df.iloc[-1]["session_path"]) - trials = load_trials(sess_path, one) + trials = load_trials(sess_path, one, mode='warn') fig, ax1 = plt.subplots(figsize=(8, 6)) @@ -907,7 +969,7 @@ def plot_over_days(df, subject, y1, y2=None, ax=None, legend=True, title=True, t box.width, box.height * 0.9]) if legend: ax1.legend(loc='upper center', bbox_to_anchor=(0.5, -0.1), - fancybox=True, shadow=True, ncol=5) + fancybox=True, shadow=True, ncol=5, facecolor='white') return ax1 @@ -1010,7 +1072,7 @@ def make_plots(session_path, one, df=None, save=False, upload=False, task_collec save_name = save_path.joinpath('subj_psychometric_fit_params.png') outputs.append(save_name) - ax4[0].get_figure().savefig(save_name, bbox_inches='tight') + ax4[0, 0].get_figure().savefig(save_name, bbox_inches='tight') save_name = save_path.joinpath('subj_psychometric_curve.png') outputs.append(save_name) diff --git a/ibllib/plots/figures.py b/ibllib/plots/figures.py index 384042add..14a6bb554 100644 --- a/ibllib/plots/figures.py +++ b/ibllib/plots/figures.py @@ -18,6 +18,7 @@ import one.alf.io as alfio from one.alf.exceptions import ALFObjectNotFound from ibllib.io.video import get_video_frame, url_from_eid +from ibllib.oneibl.data_handlers import ExpectedDataset import spikeglx import neuropixel from brainbox.plot import driftmap @@ -387,7 +388,6 @@ def get_probe_signature(self): def get_signatures(self, **kwargs): files_spikes = Path(self.session_path).joinpath('alf').rglob('spikes.times.npy') folder_probes = [f.parent for f in files_spikes] - full_input_files = [] for sig in self.signature['input_files']: for folder in folder_probes: @@ -396,8 +396,9 @@ def get_signatures(self, **kwargs): self.input_files = full_input_files else: self.input_files = self.signature['input_files'] - self.output_files = self.signature['output_files'] + self.input_files = [ExpectedDataset.input(*i) for i in self.input_files] + self.output_files = [ExpectedDataset.output(*i) for i in self.output_files] class BadChannelsAp(ReportSnapshotProbe): diff --git a/ibllib/qc/base.py b/ibllib/qc/base.py index 90899ef72..4385aa463 100644 --- a/ibllib/qc/base.py +++ b/ibllib/qc/base.py @@ -85,7 +85,7 @@ def overall_outcome(outcomes: iter, agg=max) -> spec.QC: one.alf.spec.QC The overall outcome. """ - outcomes = filter(lambda x: x not in (None, np.NaN), outcomes) + outcomes = filter(lambda x: x not in (None, np.nan), outcomes) return agg(map(spec.QC.validate, outcomes)) def _set_eid_or_path(self, session_path_or_eid): diff --git a/ibllib/qc/critical_reasons.py b/ibllib/qc/critical_reasons.py index d964abd53..2d831c82a 100644 --- a/ibllib/qc/critical_reasons.py +++ b/ibllib/qc/critical_reasons.py @@ -1,20 +1,20 @@ """ -Prompt experimenter for reason for marking session/insertion as CRITICAL +Methods for adding QC sign-off notes to Alyx. + +Includes a GUI to prompt experimenter for reason for marking session/insertion as CRITICAL. Choices are listed in the global variables. Multiple reasons can be selected. -Places info in Alyx session note in a format that is machine retrievable (text->json) +Places info in Alyx session note in a format that is machine retrievable (text->json). """ import abc import logging import json -import warnings from datetime import datetime -from one.api import OneAlyx from one.webclient import AlyxClient _logger = logging.getLogger('ibllib') -def main_gui(uuid, reasons_selected, one=None, alyx=None): +def main_gui(uuid, reasons_selected, alyx=None): """ Main function to call to input a reason for marking an insertion as CRITICAL from the alignment GUI. @@ -26,16 +26,11 @@ def main_gui(uuid, reasons_selected, one=None, alyx=None): An insertion ID. reasons_selected : list of str A subset of REASONS_INS_CRIT_GUI. - one : one.api.OneAlyx - (DEPRECATED) An instance of ONE. NB: Pass in an instance of AlyxClient instead. alyx : one.webclient.AlyxClient An AlyxClient instance. """ # hit the database to check if uuid is insertion uuid - if alyx is None and one is not None: - # Deprecate ONE in future because instantiating it takes longer and is unnecessary - warnings.warn('In future please pass in an AlyxClient instance (i.e. `one.alyx`)', FutureWarning) - alyx = one if isinstance(one, AlyxClient) else one.alyx + alyx = alyx or AlyxClient() ins_list = alyx.rest('insertions', 'list', id=uuid, no_cache=True) if len(ins_list) != 1: raise ValueError(f'N={len(ins_list)} insertion found, expected N=1. Check uuid provided.') @@ -51,7 +46,7 @@ def main_gui(uuid, reasons_selected, one=None, alyx=None): note._upload_note(overwrite=True) -def main(uuid, one=None, alyx=None): +def main(uuid, alyx=None): """ Main function to call to input a reason for marking a session/insertion as CRITICAL programmatically. @@ -65,8 +60,6 @@ def main(uuid, one=None, alyx=None): ---------- uuid : uuid.UUID, str An experiment UUID or an insertion UUID. - one : one.api.OneAlyx - (DEPRECATED) An instance of ONE. NB: Pass in an instance of AlyxClient instead. alyx : one.webclient.AlyxClient An AlyxClient instance. @@ -86,12 +79,7 @@ def main(uuid, one=None, alyx=None): >>> test_json_read = json.loads(notes[0]['text']) """ - if alyx is None and one is not None: - # Deprecate ONE in future because instantiating it takes longer and is unnecessary - warnings.warn('In future please pass in an AlyxClient instance (i.e. `one.alyx`)', FutureWarning) - alyx = one if isinstance(one, AlyxClient) else one.alyx - if not alyx: - alyx = AlyxClient() + alyx = alyx or AlyxClient() # ask reasons for selection of critical status # hit the database to know if uuid is insertion or session uuid @@ -144,10 +132,6 @@ def __init__(self, uuid, alyx, content_type=None): The Alyx model name of the UUID. """ self.uuid = uuid - if isinstance(alyx, OneAlyx): - # Deprecate ONE in future because instantiating it takes longer and is unnecessary - warnings.warn('In future please pass in an AlyxClient instance (i.e. `one.alyx`)', FutureWarning) - alyx = alyx.alyx self.alyx = alyx self.selected_reasons = [] self.other_reason = [] diff --git a/ibllib/qc/qcplots.py b/ibllib/qc/qcplots.py deleted file mode 100644 index 4af2b294c..000000000 --- a/ibllib/qc/qcplots.py +++ /dev/null @@ -1,80 +0,0 @@ -"""Plots for trial QC - -Example: - one = ONE() - # Load data - eid = 'c8ef527b-6f7f-4f08-8b99-5aeb9d2b3740 - # Run QC - qc = TaskQC(eid, one=one) - plot_results(qc) - plt.show() - -""" -from collections import Counter -from collections.abc import Sized -from pathlib import Path -from datetime import datetime - -import matplotlib.pyplot as plt -import pandas as pd -import seaborn as sns - -from ibllib.qc.task_metrics import TaskQC - - -def plot_results(qc_obj, save_path=None): - if not isinstance(qc_obj, TaskQC): - raise ValueError('Input must be TaskQC object') - - if not qc_obj.passed: - qc_obj.compute() - outcome, results, outcomes = qc_obj.compute_session_status() - - # Sort checks by outcome and print - map = {k: [] for k in set(outcomes.values())} - for k, v in outcomes.items(): - map[v].append(k[6:]) - for k, v in map.items(): - print(f'The following checks were labelled {k}:') - print('\n'.join(v), '\n') - - # Collect some session details - n_trials = qc_obj.extractor.data['intervals'].shape[0] - det = qc_obj.one.get_details(qc_obj.eid) - ref = f"{datetime.fromisoformat(det['start_time']).date()}_{det['number']:d}_{det['subject']}" - title = ref + (' (Bpod data only)' if qc_obj.extractor.bpod_only else '') - - # Sort into each category - counts = Counter(outcomes.values()) - plt.bar(range(len(counts)), counts.values(), align='center', tick_label=list(counts.keys())) - plt.gcf().suptitle(title) - plt.ylabel('# QC checks') - plt.xlabel('outcome') - - a4_dims = (11.7, 8.27) - fig, (ax0, ax1) = plt.subplots(2, 1, figsize=a4_dims, constrained_layout=True) - fig.suptitle(title) - - # Plot failed trial level metrics - def get_trial_level_failed(d): - new_dict = {k[6:]: v for k, v in d.items() - if outcomes[k] == 'FAIL' and isinstance(v, Sized) and len(v) == n_trials} - return pd.DataFrame.from_dict(new_dict) - sns.boxplot(data=get_trial_level_failed(qc_obj.metrics), orient='h', ax=ax0) - ax0.set_yticklabels(ax0.get_yticklabels(), rotation=30, fontsize=8) - ax0.set(xscale='symlog', title='Metrics (failed)', xlabel='metric values (units vary)') - - # Plot failed trial level metrics - sns.barplot(data=get_trial_level_failed(qc_obj.passed), orient='h', ax=ax1) - ax1.set_yticklabels(ax1.get_yticklabels(), rotation=30, fontsize=8) - ax1.set(title='Counts', xlabel='proportion of trials that passed') - - if save_path is not None: - save_path = Path(save_path) - - if save_path.is_dir() and not save_path.exists(): - print(f"Folder {save_path} does not exist, not saving...") - elif save_path.is_dir(): - fig.savefig(save_path.joinpath(f"{ref}_QC.png")) - else: - fig.savefig(save_path) diff --git a/ibllib/qc/task_metrics.py b/ibllib/qc/task_metrics.py index e8139657a..b5f3cd7e7 100644 --- a/ibllib/qc/task_metrics.py +++ b/ibllib/qc/task_metrics.py @@ -512,7 +512,7 @@ def compute(self, **kwargs): iti = (np.roll(data['stimOn_times'], -1) - data['stimOff_times'])[:-1] metric = np.r_[np.nan_to_num(iti, nan=np.inf), np.nan] - 1. passed[check] = np.abs(metric) <= 0.1 - passed[check][-1] = np.NaN + passed[check][-1] = np.nan metrics[check] = metric # Checks common to training QC diff --git a/ibllib/tests/extractors/test_extractors.py b/ibllib/tests/extractors/test_extractors.py index 1ff19bd1e..0decc6880 100644 --- a/ibllib/tests/extractors/test_extractors.py +++ b/ibllib/tests/extractors/test_extractors.py @@ -3,13 +3,14 @@ import shutil import tempfile import unittest -import unittest.mock +from unittest.mock import patch, Mock, MagicMock from pathlib import Path import numpy as np import pandas as pd import one.alf.io as alfio +from ibllib.io.extractors.bpod_trials import get_bpod_extractor from ibllib.io.extractors import training_trials, biased_trials, camera from ibllib.io import raw_data_loaders as raw from ibllib.io.extractors.base import BaseExtractor @@ -530,13 +531,13 @@ def test_size_outputs(self): 'peakVelocity_times': np.array([1, 1])} function_name = 'ibllib.io.extractors.training_wheel.extract_wheel_moves' # Training - with unittest.mock.patch(function_name, return_value=mock_data): + with patch(function_name, return_value=mock_data): task, = get_trials_tasks(self.training_lt5['path']) trials, _ = task.extract_behaviour(save=True) trials = alfio.load_object(self.training_lt5['path'] / 'alf', object='trials') self.assertTrue(alfio.check_dimensions(trials) == 0) # Biased - with unittest.mock.patch(function_name, return_value=mock_data): + with patch(function_name, return_value=mock_data): task, = get_trials_tasks(self.biased_lt5['path']) trials, _ = task.extract_behaviour(save=True) trials = alfio.load_object(self.biased_lt5['path'] / 'alf', object='trials') @@ -753,5 +754,33 @@ def test_attribute_times(self, display=False): camera.attribute_times(tsa, tsb, injective=False, take='closest') +class TestGetBpodExtractor(unittest.TestCase): + + def test_get_bpod_extractor(self): + # un-existing extractor should raise a value error + with self.assertRaises(ValueError): + get_bpod_extractor('', protocol='sdf', task_collection='raw_behavior_data') + # in this case this returns an ibllib.io.extractors.training_trials.TrainingTrials instance + extractor = get_bpod_extractor( + '', protocol='_trainingChoiceWorld', + task_collection='raw_behavior_data' + ) + self.assertTrue(isinstance(extractor, BaseExtractor)) + + def test_get_bpod_custom_extractor(self): + # here we'll mock a custom module with a custom extractor + DummyModule = MagicMock() + DummyExtractor = Mock(spec_set=BaseExtractor) + DummyModule.toto.return_value = DummyExtractor + base_module = 'ibllib.io.extractors.bpod_trials' + with patch(f'{base_module}.get_bpod_extractor_class', return_value='toto'), \ + patch(f'{base_module}.importlib.import_module', return_value=DummyModule) as import_mock: + self.assertIs(get_bpod_extractor(''), DummyExtractor) + import_mock.assert_called_with('projects') + # Check raises when imported class not an extractor + DummyModule.toto.return_value = MagicMock(spec=dict) + self.assertRaisesRegex(ValueError, 'should be an Extractor class', get_bpod_extractor, '') + + if __name__ == '__main__': unittest.main(exit=False, verbosity=2) diff --git a/ibllib/tests/qc/test_critical_reasons.py b/ibllib/tests/qc/test_critical_reasons.py index 31f9ef732..cf4963eb4 100644 --- a/ibllib/tests/qc/test_critical_reasons.py +++ b/ibllib/tests/qc/test_critical_reasons.py @@ -11,8 +11,6 @@ from ibllib.tests.fixtures.utils import register_new_session import ibllib.qc.critical_reasons as usrpmt -one = ONE(**TEST_DB) - def mock_input(prompt): if "Select from this list the reason(s)" in prompt: @@ -26,13 +24,14 @@ def mock_input(prompt): class TestUserPmtSess(unittest.TestCase): def setUp(self) -> None: + self.one = ONE(**TEST_DB) # Make sure tests use correct session ID - one.alyx.clear_rest_cache() + self.one.alyx.clear_rest_cache() # Create new session on database with a random date to avoid race conditions - _, eid = register_new_session(one, subject='ZM_1150') + _, eid = register_new_session(self.one, subject='ZM_1150') eid = str(eid) # Currently the task protocol of a session must contain 'ephys' in order to create an insertion! - one.alyx.rest('sessions', 'partial_update', id=eid, data={'task_protocol': 'ephys'}) + self.one.alyx.rest('sessions', 'partial_update', id=eid, data={'task_protocol': 'ephys'}) self.sess_id = eid # Make new insertion with random name @@ -41,15 +40,15 @@ def setUp(self) -> None: 'model': '3A', 'json': None, 'datasets': []} - one.alyx.rest('insertions', 'create', data=data) + self.one.alyx.rest('insertions', 'create', data=data) # 3. Save ins id in global variable for test access - self.ins_id = one.alyx.rest('insertions', 'list', session=self.sess_id, name=data['name'], no_cache=True)[0]['id'] + self.ins_id = self.one.alyx.rest('insertions', 'list', session=self.sess_id, name=data['name'], no_cache=True)[0]['id'] def test_userinput_sess(self): eid = self.sess_id # sess id with mock.patch('builtins.input', mock_input): - usrpmt.main(eid, one=one) - note = one.alyx.rest('notes', 'list', django=f'object_id,{eid}', no_cache=True) + usrpmt.main(eid, alyx=self.one.alyx) + note = self.one.alyx.rest('notes', 'list', django=f'object_id,{eid}', no_cache=True) critical_dict = json.loads(note[0]['text']) print(critical_dict) expected_dict = { @@ -61,8 +60,8 @@ def test_userinput_sess(self): def test_userinput_ins(self): eid = self.ins_id # probe id with mock.patch('builtins.input', mock_input): - usrpmt.main(eid, one=one) - note = one.alyx.rest('notes', 'list', django=f'object_id,{eid}', no_cache=True) + usrpmt.main(eid, alyx=self.one.alyx) + note = self.one.alyx.rest('notes', 'list', django=f'object_id,{eid}', no_cache=True) critical_dict = json.loads(note[0]['text']) expected_dict = { 'title': '=== EXPERIMENTER REASON(S) FOR MARKING THE INSERTION AS CRITICAL ===', @@ -73,32 +72,30 @@ def test_userinput_ins(self): def test_note_already_existing(self): eid = self.sess_id # sess id with mock.patch('builtins.input', mock_input): - usrpmt.main(eid, one=one) - note = one.alyx.rest('notes', 'list', django=f'object_id,{eid}', no_cache=True) + usrpmt.main(eid, alyx=self.one.alyx) + note = self.one.alyx.rest('notes', 'list', django=f'object_id,{eid}', no_cache=True) original_note_id = note[0]['id'] with mock.patch('builtins.input', mock_input): - usrpmt.main(eid, one=one) + usrpmt.main(eid, alyx=self.one.alyx) - note = one.alyx.rest('notes', 'list', django=f'object_id,{eid}', no_cache=True) + note = self.one.alyx.rest('notes', 'list', django=f'object_id,{eid}', no_cache=True) self.assertEqual(len(note), 1) - self.assertNotEquals(original_note_id, note[0]['id']) + self.assertNotEqual(original_note_id, note[0]['id']) def test_guiinput_ins(self): eid = self.ins_id # probe id str_notes_static = '=== EXPERIMENTER REASON(S) FOR MARKING THE INSERTION AS CRITICAL ===' - notes = one.alyx.rest('notes', 'list', - django=f'text__icontains,{str_notes_static},object_id,{eid}', - no_cache=True) + query = f'text__icontains,{str_notes_static},object_id,{eid}' + notes = self.one.alyx.rest('notes', 'list', django=query, no_cache=True) # delete any previous notes for note in notes: - one.alyx.rest('notes', 'delete', id=note['id']) + self.one.alyx.rest('notes', 'delete', id=note['id']) # write a new note and make sure it is found - usrpmt.main_gui(eid, reasons_selected=['Drift'], one=one) - note = one.alyx.rest('notes', 'list', - django=f'text__icontains,{str_notes_static},object_id,{eid}', - no_cache=True) + usrpmt.main_gui(eid, reasons_selected=['Drift'], alyx=self.one.alyx) + query = f'text__icontains,{str_notes_static},object_id,{eid}' + note = self.one.alyx.rest('notes', 'list', django=query, no_cache=True) self.assertEqual(len(note), 1) critical_dict = json.loads(note[0]['text']) expected_dict = { @@ -113,64 +110,60 @@ def test_note_probe_ins(self): content_type = 'probeinsertion' note_text = 'USING A FAKE SINGLE STRING HERE KSROI283IF982HKJFHWRY' - notes = one.alyx.rest('notes', 'list', - django=f'text__icontains,{note_text},object_id,{eid}', - no_cache=True) + query = f'text__icontains,{note_text},object_id,{eid}' + notes = self.one.alyx.rest('notes', 'list', django=query, no_cache=True) # delete any previous notes for note in notes: - one.alyx.rest('notes', 'delete', id=note['id']) + self.one.alyx.rest('notes', 'delete', id=note['id']) # create new note - my_note = {'user': one.alyx.user, + my_note = {'user': self.one.alyx.user, 'content_type': content_type, 'object_id': eid, 'text': f'{note_text}'} - one.alyx.rest('notes', 'create', data=my_note) - - notes = one.alyx.rest('notes', 'list', - django=f'text__icontains,{note_text},object_id,{eid}', - no_cache=True) + self.one.alyx.rest('notes', 'create', data=my_note) + query = f'text__icontains,{note_text},object_id,{eid}' + notes = self.one.alyx.rest('notes', 'list', django=query, no_cache=True) self.assertEqual(len(notes), 1) def tearDown(self) -> None: try: - one.alyx.rest('insertions', 'delete', id=self.ins_id) + self.one.alyx.rest('insertions', 'delete', id=self.ins_id) except requests.HTTPError as ex: if ex.errno != 404: raise ex - notes = one.alyx.rest('notes', 'list', django=f'object_id,{self.sess_id}', no_cache=True) + notes = self.one.alyx.rest('notes', 'list', django=f'object_id,{self.sess_id}', no_cache=True) for n in notes: - one.alyx.rest('notes', 'delete', id=n['id']) + self.one.alyx.rest('notes', 'delete', id=n['id']) text = '"title": "=== EXPERIMENTER REASON(S)' - notes = one.alyx.rest('notes', 'list', django=f'text__icontains,{text}', no_cache=True) + notes = self.one.alyx.rest('notes', 'list', django=f'text__icontains,{text}', no_cache=True) for n in notes: - one.alyx.rest('notes', 'delete', n['id']) + self.one.alyx.rest('notes', 'delete', n['id']) text = 'USING A FAKE SINGLE STRING HERE KSROI283IF982HKJFHWRY' - notes = one.alyx.rest('notes', 'list', django=f'text__icontains,{text}', no_cache=True) + notes = self.one.alyx.rest('notes', 'list', django=f'text__icontains,{text}', no_cache=True) for n in notes: - one.alyx.rest('notes', 'delete', n['id']) + self.one.alyx.rest('notes', 'delete', n['id']) class TestSignOffNote(unittest.TestCase): def setUp(self) -> None: - path, eid = register_new_session(one, subject='ZM_1743') + self.one = ONE(**TEST_DB) + _, eid = register_new_session(self.one, subject='ZM_1743') self.eid = str(eid) self.sign_off_keys = ['biasedChoiceWorld_00', 'passiveChoiceWorld_01'] data = {'sign_off_checklist': dict.fromkeys(map(lambda x: f'{x}', self.sign_off_keys)), 'lala': 'blabla', 'fafa': 'gaga'} - one.alyx.json_field_update("sessions", self.eid, data=data) + self.one.alyx.json_field_update("sessions", self.eid, data=data) def test_sign_off(self): - sess = one.alyx.rest('sessions', 'read', id=self.eid, no_cache=True) - - with self.assertWarns(FutureWarning): - note = usrpmt.TaskSignOffNote(self.eid, one, sign_off_key=self.sign_off_keys[0]) + sess = self.one.alyx.rest('sessions', 'read', id=self.eid, no_cache=True) + note = usrpmt.TaskSignOffNote(self.eid, self.one.alyx, sign_off_key=self.sign_off_keys[0]) note.sign_off() - sess = one.alyx.rest('sessions', 'read', id=self.eid, no_cache=True) + sess = self.one.alyx.rest('sessions', 'read', id=self.eid, no_cache=True) assert sess['json']['sign_off_checklist'][self.sign_off_keys[0]]['date'] == note.datetime_key.split('_')[0] assert sess['json']['sign_off_checklist'][self.sign_off_keys[0]]['user'] == note.datetime_key.split('_')[1] # Make sure other json fields haven't been changed @@ -179,11 +172,11 @@ def test_sign_off(self): def test_upload_note_prompt(self): with mock.patch('builtins.input', mock_input): - note = usrpmt.TaskSignOffNote(self.eid, one, sign_off_key=self.sign_off_keys[0]) + note = usrpmt.TaskSignOffNote(self.eid, self.one.alyx, sign_off_key=self.sign_off_keys[0]) note.upload_note() - notes = one.alyx.rest('notes', 'list', django=f'text__icontains,{note.note_title},object_id,{self.eid}', - no_cache=True) + query = f'text__icontains,{note.note_title},object_id,{self.eid}' + notes = self.one.alyx.rest('notes', 'list', django=query, no_cache=True) assert len(notes) == 1 note_dict = json.loads(notes[0]['text']) @@ -194,7 +187,7 @@ def test_upload_note_prompt(self): } assert expected_dict == note_dict - sess = one.alyx.rest('sessions', 'read', id=self.eid, no_cache=True) + sess = self.one.alyx.rest('sessions', 'read', id=self.eid, no_cache=True) print(sess['json']) assert sess['json']['sign_off_checklist'][self.sign_off_keys[0]]['date'] == note.datetime_key.split('_')[0] assert sess['json']['sign_off_checklist'][self.sign_off_keys[0]]['user'] == note.datetime_key.split('_')[1] @@ -202,16 +195,15 @@ def test_upload_note_prompt(self): def test_upload_existing_note(self): # Make first note with mock.patch('builtins.input', mock_input): - note = usrpmt.TaskSignOffNote(self.eid, one, sign_off_key=self.sign_off_keys[0]) + note = usrpmt.TaskSignOffNote(self.eid, self.one.alyx, sign_off_key=self.sign_off_keys[0]) note.datetime_key = '2022-11-10_user' note.upload_note() # Make note again - note = usrpmt.TaskSignOffNote(self.eid, one, sign_off_key=self.sign_off_keys[0]) + note = usrpmt.TaskSignOffNote(self.eid, self.one.alyx, sign_off_key=self.sign_off_keys[0]) note.upload_note(nums='0') - - notes = one.alyx.rest('notes', 'list', django=f'text__icontains,{note.note_title},object_id,{self.eid}', - no_cache=True) + query = f'text__icontains,{note.note_title},object_id,{self.eid}' + notes = self.one.alyx.rest('notes', 'list', django=query, no_cache=True) assert len(notes) == 1 note_dict = json.loads(notes[0]['text']) @@ -226,7 +218,7 @@ def test_upload_existing_note(self): assert expected_dict == note_dict def tearDown(self) -> None: - one.alyx.rest('sessions', 'delete', id=self.eid) + self.one.alyx.rest('sessions', 'delete', id=self.eid) if __name__ == '__main__': diff --git a/ibllib/tests/test_io.py b/ibllib/tests/test_io.py index 3ef9574e4..09711e3b4 100644 --- a/ibllib/tests/test_io.py +++ b/ibllib/tests/test_io.py @@ -527,10 +527,22 @@ def test_read_yaml(self): self.assertCountEqual(self.fixture.keys(), data_keys) def test_patch_data(self): + """Test for session_params._patch_file function.""" with patch(session_params.__name__ + '.SPEC_VERSION', '1.0.0'), \ self.assertLogs(session_params.__name__, logging.WARNING): data = session_params._patch_file({'version': '1.1.0'}) self.assertEqual(data, {'version': '1.0.0'}) + # Check tasks dicts separated into lists + unpatched = {'version': '0.0.1', 'tasks': { + 'fooChoiceWorld': {1: '1'}, 'barChoiceWorld': {2: '2'}}} + data = session_params._patch_file(unpatched) + self.assertIsInstance(data['tasks'], list) + self.assertEqual([['fooChoiceWorld'], ['barChoiceWorld']], list(map(list, data['tasks']))) + # Check patching list of dicts with some containing more than 1 key + unpatched = {'tasks': [{'foo': {1: '1'}}, {'bar': {2: '2'}, 'baz': {3: '3'}}]} + data = session_params._patch_file(unpatched) + self.assertEqual(3, len(data['tasks'])) + self.assertEqual([['foo'], ['bar'], ['baz']], list(map(list, data['tasks']))) def test_get_collections(self): collections = session_params.get_collections(self.fixture) @@ -561,16 +573,28 @@ def test_merge_params(self): b = {'procedures': ['Imaging', 'Injection'], 'tasks': [{'fooChoiceWorld': {'collection': 'bar'}}]} c = session_params.merge_params(a, b, copy=True) self.assertCountEqual(['Imaging', 'Behavior training/tasks', 'Injection'], c['procedures']) - self.assertCountEqual(['passiveChoiceWorld', 'ephysChoiceWorld', 'fooChoiceWorld'], (list(x)[0] for x in c['tasks'])) + self.assertEqual(['passiveChoiceWorld', 'ephysChoiceWorld', 'fooChoiceWorld'], [list(x)[0] for x in c['tasks']]) # Ensure a and b not modified self.assertNotEqual(set(c['procedures']), set(a['procedures'])) self.assertNotEqual(set(a['procedures']), set(b['procedures'])) + # Test duplicate tasks skipped while order kept constant + d = {'tasks': [a['tasks'][1], {'ephysChoiceWorld': {'collection': 'raw_task_data_02', 'sync_label': 'nidq'}}]} + e = session_params.merge_params(c, d, copy=True) + expected = ['passiveChoiceWorld', 'ephysChoiceWorld', 'fooChoiceWorld', 'ephysChoiceWorld'] + self.assertEqual(expected, [list(x)[0] for x in e['tasks']]) + self.assertDictEqual({'collection': 'raw_task_data_02', 'sync_label': 'nidq'}, e['tasks'][-1]['ephysChoiceWorld']) # Test without copy session_params.merge_params(a, b, copy=False) self.assertCountEqual(['Imaging', 'Behavior training/tasks', 'Injection'], a['procedures']) # Test assertion on duplicate sync b['sync'] = {'foodaq': {'collection': 'raw_sync_data'}} self.assertRaises(AssertionError, session_params.merge_params, a, b) + # Test how it handles the extractors key, which is an unhashable list + f = {'tasks': [{'fooChoiceWorld': {'collection': 'bar', 'sync_label': 'bpod', 'extractors': ['a', 'b']}}]} + g = session_params.merge_params(a, f, copy=True) + self.assertCountEqual(['devices', 'procedures', 'projects', 'sync', 'tasks', 'version'], g.keys()) + self.assertEqual(4, len(g['tasks'])) + self.assertDictEqual(f['tasks'][0], g['tasks'][-1]) def test_get_protocol_number(self): """Test ibllib.io.session_params.get_task_protocol_number function.""" diff --git a/ibllib/tests/test_mesoscope.py b/ibllib/tests/test_mesoscope.py index e30c3689c..45bd1cf14 100644 --- a/ibllib/tests/test_mesoscope.py +++ b/ibllib/tests/test_mesoscope.py @@ -102,30 +102,26 @@ def test_consolidate_exptQC(self): exptQC = [ {'frameQC_names': np.array(['ok', 'PMT off', 'galvos fault', 'high signal'], dtype=object), 'frameQC_frames': np.array([0, 0, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4])}, - {'frameQC_names': np.array(['ok', 'PMT off', 'galvos fault', 'high signal'], dtype=object), - 'frameQC_frames': np.zeros(50, dtype=int)} + {'frameQC_names': np.array(['ok', 'PMT off', 'foo', 'galvos fault', np.array([])], dtype=object), + 'frameQC_frames': np.array([0, 0, 1, 1, 2, 2, 2, 2, 3, 4])}, + {'frameQC_names': 'ok', # check with single str instead of array + 'frameQC_frames': np.array([0, 0])} ] # Check concatinates frame QC arrays - frameQC, frameQC_names, bad_frames = self.task._consolidate_exptQC(exptQC) - expected_frames = np.r_[exptQC[0]['frameQC_frames'], exptQC[1]['frameQC_frames']] - np.testing.assert_array_equal(expected_frames, frameQC) - expected = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + frame_qc, frame_qc_names, bad_frames = self.task._consolidate_exptQC(exptQC) + # Check frame_qc array + expected_frames = [ + 0, 0, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 5, 0, 0, 1, 1, 4, 4, 4, 4, 2, 5, 0, 0] + np.testing.assert_array_equal(expected_frames, frame_qc) + # Check bad_frames array + expected = [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25] np.testing.assert_array_equal(expected, bad_frames) - self.assertCountEqual(['qc_values', 'qc_labels'], frameQC_names.columns) - self.assertCountEqual(range(4), frameQC_names['qc_values']) - expected = ['ok', 'PMT off', 'galvos fault', 'high signal'] - self.assertCountEqual(expected, frameQC_names['qc_labels']) - - # Check with single str instead of array - exptQC[1]['frameQC_names'] = 'ok' - frameQC, frameQC_names, bad_frames = self.task._consolidate_exptQC(exptQC) - self.assertCountEqual(expected, frameQC_names['qc_labels']) - np.testing.assert_array_equal(expected_frames, frameQC) - # Check with inconsistent enumerations - exptQC[0]['frameQC_names'] = expected - exptQC[1]['frameQC_names'] = [*expected[-2:], *expected[:-2]] - self.assertRaises(IOError, self.task._consolidate_exptQC, exptQC) + # Check frame_qc_names data frame + self.assertCountEqual(['qc_values', 'qc_labels'], frame_qc_names.columns) + self.assertEqual(list(range(6)), frame_qc_names['qc_values'].tolist()) + expected = ['ok', 'PMT off', 'galvos fault', 'high signal', 'foo', 'unknown'] + self.assertCountEqual(expected, frame_qc_names['qc_labels'].tolist()) def test_setup_uncompressed(self): """Test set up behaviour when raw tifs present.""" diff --git a/ibllib/tests/test_oneibl.py b/ibllib/tests/test_oneibl.py index 913fcec9e..617625a49 100644 --- a/ibllib/tests/test_oneibl.py +++ b/ibllib/tests/test_oneibl.py @@ -22,6 +22,7 @@ from ibllib.oneibl import patcher, registration, data_handlers as handlers import ibllib.io.extractors.base +from ibllib.pipes.behavior_tasks import ChoiceWorldTrialsBpod from ibllib.tests import TEST_DB from ibllib.io import session_params @@ -388,6 +389,7 @@ def test_create_sessions(self): self.assertFalse(flag_file.exists()) def test_registration_session(self): + """Test IBLRegistrationClient.register_session method.""" settings_file = self._write_settings_file() rc = registration.IBLRegistrationClient(one=self.one) rc.register_session(str(self.session_path), procedures=['Ephys recording with acute probe(s)']) @@ -427,8 +429,52 @@ def test_registration_session(self): self.assertEqual(self.settings['SESSION_END_TIME'], ses_info['end_time']) self.one.alyx.rest('sessions', 'delete', id=eid) + def test_registration_session_passive(self): + """Test IBLRegistrationClient.register_session method when there is no iblrig bpod data. + + For truly passive sessions there is no Bpod data (no raw_behavior_data or raw_task_data folders). + In this situation the must already be a session on Alyx manually created by the experimenter, + which needs to contain the start time, location, lab, and user data. + """ + rc = registration.IBLRegistrationClient(one=self.one) + experiment_description = { + 'procedures': ['Ephys recording with acute probe(s)'], + 'sync': {'nidq': {'collection': 'raw_ephys_data'}}} + session_params.write_params(self.session_path, experiment_description) + # Should fail because the session doesn't exist on Alyx + self.assertRaises(AssertionError, rc.register_session, self.session_path) + # Create the session + ses_ = { + 'subject': self.subject, 'users': [self.one.alyx.user], + 'type': 'Experiment', 'number': int(self.session_path.name), + 'start_time': rc.ensure_ISO8601(self.session_path.parts[-2]), + 'n_correct_trials': 100, 'n_trials': 200 + } + session = self.one.alyx.rest('sessions', 'create', data=ses_) + # Should fail because the session lacks critical information + self.assertRaisesRegex( + AssertionError, 'missing session information: location', rc.register_session, self.session_path) + session = self.one.alyx.rest( + 'sessions', 'partial_update', id=session['url'][-36:], data={'location': self.settings['PYBPOD_BOARD']}) + # Should now register + ses, dsets = rc.register_session(self.session_path) + # Check that session was updated, namely the n trials and procedures + self.assertEqual(session['url'], ses['url']) + self.assertTrue(ses['n_correct_trials'] == ses['n_trials'] == 0) + self.assertEqual(experiment_description['procedures'], ses['procedures']) + self.assertEqual(5, len(dsets)) + registered = [d['file_records'][0]['relative_path'] for d in dsets] + expected = [ + f'{self.subject}/2018-04-01/002/_ibl_experiment.description.yaml', + f'{self.subject}/2018-04-01/002/alf/spikes.amps.npy', + f'{self.subject}/2018-04-01/002/alf/spikes.times.npy', + f'{self.subject}/2018-04-01/002/alf/#{self.revision}#/spikes.amps.npy', + f'{self.subject}/2018-04-01/002/alf/#{self.revision}#/spikes.times.npy' + ] + self.assertCountEqual(expected, registered) + def test_register_chained_session(self): - """Tests for registering a session with chained (multiple) protocols""" + """Tests for registering a session with chained (multiple) protocols.""" behaviour_paths = [self.session_path.joinpath(f'raw_task_data_{i:02}') for i in range(2)] for p in behaviour_paths: p.mkdir() @@ -459,6 +505,7 @@ def test_register_chained_session(self): rc = registration.IBLRegistrationClient(one=self.one) session, recs = rc.register_session(self.session_path) + self.assertEqual(7, len(recs)) ses_info = self.one.alyx.rest('sessions', 'read', id=session['id']) self.assertCountEqual(experiment_description['procedures'], ses_info['procedures']) self.assertCountEqual(experiment_description['projects'], ses_info['projects']) @@ -563,6 +610,24 @@ def test_server_upload_data(self, register_dataset_mock): self.assertEqual(4, len(out)) self.assertDictEqual(expected, handler.processed) + def test_getData(self): + """Test for DataHandler.getData method.""" + one = ONE(**TEST_DB, mode='auto') + session_path = Path('KS005/2019-04-01/001') + task = ChoiceWorldTrialsBpod(session_path, one=one, collection='raw_behavior_data') + task.get_signatures() + handler = handlers.ServerDataHandler(session_path, task.signature, one=one) + # Check getData returns data frame of signature inputs + df = handler.getData() + self.assertIsInstance(df, pd.DataFrame) + self.assertEqual(len(task.input_files), len(df)) + # Check with no ONE + handler.one = None + self.assertIsNone(handler.getData()) + # Check when no inputs + handler.signature['input_files'] = [] + self.assertTrue(handler.getData(one=one).empty) + def test_dataset_from_name(self): """Test dataset_from_name function.""" I = handlers.ExpectedDataset.input # noqa @@ -627,6 +692,51 @@ def test_update_collections(self): self.assertRaises(NotImplementedError, handlers.update_collections, dataset, None) +class TestSDSCDataHandler(unittest.TestCase): + """Test for SDSCDataHandler class.""" + + def setUp(self): + tmp = tempfile.TemporaryDirectory() + self.addCleanup(tmp.cleanup) + self.one = ONE(**TEST_DB, mode='auto') + self.patch_path = Path(tmp.name, 'patch') + self.root_path = Path(tmp.name, 'root') + self.root_path.mkdir(), self.patch_path.mkdir() + self.session_path = self.root_path.joinpath('KS005/2019-04-01/001') + + def test_handler(self): + """Test for SDSCDataHandler.setUp and cleanUp methods.""" + # Create a task in order to check how the signature files are symlinked by handler + task = ChoiceWorldTrialsBpod(self.session_path, one=self.one, collection='raw_behavior_data') + task.get_signatures() + handler = handlers.SDSCDataHandler(self.session_path, task.signature, self.one) + handler.patch_path = self.patch_path + handler.root_path = self.root_path + # Add some files on disk to check they are symlinked by setUp method + for uid, rel_path in handler.getData().rel_path.items(): + filepath = self.session_path.joinpath(rel_path) + filepath.parent.mkdir(exist_ok=True, parents=True) + filepath.with_stem(f'{filepath.stem}.{uid}').touch() + # Check setUp does the symlinks and updates the task session path + handler.setUp(task=task) + expected = self.patch_path.joinpath('ChoiceWorldTrialsBpod', *self.session_path.parts[-3:]) + self.assertEqual(expected, task.session_path, 'failed to update task session path') + linked = list(expected.glob('raw_behavior_data/*.*.*')) + self.assertTrue(all(f.is_symlink for f in linked), 'failed to sym link input files') + self.assertEqual(len(task.input_files), len(linked), 'unexpected number of linked patch files') + # Check all links to root session + session_path = self.session_path.resolve() # NB: GitHub CI uses linked temp dir so we resolve here + self.assertTrue(all(f.resolve().is_relative_to(session_path) for f in linked)) + # Check sym link doesn't contain UUID + self.assertTrue(len(linked[0].resolve().stem.split('.')[-1]) == 36, 'source path missing UUID') + self.assertFalse(len(linked[0].stem.split('.')[-1]) == 36, 'symlink contains UUID') + # Check cleanUp removes links + handler.cleanUp(task=task) + self.assertFalse(any(map(Path.exists, linked))) + # Check no root files were deleted + self.assertEqual(len(task.input_files), len(list(self.session_path.glob('raw_behavior_data/*.*.*')))) + + class TestExpectedDataset(unittest.TestCase): def setUp(self): tmp = tempfile.TemporaryDirectory() diff --git a/ibllib/tests/test_pipes.py b/ibllib/tests/test_pipes.py index 56ef51e68..9383d6dad 100644 --- a/ibllib/tests/test_pipes.py +++ b/ibllib/tests/test_pipes.py @@ -38,8 +38,8 @@ def test_task_queue(self, lab_repo_mock): lab_repo_mock.return_value = 'foo_repo' tasks = [ {'executable': 'ibllib.pipes.mesoscope_tasks.MesoscopePreprocess', 'priority': 80}, - {'executable': 'ibllib.pipes.ephys_tasks.SpikeSorting', 'priority': SpikeSorting.priority}, - {'executable': 'ibllib.pipes.base_tasks.RegisterRawDataTask', 'priority': RegisterRawDataTask.priority} + {'executable': 'ibllib.pipes.ephys_tasks.SpikeSorting', 'priority': SpikeSorting.priority}, # 60 + {'executable': 'ibllib.pipes.base_tasks.RegisterRawDataTask', 'priority': RegisterRawDataTask.priority} # 100 ] alyx = mock.Mock(spec=AlyxClient) alyx.rest.return_value = tasks @@ -49,10 +49,10 @@ def test_task_queue(self, lab_repo_mock): self.assertIn('foolab', alyx.rest.call_args.kwargs.get('django', '')) self.assertIn('foo_repo', alyx.rest.call_args.kwargs.get('django', '')) # Expect to return tasks in descending priority order, without mesoscope task (different env) - self.assertEqual([tasks[2], tasks[1]], queue) + self.assertEqual([tasks[2]], queue) # Expect only mesoscope task returned when relevant env passed - queue = local_server.task_queue(lab='foolab', alyx=alyx, env=('suite2p',)) - self.assertEqual([tasks[0]], queue) + queue = local_server.task_queue(lab='foolab', alyx=alyx, env=('suite2p', 'iblsorter')) + self.assertEqual([tasks[0], tasks[1]], queue) # Expect no tasks as mesoscope task is a large job queue = local_server.task_queue(mode='small', lab='foolab', alyx=alyx, env=('suite2p',)) self.assertEqual([], queue) diff --git a/ibllib/tests/test_tasks.py b/ibllib/tests/test_tasks.py index a76558944..31416b053 100644 --- a/ibllib/tests/test_tasks.py +++ b/ibllib/tests/test_tasks.py @@ -153,15 +153,9 @@ class TestPipelineAlyx(unittest.TestCase): def setUp(self) -> None: self.td = tempfile.TemporaryDirectory() - # ses = one.alyx.rest('sessions', 'list', subject=ses_dict['subject'], - # date_range=[ses_dict['start_time'][:10]] * 2, - # number=ses_dict['number'], - # no_cache=True) - # if len(ses): - # one.alyx.rest('sessions', 'delete', ses[0]['url'][-36:]) - # randomise number - ses_dict['number'] = np.random.randint(1, 30) - ses = one.alyx.rest('sessions', 'create', data=ses_dict) + self.ses_dict = ses_dict.copy() + self.ses_dict['number'] = np.random.randint(1, 999) + ses = one.alyx.rest('sessions', 'create', data=self.ses_dict) session_path = Path(self.td.name).joinpath( ses['subject'], ses['start_time'][:10], str(ses['number']).zfill(3)) session_path.joinpath('alf').mkdir(exist_ok=True, parents=True) diff --git a/release_notes.md b/release_notes.md index 18e010af7..e2eb6ce78 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,3 +1,31 @@ +## Release Note 3.1.0 + +### features +- Add narrative during registration of Bpod session + +## Release Note 3.0.0 + +### features +- Support for py3.8 and 3.9 dropped +- JobCreator Alyx task +- Photometry sync task +- Remove deprecated code, incl. iblatlas and brainbox/quality +- Bugfix: badframes array dtype change int8 -> uint32 +- Brain wide map release information +- Limited Numpy 2.0 and ONE 3.0 support + +## Release Note 2.40.0 + +### features +- iblsorter >= 1.9 sorting tasks with waveform extraction and channel sorting +- s3 patcher prototype + +#### 2.40.1 +- Bugfix: ibllib.io.sess_params.merge_params supports tasks extractors key + +#### 2.40.2 +- Bugfix: badframes array dtype change int8 -> uint32 + ## Release Note 2.39.0 ### features @@ -13,6 +41,10 @@ #### 2.39.1 - Bugfix: brainbox.metrics.single_unit.quick_unit_metrics fix for indexing of n_spike_below2 +#### 2.39.2 +- Bugfix: routing of protocol to extractor through the project repository checks that the +target is indeed an extractor class. + ## Release Note 2.38.0 ### features @@ -71,7 +103,7 @@ - oneibl.register_datasets accounts for non existing sessions when checking protected dsets #### 2.34.1 -- Ensure mesoscope frame QC files are sorted before concatenating +- Ensure mesoscope frame QC files are sorted before concatenating - Look for SESSION_TEMPLATE_ID key of task settings for extraction of pre-generated choice world sequences - Download required ap.meta files when building pipeline for task_qc command @@ -135,7 +167,7 @@ - Added ibllib.pipes.dynamic_pipeline.get_trials_tasks function ### bugfixes -- Fix ibllib.io.extractors.ephys_fpga.extract_all for python 3.8 +- Fix ibllib.io.extractors.ephys_fpga.extract_all for python 3.8 ### other - Change behavior qc to pass if number of trials > 400 (from start) can be found for which easy trial performance > 0.9 @@ -188,7 +220,7 @@ ### features - Training status pipeline now compatible with dynamic pipeline - Dynamic DLC task using description file -- Full photometry lookup table +- Full photometry lookup table ### bugfixes - fix for untrainable, unbiasable don't repopulate if already exists @@ -203,7 +235,7 @@ - split swanson areas ### bugfixes - trainig plots -- fix datahandler on SDSC for ONEv2 +- fix datahandler on SDSC for ONEv2 ### Release Notes 2.23.0 2023-05-19 - quiescence period extraction @@ -217,7 +249,7 @@ ### Release Notes 2.22.2 2023-05-03 ### bugfixes - training plots -- +- ### features - can change download path for atlas ### Release Notes 2.22.1 2023-05-02 @@ -321,7 +353,7 @@ ### Release Notes 2.17.0 2022-10-04 - units quality metrics use latest algorithms for refractory period violations and noise cut-off - + ## Release Notes 2.16 ### Release Notes 2.16.1 2022-09-28 ### bugfixes @@ -340,7 +372,7 @@ - SessionLoader error handling and bug fix ### Release Notes 2.15.2 - 2022-09-22 -- extraction pipeline: fix unpacking of empty arguments field from alyx dict that prevents running task +- extraction pipeline: fix unpacking of empty arguments field from alyx dict that prevents running task ### Release Notes 2.15.1 - 2022-09-21 - atlas: gene-expression backend and MRI Toronto atlas stretch and squeeze factors (Dan/Olivier) @@ -354,7 +386,7 @@ - new modalities: - photometry extraction (Mainen lab) - widefield extraction (Churchland lab) - + #### bugfixes - Spike sorting task: parse new pykilosort log format - Session loader @@ -429,7 +461,7 @@ ### Release Notes 2.10.6 2022-03-15 - Allow parent tasks to be 'Incomplete' to run task on local server -- Change one base_rul for dlc_qc_plot on cortexlab +- Change one base_rul for dlc_qc_plot on cortexlab ### Release Notes 2.10.5 2022-03-11 - Fix moot release accident @@ -470,7 +502,7 @@ ### Release Notes 2.9.0 2022-01-24 - Adding EphysDLC task in ephys_preprocessing pipeline -- NOTE: requires DLC environment to be set up on local servers! +- NOTE: requires DLC environment to be set up on local servers! - Fixes to EphysPostDLC dlc_qc_plot ## Release Notes 2.8 diff --git a/requirements.txt b/requirements.txt index 3131d8bbc..5f2fc9c35 100644 --- a/requirements.txt +++ b/requirements.txt @@ -23,12 +23,13 @@ seaborn>=0.9.0 tqdm>=4.32.1 # ibl libraries iblatlas>=0.5.3 -ibl-neuropixel>=1.0.1 +ibl-neuropixel>=1.5.0 iblutil>=1.13.0 iblqt>=0.2.0 mtscomp>=1.0.1 -ONE-api~=2.9.rc0 +ONE-api>=2.11 phylib>=2.6.0 psychofit slidingRP>=1.1.1 # steinmetz lab refractory period metrics pyqt5 +ibl-style diff --git a/setup.py b/setup.py index bd8272b20..f5df91e66 100644 --- a/setup.py +++ b/setup.py @@ -6,7 +6,7 @@ CURRENT_DIRECTORY = Path(__file__).parent.absolute() CURRENT_PYTHON = sys.version_info[:2] -REQUIRED_PYTHON = (3, 8) +REQUIRED_PYTHON = (3, 10) VER_ERR_MSG = """ ========================== Unsupported Python version