Penyusunan Overlap Graph menggunakan Suffix Tree pada DNA Sequence

PENYUSUNAN OVERLAP GRAPH MENGGUNAKAN SUFFIX
TREE PADA DNA SEQUENCE

ADITRIAN RAHIM

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013

PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Penyusunan Overlap
Graph menggunakan Suffix Tree pada DNA Sequence adalah benar karya saya
dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun
kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip
dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah
disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir
skripsi ini.
Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut

Pertanian Bogor.
Bogor, Agustus 2013
Aditrian Rahim
NIM G64090035

ABSTRAK
ADITRIAN RAHIM. Penyusunan Overlap Graph menggunakan Suffix Tree pada
DNA Sequence. Dibimbing oleh WISNU ANANTA KUSUMA dan SONY
HARTONO WIJAYA.
DNA sequence assembly memiliki peran yang sangat penting dalam analisis
genom. Tahap ini bertujuan untuk merekonstruksi fragmen DNA (contig) dari
penyatuan fragmen-fragmen pendek menggunakan overlap di antara fragmen
tersebut. Metode ini menggunakan overlap graph untuk menyelesaikan masalah.
Pada graf ini, node merepresentasikan fragmen dan edge merepresentasikan
overlap. Penelitian ini mengembangkan sebuah perangkat lunak untuk menyusun
overlap graph menggunakan suffix tree. Evaluasi dilakukan dengan menghitung
jumlah node, jumlah edge dan waktu eksekusi dalam beberapa nilai pada
minimum overlap. Minimum overlap didefinisikan sebagai panjang minimum dari
substring yang diperhitungkan dalam overlap di antara dua fragmen. Hasil
evaluasi menunjukkan bahwa jumlah node, jumlah edge dan waktu eksekusi

meningkat seiring dengan menurunnya nilai minimum overlap.
Katakunci: Overlap Layout Consensus, DNA sequence assembly, overlap graph,
pendeteksian overlap.

ABSTRACT
ADITRIAN RAHIM. Overlap Graph Construction using Suffix Tree on DNA
Sequence. Supervised by WISNU ANANTA KUSUMA and SONY HARTONO
WIJAYA.
The DNA sequence assembly is very important in genome analysis. This step
aims to reconstruct contigous DNA fragment (contigs) from short fragment by
concatenating fragments based on the overlap region among them. This method
employs overlap graph for solving the problems. In this graph, nodes represent
fragments and edges represent overlap. This research developed a software for
constructing overlap graph using suffix tree. The evaluation was conducted by
measuring the number of nodes, number of edges, and the execution time in many
values of minimum overlap. The minimum overlap is defined as the minimum
length of substring which is considered as the overlap region between two
fragments. The evaluation results showed that the number of nodes, the number of
edges, and the execution time were increased with the decreasing of the minimum
overlap value.

Keywords: Overlap Layout Consensus, DNA sequence assembly, overlap graph,
overlap detection.

PENYUSUNAN OVERLAP GRAPH MENGGUNAKAN SUFFIX
TREE PADA DNA SEQUENCE

ADITRIAN RAHIM

Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada
Departemen Ilmu Komputer

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013


Penguji : Toto Haryanto, SKom, MSi

Judul Skripsi : Penyusunan Overlap Graph menggunakan Suffix Tree pada DNA
Sequence
Nama
: Aditrian Rahim
NIM
: G64090035

Disetujui oleh

Dr Wisnu Ananta Kusuma, ST MT
Pembimbing I

Sony Hartono Wijaya, SKom MKom
Pembimbing II

Diketahui oleh

Dr Ir Agus Buono, MSi MKom

Ketua Departemen

Tanggal Lulus:

PRAKATA
Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas
segala karunia, rahmat dan ridho-Nya sehingga karya ilmiah ini berhasil
diselesaikan. Penelitian ini berfokus pada bidang bioinformatika dengan
menitikberatkan pada DNA sequence assembly sebagai salah satu proses untuk
mengetahui suatu whole genome pada suatu organisme. Hal yang menjadi
motivasi penulis dalam memilih topik ini yaitu bioinformatika sebagai salah satu
bidang ilmu yang selalu menawarkan metode-metode baru untuk menyelesaikan
masalah-masalah terutama pada bidang biologi molekuler melalui bantuan
teknologi informasi.
Terima kasih penulis ucapkan kepada Bapak Dr Wisnu Ananta Kusuma ST,
MT selaku pembimbing pertama yang senantiasa selalu membimbing, mengawasi
dan mengingatkan penulis pada penelitian ini, serta penulis juga ucapkan terima
kasih kepada Bapak Sony Hartono Wijaya SKom, MKom selaku pembimbing
kedua yang telah memberikan masukan dan kritik yang sangat bermanfaat untuk
memperbaiki penelitian ini. Tak lupa pula penulis menyampaikan terima kasih

kepada ayah, ibu dan kakak yang selalu mendukung dan mendoakan selama
penelitian ini berlangsung. Ungkapan terima kasih juga disampaikan kepada
teman-teman satu bimbingan yaitu Novaldo, Gary, Albert, Aries serta rekan-rekan
satu angkatan Ilmu Komputer angkatan 46 yang secara langsung dan tidak
langsung membantu penulis pada penelitian ini.
Semoga karya ilmiah ini bermanfaat bagi perkembangan ilmu pengetahuan
secara umum dan ilmu komputer pada khususnya.

Bogor, Agustus 2013
Aditrian Rahim

DAFTAR ISI
DAFTAR TABEL

vi

DAFTAR GAMBAR

vi


DAFTAR LAMPIRAN

vi

PENDAHULUAN

1

Latar Belakang

1

Perumusan Masalah

2

Tujuan Penelitian

2


Manfaat Penelitian

2

Ruang Lingkup Penelitian

2

METODE

2

Mengumpulkan dan Menyiapkan Data DNA Sequence

2

Membentuk Suffix Tree dari Data DNA Sequence

5


Menyusun Overlap Graph

7

Evaluasi

7

HASIL DAN PEMBAHASAN

7

Mengumpulkan dan Menyiapkan Data DNA Sequence

7

Membentuk Suffix Tree dari Data DNA Sequence

9


Menyusun Overlap Graph

9

Evaluasi Jumlah Node dan Edge

11

Evaluasi Waktu Eksekusi

13

Kompleksitas

14

SIMPULAN DAN SARAN

14


Simpulan

14

Saran

14

DAFTAR PUSTAKA

15

RIWAYAT HIDUP

22

DAFTAR TABEL
1
2
3

Daftar nukleotida penyusun DNA
Informasi organisme yang digunakan
Paramater data DNA sequence menggunakan MetaSim

3
8
8

DAFTAR GAMBAR
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Database organisme hasil unduhan pada MetaSim
Tampilan database organisme pada MetaSim
Konfigurasi parameter pada MetaSim
Tampilan simulasi data DNA sequence
Suffix tree untuk string 'AACGT'
Relaxed Suffix Tree untuk string ‘AACGT’
Ilustrasi penyusunan overlap graph
Staphylococcus aureus dalam fail FASTA
Pseudocode pembentukan suffix tree
Pseudocode pembentukan overlap graph
Ilustrasi pendeteksian overlap antarfragmen
Overlap graph R1 dan R2
Grafik jumlah edge dengan minimum overlap
Grafik waktu eksekusi dengan minimum overlap

3
4
4
5
6
6
7
8
9
10
10
11
12
13

DAFTAR LAMPIRAN
1
2
3

Source Code
Screen Shoot Program
Hasil keluaran perangkat lunak

16
20
21

1

PENDAHULUAN
Latar Belakang
Pemanfaatan teknologi komputer telah mengalami perkembangan pesat
terutama pada ilmu biologi. Telah banyak aplikasi-aplikasi komputer yang
dikembangkan untuk membantu para peneliti biologi dalam memecahkan masalah,
seperti membandingkan DNA sequence, meneliti struktur protein dan perakitan
DNA (DNA assembly) (Maftuhah 2007).
Salah satu permasalahan dalam DNA sequencing adalah belum adanya
teknologi sequencer yang mampu menghasilkan whole genome dalam satu kali
eksekusi. Oleh karena itu, diperkenalkanlah teknik Shotgun sequencing dan DNA
sequence assembly. Teknik Shotgun sequencing yaitu teknik memotong DNA
secara acak yang menghasilkan fragmen-fragmen (reads) yang saling overlap.
DNA sequence assembly merupakan proses penyusunan kembali fragmenfragmen tersebut menjadi kesatuan DNA sequence yang utuh.
Teknologi sequencer yang selama ini dikenal adalah Sanger sequencer dan
sequncer generasi kedua. Sanger sequencer menghasilkan panjang fragmen jauh
lebih panjang (500 bp) dibandingkan dengan sequencer generasi kedua (200 bp
dan 35-50 bp), namun Sanger menghasilkan jumlah fragmen lebih sedikit
dibandingkan dengan yang dihasilkan oleh generasi kedua (Kusuma et al. 2011).
Selain itu, sequencer generasi kedua memiliki waktu eksekusi untuk
menghasilkan fragmen jauh lebih cepat dibandingkan dengan Sanger. Hal inilah
yang menjadi pertimbangan bahwa sequencer generasi kedua lebih banyak
digunakan oleh para peneliti biologi.
Salah satu metode untuk melakukan DNA sequence assembly adalah
dengan pendekatan Hamiltonian path menggunakan overlap graph. Hamiltonian
path adalah jalur terpendek untuk pengunjungan tepat satu kali pada setiap node
dalam suatu graf (Abegunde 2010). Overlap graph merupakan representasi
berbentuk graf dari fragmen-fragmen yang dihasilkan oleh sequencer. Fragmen
direpresentasikan sebagai node dan overlap direpresentasikan sebagai edge.
Pendeteksian overlap antarfragmen sangat sulit dilakukan jika tanpa
proses indexing sebelumnya. Selain itu, pendeteksian overlap membutuhkan
waktu yang cukup lama. Salah satu cara untuk mendeteksi overlap antarfragmen
yaitu dengan membangun suffix tree. Dengan menggunakan suffix tree,
pendeteksian dapat dilakukan dengan lebih cepat jika dibandingkan tanpa proses
indexing sebelumnya. Selain itu, suffix tree merupakan representasi tree yang
dapat menghasilkan suatu algoritme yang efisien untuk mendeteksi overlap pada
suatu string dengan kompleksitas linear (Gusfield 1997).
Penelitian sebelumnya yang dilakukan oleh Hernandez (2008) yaitu
membangun
sebuah
perangkat
lunak
atau
assembler
dengan
mengimplementasikan prefix array. Assembler tersebut memberikan informasi
jumlah node dan jumlah edge dalam suatu data DNA sequence.
Pada penelitian ini akan dikembangkan suatu perangkat lunak yang mirip
seperti yang dilakukan oleh Hernandez (2008), namun diimplementasikan
menggunakan suffix tree. Data masukan pada perangkat lunak nantinya akan
berupa data DNA sequence.

2
Perumusan Masalah
1
2

Perumusan masalah pada penelitian ini adalah:
bagaimana cara untuk mengimplementasikan suffix tree untuk mendeteksi
overlap antarfragmen DNA?
bagaimana membentuk graf yang merepresentasikan node sebagai fragmen
dan edge sebagai overlap?
Tujuan Penelitian

Tujuan dari penelitian ini adalah membangun perangkat lunak untuk
mendeteksi overlap antarfragmen DNA dengan mengimplementasikan suffix tree
dan memberikan informasi graf berupa node dan edge.
Manfaat Penelitian
Penelitian ini diharapkan dapat menjadi dasar untuk pengembangan
perangkat lunak perakitan DNA yang memiliki kompleksitas algoritme dan waktu
eksekusi yang lebih baik.
Ruang Lingkup Penelitian
1

2
3
4

Ruang lingkup penelitian ini antara lain adalah:
penelitian ini hanya berfokus pada penyusunan overlap graph yang
menampilkan informasi jumlah node dan edge pada suatu data DNA
sequence
data DNA sequence merupakan data yang diunduh pada website National
Center for Biotechnology Information (NCBI) dan dipilih tiga organisme
data DNA sequence yang digunakan pada penelitian ini adalah data error
free hasil simulasi menggunakan perangkat lunak MetaSim (Richter et al.
2008)
bahasa pemrograman yang digunakan adalah C++ dengan library tambahan
seqan (Döring 2008).

METODE
Penelitian ini dilakukan dalam beberapa tahap agar ketercapaian tujuan
dapat terlaksana. Terdapat empat tahapan penelitian, di antaranya mengumpulkan
dan menyiapkan data DNA sequence, membentuk suffix tree dari data DNA
sequence, membentuk overlap graph, evaluasi jumlah node dan edge pada graf
dan evaluasi waktu eksekusi.
Mengumpulkan dan Menyiapkan Data DNA Sequence
Deoxyribonucleic acid (DNA) adalah asam nukleat yang mengandung
instruksi genetis untuk perkembangan dan fungsionalitas organisme. Fungsi yang
paling utama DNA di dalam suatu sel makhluk hidup adalah sebagai tempat

3
penyimpanan informasi jangka panjang. Setiap makhluk hidup terdiri dari DNA
genom. Suatu DNA genom merupakan representasi cetak biru (blue print) yang
memiliki instruksi-instruksi untuk membangun suatu komponen lain dari sel,
seperti molekul RNA bahkan protein. Bagian dari DNA yang membawa informasi
genetis disebut dengan gen (Maftuhah 2007).
DNA terbentuk dari susunan unsur pokok yang disebut dengan nukleotida.
Sebuah nukleotida terhubung dengan salah satu dari empat jenis nitrogen organik
yang disimbolkan pada empat huruf seperti pada Tabel 1.
Tabel 1 Daftar nukleotida penyusun DNA
Kode 1 huruf
A
C
G
T

Nama Nukleotida
Adenine
Cytosine
Guanine
Thymine

Kategori
Purine
Pyrimidine
Purine
Pyrimidine

Pada DNA terdapat rangkaian komplementer yaitu adenine (A) berpasangan
dengan thymine (T) (berlaku sebaliknya) dan cytosine (C) berpasangan dengan
guanine (G) (berlaku sebaliknya). Apabila diketahui urutan nukleotida pada salah
satu rangkaian, maka dapat ditentukan nukleotida pasangannya. Karena sifat DNA
tersebut maka untuk menyatakan ukuran suatu DNA digunakanlah satuan base
pair (bp) (Maftuhah 2007).
Data yang digunakan pada penelitian ini adalah data yang diunduh dari
website
NCBI
pada
alamat
web
ftp://ftp.ncbi.nlm.nih.gov/genomes/Bacteria/all.fna.tar.gz. Gambar 1 merupakan
basis data organisme hasil unduhan yang telah berhasil dimasukan pada MetaSim.
Data hasil unduhan tersebut adalah hasil sequencing dari makhluk hidup tertentu.
Data sequence ini terdiri atas fragmen-fragmen DNA yang memiliki panjang
tertentu yang akan dijadikan fail masukkan untuk diimplementasikan.

Gambar 1 Database organisme hasil unduhan pada MetaSim

4
Data DNA sequence diperoleh dari simulasi menggunakan perangkat lunak
yang bernama MetaSim. Dengan menggunakan MetaSim, keberadaan error pada
suatu DNA sequence dapat dibangkitkan ataupun tidak. Seperti yang diketahui
bahwa data masukkan dari sebuah assembler yang menggunakan pendekatan graf
sangat sensitif terhadap eror. Oleh karena itu, data DNA sequence pada penelitian
ini perlu disimulasikan agar data sequence tersebut tidak memiliki kesalahan
(error free). Pemilihan organisme yang akan disimulasikan menggunakan
MetaSim tersaji pada Gambar 2.

Gambar 2 Tampilan database organisme pada MetaSim
Konfigurasi MetaSim yang tersaji pada Gambar 3 terdapat beberapa
parameter yang harus dipilih dan diisi, “Preset Name” diisi untuk memberikan
nama dari konfigurasi itu sendiri, lalu “Number of Reads or Mate Pairs” yaitu
jumlah fragmen yang ingin kita bangkitkan pada suatu DNA sequence. “Error
Model” terdiri atas 454, Empirical, Sanger dan Exact, untuk mendapatkan data
sequence yang tidak memiliki kesalahan maka harus dipilih “Error Model” Exact.
“DNA Clone Size Distribution Type” terdiri atas Uniform, Normal, dan Empirical,
pada penelitian ini tipe distribusi yang dipilih yaitu Normal, sedangkan “Mean”
yaitu panjang sequence setiap fragmennya, penelitian ini dipilih “Mean” dengan
panjang 35 bp dan “Second Parameter” dipilih 0 (nol). Konfigurasi ini
menghasilkan fail yang berformat .mprf.

Gambar 3 Konfigurasi parameter pada MetaSim

5
Setelah memilih organisme pada basis data dan membentuk konfigurasi
pada MetaSim, selanjutnya adalah membuat simulasi data sequence seperti pada
Gambar 4. “Choose Settings:” memilih konfigurasi yang telah dibuat sebelumnya.
Setelah itu pilih organisme yang ingin disimulasikan pada “Files” berformat .mprf.
selanjutnya pilih “Run Simulation”. Pada akhir proses simulasi didapatkan data
sequence yang menjadi data masukan bagi perangkat lunak pada penelitian ini.

Gambar 4 Tampilan simulasi data DNA sequence

Membentuk Suffix Tree dari Data DNA Sequence
Suffix tree adalah struktur data yang merepresentasikan sufiks dari string
sedemikian sehingga memudahkan implementasi tertentu dengan cepat untuk
berbagai operasi pada string. Suffix tree dari string S adalah pohon yang sisinya
(edge) diberikan label string yang merupakan sufiks dari S dan sesuai dengan
tepat satu jalur dari root ke leaf. Dalam membangun pohon untuk string S
membutuhkan waktu dan ruang linear tergantung panjang S. Jika sudah terbentuk,
beberapa operasi dapat dilakukan lebih cepat, misalnya mencari substring di S.

6
Suffix tree untuk string S yang panjangnya n didefinisikan sebagai suatu
pohon sedemikian sehingga:
a lintasan dari root ke leaf memiliki hubungan satu-satu dengan sufiks
dari S.
b setiap edge diisi string tak kosong.
c semua simpul dalam (internal node) kecuali root memliki paling sedikit
dua anak (child).
Di dalam suffix tree, string S selalu ditambahkan dengan sebuah terminal
symbol yang tidak termasuk di dalam substring S, biasanya dilambangkan dengan
$ seperti pada Gambar 5 (Maftuhah 2007).

Gambar 5 Suffix tree untuk string 'AACGT'
Dalam implementasinya suffix tree yang digunakan adalah suffix tree yang
lebih sederhana. Suffix tree tersebut tidak menggunakan terminal symbol. Suffix
tree ini disebut dengan relaxed suffix tree, seperti pada Gambar 6. Hal ini untuk
menghemat ruang memori untuk string yang sangat panjang pada data sequence.
Penghilangan terminal symbol ini sangat berpengaruh jika data DNA sequence
yang menjadi data masukkan bagi perangkat lunak memiliki panjang sequence
yang sangat panjang. Untuk itulah terminal symbol ini dihilangkan.
Relaxed suffix tree ini digunakan untuk menyimpan string data sequence
dan nantinya akan digunakan sebagai pendeteksian overlap pada setiap fragmen
data sequence.

Gambar 6 Relaxed Suffix Tree untuk string ‘AACGT’

7
Menyusun Overlap Graph
Pada tahapan penelitian ini dibentuk suatu graf. Setiap fragmen yang saling
overlap akan dijadikan sebuah graf. Setiap node merepresentasikan fragmen dan
setiap edge merepresentasikan overlap di antara dua fragmen tersebut. Overlap
graph dapat dibentuk jika suffix tree pada masing-masing fragmen telah terbentuk.
Setelah suffix tree terbentuk, akhiran pada suatu fragmen dibandingkan dengan
awalan fragmen lainnya. Jika akhiran fragmen yang satu sama dengan akhiran
fragmen lainnya, kedua fragmen tersebut saling overlap satu sama lain. Salah satu
contoh penyusunan overlap graph dapat dilihat pada Gambar 7.

Gambar 7 Ilustrasi penyusunan overlap graph
Evaluasi
Tahapan akhir pada penelitian ini adalah evaluasi. Setelah overlap graph
terbentuk, selanjutnya adalah menganalisis data keluaran yang dihasilkan oleh
perangkat lunak pada penelitian kali ini. Hal-hal yang dianalisis adalah
keterhubungan antara jumlah node dan jumlah edge dengan minimum overlap,
setelah itu membandingkan waktu eksekusi dengan minimum overlap.
Kompleksitas perangkat lunak dianalisis dari kode program dan psedocode yang
telah dibentuk.

HASIL DAN PEMBAHASAN
Mengumpulkan dan Menyiapkan Data DNA Sequence
Penelitian ini menggunakan tiga organisme yang dipilih pada basis data
MetaSim. Tiga organisme ini dipilih karena panjang sequence yang dimiliki
organisme tersebut relatif lebih pendek dengan yang lainnya agar waktu eksekusi
yang didapatkan tidak terlalu lama. Informasi organisme tersebut dapat dilihat
pada Tabel 2.

8
Tabel 2 Informasi organisme yang digunakan
No.

1
2
3

Nama Organisme

Staphylococcus aureus subsp.
aureus ED98 plasmid pAVY
Acetobacter pasteurianus IFO
3283-01 plasmid pAPA01-060
Lactobacillus plantarum WCFS1
plasmid pWCFS102

Panjang
Gi
Sequence
Asli (bp)
1442
262225764
1815

258513334

1917

54307232

Dari setiap organisme tersebut akan dilakukan simulasi masing-masing satu
kali. Setiap satu kali simulasi menghasilkan sebuah fail berformat FASTA (.fna).
Dari hasil simulasi tersebut nantinya didapatkan tiga fail yang menjadi data
masukkan pada penelitian ini. Dapat dijamin bahwa tiga fail tersebut merupakan
data DNA sequence yang tidak memiliki error. Maksud dari error ini adalah
setiap nukleotida pada fragmen atau reads tidak ada yang diganti dengan
nukleotida lainnya, namun simulasi ini tidak dapat menghilangkan fragmen yang
saling redundant dengan fragmen lainnya.
Untuk mendapatkan data DNA sequence yang tidak memiliki kesalahan,
maka error model yang dipilih adalah exact dengan panjang setiap fragmen
(Mean) yaitu 35 bp. Informasi parameter yang digunakan untuk setiap organisme
pada setiap simulasi dapat dilihat pada Tabel 3.
Tabel 3 Paramater data DNA sequence menggunakan MetaSim
No.

1
2
3

Nama Organisme

Staphylococcus
aureus plasmid
Acetobacter
pasteurianus
plasmid
Lactobacillus
plantarum
plasmid

Number
of Read /
Mate
Pairs
1500

Error
Model

Exact

DNA Clone Mean
Second
Size
(bp) Parameter
Distribution
Type
Normal
35
0.0

2000

Exact

Normal

35

0.0

2000

Exact

Normal

35

0.0

Gambar 8 merupakan dua baris pertama dari suatu data DNA sequence yang
telah disimulasikan menggunakan perangkat lunak MetaSim.

Gambar 8 Staphylococcus aureus dalam fail FASTA

9
Dalam fail FASTA tanda lebih besar “>” bermakna bahwa satu fragmen
mulai terbaca dan akhir dari urutan fragmen tersebut akan ditandai lagi dengan
tanda “>” pada baris yang lainnya.
Membentuk Suffix Tree dari Data DNA Sequence
Setelah data DNA sequence didapatkan, langkah selanjutnya adalah
membentuk suffix tree dari setiap fragmen-fragmen yang ada pada data DNA
sequence. Perangkat lunak yang dikembangkan pada penelitian kali ini akan
menerima data masukkan berupa fail dengan format FASTA (.fna) pada suatu
path fail. Selanjutnya perangkat lunak membaca satu per satu fragmen yang ada
pada fail yang berformat .fna tersebut. Setiap satu fragmen selesai dibaca maka
perangkat lunak langsung membentuk suffix tree. Node-node dari tree tersebut
disimpan dalam suatu memori yang nantinya akan diakses kembali untuk
pendeteksian overlap pada fragmen yang lainnya. Proses ini akan terus dilakukan
sampai semua fragmen yang ada pada data masukkan DNA sequence dibaca
seluruhnya oleh perangkat lunak dan node-node dari setiap suffix tree pada setiap
fragmen disimpan ke dalam memori. Pseudocode untuk pembentukan suffix tree
pada setiap fragmen dapat dilihat pada Gambar 9.
for all reads R in data sequence do
generate suffix tree in each reads;
while (!all node generated)
new node;
insert node;
endwhile
endfor

Gambar 9 Pseudocode pembentukan suffix tree
Pembentukan suffix tree ini membutuhkan waktu yang sangat lama jika
fragmen yang dibaca memiliki panjang string yang sangat panjang. Namun
sebaliknya, jika fragmen yang dibaca memiliki panjang string yang relatif pendek,
maka pembentukan suffix tree pun cepat. Pada penelitian ini panjang setiap
fragmen relatif pendek yaitu hanya 35 bp atau dengan kata lain hanya memiliki 35
karakter nukleotida untuk setiap fragmennya, tetapi jumlah fragmen yang dibaca
yaitu 1500 fragmen dan 2000 fragmen. Oleh karena itu, suffix tree yang terbentuk
berjumlah 1500 dan 2000.
Menyusun Overlap Graph
Pada proses ini, penyusunan overlap graph dapat dilakukan jika semua
fragmen pada data DNA sequence sudah ter-index ke dalam memori. Setelah
proses pembentukan suffix tree selesai, penyusunan ataupun pendeteksian overlap
graph pada masing-masing fragmen pun lebih mudah dilakukan. Hal ini
dikarenakan setiap string yang mewakili akhiran (suffix) pada setiap fragmen akan
dibandingkan dengan awalan (prefix) dari fragmen lainnya. Jika akhiran pada
fragmen yang satu cocok atau match dengan awalan pada fragmen lainnya, dua
fragmen tersebut saling overlap.

10
Pseudocode dan Ilustrasi pendeteksian overlap pada masing-masing fragmen
tersaji pada Gambar 10 dan Gambar 11.
for all suffixTree.nodes in data sequence do
while (!all node compared)
for all reads in data sequence do
comparing suffixTree.nodes with reads.prefix;
if ((suffixTree.nodes ==
reads.prefix) AND (reads.prefix
>= minimumOverlap))
"overlap detected";
endif
endfor
endwhile
endfor

Gambar 10 Pseudocode pembentukan overlap graph
Seperti pada Gambar 11, terdapat dua buah fragmen, yaitu R1 dan R2. R1
berisi string ‘TTCGAT’ dan R2 ‘GATAAT’. R1 memiliki substring yang saling
overlap dengan R2 yaitu pada substring ‘GAT’, sebaliknya R2 memiliki substring
yang saling overlap dengan R1 di ‘T’. Substring yang saling overlap ini dengan
mudah terlihat jika R1 dan R2 memiliki panjang string yang pendek, namun jika
R1 dan R2 tersebut memiliki string yang panjang dan terdiri atas banyak fragmen,
maka akan sulit dilakukan pendeteksian overlap. Oleh karena itu suffix tree
membantu untuk pendeteksian tersebut.

Gambar 11 Ilustrasi pendeteksian overlap antarfragmen
R1 memiliki suffix tree yang terdiri atas ‘TTCGAT’, ‘TCGAT’, ‘CGAT’,
‘GAT’, ‘AT’ dan ‘T’, sedangkan R2 memiliki suffix tree ‘GATAAT’, ‘ATAAT’,
‘TAAT’, ’AAT’, ‘AT’ dan ‘T’. Terlebih dahulu R1 mendeteksi apakah R1
memiliki string yang overlap dengan R2. Perangkat lunak mengakses semua
kemungkinan node pada suffix tree R1 untuk dilakukan proses matching dengan
R2, dari proses penelusuran node pada R1 maka terdapat node yang berisi
substring dari R1 yaitu ‘GAT’ cocok dengan awalan pada fragmen R2. Perangkat
lunak mencatat bahwa R1 saling overlap dengan R2 pada subtring ‘GAT’. Proses
ini dilakukan terus-menerus sampai semua fragmen selesai mendeteksi overlap
dengan fragmen yang lainnya.
Setelah itu penyusunan overlap graph dilakukan, yaitu dengan mencatat
informasi semua fragmen yang saling overlap. Seperti pada Gambar 12, jika R1

11
dan R2 saling overlap pada substring ‘GAT’ maka R1 dan R2 sebagai node, dan
‘GAT’ sebagai edge. Begitu pula R2 saling overlap dengan R1, R2 dan R1
sebagai node dan substring ‘T’ sebagai edge.

Gambar 12 Overlap graph R1 dan R2
Pada perangkat lunak yang dikembangkan dimasukkan satu parameter
tambahan, yaitu minimum overlap yang terdeteksi. Hal ini dilakukan karena jika
tidak ada minimum overlap maka program akan mengeksekusi sangat lama data
masukkan yang diberikan, karena data masukkan berupa fail sequence yang
sangat besar. Parameter minimum overlap pada penelitian ini yaitu 10, 15, 20 dan
25.
Data keluaran dari perangkat lunak ini ialah jumlah node, jumlah edge,
waktu eksekusi dan fail informasi overlap graph yang berformat .txt. Informasi
data keluaran perangkat lunak dapat dilihat pada Lampiran 1.
Evaluasi Jumlah Node dan Edge
Pada evaluasi ini dibandingkan hubungan antara jumlah edge dan minimum
overlap. Gambar 13 memperlihatkan bahwa dengan semakin besarnya minimum
overlap yang diberikan, jumlah edge pada graf yang dihasilkan semakin kecil.
Sebaliknya, jika diberikan minimum overlap yang kecil menghasilkan jumlah
egde pada graf semakin besar. Dengan minimum overlap yang lebih sedikit,
peluang untuk terjadinya overlap antarfragmen pada data DNA sequence semakin
besar, hal inilah yang menyebabkan edge yang dihasilkan pada graf akan lebih
banyak.
Pada penelitian ini tidak dibandingkan jumlah node pada graf yang
dihasilkan karena jumlah node sama dengan jumlah fragmen pada data DNA
sequence. Hal ini bermakna bahwa setiap fragmen pada data DNA sequence
saling mengalami overlap.
Pada Gambar 13, bakteri Staphylococcus aureus memiliki jumlah fragmen
yang lebih sedikit dibandingkan dengan jumlah fragmen 2 bakteri lainnya, yaitu
1500 fragmen. Sedangkan untuk bakteri Acetobacter pasteurianus dan
Lactobacillus plantarum memiliki jumlah fragmen yang sama yaitu 2000
fragmen. Bakteri Staphylococcus aureus memiliki jumlah edge yang paling
sedikit karena jumlah fragmen yang menjadi data masukan perangkat lunak
merupakan jumlah fragmen yang paling sedikit pula. Berbeda halnya dengan
bakteri Acetobacter pasteurianus dan Lactobacillus plantarum, dengan jumlah
fragmen yang sama, didapatkan jumlah edge yang dihasilkan bakteri Acetobacter
pasteurianus lebih banyak dibandingkan dengan jumlah edge yang dihasilkan
oleh bakteri Lactobacillus plantarum.

35000

35000

30000

30000

25000

Jumlah edge

Jumlah edge

12

20414

20000

16290
12409

15000

8606

10000
5000
0

30062
24168

25000

18404

20000

12465

15000
10000
5000

10

15

20

0

25

10

15

20

25

Minimum overlap

Minimum overlap
Staphylococcus aureus

Acetobacter pasteurianus

35000

Jumlah edge

30000
25000

22125
17797

20000

13567

15000

9316

10000
5000
0

10

15

20

25

Minimum overlap
Lactobacillus plantarum

Gambar 13 Grafik jumlah edge dengan minimum overlap
Hal ini dikarenakan data redundant pada bakteri Acetobacter pasteurianus
lebih banyak dibandingkan dengan data redundant yang dimiliki oleh bakteri
Lactobacillus plantarum. Data redundant merupakan fragmen pada data sequence
yang memiliki nukleotida-nukleotida yang sama dengan nukleotida pada fragmen
lain. Dengan kata lain suatu fragmen merupakan salinan dari fragmen lainnya. Hal
ini yang menyebabkan graf semakin kompleks karena dengan adanya data
redundant akan terbentuk dua buah node yang sama dengan edge yaitu node itu
sendiri. Sebagai contoh R1 : ATTGCTA dan R2 : ATTGCTA, akan terbentuk
suatu node dari R1 ke R2 dan sebaliknya dengan edge AATGCTA. Hal inilah
yang seharusnya dihilangkan pada tahap pra proses yaitu menghilangkan salah
satu data redundant dengan menghapus R1 saja atau R2 saja. Dengan begitu akan
didapatkan graf yang lebih sederhana.
Menurut Zerbino (2009), connectivity pada suatu graf akan meningkat jika
nilai parameter k relatif kecil dan connectivity pada graf akan menurun jika nilai
parameter k relatif besar. Nilai parameter k ini adalah nilai yang menjadi jumlah
karakter yang menjadi node dan edge pada suatu graf. Hal ini memiliki relevansi
terhadap jumlah minimum overlap yang ada pada penelitian ini. Jika nilai
minimum overlap kecil maka jumlah node dan jumlah edge yang dihasilkan pun
akan semakin banyak dan kompleks yang menyebabkan connectivity antarnode
semakin besar.

13
Hal ini berbanding terbalik dalam hal specificity. Jika nilai k semakin besar,
specificity pada graf pun akan semakin besar pula. Node-node pada graf akan
semakin spesifik untuk saling berhubungan karena jumlah node dan edge yang
dihasilkan lebih sedikit. Hal ini juga relevan terhadap nilai minimum overlap pada
overlap graph pada penelitian kali ini.
Evaluasi Waktu Eksekusi
Seperti yang diketahui sebelumnya, hasil yang diberikan oleh perangkat
lunak pada penelitian kali ini yaitu informasi jumlah node, jumlah edge, waktu
eksekusi dan suatu fail .txt yang memberikan hasil print out fragmen mana saja
yang saling overlap pada data sequence.
Pada evaluasi kali ini, eksekusi untuk setiap bakteri pada masing-masing
minimum overlap dilakukan sebanyak 5 kali. Data yang tersaji pada grafik di
Gambar 14 merupakan data yang diperoleh dari rata-rata yang dilakukan
pencatatan waktu eksekusi sebanyak 5 kali. Hal ini dilakukan untuk mendapatkan
rataan karena setiap kali eksekusi didapatkan waktu eksekusi yang berbeda.

250000 239532 223921

200000
150000

152551 146257
139531 139295

100000
50000
0

10

15

20

Waktu eksekusi (ms)

Waktu eksekusi (ms)

250000

150000
100000
50000
0

25

210293 207022

200000

10

Minimum overlap

15

20

25

Minimum overlap

Staphylococcus aureus

Acetobacter pasteurianus

Waktu eksekusi (ms)

250000 240485 237037 233616 231625
200000
150000
100000
50000
0

10

15

20

25

Minimum overlap
Lactobacillus plantarum

Gambar 14 Grafik waktu eksekusi dengan minimum overlap
Dari grafik pada Gambar 14, memperlihatkan bahwa parameter minimum
overlap yang diberikan yaitu 10, 15, 20 dan 25 saling berbanding terbalik dengan
hasil eksekusi yang ada. Hal ini membuktikan bahwa semakin besar minimum

14
overlap yang diberikan, waktu eksekusi program pun akan relatif semakin cepat.
Namun sebaliknya, jika minimum overlap yang diberikan kecil, maka waktu
eksekusi program akan semakin lama. Jika minimum overlap kecil, semua
kemungkinan overlap akan semakin banyak dan program akan membutuhkan
waktu yang lebih lama untuk mendeteksi serta mencatat overlap pada
antarfragmen.
Kompleksitas
Kompleksitas dalam membangun suffix tree dan pendeteksian overlap serta
membentuk overlap graph adalah O(n3). Kompleksitas ini didapatkan dari hasil
yang ada pada pseudocode yang disajikan pada Gambar 9 dan Gambar 10.
Gambar 9 merupakan pseudocode pembentukan suffix tree dengan kompleksitas
O(n2) yang memiliki dua buah nested loop di dalamnya. Akan tetapi, worst case
secara keseluruhan perangkat lunak yang dibangun pada penelitian kali ini yaitu
O(n3). Kompleksitas seperti ini memiliki performa yang buruk untuk ukuran data
DNA sequence yang sangat besar, karena waktu eksekusi program terhadap data
masukan akan sangat lama.

SIMPULAN DAN SARAN
Simpulan
Penelitian ini telah mampu menghasilkan perangkat lunak yang mampu
mendeteksi dan membentuk overlap graph pada suatu data DNA sequence
menggunakan suffix tree. Perangkat lunak ini pun telah berhasil memberikan
informasi jumlah node dan jumlah edge.
Penelitian ini juga telah berhasil membuktikan bahwa jumlah node dan edge
dipengaruhi oleh panjang minimum overlap yang didefinisikan pada setiap
fragmen. Kompleksitas yang terbentuk pada perangkat lunak tergolong buruk,
karena perangkat lunak ini memiliki kompleksitas O(n3).
Saran
1

2

Saran untuk penelitian selanjutnya:
melakukan tahap pra proses untuk menghapus data redundant pada data
DNA sequence agar menghasilkan node dan edge yang lebih sederhana
menggunakan metode prefix tree
menerapkan metode ACGT-Words Tree yang dikembangkan oleh Jen-Wei
Hu (2003) untuk mendeteksi overlap antarfragmen agar didapatkan waktu
eksekusi yang lebih cepat.

15

DAFTAR PUSTAKA
Abegunde T, 2010. Comparison of DNA sequence assembly algorithms using
mixed data sources [tesis]. Saskatoon (CAN): University of Saskatchewan
Döring A, Weese D, Rausch T, Reinert K. 2008. SeqAn an efficient, generic C++
library for sequence analysis. BMC Bioinformatics. 9:11.doi:10.1186/14712105-9-11.
Gusfield D. 1997. Algorithms on Strings, Trees, and Sequences. University of
California (US) : Cambridge University Press.
Hernandez D, Francois P, Farinelli L, Osteras M, Schrenzel J. 2008. De novo
bacterial genome sequencing: Millions of very short reads assembled on a
desktop computer. IPSJ Transactions on Bioinformatics. 18:802-809. doi:
10.1101/gr.072033.107.
Hu JW, 2003. An ACGT-Words tree for efficient data access in genomic
databases [tesis]. Taiwan (CHN): National Sun Yat-sen University.
Kusuma WA, Ishida T, Akiyama Y. 2011. A combined approach for de novo
DNA sequence assembly of very short reads. IPSJ Transactions on
Bioinformatics. 4(10):21-33. doi: 10.2197/ipsjtbio.4.21.
Maftuhah DN, 2007. Pencarian string dengan menggunakan metode indexing
pada data genomic [skripsi]. Depok (ID): Universitas Indonesia.
Richter DC, Ott F, Auch AF, Huson DH, Schmid R. 2008. MetaSim – A
sequencing simulator for genomics and metagenomics. Plos One. 3(10):e3373.
doi:10.1371/journal.pone.0003373.
Zerbino DR, 2009. Velvet: algorithms for de novo short read assembly using de
Bruijn graphs [disertasi]. Cambridge (UK): University of Cambridge.

16
Lampiran 1 Source Code

#include
#include
#include
#include
#include







using namespace seqan;
using namespace std;
typedef Iterator::Type TStringSetIterator;
typedef Iterator::Type TIntSetIterator;
typedef Index< String, IndexWotd > TMyIndex;
static double
{
double
double
return
}

diffclock(clock_t clock1,clock_t clock2)
diffticks=clock1-clock2;
diffms=(diffticks)/(CLOCKS_PER_SEC/1000);
diffms;

StringSet bacaSekuens(char* filename)
{
StringSet sekuens;
DnaString sekuen;
string line;
ifstream myfile (filename);
if (myfile.is_open())
{
while ( myfile.good() )
{
getline (myfile,line);
sekuen = line;
appendValue(sekuens, sekuen);
}
myfile.close();
}
return sekuens;
}
StringSet bacaFile(char* filename)
{
StringSet sekuens;
StringSet ids;
SequenceStream
seqStream(filename);
if(isGood(seqStream))
{
readAll(ids, sekuens, seqStream);
}
return sekuens;
}

17
Lampiran 1 Lanjutan
vector getSuffixTree(StringSet & sekuens)
{
vector indexVector;
StringSet suffixtree;
for (TStringSetIterator it = begin(sekuens); it != end(sekuens);
++it) {
TMyIndex myIndex(value(it)); //membuat index suffix tree
Iterator ::
Type myIterator(myIndex); //membuat iterator suffix tree
while (!atEnd(myIterator))
{
//cout