Python | 小鼠标准脑图谱(CCFv3)下载和使用

文摘   科学   2024-07-15 09:16   上海  

科 / 研 / 图 / 像 / 处 / 理



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-imagepip install ipykernelpip install SimpleITKpython -m ipykernel install --user --name=allensdk










三、实例代码


这里演示怎样导入模板脑以及带有标注的脑,以及怎样获取特定脑区的 Mask。


from allensdk.core.mouse_connectivity_cache import MouseConnectivityCachefrom pathlib import Pathimport 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 annotationtemplate, 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 CA1CA1_mask, cm_info = mcc.get_structure_mask(382)
# pick a slice to showslice_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 annotationtemplate, 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 CA1CA1_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 ioio.imsave('CA1_mask.tif',CA1_mask)




创作不易,点个关注再走吧
如果有任何问题,欢迎在文章下方留言
 

作者 | Treasure琛
排版 | 小乐喵喵   

往期回顾

◆ ImageJ | 荧光共标细胞计数

◆ ImageJ | 图像标注

◆ ImageJ | 图像去卷积

◆ ImageJ | 自动图片拼接

◆ ImageJ | 3D可视化及测量

◆ ImageJ | 图像自动配准

◆ ImageJ | 重新认识你的图像

◆ ImageJ | 荧光比率图




科研图像处理
科研图像处理一站式解决方案,原知乎《ImageJ实用教程》
 最新文章