Я пытаюсь получить все изображения Brainspan ISH для всех наборов данных разделов, принадлежащих пренатальным возрастам (3 донора) и только из 3 структур: зрительной коры, префронтальной коры и «мозга» сильный>.
т. е. эксперименты, перечисленные в этом поиске:
Я следовал инструкциям здесь:
brainspan_datasets = image_api.get_section_data_sets_by_product([22])
brainspan_datasets_df = pd.DataFrame(brainspan_datasets)
section_dataset_ids = [ds['id'] for ds in brainspan_datasets
# Iterate through `section_dataset_ids` to get list of `section_image_ids` and download the images.
# disable logger
logging.getLogger('allensdk.api.api.retrieve_file_over_http').disabled = True
downsample = 2
format_str = '.jpg'
for section_dataset_id in section_dataset_ids:
dir_name = str(section_dataset_id) + '_section_images'
# Get list of image ids from field `id` in each element of `section_images`.
section_images = image_api.section_image_query(section_dataset_id)
section_image_ids = [si['id'] for si in section_images]
print(len(section_image_ids))
# Download
for section_image_id in section_image_ids:
file_name = str(section_image_id) + format_str
file_path = os.path.join(dir_name, file_name)
Manifest.safe_make_parent_dirs(file_path)
image_api.download_section_image(section_image_id, file_path=file_path, downsample=downsample)
# re-enable the logger
logging.getLogger('allensdk.api.api.retrieve_file_over_http').disabled = False
и успешно создали каталог для каждого SectionDataSet с соответствующими изображениями.
Тем не менее, мне пришлось вручную фильтровать sample_id, из которого можно загружать изображения, чтобы ограничить их пренатальными.
section_dataset_ids = [ds['id'] for ds in brainspan_datasets\
if ds['specimen_id']==708383 or ds['specimen_id']==708307 or ds['specimen_id']==708787]
Мне не удалось выяснить, как получить соответствующие метаданные для образца/донора, связанного с каждым экспериментом.
т. е. для эксперимента 100135095 я знаю, что донором является 21pcw F из таблицы результатов через браузер, но это не возвращается в моем запросе API.
Я хотел бы иметь возможность добавить ген/зонд и возраст/пол донора в имя каталога, которое в настоящее время имеет только идентификатор эксперимента.
На Stackoverflow (1) есть аналогичный вопрос, который почти позволяет мне решить эту проблему, за исключением того, что я не знаю, как также запросить возраст и пол донора.
section_datasets = pd.DataFrame(api.model_query('SectionDataSet',
criteria='[id$eq%d]' % brainspan_dataset_id,
include='section_images,treatments,probes(gene),
specimen(structure),
specimen(donor)'
Это еще одна подсказка, которую мне удалось найти, но я не знаю, как преобразовать этот обычный запрос GET в api.model_query, как указано выше.
section_datasets = requests.get("http://api.brain-map.org/api/v2/data/query?criteria=model::SectionDataSet,
rma::criteria,[failed$eqfalse],products[id$eq22],treatments[name$eq'ISH'],
rma::include,probes(gene),specimen(donor(age)),section_images")
Спасибо за вашу помощь! ????
(1) Получить больше метаданных из исследования Neurotransmitter с использованием Allen SDK
Кросспостинг здесь: