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

3 سال پیش

 توالی ورودی/خروجی در برنامه نویسی بایوپایتون

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

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

Biopython یک ماژول ، Bio.SeqIO را برای خواندن و نوشتن توالی از فایل و یا به ترتیب فایل (هر جریان) فراهم می کند. تقریباً از همه قالب های فایل موجود در بیوانفورماتیک پشتیبانی می کند. بیشتر این نرم افزار رویکردهای مختلفی را برای قالب های مختلف فایل ارائه می دهد. اما، بایوپایتون آگاهانه از یک رویکرد واحد پیروی می کند تا داده های توالی تجزیه شده را از طریق شی SeqRecord به کاربر ارائه دهد.

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

 

SeqRecord

ماژول Bio.SeqRecord SeqRecord را برای نگهداری اطلاعات توالی متا و همچنین داده های توالی خود به شرح زیر ارائه می دهد –

  • seq – این یک توالی واقعی است.
  • id – شناسه اصلی توالی داده شده است. نوع پیش فرض رشته است.
  • name – این نام دنباله است. نوع پیش فرض رشته است.
  • description – این اطلاعات قابل خواندن در مورد توالی را نمایش می دهد.
  • annotations – این یک فرهنگ لغت از اطلاعات اضافی درباره توالی است.

SeqRecord را می توان به صورت زیر وارد کرد

from Bio.SeqRecord import SeqRecord

 

اجازه دهید تفاوتهای تجزیه فایل توالی را با استفاده از فایل توالی واقعی در بخشهای بعدی درک کنیم.

تجزیه قالبهای فایل توالی

این بخش در مورد چگونگی تجزیه دو تا از محبوب ترین قالب های  فایل توالی، FASTA و GenBank توضیح می دهیم.

FASTA

FASTA ابتدایی ترین قالب پرونده برای ذخیره داده های توالی است. در اصل ، FASTA یک پکیج نرم افزاری برای هم ترازی توالی DNA و پروتئین است که در اوایل تکامل بیوانفورماتیک ساخته شده و بیشتر برای جستجوی شباهت توالی استفاده می شود.

بایوپایتون مثالی از فایل FASTA را ارائه می کند و می توانید از طریق https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta به آن دسترسی پیدا کنید.

این فایل را به عنوان ‘orchid.fasta’ در فهرست نمونه بایوپایتون دانلود و ذخیره کنید.

ماژول Bio.SeqIO متد ()parse را برای پردازش فایل های توالی فراهم می کند و می تواند به صورت زیر وارد شود –

from Bio.SeqIO import parse

 

متد ()parse شامل دو آرگومان است، اول دسته فایل و دوم فرمت فایل

>>> file = open('path/to/biopython/sample/orchid.fasta') 
>>> for record in parse(file, "fasta"): 
...    print(record.id) 
... 
gi|2765658|emb|Z78533.1|CIZ78533 
gi|2765657|emb|Z78532.1|CCZ78532 
.......... 
.......... 
gi|2765565|emb|Z78440.1|PPZ78440 
gi|2765564|emb|Z78439.1|PBZ78439 
>>>

 

در اینجا، متد ()parse یک شی قابل تکرار را برمی گرداند که SeqRecord را در هر تکرار برمی گرداند. با قابلیت تکرار، روشهای پیچیده و آسانی را ارائه می دهد و به ما اجازه می دهید برخی از ویژگیها را ببینیم.

متد ()next

متد ()next مورد بعدی موجود در شی قابل تکرار را برمی گرداند، که می توان از آن برای بدست آوردن اولین توالی به شرح زیر استفاده کرد –

>>> first_seq_record = next(SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta')) 
>>> first_seq_record.id 'gi|2765658|emb|Z78533.1|CIZ78533' 
>>> first_seq_record.name 'gi|2765658|emb|Z78533.1|CIZ78533' 
>>> first_seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', SingleLetterAlphabet()) 
>>> first_seq_record.description 'gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA' 
>>> first_seq_record.annotations 
{} 
>>>

 

در اینجا، seq_record.annotations خالی است زیرا قالب FASTA از حاشیه نویسی توالی پشتیبانی نمی کند.

list comprehension

ما می توانیم شی قابل تکرار را با استفاده از list comprehension به صورت زیر به لیست تبدیل کنیم

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> all_seq = [seq_record for seq_record in seq_iter] >>> len(all_seq) 
۹۴ 
>>>

 

در اینجا، ما از روش len برای بدست آوردن تعداد کل استفاده کرده ایم. توالی را با حداکثر طول می توانیم به شرح زیر بدست آوریم –

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> max_seq = max(len(seq_record.seq) for seq_record in seq_iter) 
>>> max_seq 
۷۸۹ 
>>>

 

ما می توانیم توالی را با استفاده از کد زیر فیلتر کنیم –

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> seq_under_600 = [seq_record for seq_record in seq_iter if len(seq_record.seq) < 600] 
>>> for seq in seq_under_600: 
...    print(seq.id) 
... 
gi|2765606|emb|Z78481.1|PIZ78481 
gi|2765605|emb|Z78480.1|PGZ78480 
gi|2765601|emb|Z78476.1|PGZ78476 
gi|2765595|emb|Z78470.1|PPZ78470 
gi|2765594|emb|Z78469.1|PHZ78469 
gi|2765564|emb|Z78439.1|PBZ78439 
>>>

 

نوشتن مجموعه ای از اشیا  SqlRecord (داده های تجزیه شده) در پرونده به سادگی فراخوانی متد SeqIO.write می باشد که به شرح زیر است –

file = open("converted.fasta", "w) 
SeqIO.write(seq_record, file, "fasta")

این روش می تواند به طور موثر برای تبدیل قالب به شرح زیر استفاده شود –

file = open("converted.gbk", "w) 
SeqIO.write(seq_record, file, "genbank")

 

GenBank

این یک فرم توالی غنی برای ژن ها است و شامل زمینه هایی برای انواع مختلف حاشیه نویسی است. بایوپایتون مثالی از فایل GenBank را ارائه می دهد و می توانید از طریق https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta به آن دسترسی پیدا کنید.

فایل را به عنوان ‘orchid.gbk’ در فهرست نمونه بایوپایتون دانلود و ذخیره کنید

از آنجا که بایوپایتون یک عملکرد واحد را ارائه می دهد، برای تجزیه تمام قالب های بیوانفورماتیک تجزیه می شود. قالب تجزیه GenBank به همان اندازه تغییر گزینه قالب در روش تجزیه ساده است.

کد مربوط به آن در زیر آورده شده است –

>>> from Bio import SeqIO 
>>> from Bio.SeqIO import parse 
>>> seq_record = next(parse(open('path/to/biopython/sample/orchid.gbk'),'genbank')) 
>>> seq_record.id 
'Z78533.1' 
>>> seq_record.name 
'Z78533' 
>>> seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', IUPACAmbiguousDNA()) 
>>> seq_record.description 
'C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA' 
>>> seq_record.annotations {
   'molecule_type': 'DNA', 
   'topology': 'linear', 
   'data_file_division': 'PLN', 
   'date': '30-NOV-2006', 
   'accessions': ['Z78533'], 
   'sequence_version': 1, 
   'gi': '2765658', 
   'keywords': ['5.8S ribosomal RNA', '5.8S rRNA gene', 'internal transcribed spacer', 'ITS1', 'ITS2'], 
   'source': 'Cypripedium irapeanum', 
   'organism': 'Cypripedium irapeanum', 
   'taxonomy': [
      'Eukaryota', 
      'Viridiplantae', 
      'Streptophyta', 
      'Embryophyta', 
      'Tracheophyta', 
      'Spermatophyta', 
      'Magnoliophyta', 
      'Liliopsida', 
      'Asparagales', 
      'Orchidaceae', 
      'Cypripedioideae', 
      'Cypripedium'], 
   'references': [
      Reference(title = 'Phylogenetics of the slipper orchids (Cypripedioideae:
      Orchidaceae): nuclear rDNA ITS sequences', ...), 
      Reference(title = 'Direct Submission', ...)
   ]
}

 

منبع.

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

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

دیدگاه شما

بدون دیدگاه