Biopython - Entrez Datenbank
Entrezist ein Online-Suchsystem von NCBI. Es bietet Zugriff auf nahezu alle bekannten molekularbiologischen Datenbanken mit einer integrierten globalen Abfrage, die Boolesche Operatoren und die Feldsuche unterstützt. Es gibt Ergebnisse aus allen Datenbanken mit Informationen wie der Anzahl der Treffer aus jeder Datenbank, Datensätzen mit Links zur Ursprungsdatenbank usw. zurück.
Einige der beliebtesten Datenbanken, auf die über Entrez zugegriffen werden kann, sind unten aufgeführt -
- Pubmed
- Pubmed Central
- Nucleotid (GenBank-Sequenzdatenbank)
- Protein (Sequenzdatenbank)
- Genom (gesamte Genomdatenbank)
- Struktur (dreidimensionale makromolekulare Struktur)
- Taxonomie (Organismen in der GenBank)
- SNP (Single Nucleotide Polymorphism)
- UniGene (genorientierte Cluster von Transkriptsequenzen)
- CDD (Conserved Protein Domain Database)
- 3D-Domänen (Domänen aus Entrez Structure)
Zusätzlich zu den oben genannten Datenbanken bietet Entrez viele weitere Datenbanken für die Feldsuche.
Biopython bietet ein Entrez-spezifisches Modul, Bio.Entrez, für den Zugriff auf die Entrez-Datenbank. In diesem Kapitel erfahren Sie, wie Sie mit Biopython auf Entrez zugreifen können.
Schritte zur Datenbankverbindung
Importieren Sie das folgende Modul, um die Funktionen von Entrez hinzuzufügen:
>>> from Bio import Entrez
Stellen Sie als Nächstes Ihre E-Mail-Adresse ein, um festzustellen, wer mit dem unten angegebenen Code verbunden ist.
>>> Entrez.email = '<youremail>'
Stellen Sie dann den Entrez-Werkzeugparameter ein und standardmäßig ist es Biopython.
>>> Entrez.tool = 'Demoscript'
Jetzt, call einfo function to find index term counts, last update, and available links for each database wie unten definiert -
>>> info = Entrez.einfo()
Die einfo-Methode gibt ein Objekt zurück, das über die unten gezeigte Lesemethode Zugriff auf die Informationen bietet.
>>> data = info.read()
>>> print(data)
<?xml version = "1.0" encoding = "UTF-8" ?>
<!DOCTYPE eInfoResult PUBLIC "-//NLM//DTD einfo 20130322//EN"
"https://eutils.ncbi.nlm.nih.gov/eutils/dtd/20130322/einfo.dtd">
<eInfoResult>
<DbList>
<DbName>pubmed</DbName>
<DbName>protein</DbName>
<DbName>nuccore</DbName>
<DbName>ipg</DbName>
<DbName>nucleotide</DbName>
<DbName>nucgss</DbName>
<DbName>nucest</DbName>
<DbName>structure</DbName>
<DbName>sparcle</DbName>
<DbName>genome</DbName>
<DbName>annotinfo</DbName>
<DbName>assembly</DbName>
<DbName>bioproject</DbName>
<DbName>biosample</DbName>
<DbName>blastdbinfo</DbName>
<DbName>books</DbName>
<DbName>cdd</DbName>
<DbName>clinvar</DbName>
<DbName>clone</DbName>
<DbName>gap</DbName>
<DbName>gapplus</DbName>
<DbName>grasp</DbName>
<DbName>dbvar</DbName>
<DbName>gene</DbName>
<DbName>gds</DbName>
<DbName>geoprofiles</DbName>
<DbName>homologene</DbName>
<DbName>medgen</DbName>
<DbName>mesh</DbName>
<DbName>ncbisearch</DbName>
<DbName>nlmcatalog</DbName>
<DbName>omim</DbName>
<DbName>orgtrack</DbName>
<DbName>pmc</DbName>
<DbName>popset</DbName>
<DbName>probe</DbName>
<DbName>proteinclusters</DbName>
<DbName>pcassay</DbName>
<DbName>biosystems</DbName>
<DbName>pccompound</DbName>
<DbName>pcsubstance</DbName>
<DbName>pubmedhealth</DbName>
<DbName>seqannot</DbName>
<DbName>snp</DbName>
<DbName>sra</DbName>
<DbName>taxonomy</DbName>
<DbName>biocollections</DbName>
<DbName>unigene</DbName>
<DbName>gencoll</DbName>
<DbName>gtr</DbName>
</DbList>
</eInfoResult>
Die Daten sind im XML-Format und verwenden Sie, um die Daten als Python-Objekt abzurufen Entrez.read Methode sobald Entrez.einfo() Methode wird aufgerufen -
>>> info = Entrez.einfo()
>>> record = Entrez.read(info)
Hier ist record ein Wörterbuch mit einem Schlüssel, DbList, wie unten gezeigt -
>>> record.keys()
[u'DbList']
Durch den Zugriff auf den DbList-Schlüssel wird die unten gezeigte Liste der Datenbanknamen zurückgegeben.
>>> record[u'DbList']
['pubmed', 'protein', 'nuccore', 'ipg', 'nucleotide', 'nucgss',
'nucest', 'structure', 'sparcle', 'genome', 'annotinfo', 'assembly',
'bioproject', 'biosample', 'blastdbinfo', 'books', 'cdd', 'clinvar',
'clone', 'gap', 'gapplus', 'grasp', 'dbvar', 'gene', 'gds', 'geoprofiles',
'homologene', 'medgen', 'mesh', 'ncbisearch', 'nlmcatalog', 'omim',
'orgtrack', 'pmc', 'popset', 'probe', 'proteinclusters', 'pcassay',
'biosystems', 'pccompound', 'pcsubstance', 'pubmedhealth', 'seqannot',
'snp', 'sra', 'taxonomy', 'biocollections', 'unigene', 'gencoll', 'gtr']
>>>
Grundsätzlich analysiert das Entrez-Modul das vom Entrez-Suchsystem zurückgegebene XML und stellt es als Python-Wörterbuch und Listen bereit.
Datenbank durchsuchen
Um eine der Entrez-Datenbanken zu durchsuchen, können wir das Modul Bio.Entrez.esearch () verwenden. Es ist unten definiert -
>>> info = Entrez.einfo()
>>> info = Entrez.esearch(db = "pubmed",term = "genome")
>>> record = Entrez.read(info)
>>>print(record)
DictElement({u'Count': '1146113', u'RetMax': '20', u'IdList':
['30347444', '30347404', '30347317', '30347292',
'30347286', '30347249', '30347194', '30347187',
'30347172', '30347088', '30347075', '30346992',
'30346990', '30346982', '30346980', '30346969',
'30346962', '30346954', '30346941', '30346939'],
u'TranslationStack': [DictElement({u'Count':
'927819', u'Field': 'MeSH Terms', u'Term': '"genome"[MeSH Terms]',
u'Explode': 'Y'}, attributes = {})
, DictElement({u'Count': '422712', u'Field':
'All Fields', u'Term': '"genome"[All Fields]', u'Explode': 'N'}, attributes = {}),
'OR', 'GROUP'], u'TranslationSet': [DictElement({u'To': '"genome"[MeSH Terms]
OR "genome"[All Fields]', u'From': 'genome'}, attributes = {})], u'RetStart': '0',
u'QueryTranslation': '"genome"[MeSH Terms] OR "genome"[All Fields]'},
attributes = {})
>>>
Wenn Sie eine falsche Datenbank zuweisen, wird diese zurückgegeben
>>> info = Entrez.esearch(db = "blastdbinfo",term = "books")
>>> record = Entrez.read(info)
>>> print(record)
DictElement({u'Count': '0', u'RetMax': '0', u'IdList': [],
u'WarningList': DictElement({u'OutputMessage': ['No items found.'],
u'PhraseIgnored': [], u'QuotedPhraseNotFound': []}, attributes = {}),
u'ErrorList': DictElement({u'FieldNotFound': [], u'PhraseNotFound':
['books']}, attributes = {}), u'TranslationSet': [], u'RetStart': '0',
u'QueryTranslation': '(books[All Fields])'}, attributes = {})
Wenn Sie datenbankübergreifend suchen möchten, können Sie verwenden Entrez.egquery. Dies ist ähnlich wieEntrez.esearch Es reicht jedoch aus, das Schlüsselwort anzugeben und den Datenbankparameter zu überspringen.
>>>info = Entrez.egquery(term = "entrez")
>>> record = Entrez.read(info)
>>> for row in record["eGQueryResult"]:
... print(row["DbName"], row["Count"])
...
pubmed 458
pmc 12779 mesh 1
...
...
...
biosample 7
biocollections 0
Datensätze abrufen
Enterz bietet eine spezielle Methode, mit der Sie alle Details eines Datensatzes von Entrez suchen und herunterladen können. Betrachten Sie das folgende einfache Beispiel:
>>> handle = Entrez.efetch(
db = "nucleotide", id = "EU490707", rettype = "fasta")
Jetzt können wir die Datensätze einfach mit dem SeqIO-Objekt lesen
>>> record = SeqIO.read( handle, "fasta" )
>>> record
SeqRecord(seq = Seq('ATTTTTTACGAACCTGTGGAAATTTTTGGTTATGACAATAAATCTAGTTTAGTA...GAA',
SingleLetterAlphabet()), id = 'EU490707.1', name = 'EU490707.1',
description = 'EU490707.1
Selenipedium aequinoctiale maturase K (matK) gene, partial cds; chloroplast',
dbxrefs = [])