بررسی پایگاه داده Entrez در برنامه نویسی بایوپایتون

3 سال پیش

بررسی پایگاه داده Entrez در برنامه نویسی بایوپایتون

در این درس از آموزش های برنامه نویسی سایت سورس باران، ما در مورد بررسی پایگاه داده Entrez در برنامه نویسی بایوپایتون بحث خواهیم کرد.

پیشنهاد ویژه : پکیج آموزش پایتون

Entrez یک سیستم جستجوی آنلاین است که توسط NCBI ارائه شده است. این پایگاه داده دسترسی به تقریباً همه پایگاه های شناخته شده زیست شناسی مولکولی را با یک query جهانی یکپارچه پشتیبانی از اپراتورهای بولی و جستجوی میدانی فراهم می کند. این نتایج از تمام پایگاه های داده با اطلاعاتی مانند تعداد بازدید از هر پایگاه داده، سوابق با لینک به پایگاه داده مبدا و غیره را برمی گرداند.

برخی از پایگاه های داده معروف که از طریق Entrez قابل دسترسی هستند در زیر لیست شده اند –

  • Pubmed
  • Pubmed Central
  • Nucleotide  (بانک توالی GenBank)
  • Protein  (پایگاه توالی)
  • Genome (بانک اطلاعاتی کل ژنوم)
  • Structure (ساختار ماکرومولکولی سه بعدی)
  • Taxonomy (ارگانیسم ها در GenBank)
  • SNP (چند شکلی نوکلئوتیدی منفرد)
  • UniGene (خوشه های ژن گرا دنباله های متن)
  • CDD (بانک اطلاعاتی دامنه پروتئین محافظت شده)
  • ۳D Domains (دامنه هایی از ساختار Entrez)

 

علاوه بر پایگاه داده های فوق، Entrez پایگاه داده های بیشتری را برای انجام جستجوی میدانی فراهم می کند.

 

بایوپایتون یک ماژول خاص Entrez با نام Bio.Entrez  را برای دسترسی به پایگاه داده Entrez فراهم می کند. بیایید نحوه دسترسی به Entrez را با استفاده از بایوپایتون در این درس بیاموزیم –

مراحل اتصال به پایگاه داده

برای افزودن ویژگی های Entrez، ماژول زیر را وارد کنید –

>>> from Bio import Entrez

 

بعد ایمیل خود را با آن تنظیم کنید تا مشخص شود چه کسی با کدی که در زیر آورده شده مرتبط است –

>>> Entrez.email = '<youremail>'

 

سپس، پارامتر ابزار Entrez را تنظیم کنید که به طور پیش فرض بایوپایتون است.

>>> Entrez.tool = 'Demoscript'

 

اکنون، با فراخوانی تابع einfo برای یافتن شمارش اصطلاحات اندیس، آخرین به روزرسانی و پیوندهای موجود برای هر پایگاه داده به شرح زیر عمل کنید.

>>> info = Entrez.einfo()

 

روش einfo یک شی را برمی گرداند، که دسترسی به اطلاعات را از طریق روش خواندن خود فراهم می کند همانطور که در زیر نشان داده شده است –

>>> 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>

 

داده ها در قالب XML هستند و برای بدست آوردن داده ها به عنوان شی پایتون، به محض فراخوانی متد ()Entrez.einfo از متد Entrez.read استفاده کنید –

>>> info = Entrez.einfo() 
>>> record = Entrez.read(info)

 

در اینجا، رکورد یک دیکشنری است که دارای یک کلید است، DbList همانطور که در زیر نشان داده شده است –

>>> record.keys() 
[u'DbList']

 

دسترسی به کلید DbList لیستی از نام پایگاه داده را نشان می دهد که در زیر نشان داده شده است –

>>> 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'] 
>>>

 

ماژول Entrez XML برگشت داده شده توسط سیستم جستجوی Entrez را تجزیه می کند و آن را به عنوان دیکشنری و لیست پایتون ارائه می دهد.

پایگاه داده جستجو

برای جستجوی هر یک از پایگاه های اطلاعاتی Entrez، می توانیم از ماژول ()Bio.Entrez.esearch  استفاده کنیم. که در زیر تعریف شده است:

>>> 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':
['۳۰۳۴۷۴۴۴', '۳۰۳۴۷۴۰۴', '۳۰۳۴۷۳۱۷', '۳۰۳۴۷۲۹۲', 
'۳۰۳۴۷۲۸۶', '۳۰۳۴۷۲۴۹', '۳۰۳۴۷۱۹۴', '۳۰۳۴۷۱۸۷', 
'۳۰۳۴۷۱۷۲', '۳۰۳۴۷۰۸۸', '۳۰۳۴۷۰۷۵', '۳۰۳۴۶۹۹۲', 
'۳۰۳۴۶۹۹۰', '۳۰۳۴۶۹۸۲', '۳۰۳۴۶۹۸۰', '۳۰۳۴۶۹۶۹', 
'۳۰۳۴۶۹۶۲', '۳۰۳۴۶۹۵۴', '۳۰۳۴۶۹۴۱', '۳۰۳۴۶۹۳۹'], 
u'TranslationStack': [DictElement({u'Count': 
'۹۲۷۸۱۹', 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 = {})
>>>

 

اگر db نادرست اختصاص دهید، باز می گردد

>>> 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 = {})

 

اگر می خواهید در پایگاه داده جستجو کنید، می توانید از Entrez.egquery استفاده کنید. این مشابه Entrez.esearch است با این تفاوت که کافی است کلمه کلیدی را مشخص کرده و از پارامتر پایگاه داده صرف نظر کنید.

>>>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

 

واکشی رکوردها

Enterz روش ویژه ای را برای جستجو و بارگیری جزئیات کامل یک رکورد از Entrez فراهم می کند. مثال ساده زیر را در نظر بگیرید –

>>> handle = Entrez.efetch(
   db = "nucleotide", id = "EU490707", rettype = "fasta")

 

اکنون، ما می توانیم رکوردها را با استفاده از شی SeqIO بخوانیم

>>> 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 = [])

 

منبع.

لیست جلسات قبل آموزش برنامه نویسی بایوپایتون

  1. آموزش برنامه نویسی بایوپایتون (Biopython)
  2. معرفی برنامه نویسی بایوپایتون
  3. آموزش نصب بایوپایتون
  4. ایجاد یک برنامه ساده در برنامه نویسی بایوپایتون
  5. آموزش دنباله در برنامه نویسی بایوپایتون
  6. عملیات توالی پیشرفته در برنامه نویسی بایوپایتون
  7. آموزش توالی ورودی/خروجی در برنامه نویسی بایوپایتون
  8.  آموزش هم‌ترازسازی توالی در برنامه نویسی بایوپایتون
  9. بررسی اجمالی BLAST در برنامه نویسی بایوپایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه