Anda di halaman 1dari 13

Judul

Paralelisasi Algoritma Sequence Alignment Needleman-Wunsch menggunakan Java RMI

Latar Belakang
Saat ini dalam pengerjaan suatu aplikasi dibutuhkan waktu yang sangat lama dan kurang
efektif, sehingga dapat merugikan pengguna dan programer itu sendiri. Dengan memparalelisasi
algoritma sequence alignment ini adalah suatu metode untuk mempersingkat waktu pengerjaan
agar lebih efektif. Awalnya jika hanya dapat dibuka dalam satu dekstop saja dengan paralelisasi
ini aplikasi tersebut dapat dibuka di beberapa dekstop. Untuk memparalelisasi algoritma ini
dapat menggunakan Java RMI (remote method invocation), Sebuah interface pada Java hanyalah
berisi definisi method apa saja yang dapat digunakan oleh suatu objek dan tidak berisi kode
logika perintah yang digunakan. Agar sebuah interface dapat diberikan logika perintahnya, maka
harus dibuat sebuah class yang menerapkan (implementation) dari interface tersebut.

Perumusan Masalah
Masalah yang dibahas pada penelitian ini adalah:
- Bagaimana cara memparalelkan algoritma sequence alignment Needleman-Wunsch
dengan menggunakan java RMI?

Batasan Masalah
Penulisan dan penelitian pada tugas Riset Tekno-Info ini mempunyai batasan sehingga
menghindari pembahasan yang terlalu luas. Adapun batasan-batasan tersebut seperti:
- Sistem perangkat lunak dibangun dengan menggunakan bahasa pemrograman JAVA
RMI.
- Metode penyejajaran dengan menggunakan algoritma Needleman-Wunsch

Maksud dan Tujuan


Memparalelisasi algoritma ini mempunyai tujuan untuk mempermudah seseorang dalam
pengerjaan membuat aplikasi dengan menggunakan algoritma Needleman-Wunch. Tidak hanya
mempermudah tetapi dapat mempersingkat waktu dan pengelolaannya agar lebih efektif.
Landasan Teori

2.1 Algoritma Needleman-Wunsch


Algoritma Needleman-Wunsch pertama kali dicetuskan pada tahun 1970 oleh Saul
Needleman dan Christian Wunsch. Nedleman dan Wunsch mengerjakan aplikasi penggunaan
pemrograman dinamis untuk memecahkan alignment pada protein. Algoritma Needleman-
Wunsch merupakan perluasan algoritma pencocokan string yang mengimplementasikan program
dinamis. Algoritman ini digunakan untuk menentukan tingkat kesamaan atau kecocokan dua
buah teks, dalam konteks ini sekuen DNA, RNA, atau Protein. Algoritma Needleman-Wunsch
menghasilkan global alignment, dimana akan menggunakan semua dari satu sekuen dan di-align
dengan semua dari sekuen kedua.
Idenya adalah dengan membentuk Matriks kesamaan (similiarity Matrix) dimana
komparasi antar string dilakukan, dimisalkan untuk sekuen X={C,G,C,G,A} dan sekuen
Y={C,G,T,G}. dilakukan dengan mengkomparasi problem terkecil yaitu C dengan C, CG
dengan C, menuju ke problem terbesar yaitu melakukan alignment CGCGA dengan CGTG.
Untuk merepresentasikan dibentuk matriks (kita misalkan sebagia matrix F) seperti pada gambar
2.1 yang berdimensi [panjang sekuen pertama+1] [panjang sekuen kedua+1].
j= j= J= J=
j=0 1 2 3 4
C G T G
i=
0
i=
1 C
i=
2 G
i=
3 C
i=
Table 2.1 Inisialisasi 4 G Matriks
i=
5 A
Kemudian tetapkan nilai untuk setiap kecocokan karakter, ketidakcocokan karakter dan
nilai gap jika ada salah satu karakter dari kedua sekuen yang dibandingkan digeser. Nilai
kecocokan (match) haruslah ditetapkan sebagai suatu nilai positif. Hal ini disebabkan dua teks
dikatakan semakin mirip jika nilai kecocokannya tinggi, sementara nilai kecocokan kedua teks
tinggi apabila nilai kecocokan tiap karakter tinggi.
Sebaliknya nilai ketidakcocokan (mismatch) harus dibernilai negatif atau nol, karena
ketidakcocokan karakter mengurangi kemiripan suatu teks dalam hal ini sekuen DNA. Nilai
ketidakcocokan semua karakter harus sama, artinya ketidakcocokan karakter A dan G harus
sama dengan ketidak cocokan karakter G dan A. Begitu juga dengan nilai gap, nilainya harus
bernilai negatif atau nol.
Definisikan nilai kecocokan setiap karakter adalah 10, nilai ketidakcocokan setiap
karakter adalah 0, dan nilai penalti (gap) karena suatu karakter diganti celah adalah -10.
Misalkan ditetapkan pula batas minimal nilai kecocokan kedua DNA tersebut agar termasuk
dalam spesies yang sama adalah 40. Dengan demikian, apabila nilai kecocokan maksimal kedua
DNA tersebut lebih besar atau sama dengan 40, maka dapati disimpulkan bahwa kedua DNA
tersebut merupakan satu spesies.

A G C T
1
A 0 0 0 0
G 0 10 0 0
C 0 0 10 0
T 0 0 0 10

Tabel 2.2 Nilai Kesamaan

Isi matriks F(i,j) dari gambar 2.1 adalah skor yang optimal dari alignment antara X1
sampai Xi dengan Y1 sampai Yj. Sedangkan F(0,0) adalah alignment antara ” ” dengan ” ”, yaitu
alignment antara string kosong dengan string kosong. Selanjutnya dapat dilakukan pengisian
matriks, sebagai contoh:
 F(0,1) adalah align " " dengan "T" sehingga bernilai -10,
 F(0,2) adalah align " " dengan "TA" sehingga bernilai -20,
 F(1,0) adalah align "T" dengan " " sehingga bernilai -10,
 F(2,0) adalah align "TA" dengan " " sehingga bernilai -20.

Untuk mengisi nilai F(1,1), yaitu mengkomparasi C dengan C, hal ini diperlukan
pencarian sub-problem. Untuk komparasi C dengan C, dengan memperhitungkan nilai komparasi
gap, terdapat tiga kandidat:
1. skor gap dan gap + nilai match/mismatch C dan C,
2. skor gap dan C + nilai alignment C dengan gap,
3. skor C dan gap + nilai gap dan alignment C.
Ketiga skor diatas adalah nilai matriks yang telah didapatkan sebelumnya, untuk point 1
nilai skor gap dan gap adalah nilai dari F(i-1,j-1) yaitu kotak diagonal atas kiri. Point 2 nilai skor
gap dan C adalah nilai dari F(i,j-1) yaitu kotak kiri dan point 3 nilai C dan skor gap adalah nilai
dari F(i-1,j) yaitu kotak atas.
Dari ketiga nilai tersebut kandidat pertama yaitu F(i-1,j-1) menghasilkan nilai (0+10 =
10). Kandidat kedua dan ketiga yaitu F(i,j-1) dan F(i-1,j) menghasilkan nilai yang sama yaitu (-
10 + -10 = -20), sehingga nilai yang paling optimal adalah nilai dari kandidat pertama, maka
nilai dari kandidat pertama ini akan mengisi F(1,1).
Nilai-nilai lain dari F(i,j) selanjutnya dapat diisi, dan kesemuanya dapat diformulasikan
dalam hubungan :

Basis:
F(0,0) = 0;
F(0,j) = skorgap * j; j>0
F(i,0) = skorgap * i; i>0
Rekursi, berdasarkan prinsip optimalisasi:
F(i,j) = max(F(i − 1,j − 1) + skor match/mismatch; F(i,j − 1)+skorgap; F(i−1,j)+skorgap)

Dengan menggunakan persamaan diatas, maka kita dapatkan matriks yang


merepresentasikan nilai kecocokan kedua DNA sebagai berikut :
J=0 j=1 j=2 j=3 j=4
C G T G
I= 0 -10 -20 -30
0 -40
I= -10 10 0 -10
1 C -20
i=2 G -20 0 20 10 0
i=3 C -30 -10 10 20 10
i=4 G -40 -20 0 10 30
i=5 A -50 -30 -10 0 20

Table 2.3 Traceback Matriks

Dari langkah-langkah pengisian Matrik diperlukan penyimpanan ke dalam memori untuk


mengingat dari manakah nilai F(i,j) berasal, apakah dari operasi F(i-1,j-1), F(i-1,j) atau F(i,j-1).
Jika nilai dari ketiga kandidat tersebut ada yang sama, maka kedua kandidat itu harus disimpan,
ini mengakibatkan lebih dari satu alignment optimal yang diperoleh. Hal ini akan memudahkan
dalam melakukan traceback (pembalikan) untuk menentukan posisi alignment.
Untuk melakukan traceback, kita memulai dari masalah terbesar yaitu F(i,j), dan menuju
ke F(i,j) yang memberikan nilai, karna hal inilah mengapa diperlukan penyimpanan dari mana
nilai F(i,j). Tanda panah diatas menunjukan asal nilai di F(i,j) diperoleh. Jika F(i,j) merupakan
hasil operasi dari F(i-1,j) yang berarti alignment antara string X[ i ] dengan gap, garis horizontal
yang berarti F(i,j) merupakan hasil operasi dari F(i,j-1) adalah alignment antara gap dengan
string Y[ i ], dan garis diagonal yang merupakan hasil operasi dari F(i-1,j-1) adalah alignment
antara string X[ i ] dengan Y[ i ]. Sehingga jika di telusuri dari matriks diatas, akan didapatkan
alignment yang optimal dari sekuen X={C,G,C,G,A} dan sekuen Y={C,G,T,G}.

C G C G A
| | * |
C G T G -

Tabel 2.4 Hasil Penyejajaran


Dalam melakukan traceback, hasil dari traceback bisa lebih dari satu. Hal ini disebabkan
karena nilai dari suatu titik dimatriks F didapat dari dua atau tiga kandidat yang berbeda. Semua
hasil dari traceback yang mempunyai bobot atau nilai (score) yang sama harus ditampilkan.

2.2 Java Remote Method Invocation (RMI)

RMI mulai diperkenalkan pada Java 1.1, dengan tujuan menyediakan fasilitas kepada
programmer untuk dapat mendistribusikan objek yang digunakan pada beberapa proses yang
berbeda, dapat berjalan di dalam satu mesin ataupun di beberapa mesin yang terhubung dalam
jaringan. Fasilitas RMI ini ingin memberikan kemudahan, karena pembuatan antar muka
(interface) dan implementasinya menggunakan kelas java biasa.

a. Arsitektur RMI

Dalam RMI, pendefinisian interface (behavior) dan penerapan dari interface tersebut
merupakan dua konsep yang berbeda, artinya keduanya dapat berjalan pada dua JVM yang
berbeda.
Sebuah interface pada Java, hanyalah berisi definisi method apa saja yang dapat
digunakan oleh suatu objek dan tidak berisi kode logika perintah yang digunakan. Agar sebuah
interface dapat diberikan logika perintahnya, maka harus dibuat sebuah class yang menerapkan
(implementation) dari interface tersebut.
Pada RMI dimungkinkan untuk membuat dua class yang menerapkan dari satu interface
yang telah didefinisikan. Satu class menerapkan behavior dari interface tersebut (berjalan di sisi
server), dan satu class lagi bertindak sebagai proxy untuk remote service (server object) yang
berjalan di client.

Program client melakukan pemanggilan method ke server melalui proxy. Jika remote
method yang dipanggil mengembalikan nilai, maka pengembalian tersebut ditangkap oleh proxy,

baru kemudian diteruskan ke program client.

Penerapan RMI dibangun dari 3 lapisan :

Ketika sebuah program client memanggil sebuah remote method service, stub dan
skeleton akan meneruskan ke variabel referensi interface. Stub dan skeleton dinyatakan dengan
proxy.
Layer kedua (Remote Reference Layer) menyediakan objek RemoteRef yang
menyatakan hubungan ke objek remote service implementation. Objek stub akan menggunakan
method invoke() dalam RemoteRef untuk meneruskan pemanggilannya. Pada Java 1.1
disediakan satu cara kepada client untuk berhubungan dengan remote service implementation,
yaitu unicast.

b. Penamaan Remote Object

Bagaimana sebuah client dapat menemukan remote object yang diminta?

RMI dapat menggunakan directory service, seperti JNDI. Namun RMI telah tersedia
semacam directory service disebut RMI Registry, yang disediakan oleh tool rmiregistry. RMI
Registry secara default menggunakan port 1099.
Pada sisi server, program membuat sebuah remote service dengan cara membuat locala
object yang menerapkan service tersebut. Berikutnya, objek yang dibuat tersebut diexport ke
RMI, dan kemudian RMI membuat sebuah layanan listening yang menunggu sebuah permintaan
dari client. Setelah melakukan export, server meregisterkan objek tersebut ke RMI Registry
dengan sebuah public name.
Di sisi client, RMI Registry diakses melalui static class Naming. Class ini menyediakan
method lookup() dimana client menggunakannya untuk query sebuah registry. Method lookup()
menerima sebuah URL yang menyatakan nama server dan nama service yang diminta, dan
method ini mengembalikan remote reference object dari yang objek yang diminta. Format
URLnya
rmi://<host_name>[:<name_service_port>]/<service_name>

c.Distribusi Aplikasi RMI

Untuk mendistribusikan aplikasi yang menggunakan RMI, dapat dilakukan dengan cara
menduplikat semua class yang dibutuhkan yang digunakan baik oleh server maupun client,
antara lain :
untuk server :
 remote service interface
 remote service implementation
 stub remote service implementation
 semua server class

untuk client :
 remote service interface
 stub remote service implementation
 server class yang dipanggil oleh client
 semua client class
Rencana Tahapan Penelitian:
Kegiatan

Koleksi
kebutuhan
Analisis
kebutuhan
Design program

Testing

laporan

Implementasi

Minggu ke 1 2 3 4 5 6 7 8 9 10
TUGAS RTI

Paralelisasi Algoritma Sequence Alignment Needleman-


Wunch dengan Menggunakan JAVA RMI

DISUSUN OLEH :

NIPUTU ARGA OKTOVIRAMITHA .S (06407001)

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS TRISAKTI

JAKARTA
2010

Lembar Pengesahan
TUGAS RTI

Paralelisasi Algoritma Sequence Alignment Needleman-


Wunch dengan Menggunakan JAVA RMI

Disetujui Oleh:

Abdul Rochman
Dosen Pembimbing

Anda mungkin juga menyukai