koreksi dna sequencing error dengan metode

advertisement
KOREKSI DNA SEQUENCING ERROR DENGAN METODE
SPECTRAL ALIGNMENT
NOVALDO CAESAR
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 Koreksi DNA
Sequencing Error dengan Metode Spectral Alignment 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
Novaldo Caesar
NIM G64090124
ABSTRAK
NOVALDO CAESAR. Koreksi DNA Sequencing Error dengan Metode Spectral
Alignment. Dibimbing oleh WISNU ANANTA KUSUMA dan SONY
HARTONO WIJAYA.
Teknologi second generation DNA sequencing mampu menghasilkan data
pembacaan dalam jumlah besar dalam waktu yang relatif singkat dibandingkan
dengan teknologi Sanger Shotgun. Untuk menangani jumlah data yang besar
tersebut pada tahap assembly, digunakanlah teknologi DNA sequence assembly
yang menggunakan pendekatan graf. Teknologi ini diketahui sensitif terhadap
sequencing error. Masalah ini dapat diatasi dengan melakukan koreksi sequencing
error baik sebelum atau sesudah proses assembly. Pada penelitian ini telah
dihasilkan sebuah perangkat lunak yang mampu mendeteksi dan mengoreksi
sequencing error pada data sekuens DNA dengan metode spectral alignment
sebagai tahapan praproses. Data sekuens DNA yang mengandung error
dibangkitkan dengan menggunakan perangkat lunak MetaSim. Data hasil simulasi
dikoreksi dengan perangkat lunak yang dihasilkan pada penelitian ini. Hasil
koreksi dievaluasi dengan mengukur kompleksitas graf yang diwakili oleh jumlah
node. Dari hasil evaluasi diperoleh informasi bahwa metode spectral alignment
mampu menyederhanakan graf yang dihasilkan pada tahap DNA sequence
assembly, yaitu ditunjukkan dengan berkurangnya jumlah node.
Kata kunci: bioinformatika, koreksi error, praproses, spectral alignment
ABSTRACT
NOVALDO CAESAR. DNA Sequencing Error Correction with Spectral
Alignment. Supervised by WISNU ANANTA KUSUMA and SONY HARTONO
WIJAYA.
Second generation DNA sequencing technology is able to generate reads in
a massive amount and in a relatively short time compared to the traditional Sanger
Shotgun technology. Graph based DNA sequence assembly is used to handle
these big data in assembly step. However, the graph based DNA sequence
assembly is sensitive to sequencing error. This problem can be solved by
performing an error correction step before or after the assembly process. In this
research, a software to detect and correct sequencing error in DNA sequence data
was developed by employing spectral alignment technique. This technique is
implemented as a pre-processing step before the DNA sequence assembly process.
DNA sequences which contain error are generated using MetaSim software.
Errors in the data sequences are corrected using the software developed in this
research. The results are evaluated using the Velvet assembler by comparing the
complexity of the graph produced, represented by the number of nodes in the
graph. The evaluation results show that the data sequences with error produce
more complex graph than the corrected data sequences. It can be concluded that
the correction of DNA sequencing error using spectral alignment method can
simplify the complexity of graph produced by the DNA sequence assembly step.
Keywords: bioinformatics, error correction, pre-process, spectral alignment
Koreksi DNA Sequencing Error dengan Metode
Spectral Alignment
NOVALDO CAESAR
Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Ilmu Komputer
pada
Departemen Matematika dan Ilmu Pengetahuan Alam
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013
Judul Skripsi: Koreksi DNA Sequencing Errordengan Metode Spectral Alignment
N arna
: N ovaldo Caesar
NIM
: G64090 124
Disetujui oleh
STMT
Sony Hartono Wijaya, SKorn MKorn
Pernbirnbing II
MSiMKorn
Tanggal Lulus:
Judul Skripsi : Koreksi DNA Sequencing Error dengan Metode Spectral
Alignment
Nama
: Novaldo Caesar
NIM
: G64090124
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 syukur penulis panjatkan kepada Allah subhanahu wa ta’ala karena
berkat rahmat, karunia, dan ridho-Nya karya ilmiah ini berhasil diselesaikan.
Penelitian ini berada pada ranah bioinformatika dengan menitikberatkan pada
pengoreksian error yang dihasilkan pada tahap DNA sequencing. Pesatnya
kemajuan pengembangan metode-metode dalam dunia bioinformatika menjadi
motivasi penulis dalam melakukan penelitian ini.
Terima kasih penulis ucapkan kepada Bapak Dr Wisnu Ananta Kusuma, ST
MT sebagai pembimbing pertama yang telah membimbing, mengawasi, dan
mengawal penulis dalam penelitian ini. Terima kasih juga kepada Bapak Sony
Hartono Wijaya, SKom MKom sebagai pembimbing kedua yang memberikan
masukan serta kritik yang membangun guna memperbaiki penelitian ini. Tidak
lupa penulis menyampaikan terima kasih atas kasih sayang, dukungan, dan doa
yang selalu diberikan oleh ibu dan kedua kakak sepanjang pengerjaan penelitian
ini.
Semoga penelitian ini bermanfaat bagi perkembangan ilmu pengetahuan
khususnya ilmu komputer di masa depan, serta dapat dijadikan acuan untuk
perkembangan penelitian pada tema sejenis di masa mendatang.
Bogor, Agustus 2013
Novaldo Caesar
DAFTAR ISI
DAFTAR TABEL
vi
DAFTAR GAMBAR
vi
DAFTAR LAMPIRAN
vi
PENDAHULUAN
1
Latar Belakang
1
Perumusan Masalah
1
Tujuan Penelitian
2
Manfaat Penelitian
2
Ruang Lingkup Penelitian
2
METODE
2
Akuisisi Data Sekuens DNA
2
Implementasi Metode Spectral Alignment
3
Evaluasi
5
HASIL DAN PEMBAHASAN
6
Simulasi Data Sekuens DNA dengan MetaSim
6
Alur Kerja Perangkat Lunak yang Dihasilkan dalam Mengoreksi Error
7
Evaluasi Hasil Koreksi Perangkat Lunak yang Dihasilkan
SIMPULAN DAN SARAN
11
13
Simpulan
13
Saran
13
DAFTAR PUSTAKA
14
RIWAYAT HIDUP
22
DAFTAR TABEL
1 Spesifikasi organisme yang digunakan pada penelitian
2 Konfigurasi parameter untuk membangkitkan data sekuens DNA
dengan simulasi MetaSim
3 Informasi hasil eksekusi perangkat lunak yang dihasilkan dalam
mendeteksi dan mengoreksi error
4 Hasil DNA sequence assembly menggunakan Velvet
3
6
11
13
DAFTAR GAMBAR
1 Contoh format data sekuens DNA hasil simulasi MetaSim
2 Diagram alir tahapan kerja perangkat lunak yang dihasilkan dalam
melakukan DNA sequencing error
3 Hasil konstruksi graf dengan dua fragmen yang tidak mengandung
error
4 Hasil konstruksi graf dengan salah satu fragmen mengandung error
substitusi
7
7
11
12
DAFTAR LAMPIRAN
1
2
3
Source code program
Cara menggunakan program
Percobaan beberapa nilai parameter multiplicity dan pengaruhnya
terhadap jumlah anggota spectrum
15
20
21
1
PENDAHULUAN
Latar Belakang
Kemajuan teknologi dalam ranah DNA sequencing membuka peluang pada
perkembangan teknologi DNA sequence assembly. Jumlah reads yang dihasilkan
teknologi DNA sequencing generasi kedua jauh lebih besar dibandingkan dengan
menggunakan pendekatan tradisional Sanger Shotgun. Sedangkan panjang per
fragmen yang dihasilkan lebih pendek. Hasil pembacaan sekuens pendek tersebut
sering dikenal sebagai short read. Sebagai contoh Illumina Genome Analyzer
mampu menghasilkan 1.5 triliun bps data sekuens dengan panjang sekuens 36,
dalam satu kali menjalankan program selama 60 jam (Shi et al. 2009).
Telah banyak tools mapan yang dikembangkan untuk melakukan DNA
sequence assembly dari hasil DNA sequencing dengan teknologi Sanger Shotgun.
Namun pada umumnya memiliki kinerja buruk untuk data sekuens yang
berukuran besar. Karena itu dibutuhkan tools untuk DNA sequence assembly yang
mampu menangani data dalam jumlah besar. Maka diperkenalkanlah teknik DNA
sequence assembly dengan pendekatan graf, yang mampu melakukan assembly
terhadap data sekuens DNA yang berukuran besar.
Pendekatan graf untuk DNA sequence assembly yang paling sering
digunakan dalam 20–30 tahun terakhir adalah overlap layout consensus (OLC).
Namun ternyata terdapat kelemahan dalam DNA sequence assembly
menggunakan pendekatan OLC, yakni kesulitan dalam menangani masalah repeat
pada graf. Belum ada algoritme polinomial yang mampu mengatasi masalah
repeat untuk menentukan path yang benar pada overlap graph. Untuk mengatasi
masalah ini dikembangkanlah metode DNA sequence assembly dengan
menggunakan pendekatan Eulerian path pada graf De-Bruijn.
DNA sequence assembly dengan pendekatan graf khususnya graf De Bruijn
ternyata mampu mengatasi jumlah sekuens berukuran besar serta mengatasi
masalah repeat. Permasalahannya adalah setiap proses DNA sequencing pasti
menghasilkan error. Sedangkan, DNA sequence assembly dengan pendekatan
graf bersifat sensitif terhadap error. Terdapatnya error pada hasil DNA
sequencing dapat meningkatkan kompleksitas graf yang dihasilkan. Permasalahan
ini dapat diselesaikan dengan mendeteksi dan mengoreksi error yang muncul
pada tahap sequencing (Chaisson et al. 2004). Untuk itu dirasakan perlu adanya
upaya mendeteksi dan mengoreksi error yang muncul pada tahap DNA
sequencing sebagai tahap praproses sebelum dilakukan tahap DNA assembly (Shi
et al. 2009). Penelitian ini menitikberatkan pada pengembangan perangkat lunak
yang mampu mendeteksi dan mengoreksi data hasil DNA sequencing dengan
menggunakan metode spectral alignment.
Perumusan Masalah
Bagaimanakah langkah-langkah yang harus dilakukan untuk mengkoreksi
data sekuens DNA hasil pembacaan pada tahap DNA sequencing menggunakan
tahap praproses dengan metode spectral alignment? Apakah upaya mengoreksi
error sebagai tahap praproses sebelum DNA sequence assembly mampu
menyederhanakan graf yang dihasilkan pada tahap DNA sequence assembly?
2
Tujuan Penelitian
Penelitian ini ditujukan untuk mengembangkan perangkat lunak untuk
mengoreksi data sekuens DNA dengan menggunakan teknik spectral alignment
sebagai tahap praproses sebelum dilakukan DNA sequence assembly. Selain itu,
penelitian ini ditujukan untuk membandingkan kompleksitas graf hasil DNA
sequence assembly antara data set yang belum dikoreksi dengan yang sudah
dikoreksi.
Manfaat Penelitian
Perangkat lunak yang dihasilkan dalam penelitian ini dapat digunakan untuk
mengoreksi DNA sequencing error pada data hasil DNA sequencing. Sehingga
nantinya dihasilkan data hasil sequencing yang bersifat bebas error untuk
selanjutnya dilakukan tahap DNA sequence assembly.
Ruang Lingkup Penelitian
Ruang lingkup pada penelitian ini antara lain:
1 Penelitian ini hanya menitikberatkan pada tahap praproses, sedangkan untuk
melakukan DNA sequence assembly menggunakan assembler yang telah
dikembangkan oleh Zerbino dan Birney (2008), yaitu Velvet.
2 Data sekuens DNA yang digunakan pada penelitian ini merupakan hasil
simulasi dengan perangkat lunak MetaSim. Data sekuens disimulasikan dengan
menyertakan error menggunakan model error Sollexa.
3 Penelitian ini menggunakan 2 jenis data set untuk dibandingkan graf hasil
proses assembly-nya. Data set pertama merupakan data sekuens DNA yang
sebelumnya telah dilakukan tahap praproses. Sedangkan data set kedua
merupakan data sekuens DNA yang tanpa melewati tahap praproses
METODE
Secara garis besar, penelitian ini terdiri atas empat tahap, yaitu akuisisi data
sekuens DNA, implementasi metode spectral alignment, koreksi data sekuens
DNA dan evaluasi hasil koreksi.
Akuisisi Data Sekuens DNA
Data yang digunakan pada penelitian ini merupakan data sekuens DNA
yang dibangkitkan melalui simulasi dengan perangkat lunak MetaSim. Hasil
keluaran dari perangkat lunak MetaSim adalah fragmen-fragmen DNA hasil
proses DNA sequencing yang disimulasikan. Untuk itu perlu ditentukan
organisme yang disimulasikan proses DNA sequencing-nya yang dipilih dari basis
data MetaSim. Pada penelitian ini dipilih tiga organisme untuk disimulasikan.
Ketiga organisme beserta informasinya dapat dilihat pada Tabel 1.
3
Tabel 1 Spesifikasi organisme yang digunakan pada penelitian
Panjang sekuens
Organisme
Gi
lengkap (bp)
Staphylococcus aureus subsp.
1 442
262 225 764
aureus ED98 plasmid pAVY
Acetobacter pasteurianus IFO
1 815
258 513 334
3283-01 plasmid pAPA01-060
Lactobacillus plantarum
1 917
54 307 228
WCFS1 plasmid pWCFS101
Implementasi Metode Spectral Alignment
Lingkungan Pengembangan Perangkat Lunak
Pada tahap implementasi, dibuat sebuah program komputer yang mampu
menerapkan metode spectral alignment untuk mengkoreksi error pada data
sekuens DNA yang telah diperoleh pada tahap akuisisi data. Lingkungan
pengembangan perangkat lunak pada penelitian ini adalah sebagai berikut:
: C++
 Bahasa pemrograman
 Sistem operasi
: Microsoft Windows 8
 Integrated development environment
: Microsoft Visual Studio 2012
 Build system
: CMake
 Source control
: TortoiseSVN
Penelitian ini memanfaatkan library SeqAn (Döring et al. 2008). SeqAn
adalah sebuah library C++ berisi algoritme dan struktur data efisien untuk
melakukan analisis sekuens yang berfokus pada data biologis. SeqAn bersifat
open source dan dapat ditemukan di situs resminya pada alamat
http://www.seqan.de.
Solid Tuple dan Weak Tuple
Setelah data sekuens DNA hasil pembacaan didapat, maka dari data tersebut
dirumuskan mana saja tuple yang merupakan solid tuple dan mana yang
merupakan weak tuple. Diberikan himpunan sejumlah k data sekuens hasil
pembacaan yang disebut R, dengan R = {r1, r2, r3, ..., rk}, dan | ri | = L, dengan ri ∈
{A,C,G,T}L untuk seluruh i pada selang 1 ≤ i ≤ k. Simbol A, C, G dan T
merupakan kode nukleotida dengan A untuk adenin, C untuk sitosin, G untuk
guanin, dan T untuk timin. Diketahui pula dua bilangan bulat yang disebut
multiplicity m (m > 1) dan length l (l < L). Jika sebuah l-tuple didefinisikan
sebagai sebuah string DNA dengan panjang l, maka sebuah l-tuple dikatakan solid
terhadap R dan m, jika l-tuple tersebut merupakan substring dari minimal m
pembacaan yang terdapat pada himpunan R, dan dikatakan weak jika terjadi
sebaliknya. Sebagai contoh, diberikan parameter multiplicity, m = 2 dan R = {
AAAA, AAAC, AATC, ATCA }. Sebuah l-tuple dengan length 3, disebut 3-tuple
berisi AAA dikatakan sebagai solid tuple, karena AAA merupakan substring dari
minimal 2 anggota himpunan R, yaitu AAAA dan AAAC.
4
Penyusunan Himpunan Spectrum
Sebuah spectrum dari sebuah himpunan sekuens DNA yaitu R = {r1, r2, r3,
..., rk}, parameter multiplicity m dan length l, dinotasikan sebagai Tm,l(R). Definisi
dari spectrum Tm,l(R) adalah himpunan seluruh l-tuple yang solid saja dari
himpunan sekuens DNA R dengan parameter multiplicity sebuah bilangan bulat m.
Jadi spectrum didapat dari hasil perumusan l-tuple yang merupakan solid tuple
yang telah didapatkan pada tahap sebelumnya. Setelah tahap ini dimiliki sebuah
himpunan spectrum yang digunakan pada tahap penelitian selanjutnya.
Deteksi dan Koreksi Error
Setelah didapatkan sebuah himpunan spectrum Tm,l(R), maka selanjutnya
dilakukan proses koreksi error dari data sekuens DNA dengan metode spectral
alignment. Diberikan sebuah string sekuens DNA s, spectrum Tm,l(R), serta
himpunan seluruh T-String. Sebuah sekuens DNA s* dikatakan sebagai sebuah TString jika setiap l-tuple pada s* merupakan elemen dari spectrum Tm,l(R).
Permasalahan spectral alignment adalah mencari anggota himpunan TString s* didalam suatu himpunan seluruh T-String yang meminimumkan fungsi
jarak d(s, s*). Fungsi jarak yang digunakan pada penelitian ini adalah jarak
Levenshtein. Sebagai contoh jika S adalah himpunan T-String, dengan anggotanya
s1 = ATCGAGCT, s2 = ATCCATCT, s3 = ATCGAACT, dan sekuens yang
terdapat kesalahan pembacaan s = ATCGGGCT. Maka masalah spectral
alignment adalah menemukan s* anggota S yang meminimumkan jarak
Levenshtein antara s dan s* . Pada contoh tersebut yang paling dekat ialah s1 dan
s*, dengan kesalahan pembacaan pada kode nukleotida ke-3 dari kiri, yang
seharusnya hasil pembacaannya adalah A, tetapi dibaca sebagai G.
Proses mengkoreksi error pada sekuens DNA dilakukan kepada seluruh
data hasil pembacaan yang digunakan pada penelitian secara iteratif. Setelah
seluruh data dikoreksi, didapatkan sebuah himpunan R* yang merupakan
himpunan sekuens DNA yang telah dikoreksi error-nya dan himpunan R yang
merupakan data sekuens DNA sebelum dilakukan koreksi error. Kedua himpunan
sekuens DNA ini dievaluasi pada tahapan selanjutnya.
Jarak Levenshtein / Edit Distance
Pada metode spectral alignment, fungsi jarak digunakan untuk menentukan
skor yang menyatakan kedekatan antara dua string sekuens DNA. Pada penelitian
ini, fungsi jarak yang digunakan adalah jarak Levenshtein atau sering juga disebut
sebagai edit distance (Levenshtein 1966). Jarak Levenshtein dihitung dengan
menentukan seberapa banyak aksi single-character edit yang harus dilakukan
untuk merubah suatu string menjadi string lain. Aksi yang digolongkan sebagai
single-character edit adalah insertion, deletion dan substitution. Secara matematis
jarak Levenshtein antara dua string a dan b dapat dirumuskan sebagai berikut :
a (
le
(
)
{
n{
le
le
le
(
(
(
)
)
)
)
n(
)
sela nn a
[
]
5
Untuk setiap satu aksi yang diterapkan dihitung sebagai 1 skor. Sebagai
contoh:
1 k tten → s tt ng, enghas lkan skor 3 ( substitution “k” enjad “s”, “e
enjad “ ” dan insertion karakter “g” d akh r string)
2 s tten → s tt n, enghas lkan skor 1 ( substitution karakter “ ” enjad “e”)
Dalam implementasinya pada penelitian ini, setiap aksi tidak diberikan skor
1, melainkan -1. Hal ini untuk memberikan pendekatan yang lebih intuitif, di
mana skor dua string yang lebih besar menandakan tingkat kemiripan string yang
lebih tinggi.
Pattern Matching dengan Enhanced Suffix Array
Struktur data enhanced suffix array merupakan suffix array dengan
penambahan tabel longest common prefix (LCP), yang digunakan untuk
menyimpan panjang maksimum dari prefix yang sama antara dua suffix suf[i] dan
suf[i-1] pada suffix array. Kegiatan exact pattern matching adalah kegiatan
menentukan apakah sebuah pattern P terdapat pada sebuah string S. Di dalam
konteks exact pattern matching, struktur data enhanced suffix array memiliki
kompleksitas waktu O(m+z) dan space 6n (Abouelhoda et al. 2002).
Kompleksitas tersebut lebih baik jika dibandingkan suffix array dalam hal waktu,
serta jika dibandingkan dengan suffix tree dalam hal space. Karena itu untuk
metode pattern matching pada penelitian ini digunakan struktur data enhanced
suffix array. Kegiatan pattern matching pada penelitian ini digunakan pada tahap
penyusunan himpunan spectrum serta penentuan apakah sebuah sekuens
digolongkan sebagai sebuah T-String. Pada penyusunan spectrum, data sekuens
di-indeks kedalam bentuk enhanced suffix array, dengan pattern yang ingin
ditemukan dalam indeks adalah seluruh kemungkinan permutasi berulang untuk
tuple sepanjang l. Sedangkan pada penggolongan T-String, himpunan spectrum
di-indeks ke dalam bentuk enhanced suffix array, dengan pattern yang ingin
ditemukan dalam indeks adalah seluruh substring dari satu instance pada data
sekuens. Teknik pattern matching yang memiliki performa baik perlu dilakukan
pada penelitian ini karena data sekuens DNA umumnya berukuran besar. Dengan
menggunakan struktur data enhanced suffix array diharapkan proses pattern
matching dapat dilakukan dalam waktu yang optimum dan relatif cepat.
Evaluasi
Setelah diperoleh dua data set sekuens DNA yaitu R yang merupakan data
sekuens DNA yang tidak melewati tahap koreksi error, dan R* yang melewati
tahap koreksi error, maka kedua data set tersebut dievaluasi. Untuk melakukan
evaluasi, diperlukan sebuah perangkat lunak DNA sequence assembler. Pada
penelitian ini sequence assembler yang digunakan adalah Velvet. Velvet
merupakan kumpulan algoritma untuk memanipulasi graf De Bruijn dalam rangka
melakukan sequence assembly (Zerbino dan Birney 2008).
Teknik evaluasi yang dilakukan adalah dengan menjadikan himpunan R dan
R* sebagai input dari Velvet. Setelah diperoleh graf dari kedua data set hasil
pembacaan dengan Velvet, maka dihitung jumlah node dari masing-masing graf
6
yang dihasilkan. Jumlah node merepresentasikan kompleksitas graf yang
dihasilkan data. Data set yang masih mengandung error cenderung memiliki graf
dengan lebih banyak node dibandingkan graf yang dihasilkan dari data set yang
telah dikoreksi error-nya. Sehingga graf yang dihasilkan data set yang belum
dikoreksi error-nya akan berukuran lebih besar dan lebih kompleks.
HASIL DAN PEMBAHASAN
Simulasi Data Sekuens DNA dengan MetaSim
Untuk setiap organisme dilakukan simulasi sebanyak satu kali. Simulasi
dilakukan dengan menggunakan perangkat lunak MetaSim. Simulasi dilakukan
untuk menghasilkan data sekuens DNA yang mengandung error. Data yang
dibangkitkan sengaja diberikan error agar nantinya dapat dikoreksi oleh perangkat
lunak yang dihasilkan pada penelitian ini. Model error yang digunakan pada
MetaSim adalah model Sollexa dengan panjang per fragmen 36 bp. Pada model
error yang digunakan, jenis error yang ditimbulkan dibatasi hanya pada error
substitusi. Konfigurasi parameter MetaSim untuk setiap simulasi dapat dilihat
pada Tabel 2.
Tabel 2
Konfigurasi parameter untuk membangkitkan data sekuens DNA
dengan simulasi MetaSim
Number
DNA clone
of reads
Error
size
Second
Organisme
Mean
or mate
model
distribution
parameter
pairs
type
Staphylococcus
Empirical
1500
Normal
36
0
aureus
– Sollexa
Acetobacter
Empirical
2000
Normal
36
0
pasteurianus
– Sollexa
Lactobacillus
Empirical
2000
Normal
36
0
plantarum
– Sollexa
Keluaran proses simulasi yang dilakukan dengan MetaSim pada ketiga
organisme adalah tiga fail berformat FASTA (.fna) untuk masing-masing
organisme. Setiap fail berisi data set sekuens DNA yang mengandung error hasil
dari simulasi dengan MetaSim. Keenam data set inilah yang digunakan pada
penelitian ini. Contoh format data yang dihasilkan dari MetaSim dapat dilihat
pada Gambar 1.
7
Gambar 1 Contoh format data sekuens DNA hasil simulasi MetaSim
Alur Kerja Perangkat Lunak yang Dihasilkan dalam Mengoreksi Error
Penelitian ini menghasilkan sebuah perangkat lunak yang mampu
mengoreksi error yang terjadi pada tahap DNA sequencing dengan metode
spectral alignment. Diagram alir tahapan kerja perangkat lunak yang dihasilkan
dalam mengoreksi error dapat dilihat pada Gambar 2.
Gambar 2 Diagram alir tahapan kerja perangkat lunak yang dihasilkan dalam
melakukan DNA sequencing error
8
Perangkat lunak menerima input berupa path fail dengan format FASTA
(.fna) berisi data fragmen DNA yang akan dikoreksi. Data masukan dibaca baris
per baris yang selanjutnya disebut sebagai reads. Selanjutnya, dibangkitkan
permutasi tanpa perulangan dari nukleotida A, C, G, dan T sepanjang l. Pada
penelitian ini, parameter l yang digunakan adalah 5. Sehingga, banyaknya
permutasi yang dihasilkan berjumlah 45 string DNA yang terdiri atas nukleotida
A, C, G, dan T. Hasil permutasi ini untuk selanjutnya disebut sebagai pool.
Pada tahap selanjutnya disusun himpunan spectrum dari reads dan pool.
Untuk setiap string anggota pool diklasifikasikan sebagai weak atau solid dengan
merujuk pada himpunan reads. Dengan begitu terbentuklah suatu himpunan
spectrum di mana anggotanya merupakan seluruh anggota pool yang digolongkan
solid. Dalam menentukan apakah sebuah string dari pool merupakan solid/weak
dipengaruhi oleh parameter multiplicity yang digunakan. Penentuan parameter m
dipilih berdasarkan percobaan dengan menghitung jumlah anggota himpunan
spectrum yang dihasilkan dengan menggunakan nilai m = {2,3,4,5,6,7,8,9,10}.
Pada penelitian ini dipilih parameter m = 10, karena pada nilai tersebut pengaruh
perubahan nilai m terhadap perubahan jumlah anggota spectrum sudah tidak
terlalu signifikan. Percobaan untuk menentukan nilai parameter m dapat dilihat
pada Lampiran 3. Algoritme 1 menunjukkan prosedur penyusunan himpunan
spectrum dari anggota reads yang solid saja.
Algoritme 1 Prosedur penyusunan himpunan spectrum dari anggota reads yang
solid saja
/*
Masukan : Himpunan reads, himpunan pool, m = 10
Keluaran: Himpunan spectrum
*/
set numOcc = 0
set indeks = 0
for i := 1...length(pool)
for j := 1...length(reads)
if (pool[i] equal reads[j])
numOcc++
end if
if (numOcc >= m)
spectrum[indeks++] = reads[j]
end if
end for
end for
return spectrum
Pada tahap selanjutnya disusun himpunan T-String dengan merujuk pada
himpunan spectrum. Untuk setiap anggota reads ditentukan apakah fragmen
tersebut merupakan T-String atau bukan T-String. Maka diperoleh himpunan TString dari himpunan reads. Untuk menentukan sebuah fragmen merupakan TString atau bukan T-String perlu diketahui seluruh substring dari fragmen
tersebut, lalu himpunan substring tersebut dibandingkan dengan spectrum.
Anggota himpunan reads yang bukan merupakan T-String dideteksi sebagai
fragmen yang mengandung error. Fragmen-fragmen yang dideteksi mengandung
error dikoreksi dengan menggunakan metode spectral alignment. Algoritme 2
9
menunjukkan prosedur penyusunan himpunan substrings dari sebuah read.
Sedangkan Algoritme 3 menunjukkan prosedur pengklasifikasian sebuah read
sebagai T-String atau bukan T-String.
Algoritme 2 Prosedur penyusunan himpunan substrings dari sebuah read anggota
himpunan reads
/*
Masukan : Sebuah read anggota himpunan reads, panjang per
substring l
Keluaran: Himpunan substrings dari read
*/
string inf
int indeks
for i := 1...length(read)-l
inf = infix(read,i,i+1)
substrings[indeks++] = infix
end for
return substrings
Algoritme 3 Prosedur pengklasifikasian sebuah read sebagai T-String atau bukan
T-String
/*
Masukan : Sebuah read anggota himpunan reads, himpunan substrings
dari read
Keluaran: True jika read merupakan T-String, False jika read bukan
T-String
*/
set status = 1;
for i := 1...length(substrings)
for j := 1...length(spectrum)
if (substring[i] equal spectrum[j])
status *= 1
else status *= 0
if (status = 0) break
end for
if (status = 1) return true
//read merupakan T-String
else return false
//read bukan T-String
end for
Untuk setiap fragmen yang mengandung error dilakukan proses pairwise
sequence alignment dengan setiap anggota dari himpunan T-String. Pada tahap
alignment tersebut dilakukan proses menentukan skor kedekatan antara fragmen
yang mengandung error dan setiap anggota T-String. Skor kedekatan ditentukan
dengan menggunakan jarak Levenshtein. Proses alignment dan scoring pada
pengembangan perangkat lunak penelitian ini memanfaatkan salah satu class pada
library SeqAn yaitu class align. Pada dasarnya pairwise sequence alignment
adalah permasalahan optimasi untuk menentukan solusi terbaik bagaimana sebuah
sekuens diturunkan dari sekuens yang lain (Döring et al. 2008). Untuk
memberikan solusi optimal dalam masalah optimasi tersebut, class align pada
library SeqAn menggunakan pendekatan dynamic programming dengan algoritme
Needleman dan Wunsch (1970).
10
Dengan demikian, setiap fragmen memiliki skor masing-masing untuk
setiap anggota T-String. Untuk mengoreksi fragmen yang mengandung error,
dicari anggota T-String manakah yang memiliki skor tertinggi, artinya memiliki
jarak paling dekat dengan fragmen tersebut. Fragmen yang mengandung error
tersebut dikoreksi dengan mensubstitusikan fragmen dengan T-String dengan skor
tertinggi. Proses tersebut berulang untuk setiap fragmen yang mengandung error
secara iteratif, hingga seluruh error yang terdeteksi berhasil dikoreksi. Hasil
keluaran perangkat lunak adalah sebuah fail dengan format FASTA (.fna) yang
berisi data reads di mana seluruh error yang terdeteksi telah dikoreksi. Algoritme
4 menunjukkan prosedur deteksi dan koreksi DNA sequencing error dengan
metode spectral alignment.
Algoritme 4 Prosedur deteksi dan koreksi DNA sequencing error dengan metode
spectral alignment
/*
Masukan : Himpunan posisi seluruh anggota reads yang bukan
T-String, himpunan T-String, himpunan reads
Keluaran: Himpunan reads yang telah dikoreksi
*/
int pos, tstring_max_pos, max_score, count;
String[] align
set pos = 0
for i := 1...length(posisi)
set pos = posisi[i]
align[0] = pos
int idx
set idx = 0
set max_score = -1000
for j := 1...length(TString)
align[1] = TString[j]
//alignment dan scoring antar elemen pada array align
int score = globalAlignment(align)
if (score > max_score)
max_score = score
tstring_max_pos = idx
idx++
end for
reads[pos] = TStrings[max_pos]
//himpunan reads
//pada
posisi
‘pos’
//dikoreksi
T-String
//posisi ‘max_pos’
end for
return reads
Data yang mengandung error yang telah dibangkitkan sebelumnya menjadi
masukan untuk perangkat lunak yang dihasilkan. Perangkat lunak inilah yang
mendeteksi dan mengoreksi error yang terdapat pada ketiga data set. Maka
keluaran dari perangkat lunak ini adalah tiga data set yang telah dikoreksi errornya. Informasi hasil eksekusi perangkat lunak yang dihasilkan untuk masukan
data sekuens ketiga organisme dapat dilihat pada Tabel 3.
11
Tabel 3
Informasi hasil eksekusi perangkat lunak yang dihasilkan dalam
mendeteksi dan mengoreksi error
Jumlah
reads
Jumlah
Jumlah
Waktu
Jumlah
yang
Organisme
anggota anggota
eksekusi
reads
terdeteksi
spectrum T-String
(ms)
sebagai
error
Staphylococcus
1500
844
1198
302
166 730
aureus
Acetobacter
2000
937
1816
184
172 004
pasteurianus
Lactobacillus
2000
911
1763
237
203 061
plantarum
Evaluasi Hasil Koreksi Perangkat Lunak yang Dihasilkan
Keterkaitan Jumlah Node dengan Keberhasilan Koreksi Error
Pada proses pengkonstruksian graf dalam proses DNA DNA sequence
assembly, terdapatnya sequencing error yang tidak dikoreksi dapat mempengaruhi
struktur dan kompleksitas graf yang dihasilkan. Adanya error dapat menimbulkan
percabangan-percabangan yang tidak perlu pada graf yang dihasilkan. Dengan
demikian, kompleksitas sebuah graf dapat diukur dari jumlah node dan jumlah
edge yang dihasilkan proses DNA sequence assembly dari suatu data sekuens.
Misalkan ingin dikonstruksi graf dari dua buah string fragmen DNA, yaitu
AATGC dan GCCAGT. Jika pada fragmen yang seharusnya dibaca sebagai
AATGC, tetapi terdapat sebuah error substitusi sehingga dibaca sebagai AATAC,
maka graf yang dihasilkan oleh fragmen yang mengandung error lebih kompleks
dibandingkan fragmen yang tidak mengandung error. Gambar 3 menunjukkan
hasil konstruksi graf pada fragmen yang tidak mengandung error. Gambar 4
menunjukkan hasil konstruksi graf pada fragmen di mana terdapat error
substitusi.
overlap
Gambar 3 Hasil konstruksi graf dengan dua fragmen yang
tidak mengandung error
12
overlap
Gambar 4 Hasil konstruksi graf dengan salah satu fragmen
mengandung error substitusi
Pada graf hasil konstruksi yang diilustrasikan pada Gambar 3, jumlah node
yang dihasilkan adalah delapan buah node, sedangkan pada Gambar 4, jumlah
node yang dihasilkan adalah Sembilan buah node. Selain itu, terlihat pada Gambar
2 akibat adanya error substitusi, graf yang dihasilkan memiliki cabang yang tidak
perlu dan pada akhirnya menghasilkan jumlah node yang lebih banyak. Ilustrasi
pada Gambar 1 dan Gambar 2 menunjukkan bahwa sequencing error, dalam hal
ini error substitusi menyebabkan graf yang dihasilkan pada proses DNA sequence
assembly menjadi lebih kompleks.
Evaluasi Hasil Koreksi dengan Velvet
Hasil pengoreksian error dengan metode spectral alignment dievaluasi
menggunakan DNA sequence assembler yang telah dikembangkan yaitu Velvet.
Data masukan yang digunakan pada Velvet adalah keenam data set yang telah
dipersiapkan yang terdiri atas tiga pasang data set sekuens DNA. Setiap pasang
mewakili satu organisme yang terdiri atas data sekuens yang masih mengandung
error dan data sekuens yang telah melalui tahap koreksi error. Keenam data set
tersebut masing-masing tersimpan dalam enam fail dengan format FASTA (.fna).
Keluaran dari perangkat lunak Velvet adalah graf De Bruijn yang merupakan hasil
assembly dari data sekuens yang menjadi masukan.
Graf hasil keluaran Velvet untuk setiap kali melakukan DNA sequence
assembly direpresentasikan ke dalam dua fail dokumen plain text bernama
“PreGraph” dan “LastGraph”. Kedua fa l ber s daftar node yang
merepresentasikan graf yang dihasilkan oleh Velvet. Namun yang digunakan
sebaga tolak ukur e aluas pada penel t an n han alah “PreGraph”, sedangkan
“LastGraph” t dak d perhat kan. Hal n d karenakan graf ang d representas kan
pada “LastGraph” erupakan has l akh r dar Vel et ang telah elalu proses
simplifikasi graf dan error removal yang dilakukan oleh Velvet itu sendiri. Hal ini
en ebabkan has l graf pada “LastGraph” enjad t dak rele an terhadap tujuan
penel t an n . Graf ang d representas kan dala fa l “PreGraph” erupakan graf
hasil assembly sebelum dilakukan simplifikasi graf dan error removal oleh
Velvet, sehingga dapat dijadikan tolak ukur keberhasilan perangkat lunak yang
dihasilkan pada penelitian ini dalam konteks melakukan koreksi terhadap
sequencing error.
Dalam setiap proses DNA sequence assembly menggunakan Velvet,
diharuskan untuk mentetukan parameter hash length yang disebut k. Parameter
13
hash length atau k merupakan panjang dari k-mers yang dimasukkan kedalam
hash table. Nilai k haruslah bilangan ganjil, lebih kecil dari nilai
MAXKMERHASH yaitu 31 bp, dan haruslah lebih kecil dibandingkan panjang
per fragmen data masukan. Pada penelitian ini nilai k yang digunakan adalah 17,
19, dan 21. Hasil proses DNA sequence assembly menggunakan Velvet untuk
beberapa nilai k pada ketiga organisme dapat dilihat pada Tabel 4.
Tabel 4 Hasil DNA sequence assembly menggunakan Velvet
Jumlah node
Koreksi
Organisme
error
k = 17
k = 19
k = 21
Staphylococcus
Tidak
83
13
3
aureus
Ya
44
7
2
Acetobacter
Tidak
117
20
11
pasteurianus
Ya
81
11
8
Lactobacillus
Tidak
108
17
8
plantarum
Ya
83
14
8
Dari hasil evaluasi dengan Velvet diperoleh informasi jumlah node yang
dihasilkan untuk setiap data set dengan nilai k = 17, k = 19, dan k = 21. Dapat
dilihat bahwa jumlah node yang dihasilkan data yang telah dikoreksi
menghasilkan graf dengan jumlah node yang lebih sedikit, untuk setiap
organisme, dengan ketiga nilai parameter k. Pengecualian terjadi pada
Lactobacillus plantarum untuk k = 21, baik data set yang belum dikoreksi
maupun yang telah dikoreksi menghasilkan graf dengan jumlah node = 8. Dari
informasi yang didapat, diketahui bahwa perangkat lunak yang dihasilkan telah
mampu mengoreksi error dan menyederhanakan graf yang dihasilkan pada tahap
DNA sequence assembly.
SIMPULAN DAN SARAN
Simpulan
Penelitian ini menghasilkan perangkat lunak yang mampu melakukan
koreksi terhadap sequencing error pada data sekuens DNA dengan metode
spectral alignment. Graf keluaran proses DNA sequence assembly yang
dihasilkan data yang masih mengandung error lebih kompleks dibandingkan
dengan graf yang dihasilkan data yang telah dikoreksi error-nya. Hal ini
menunjukkan bahwa upaya mengoreksi sequencing error sebagai tahap praproses
mampu menyederhanakan graf yang dihasilkan pada tahap DNA sequence
assembly.
Saran
Untuk penelitian selanjutnya disarankan menerapkan algoritma yang sama
dengan menyertakan pemrosesan paralel atau GPU computing untuk memperbaiki
waktu eksekusi program dalam mengoreksi DNA sequencing error. Karena
14
kegiatan koreksi error dengan metode spectral alignment sendiri secara
kesuluruhan membutuhkan waktu komputasi yang tinggi. Diharapkan dengan
diterapkannya konsep pemrosesan paralel maupun GPU computing mampu
memperbaiki waktu eksekusi perangkat lunak dalam mengoreksi error.
DAFTAR PUSTAKA
Abouelhoda MI, Ohlebusch E, Kurtz S. 2002. Optimal exact string matching
based on suffix arrays. Di dalam: String Processing and Information Retrieval;
2002 Jan. Berlin (DE): Springer. hlm 31–43.
Chaisson M, Pevzner PA, Tang H. 2004. DNA sequence assembly with short
reads. Bioinformatics. 20(13):2067–2074.
Döring A, Weese D, Rausch T, Reinert K. 2008. SeqAn an efficient, generic C++
library for sequence analysis. BMC Bioinformatics. 9(1):11.
Levenshtein VI. 1966. Binary codes capable of correcting deletions, insertions and
reversals. Soviet Physics Doklady. 10:707.
Needleman SB, Wunsch CD. 1970. A general method applicable to the search of
similarities in the amino acid sequence of two proteins. J Mol Biol. 48(3):
443–453
Shi H, Schmidt B, Liu W, Wittig WM. 2009. Accelerating error correction in
high-throughput short-read DNA sequencing data with CUDA Di dalam: IEEE
International Symposium on Parallel and Distributed Processing. hlm 1–8.
Zerbino DR, Birney W. 2008. Velvet: algorithms for de novo short read assembly
using de Bruijn graphs. Genome Res. 18(5):821–829.
15
Lampiran 1 Source code program
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
<iostream>
<fstream>
<string>
<tuple>
<vector>
<seqan/sequence.h>
<seqan/file.h>
<seqan/index.h>
<seqan/align.h>
<seqan/seq_io.h>
using namespace seqan;
using namespace std;
typedef Iterator<StringSet<DnaString> >::Type TStringSetIterator;
//iterator untuk stringset DNA
typedef Iterator<StringSet<String<int>> >::Type TIntSetIterator;
//iterator untuk stringset DNA
typedef Iterator<DnaString>::Type TStringIterator; //iterator untuk
stringset DNA
typedef Align<DnaString,ArrayGaps> TAlign;
// align type
//fungsi ini untuk menyusun 1 baris elemen dari hasil generate
permutasi
DnaString getElemenPermutasi(const unsigned *slots, const unsigned L)
{
unsigned i;
DnaString string = "";
for (i = 0; i < L; ++i) {
if(slots[i] == 0)
append(string, 'A');
else if(slots[i] == 1)
append(string, 'C');
else if(slots[i] == 2)
append(string, 'G');
else if(slots[i] == 3)
append(string, 'T');
}
return string;
}
//mengenerate seluruh permutasi dari N karakter, dlm kasus ini
4(A,C,G,T) dengan panjang L, misal L=5, maka permutasi menghasilkan
4^5 = 1024 kemungkinan
StringSet<DnaString> generatePermutasi(const unsigned N, const
unsigned L) {
StringSet<DnaString> stringset;
unsigned i, carry=0;
unsigned *slots = (unsigned*)calloc(L, sizeof(unsigned));
//slots : memori yang dialokasikan untuk array
//sebesar L, dengan ukuran sebesar sekian bytes
while(!carry) {
for (i=0, carry=1; i < L; ++i) {
unsigned b = slots[i] + carry;
16
carry = b/N;
slots[i] = b % N;
}
appendValue(stringset,getElemenPermutasi(slots, L));
}
return stringset;
}
StringSet<DnaString> bacaSekuens(char* filename)
{
StringSet<DnaString> 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<DnaString> bacaFile(char* filename)
{
StringSet<DnaString> sekuens;
StringSet<CharString> ids;
SequenceStream
seqStream(filename);
if(isGood(seqStream))
{
readAll(ids, sekuens, seqStream);
}
return sekuens;
}
StringSet<DnaString> getSpectrum(StringSet<DnaString> const &
sekuens, StringSet<DnaString> & pool, unsigned M)
{
Index<StringSet<DnaString>> esaIndex(sekuens); //bangun index
dari //data sekuens dalam bentuk enhanced suffix array
Finder<Index<StringSet<DnaString>>> esaFinder(esaIndex); //
buat //objek finder dari index
StringSet<DnaString> spectrum;
unsigned numOcc;
//looping pool
for (TStringSetIterator it = begin(pool); it != end(pool);
++it) {
numOcc = 0;
while(find(esaFinder, value(it)))
{
++numOcc;
17
}
if(numOcc >= M)
{
appendValue(spectrum, value(it));
}
clear(esaFinder);
}
return spectrum;
}
//dapatkan seluruh substring sepanjang l dari sebuah sekuen
StringSet<DnaString> getSubstrings(unsigned l, DnaString & sekuen)
{
Infix<String<Dna> >::Type inf;
StringSet<DnaString> substrings;
for(unsigned i=0; i<=length(sekuen) - l; ++i)
{
inf = infix(sekuen, i, i+l);
appendValue(substrings, inf);
}
return substrings;
}
//cek apakah sebuah sekuen merupakan T-String
bool isTString(DnaString & sekuen, StringSet<DnaString> & spectrum,
unsigned l)
{
unsigned status = 1;
StringSet<DnaString> substrings = getSubstrings(l, sekuen);
Index<StringSet<DnaString>> esaIndex(spectrum); //bangun index
dari //data spektrum dalam bentuk enhanced suffix array
Finder<Index<StringSet<DnaString>>> esaFinder(esaIndex); //
buat //objek finder dari index
for(TStringSetIterator it = begin(substrings); it !=
end(substrings); ++it)
{
if(find(esaFinder, value(it)))
status *= 1;
else status *= 0;
if(status == 0) break;
clear(esaFinder);
}
if(status == 1)
return true;
else return false;
}
//mendapatkan seluruh T-String dari set sekuens dengan suatu spectrum
dan //parameter L, serta array yang menyimpan posisi sekuens yang
bukan TString
tuple<StringSet<DnaString>, vector<int> >
getTStrings(StringSet<DnaString> & sekuens, StringSet<DnaString> &
spectrum, unsigned L)
{
18
StringSet<DnaString> TStrings;
vector<int> posisi;
int i = 0;
for(TStringSetIterator iter = begin(sekuens); iter !=
end(sekuens); ++iter)
{
if(isTString(value(iter), spectrum, L))
appendValue(TStrings, value(iter));
else posisi.push_back(i);
i++;
}
tuple<StringSet<DnaString>, vector<int>>
tuple(TStrings,posisi);
return tuple;
}
//menghitung waktu dalam milisecond
static double diffclock(clock_t clock1,clock_t clock2)
{
double diffticks=clock1-clock2;
double diffms=(diffticks)/(CLOCKS_PER_SEC/1000);
return diffms;
}
int main(int, char const **)
{
int start_time, end_time;
start_time = clock();
typedef Iterator<StringSet<DnaString> >::Type
TStringSetIterator; //iterator untuk stringset DNA
StringSet<DnaString> sekuens, pool, spectrum, substrings,
TStrings;
vector<int> posisi;
std::tuple<StringSet<DnaString>, vector<int> > tuple; //tuple
untuk menampung Tstring dan posisi non-Tstring
TAlign align;
const unsigned N = 4; //A,C,G,T
const unsigned L = 5; //L-tuple
const unsigned M = 10; //multiplikasi //580
cout << "baca file.." <<endl;
//sekuens = bacaSekuens("sekuens.txt"); //pembacaan sekuens
darifile
sekuens = bacaFile("input/acetoEm.fna");
cout << "generate permutasi.." << endl;
pool = generatePermutasi(N,L); // pool adalah seluruh
kemungkinan //permutasi untuk karakter A,C,G,T jika dibentuk string
sepanjang 5
cout << "rumuskan spectrum.." << endl;
spectrum = getSpectrum(sekuens, pool, M);
cout << "rumuskan TStrings.." << endl;
tuple = getTStrings(sekuens, spectrum, L);
TStrings = std::get<0>(tuple);
posisi = std::get<1>(tuple);
19
resize(rows(align), 5);
cout << "panjang sekuens : " << length(sekuens) << endl;
cout << "panjang himpunan spektrum : " << length(spectrum) <<
endl;
cout << "panjang himpunan posisi salah : " << length(posisi) <<
endl;
cout << "panjang himpunan Tstring : " << length (TStrings) <<
endl;
cout << "scoring.." << endl;
int pos = 0, tstring_max_pos, max_score, count = 1;;
for(vector<int>::iterator posit = posisi.begin(); posit !=
posisi.end(); ++posit)
{
pos = *posit;
assignSource(row(align,0), sekuens[pos]);
int i = 0;
max_score = -1000;
for(TStringSetIterator it = begin(TStrings); it !=
end(TStrings); ++it)
{
assignSource(row(align,1), value(it));
int score = globalAlignment(align,
Score<int,Simple>(0,-1,-1));
if(score > max_score) {
max_score = score;
tstring_max_pos = i;
}
i++;
}
sekuens[pos] = TStrings[tstring_max_pos];
//sekuens nomor pos + 1 akan digantikan dengan TString
nomor //tstring_max_pos
count++;
}
/*penulisan ke file */
cout << "Tulis ke file -> out.fna . . . " << endl;
StringSet<CharString> ids;
for(int id=1; id<=length(sekuens); id++)
{
appendValue(ids, "seq" + to_string(id));
}
SequenceStream seqStream("out.fna", SequenceStream::WRITE);
if(!isGood(seqStream))
{
std::cerr << "ERROR: Could not write file.\n";
return 1;
}
if (writeAll(seqStream, ids, sekuens) != 0)
{
std::cerr << "ERROR: Could not write to file!\n";
return 1;
20
}
end_time = clock();
cout << endl << "Waktu eksekusi : ";
cout << diffclock(end_time, start_time) << " ms" << endl;
return 1;
}
Lampiran 2 Cara menggunakan program
Perangkat lunak yang dihasilkan dalam penelitian ini yaitu spectralAlignment.exe
dijalankan melalui command prompt di sistem operasi Windows.
Tata cara menjalankan program spectralAlignment.exe adalah sebagai berikut :
1. Letakkan program spectralAlignment.exe pada direktori yang diinginkan.
2. Buka command prompt pada sistem operasi Windows.
3. Pindahkan direktori kerja ke direktori tempat menyimpan program
spectralAlignment.exe
4. Ketikkan perintah pada jendela command line dengan format sebagai berikut :
spectralAlignment [path fail input] [multiplicity]
Dengan tipe fail masukan adalah FASTA dan parameter multiplicity sebuah
bilangan bulat lebih dari 1.
5. Jika program telah selesai, fail keluaran akan tersimpan di direktori tempat
menyimpan spectralAlignment.exe dengan nama out.fna.
Contoh :
Jika diketahui spectralAlignment.exe dan fail masukan dengan nama fail
acetoEm.fna ditempatkan pada direktori N:\spectral alignment, serta parameter
multiplicity 10, maka cara menjalankan program adalah sebagai berikut :
spectralAlignment acetoEm.fna 10
Contoh hasil keluaran program dapat dilihat pada gambar berikut :
Isi direktori setelah selesai menjalankan program dapat dilihat pada gambar
berikut :
21
Lampiran 3 Percobaan beberapa nilai parameter multiplicity dan pengaruhnya
terhadap jumlah anggota spectrum
Jumlah
anggota
spectrum
996
966
947
930
923
917
914
913
911
Multiplicity
2
3
4
5
6
7
8
9
10
Jumlah
anggota
T-String
1981
1935
1894
1843
1819
1794
1780
1774
1763
Jumlah reads
yang terdeteksi
sebagai error
19
65
106
157
181
206
220
226
237
Tren pengaruh perubahan nilai parameter m terhadap jumlah anggota spectrum :
1050
1000
jumlah
anggota 950
spectrum
900
850
2
3
4
5
6
7
multiplicity
8
9
10
22
RIWAYAT HIDUP
Penulis lahir di Pontianak pada tanggal 16 November 1991. Penulis
merupakan bungsu dari 3 bersaudara dari pasangan Bapak Agus dan Ibu Sukarni.
Penulis menghabiskan masa pendidikan dasar, menengah dan atas di kota
kelahirannya, Pontianak. Tahun 2009 menjadi tahun kelulusan penulis dari SMA
Negeri 1 Pontianak. Di tahun yang sama pula penulis diterima sebagai mahasiswa
Institut Pertanian Bogor di departemen Ilmu Komputer lewat jalur SNMPTN.
Selama menjalani kuliah di IPB penulis aktif berorganisasi di Himpunan
Mahasiswa Ilmu Komputer selama 2 periode. Periode 2010/2011 penulis
menjabat sebagai penanggung jawab komunitas .NET dan periode 2011/2012
sebagai ketua divisi edukasi. Penulis juga aktif mengikuti kompetisi-kompetisi
antara lain Alpha Innovation di Universitas Bina Nusantara, Nokia Lumia Apps
Olympiad yang diadakan oleh Nokia Indonesia, dan program kreativitas
mahasiswa yang dihelat oleh DIKTI. Penulis juga sempat melaksanakan praktek
kerja lapang selama 2 bulan di Badan Pemeriksa Keuangan RI pada tahun 2012.
Download