Gói sinh học python

Vì sinh học phân tử đang tạo ra ngày càng nhiều dữ liệu về trình tự và cấu trúc nên vô số phần mềm để phân tích dữ liệu này cũng đang tăng lên. Hầu hết các chương trình được tạo cho một nhiệm vụ cụ thể, do đó người dùng thường cần kết hợp nhiều chương trình để đạt được mục tiêu. Điều này có thể làm cho việc xử lý dữ liệu trở nên khó xử lý, không linh hoạt và thậm chí không hiệu quả do quá nhiều thao tác đọc/ghi. Do đó, điều quan trọng là phải có một khung sinh học tính toán toàn diện, dễ tiếp cận và hiệu quả bằng ngôn ngữ kịch bản để khắc phục những hạn chế này

Kết quả

Chúng tôi đã phát triển gói Python Biotite . một khung sinh học tính toán chung, đại diện cho dữ liệu trình tự và cấu trúc dựa trên NumPy ndarrays. Hơn nữa, gói chứa các giao diện liền mạch với cơ sở dữ liệu sinh học và phần mềm bên ngoài. Mã nguồn có thể truy cập miễn phí tại https. //github. com/biotite-dev/biotite.

kết luận

Biotite đang thống nhất theo hai cách. Lúc đầu, nó kết hợp các nhiệm vụ phổ biến trong phân tích trình tự và tin sinh học cấu trúc trong một gói có cấu trúc nhất quán. Thứ hai, nó giải quyết hai nhóm người dùng. các lập trình viên mới làm quen có thể dễ dàng truy cập vào Biotite do tính đơn giản và tài liệu đầy đủ của nó. Mặt khác, người dùng nâng cao có thể thu lợi từ hiệu suất cao và khả năng mở rộng của nó. Họ có thể triển khai các thuật toán của mình trên Biotite , vì vậy họ có thể bỏ qua việc viết mã cho chức năng chung (như trình phân tích cú pháp tệp) và có thể tập trung vào những gì phần mềm của họ tạo nên sự độc đáo.

Lý lịch

Sinh học ngày càng dựa trên dữ liệu nhiều hơn, với số lượng trình tự bộ gen và cấu trúc phân tử sinh học ngày càng tăng. Để tận dụng dữ liệu này, vô số phần mềm đã được phát triển trong những năm gần đây. Hầu hết các chương trình này đều có mục đích rất cụ thể, như căn chỉnh trình tự hoặc chú thích cấu trúc thứ cấp cho cấu trúc protein. Thông thường các chương trình này được sử dụng thông qua dòng lệnh; . Nhiệm vụ của người dùng là chuyển đổi dữ liệu quan tâm của họ sang định dạng đầu vào dành riêng cho phần mềm và phân tích cú pháp đầu ra được tạo. Đầu ra này có thể là kết quả cuối cùng hoặc dùng làm đầu vào cho chương trình tiếp theo. Tùy thuộc vào mức độ phức tạp của câu hỏi ban đầu của người dùng, quy trình này có thể quá không linh hoạt và quá khó để có thể thực hiện được. Hơn nữa, việc đọc, ghi và chuyển đổi tệp có thể mang lại chi phí đáng kể, làm tăng thời gian tính toán

Những vấn đề này có thể được giải quyết bằng cách chuyển quy trình công việc từ cách tiếp cận dựa trên tệp này sang ngôn ngữ kịch bản. Ở đây, dữ liệu chỉ cần được tải một lần và phân tích tiếp theo được thực hiện dựa trên biểu diễn dữ liệu bên trong của khung, với sự linh hoạt hoàn toàn của ngôn ngữ lập trình. Một ngôn ngữ lập trình phù hợp cho việc này là Python . Nó có một cú pháp đơn giản và dễ học, nó được hỗ trợ rất nhiều bởi cộng đồng mã nguồn mở và khả năng giao diện mã C gốc đã khiến nó trở thành .

Công việc có liên quan

Có một số khung sinh học tính toán trong Python đã có sẵn. MDTraj [] và MDAnalysis [] là các công cụ để phân tích quỹ đạo từ . PyCogent [] và scikit-bio hỗ trợ phân tích (bộ gen) . Một khuôn khổ để làm việc với dữ liệu trình tự và cấu trúc được kết hợp là Biopython [], tuy nhiên, Python package mostly works as glue between different programs. The algorithms directly implemented in the Biopython bị hạn chế về phạm vi và hiệu quả.

Chúng tôi bắt đầu phát triển một khung sinh học phân tử điện toán toàn diện để phân tích dữ liệu trình tự và cấu trúc, trong đó hầu hết dữ liệu có thể được xử lý nội bộ mà không cần sử dụng phần mềm bổ sung. Do đó, chúng tôi giới thiệu Biotite , gói mã nguồn mở Python , có thể xử lý .

Thực hiện

Biotite được chia thành bốn gói con. trình tự và cấu trúc cung cấp các công cụ để xử lý trình tự hoặc cấu trúc phân tử sinh học, tương ứng. cơ sở dữ liệu được sử dụng để tìm nạp tệp từ cơ sở dữ liệu sinh học và ứng dụng cung cấp giao diện cho phần mềm bên ngoài.

Vì hiệu suất tính toán là một trong những mục tiêu trọng tâm của dự án Biotite nên gói sử dụng rất nhiều . Trong trường hợp không thể thực hiện được, mã nguồn thường được viết bằng [], in places where vectorization is applicable. In cases, where this is not possible, the source code is usually written in Cython [], dẫn đến hiệu suất có thể so sánh được với C code.

Gói con trình tự

Trình tự là đối tượng quan trọng trong tin sinh học. Ngoài những trình tự cổ điển, trình tự nucleotide và protein, còn có những trình tự ví dụ mô tả cấu trúc protein [–] hoặc dược điển []

Để giải thích cho các loại trình tự đặc biệt này, Biotite có hiểu biết rất rộng về trình tự. Các ký hiệu trong một chuỗi không giới hạn ở các ký tự đơn lẻ (e. g. 'A','C','G' và 'T'), nhưng mọi đối tượng Python bất biến và có thể băm đều có thể là một ký hiệu, miễn là . Một bảng chữ cái đại diện cho tập hợp các ký hiệu được phép trong chuỗi.

Trong thực tế, một trình tự được đại diện bởi một phiên bản Trình tự . Khi tạo Trình tự , mỗi ký hiệu được mã hóa thành một giá trị số nguyên không dấu (mã ký hiệu) bằng cách sử dụng Bảng chữ cáiBảng chữ cái . ). Mã ký hiệu c của ký hiệu s là chỉ mục của s trong danh sách ký hiệu của phiên bản Bảng chữ cái . ). Mã ký hiệu c của ký hiệu s là chỉ mục của s trong danh sách ký hiệu của phiên bản Bảng chữ cái . ). Mã ký hiệu c của ký hiệu s là chỉ mục của s trong danh sách ký hiệu của phiên bản Bảng chữ cái . ). Mã ký hiệu c của ký hiệu s là chỉ mục của s trong danh sách ký hiệu của phiên bản Bảng chữ cái . ). Mã ký hiệu c của ký hiệu s là chỉ mục của s trong danh sách ký hiệu của phiên bản Bảng chữ cái . ). Mã ký hiệu c của ký hiệu s là chỉ mục của s trong danh sách ký hiệu của phiên bản Bảng chữ cái . ). Mã ký hiệu c của ký hiệu s là chỉ mục của s trong danh sách ký hiệu của phiên bản instance of the Sequence (Fig. ). The symbol code c of a symbol s is the index of s in the symbol list of the Bảng chữ cái . Cuối cùng, mã ký hiệu được lưu trữ trong NumPyndarray của Trình tự . Số byte trên mỗi mã ký hiệu trong object. The number of bytes per symbol code in the ndarray được điều chỉnh cho phù hợp với số lượng ký hiệu khác nhau trong bảng chữ cái. Do đó, có thể sử dụng bảng chữ cái với hơn 256 ký hiệu khác nhau điển hình cho ánh xạ hướng byte được sử dụng theo cách truyền thống.

Quả sung. 1

Gói sinh học python

Biểu diễn trình tự bên trong của biotit. Đối tượng Sequence lấy ký hiệu làm tham số đầu vào. Mỗi ký hiệu được mã hóa thành mã ký hiệu của nó, sử dụng Trình tự bảng chữ cái dành riêng cho lớp. Mã kết quả sau đó được lưu trữ dưới dạng NumPyndarray trong Trình tựTrình tựTrình tựTrình tựTrình tựTrình tựTrình tựTrình tự object

Hình ảnh kích thước đầy đủ

Cách làm này có nhiều ưu điểm

  • Nhiều biểu tượng có thể có hơn (chuỗi nhiều ký tự, số, bộ dữ liệu, v.v. )

  • Hầu hết các hoạt động (tìm kiếm, sắp xếp, v.v.). ) dựa vào mã ký hiệu và do đó độc lập với loại trình tự thực tế

  • Các hoạt động được vector hóa giúp tăng hiệu suất

  • Mã biểu tượng là chỉ số trực tiếp cho ma trận thay thế trong sắp xếp (được thảo luận bên dưới)

Trình tự nucleotide và protein

Trình tự NucleotideTrình tự Protein là trình tự chuyên biệt subclasses that offer common operations for nucleotide and protein sequences (Fig. ).

Quả sung. 2

Gói sinh học python

Ví dụ mã cho việc sử dụng Biotite. Lưu ý rằng các ví dụ được rút ngắn. Thiếu câu lệnh nhập và AtomArray . a Sáng tạo và thuộc tính của Trình tự Nucleotide và bản dịch của nó thành Trình tự Protein . b Liên kết toàn cầu của hai phiên bản Trình tự nucleotide . c Lọc AtomArray bằng mặt nạ boolean

Hình ảnh kích thước đầy đủ

Biotite cung cấp khả năng đọc và ghi cho định dạng FASTA, do đó các tệp FASTA có thể được sử dụng để tải và lưu các chuỗi nucleotide và protein.

căn chỉnh

Biotite cung cấp chức năng sắp xếp trình tự theo cặp [] toàn cầu và [] cục bộ với cả hình phạt khoảng cách tuyến tính và affine [] bằng cách sử dụng lập trình động. Biotite không sử dụng nguyên tắc chia để trị phức tạp hơn [], do đó, cả thời gian tính toán và không gian bộ nhớ đều tỷ lệ tuyến tính với độ dài của hai trình tự được căn chỉnh. Để căn chỉnh hai đối tượng Sequence , cần có phiên bản SubstitutionMatrix . Các đối tượng này bao gồm hai phiên bản Bảng chữ cái , phải khớp với các bảng chữ cái của các chuỗi đã căn chỉnh và một ma trận điểm, được triển khai dưới dạng 2 chiều ndarray. The similarity score of two symbols with symbol code m and n, respectively, is the value of the score matrix at position [m,n]. This simple indexing operation renders the retrieval of similarity scores highly efficient. In order to decrease the computation time of alignments even more, the underlying dynamic programming algorithm is implemented in Cython .

Đối với Ma trận thay thế tùy chỉnh, cả hai bảng chữ cái đều có thể được chọn tự do. Đầu tiên, điều này ngụ ý rằng việc sắp xếp không phụ thuộc vào loại trình tự và thứ hai là ngay cả các loại trình tự không bằng nhau cũng có thể được căn chỉnh. Một ứng dụng khả thi cho việc sắp xếp các loại trình tự khác nhau là kiểm tra tính tương thích của trình tự protein với cấu trúc protein nhất định []. Ngoài các phiên bản Ma trận thay thế tùy chỉnh, tất cả các ma trận thay thế NCBI tiêu chuẩn (BLOSUM, PAM, v.v. ) và ma trận BLOSUM đã sửa [] có thể được tải.

Sắp xếp trong Biotite trả về Sắp xếp phiên bản. Các đối tượng này lưu trữ dấu vết của các chuỗi được căn chỉnh, tôi. e. các chỉ số của các ký hiệu được căn chỉnh trong các đối tượng Trình tự ban đầu (-1 cho các khoảng trống) (Hình. ).

tính năng trình tự

Các tính năng trình tự mô tả các phần chức năng của trình tự, ví dụ như trình khởi động hoặc vùng mã hóa. Chúng bao gồm một phím tính năng (e. g. quy định hoặc CDS), một hoặc nhiều vị trí trên trình tự tham chiếu và từ hạn định mô tả chi tiết tính năng. Một định dạng phổ biến để lưu trữ các tính năng trình tự là định dạng GenBank dựa trên văn bản. Biotite cung cấp trình phân tích cú pháp tệp GenBank để chuyển đổi bảng tính năng thành Python .

trực quan

Biotite có thể tạo trực quan hóa liên quan đến trình tự dựa trên matplotlib [] số liệu. Do đó, việc trực quan hóa có thể sử dụng các chương trình phụ trợ matplotlib khác nhau. Nó có thể được hiển thị trên màn hình, được lưu vào các tệp ở các định dạng đồ họa raster và vector khác nhau hoặc được nhúng trong các ứng dụng khác. Lớp cơ sở cho tất cả các trực quan hóa là lớp Trực quan hóa . Các lớp con của nó cung cấp chức năng trực quan hóa cho sự sắp xếp, biểu trưng trình tự và chú thích trình tự. Ví dụ về trực quan hóa căn chỉnh, được tạo bằng lớp AlignmentSimilarityVisualizer , được hiển thị trong Hình.  . Các ví dụ trực quan khác có sẵn trong thư viện mẫu của tài liệu Biotite (Tệp bổ sung ).

Quả sung. 3

Gói sinh học python

Trực quan hóa căn chỉnh trình tự ví dụ. Sự liên kết của trình tự avidin (Accession. CAC34569) với trình tự streptavidin (Access. ACL82594) được hiển thị bằng cách sử dụng AlignmentSimilarityVisualizer

Hình ảnh kích thước đầy đủ

Gói con cấu trúc

Đơn vị cơ bản nhất để biểu diễn cấu trúc phân tử sinh học là lớp Nguyên tử . Một phiên bản Atom chứa thông tin về tọa độ nguyên tử có độ dài ba ndarray . ). Toàn bộ cấu trúc, bao gồm nhiều nguyên tử, được biểu diễn bằng một Mảng nguyên tử . Thay vì lưu trữ các đối tượng Atom trong danh sách, một phương pháp hiệu quả hơn nhiều đã được sử dụng. Mỗi danh mục chú thích được lưu dưới dạng độ dài n ndarray (mảng chú thích) và tọa độ được lưu dưới dạng (n ×3) ndarray for a structure with n atoms. In some cases the atoms in a structure have multiple coordinates, representing different locations, for example in NMR elucidated structures or in trajectories from molecular dynamics simulations. AtomArrayStack instances represent such multi-model structures. In contrast to an AtomArray , an AtomArrayStack has a (m ×n ×3) coordinate ndarray for a structure with n atoms and m models.

Only in a few cases the user will work with single Atom objects. Usually AtomArray and AtomArrayStack instances are used, which enable vectorized (and hence computationally efficient) operations. The atom coordinates and annotation arrays can be simply accessed by calling the corresponding attribute. Furthermore, these objects behave similar to NumPyndarray objects in respect of indexing. An AtomArray or AtomArrayStack can be indexed like an one or two-dimensional ndarray , respectively, with integers, slices, index arrays or boolean masks. Thus, annotation arrays in conjunction with boolean masks provide a convenient way of filtering a structure, in contrast to the text based selections used in MDAnalysis and MDTraj (Fig.  ).

The structure subpackage can be used to measure distances, angles and dihedral angles, between single atoms, atom arrays, atom array stacks or a combination of them. The broadcasting rules of NumPy apply here.

Implemented algorithms

Beside geometric measurements, Biotite offers more complex algorithms for structure analysis. atom-wise accessible surface area calculation (based on the Shrake-Rupley algorithm []), structure superimposition (based on the Kabsch algorithm []) and secondary structure assignment (based on the P-SEA algorithm []) are available. Furthermore, the root-mean-square deviation (RMSD) and fluctuation (RMSF) can be calculated. Currently, the analysis tools focus on protein structures, but specialized functions for structure analysis of nucleic acids are planned for future versions.

Reading and writing structure files

AtomArray and AtomArrayStack instances can be loaded from and saved to multiple different file formats. The most basic one is the PDB format, from which only the ATOM and HETATM records are parsed. An alternative is the modern PDBx/mmCIF format that provides additional information on a structure. Using Biotite , each category in a PDBx/mmCIF file can be converted into a Python dictionary object.

Biotite is also capable of parsing files in the recently published binary MMTF format []. This format features a small file size and short parsing times. Instead of relying on the MMTF parser provided by the RCSB (package mmtf-python ), Biotite implements an efficient MMTF decoder and encoder written in Cython . Additionally, the conversion from MMTF’s hierarchical data model (chain, residue, atom) into a BiotiteAtomArray or AtomArrayStack is also C -accelerated.

If MDTraj is installed, Biotite is also able to load GROMACS [] trajectory files (trr, xtc, tng).

The database subpackage

This subpackage is used to download files from the RCSB PDB and NCBI Entrez web server via HTTP requests. Furthermore the RCSB PDB SEARCH service is supported

The application subpackage

In this subpackage Biotite offers interfaces to external software, including NCBI BLAST [], MUSCLE [], MAFFT [], Clustal-Omega [] and DSSP []. These interfaces wrap the execution of the respective program on the local machine, or use the HTTP-based API (application programming interface) in case of NCBI BLAST. The execution is seamless. Biotite objects, like Sequence or AtomArray are taken as input, and the output (e. g. an alignment) is returned. Viết/đọc các tập tin đầu vào/đầu ra được xử lý nội bộ.

Giao diện ứng dụng kế thừa từ lớp cha Ứng dụng . Mỗi Ứng dụng có vòng đời, dựa trên các trạng thái của ứng dụng (Hình. ). Sau khi tạo, quá trình thực thi Ứng dụng được bắt đầu bằng cách sử dụng start() method. After calling the join() , kết quả có thể truy cập được. Nếu quá trình thực thi chưa kết thúc sau đó, mã Python sẽ đợi cho đến khi quá trình thực thi hoàn tất. Cách tiếp cận này bắt chước hành vi của một chủ đề bổ sung. Giữa câu lệnh start()join() , các thao tác khác có thể .

Quả sung. 4

Gói sinh học python

Vòng đời của một ứng dụng. Sau khi tạo, đối tượng Application ở trạng thái CREATED. Khi người dùng gọi start() , Ứng dụng chuyển sang trạng thái CHẠY. Khi quá trình thực thi kết thúc, trạng thái chuyển thành FINISHED. Kết quả thực thi có thể truy cập được bằng cách gọi join() , thay đổi trạng thái thành JOINED. Nếu Ứng dụng vẫn ở trạng thái CHẠY thì nó sẽ liên tục được kiểm tra xem quá trình thực thi đã kết thúc chưa. Việc thực thi có thể bị hủy bằng phương thức cancel() , sau đó là Ứng dụng ends up in the CANCELLED state. This life cycle is equal in all Ứng dụng , nhưng mỗi lớp con có triển khai riêng các phương thức cụ thể của ứng dụng, được gọi khi chuyển đổi trạng thái

Hình ảnh kích thước đầy đủ

Cân nhắc kỹ thuật phần mềm

Dự án Biotite nhằm mục đích tuân theo các hướng dẫn về thực hành lập trình tốt. API của gói được ghi lại đầy đủ để tối đa hóa khả năng sử dụng. Hơn nữa, tài liệu cung cấp một hướng dẫn và một bộ sưu tập ví dụ. Mã nguồn được kiểm tra đơn vị với độ bao phủ mã 72% (được tính thông qua gói pytest-cov ). Tuy nhiên, phạm vi thực tế lớn hơn vì các tệp Cython không được xem xét trong phép tính. Để đảm bảo rằng tất cả các nền tảng được hỗ trợ và các phiên bản Python được cung cấp phù hợp với các bản phát hành sắp tới, dự án sử dụng AppVeyor và Travis CI làm nền tảng tích hợp liên tục.

kết quả và thảo luận

Hiệu suất của các thuật toán phân tích đã triển khai

Để đánh giá khả năng của Biotite cho các phân tích quy mô lớn, hiệu suất của các nhiệm vụ phổ biến được so sánh với Biopython, MDAnalysis and MDTraj (Fig. ) (benchmark script in Additional file ). For structure related tasks the crystal structure of lysozyme was chosen (PDB: 1AKI [], 1001 atoms), for sequence alignment two 1,000 residues long polyalanine sequences were used. All benchmarks were started from the internal representation of a structure (AtomArray trong Biotite) or sequence (Sequence in Biotite), respectively.

Quả sung. 5

Gói sinh học python

So sánh hiệu suất cho các thuật toán phân tích. Thời gian tính toán để thực hiện các tác vụ phổ biến trên dữ liệu sinh học, bắt đầu từ biểu diễn cấu trúc hoặc trình tự bên trong tương ứng của gói. Lưu ý thang logarit. Hiệu suất giữa Biotite , Biopython , MDAnalysis, MDTraj and FreeSASA is shown. A missing bar indicates that the operation is not supported in the respective package. The average of 100 executions was taken. RMSD: Superimposition of a structure onto itself and subsequent RMSD calculation (PDB: 1AKI). Dihedral: Calculation of the backbone dihedral angles (ϕ, ψ, ω) of a protein (PDB: 1AKI). SASA: Calculation of the SASA of a protein (PDB: 1AKI). Align: Optimal global alignment of two 1,000 residues long polyalanine sequences

Hình ảnh kích thước đầy đủ

Một nhiệm vụ thông thường trong tin sinh học cấu trúc là chồng một cấu trúc lên một cấu trúc khác (thuật toán Kabsch []) và tính toán tiếp theo của RMSD. Trong trường hợp thử nghiệm này, cấu trúc của lysozyme được chồng lên chính nó. Biotite , MDrajMDAnalysis . So với điều đó, showed comparable computation time. Compared to that, Biopython chậm hơn rất nhiều do biểu diễn dữ liệu cơ bản cho các cấu trúc trong Biopython< . Do đó, dữ liệu cần phải được chuyển đổi tốn thời gian thành cấu trúc dữ liệu tương thích với , based on pure Python objects. In consequence the data needs to be time-costly converted into a C , trước khi áp dụng cấu trúc thực tế. Trường hợp này thường cản trở hiệu quả khi phân tích cấu trúc trong Biopython . Phân tích yêu cầu chuyển đổi tốn kém hoặc được triển khai bằng Python thuần túy. Trong các gói được đề cập khác, bao gồm Biotite , chức năng này có thể được thực thi trực tiếp trên ndarray objects. Although this case demonstrates the RMSD computation for a protein structure, Biotite cũng có thể thực hiện nhiệm vụ này cho cấu trúc của axit nucleic hoặc bất kỳ phân tử nào khác kể từ khi xếp chồng và RMSD .

Một trường hợp thử nghiệm khác là phép đo góc nhị diện (ϕ, ψ, ω) của các nguyên tử xương sống peptide trong cấu trúc lysozyme. Biotite yêu cầu khoảng một nửa thời gian tính toán so với MDTraj .

Việc tính toán diện tích bề mặt tiếp xúc với dung môi (SASA) tương đối tốn thời gian. Cả BiotiteMDTraj đều sử dụng triển khai Shrake-Rupley . Đối với điểm chuẩn này, SASA của cấu trúc lysozyme đã được tính toán, với 1000 điểm hình cầu trên mỗi nguyên tử. Phép đo cho thấy rằng Biotite nhanh hơn khoảng hai lần so với MDTraj . Một lợi ích khác của việc triển khai trong Biotite là khả năng sử dụng bán kính nguyên tử phù hợp với các cấu trúc thiếu nguyên tử hydro [] giống như hầu hết các cấu trúc được làm sáng tỏ bằng tia X. Ngoài ra, kết quả được so sánh với phương pháp Lee-Richards [] được triển khai trong gói tăng tốc C FreeSASA . Thuật toán này sử dụng các lát hình cầu thay vì các điểm hình cầu. Số lượng lát hình cầu đã được chọn sao cho độ chính xác bằng với các trường hợp thử nghiệm Shrake-Rupley (Tệp bổ sung và ). Tốc độ tính toán tương đương với Biotite .

Đối với dữ liệu trình tự, thao tác thường xuyên là căn chỉnh toàn cục tối ưu của hai trình tự bằng cách sử dụng lập trình động []. Cả BiotiteBiopython đều sử dụng C-acclerated function to solve this problem. However, Biotite thực hiện nhiệm vụ này nhanh hơn rất nhiều. Lý do chính cho điều này là bước truy nguyên, đó là C -được tăng tốc trong Biotite in contrast to Biopython. Moreover, Biotite sử dụng ma trận thay thế để chấm điểm sự liên kết, trong khi Biopython . Mặc dù Biopython cũng hỗ trợ ma trận thay thế trong sự sắp xếp, nhưng chúng dựa trên Python . Điều này đi kèm với hai nhược điểm liên quan đến hiệu suất tính toán. Lúc đầu, API Python chậm được gọi cho mọi ô trong ma trận căn chỉnh. Thứ hai, vì Biopython hoạt động trực tiếp với các ký hiệu, truy cập từ điển với một bộ ký hiệu tương đối tốn thời gian so với thao tác lập chỉ mục nhanh bằng các mã ký hiệu trong . Biotite.

Hiện tại, Biotite chỉ có thể tạo ra sự sắp xếp theo cặp bằng cách sử dụng thuật toán Needleman-Wunsch [] và Smith-Waterman [] tương ứng. Mặc dù các kỹ thuật này tạo ra sự sắp xếp tối ưu, nhưng việc tính toán có thể không khả thi đối với các trình tự lớn như toàn bộ bộ gen, vì thời gian tính toán và mức tiêu thụ bộ nhớ tỷ lệ tuyến tính với độ dài của cả hai trình tự. Do đó, các phương pháp căn chỉnh theo cặp heuristic phức tạp hơn sẽ được thêm vào gói trong các bản phát hành trong tương lai. Hiện tại, Biotite có thể thực hiện sắp xếp theo cặp heuristic nhanh bằng cách sử dụng giao diện NCBI BLAST [] trong gói con ứng dụng .

Hiệu suất của đầu vào và đầu ra tệp cấu trúc

Ngoài ra, thời gian tính toán để đọc và ghi các tệp cấu trúc ở các định dạng khác nhau được so sánh giữa Biotite , Biopython, MDAnalysis and MDTraj. The measured time is the time of loading a structure file (PDB: 2AVI [], 1952 atoms) into the internal representation of the package or saving this representation in a file, respectively. The results are shown in Fig.  (benchmark script in Additional file ).

Quả sung. 6

Gói sinh học python

So sánh hiệu suất đọc và ghi tệp cấu trúc. Thời gian tính toán để tải tệp vào biểu diễn cấu trúc bên trong tương ứng của gói (thanh đầy) và ngược lại (thanh gạch) được hiển thị. Hiệu suất được so sánh giữa Biotite , Biopython , MDAnalysis and MDTraj is shown. A missing bar indicates that the operation is not supported in the respective package. The structure of an avidin-biotin complex (PDB: 2AVI) was used for computation time measurement. The average of 100 executions was taken

Hình ảnh kích thước đầy đủ

Các tệp PDB được xử lý trong thời gian tương đương bởi BiotiteBiopython: While Biotite đọc tệp PDB nhanh hơn nhưng Biopython có lợi thế hơn trong . MDAnalysis rất chậm đối với đầu ra, MDTraj chậm trong PDB .

Định dạng PDBx/mmCIF hiện đại chỉ được hỗ trợ bởi BiopythonBiotite, while Biopython only supports file parsing, whose performance is comparable to Biotite.

Định dạng MMTF nhị phân cho thấy hiệu suất vượt trội khi kết hợp với Biotite , với thời gian tải là 3. 7 ms và thời gian tiết kiệm là 2. 6 mili giây. Tốc độ phân tích cú pháp cao hơn nhiều so với trong BiopythonMDTraj . Có lẽ có hai lý do cho việc này. Biotite cung cấp bộ giải mã/mã hóa MMTF riêng, có hiệu suất cao hơn so với bộ giải mã chính thức của RCSB, do quá trình giải mã/mã hóa hoàn chỉnh hoặc được vector hóa . Hơn nữa, việc chuyển đổi các mảng đã giải mã từ tệp MMTF thành C code. Furthermore, the conversion of the decoded arrays from the MMTF file into an AtomArray (hoặc AtomArrayStack) and vice versa is accelerated via Cython code. Therefore, MMTF is the preferable format when the user wants to analyze a large amount of structure files with Biotite . Đáng chú ý, theo hiểu biết của chúng tôi BiotitePython framework duy nhất có thể .

chi tiết điểm chuẩn

Các điểm chuẩn được trình bày đã được chạy trên Intel®; . 20 GHz. Hệ điều hành là Xubfox 16. 04 và phiên bản CPython 3. 6. 3. Các gói đã sử dụng có các phiên bản sau

  • biotit 0. 7. 0

  • Cython 0. 26. 1

  • numpy 1. 13. 3

  • matplotlib 2. 1. 2

  • msgpack 0. 5. 6

  • yêu cầu 2. 18. 4

  • trăn sinh học 1. 70

  • Phân tích MDA 0. 17. 0

  • mdtraj 1. 9. 1

  • freesasa 2. 0. 3

Trung bình 100 lần thực thi được thực hiện cho mỗi điểm chuẩn

Phần kết luận

Do nội dung toàn diện của Biotite , phần lớn quy trình sinh học phân tử tính toán có thể được thực hiện với gói này. Dữ liệu quan tâm có thể được tải xuống từ cơ sở dữ liệu sinh học và sau đó được tải vào môi trường Python . Sau khi phân tích hoặc thao tác dữ liệu trình tự hoặc cấu trúc, nó có thể được lưu ở các định dạng tệp khác nhau hoặc được hiển thị bằng các khả năng hiển thị đi kèm. Trong trường hợp chức năng cần thiết không được tích hợp trực tiếp trong gói, Biotite cung cấp phương tiện để giao tiếp với phần mềm bên ngoài một cách liền mạch.

Theo hiểu biết của chúng tôi, khung sinh học phân tử điện toán duy nhất trong Python có thể thực hiện chức năng này ở mức độ tương tự, là Biopython. However, due to the high age of Biopython đã có tuổi đời cao nên gói này không đáp ứng các tiêu chuẩn đã thiết lập về lập trình khoa học trong Python< . Do đó, , especially the usage of NumPy. Therefore, Biotite có thể được coi là một giải pháp thay thế hiệu quả.

Chúng tôi nghĩ rằng Biotite phù hợp để các lập trình viên mới sử dụng, vì phần hướng dẫn mở rộng và các ví dụ về mã cung cấp phần giới thiệu tốt về gói. Hơn nữa, cú pháp giống như NumPy cung cấp một cách trực quan để làm việc với dữ liệu sinh học.

Ngoài ra, người dùng nâng cao được hưởng lợi từ hiệu suất tốt, có được từ việc vector hóa thông qua NumPy . Các thuật toán tùy chỉnh có thể được triển khai dễ dàng dựa trên các biểu diễn bên trong của dữ liệu cấu trúc và trình tự. Nếu nhà phát triển quyết định xây dựng phần mềm trên -acceleration. The fact, that the internal ndarray nội bộ, tạo nên Biotite package extensible. Custom algorithms can be easily implemented based on the internal representations of sequence and structure data. If a developer decides to build software upon Biotite , thì họ có thể sử dụng các công cụ phân tích và trình phân tích tệp đã triển khai. Do đó sự phát triển có thể tập trung vào các tính năng độc đáo của phần mềm.

Biotite không ngừng được phát triển. Các công cụ phân tích cấu trúc axit nucleic, phương pháp căn chỉnh trình tự heuristic và giao diện cho nhiều cơ sở dữ liệu sinh học hơn dự kiến ​​sẽ được bổ sung trong các phiên bản tương lai. Yêu cầu tính năng, báo cáo lỗi, câu hỏi và phát triển nói chung được xử lý tại https. //github. com/biotite-dev/biotite.

Sẵn có và yêu cầu

Tên dự án. biotit

Trang chủ dự án. https. //www. biotit-trăn. tổ chức/

Các hệ điều hành). Windows, hệ điều hành X, Linux

Ngôn ngữ lập trình. con trăn

Những yêu cầu khác. Ít nhất Python 3. 4, các gói numpy, requests và msgpack phải được cài đặt

Giấy phép. BSD 3-Khoản

Bất kỳ hạn chế nào đối với việc sử dụng của những người không phải là học giả. Không có

Các từ viết tắt

API

Giao diện lập trình ứng dụng

BĂNG ĐĨA

Mã hóa trình tự DNA

NMR

Hưởng từ hạt nhân

RMSD

Độ lệch gốc-trung bình-bình phương

RMSF

Biến động gốc-trung bình-bình phương

SASA

Diện tích bề mặt dung môi có thể tiếp cận

Người giới thiệu

  1. McGibbon RT, Beauchamp KA, Harrigan MP, Klein C, Swails JM, Hernández CX, Schwantes CR, Wang LP, Lane TJ, Pande VS. MDTraj. Một thư viện mở hiện đại để phân tích quỹ đạo động học phân tử. sinh lý J. 2015; . 1528–32. https. // doi. tổ chức/10. 1016/j. bpj. 2015. 08. 015

    Bài viết  CAS  Google Scholar

  2. Michaud-Agrawal N, Denning EJ, Woolf TB, Beckstein O. Phân tích MDA. Bộ công cụ để phân tích mô phỏng động lực học phân tử. J Máy Tính Hóa Học. 2011; . 2319–27. https. // doi. tổ chức/10. 1002/jcc. 21787

    Bài viết  CAS  Google Scholar

  3. Knight R, Maxwell P, Birmingham A, Carnes J, Caporaso JG, Easton BC, Eaton M, Hamady M, Lindsay H, Liu Z, Lozupone C, McDonald D, Robeson M, Sammut R, Smit S, Wakefield MJ, Widmann J . PyCogent. Một bộ công cụ để hiểu ý nghĩa của trình tự. bộ gen sinh học. 2007; . https. // doi. tổ chức/10. 1186/gb-2007-8-8-r171

    Bài báo  Google Scholar

  4. Cock PJ, Antao T, Chang JT, Chapman BA, Cox CJ, Dalke A, Friedberg I, Hamelryck T, Kauff F, Wilczynski B, de Hoon MJ. Trăn sinh học. các công cụ Python có sẵn miễn phí cho sinh học phân tử tính toán và tin sinh học. tin sinh học. 2009; . 1422–3. https. //doi. tổ chức/10. 1093/tin sinh học/btp163

    Bài viết  CAS  Google Scholar

  5. Van Der Walt S, Colbert SC, Varoquaux G. Mảng NumPy. A structure for efficient numerical computation. khoa học máy tính. 2011; 13(2). 22–30. https. //doi. tổ chức/10. 1109/MCSE. 2011. 37

    Bài báo  Google Scholar

  6. Behnel S, Bradshaw R, Citro C, Dalcin L, Seljebotn DS, Smith K. Cython. The best of both worlds. Comput Sci Eng. 2011; 13(2). 31–9. https. //doi. org/10. 1109/MCSE. 2010. 118

    Bài báo  Google Scholar

  7. Bowie J, Luthy R, Eisenberg D. A method to identify protein sequences that fold into a known three-dimensional structure. Science. 1991; 253(5016). 164–70. https. //doi. org/10. 1126/science. 1853201

    Bài viết  CAS  Google Scholar

  8. Joseph AP, Agarwal G, Mahajan S, Gelly JC, Swapna LS, Offmann B, Cadet F, Bornot A, Tyagi M, Valadié H, Schneider B, Etchebest C, Srinivasan N, de Brevern AG. A short survey on protein blocks. Biophys Rev. 2010; . 137–45. https. //doi. tổ chức/10. 1007/s12551-010-0036-1

    Bài viết  CAS  Google Scholar

  9. Kolodny R, Koehl P, Guibas L, Levitt M. Các thư viện nhỏ của các đoạn protein mô hình cấu trúc protein tự nhiên một cách chính xác. J Mol sinh học. 2002; . 297–307. https. //doi. tổ chức/10. 1016/S0022-2836(02)00942-7

    Bài viết  CAS  Google Scholar

  10. Hähnke V, Hofmann B, Grgat T, Proschak E, Steinhilber D, Schneider G. PHAST. Công cụ tìm kiếm căn chỉnh dược điển. J Máy Tính Hóa Học. 2009; . 761–71. https. // doi. tổ chức/10. 1002/jcc. 21095

    Bài báo  Google Scholar

  11. Needleman SB, Wunsch CD. Một phương pháp chung có thể áp dụng để tìm kiếm sự giống nhau trong trình tự axit amin của hai protein. J Mol sinh học. 1970; . 443–53. https. //doi. tổ chức/10. 1016/0022-2836(70)90057-4

    Bài viết  CAS  Google Scholar

  12. Smith TF, Waterman MS. Xác định các phân tử phổ biến. J Mol sinh học. 1981; . 195–7. https. // doi. tổ chức/10. 1016/0022-2836(81)90087-5

    Bài viết  CAS  Google Scholar

  13. Gotoh O. Một thuật toán cải tiến để so khớp trình tự sinh học. J Mol sinh học. 1982; . 705–8. https. // doi. tổ chức/10. 1016/0022-2836(82)90398-9

    Bài viết  CAS  Google Scholar

  14. DS Hirschberg. Thuật toán không gian tuyến tính để tính dãy con chung cực đại. ACM chung. 1975; . 341–3. https. // doi. tổ chức/10. 1145/360825. 360861

    Bài báo  Google Scholar

  15. Hess M, Keul F, Goesele M, Hamacher K. Giải quyết những điểm không chính xác trong tính toán BLOSUM giúp cải thiện hiệu suất tìm kiếm tương đồng. Thông tin sinh học BMC. 2016; . https. // doi. tổ chức/10. 1186/s12859-016-1060-3

  16. Thợ săn JD. Matplotlib. Môi trường đồ họa 2D. khoa học máy tính. 2007; . https. //doi. tổ chức/10. 1109/MCSE. 2007. 55. 0402594v30402594v3

    Bài báo  Google Scholar

  17. Shrake A, Rupley JA. Môi trường và sự tiếp xúc với dung môi của các nguyên tử protein. Lysozyme và insulin. J Mol sinh học. 1973; . 351–64. https. // doi. tổ chức/10. 1016/0022-2836(73)90011-9

    Bài viết  CAS  Google Scholar

  18. Kabsch Nữ. Một giải pháp cho phép quay tốt nhất để liên kết hai bộ vectơ. Acta Crystallogr Sect A. 1976; . 922–3. https. //doi. tổ chức/10. 1107/S0567739476001873

    Bài báo  Google Scholar

  19. Labesse G, Colloc'h N, Pothier J, Mornon JP. P-SEA. một sự phân bổ hiệu quả mới của cấu trúc thứ cấp từ dấu vết C alpha của protein. Khoa học ứng dụng máy tính. 1997; . 291–5. https. //doi. tổ chức/10. 1093/tin sinh học/13. 3. 291

    CAS  PubMed  Google Scholar

  20. Bradley AR, Rose AS, Pavelka A, Valasatava Y, Duarte JM, Prlić A, Rose PW. MMTF—Một định dạng tệp hiệu quả để truyền, trực quan hóa và phân tích cấu trúc đại phân tử. Máy tính PLoS Biol. 2017; . https. //doi. tổ chức/10. 1371/tạp chí. pcbi. 1005575

    Bài báo  Google Scholar

  21. Abraham MJ, Murtola T, Schulz R, Páll S, Smith JC, Hess B, Lindah E. Gromac. Mô phỏng phân tử hiệu suất cao thông qua tính song song đa cấp từ máy tính xách tay đến siêu máy tính. Phần mềmX. 2015; . 19–25. https. //doi. tổ chức/10. 1016/j. mềmx. 2015. 06. 001

    Bài báo  Google Scholar

  22. Altschul SF, Gish W, Miller W, Myers EW, Lipman DJ. Công cụ Tìm kiếm Đối chiếu Nội bộ Cơ bản. J Mol sinh học. 1990; . 403–10. https. // doi. tổ chức/10. 1016/S0022-2836(05)80360-2

    Bài viết  CAS  Google Scholar

  23. Edgar RC. CƠ BẮP. Căn chỉnh nhiều chuỗi với độ chính xác cao và thông lượng cao. axit nucleic Res. 2004; . 1792–7. https. //doi. tổ chức/10. 1093/nar/gkh340

    Bài viết  CAS  Google Scholar

  24. Katoh K. MAFFT. một phương pháp mới để căn chỉnh nhiều chuỗi nhanh chóng dựa trên biến đổi Fourier nhanh. axit nucleic Res. 2002; . 3059–66. https. //doi. tổ chức/10. 1093/nar/gkf436

    Bài viết  CAS  Google Scholar

  25. Sievers F, Wilm A, Dineen D, Gibson TJ, Karplus K, Li W, Lopez R, McWilliam H, Remmert M, Söding J, Thompson JD, Higgins DG. Tạo nhanh, có thể mở rộng quy mô sắp xếp nhiều trình tự protein chất lượng cao bằng cách sử dụng Clustal Omega. Hệ thống phân tử sinh học. 2011; . https. // doi. tổ chức/10. 1038/msb. 2011. 75

    Bài báo  Google Scholar

  26. Kabsch W, Sander C. Từ điển cấu trúc bậc hai của protein. Nhận dạng mẫu của các đặc điểm hình học và liên kết hydro. polyme sinh học. 1983; . 2577–637. https. // doi. tổ chức/10. 1002/bíp. 360221211

    Bài viết  CAS  Google Scholar

  27. Artymiuk PJ, Blake CCF, Rice DW, Wilson KS. Cấu trúc của các dạng đơn tà và trực thoi của lysozyme lòng trắng trứng gà ở độ phân giải 6 Angstroms. Acta Crystallogr Sect B. 1982; . 778–83. https. //doi. tổ chức/10. 1107/S0567740882004075

    Bài báo  Google Scholar

  28. Tsai J, Taylor R, Chothia C, Gerstein M. The packing density in proteins. Standard radii and volumes. J Mol Biol. 1999; 290(1). 253–66. https. //doi. org/10. 1006/jmbi. 1999. 2829

    Bài viết  CAS  Google Scholar

  29. Lee B, Richards FM. Giải thích cấu trúc protein. Estimation of static accessibility. J Mol sinh học. 1971; . https. //doi. tổ chức/10. 1016/0022-2836(71)90324-X

    Bài viết  CAS  Google Scholar

  30. Livnah O, Bayer EA, Wilchek M, Sussman JL. Cấu trúc ba chiều của avidin và phức hợp avidin-biotin. Proc Natl Acad Sci. 1993; . 5076–80. https. // doi. tổ chức/10. 1073/pnas. 90. 11. 5076

    Bài viết  CAS  Google Scholar

  31. Kunzmann P. Biotit 0. 7. 0 kho lưu trữ. 2018. Zenodo. https. // doi. tổ chức/10. 5281/zenodo. 1310668

Tải tài liệu tham khảo

Sự nhìn nhận

Daniel Bauer đồng hành cùng quá trình phát triển Biotite .

thông tin tác giả

Tác giả và Chi nhánh

  1. Khoa Sinh học Tính toán và Mô phỏng, TU Darmstadt, Schnittspahnstraße 2, Darmstadt, 64287, Đức

    Patrick Kunzmann & Kay Hamacher

tác giả

  1. Patrick Kunzmann

    Xem các ấn phẩm của tác giả

    Bạn cũng có thể tìm kiếm tác giả này trong PubMed   Google Scholar

  2. Kay Hamacher

    Xem các ấn phẩm của tác giả

    Bạn cũng có thể tìm kiếm tác giả này trong PubMed   Google Scholar

Đóng góp

PK đã phát triển gói Biotite và viết tài liệu của nó. KH hướng dẫn quá trình phát triển. PK và KH viết bản thảo. Cả hai tác giả đọc và phê duyệt bản thảo chính thức.

Đồng tác giả

Thư từ Patrick Kunzmann

tuyên bố đạo đức

Phê duyệt đạo đức và đồng ý tham gia

không áp dụng

Đồng ý xuất bản

không áp dụng

Lợi ích cạnh tranh

Nhiều tác giả tuyên bố rằng họ không có hứng thú với việc cạnh tranh

Ghi chú của nhà xuất bản

Springer Nature vẫn giữ thái độ trung lập đối với các tuyên bố về quyền tài phán trong các bản đồ đã xuất bản và các tổ chức liên kết

Thông tin thêm

Sự sẵn có của dữ liệu và tài liệu

Mã nguồn Biotite được lưu trữ tại https. //github. com/biotite-dev/biotite và tài liệu chính thức của nó tại https. //www. biotit-trăn. tổ chức/. Phiên bản 0. 7. 0, đã được sử dụng trong nghiên cứu này, có sẵn dưới dạng kho lưu trữ [] (Tệp bổ sung ).

Các tệp bổ sung

Tệp bổ sung 1

Tài liệu biotit. Kho lưu trữ này chứa tài liệu HTML của Biotite 0. 7. 0. Điểm vào mặc định là chỉ mục. html. (7Z 3453 KB)

Hồ sơ bổ sung 2

Điểm chuẩn hiệu suất phân tích. Tập lệnh Python này chứa điểm chuẩn để đánh giá hiệu suất của các thuật toán phân tích đã triển khai. (PY 6 KB)

Hồ sơ bổ sung 3

So sánh độ chính xác của SASA. Hình này so sánh độ chính xác của phép tính SASA tùy thuộc vào thời gian tính toán để triển khai thuật toán Shrake-Rupley trong Biotite và triển khai thuật toán Lee-Richards trong < . (PDF 200 KB) FreeSASA. (PDF 200 KB)

Hồ sơ bổ sung 4

So sánh độ chính xác của SASA - tập lệnh. Đây là tập lệnh Python tương ứng với Tệp bổ sung 3. (PY 4 KB)

Hồ sơ bổ sung 5

Điểm chuẩn hiệu suất đọc/ghi. Tập lệnh Python này chứa điểm chuẩn để đánh giá hiệu suất đọc/ghi tệp cấu trúc. (PY 8 KB)

Hồ sơ bổ sung 6

Ảnh chụp kho lưu trữ biotite. Kho lưu trữ này chứa ảnh chụp nhanh kho Biotite ở phiên bản 0. 7. 0. (7Z 6668 KB)

Quyền và quyền

Truy cập Mở Bài báo này được phân phối theo các điều khoản của Creative Commons Attribution 4. 0 Giấy phép quốc tế (http. //Commons sáng tạo. org/giấy phép/bởi/4. 0/), cho phép sử dụng, phân phối và sao chép không hạn chế ở bất kỳ phương tiện nào, miễn là bạn cung cấp tín dụng phù hợp cho (các) tác giả gốc và nguồn, cung cấp liên kết đến giấy phép Creative Commons và cho biết liệu các thay đổi có được thực hiện hay không. Miễn trừ dành riêng cho miền công cộng Creative Commons(http. //Commons sáng tạo. tổ chức/miền công cộng/không/1. 0/) áp dụng cho dữ liệu có sẵn trong bài viết này, trừ khi có quy định khác

In lại và Quyền

Về bài viết này

Verify currency and authenticity via CrossMark

Trích dẫn bài viết này

Kunzmann, P. , Hamacher, K. biotit. một khung sinh học tính toán mã nguồn mở thống nhất trong Python. Tin sinh học BMC 19, 346 (2018). https. //doi. tổ chức/10. 1186/s12859-018-2367-z

Gói sinh học trong Python là gì?

Biopython là một bộ công cụ có sẵn miễn phí để tính toán sinh học được viết bằng Python bởi một nhóm các nhà phát triển quốc tế . Đó là một nỗ lực hợp tác phân tán để phát triển các thư viện và ứng dụng Python đáp ứng nhu cầu của công việc hiện tại và tương lai trong tin sinh học.

Làm cách nào để cài đặt Biopython?

Biopython - Cài đặt .
Bước 1 - Xác minh cài đặt Python
Bước 2 - Cài đặt Biopython bằng pip
Bước 3 - Xác minh cài đặt Biopython
Cách thay thế - Cài đặt Biopython bằng Nguồn

Biopython có miễn phí không?

Tính khả dụng. Biopython được cung cấp miễn phí , với tài liệu và mã nguồn tại www. trăn sinh học. org theo giấy phép Biopython.

Làm cách nào để cài đặt Biopython trong Pip?

Hướng dẫn cài đặt .
pip cài đặt biopython
pip cài đặt biopython --upgrade
gỡ cài đặt pip biopython
python -m ensurepip
trăn3. 9 -m pip cài đặt biopython pypy -m pip cài đặt biopython
C. \Python39\Scripts\pip cài đặt biopython
xcode-select --install
thiết lập python. py xây dựng thiết lập python. py kiểm tra thiết lập python. cài đặt py