Wednesday, July 23, 2008

Linux loadable kernel modules (LKM)

vietnamized ^_^ and note-taking version of Linux Loadable Kernel Module HOWTO

1. Lời nói đầu

2. Giới thiệu Linux loadable kernel modules

Khi muốn bổ sung code vào một linux kernel, phương thức cơ bản nhất là đưa các file source vào source tree của kernel và biên tập lại (recompile) kernel. Và thực chất, quá trình cấu hình kernel chủ yếu là việc lựa chọn những file source để biên tập.

Có một cách khác để bổ sung code vào linux kernel trong quá trình vận hành. Một bộ code được bổ sung theo cách này được gọi là loadable kernel module. Các module này có thể có nhiều chức năng, thông thường rơi vào 1 trong 3 dạng: (1) driver thiết bị, (2) driver filesystem, (3) lệnh hệ thống (system calls). Một số chức năng nhất định (bao gồm các chức năng trên) được kernel tách biệt nhằm tránh sự đan cài phức tạp của chúng đối với những phần khác trong kernel.

2.1 Thuật ngữ

Loadable kernel module thường được gọi tắt là kernel module, hay module. Tuy nhiên, những cách gọi này rất dễ gây nhầm lẫn vì có rất rất nhiều dạng gói phần mềm cũng được gọi là module.

Một nhầm lẫn phổ biến về LKM là cho rằng đó là một phần riêng biệt nằm bên ngoài kernel và giao tiếp với kernel khi cần thiết. Tuy nhiên, LKM, khi được load lên, thực sự là một phần của kernel. Cách gọi chính xác cho phần kernel gắn kết với image khi boot (tức là toàn bộ kernel, trừ các LKM) là kernel cơ sở (base kernel), và LKM giao tiếp với kernel cơ sở.

Trong một số HĐH khác, khái niệm tương đương với LKM của linux là phần mở rộng kernel.

Vậy thì 'linux' là gì? Linux là tên gọi cho 2 khu vực rất khác nhau:
1. kernel và các yếu tố liên quan được phân phối dưới dạng một gói phần mềm, bởi Linux Torvald.
2. hệ thống các hệ điều hành dựa trên linux kernel

Trong phạm vi đang được nói đến, linux cần được hiểu theo nghĩa thứ 1. Mặc dù LKM luôn là một phần của kernel, LKM không nhất thiết là linux. Chẳng hạn, nếu kernel của bạn được bổ sung bằng một LKM driver đi kèm thiết bị, đó là một kernel linux được điều chỉnh chút đỉnh.

2.2. Lịch sử của LKM

LKM chỉ xuất hiện từ Linux 1.2 (1995). Những LKM ngày nay ban đầu cũng là một phần của kernel cơ sở.

Các driver thiết bị (hay đại loại vậy) luôn là các phần rời rạc. Khi khái niệm LKM được phát minh, người ta chỉ cần điều chỉnh chút ít để biến các thành phần rời rạc này thành những LKM thực sự. Tuy nhiên, công việc này cũng mất khá nhiều thời gian vì cần phải thực hiện trên từng thành phần một. Từ khoảng năm 2000 trở đi, hầu như mọi thứ có thể chuyển thành LKM đều có thêm lựa chọn LKM cho người dùng.

2.3. Khi nào cần LKM?

Người dùng thường có nhiều lựa chọn giữa việc gắn kết một thành phần rời vào kernel cơ sở hoặc dưới dạng LKM. LKM có rất nhiều ưu điểm so với việc gắn chết một thành phần vào kernel cơ sở, và thường luôn được lựa chọn bất cứ khi nào có thể.

Với LKM, bạn không cần xây dựng lại kernel quá thường xuyên, tiết kiệm thời gian và hạn chế khá nhiều sai sót trong giai đoạn tái xây dựng và cài đặt lại kernel cơ sở. Một khi đã có một kernel cơ sở tốt, bạn nên để nó yên càng lâu càng tốt.

Một lợi điểm khác của LKM là chúng giúp bạn chẩn đoán các trục trặc của hệ thống. Khi có lỗi (chẳng hạn do một driver thiết bị) trong kernel cơ sở, toàn bộ hệ thống sẽ ngưng hoạt động, không thể boot được, và bạn cũng không thể biết thành phần nào trong kernel cơ sở gây ra vấn đề. Tuy nhiên, nếu driver đó nằm trong một LKM, kernel cơ sở vẫn có thể chạy và chỉ gặp vấn đề khi load lên LKM bị lỗi.

LKM cũng giúp tiết kiệm tài nguyên nhớ, vì chúng chỉ được gọi khi thực sự cần thiết. Tất cả các thành phần của kernel cơ sở phải sẵn sàng trong mọi lúc, và phải nằm trong vùng nhớ thực, không phải vùng nhớ ảo.

LKM giúp cho việc bảo trì và sửa sai được nhanh chóng. Để có hiệu lực, các thay đổi trên một filesystem driver nằm trong kernel cơ sở yêu cầu toàn bộ hệ thống phải khởi động lại. Với LKM của filesystem driver đó, chỉ cần vài dòng lệnh để thay đổi, và không cần khởi động lại toàn hệ thống để xem hiệu quả những thay đổi đó.

LKM không chậm hơn các module trong kernel cơ sở. Việc gọi lên một LKM chỉ đơn giản là trỏ đến vị trí của LKM đó trên bộ nhớ.

Dĩ nhiên bạn buộc phải đưa một số module vào kernel cơ sở. Đó là những thành phần giúp cho hệ thống hoạt động được cho đến lúc có thể gọi ra LKM, ví dụ như driver của ổ đĩa chứa roort filesystem.

2.4. LKM không thể làm gì?

Có một xu hướng cho rằng LKM cũng giống như các chương trình người dùng. Thật sự chúng có nhiều điểm chung, nhưng LKM hoàn toàn không phải là chương trình người dùng, mà là một phần của kernel, có thể hoạt động khá tự do trong hệ thống, và do đó, cũng rất dễ làm sụp đổ hệ thống.

2.5. LKM được sử dụng trong trường hợp nào?

Có 6 lĩnh vực chính sử dụng LKM:
* Driver thiết bị. MỘt driver thiết bị được thiết kế cho một thành phần phần cứng cụ thể. Kernel sử dụng chúng đề giao tiếp với thành phần phần cứng đó mà không cần biết rõ cách thức phần cứng hoạt động. Ví dụ: driver cho ổ đĩa ATA, driver cho card mạng Ethernet tương thích với NE2000... Để sử dụng một thiết bị bất kì, kernel phải chứa driver của thiết bị đó.

* Filesystem driver. Một filesystem driver phiên dịch nội dung của filesystem (điển hình là nội dung của một ổ đĩa) thành file, thư mục hay các đơn vị quản lý đại loại như vậy. Có rất nhiều cách lưu trữ file và thư mục trên ổ đĩa, trên server, ... Với mỗi cách lưu trữ, cần có một filesystem driver.

* Lệnh hệ thống. Các chương trình trong khu vực người dùng sử dụng các lệnh hệ thống để gọi lên các dịch vụ cần thiết từ kernel. Hầu hết các lệnh hệ thống được tích hợp trong hệ thống và khá chuẩn mực, nên luôn được gắn vào kernel cơ sở. Nhưng nếu bạn tự tạo ra những lệnh hệ thống mới, hoặc muốn thay đổi một số cách thức hoạt động của linux và muốn đè lên các lệnh hệ thống sẵn có, bạn có thể cài đặt chúng vào kernel dưới dạng LKM.

* TTY line disciplines. Về cơ bản, đây là các hình thức nâng cao chất lượng (???) của driver cho các thiết bị đầu cuối (terminal device)

* Các trình phiên dịch có thể thi hành. Một trình phiên dịch có thể thi hành gọi lên và thi hành lệnh. Linux được thiết kế để có thể thi hành các lệnh dưới nhiều dạng khác nhau, và mỗi dạng cần có trình phiên dịch tương ứng.

Thursday, July 10, 2008

Developing bioinformatics computer skills - 10.6

Dịch từ 'Developing bioinformatics computer skills'

10.6 Dự đoán cấu trúc 3D

Như đã đề cập, dự đoán cấu trúc protein từ trình tự là một vấn đề phức tạp, và chưa có một phương pháp nào thoả mãn tất cả các thông số. Tuy nhiên, có một số công cụ có thể dùng dự đoán cấu trúc không gian. Những công cụ này được chia làm 2 loại: mô hình tương đồng (homology modeling) và dự đoán ab-initio.

10.6.1 Mô hình tương đồng

Khi có một trình tự protein (trình tự mục tiêu dùng để xác định cấu trúc), thực hiện sắp gióng cột trình tự này với một trình tự khác đã biết cấu trúc. Nếu có độ tương tự cao giữa 2 trình tự, ta có thể dùng cấu trúc đã biết trên như một khuôn mẫu cho trình tự mục tiêu, với độ tin cậy nhất định.
Có một quá trình chuẩn được sử dụng chung trong các chương trình dự đoán bằng mô hình tương đồng, gồm các bước:
  1. Sử dụng trình tự mục tiêu làm trình tự truy vấn để tìm các cấu trúc protein đã biết
  2. Sắp gióng cột toàn trình tự (và tối ưu) trình tự mục tiêu với (một hay nhiều) trình tự dùng làm khuôn mẫu
  3. Xây dựng khung sườn protein, sử dụng khung sườn của protein khuôn mẫu làm mô hình.
  4. Trong các vùng có gap (trên trình tự mục tiêu hay trình tự khuôn mẫu), sử dụng các thủ tục loop-modeling để thay thế các đoạn vói chiều dài thích hợp.
  5. Thêm chuỗi bên vào khung sườn
  6. Tối ưu hoá vị trí của các chuỗi bên
  7. Tối ưu hoá cấu trúc, sử dụng phương pháp cực tiểu năng lượng và các phương pháp tối ưu hoá bằng lý thuyết

Chìa khoá thành công trong một dự đoán với phương pháp này thường không nằm ở phần mềm hay server sử dụng, mà chủ yếu là ở kỹ năng của người dùng trong việc thiết kế một sắp gióng cột tốt, trong đó có thể kết hợp các phương pháp sắp gióng cột chuẩn, phương pháp profile, và các kỹ thuật so sánh cấu trúc (ví dụ ở cuối chương). Một khi đã có được sắp gióng cột tốt, ta có thể sử dụng nhiều chương trình để khai thác thông tin đó và xây dựng mô hình cấu trúc.

10.6.1.1 Modeller

Modeller (http://salilab.org/modeller/download_installation.html) là một chương trình sử dụng mô hình tương đồng không có giao diện đồ họa. Với mỗi hệ điều hành đều có nhiều file khác nhau đáp ứng các yêu cầu mô hình protein khác nhau (đọc README để biết giới hạn của từng file về tống số nguyên tử, tổng số amino acid và tổng số trình tự cho đầu vào sắp gióng cột)

Đầu vào cho Modeller gồm 2 file: 1 file sắp gióng cột và 1 Modeller script. Định dạng của file sắp gióng cột được nêu tả chi tiết trong trang hướng dẫn của Modeller. Modeller script cho một sắp gióng cột đơn giản chỉ gồm vài dòng viết bằng ngôn ngữ TOP (Modeller's internal language).

Modeller có thể tính toán ra nhiều mô hình cho một đầu vào bất kỳ. Nếu giá trị của ENDING_MODEL (xem script ví dụ) lớn hơn 1, sẽ có nhiều mô hình được phát sinh. Việc phát sinh nhiều mô hình thường được ưa chuộng hơn. Với các mô hình được phát sinh, người ta có thể đánh giá chúng một cách độc lập và chọn ra kết quả tối ưu.


Ví dụ dưới đây được cung cấp trong tài liệu hướng dẫn kèm theo của chương trình, cho thấy cách thiết lập cho một kết quả sắp gióng cột (đã xuất thành file) giữa trình tự mục tiêu với một trình tự đã biết.


INCLUDE # sử dụng các hàm TOP đã định nghĩa
SET ALNFILE = 'alignment.ali' # tên file chứa kết quả sắp gióng cột
SET KNOWNS = '5fd1' # mã của các trình tự khuôn mẫu
SET SEQUENCE = '1fdx' # mã của trình tự mục tiêu
SET ATOMS_FILES_DIRECTORY = './:../atom_files' # thư mục chứa file atom đầu vào
SET STARTING_MODEL = 1 # index của mô hình đầu tiên
SET ENDING_MODEL = 1 # index của mô hình cuối cùng ( => quyết định số lượng mô hình sẽ tính toán)
CALL_ROUTINE = 'model' # thực hiện tính toán với mô hình tương đồng

Modeller được thực thi bằng lệnh mod tên_script

Modeller có nhiều chức năng và có sẵn các lệnh hỗ trợ việc tạo file đầu vào.

SEQUENCE_SEARCH tìm các trình tự tương tự trong cơ sở dữ liệu các cấu trúc đại diện fold

MALIGN3D sắp gióng 2 hay nhiều cấu trúcALIGN sắp gióng 2 khối trình tự

CHECK_ALIGNMENT đánh giá một kết quả sắp gióng cột dùng cho việc xây dựng mô hình

COMPARE_SEQUENCES chấm điểm các trình tự trong sắp gióng cột dựa trên mức độ giống nhau từng đôi một

SUPERPOSE xếp chồng một mô hình lên một cấu trúc khuôn mẫu

ENERGY tính toán và báo cáo cá vi phạm về mặt năng lượng trong mô hình đã xây dựng

Các lệnh cần được thực thi thông qua một file script. (tham khảo thêm trong tài liệu hướng dẫn của Modeller)

Một điều cần lưu ý trong việc tính toán bằng mô hình tương đồng là vị trí các phân tử của chuỗi bên có thể không được chính xác, vì phương pháp này chủ yếu đưa ra dự đoán khung sườn protein với độ tin cậy chấp nhận được, mà không cung cấp thông tin về định hướng của chuỗi bên. Do đó, nhiệm vụ chính của các chương trình xây dựng mô hình là tránh các xung đột về mặt lập thể và các cấu trạng bất thường (thay vì tối ưu hoá định hướng của chuỗi bên). Định hướng chuỗi bên sai có thể dẫn đến sai lầm trong nghiên cứu cơ chế chức năng của protein.

10.6.1.2 Cách cây dựng mô hình của Modeller

Mặc dù Modeller chứa các công cụ cần thiết cho việc sắp goíng cột trình tự và tìm kiếm trên cơ sở dữ liệu, điểm bắt đầu thực sự của chương trình là một kết quả sắp gióng cột đa trình tự giữa trình tự mục tiêu và (các) trình tự khuôn mẫu.

Modeller sử dụng các cấu trúc khuôn mẫu để phát sinh một loạt các giới hạn về không gian để áp lên trình tự mục tiêu. Giới hạn cũng có thể áp dụng với góc liên kết và các cặp góc nhị diện. Bằng cách áp đặt những giới hạn này, Modeller có thể giảm số lượng các cấu trạng cho phép của mô hình.

Các giới hạn thực chất là dựa trên các phân tích thống kê về sự khác biệt giữa từng cặp trong các cấu trúc tương đồng, mô tả một cách định lượng mức độ khác biệt giữa các cấu trúc tương đồng về tính đa dạng. Ví dụ, lượng sai khác cho phép giữa khoảng cách tương đương Calpha-Calpha được biểu thị bằng PDF (probaility density function, hàm mật độ xác suất).

Việc sử dụng các giá trị tới hạn dựa trên PDF cho phép chúng ta xây dựng một cấu trúc không hoàn toàn giống như cấu trúc khuôn mẫu, mà là một cấu trúc có sự sai biệt với cấu trúc khuôn mẫu trong giới hạn cho phép, và phải nằm trong giới hạn khác biệt giữa những protein tương đồng đã biết cấu trúc. Ví dụ, nếu một góc nhị diện trong khuôn mẫu có giá trị là 60o +- 5o, thì giá trị tới hạn dựa trên PDF phải cho phép các giá trị trong khoảng 55 - 65. Giá trị tới hạn này được xác định thông qua phân tích trên các cặp cấu trúc tương đồng đã biết. (chỗ này cần coi thêm và giải thích lại)

Giới hạn không gian dựa trên mô hình tương đồng không phải là giới hạn duy nhất được áp đặt lên mô hình, mà còn có trường lực nhằm đảm bảo các điều kiện hợp lý trong hoá học lập thể (để các mô hình được xây dựng không vi phạm các định luật hoá học). Tất cả cac1 giới hạn hoá học và giới hạn không gian được phối hợp trong một hàm (gọi là hàm objective). Hàm này được tối ưu hoá trong quá trình cây dựng mô hình.

10.6.1.3 ModBase - cơ sở dữ liệu các mô hình phát sinh tự động

Các tác giả phát triển Modeller đã đưa lên một CSDL trực tuyến chứa các mô hình tương đồng được chú thích. Các mô hình này được chuẩn bị bằng cách sử dụng pipeline dư đoán tự 9dộng hoá. Bước đầu tiên của pipeline là so sánh từng trình tự protein chưa biết với một CSDL các cấu trúc đã có. Protein có sự tương đồng trình tự đáng kể so với các cấu trúc (hay domain) đã biết sẽ được mô hình hoá với khuôn mẫu là các cấu trúc đó. Trình tự chưa biết được sắp gióng với trình tự đã biết bằng ALIGN2D (một lệnh của Modeller), và cấu trúc 3D được xây dựng bằng chương trình Modeller. Bước cuối cùng trong pipeline là đánh giá mô hình. Kết quả đánh giá sẽ được trình bày cho người dùng đồng thời với kết quả truy vấn. Vì đây là thủ tục chuẩn để xây dựng mô hình bằng phương pháp này, bạn nên kiểm tra Modbase trước khi bắt tay xây dựng một mô hình theo yêu cầu của riêng mình.Thủ tục chung trong xây dựng mô hình với Modeller là xác định sự tương đồng giữa trình tự mục tiêu và các protein đã biết, thực hiện sắp gióng cột đa trình tự các cấu trúc đã biết để tạo cấu trúc khuôn, áp dụng các thuật giải Modeller lên trình tự mục tiêu.Mô hình có thể được đánh giá bằng các phương pháp đánh giá cấu trúc chuẩn.

10.6.1.4 Server SWISS-MODEL

SWISS-MODEL là một web server cung cấp dịch vụ xây dựng mô hình tương đồng tự động đặt tại Viện Tin - Sinh học Thụy Sĩ. SWISS-MODEL nhận một trình tự đưa lên và tự động trả về một cấu trúc. Các thủ tục tự động trong SWISS-MODEL cũng tương tự như các bước chuẩn trong một project homology modeling:

Sử dụng BLAST để tìm các trình tự đã biết cấu trúc trong CSDL cấu trúc

Chọn khuôn mẫu, tìm các domain có thể được

Developing bioinformatics computer skills - 10.5.5

Dịch từ 'Developing bioinformatics computer skills', một số chỗ không giữ nguyên bản


10.5.5 Dự đoán các cấu trúc xoắn xuyên màng

Dự đóan xoắn xuyên màng liên quan đến dự đóan cấu trúc bậc 2, ở chỗ nhận diện các vùng trên trình tự protein cho phép chèn xuyên qua màng tế bào. Các phương pháp dự đoán xoắn xuyên màng từ trình tự protein tập trung vào việc xác định các trình tự (1) có thể gấp cuộn thành cấu trúc xoắn alpha và (2) có thể tồn tại trong môi trường kị nước. Dự đóan xoắn xuyên màng xuất phát từ nghiên cứu tính kị nước vào đầu những năm 1980, tiên phong bởi Russell Doolittle (UCSD). Một số server cho phép dự đoán xoắn xuyên màng hiện sẵn có trên web (TMHMM server 2.0 http://www.cbs.dtu.dk/services/TMHMM/, MEMSAT http://saier-144-37.ucsd.edu/memsat.html), đồng thời cũng có các chương trình chạy độc lập trên client tương ứng.

TopPred (http://www.sbc.su.se/~erikw/toppred2/) được giới thiệu trong nguyên bản hiện không còn hoạt động, mà đã được thay bằng phiên bản mới http://mobyle.pasteur.fr/cgi-bin/MobylePortal/portal.py?form=toppred

Việc xác định cấu trúc đối vối các protein tan đã khó, xác định cấu trúc của các protein liên kết màng còn khó khăn hơn. Rất nhiều quá trình sinh học thú vị liên quan đến protein xuyên màng, chẳng hạn như quang hợp, thị giác, hưng phấn thần kinh, hô hấp, đáp ứng miễn dịch, sự truyền tín hiệu từ tế bào sang tế bào. Tuy nhiên, chỉ có một số ít protein xuyên màng đã được tinh thể hóa. Vì những protein này không tồn tại hòan tòan trong dung dịch lỏng, tính chất lý hóa của chúng rất khác so với các protein tan, do đó chúng đòi hỏi những điều kiện tinh thể hoá đặc biệt (trong trường hợp thật sự CÓ THỂ tinh thể hóa).

Với những khó khăn đó, rất nhìều chương trình máy tính đã xuất hiện nhằm mục đích dò tìm trên trình tự protein để phát hiện các đọan xuyên màng. Nhờ các đặc tính khá nổi bật của chúng, chương trình có thể dò thấy với độ chính xác chấp nhận được. (1) Để có thể chèn xuyên qua màng, xoắn alpha phải có chiều dài khỏang 17-25 amino acid. (2) Vì phần bên trong của màng đựơc cấu tạo từ những chuỗi hydrocarbon dài của acid béo, xoắn alpha nằm trong vùng này phải có bề mặt tương đối không phân cực để đáp ứng các yêu cầu về năng lượng.

Vào thời kì đầu, các chương trình tìm đoạn xuyên màng khai thác những vấn đề này một cách trực tiếp bằng cách phân tích từng khung (window) gồm 17-25 amino acid và chấm điểm kị nước (hydrophobicity score) cho mỗi khung; các phân đọan có điểm cao được dự đoán là những xoắn xuyên màng. Các cải tiến gần đây đối với những phương pháp sơ khai này đã nâng độ chính xác của phương pháp lên đến 90 - 95 %.

Một vấn đề nữa là việc dự đoán hình học topo của protein bên trong màng. Định hướng của xoắn đầu tiên trong màng sẽ quyết định sự định hướng của toàn bộ các xoắn còn lại. Đoạn nối giữa các xoắn alpha có thể được phân làm 2 loại: phía màng trong và phía màng ngoài. Việc dự đoán các đoạn nối này nằm ở phía nào khá phức tạp về sinh lý.

10.5.6 Threading

Nguyên lý cơ bản của phân tích cấu trúc bằng threading là: một trình tự aminoacid bất kì được áp vào một loạt các cấu trúc 3D khác nhau để đánh giá độ vừa vặn của trình tự này trong các cấu trúc đó. Tất cà các phương pháp threading đều hoạt động trên cơ sở này và có thể khác nhau ở vài chi tiết.

Threading không xây dựng một mô hình protein được tinh chỉnh với tất cả các nguyên tử. Thay vào đó, threading thay thế các vị trí amino acid trên một cấu trúc đã biết bằng các amino acid từ một trình tự (chưa rõ cấu trúc). Mỗi một vị trí (chuỗi bên) trong protein đã gấp cuộn được mô tả thông qua môi trường mà chúng tiếp xúc: chuỗi bên đó tiếp xúc với dung môi ở mức độ nào, hoặc nếu không tiếp xúc với dung môi thì chuỗi bên đó tiếp xúc với những amino acid nào khác? Mô hình được chấm điểm cao nếu các thành phần kị nước được đặt vào vị trí không tiếp xúc với dung môi và các thành phần ưa nước được tìm thấy trên bề mặt protein. Đồng thời, mô hình chỉ có thể đạt điểm cao nếu các điện tích nằm sâu bên trong phân tử và các thành phần phân cực có các điện tích đối lập hay các liên kết hydro tương ứng.


Threading được sử dụng có lợi nhất trong việc nhận diện fold (thay vì xây dựng mô hình). Với mục đích này, UCLA-DOE Structure Prediction Server (http://www.doe-mbi.ucla.edu/people/frsur/frsur.html) hiện là công cụ dễ dử dụng nhất.

* Bỏ qua phần giới thiệu các công cụ này, có thể tìm hiểu trực tiếp trên website

Hầu hết các phương pháp threading đều được xem là phương pháp thực nghiệm, và những phương pháp mới không ngừng được phát triển. Có thể sử dụng đồng thời nhiều phương pháp để nhận diện một trình tự chưa biết, với kết quả cuối cùng là sự thống nhất (lấy consensus) của nhiều kết quả thu được. Điều chủ yếu cần nhớ khi xây dựng bất kì một mô hình cấu trúc nào bằng threading là mô hình sẽ có thể thiếu các chi tiết về nguyên tử, và kết quả sắp gióng cột mà chúng dựa vào ít nhiều thiếu chính xác. Phương pháp threading được thiết kế để đánh giá liệu một trình tự có thể khớp với một fold nào đó hay không, chứ không phải để xây dựng mô hình. Kết quả sắp gióng cột cấu trúc phát sinh bởi các server threading có thể dùng làm cơ sở cho phương pháp mô hình tương đồng (homology modelling), nhưng cần được kiểm tra kĩ và chỉnh sửa trước khi xây dựng một mô hình hoàn chỉnh với toàn bộ nguyên tử (all-atom model).