آموزش همترازسازی توالی در برنامه نویسی بایوپایتون
آموزش همترازسازی توالی در برنامه نویسی بایوپایتون
در این درس از آموزش های برنامه نویسی سایت سورس باران، ما در مورد آموزش همترازسازی توالی در برنامه نویسی بایوپایتون بحث خواهیم کرد.
پیشنهاد ویژه : پکیج آموزش صفر تا صد پایتون
همترازسازی توالی توالی فرایند تنظیم دو یا چند توالی (از توالی DNA ، RNA یا پروتئین) به ترتیب خاص برای شناسایی منطقه شباهت بین آنها است.
شناسایی منطقه مشابه ما را قادر می سازد اطلاعات زیادی راجع به این که چه صفاتی بین گونه ها حفظ می شود، از نظر ژنتیکی گونه های مختلف چقدر به یکدیگر نزدیک هستند، چگونه تکامل گونه ها و غیره استنباط کنیم.
بیایید برخی از ویژگی های مهم ارائه شده همترازسازی توالی در برنامه نویسی بایوپایتون در این درس را بیاموزیم.
همترازسازی توالی تجزیه
بایوپایتون یک ماژول Bio.AlignIO را برای خواندن و نوشتن همترازسازی توالی توالی فراهم می کند. در بیوانفورماتیک، تعداد زیادی قالب برای تعیین داده های همترازسازی توالی مشابه داده های توالی قبلی آموخته شده وجود دارد. Bio.AlignIO API مشابه Bio.SeqIO را ارائه می دهد با این تفاوت که Bio.SeqIO روی داده های توالی و Bio.AlignIO روی داده های ترازی توالی کار می کند.
قبل از شروع به یادگیری، اجازه دهید یک نمونه فایل تراز توالی را از اینترنت دانلود کنیم.
برای دانلود فایل نمونه، مراحل زیر را دنبال کنید –
مرحله 1 – مرورگر مورد علاقه خود را باز کرده و به http://pfam.xfam.org/family/browse وب سایت بروید. این همه خانواده های Pfam را به ترتیب حروف الفبا نشان می دهد.
مرحله 2 – هر خانواده ای را انتخاب کنید که تعداد seed کمتری داشته باشد. این شامل حداقل داده ها است و ما را قادر می سازد تا به راحتی با هم ترازی کار کنیم. در اینجا، ما PF18225 را انتخاب و کلیک کرده ایم و به http://pfam.xfam.org/family/PF18225 باز می شود و جزئیات کاملی درباره آن، از جمله همترازسازی توالی توالی را نشان می دهد.
مرحله 3 – به بخش همترازسازی بروید و فایل همترازسازی توالی را در قالب استکهلم دانلود کنید (PF18225_seed.txt).
بیایید سعی کنیم فایل همترازسازی توالی دانلود را با استفاده از Bio بخوانیم. که به شرح زیر –
1 |
>>> from Bio import AlignIO |
وارد کردن ماژول Bio.AlignIO
تراز را با استفاده از روش خواندن بخوانید. متد read برای خواندن داده های هم ترازی واحد موجود در فایل داده شده استفاده می شود. اگر فایل داده شده حاوی همترازسازی توالی های زیادی باشد، می توانیم از متد parse استفاده کنیم. متد parse شی تراز پذیری قابل تکرار را شبیه به متد parse در ماژول Bio.SeqIO برمی گرداند.
1 |
>>> alignment = AlignIO.read(open("PF18225_seed.txt"), "stockholm") |
چاپ شی هم تراز
1 2 3 4 5 6 7 8 9 |
>>> print(alignment) SingleLetterAlphabet() alignment with 6 rows and 65 columns MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVA...EGP B7RZ31_9GAMM/59-123 AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADIT...KKP A0A0C3NPG9_9PROT/58-119 ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMA...KKP A0A143HL37_9GAMM/57-121 TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMA...NKP A0A0X3UC67_9GAMM/57-121 AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIM...NRK B3PFT7_CELJU/62-126 AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVA...NRT K4KEM7_SIMAS/61-125 >>> |
ما همچنین می توانیم توالی (SeqRecord) موجود در همترازسازی توالی و همچنین زیر را بررسی کنیم –
1 2 3 4 5 6 7 8 9 10 |
>>> for align in alignment: ... print(align.seq) ... MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVATVANQLRGRKRRAFARHREGP AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADITA---RLDRRREHGEHGVRKKP ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMAPMLIALNYRNRESHAQVDKKP TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMAPLFKVLSFRNREDQGLVNNKP AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIMVLAPRLTAKHPYDKVQDRNRK AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVADLMRKLDLDRPFKKLERKNRT >>> |
همترازسازی چند توالی
به طور کلی، بیشتر فایل های هم ترازی توالی حاوی داده های هم ترازی واحد هستند و استفاده از متد read برای تجزیه آنها کافی است. در مفهوم هم ترازی توالی چندگانه، دو یا چند توالی برای بهترین تطابق توالی ای بین آنها مقایسه می شود و منجر به همترازسازی چند توالی در یک پرونده می شود.
اگر قالب تراز توالی ورودی شامل بیش از یک تراز بندی توالی باشد، بنابراین ما باید به جای متد read که در زیر مشخص شده است، از متد parse استفاده کنیم –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
>>> from Bio import AlignIO >>> alignments = AlignIO.parse(open("PF18225_seed.txt"), "stockholm") >>> print(alignments) <generator object parse at 0x000001CD1C7E0360> >>> for alignment in alignments: ... print(alignment) ... SingleLetterAlphabet() alignment with 6 rows and 65 columns MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVA...EGP B7RZ31_9GAMM/59-123 AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADIT...KKP A0A0C3NPG9_9PROT/58-119 ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMA...KKP A0A143HL37_9GAMM/57-121 TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMA...NKP A0A0X3UC67_9GAMM/57-121 AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIM...NRK B3PFT7_CELJU/62-126 AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVA...NRT K4KEM7_SIMAS/61-125 >>> |
در اینجا، متد parse شی همترازسازی توالی قابل بازگشت را برمی گرداند و می توان برای دستیابی به ترازهای واقعی تکرار کرد.
همترازسازی توالی جفتی
همترازسازی توالی جفتی همزمان فقط دو توالی را با هم مقایسه می کند و بهترین ترازهای توالی ممکن را ارائه می دهد. درک جفت آسان و استثنایی است که از همترازسازی توالی حاصل استنباط می شود.
بایوپایتون یک ماژول ویژه را با نام Bio.pairwise2 برای شناسایی همترازسازی توالی با استفاده از روش زوجی تهیه می کند. بایوپایتون بهترین الگوریتم را برای یافتن همترازسازی توالی اعمال می کند و با سایر نرم افزارها هم تراز است.
اجازه دهید مثالی بنویسیم تا تراز دو توالی ساده و فرضی را با استفاده از ماژول جفتی پیدا کنیم. این به ما کمک می کند تا مفهوم همترازسازی توالی و چگونگی برنامه ریزی آن را با استفاده از بایوپایتون درک کنیم.
مرحله 1
با دستور زیر، ماژول pairwise2 را به صورت جفتی وارد کنید –
1 |
>>> from Bio import pairwise2 |
گام 2
ایجاد دو توالی seq1 و seq2 –
1 2 3 |
>>> from Bio.Seq import Seq >>> seq1 = Seq("ACCGGT") >>> seq2 = Seq("ACGT") |
مرحله 3
برای یافتن ترازها با استفاده از کد زیر، متد pairwise2.align.globalxx را به همراه seq1 و seq2 فراخوانی کنید –
1 |
>>> alignments = pairwise2.align.globalxx(seq1, seq2) |
در اینجا، متد globalxx کار واقعی را انجام می دهد و بهترین ترازهای ممکن را در توالی های داده شده پیدا می کند. در واقع، Bio.pairwise2 مجموعه ای از متد ها را ارائه می دهد که برای یافتن ترازها در سناریوهای مختلف از قرارداد زیر پیروی می کند.
1 |
<sequence alignment type>XY |
در اینجا، نوع همترازسازی توالی به نوع ترازبندی اشاره دارد که ممکن است جهانی یا محلی (global or local) باشد. نوع جهانی با در نظر گرفتن توالی کامل، تهمترازسازی توالی را پیدا می کند.
نوع محلی همترازسازی توالی با جستجوی زیر مجموعه توالی های داده شده نیز می باشد. این روش ممکن است خسته کننده باشد اما ایده بهتری در مورد شباهت بین توالی های داده شده ارائه می دهد.
- X به نمره تطبیق (matching score) اشاره دارد. مقادیر ممکن عبارتند از x (مطابقت دقیق) ، m (امتیاز براساس کاراکترهای یکسان) ، d (کاربر فرهنگ لغت را با کاراکتر و نمره مطابقت ارائه می دهد) و در آخر c (تابعتعریف شده توسط کاربر برای ارائه الگوریتم امتیازدهی سفارشی).
- Y به جریمه پرش (gap penalty) اشاره دارد. مقادیر ممکن عبارتند از x (عدم جریمه پرش) ، s (جریمه پرش های یکسان برای هر دو دنباله) ، d (جریمه پرش های مختلف برای هر دنباله) و در نهایت c (تابع تعریف شده توسط کاربر برای ارائه مجازات های شکاف سفارشی)
بنابراین، localds نیز یک متد معتبر است ، که همترازسازی توالی را با استفاده از تکنیک هم ترازی محلی، کاربر فرهنگ لغت را برای مطابقت و جریمه پرش کاربر را برای هر دو توالی پیدا می کند.
1 |
>>> test_alignments = pairwise2.align.localds(seq1, seq2, blosum62, -10, -1) |
در اینجا ، blosum62 به واژه نامه موجود در ماژول pairwise2 برای ارائه نمره مطابقت اشاره دارد. 10- به جریمه باز بودن شکاف و 1- به جریمه گسترش فاصله اشاره دارد.
مرحله 4
بر روی شی ترازهای قابل تکرار حلقه بزنید و هر شی هم ترازی جداگانه بگیرید و آن را چاپ کنید.
1 2 3 4 5 6 7 |
>>> for alignment in alignments: ... print(alignment) ... ('ACCGGT', 'A-C-GT', 4.0, 0, 6) ('ACCGGT', 'AC--GT', 4.0, 0, 6) ('ACCGGT', 'A-CG-T', 4.0, 0, 6) ('ACCGGT', 'AC-G-T', 4.0, 0, 6) |
مرحله 5
ماژول Bio.pairwise2 یک روش قالب بندی، format_alignment را برای تجسم بهتر نتیجه فراهم می کند:
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 |
>>> from Bio.pairwise2 import format_alignment >>> alignments = pairwise2.align.globalxx(seq1, seq2) >>> for alignment in alignments: ... print(format_alignment(*alignment)) ... ACCGGT | | || A-C-GT Score=4 ACCGGT || || AC--GT Score=4 ACCGGT | || | A-CG-T Score=4 ACCGGT || | | AC-G-T Score=4 >>> |
بایوپایتون همچنین ماژول Align را برای همترازسازی توالی فراهم می کند. این ماژول مجموعه ای متفاوت از API را فراهم می کند تا به سادگی تنظیم پارامتر مانند الگوریتم، حالت، نمره مطابقت، جزیمه پرش و غیره انجام شود ، یک نگاه ساده به شی Align به شرح زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
>>> from Bio import Align >>> aligner = Align.PairwiseAligner() >>> print(aligner) Pairwise sequence aligner with parameters match score: 1.000000 mismatch score: 0.000000 target open gap score: 0.000000 target extend gap score: 0.000000 target left open gap score: 0.000000 target left extend gap score: 0.000000 target right open gap score: 0.000000 target right extend gap score: 0.000000 query open gap score: 0.000000 query extend gap score: 0.000000 query left open gap score: 0.000000 query left extend gap score: 0.000000 query right open gap score: 0.000000 query right extend gap score: 0.000000 mode: global >>> |
پشتیبانی از ابزارهای همترازسازی توالی
بایوپایتون از طریق ماژول Bio.Align.Applications رابط کاربری بسیاری از ابزارهای همترازسازی توالی را فراهم می کند. برخی از ابزارها در زیر ذکر شده است –
- ClustalW
- MUSCLE
- EMBOSS needle and water
بیایید یک مثال ساده در بایوپایتون بنویسیم تا هم راستایی توالی را از طریق محبوب ترین ابزار همترازسازی توالی، یعنی ClustalW ایجاد کنیم.
مرحله 1 – برنامه Clustalw را از http://www.clustal.org/download/current/ دانبود کنید و آن را نصب کنید. همچنین، PATH سیستم را با مسیر نصب “clustal” به روز کنید.
مرحله 2 – ClustalwCommanLine را از ماژول Bio.Align.Applications وارد کنید.
1 |
>>> from Bio.Align.Applications import ClustalwCommandline |
مرحله 3 – cmd را با فراخوانی ClustalwCommanLine با فایل ورودی، opuntia.fasta موجود در پکیج بایوپایتون تنظیم کنید. https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/opuntia.fasta
1 2 3 4 |
>>> cmd = ClustalwCommandline("clustalw2", infile="/path/to/biopython/sample/opuntia.fasta") >>> print(cmd) clustalw2 -infile=fasta/opuntia.fasta |
مرحله 4 – با فراخوانی ()cmd دستور clustalw را اجرا می کند و از خروجی فایل هم تراز سازی شده، opuntia.aln ، یک خروجی می دهد.
1 |
>>> stdout, stderr = cmd() |
مرحله 5 – فایل هم تراز سازی را به صورت زیر بخوانید و چاپ کنید –
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
>>> from Bio import AlignIO >>> align = AlignIO.read("/path/to/biopython/sample/opuntia.aln", "clustal") >>> print(align) SingleLetterAlphabet() alignment with 7 rows and 906 columns TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA gi|6273285|gb|AF191659.1|AF191 TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA gi|6273284|gb|AF191658.1|AF191 TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA gi|6273287|gb|AF191661.1|AF191 TATACATAAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA gi|6273286|gb|AF191660.1|AF191 TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA gi|6273290|gb|AF191664.1|AF191 TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA gi|6273289|gb|AF191663.1|AF191 TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA gi|6273291|gb|AF191665.1|AF191 >>> |
لیست جلسات قبل آموزش برنامه نویسی بایوپایتون
- آموزش برنامه نویسی بایوپایتون (Biopython)
- معرفی برنامه نویسی بایوپایتون
- آموزش نصب بایوپایتون
- ایجاد یک برنامه ساده در برنامه نویسی بایوپایتون
- آموزش دنباله در برنامه نویسی بایوپایتون
- عملیات توالی پیشرفته در برنامه نویسی بایوپایتون
- آموزش توالی ورودی/خروجی در برنامه نویسی بایوپایتون
دیدگاه شما