Hướng dẫn what is sequence alignment in python? - căn chỉnh trình tự trong python là gì?
Quay trở lại blog Show Bởi John Lekberg vào ngày 25 tháng 10 năm 2020. Bài đăng tuần này là về việc giải quyết vấn đề "liên kết trình tự". Bạn sẽ học:
Báo cáo vấn đềNhư đầu vào, bạn được cung cấp hai chuỗi. Ví dụ.sequences. E.g.
(Các chuỗi có thể là chuỗi hoặc các mảng dữ liệu khác.) Là đầu ra, mục tiêu của bạn là tạo ra một sự liên kết, kết hợp các yếu tố của chuỗi. Ví dụ.alignment, which pairs up elements of the sequence. E.g.
Một sự liên kết có thể có khoảng trống. Ví dụ.
Mặc dù căn chỉnh có thể có khoảng trống, nó không thể thay đổi thứ tự tương đối của các yếu tố chuỗi. Ví dụ. "CT" không thể được thay đổi thành "TC". Cụ thể, mục tiêu của bạn là tạo ra một sự liên kết với điểm tối đa. Đây là cách tính điểm số:maximal score. Here's how to calculate the score:
Ví dụ. Sự liên kết này có số điểm -1:
Nhưng sự liên kết này có số điểm +1:
Vì vậy, mục tiêu của bạn là thực hiện hai chuỗi và tìm sự liên kết với điểm tối đa.sequences and find an alignment with maximal score. Cách tôi đại diện cho dữ liệu của vấn đềĐối với đầu vào, tôi đại diện cho các chuỗi dưới dạng chuỗi hoặc danh sách. Ví dụ. Tôi có thể đại diện cho chuỗi "con mèo" nhưsequences as strings or lists. E.g. I can represent the sequence "CAT" as
hoặc như
Thực sự, bất cứ điều gì thực hiện bộ sưu tập.abc.singence (không chỉ chuỗi và danh sách) sẽ hoạt động. Đối với đầu ra, tôi đại diện cho một căn chỉnh như một danh sách các bộ dữ liệu của các chỉ số (hoặc không có, nếu có một khoảng cách.) Sự liên kết này:alignment as a list of tuples of indices (or None, if there is a gap.) E.g. this alignment:
sẽ được đại diện là
Và sự liên kết này:
sẽ được đại diện là Và sự liên kết này:C - C A - T T - 0Tạo ra một giải pháp vũ lực Tôi thích bắt đầu với các giải pháp vũ lực khi tôi làm việc về các vấn đề. Các giải pháp vũ lực có xu hướng đơn giản hơn để thực hiện và, khá thường xuyên, giải pháp vũ lực là "đủ tốt" cho các đầu vào thực tế sẽ gặp phải. 1Tôi bắt đầu bằng cách tạo một hàm có hai phạm vi chỉ mục và lặp lại tất cả các sắp xếp có thể có: . 2 3Ví dụ. Dưới đây là tất cả các sự sắp xếp có thể của "CAT" và "CT": 4 5Đây là một dạng dễ đọc hơn của đầu ra: ("-" Cho biết khoảng cách) 6Tiếp theo, tôi tạo một hàm có hai chuỗi và căn chỉnh để tạo ra một điểm số:
Hãy xem xét sự liên kết này: 8 9Đây là một ví dụ về tính toán điểm số: 0Với hai chức năng này - 0 và 1 - Giải pháp vũ lực sẽ tìm kiếm tất cả các sắp xếp để tìm một người có điểm tối đa:1 03 4(Mã này sử dụng: functools.partial, Max.)
Tính toán điểm căn chỉnh cần thời gian tuyến tính theo kích thước của cả hai chuỗi: O (N & NBSP;+& NBSP; M).
O (D (N, M) × (N + M))Tạo một giải pháp hiệu quả hơn Giải pháp vũ phu rất đơn giản, nhưng nó không quy mô tốt. Trong thực tế, căn chỉnh trình tự được sử dụng để phân tích chuỗi dữ liệu sinh học (ví dụ: trình tự axit nucleic). Cho rằng kích thước của các chuỗi này có thể dài hàng trăm hoặc hàng ngàn yếu tố, không có cách nào mà giải pháp vũ phu sẽ hoạt động cho dữ liệu có kích thước đó. Năm 1970, Saul B. Needman và Christian D. Wunsch đã tạo ra một thuật toán nhanh hơn để giải quyết vấn đề này: Thuật toán Needman-Wunsch. . Vấn đề căn chỉnh trình tự trong thời gian O (Mn). 2. 3 0Và vì vậy, thuật toán nhanh hơn sẽ đơn giản gọi 2:5 07 4Độ phức tạp của thời gian của giải pháp này là gì? Đối với hai chuỗi các yếu tố N và M:
Kết quả là, độ phức tạp thời gian tổng thể của thuật toán là
Tóm lại là...Trong bài viết tuần này, bạn đã học được cách giải quyết vấn đề "liên kết trình tự". Bạn đã học cách tạo ra một giải pháp vũ lực tạo ra mọi sự liên kết có thể. Sau đó, bạn đã học được rằng lực lượng vũ phu là không khả thi cho các chuỗi lớn hơn: hai chuỗi 10 phần tử có hơn 8.000.000 sự sắp xếp khác nhau! Cuối cùng, bạn đã học được cách thực hiện lại thuật toán Needman-Wunsch trong Python. Thử thách của tôi với bạn:
Nếu bạn thích bài đăng trong tuần này, hãy chia sẻ nó với bạn bè của bạn và theo dõi bài đăng vào tuần tới. Gặp bạn sau! (Nếu bạn phát hiện ra bất kỳ lỗi hoặc lỗi chính tả nào trên bài đăng này, liên hệ với tôi qua trang liên hệ của tôi.) Căn chỉnh trình tự là gì?Căn chỉnh trình tự là quá trình so sánh và phát hiện sự tương đồng giữa các chuỗi sinh học.Những gì tương tự của người Viking đang được phát hiện sẽ phụ thuộc vào các mục tiêu của quá trình căn chỉnh cụ thể.Căn chỉnh trình tự dường như cực kỳ hữu ích trong một số ứng dụng tin sinh học.the process of comparing and detecting similarities between biological sequences. What “similarities” are being detected will depend on the goals of the particular alignment process. Sequence alignment appears to be extremely useful in a number of bioinformatics applications.
Làm cách nào để sắp xếp hai chuỗi Python?Vì vậy, mục tiêu của bạn là thực hiện hai chuỗi và tìm sự liên kết với điểm số tối đa ... Nếu có khoảng cách, thì điểm -= 1 .. Nếu không, nếu các phần tử giống nhau, thì điểm += 1 .. Nếu không, nếu các yếu tố khác nhau, thì điểm -= 1 .. Công cụ căn chỉnh trình tự nào?Cobalt là một công cụ căn chỉnh nhiều chuỗi tìm thấy một tập hợp các ràng buộc cặp có nguồn gốc từ cơ sở dữ liệu miền được bảo tồn, cơ sở dữ liệu mô-đun protein và độ tương tự trình tự, sử dụng RPS-blast, blastp và Phi-blast. is a multiple sequence alignment tool that finds a collection of pairwise constraints derived from conserved domain database, protein motif database, and sequence similarity, using RPS-BLAST, BLASTP, and PHI-BLAST. |