Kamis, 18 Juni 2015

Sebuah Tulisan Bioinformatika - Pencarian Similaritas database (Part 1)

Apa yang paling sering kita dengar jika kita adalah seorang peneliti biologi molekular? Ya, jawabannya adalah "sequencing". Di jaman sekarang ini, kemajuan teknologi biologi molekular telah "mempermudah" para penelitinya untuk langsung memasuki inti daripada keanekaragaman hayati, yakni urutan molekul biologis. Dengan demikian, jika seseorang berhasil mengisolasi DNA atau protein, maka tindakan berikutnya adalah SEQUENCING, walaupun yang belakangan seringkali di-bypass menggunakan ilmu prediksi gen dan penggunaan tabel kode genetik alih-alih sequencing langsung molekul proteinnya.

Well, lantas setelah proses sequencing, kata apakah yang paling sering kita dengar sebagai konsekuensi kelanjutannya? Pernahkah kita semua mendengar kalimat "di-BLAST saja"? Ya, proses berikutnya adalah mem-BLAST-kan urutan DNA atau protein yang telah didapatkan. Namun demikian, apakah BLAST itu dan bagaimana cara kerjanya? Apakah ada alternatif lain selain daripada BLAST? Pertanyaan-pertanyaan itulah yang akan mengawali diskusi kita kali ini.

BLAST dan program sejenis lainnya tergolong ke dalam kelompok program pencarian similaritas database (PSD). Program-program tersebut ibarat Google Search-nya  urutan molekular. Dengan input sebuah urutan DNA atau protein (query), program PSD akan menelusuri database terkait untuk mencarikan urutan yang mirip dengan urutan query. Well, mudah kan? hanya sebatas itu. Namun mari kita coba pikirkan lagi menggunakan analogi berikut. Jika teman-teman sedang terhubung pada internet, coba buka laman berikut: https://en.wikipedia.org/?title=Bioinformatics dan bacalah dua paragraf pertama. Sudah? Nah berikutnya saia akan mengajukan dua pertanyaan berikut:

1. Ada berapa kata "bioinformatics" di dalam dua paragraf tersebut?
2. Bagaimana cara mendapatkan angka tersebut?

Oke, saia juga akan menjawab dua pertanyaan tersebut. Jawabannya ada lima buah dan saia mendapatkan angka tersebut dengan cara mengetikkan kata "bioinformatics" pada kolom search (Ctrl+F). Err..tunggu, yang diminta pada pertanyaan kedua adalah logikanya yah. Okay, jadi saia mencarinya dengan menyisir kedua paragraf tersebut dari awal hingga akhir dan kemudian menandai setiap kata "bioinformatics" yang saia temukan. Oke masalah selesai, lalu apa lagi? Nah sekarang mari kita coba kembangkan permasalah dua paragraf ini menjadi jutaan paragraf dan saia akan mengulang dua pertanyaan di atas kepada teman-teman. Saya sangat yakin dan optimis bahwa jawabannya pasti bisa. Namun jika saia tambah dengan pertanyaan ketiga, yang berbunyi:

3. Berapa lama waktu yang Anda butuhkan untuk menjawab pertanyaan nomor 1 dan 2?

Apa jawabannya? Mungkin sejam, sehari, sebulan, setahun, satu dekade..yaa tergantung dari tingkat kerajinan kita masing-masing...hehehe.

Nah inilah alkisah mengenai pencarian similaritas database. Jika seluruh peneliti biologi molekular memasukkan urutan hasil sequencing mereka ke dalam sebuah database, maka coba bayangkan seberapa cepat pertumbuhan data di dalam database tersebut per tahunnya. Yaa ini cukup sulit untuk dibayangkan, jadi silahkan lihat saja di laman berikut: http://www.ncbi.nlm.nih.gov/genbank/statistics. Jika kita mencari, katakanlah, urutan gen 16S rRNA dari sebuah bakteri yang panjangnya 1500 nukleotida, itu artinya kita harus mencari pola sepanjang 1500 di dalam kumpulan 189 milyar nukleotida. Itu sih ibarat mencari jarum di dalam tumpukan jerami, yang berarti urutan tersebut pasti bisa ditemukan namun akan butuh waktu sangat sangat lama untuk menemukannya. Bagi teman-teman yang mengikuti tulisan saia, mungkin ada yang mendapatkan ide untuk mengaplikasikan teknik dynamic programming untuk menjawab masalah ini. Namun demikian, ternyata masalah kecepatan proses juga menjadi hambatan utama bagi teknik tersebut.

Metode Pencarian similaritas database memiliki tiga kriteria yang harus dipenuhi, yakni sensitivitas, spesifisitas/selektivitas, dan kecepatan. Sensitivitas berarti kemampuan sebuah program PSD untuk mencari sebanyak mungkin urutan di dalam database yang berkaitan dengan urutan query. Spesifisitas/selektivitas merupakan kemampuan program PSD untuk mengeluarkan urutan database yang mirip namun tidak berhubungan (false positive). Terakhir, kecepatan merupakan waktu yang diperlukan oleh program PSD untuk menyelesaikan proses pencarian. Dalam pengembangannya, sebuah program PSD ternyata tidak mampu memenuhi ketiga kriteria tersebut secara optimal. Peningkatan sensitivitas berarti menurunkan spesifisitasnya. Jika kita mengoptimalkan sensitivitas dan spesifisitas, maka hal tersebut akan menurunkan kecepatannya. Seringkali, kecepatan merupakan kriteria yang paling diutamakan dalam pencarian similaritas database. Yaa tentu saja kita tidak ingin duduk diam di depan layar komputer dengan tulisan "LOADING" atau "SEARCHING IN PROGRESS" secara terus-menerus toh.

Berpindah sejenak ke permasalahan kombinatorik, jumlah kasar total kombinasi jajaran (alignment) yang dapat diperoleh dari sepasang urutan adalah produk dari panjang kedua urutan tersebut. Hal ini berarti jika kita memiliki sepasang urutan dengan panjang masing-masing 100 dan 95 nukleotida, maka total kombinasi yang muncul adalah 100 x 95 alignment. Lalu bagaimana jika menggunakan kasus di atas, yakni 1500 x 189 milyar? Well, hitung sendiri yah. Pesan moral dari paragraf ini adalah, pencarian seluruh kombinasi (atau istilahnya pencarian exhaustive / brute force) ini secara praktis tidak mungkin untuk dilakukan. Kita butuh teknik yang lebih cepat dari itu.

Teknik lain, yakni teknik pencarian heuristik memberikan alternatif solusi untuk permasalahan ini. Jika didefinisikan, pencarian heuristik adalah pencarian berbasis sampling. Hal ini membuat pencarian heuristik hanya mengevaluasi sampel kombinasi dan menetukan solusi terbaik alih-alih mengevaluasi total kombinasi yang ada. BLAST merupakan salah satu program PSD yang berbasis heuristik ini.

Well, inilah akhir dari Part 1. Saia sih berharap dari teman-teman pembaca sekalian ada yang cukup penasaran mengenai kelanjutannya. Ditunggu yah Part 2-nya...hehehe

Regards,
KohVic

Tidak ada komentar: