Я хочу очистить таблицу «Взаимодействия» на странице Entrez Gene.Возвращаемые значения из словаря словаря Python Entrez словарей
Таблица взаимодействий заполняется с веб-сервера, и когда я пытался использовать пакет XML в R, я мог бы получить страницу гена Entrez, но тело таблицы взаимодействия было пустым (оно не было заполнено веб-сервером).
Работа с проблемой веб-сервера в R может быть разрешимой (и я бы с удовольствием посмотрел, как это сделать), но, казалось, Biopython был более простым путем.
я соединял следующее, что дает мне то, что я хочу для примера гена:
# Pull the Entrez gene page for MAP1B using Biopython
from Bio import Entrez
Entrez.email = "[email protected]"
handle = Entrez.efetch(db="gene", id="4131", retmode="xml")
record = Entrez.read(handle)
handle.close()
PPI_Entrez = []
PPI_Sym = []
# Find the Dictionary that contains the Interaction table
for x in range(1, len(record[0]["Entrezgene_comments"])):
if ('Gene-commentary_heading', 'Interactions') in record[0]["Entrezgene_comments"][x].items():
for y in range(0, len(record[0]["Entrezgene_comments"][x]['Gene-commentary_comment'])):
EntrezID = record[0]["Entrezgene_comments"][x]['Gene-commentary_comment'][y]['Gene-commentary_comment'][1]['Gene-commentary_source'][0]['Other-source_src']['Dbtag']['Dbtag_tag']['Object-id']['Object-id_id']
PPI_Entrez.append(EntrezID)
Sym = record[0]["Entrezgene_comments"][x]['Gene-commentary_comment'][y]['Gene-commentary_comment'][1]['Gene-commentary_source'][0]['Other-source_anchor']
PPI_Sym.append(Sym)
# Return the desired values: I want the Entrez ID and Gene symbol for each interacting protein
PPI_Entrez # Returns the EntrezID
PPI_Sym # Returns the gene symbol
Этот код работает, давая мне, что я хочу. Но я думаю, что это уродливо, и я обеспокоен тем, что если страница гена Entrez слегка изменится в формате, он сломает код. В частности, должно быть лучше, чтобы извлечь нужную информацию, чем указав полный путь, как я с:
record[0]["Entrezgene_comments"][x]['Gene-commentary_comment'][y]['Gene-commentary_comment'][1]['Gene-commentary_source'][0]['Other-source_anchor']
Но я не могу понять, как поиск по словарю словарей без указания каждого уровня I хочу спуститься. Когда я пытаюсь выполнять функции типа find(), они работают на следующем уровне вниз, но не полностью донизу.
Есть ли символ подстановки, эквивалент Python «//» или функция, которую я могу использовать для доступа к ['Object-id_id'], без указания полного пути? Также приветствуются другие предложения для более чистого кода.
Thank you Chris S! Я планировал написать сценарий в Python, затем сделать системный вызов от R. Но это намного проще (для меня, по крайней мере). Я не знал Entrez Direct, но он прекрасно решает проблему веб-сервера и позволяет мне вернуться к анализу с помощью Node вместо того, чтобы пытаться развернуть словари Python. – jamayfie
Я рассмотрел BioGrid, HERD и т. Д., Прежде чем начать этот проект, но мне нравится, что NCBI сопоставляет IntAct и BioGrid в одну таблицу, и я хотел бы начать там, если это возможно. – jamayfie
Я могу получить только EntrezID для взаимодействующих белков, указав: sapply (x, function (x) paste (xpathSApply (x, ".//Gene-commentary_comment//..//Dbtag_db[.='GeneID']// ..//Object-id_id ", xmlValue), collapse =" ")) – jamayfie