آموزش توالی ورودی/خروجی در برنامه نویسی بایوپایتون
توالی ورودی/خروجی در برنامه نویسی بایوپایتون
در این درس از آموزش های برنامه نویسی سایت سورس باران، ما در مورد توالی ورودی/خروجی در برنامه نویسی بایوپایتون بحث خواهیم کرد.
پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون و جنگو
Biopython یک ماژول ، Bio.SeqIO را برای خواندن و نوشتن توالی از فایل و یا به ترتیب فایل (هر جریان) فراهم می کند. تقریباً از همه قالب های فایل موجود در بیوانفورماتیک پشتیبانی می کند. بیشتر این نرم افزار رویکردهای مختلفی را برای قالب های مختلف فایل ارائه می دهد. اما، بایوپایتون آگاهانه از یک رویکرد واحد پیروی می کند تا داده های توالی تجزیه شده را از طریق شی SeqRecord به کاربر ارائه دهد.
اجازه دهید در بخش زیر اطلاعات بیشتری در مورد SeqRecord کسب کنیم.
SeqRecord
ماژول Bio.SeqRecord SeqRecord را برای نگهداری اطلاعات توالی متا و همچنین داده های توالی خود به شرح زیر ارائه می دهد –
- seq – این یک توالی واقعی است.
- id – شناسه اصلی توالی داده شده است. نوع پیش فرض رشته است.
- name – این نام دنباله است. نوع پیش فرض رشته است.
- description – این اطلاعات قابل خواندن در مورد توالی را نمایش می دهد.
- annotations – این یک فرهنگ لغت از اطلاعات اضافی درباره توالی است.
SeqRecord را می توان به صورت زیر وارد کرد
1 |
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 را برای پردازش فایل های توالی فراهم می کند و می تواند به صورت زیر وارد شود –
1 |
from Bio.SeqIO import parse |
متد ()parse شامل دو آرگومان است، اول دسته فایل و دوم فرمت فایل
1 2 3 4 5 6 7 8 9 10 11 |
>>> 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 مورد بعدی موجود در شی قابل تکرار را برمی گرداند، که می توان از آن برای بدست آوردن اولین توالی به شرح زیر استفاده کرد –
1 2 3 4 5 6 7 8 |
>>> 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 به صورت زیر به لیست تبدیل کنیم
1 2 3 4 |
>>> 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) 94 >>> |
در اینجا، ما از روش len برای بدست آوردن تعداد کل استفاده کرده ایم. توالی را با حداکثر طول می توانیم به شرح زیر بدست آوریم –
1 2 3 4 5 |
>>> 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 789 >>> |
ما می توانیم توالی را با استفاده از کد زیر فیلتر کنیم –
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> 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 می باشد که به شرح زیر است –
1 2 |
file = open("converted.fasta", "w) SeqIO.write(seq_record, file, "fasta") |
این روش می تواند به طور موثر برای تبدیل قالب به شرح زیر استفاده شود –
1 2 |
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 به همان اندازه تغییر گزینه قالب در روش تجزیه ساده است.
کد مربوط به آن در زیر آورده شده است –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
>>> 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', ...) ] } |
دیدگاه شما