MSK_009

3
PySSA: Program sederhana sequence alignment R. W. Wibowo Program Studi Sains Komputasi, Institut Teknologi Bandung [email protected] Abstrak. Sequence alignment dalam bidang bioinformatika adalah cara mengurutkan sequence asam amino pada DNA (Deoxyribonucleic acid), RNA (Ribonucleic acid), atau protein untuk mengidentifikasikan dearah kesamaan yang mungkin menjadi konsekuensi dari hubungan fungsional, struktural, dan evolusi antar sequence. Perkembangan algoritma dalam kasus bioinformatika sangat pesat dan tidak jarang melibatkan komputasi besar untuk keperluan tertentu, semisal pencarian pada database protein. PySSA merupakan program sederhana dalam bahasa python (dynamic programming) yang menerapkan tiga algoritma dasar yang digunakan dalam sequence alignment, khususnya dalam bidang bioinformatika. Metoda dan hasilnya disampaikan dalam makalah ini. Keywords: Sequence alignment, komputasi bioinformatika PENDAHULUAN DNA sequencing adalah proses mengurutkan nukleotida adenine (A), guanine (G), cytosine (C), dan thymine (T) di dalam molekul DNA itu sendiri. Pertama kali dikerjakan pada tahun 1970, kemudian pekerjaan ini menjadi sangat penting dalam dekade terakhir ini terkait dengan kebutuhan forensik, diagnosa, dan perkembangan bioteknologi. Semakin berkembanganya metode untuk mengurutkan DNA tersebut mempercepat pula perkembangan riset dan penemuan dibidang bioteknologi dan farmasi. Metode tersebut tidak hanya untuk mendapatkan urutan DNA tetapi juga membandingkan urutan DNA yang satu dengan yang lain. Urutan DNA dibandingkan satu dengan yang lain untuk mendapatkan nilai ‘kecocokan’ DNA tersebut. Nilai kesamaan atau kemiripan urutan DNA merupakan bukti akan adanya kesamaan struktur, fungsi, dan evolusi DNA tersebut. Pekerjaan ini memberikan contoh algoritma dasar yang digunakan untuk membandingkan dan memberikan nilai kemiripan antar dua sequence DNA (Sequence alignment) PySSA. Program ditulis dalam bahasa python dan menggunakan prinsip dynamic programming. Sequence alignment tidak hanya digunakan pada kasus bioinformatik, tetapi juga pada kasus nonbiologi seperti sosial dan financial. METODE Proses alignment yang dilakukan pada DNA dan RNA secara umum dibagi dalam dua kategori yakni global alignment dan local alignment. PySSA sampai saat ini menerapkan tiga algoritma dasar dalam sequence alignment. Flowchart dari metode ini diberikan pada Gambar 1. Gambar 1. Flowchart umum metode dasar sequence alignment Local alignment Local alignment memberikan nilai dengan tidak memaksakan sequence memiliki urutan tetap.

description

tugas kuliah kapsel

Transcript of MSK_009

Page 1: MSK_009

PySSA: Program sederhana sequence alignment

R. W. Wibowo

Program Studi Sains Komputasi, Institut Teknologi Bandung

[email protected]

Abstrak. Sequence alignment dalam bidang bioinformatika adalah cara mengurutkan sequence asam amino pada DNA

(Deoxyribonucleic acid), RNA (Ribonucleic acid), atau protein untuk mengidentifikasikan dearah kesamaan yang

mungkin menjadi konsekuensi dari hubungan fungsional, struktural, dan evolusi antar sequence. Perkembangan

algoritma dalam kasus bioinformatika sangat pesat dan tidak jarang melibatkan komputasi besar untuk keperluan

tertentu, semisal pencarian pada database protein. PySSA merupakan program sederhana dalam bahasa python (dynamic

programming) yang menerapkan tiga algoritma dasar yang digunakan dalam sequence alignment, khususnya dalam

bidang bioinformatika. Metoda dan hasilnya disampaikan dalam makalah ini.

Keywords: Sequence alignment, komputasi bioinformatika

PENDAHULUAN

DNA sequencing adalah proses mengurutkan

nukleotida adenine (A), guanine (G), cytosine (C), dan

thymine (T) di dalam molekul DNA itu sendiri.

Pertama kali dikerjakan pada tahun 1970, kemudian

pekerjaan ini menjadi sangat penting dalam dekade

terakhir ini terkait dengan kebutuhan forensik,

diagnosa, dan perkembangan bioteknologi.

Semakin berkembanganya metode untuk

mengurutkan DNA tersebut mempercepat pula

perkembangan riset dan penemuan dibidang

bioteknologi dan farmasi. Metode tersebut tidak hanya

untuk mendapatkan urutan DNA tetapi juga

membandingkan urutan DNA yang satu dengan yang

lain. Urutan DNA dibandingkan satu dengan yang lain

untuk mendapatkan nilai ‘kecocokan’ DNA tersebut.

Nilai kesamaan atau kemiripan urutan DNA

merupakan bukti akan adanya kesamaan struktur,

fungsi, dan evolusi DNA tersebut. Pekerjaan ini

memberikan contoh algoritma dasar yang digunakan

untuk membandingkan dan memberikan nilai

kemiripan antar dua sequence DNA (Sequence

alignment) PySSA. Program ditulis dalam bahasa

python dan menggunakan prinsip dynamic

programming. Sequence alignment tidak hanya

digunakan pada kasus bioinformatik, tetapi juga pada

kasus nonbiologi seperti sosial dan financial.

METODE

Proses alignment yang dilakukan pada DNA dan

RNA secara umum dibagi dalam dua kategori yakni

global alignment dan local alignment. PySSA sampai

saat ini menerapkan tiga algoritma dasar dalam

sequence alignment. Flowchart dari metode ini

diberikan pada Gambar 1.

Gambar 1. Flowchart umum metode dasar sequence

alignment

Local alignment

Local alignment memberikan nilai dengan tidak

memaksakan sequence memiliki urutan tetap.

Page 2: MSK_009

Sehingga yang dibandingkan bias saja hanya daerah

tertentu pada sequence tersebut. Algoritma yang

diterapkan adalah algoritma Smith–Waterman yang

diusulkan oleh Temple F. Smith dan M. S. Waterman

pada tahun 1981. Algoritma ini berkembang untuk

kepentingan membandingkan DNA yang relatif jauh

kaitan biologisnya. Dengan algoritma ini dapat

ditentukan optimum lokal pada sequence DNA yang

dibandingkan. Perbedaan utama pada algoritma ini

adalah matriks scoring semua bernilai nol.

Algortimanya dapat ditulis sebagai berikut:

Membangun matriks H dari dua sequence DNA

sepanjang m dan n dilakukan dengan cara:

Inisiasi.

Skoring:

dengan:

Setelah mendapatkan matriks sskor maksimum

tersebut maka dapat dilakukan traceback untuk

mendapatkan sequence alignment dan skornya.

Traceback dilakukan dari posisi H(i, j) terbesar hingga

sampai pada H(i, j) = 0 dengan membandingkan tiga

sel sebelumnya dan mencari maksimumnya.

Global alignment

Algoritma Needleman–Wunsch yang dikenalkan

pada tahun 1970 adalah contoh dari general global

alignment. Berbeda dengan local alignment, metode

ini menerapkan penilaian secara keseluruhan sequence

yang dibandingkan dengan membuat alignment dari

semua anggota sequence. Algoritma yang pertama kali

diterapkan pada permasalahan membandingkan

sequence dalam permasalahan biologi.

Algoritmanya dapat dijelaskan sebagai berikut:

Inisiasi matriks skor maksimum.

Skoring.

dengan:

Traceback.

Dilakukan dengan cara yang sama pada kasus local

alignment.

Affine alignment

Affine alignment termasuk dalam metode global

alignment. Perbedaannya terletak pada adanya gap

extension dan menggunakan tiga maktriks skor

sehingga perlu dilakukan iterasi tiga kali. Tujuannya

adalah untuk ‘menyimpan’ sementara alignment yang

mungkin lebih baik ketika terjadi gap yang panjang.

Berikut ini disampaikan metode dari algoritma

Gotoh yang termasuk dalam affine alignment.

Inisiasi:

Skoring:

Traceback:

- Jalur dimulai dari tabel S

- Apabila = atau maka

pindah table namun tidak berubah indeksnya.

- Jalur yang melalui pasti naik sedangkan

yang melalui akan bergerak ke kiri.

HASIL DAN ANALISA

Metode yang disampaikan di atas memberikan

gambaran bahwa harus dilakukan penyimpanan skor di

dalam matriks lalu dilakukan traceback dari matriks

Page 3: MSK_009

tersebut. PySSA menggunakan python untuk

mengerjakan hal tersebut karena bahasanya yang

fleksibel dan userfriendly untuk kasus ini (dynamic

programming). Program ini dapat diunduh melalui

repositori https://github.com/ridlo/PySSA.git

Program ini dilengkapi dengan beberapa command

line interface untuk mempermudah input. Program

dapat dicoba untuk mencari alignment dari dua

sequence.

Local alignment: python localAlign.py –i ACACACTA AGCACACA -m 2 -p 1

Output: Local alignment - Smith Waterman Algorithm SEQUENCE 1: ACACACTA SEQUENCE 2: AGCACACA gap : 0.0 gap penalty : -1.0 match score : 2.0 mismatch score: -1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 1.0 2.0 1.0 2.0 1.0 0.0 2.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 0.0 1.0 0.0 0.0 3.0 2.0 3.0 2.0 3.0 2.0 1.0 0.0 2.0 2.0 5.0 4.0 5.0 4.0 3.0 4.0 0.0 1.0 4.0 4.0 7.0 6.0 7.0 6.0 5.0 0.0 2.0 3.0 6.0 6.0 9.0 8.0 7.0 8.0 0.0 1.0 4.0 5.0 8.0 8.0 11.0 10.0 9.0 0.0 2.0 3.0 6.0 7.0 10.0 10.0 10.0 12.0 Maximum Value : 12.0 Maximum Position : [[8, 8]] Track Sequence 1 : A _ C A C A C T A Sequence 2 : A G C A C A C _ A Score : 12.0

Global alignment: python generalGap.py -i ACACACTA AGCACACA

Output: General Gap Penalty, Needleman-Wunch Algorithm SEQUENCE 1: ACACACTA SEQUENCE 2: AGCACACA gap : -1.0 gap penalty : -1.0 match score : 1.0 mismacth score: -1.0 -0.0 -1.0 -2.0 -3.0 -4.0 -5.0 -6.0 -7.0 -8.0 -1.0 1.0 0.0 -1.0 -2.0 -3.0 -4.0 -5.0 -6.0 -2.0 0.0 0.0 -1.0 -2.0 -3.0 -4.0 -5.0 -6.0 -3.0 -1.0 1.0 0.0 0.0 -1.0 -2.0 -3.0 -4.0 -4.0 -2.0 0.0 2.0 1.0 1.0 0.0 -1.0 -2.0 -5.0 -3.0 -1.0 1.0 3.0 2.0 2.0 1.0 0.0 -6.0 -4.0 -2.0 0.0 2.0 4.0 3.0 2.0 2.0 -7.0 -5.0 -3.0 -1.0 1.0 3.0 5.0 4.0 3.0 -8.0 -6.0 -4.0 -2.0 0.0 2.0 4.0 4.0 5.0 Sequence 1: A _ C A C A C T A Sequence 2: A G C A C A C _ A Score : 5.0

Affine alignment: python affineGap.py -i AGCATC AGTC

Output: Affine Gap Penalty, Gotoh Algorithm

SEQUENCE 1: AGCATC SEQUENCE 2: AGTC gap open : -1.0 gap extend : -0.1 gap penalty : -1.0 match score : 1.0 mismacth score: -1.0 0.0 -1.1 -1.2 -1.3 -1.4 -1.5 -1.6 -1.1 1.0 -0.1 -0.2 -0.3 -0.4 -0.5 -1.2 -0.1 2.0 0.9 0.8 0.7 0.6 -1.3 -0.2 0.9 1.0 -0.1 1.8 0.7 -1.4 -0.3 0.8 1.9 0.8 0.7 2.8 Sequence 1: A G C A T C Sequence 2: A G _ _ T C Score : 2.0

Hasil dari program ini adalah skor yang merupakan

kuantitas dari kemiripan dua sequence input. Bagian

dari sequence input yang manjadi penyumbang nilai

tersebut dapat dilihat dari sequence output.

KESIMPULAN

PySSA memberikan gambaran mengenai cara

penilaian ‘kemiripan’ suatu urutan asam amino dengan

urutan asam amino yang lain yang dilakukan oleh

saintis. Terdapat tiga pilihan metode di dalam paket

PySSA (global: general gap dan affine gap, local

alignment), dan semuanya berjalan dengan baik

(dibandingkan dengan contoh dari referensi). Kasus

lebih kompleks dan melibatkan input besar (misal: full

genome atau forensik protein asing di dalam database

protein) biasa dikerjakan dengan program yang

memasukkan paralelisasi, dikarenakan besarnya

memori yang diperlukan. Hal ini dapat menjadi acuan

pengembangan pada tahap selanjutnya.

Program ini mudah dipahami dan dikembangkan

karena menggunakan bahasa python, serta dapat

diakses publik melalui repositori.

REFERENSI

1. Mount DM. (2004). Bioinformatics: Sequence and

Genome Analysis (2nd ed.). Cold Spring Harbor

Laboratory Press: Cold Spring Harbor, NY.

2. Needleman, Saul B.; and Wunsch, Christian D. (1970). A

general method applicable to the search for similarities in

the amino acid sequence of two proteins. Journal of

Molecular Biology 48 (3): 443–53

3. Smith, Temple F.; and Waterman, Michael S. (1981).

Identification of Common Molecular Subsequences.

Journal of Molecular Biology 147: 195–197.

4. Osamu Gotoh (1982). An improved algorithm for

matching biological sequences. Journal of Molecular

Biology 162: 705.