brainglobe-atlasapi

May 21, 2026 · View on GitHub

Python Version PyPI Anaconda version Wheel Development Status Downloads Tests codecov Code style: Ruff Imports: isort pre-commit DOI License Contributions Website image.sc forum Bluesky Mastodon

The BrainGlobe Atlas API (brainglobe-atlasapi) provides a common interface for programmers to download and process brain atlas data from multiple sources.

Atlases available

A number of atlases are in development; those available currently are shown in the table below. The table is synced from the BrainGlobe documentation repository—to update it locally after changes there, run python tools/update_atlas_table.py.

Atlas NameResolutionAgesReference ImagesName in API & More Info
Allen Mouse Brain Atlas10, 25, 50, and 100 micronP56STPTMore info
Allen Human Brain Atlas500 micronAdultMRIMore info
Max Planck Zebrafish Brain Atlas1 micron6 dpfFISHMore info
Enhanced and Unified Mouse Brain Atlas10, 25, 50, and 100 micronP56STPTMore info
Enhanced and Unified Mouse Brain Atlas v220 micronP56STPTMore info
Smoothed version of the Kim et al. Mouse Reference Atlas10, 25, 50 and 100 micronP56STPTMore info
Gubra's LSFM Mouse Brain Atlas20 micron8 to 10 weeks post natalLSFMMore info
3D version of the Allen Mouse Spinal Cord Atlas20 x 10 x 10 micronAdultNisslMore info
AZBA: A 3D Adult Zebrafish Brain Atlas4 micron15-16 weeks post natalLSFMMore info
Waxholm Space Atlas of the Sprague Dawley Rat Brain39 micronP80MRIMore info
SWC Female Rat Brain Atlas50 micron5–8 weeks old femalesSTPTMore info
Waxholm-aligned SWC Female Rat Atlas39 micron5–8 weeks old females (registered to Waxholm Space)STPTMore info
3D Edge-Aware Refined Atlases Derived from the Allen Developing Mouse Brain Atlases16, 16.75, and 25 micronE13, E15, E18, P4, P14, P28 & P56NisslMore info
Princeton Mouse Brain Atlas20 micron>P56 (older animals included)LSFMMore info
Kim Lab Developmental CCF v1.020, 31.5, 34, 37.5, 40, and 50 micronE11.5, E13.5, E15.5, E18.5, P04, P14, P56LSFM and MRI (adc, dwi, fa, T2)More info
Kim Lab Developmental CCF v00110 micronP56STPT, LSFM (iDISCO) and MRI (a0, adc, dwo, fa, MTR, T2)More info
Blind Mexican Cavefish Brain Atlas2 micron6 dpfIHCMore info
BlueBrain Barrel Cortex Atlas10 and 25 micronP56STPTMore info
UNAM Axolotl Brain Atlas40 micron~ 3 months post hatchingMRIMore info
Prairie Vole Brain Atlas25 micronUnknownLSFMMore info
Gubra's Stereotaxic MRI Mouse Brain Atlas25 micron10 week oldMRIMore info
Gubra's LSFM Mouse Brain Atlas v225 micron10 week oldLSFMMore info
MRI Mouse Lemur Brain Atlas91 micron15–58 monthsMRIMore info
Australian Mouse Brain Atlas15 micron12 week oldMRIMore info
Cat Brain Atlas500 micronAdultMRIMore info
Eurasian Blackcap Atlas25 micronAdultSTPTMore info
BlueBrain CCFv3 Augmented10 and 25 micronP56NisslMore info
Columbia Cuttlefish Atlas50 micron6-7 monthsMRIMore info
Kocher Bumblebee Brain Atlas2.542 x 1.2407 x 1.2407 micronAdult WorkerConfocalMore info
Drosophila Wing Disc instar3 Atlas2 micron3rd Instar LarvaeConfocalMore info
DeMBA Developmental Mouse Brain Atlas10, 20, and 25 micronevery day from P04 to P56MRI, STPT, LSFMMore info
Dorr MRI Mouse Atlas32 micron12 week oldMRIMore info
CArea Mouse Atlas25 micronP56NisslMore info
Allen CCFv2 Mouse Brain Atlas25 micronP56NisslMore info
Allen CCFv2 Mouse Fiber Tracts Atlas25 micronP56NisslMore info
Allen CCFv2 Developmental Mouse Brain Atlas25 micronP56NisslMore info

Acronyms:

  • dpf: Days Post Fertilisation
  • E: Embryonic day
  • FISH: Fluorescent In Situ Hybridisation
  • IHC: Immunohistochemistry
  • LSFM: Light Sheet Fluorescent Microscopy
  • MRI: Magnetic Resonance Imaging
  • P: Post natal day
  • STPT: Serial Two Photon Tomography

Installation

brainglobe-atlasapi can be installed from PyPI with:

pip install brainglobe-atlasapi

Usage

Full information can be found in the documentation

Python API

List of atlases

To see a list of atlases use brainglobe_atlasapi.show_atlases

from brainglobe_atlasapi import show_atlases
show_atlases()
#                                Brainglobe Atlases
# ╭──────────────────────────────────┬────────────┬───────────────┬──────────────╮
# │ Name                             │ Downloaded │ Local version │    Latest    │
# │                                  │            │               │   version    │
# ├──────────────────────────────────┼────────────┼───────────────┼──────────────┤
# │ allen_human_500um                │     ✔      │      0.1      │     0.1      │
# │ mpin_zfish_1um                   │     ✔      │      0.3      │     0.3      │
# │ allen_mouse_50um                 │     ✔      │      0.3      │     0.3      │
# │ kim_unified_25um                 │     ✔      │      0.1      │     0.1      │
# │ allen_mouse_25um                 │     ✔      │      0.3      │     0.3      │
# │ allen_mouse_10um                 │     ✔      │      0.3      │     0.3      │
# │ example_mouse_100um              │    ---     │      ---      │     0.3      │
# ╰──────────────────────────────────┴────────────┴───────────────┴──────────────╯

Using the atlases

All the features of each atlas can be accessed via the BrainGlobeAtlas class.

e.g. for the 25um Allen Mouse Brain Atlas:

from brainglobe_atlasapi.bg_atlas import BrainGlobeAtlas
atlas = BrainGlobeAtlas("allen_mouse_25um")

The various files associated with the atlas can then be accessed as attributes of the class:

# reference image
reference_image = atlas.reference
print(reference_image.shape)
# (528, 320, 456)

# annotation image
annotation_image = atlas.annotation
print(annotation_image.shape)
# (528, 320, 456)

# a hemispheres image (value 1 in left hemisphere, 2 in right) can be generated
hemispheres_image = atlas.hemispheres
print(hemispheres_image.shape)
# (528, 320, 456)

Brain regions

There are multiple ways to work with individual brain regions. To see a dataframe of each brain region, with it's unique ID, acronym and full name, use atlas.lookup_df:

atlas.lookup_df.head(8)
#      acronym         id                           name
# 0       root        997                           root
# 1       grey          8  Basic cell groups and regions
# 2         CH        567                       Cerebrum
# 3        CTX        688                Cerebral cortex
# 4      CTXpl        695                 Cortical plate
# 5  Isocortex        315                      Isocortex
# 6        FRP        184  Frontal pole, cerebral cortex
# 7       FRP1         68          Frontal pole, layer 1

Each brain region can also be access by the acronym, e.g. for primary visual cortex (VISp):

from pprint import pprint
VISp = atlas.structures["VISp"]
pprint(VISp)
# {'acronym': 'VISp',
#  'id': 385,
#  'mesh': None,
#  'mesh_filename': PosixPath('/home/user/.brainglobe/allen_mouse_25um_v0.3/meshes/385.obj'),
#  'name': 'Primary visual area',
#  'rgb_triplet': [8, 133, 140],
#  'structure_id_path': [997, 8, 567, 688, 695, 315, 669, 385]}

Note on coordinates in brainglobe-atlasapi

Working with both image coordinates and cartesian coordinates in the same space can be confusing! In brainglobe-atlasapi, the origin is always assumed to be in the upper left corner of the image (sectioning along the first dimension), the "ij" convention. This means that when plotting meshes and points using cartesian systems, you might encounter confusing behaviors coming from the fact that in cartesian plots one axis is inverted with respect to ij coordinates (vertical axis increases going up, image row indexes increase going down). To make things as consistent as possible, in brainglobe-atlasapi the 0 of the meshes coordinates is assumed to coincide with the 0 index of the images stack, and meshes coordinates increase following the direction stack indexes increase. To deal with transformations between your data space and brainglobe-atlasapi, you might find the brainglobe-space package helpful.

Seeking help or contributing

We are always happy to help users of our tools, and welcome any contributions. If you would like to get in contact with us for any reason, please see the contact page of our website. To contribute to brainglobe-atlasapi, please see the BrainGlobe developer's guide.

Citation

If you find the BrainGlobe Atlas API useful, please cite the paper in your work:

Claudi, F., Petrucco, L., Tyson, A. L., Branco, T., Margrie, T. W. and Portugues, R. (2020). BrainGlobe Atlas API: a common interface for neuroanatomical atlases. Journal of Open Source Software, 5(54), 2668, https://doi.org/10.21105/joss.02668

Don't forget to cite the developers of the atlas that you used!


Atlas Generation and Adding a New Atlas

For full instructions to add a new BrainGlobe atlas, please see here.

The brainglobe_atlasapi.atlas_generation submodule contains code for the generation of cleaned-up data, for the main brainglobe_atlasapi module. This code was previously the bg-atlasgen module.

To contribute

  1. Fork this repo
  2. Clone your repo
  3. Run git clone https://github.com/brainglobe/brainglobe-atlasapi
  4. Install an editable version of the package; by running pip install -e . within the cloned directory
  5. Create a script to package your atlas, and place into brainglobe_atlasapi/atlas_generation/atlas_scripts. Please see other scripts for examples.

Your script should contain everything required to run. The raw data should be hosted on a publicly accessible repository so that anyone can run the script to recreate the atlas.

If you need to add any dependencies, please add them as an extra in the pyproject.toml file, e.g.:

[project.optional-dependencies]
allenmouse = ["allensdk"]
newatlas = ["dependency_1", "dependency_2"]