آموزش ماژول BioSQL در برنامه نویسی بایوپایتون

3 سال پیش

آموزش ماژول BioSQL در برنامه نویسی بایوپایتون

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

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

BioSQL یک طرح کلی پایگاه اطلاعاتی است که عمدتا برای ذخیره توالی ها و داده های مربوط به آن برای تمام موتورهای RDBMS طراحی شده است. به گونه ای طراحی شده است که داده های همه پایگاه های اطلاعاتی بیوانفورماتیک معروف مانند GenBank ،Swissport و غیره را در خود نگه می دارد. همچنین می تواند برای ذخیره داده های داخلی نیز مورد استفاده قرار گیرد.

BioSQL در حال حاضر طرحواره خاصی را برای پایگاه داده های زیر فراهم می کند:

  • MySQL (biosqldb-mysql.sql)
  • PostgreSQL (biosqldb-pg.sql)
  • Oracle (biosqldb-ora/*.sql)
  • SQLite (biosqldb-sqlite.sql)

همچنین از پایگاه داده های HSQLDB و Derby مبتنی بر جاوا کمترین پشتیبانی را می کند.

بایوپایتون قابلیت های ORM بسیار ساده، آسان و پیشرفته را برای کار با پایگاه داده مبتنی بر BioSQL فراهم می کند. ماژول BioSQL در برنامه نویسی بایوپایتون برای انجام عملکردهای زیر فراهم می کند –

  • یک پایگاه داده BioSQL ایجاد / حذف کنید
  • به یک پایگاه داده BioSQL متصل شوید
  • یک پایگاه داده توالی مانند GenBank ،Swisport ، نتیجه BLAST، نتیجه Entrez و غیره را تجزیه کرده و مستقیماً در پایگاه داده BioSQL بارگذاری کنید
  • داده های توالی را از پایگاه داده BioSQL واکشی کنید
  • داده های طبقه بندی را از NCBI BLAST واکشی کرده و در پایگاه داده BioSQL ذخیره کنید
  • هرگونه جستجوی SQL را در برابر پایگاه داده BioSQL اجرا کنید

بررسی اجمالی برنامه پایگاه داده BioSQL

قبل از اینکه  BioSQL را کاملا بررسی کنیم، اجازه دهید اصول برنامه BioSQL را درک کنیم. طرح BioSQL  بیست و پنج جدول برای نگهداری داده های توالی، ویژگی توالی، دسته توالی / هستی شناسی و اطلاعات طبقه بندی فراهم می کند. برخی از جداول مهم به شرح زیر است:

  • biodatabase
  • bioentry
  • biosequence
  • seqfeature
  • taxon
  • taxon_name
  • antology
  • term
  • dxref

ایجاد پایگاه داده BioSQL

در این بخش، بیایید با استفاده از طرحواره ارائه شده توسط تیم BioSQL، یک پایگاه داده BioSQL ایجاد کنیم. ما باید با پایگاه داده SQLite کار کنیم زیرا شروع کار بسیار آسان است و تنظیمات پیچیده ای ندارد.

در اینجا، ما با استفاده از مراحل زیر یک پایگاه داده BioSQL مبتنی بر SQLite ایجاد خواهیم کرد.

 

مرحله ۱ – موتور پایگاه داده SQLite را دانلود کرده و آن را نصب کنید.

مرحله ۲ – پروژه BioSQL را از URL GitHub دانلود کنید. https://github.com/biosql/biosql

مرحله ۳ – یک کنسول را باز کنید و با استفاده از mkdir یک دایرکتوری ایجاد کنید و وارد آن شوید.

cd /path/to/your/biopython/sample 
mkdir sqlite-biosql 
cd sqlite-biosql

 

مرحله ۴ – دستور زیر را برای ایجاد یک پایگاه داده جدید SQLite اجرا کنید.

> sqlite3.exe mybiosql.db 
SQLite version 3.25.2 2018-09-25 19:08:10 
Enter ".help" for usage hints. 
sqlite>

 

مرحله ۵ – فایل biosqldb-sqlite.sql را از پروژه BioSQL کپی کنید (/ sql / biosqldb-sqlite.sql`) و آن را در فهرست فعلی ذخیره کنید.

مرحله ۶ – دستور زیر را برای ایجاد همه جداول اجرا کنید.

sqlite> .read biosqldb-sqlite.sql

 

اکنون، تمام جداول در پایگاه داده جدید ما ایجاد شده اند.

مرحله ۷ – دستور زیر را برای دیدن تمام جداول جدید در پایگاه داده خود اجرا کنید.

sqlite> .headers on 
sqlite> .mode column 
sqlite> .separator ROW "\n" 
sqlite> SELECT name FROM sqlite_master WHERE type = 'table'; 
biodatabase 
taxon 
taxon_name 
ontology 
term 
term_synonym 
term_dbxref 
term_relationship 
term_relationship_term 
term_path
bioentry 
bioentry_relationship 
bioentry_path 
biosequence 
dbxref 
dbxref_qualifier_value 
bioentry_dbxref 
reference 
bioentry_reference 
comment 
bioentry_qualifier_value 
seqfeature 
seqfeature_relationship 
seqfeature_path 
seqfeature_qualifier_value 
seqfeature_dbxref 
location 
location_qualifier_value 
sqlite>

 

سه دستور اول، دستورات پیکربندی برای پیکربندی SQLite است تا نتیجه را به صورت قالب بندی شده نشان دهد.

مرحله ۸ – نمونه فایل GenBank ، ls_orchid.gbk ارائه شده توسط تیم بایوپایتون https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/ls_orchid.gbk را در فهرست فعلی کپی کرده و به عنوان orchid.gbk ذخیره کنید .

 

مرحله ۹ – با استفاده از کد زیر یک اسکریپت پایتون، load_orchid.py ایجاد کنید و آن را اجرا کنید

from Bio import SeqIO 
from BioSQL import BioSeqDatabase 
import os 

server = BioSeqDatabase.open_database(driver = 'sqlite3', db = "orchid.db") 

db = server.new_database("orchid") 
count = db.load(SeqIO.parse("orchid.gbk", "gb"), True) server.commit() 
server.close()

 

کد فوق رکورد موجود در فایل را تجزیه کرده و آن را به اشیا پایتون تبدیل کرده و در پایگاه داده BioSQL قرار می دهد. ما در بخش بعدی کد را تجزیه و تحلیل خواهیم کرد.

سرانجام، ما یک پایگاه داده جدید BioSQL ایجاد کردیم و برخی از داده های نمونه را در آن بارگذاری کردیم.

 

نمودار ER ساده

جدول biodatabase در بالای سلسله مراتب قرار دارد و هدف اصلی آن سازماندهی مجموعه ای از داده های توالی در یک گروه / پایگاه داده مجازی است. هر ورودی در پایگاه داده زیستی به یک پایگاه داده جداگانه اشاره دارد و با پایگاه داده دیگری مخلوط نمی شود. تمام جداول مربوط به پایگاه داده BioSQL به ورودی پایگاه داده زیستی اشاره دارند.

جدول bioentry تمام جزئیات مربوط به یک دنباله را به جز داده های توالی در خود دارد. داده های توالی یک biosequence خاص در جدول توالی زیست ذخیره می شود.

taxon و taxon_name جزئیات طبقه بندی هستند و هر ورودی برای مشخص کردن اطلاعات طبقه بندی خود، این جدول را ارجاع می دهد.

Simple ER Diagram

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

کوئری های BioSQL

اجازه دهید برای درک بهتر نحوه سازماندهی داده ها و ارتباط جداول با یکدیگر ، به برخی کوئری های BioSQL بپردازیم. قبل از ادامه، اجازه دهید پایگاه داده را با استفاده از دستور زیر باز کنیم و برخی از دستورات قالب بندی را تنظیم کنیم –

> sqlite3 orchid.db 
SQLite version 3.25.2 2018-09-25 19:08:10 
Enter ".help" for usage hints. 
sqlite> .header on 
sqlite> .mode columns

 

header. و mode. گزینه های قالب بندی برای تجسم بهتر داده ها هستند. برای اجرای درخواست می توانید از هر ادیتور SQLite نیز استفاده کنید.

به شرح زیر پایگاه داده توالی مجازی موجود در سیستم را لیست کنید:

select 
   * 
from 
   biodatabase;
*** Result ***
sqlite> .width 15 15 15 15 
sqlite> select * from biodatabase; 
biodatabase_id       name        authority       description    
---------------  --------------- --------------- --------------- 
۱                   orchid 
sqlite>

 

در اینجا، ما فقط یک پایگاه داده داریم، orchid.

با کد ارائه شده در زیر، ورودی های موجود در  پایگاه داده orchid را لیست کنید

select 
   be.*, 
   bd.name 
from 
   bioentry be 
   inner join 
      biodatabase bd 
      on bd.biodatabase_id = be.biodatabase_id 
where 
   bd.name = 'orchid' Limit 1, 
   ۳;
*** Result ***
sqlite> .width 15 15 10 10 10 10 10 50 10 10 
sqlite> select be.*, bd.name from bioentry be inner join biodatabase bd on 
bd.biodatabase_id = be.biodatabase_id where bd.name = 'orchid' Limit 1,3; 
bioentry_id biodatabase_id taxon_id name accession identifier division description version name 
--------------- --------------- ---------- ---------- ---------- ---------- ---------- 
---------- ---------- ----------- ---------- --------- ---------- ---------- 
۲                   ۱               ۱۹       Z78532     Z78532    2765657     PLN 
C.californicum  5.8S rRNA  gene    and      ITS1    and   ITS2 DN  1 
orchid 
۳         ۱         ۲۰          Z78531          Z78531         2765656        PLN
C.fasciculatum  5.8S rRNA  gene    and      ITS1    and   ITS2 DN  1 
orchid 
۴         ۱         ۲۱          Z78530          Z78530         2765655        PLN 
C.margaritaceum 5.8S rRNA  gene    and      ITS1    and   ITS2  D  1 
orchid 
sqlite>

 

جزئیات توالی مربوط به یک ورودی (accession − Z78530, name − C. fasciculatum 5.8S rRNA gene and ITS1 and ITS2 DNA) را با کد داده شده فهرست کنید:

select 
   substr(cast(bs.seq as varchar), 0, 10) || '...' as seq, 
   bs.length, 
   be.accession, 
   be.description, 
   bd.name 
from 
   biosequence bs 
   inner join 
      bioentry be 
      on be.bioentry_id = bs.bioentry_id 
   inner join 
      biodatabase bd 
      on bd.biodatabase_id = be.biodatabase_id 
where 
   bd.name = 'orchid' 
   and be.accession = 'Z78532';
*** Result ***

sqlite> .width 15 5 10 50 10 
sqlite> select substr(cast(bs.seq as varchar), 0, 10) || '...' as seq, 
bs.length, be.accession, be.description, bd.name from biosequence bs inner 
join bioentry be on be.bioentry_id = bs.bioentry_id inner join biodatabase bd 
on bd.biodatabase_id = be.biodatabase_id where bd.name = 'orchid' and 
be.accession = 'Z78532'; 
seq           length    accession   description  name 
------------ ---------- ---------- ------------ ------------ ---------- ---------- ----------------- 
CGTAACAAG...    753    Z78532    C.californicum 5.8S rRNA gene and ITS1 and ITS2 DNA orchid 
sqlite>

 

توالی کامل مرتبط با یک ورودی (accession − Z78530, name − C. fasciculatum ۵٫۸S rRNA gene and ITS1 and ITS2 DNA) را با استفاده از کد زیر دریافت کنید

select 
   bs.seq 
from 
   biosequence bs 
   inner join 
      bioentry be 
      on be.bioentry_id = bs.bioentry_id 
   inner join 
      biodatabase bd 
      on bd.biodatabase_id = be.biodatabase_id 
where 
   bd.name = 'orchid' 
   and be.accession = 'Z78532';
*** Result ***

sqlite> .width 1000 
sqlite> select bs.seq from biosequence bs inner join bioentry be on 
be.bioentry_id = bs.bioentry_id inner join biodatabase bd on bd.biodatabase_id = 
be.biodatabase_id where bd.name = 'orchid' and be.accession = 'Z78532'; 
seq 
----------------------------------------------------------------------------------------
----------------------------
CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGTTGAGACAACAGAATATATGATCGAGTGAATCT
GGAGGACCTGTGGTAACTCAGCTCGTCGTGGCACTGCTTTTGTCGTGACCCTGCTTTGTTGTTGGGCCTCC
TCAAGAGCTTTCATGGCAGGTTTGAACTTTAGTACGGTGCAGTTTGCGCCAAGTCATATAAAGCATCACTGATGAATGACATTATTGT
CAGAAAAAATCAGAGGGGCAGTATGCTACTGAGCATGCCAGTGAATTTTTATGACTCTCGCAACGGATATCTTGGCTC
TAACATCGATGAAGAACGCAG 
sqlite>

 

طبقه بندی های مرتبط با پایگاه داده زیستی orchid را لیست کنید

select distinct 
   tn.name 
from 
   biodatabase d 
   inner join 
      bioentry e 
      on e.biodatabase_id = d.biodatabase_id 
   inner join 
      taxon t 
      on t.taxon_id = e.taxon_id 
   inner join 
      taxon_name tn 
      on tn.taxon_id = t.taxon_id 
where 
   d.name = 'orchid' limit 10;
*** Result ***

sqlite> select distinct tn.name from biodatabase d inner join bioentry e on 
e.biodatabase_id = d.biodatabase_id inner join taxon t on t.taxon_id = 
e.taxon_id inner join taxon_name tn on tn.taxon_id = t.taxon_id where d.name = 
'orchid' limit 10; 
name 
------------------------------ 
Cypripedium irapeanum 
Cypripedium californicum 
Cypripedium fasciculatum 
Cypripedium margaritaceum 
Cypripedium lichiangense 
Cypripedium yatabeanum 
Cypripedium guttatum 
Cypripedium acaule 
pink lady's slipper 
Cypripedium formosanum 
sqlite>

 

بارگیری داده در پایگاه داده BioSQL 

بیایید بفهمیم که چگونه داده های توالی را در این بخش در پایگاه داده BioSQL بارگذاری کنیم. ما قبلاً کدی برای بارگذاری داده ها در پایگاه داده در بخش قبلی داریم و کد به شرح زیر است –

from Bio import SeqIO 
from BioSQL import BioSeqDatabase 
import os 

server = BioSeqDatabase.open_database(driver = 'sqlite3', db = "orchid.db") 
DBSCHEMA = "biosqldb-sqlite.sql" 
SQL_FILE = os.path.join(os.getcwd(), DBSCHEMA) 

server.load_database_sql(SQL_FILE) 
server.commit() 

db = server.new_database("orchid") 
count = db.load(SeqIO.parse("orchid.gbk", "gb"), True) server.commit() 
server.close()

 

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

خط ۱ – ماژول SeqIO را بارگیری می کند.

خط ۲ – ماژول BioSeqDatabase را بارگیری می کند. این ماژول تمام قابلیت های تعامل با پایگاه داده BioSQL را فراهم می کند.

خط ۳ – ماژول سیستم عامل را بارگیری می کند.

خط ۵ – open_database با درایور پیکربندی شده (driver) پایگاه داده مشخص شده (db) را باز کرده و یک دسته را به پایگاه داده  server) BioSQL) باز می گرداند. بایوپایتون از پایگاه داده sqlite ،mysql ،postgresql و oracle پشتیبانی می کند.

خط ۶-۱۰ – متد load_database_sql sql را از فایل خارجی بارگیری کرده و آن را اجرا می کند. ما می توانیم از این مرحله صرف نظر کنیم زیرا ما قبلاً پایگاه داده را با برنامه ایجاد کرده ایم.

خط ۱۲ – متد های new_database پایگاه داده مجازی جدیدی را ایجاد می کند، orchid و یک دسته db را برمی گرداند تا دستور را در برابر پایگاه داده orchid اجرا کند.

خط ۱۳ – متد load ورودی های توالی (قابل تکرار SeqRecord) را در پایگاه داده orchid بارگیری می کند. SqlIO.parse پایگاه داده GenBank را تجزیه می کند و تمام توالی های موجود در آن را به عنوان قابل تکرار SeqRecord برمی گرداند. پارامتر دوم (True) متد load به آن دستور می دهد تا جزئیات طبقه بندی داده های توالی را از وب سایت NCBI blast دریافت کند، در صورتی که از قبل در سیستم موجود نیست.

خط ۱۴ –  commit معامله را انجام می دهد.

خط ۱۵ –closeاتصال پایگاه داده را می بندد و دسته سرور را از بین می برد.

 واکشی داده های توالی 

اجازه دهید دنباله ای با شناسه  ۲۷۶۵۶۵۸ را از پایگاه داده orchid به شرح زیر بیاوریم:

from BioSQL import BioSeqDatabase 

server = BioSeqDatabase.open_database(driver = 'sqlite3', db = "orchid.db") 

db = server["orchid"] 
seq_record = db.lookup(gi = 2765658) 
print(seq_record.id, seq_record.description[:50] + "...") 
print("Sequence length %i," % len(seq_record.seq))

 

در اینجا، سرور [“orchid”] دسته را برای واکشی داده ها از پایگاه داده مجازی orchid برمی گرداند. روش جستجوی گزینه ای برای انتخاب توالی ها بر اساس معیارها فراهم می کند و ما توالی را با شناسه ۲۷۶۵۶۵۸ انتخاب کرده ایم. lookup اطلاعات توالی را به عنوان SeqRecordobject برمی گرداند. از آنجا که، ما قبلاً می دانیم که چگونه با SeqRecord کار کنیم ، دریافت داده ها از آن آسان است.

حذف یک پایگاه داده

حذف پایگاه داده به سادگی فراخوانی متد remove_database با نام پایگاه داده مناسب و سپس انجام آن به شرح زیر است

from BioSQL import BioSeqDatabase 
server = BioSeqDatabase.open_database(driver = 'sqlite3', db = "orchid.db") 
server.remove_database("orchids") 
server.commit()

 

منبع.

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

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

دیدگاه شما

بدون دیدگاه