科 / 研 / 图 / 像 / 处 / 理
Allen Mouse Brain Common Coordinate Framework (CCFv3),是一个 3D 鼠脑参考图谱,旨在提供标准化的鼠脑结构数据 。
该框架使用 1675 只成年 C57BL/6J 小鼠的数据构建,平均模板脑的分辨率为 10 μm。
CCFv3 包含详细的脑结构划分,包括 43 个大脑皮层区域、329 个皮层下结构、81 条纤维束和 8 个脑室结构。
该图谱可用于分析、可视化和整合多模态和多尺度数据集。
这篇文章会介绍怎样下载小鼠的模板脑,以及利用 Allen Institute 提供的 AllenSDK 的 API 来对不同脑区进行索引。
一、模板脑下载
(1)官方数据库下载
模板脑可以在官方的数据库中下载 nrrd 格式:
https://download.alleninstitute.org/informatics-archive/current-release/mouse_ccf/average_template/
单击选择对应不同分辨率的模板脑即可,最高分辨率是 10 μm,即 average_template_10.nrrd。
(2)Scalable Brain Atlas下载
另外可以在下面这个网站进行下载:
https://scalablebrainatlas.incf.org/mouse/ABA_v3
但这里下载的模板脑只有 25 μm 分辨率:
下载得到的脑图谱可以利用 Fiji 打开进行可视化:
二、安装 AllenSDK
Allen 软件开发工具包 (Allen SDK),包含用于读取和处理 Allen Brain Atlas 数据的源代码。
通过 Allen SDK 可以访问细胞类型数据库和小鼠大脑连接图谱等资源。
首先你需要在电脑上安装 Anaconda,生成一个新的环境,方便不同 Python 包的版本管理:
conda create --name allensdk
激活该环境:
conda activate allensdk
安装一些可能需要用到的包:
pip install scikit-image
pip install ipykernel
pip install SimpleITK
python -m ipykernel install --user --name=allensdk
三、实例代码
这里演示怎样导入模板脑以及带有标注的脑,以及怎样获取特定脑区的 Mask。
from allensdk.core.mouse_connectivity_cache import MouseConnectivityCache
from pathlib import Path
import matplotlib.pyplot as plt
# Your current working directory.
output_dir = '.'
# The manifest file is a simple JSON file that keeps track of all of
# the data that has already been downloaded onto the hard drives.
mcc = MouseConnectivityCache(manifest_file=Path(output_dir) / 'manifest.json')
# load template and annotation
template, template_info = mcc.get_template_volume()
annot, annot_info = mcc.get_annotation_volume()
# get binary masks for individual structures
# in this case, we'll get one for the Hippocampus CA1
CA1_mask, cm_info = mcc.get_structure_mask(382)
# pick a slice to show
slice_idx = 280
f, ccf_axes = plt.subplots(1, 3, figsize=(15, 6))
ccf_axes[0].imshow(template[slice_idx,:,:], cmap='gray', aspect='equal', vmin=template.min(), vmax=template.max())
ccf_axes[0].set_title("registration template")
ccf_axes[1].imshow(annot[slice_idx,:,:], cmap='gray', aspect='equal', vmin=0, vmax=2000)
ccf_axes[1].set_title("annotation volume")
ccf_axes[2].imshow(CA1_mask[slice_idx,:,:], cmap='gray', aspect='equal', vmin=0, vmax=1)
ccf_axes[2].set_title("isocortex mask")
plt.show()
最终 Plot 的结果:
四、关键代码分析
(1)创建 MouseConnectivityCache 类
mcc = MouseConnectivityCache(manifest_file=Path(output_dir) / 'manifest.json')
创建一个 MouseConnectivityCache 类,用于存储和访问与成年小鼠相关的数据。
默认情况下,此类将缓存任何下载的元数据或文件,这些文件位于当前的工作目录。
如果不想自动保存,可以改为:
mcc = MouseConnectivityCache()
(2)导入模板脑以及带有标注的脑,并获取特定脑区的 Mask
# load template and annotation
template, template_info = mcc.get_template_volume()
annot, annot_info = mcc.get_annotation_volume()
# get binary masks for individual structures
# in this case, we'll get one for the Hippocampus CA1
CA1_mask, cm_info = mcc.get_structure_mask(382)
小鼠的脑区在 CCFv3 中都有一个特定的编号,这个编号可以下载 Cell 文章 Supplementary 的表格获取:
https://www.cell.com/cms/10.1016/j.cell.2020.04.007/attachment/b2810a75-7d72-48a8-9c04-1a91c2cc1396/mmc1.xlsx
这里以海马的 CA1 为例,表格中查询到该脑区的 Structure ID 是 382:
如果要下载这个Mask:
from skimage import io
io.imsave('CA1_mask.tif',CA1_mask)
往期回顾