Thu thập nguồn gene và tổ chức dữ liệu gene
Trang 1Hình 4.4: Kết quả cuối cùng sau khi chương trình phân Division đã chạy xong
Dữ liệu của ta được phân loại theo từng trường riêng biệt, đây là cấu tạo tầng dữ liệu của ta
Thống kê kết quả cuối cùng, tất cả các trình tự được phân loại vào các trường như sau:
Các trình tự này chủ yếu nằm trên các khu vực PLN, BCT, VRL, PAT, SYN, EST, các trường còn lại chứa các trình tự dư thừa, vì thế ta chỉ cho tìm kiếm trên các khu vực chứa trình tự quan tâm
Trang 2V Java tiến hành xử lý dữ liệu
Xây dựng ứng dụng tra cứu dữ liệu trình tự thông qua các keyword do người dùng chọn lựa và nhập vào
V.1 Các yêu cầu đặt ra
Với keyword bất kỳ nhập vào, cần tìm được file chứa từ đó trong nội dung
Để thông tin tìm được đúng mong muốn, ta sẽ tạo thêm các giới hạn tìm kiếm
Có hai mức giới hạn được đặt ra:
Mức dữ liệu: ta cho người dùng giới hạn tìm kiếm trên các bộ dữ liệu:
Trang 3V.2 Xử lý yêu cầu bằng Java và Biojava
Phân tích nội dung của dữ liệu genbank Có thể phân nội dung thành hai phần:
Phần tìm kiếm thông tin liên quan đến trình tự: Bắt đầu từ trường LOCUS đến phần bắt đầu của trường ORIGIN
Phần tìm kiếm thông tin trình tự: Tìm kiếm trong nội dung của trường ORIGIN
Xử lý dữ liệu tìm kiếm theo các trường
Đầu tiên ta thực hiện việc tách các trường mà yêu cầu nội dung khi tìm kiếm phải chính xác Các trường này được chỉ ra trong hình sau:
các phương thức trong lớp Get FieldInLocVerAcc Các phương thức chính đảm nhận
việc tách là GetFieldOfLocus(File file, String fieldRequest) và
GetFieldOfVersion(File file, String fieldRequest)
Trường ACCESSION cũng tiến hành tương tự
Tiếp theo tiến hành tách các trường khác cung cấp thông tin về chức năng trình tự:
Trang 4Hình 5.2: Các trường cung cấp thông tin trình tự cần tách
Cách tách các trường này (các trường được khoanh đỏ) được thực
hiện bởi các phương thức trong lớp GetFieldOfGenBank giống như các lớp trên
Trong các trường trên thì trường FEATURES chứa các thông tin quan trọng của trình tự Ở đây ta quan tâm các thông tin trong vùng mã hóa CDS (được đóng khung) Các thông tin trong trường CDS thường là tên gene, tên sản phẩm của trình tự, và trình tự amino acid tương ứng Đây là các nội dung quan trọng cần cho tìm kiếm và hiển thị kết quả
Mỗi nội dung trong trường CDS được bắt đầu bằng biểu tượng
“/” sau đó là tên tiêu mục nội dung tiếp theo là dấu “=” cuối cùng là nội dung của tiêu
Trang 5mục, ví dụ /gene= : bắt đầu nội dung tên gene Dựa vào điều này ta tạo các phương
thức trong lớp GetFieldInSmallFieldOfFeature để tách các phần nội dung này
Thực hiện tìm kiếm trình tự trong trường ORIGIN
Phần này ta ứng dụng mã biojava để xử lý Lớp CheckOriginRequest
làm nhiệm vụ tìm kiếm cho trường này
Đến đây ta đã hoàn thành tìm kiếm trên từng trường cụ thể, việc tìm kiếm trên tất các trường được thực hiện bằng cách xét tuần tự từng trường, nếu tìm thấy nội dung trong bất kỳ trường nào thì việc tìm kiếm được dừng lại
V.3.Thiết kế giao diện
Qua tham khảo giao diện các trang web trên thế giới và theo yêu cầu thực tế của
đề tài, trang giao diện được chúng tôi thiết kế như sau:
Trang 6Hình 5.3: Trang giao diện tìm kiếm GM Databases
Trang 7Thiết kế trang giao diện trên chúng tôi dựa theo các tiêu chí sau:
Khung tìm kiếm tạo thuận lợi, dễ chọn lựa, không phức tạp và rắc rối đối với người dùng
Hình 5.4: Nội dung trang tìm kiếm
Phần hướng dẫn, giúp người sử dụng hiệu quả hơn với các chọn lựa tìm kiếm
Chữ viết tắt ở đầu trang: NLBI là chữ viết tắt của tên nhóm nghiên cứu
Tin – Sinh học của Đại Học Nông Lâm Tp.HCM (Nông Lâm BioInformatics)
Trên thanh chỉ mục ngang ở đầu trang web có các liên kết đến các trang cung cấp thông tin chung như:
NLBI Home: liên kết đến trang chủ, tại đây cung cấp đầy đủ các thông tin hiện có về nhóm bioinformatics của Đại Học Nông Lâm
About NLBI: cung cấp thông tin về nhóm bioinformatics của Đại Học Nông Lâm
Contact Us: cung cấp các cách tiếp cận các cơ sở dữ liệu hiện có của nhóm
Help: cung cấp thông tin hỗ trợ cho tất cả các nội dung hiện có
Trang 8Trong khung chỉ mục phía trái trang web có các mục: Index, Tools, Documentation, News Những mục này là những liên kết tới các trang thông tin hỗ trợ trang NLBI Search như:
Index: liệt kê tất cả các kiểu tìm kiếm hiện có
Tools: cung cấp các công cụ phân tích trình tự hoạt động tại web server hay software download
Documentation: cung cấp các tài liệu về trang NLBI search như cách hoạt động của trang, các chỉ dẫn tìm kiếm thông tin hiệu quả…
News: các thông tin cập nhật về trang NLBI search
Ngoài ra, trang web còn được trang trí với màu sắc dễ nhìn và mang tính đặc trưng riêng của nhóm làm việc Các mục trên trang web về sau có thể mở rộng, nâng cao, tăng tính năng tìm kiếm, tăng những hỗ trợ cho người sử dụng, …
Một tiện lợi nhỏ của trang web tìm kiếm này là ngoài khả năng tìm kiếm trên dữ liệu GM Database của NLBI, thì người sử dụng khi cần thiết vẫn có thể chọn lựa tìm kiếm trên dữ liệu của các trang tìm kiếm lớn trên thế giới là GenBank, EMBL, DDBJ, không phải mất thời gian để mở một cửa sổ tìm kiếm khác trên máy tính
V.4 Lập trình hiển thị giao diện sử dụng
a) Lập trình web
Kết quả sau khi xử lý sẽ được hiển thị ra giao diện web Nội dung hiển thị tạo thuận lợi cho người dùng trong việc nắm bắt các thông tin về trình tự tìm được Cụ thể:
Trang tìm kiếm với giao diện và hướng dẫn tạo thuận lợi cho tìm kiếm
Kết quả tìm kiếm được hiển thị mặc định ở dạng thông tin tóm tắt tiện cho người dùng có khái niệm khái quát về trình tự
Có thể hiển thị linh động sang các kiểu hiển thị nội dung khác như:
Thể hiện đầy đủ thông tin dưới dạng GenBank
Thể hiện trình tự dạng FASTA
Thể hiện chỉ vùng trình tự mã hóa (CDS) dưới dạng FASTA
Thể hiện trình tự amino acid dưới dạng FASTA
Nội dung hiển thị được xem dưới dạng web (HTML) hay dạng văn bản (text)
Trang 9Giao diện web được thiết kế với hai công cụ thiết kế thông dụng Frontpage và Dreamweaver, sau đó được chuyển mã vào Java Servlet Công nghệ Java Servlet cho phép kết nối các ứng dụng trên web với cơ sở dữ liệu
b) Ứng dụng Java Servlet lập trình web
Ứng dụng tìm kiếm:
Hình 5.5: Một trường hợp tìm kiếm trên web
Đây là một trang web tìm kiếm bằng keyword, để trang web có thể hoạt động ta
có thể chuyển mã của trang này thành mã của Java Servlet (sau này có thể cải tiến bằng cách dùng JSP hoặc các công cụ khác) Ở đây ta lấy một ví dụ cụ thể một cách tìm kiếm để minh họa cụ thể cách hoạt động của trang web:
Chúng ta có thể nhập bất cứ nội dung tìm kiếm nào vào khung Search for, ở
đây ta nhập keyword là PAT
Trong khung Limited Field ta chọn trường tìm kiếm cụ thể, ở đây ta chọn Anyfields
Trang 10 Trong khung Choose Database, chọn nhóm dữ liệu tìm kiếm ở đây ta chọn Patent Database
Sau khi người dùng nhấn Submit yêu cầu được gởi lên máy chủ, khi đó máy chủ gởi yêu cầu đến Servlet Controller kèm theo các tham số mà người dùng chọn lựa
khi submit
Tại lớp Controller đầu tiên sẽ nhận vào cơ sở dữ liệu cần tìm, đọc nội dung
trong folder dữ liệu và lần lượt lấy hết các tham số cần thiết cho việc tìm kiếm như: nội dung và trường cần tìm Tiếp theo sẽ tiến hành tìm kiếm lần lượt các file trong folder, nếu kết quả đúng sẽ trả về file đó và lưu giữ trong biến session (là danh sách các file thỏa việc tìm kiếm) Việc thực hiện tìm kiếm theo tham số nhận vào được thực
hiện trong lớp Check
Sau khi có được các tham số chương trình sẽ gọi hàm check(String fileName, String fieldName, String value) ba tham số nhận vào lần lượt là tên file dữ liệu cần
tìm, trường cụ thể muốn tìm kiếm và nội dung tìm kiếm Trước khi việc tìm kiếm được thực hiện chương trình sẽ kiểm tra xem trường tìm kiếm là Anyfield hay LimitedField
Nếu AnyField sẽ thực hiện tìm kiếm các trường bằng phương thức
checkAllField(File file, String value)
Nếu là LimitedField sẽ tìm kiếm trên trường cụ thể bằng phương thức
checkLimitedField(File file, String fieldName, String value)
Việc kiểm tra từng trường cụ thể sẽ được truyền cho một lớp khác thực hiện Cụ thể:
Tìm kiếm trên trường LOCUS, VERSION, ACCESSION được thực hiện
trong lớp CheckFieldOfVerAcc Phương thức quan trọng thực hiện nhiệm vụ này là check(File file, String fieldRequest, String valueRequest)
Việc thực hiện tìm kiếm cho những trường khác được thực hiện trong
lớp CheckOtherRequest Các phương thức trong lớp này sẽ lấy nội dung của trường cần tìm và thực hiện phương thức Contain kiểm tra xem nội dung này
có chứa nội dung mà người dùng nhập vào hay không, kết quả tra về là boolean
(true hay false)
Tiếp theo là tìm kiếm các nội dung trong CDS, việc này được đảm nhận
bởi các phương thức trong lớp CheckFieldInSmallFieldOfFeature Các
Trang 11phương thức trong lớp này sẽ lấy đúng nội dung của từ khoá cần tìm kiếm và thực hiện so sánh với nội dung mà người dùng nhập vào
Cuối cùng là tìm kiếm cho trình tự Cách tìm kiếm đã được mô tả bên
trên, được thực hiện bằng phương thức CheckOriginRequest
Sau khi đã tìm kiếm các file thỏa yêu cầu, công việc tiếp theo là định dạng kết
quả để xuất ra Danh sách các file thỏa sẽ được chuyển sang lớp Servlet Result Phương thức doGet trong lớp này tự động gọi và chuyển yêu cầu xuất kết quả mặc định summary sang lớp Servlet printSummaryHTML, tại đây sẽ gọi các phương thức
lấy dữ liệu xuất đúng kết quả kèm theo các mã HTML Kết quả được xuất ra như sau:
Hình 5.6: Thể hiện kết quả tìm kiếm với nội dung tóm tắt
Trang 12Tại lớp Servlet này sẽ lưu trữ một biến session, lưu lại các tham số mà người dùng chọn lựa định dạng kết quả và danh sách các file Khi người dùng chọn lựa và
nhấn view phương thức doPost trong lớp này được gọi và thực hiện hành động gọi tiếp phương thức doPost của lớp Result, tại đây sẽ xử lý và chọn định dạng mà người
dùng muốn xuất, cuối cùng là gọi trang xuất thích hợp cụ thể như: dạng GenBank, dạng FASTA…
Dạng GenBank: phương thức doPost trong lớp Result lấy yêu cầu và gọi trang xuất là lớp Servlet PrintGenbankHTML
Dạng CDS FASTA: tương tự, lớp printCdsNuclotideSeqHTML được gọi
Phần này ta chỉ lấy đoạn trình tự CDS trong phần ORIGIN, ban đầu nó sẽ lấy vị
trí giới hạn trong CDS, sau đó gọi phương thức writeSequence(PrintStream out, int origin, int destination) trong lớp PrintOrigin
Dạng Nucleotide sequences FASTA: lớp PrintNucleotideSeqFastaHTML được gọi Trong lớp này sẽ gọi phương thức writeSequence, phương thức writeSequence thuộc lớp PrintOrigin và thực hiện in hết Origin
Dạng CDS amino acid Seq FASTA: lớp PrintCdsAAcidSeqFastaHTML được
gọi Lớp này sẽ lấy nội dung “/translation=” trong CDS và thực hiện in tuần tự
mỗi hàng 60 ký tự
VI Kết quả giao diện tìm kiếm với dữ liệu tập hợp được
Sau khi xử lý dữ liệu với Java Servlet và thiết kế giao diện cho người dùng Ta được kết quả như sau:
Giao diện của trang tìm kiếm
Trang 13Hình 6.1: Trang chủ tìm kiếm trình tự GM Plants bằng keyword
Trang 14Trang này cho phép ta nhập keywords cần tìm, chọn trường giới hạn, chọn cơ
sở dữ liệu cần tìm sau đó nhấn nút submit để tìm kiếm
Keywords có thể được kết hợp với nhau theo toán tử AND, OR, NOT Theo mặc định keywords được tìm kiếm trong cơ sở dữ liệu NLBI (Nông Lâm Bioinformatics Group) Các cơ sở dữ liệu Genbank, EMBL, DDBJ hiện tại chưa tích hợp được
Ta thực hiện một ví dụ về hoạt động của trang web:
Ta tìm kiếm trình tự tổng hợp 5-enolpyruvylshikimate-3-phosphate (enzyme kháng thuốc diệt cỏ) trong cơ sở dữ liệu vi khuẩn Ta thực hiện như sau:
Hình 6.2: Nhập keyword cần tìm vào khung tìm kiếm
Trang 15Sau khi đánh keywords, chọn các trường và cơ sở dữ liệu thích hợp ta nhận nút submit thực hiện tìm kiếm Ta thu được kết quả sau:
Trang 16Theo mặc định kết quả xuất ra ở dạng tóm tắt (Summary) Tại trang này ta có thể hiện thị các kết quả khác nhau thể hiện trong khung displays, chọn kiểu format, và kết quả xuất ra tối đa trên một trang Sau đây là một vài hiển thị:
Biểu diễn dạng Genbank
Trang 18Biểu diễn trình tự dưới dạng FASTA
Hình 6.5: Trang biểu diễn kết quả dạng FASTA
Biểu diễn vùng trình tự mã hóa (CDS) dạng FASTA
Hình 6.6: Trang biểu diễn vùng trình tự mã hóa (CDS) dạng FASTA
Trang 19Biểu diễn trình tự aminoacid do CDS mã hóa, dạng FASTA
Hình 6.7: Trang Biểu diễn trình tự aminoacid do CDS mã hóa, dạng FASTA
Trang 20Bất kỳ kết quả biểu diễn nào cũng có thể chọn lựa định dạng HTML hoặc text Sau đây là biểu diễn genbank thể hiện dạng text
Hình 6.8: Trang biểu diễn kết quả dạng text của kiểu GenBank
Trang 21Dạng text thuận lợi cho việc lưu về và sử dụng với các chương trình xử
lý Dạng HTML tạo thuận lợi cho tham khảo thông tin về trình tự
Kết quả được hiển thị nhiều dạng cho phép người dùng lấy được nhiều thông tin cần thiết về trình tự Như trình tự vùng CDS, trình tự aminoacid tương ứng với trình tự CDS….Mỗi dạng thể hiện đều có Hyperlink ở các Accession Number cho phép tham khảo chi tiết file genbank của từng trình tự
Trang 22b) Trình tự
Tìm kiếm bằng keyword mang lại kết quả rất khó chọn lọc Vì vậy phương pháp chúng tôi tìm kiếm là sử dụng keyword với phổ rộng, nghĩa là phối hợp nhiều khả năng khác nhau của keyword sao cho thông tin tìm được với nội dung keyword đó
là nhiều nhất và sự dư thừa là ít nhất
Tìm kiếm trình tự bằng primer đem lại kết quả hiệu quả hơn Đối với phương pháp này, việc xác định cơ sở dữ liệu cần tìm, giá trị Evalue, giới hạn kết quả trên sinh vật nào là vấn đề quan trọng để mang lại kết quả mong muốn nhiều nhất
2 Ngôn ngữ lập trình
Perl là ngôn ngữ dễ học, xử lý tốt các record GenBank, làm được nhiều nhiệm
vụ bioinformatics, rất phù hợp cho các nhà sinh học muốn làm bioinformatics mà chưa từng làm quen với ngôn ngữ lập trình
Công nghệ Java là một trong hai công nghệ phổ biến nhất hiện nay, phù hợp cho các dự án mang tính chất lâu dài và tính công nghệ cao Chúng tôi áp dụng công nghệ này cho đề tài cũng chính vì các đặc tính này của chúng
3 Tham vọng của đề tài là áp dụng công nghệ Hibernate kết nối giữa thế giới đối
tượng trong lập trình Java và CSDL quan hệ nhưng thời gian qua nhóm nghiên cứu đã phải tự tìm tài liệu để học Perl, học cách xử lý dữ liệu sinh học bằng Perl, đánh giá các phương án khác nhau để thực hiện nhiệm vụ mà đề tài đặt ra và cuối cùng chọn công
nghệ Java nên chưa thể áp dụng Hibernate