Tải bản đầy đủ (.pdf) (22 trang)

Thu thập nguồn gene và tổ chức dữ liệu gene 3.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (785.04 KB, 22 trang )

PHẦN B: TỔNG QUAN – Giới thiệu Bioinformatics – Vài công cụ
NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
31
II.3. Vài công cụ Bioinformatics hiện nay
Vì không có cách nào mô tả hết các công cụ có sẵn, dƣới đây chỉ trích một vài
công cụ phổ biến dùng trong phân tích trình tự sinh học.

II.3.1. Readseq
Readseq là một phần mềm cũ, ra đời từ năm 1989. Đƣợc phát triển bởi Don
Gilbert, chƣơng trình này đọc và viết trình tự nucleotide và protein sang nhiều định
dạng hữu dụng. Công cụ này đƣợc viết bằng ngôn ngữ Java.

II.3.2. BLAST
BLAST (Basic Local Alignment Search Tools) là công cụ đƣợc biết tốt nhất
trong phân tích trình tự. Nó so sánh hai trình tự bởi cố gắng gióng (align) chúng, và
cũng đƣợc dùng để tìm kiếm trình tự trong cơ sở dữ liệu. Thuật toán bắt đầu bởi tìm
kiếm sự so khớp chính xác, sau đó mở rộng vùng đã đƣợc gióng bởi những so khớp
không chính xác (mismatches).
 blastall cho phép sử dụng tất cả các chƣơng trình BLAST (blastn, blastp,
blastx, và tblastn). Bảng sau đây tóm tắt trình tự dùng truy vấn (Query sequence), trình
tự cơ sở dữ liệu (Database sequence), và loại gióng trình tự (Alignment sequence) đối
với lệnh BLAST khác nhau.
Program
Query
sequence type
Database
sequence type
Alignment
sequence type
blastn nucleotide Nucleotide nucleotide
blastp protein Protein protein


blastx nucleotide Protein protein
tblastn protein Nucleotide protein
tblastx nucleotide Nucleotide protein
Bảng 2.1: Bảng liệt kê một số chƣơng trình BLAST
 megablast sử dụng thuật toán gióng trình tự nucleotide tìm kiếm và nối nhiều
trình tự truy vấn để giảm thời gian quét (scanning) qua cơ sở dữ liệu.
PHẦN B: TỔNG QUAN – Giới thiệu Bioinformatics – Vài công cụ
NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
32
 blastpgp thực hiện blastp có khe (gap) và có thể đƣợc dùng để thực hiện lặp đi
lặp lại tìm kiếm ở chế độ psi-blast và phi-blast.
 PSI-BLAST (Position-Specific Iterated BLAST) là sự tìm kiếm lặp lại trong đó
các trình tự tìm thấy trong một vòng tìm kiếm đƣợc dùng để xây dựng mô hình tính
điểm cho vòng tìm kiếm kế tiếp.
 PHI-BLAST (Pattern-Hit Initiated BLAST) là chƣơng trình tìm kiếm kết hợp sự
so khớp của regular expression với sự gióng khu vực xung quanh sự so khớp.
 bl2seq (BLAST 2 Sequences) cho phép gióng trình tự hai trình tự đƣợc nhận.

II.3.3. BLAT
BLAT là công cụ gióng trình tự rất nhanh tƣơng tự nhƣ BLAST. Nó tƣơng đối
mới so với BLAST, nhƣng nó đã trở nên rất phổ biến. BLAT thì chính xác hơn và
nhanh hơn hàng trăm lần so với BLAST. Tốc độ của BLAT xuất phát từ thời gian chạy
các phần tử là các trình tự nhỏ không trùng lắp từ chiều dài đƣợc cho. Phần tử này đủ
nhỏ phù hợp với bộ nhớ máy tính và đƣợc tính toán điển hình chỉ một lần đối với mỗi
tập hợp genome. Jim Kent phát triển BLAT đặc biệt trợ giúp xử lý tập hợp bộ gene
trong quá trình làm việc với bộ gene ngƣời.

II.3.4. ClustalW
ClustalW là chƣơng trình gióng đa trình tự dùng cho trình tự nucleotide và trình
tự protein. Sự gióng có thể là toàn bộ (global) (toàn trình tự) hay khu vực (local) (giới

hạn đoạn trình tự con). ClustalW tính toán sự khớp tốt nhất cho trình tự đƣợc chọn lựa,
và sắp chúng thành hàng để xác định, những sự tƣơng đồng và sự khác biệt có thể
đƣợc thấy.

II.3.5. HMMER
HMMER là tập hợp các chƣơng trình tạo ra mô hình Markov ẩn (hidden Markov
model-HMM) của họ trình tự đƣợc dùng nhƣ trình tự truy vấn đối với cơ sở dữ liệu để
xác định thêm sự tƣơng đồng (homologs) của họ trình tự. HMMER đƣợc phát triển bởi
Sean Eddy tại đại học Washington.


PHẦN B: TỔNG QUAN – Giới thiệu Bioinformatics – Vài công cụ
NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
33

II.3.6. MEME/MAST
Hệ thống MEME/MAST cho phép bạn:
 Khám phá motif (vùng có tính bảo tồn cao) trong nhóm trình tự DNA hay
protein sử dụng MEME.
 Tìm kiếm trình tự cơ sở dữ liệu bằng motif dùng MAST.
MEME và MAST đƣợc phát triển bởi Timothy Bailey, Charles và Bill Grundy tại
phòng kỹ thuật và khoa học máy tính tại trung tâm San Diego Supercomputer.

II.3.7. EMBOSS
EMBOSS (European Molecular Biology Open Software Suite) là công cụ phân
tích trình tự với mã nguồn mở. Phần mềm này bao gồm nhiều chức năng và có thể xử
lý dữ liệu với nhiều dạng format. Thƣ viện mở rộng đƣợc cung cấp với gói, cho phép
ngƣời dùng phát triển và đƣa ra phần mềm riêng của họ. EMBOSS cũng tích hợp các
gói và công cụ có sẵn dùng cho phân tích trình tự, nhƣ BLAST và ClustalW.
EMBOSS chứa khoảng 150 chƣơng trình. Chúng xử lý một số lĩnh vực sau:

o Gióng trình tự
o Tìm kiếm nhanh chóng trình tự với trình tự ban đầu.
o Xác định motif protein.
o Phân tích trình tự, ví dụ xác định vùng CpG hay trình tự lặp lại.
o Xác định nhanh chóng trình tự trong tập trình tự lớn.
o Trình bày các công cụ đã đƣợc công bố…


PHẦN B: TỔNG QUAN – Giới thiệu Bioinformatics – Ngôn ngữ
NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
34
II.4. Ngôn ngữ dùng trong Bioinformatics
Cuộc cách mạng về bộ gene đã thay đổi diện mạo của sinh học. Bất cứ ai làm
việc trong lĩnh vực này đều sử dụng phần lớn thời gian trên máy tính và duyệt qua các
cơ sở dữ liệu lớn về genes, proteins, các bài báo đã công bố trên các cơ sở dữ liệu lớn
trên mạng. Ví dụ danh sách toàn bộ gene ngƣời có sẵn, đã thay đổi cách làm việc của
mọi ngƣời trong lĩnh vực nghiên cứu di truyền. Theo phƣơng cách truyền thống, một
nhà sinh học trải qua nhiều ngày suy nghĩ chiến lƣợc cho việc xác định một gene và
hàng tháng trời làm việc trong phòng thí nghiệm để tạo dòng. Ngày nay, anh ta chỉ
phải mất vài ngày suy nghĩ chiến lƣợc phù hợp cho ý nghĩa của gene từ cơ sở dữ liệu
bộ gene, tiếp theo thực hiện truy vấn (query), và vài phút để sắp xếp trật tự các dòng
phù hợp từ nguồn dữ liệu.
Để tạo thuận lợi trong sinh học mới, các nhà sinh học phải làm quen với máy
tính. Truy xuất dữ liệu từ trang web dữ liệu sinh học và những công cụ phân tích
chúng thì thƣờng không đủ. Để thật sự tạo ra cuộc cách mạng thông tin trong sinh học,
các nhà sinh học phải có thể quản lý và phân tích lƣợng lớn dữ liệu sinh học thu đƣợc
từ nhiều nguồn khác nhau. Điều này có nghĩa là viết phần mềm và Perl là ngôn ngữ ƣa
thích cho Bioinformatics. Khả năng tạo ra Perl script tự động quản lý thông tin là một
thuận lợi.
Mặc dù Perl là ngôn ngữ rất phù hợp đối với bioinformatics, nó không phải là

chọn lựa duy nhất và cũng không phải là chọn lựa tốt nhất. Các ngôn ngữ khác nhƣ
Java, C++, Python… cũng đƣợc dùng trong bioinformatics. Chọn lựa ngôn ngữ nào
phụ thuộc vào vấn đề cần đƣợc lập trình, kỹ năng của ngƣời lập trình và hệ thống có
sẵn.



PHẦN B: TỔNG QUAN – Cơ sở tin học – Lập trình hướng đối tượng
NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
35
III. Cơ sở tin học cho việc xây dựng cơ sở dữ liệu trình tự
III.1. Khái niệm về lập trình
Hiện nay lập trình thƣờng đƣợc phân chia thành hai trƣờng phái:
+ Lập trình cấu trúc hay còn gọi là “lập trình thủ tục”, “lập trình truyền
thống” (Structured Programming).
+ Lập trình hƣớng đối tƣợng (Object -Oriented Programming).
Để hiểu rõ hơn sự khác biệt cũng nhƣ ƣu khuyết điểm của hai trƣờng phái này, ta
hãy xét một yêu cầu đơn giản: Hãy hiển thị thông tin miêu tả các hình trong CSDL ra
màn hình.
Ta có thể dễ dàng phân tích vấn đề theo thứ tự các bƣớc sau:
1. Định vị các hình trong cơ sở dữ liệu.
2. Tạo danh sách hình.
3. Sắp xếp danh sách hình theo một thứ tự nhất định.
4. Biễu diễn từng hình riêng ra màn hình.
Mỗi một bƣớc trong bốn bƣớc ở trên có thể phân rã thành những đơn vị nhỏ hơn
để có thể dễ dàng hơn trong việc thực hiện. Ví dụ ta có thể chia bƣớc 4 thành các bƣớc
sau (sử dụng vòng lặp):
- Lấy từng hình trong danh sách bắt đầu từ vị trí đầu tiên cho đến vị trí cuối cùng.
- Gọi hàm hiển thị từng hình ra màn hình.
Cách nhìn nhận và phân tích vấn đề nhƣ thế đƣợc gọi là phân rã chức năng

(functionnal decomposition). Phân rã chức năng là cách tiếp cận bằng cách chia nhỏ
vấn đề đến mức mà ngƣời lập trình có thể sử dụng tập lệnh của một ngôn ngữ lập trình
để thực hiện chúng. Bằng cách này, ta có thể dễ dàng giải quyết và quản lý những vấn
đề lớn thông qua từng công việc nhỏ.
Cách tiếp cận trên là tƣ tƣởng chủ đạo của lập trình cấu trúc. Đây cũng là điểm
giống nhau giữa lập trình cấu trúc và lập trình hƣớng đối tƣợng. Tuy nhiên, nếu chỉ
dừng lại ở đây thì việc giải quyết một số vấn đề phức tạp ta sẽ gặp khó khăn vì những
lý do sau:
+ Phân rã chức năng thƣờng có một chƣơng trình chính chịu trách nhiệm về các
chƣơng trình con và ta không hề gặp khó khăn trong việc chia nhỏ các chức năng. Tuy
nhiên khi đó chƣơng trình chính phải gánh rất nhiều nhiệm vụ: đảm bảo mọi thứ đều
hoạt động tốt, liên kết và quản lý trình tự thực hiện các chức năng. Do đó, khi yêu cầu
PHẦN B: TỔNG QUAN – Cơ sở tin học – Lập trình hướng đối tượng
NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
36
ngày càng nhiều, độ phức tạp của các yêu cầu ngày càng cao, thì chƣơng trình viết
theo kiểu cấu trúc sẽ ngày càng phức tạp, gây khó khăn trong việc quản lý, bảo trì và
phát triển chƣơng trình về sau. Mọi thứ đều phát triển và thay đổi theo thời gian,
không có gì là bất biến. Và một chƣơng trình ứng dụng cũng không nằm ngoài quy
luật đó, nó luôn luôn thay đổi để ngày càng phù hợp với yêu cầu của thực tế. Tính khó
thích nghi khi có những thay đổi là nhƣợc điểm quan trọng nhất của lập trình thủ tục.
+ Trong một chƣơng trình có cấu trúc nhiều phần khác nhau có thể truy cập cùng
một dữ liệu. Điều này nghĩa là nếu một chƣơng trình cần thay đổi cách tổ chức dữ liệu,
ta phải tìm tất cả các chức năng hoặc các lệnh truy cập dữ liệu đó để có những thay đổi
tƣơng ứng. Nếu sót một trong các chức năng hoặc lệnh này thì chƣơng trình có thể vẫn
hoạt động nhƣng sẽ cho ra kết quả sai.
+ Một nhƣợc điểm khác của lập trình thủ tục là ta không thể kế thừa hiệu quả
cũng nhƣ tái sử dụng hiệu quả các chức năng đã viết, trong nhiều tình huống phải viết
lại gần nhƣ toàn bộ.
Lập trình hƣớng đối tƣợng đƣợc đƣa ra để khắc phục các nhƣợc điểm của lập

trình có cấu trúc. Lập trình hƣớng đối tƣợng giúp ta tƣ duy và giải quyết vấn đề nhƣ
cách ta thực hiện ngoài đời, do đó giúp ta tiếp cận các vấn đề một cách dễ dàng. Nói
cách khác lập trình hƣớng đối tƣợng chính là mô hình thu nhỏ của thế giới thực dƣới
góc độ nhìn nhận của con ngƣời.
Trọng tâm của lập trình hƣớng đối tƣợng là ở khái niệm về đối tƣợng (object)
chứ không phải là khái niệm chức năng. Tất cả mọi vật, hiện tƣợng tồn tại xung quanh
ta khi đƣa vào chƣơng trình đều đƣợc gọi chung là đối tƣợng. Ví dụ, ta có đối tƣợng
sinh viên, đối tƣợng sách khoa học, trong vấn đề sinh học đối tƣợng có thể là gene,
record, báo cáo khoa học …
Nhƣ đã nói trên, đối tƣợng chính là các sự vật hiện tƣợng thật trong cuộc sống, do
đó, nó có các đặc điểm, tính chất để phân biệt với các đối tƣợng khác và trong lập trình
hƣớng đối tƣợng nó đƣợc gọi là thuộc tính (attribute). Để làm rõ ta có thể có các ví dụ
về thuộc tính của một số đối tƣợng nhƣ sau:
Đối tƣợng Thuộc tính
* Sinh viên - họ tên
- lớp
- mã số sinh viên
PHẦN B: TỔNG QUAN – Cơ sở tin học – Lập trình hướng đối tượng
NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
37
* Xe hơi - nhà sản xuất
- màu
- tốc độ tối đa
* Gene - tên gene
- số accession
- tác giả …
Thuận lợi của dùng đối tƣợng là ta có thể gắn kết thuộc tính với nhiệm vụ / chức
năng riêng (behavior) của đối tƣợng đó. Đây là khác biệt quan trọng giữa lập trình cấu
trúc (dữ liệu không gắn kết chặt chẽ với hành vi) và lập trình hƣớng đối tƣợng.
Đối tƣợng nào có thuộc tính nào thì chỉ thực hiện các hành vi phù hợp với thuộc

tính mà nó có. Những hành vi không phù hợp phải thuộc về một đối tƣợng nào khác
mà có thuộc tính phù hợp để thực hiện nhiệm vụ đó. Nhƣ sách chỉ dùng để đọc và xe
dùng để lái mà không thể làm ngƣợc lại nghĩa là ta chỉ có thể thực hiện “đọc sách lái
xe” chứ không thể “lái sách đọc xe”. Trong lập trình hƣớng đối tƣợng các chức năng,
nhiệm vụ này gọi là hàm.
Ví dụ:
Đối tƣợng Student có các hàm :
gotoSchool() // đi học
learn() // học bài
Thay vì xem mỗi sinh viên là một object điều này sẽ giúp ta dễ dàng xác định
chính xác đó là sinh viên nào và nó hoàn toàn độc lập với các object khác.
Tóm lại, lập trình hƣớng đối tƣợng đã bổ sung đƣợc những điều mà lập trình cấu
trúc còn hạn chế, nó giúp ta quản lý và tiếp tục phát triển chƣơng trình cho phù hợp
với các yêu cầu mới phát sinh một cách dễ dàng. Hơn thế nữa các nhà phát triển phần
mềm có thể hoàn toàn không biết về nhau nhƣng điều đó không hề gây khó khăn bởi
lập trình hƣớng đối tƣợng là mô hình thu nhỏ của thế giới và nó nhìn nhận cũng nhƣ
phân tích vấn đề xảy ra nhƣ bộ não con ngƣời. Vì thế muốn chƣơng trình của mình có
thể phù hợp và phát triển bền vững thì lập trình hƣớng đối tƣợng là chọn lựa tốt nhất
hiện nay.



PHẦN B: TỔNG QUAN – Cơ sở tin học – Lập trình hướng đối tượng
NGUYỄN KỲ TRUNG – LÊ THÀNH TRUNG
38
Ví dụ: Xác định chức năng f() của ký tự A trong sinh học
- Đối với lập trình cấu trúc
define f() {
if (A of DNA) then
f stabilize the structure of DNA

else if (A of RNA) then
f stabilize the structure of RNA
else # A of Protein
f stabilize the structure of Protein
}
- Đối với lập trình hƣớng đối tƣợng
Ta có 3 đối tƣợng DNA, RNA, và Protein. Ba đối tƣợng này có thể gọi chung là
một đại-phân-tử. Cho trƣớc một đại-phân-tử bất kỳ, muốn gọi thi hành một chức
năng f nào đó, ta không cần kiểm tra xem đó là DNA, RNA hay Protein. Ta chỉ cần gọi
đại-phân-tử.f() thì đối tƣợng đại-phân-tử sẽ cho ra kết quả phù hợp với bản chất của
nó.
đại-phân-tử.f()
Cách tiếp cận này sẽ trở nên đơn giản nếu chúng ta phải thực hiện nhiều hàm
khác nhau trên đối tƣợng đại-phân-tử, chẳng hạn g(), h(), … Khi đó, ta không
phải mất sức nhớ và kiểm tra xem đại-phân-tử đó là DNA, RNA, hay Protein. Điều
này giải phóng phần nào năng lực tƣ duy của ngƣời lập trình.




×