使用Allen SDK从神经递质研究中获取更多元数据

时间:2019-02-24 15:37:54

标签: allen-sdk

我正在使用以下脚本从艾伦脑图集的神经递质研究中下载所有图像:


from allensdk.api.queries.image_download_api import ImageDownloadApi
from allensdk.config.manifest import Manifest
import pandas as pd
import os


#getting transmitter study
#product id from http://api.brain-map.org/api/v2/data/query.json?criteria=model::Product

nt_datasets = image_api.get_section_data_sets_by_product([27])

#an instance of Image Api for downloading
image_api = ImageDownloadApi()


for index, row in df_nt.iterrows(): 
    #get section dataset id
    section_dataset_id= row['id']

    #each section dataset id has multiple image sections    
    section_images = pd.DataFrame( 
        image_api.section_image_query(
        section_data_set_id=section_dataset_id)
    )

    for section_image_id in section_images['id'].tolist():
        file_path = os.path.join('/path/to/save/dir/', 
                                 str(section_image_id) + '.jpg' )
        Manifest.safe_make_parent_dirs(file_path)
        image_api.download_section_image(section_image_id, 
                                         file_path=file_path,
                                         downsample=downsample)

该脚本可能会下载所有可用的ISH实验。但是,我想知道什么是获取更多元数据的最佳方法,如下所示:

1) ISH实验的类型,称为“基因”(例如,图像是MBP染色,尼氏染色还是其他)。在下面的红色圆圈中显示。

image1

2)与地图集图像的结构和对应性(例如,注释以查看某节属于大脑的哪个部分)。我认为可以通过tree_search来获取,但不确定如何获取。以下是艾伦网站上两个不同网页上的红色圆圈所示。

image2

3)图片的比例,例如下载的图片中一个像素的大小(例如0.001x0.001毫米)。例如,我将需要此来进行有关MRI的图像分析。在下面的红色圆圈中显示。

image3

以上所有信息都可以在网站上找到,我的问题是您是否可以通过 SDK 通过编程方式来帮助我。

编辑:

以编程方式下载“ Nissl”污点也非常好,因为它们没有使用上述循环迭代显示。图片如下所示。

enter image description here

1 个答案:

答案 0 :(得分:1)

要访问此信息,您需要制定一个稍微复杂的API查询。

from allensdk.api.queries.rma_api import RmaApi

api = RmaApi()

data_set_id = 146586401

data = api.model_query('SectionDataSet', 
                       criteria='[id$eq%d]' % data_set_id, 
                       include='section_images,treatments,probes(gene),specimen(structure)')

print("gene symbol: %s" % data[0]['probes'][0]['gene']['acronym'])
print("treatment name: %s" % data[0]['treatments'][0]['name'])
print("specimen location: %s" % data[0]['specimen']['structure']['name'])
print("section xy resolution: %f um" % data[0]['section_images'][0]['resolution'])
gene symbol: MBP
treatment name: ISH
specimen location: Cingulate Cortex
section xy resolution: 1.008000 um

在不深入研究API数据模型的情况下,SectionDataSets具有组成SectionImagesTreatmentsProbes和源SpecimensProbes目标GenesSpecimens可以与Structure关联。该查询将单个SectionDataSet的所有信息下载到嵌套字典中。

我不记得如何找到标本块范围。如果找到答案,我将对其进行更新。