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:
Posting Komentar