Bioinformatika

Bioinformatika merupakan ilmu terapan yang lahir dari perkembangan teknologi informasi dibidang molekular. Pembahasan dibidang bioinformatik ini tidak terlepas dari perkembangan biologi molekular modern, salah satunya peningkatan pemahaman manusia dalam bidang genomic yang terdapat dalam molekul DNA. Kemampuan untuk memahami dan memanipulasi kode genetik DNA ini sangat didukung oleh teknologi informasi melalui perkembangan hardware dan soffware. Baik pihak pabrikan sofware dan harware maupun pihak ketiga dalam produksi perangkat lunak. Salah satu contohnya dapat dilihat pada upaya Celera Genomics, perusahaan bioteknologi Amerika Serikat yang melakukan pembacaan sekuen genom manusia yang secara maksimal memanfaatkan teknologi informasi sehingga bisa melakukan pekerjaannya dalam waktu yang singkat (hanya beberapa tahun).
 
Perkembangan teknologi DNA rekombinan memainkan peranan penting dalam lahirnya bioinformatika. Teknologi DNA rekombinan memunculkan suatu pengetahuan baru dalam rekayasa genetika organisme yang dikenala bioteknologi. Perkembangan bioteknologi dari bioteknologi tradisional ke bioteknologi modren salah satunya ditandainya dengan kemampuan manusia dalam melakukan analisis DNA organisme, sekuensing DNA dan manipulasi DNA. Sekuensing DNA satu organisme, misalnya suatu virus memiliki kurang lebih 5.000 nukleotida atau molekul DNA atau sekitar 11 gen, yang telah berhasil dibaca secara menyeluruh pada tahun 1977. Kemudia Sekuen seluruh DNA manusia terdiri dari 3 milyar nukleotida yang menyusun 100.000 gen dapat dipetakan dalam waktu 3 tahun, walaupun semua ini belum terlalu lengkap. Saat ini terdapat milyaran data nukleotida yang tersimpan dalam database DNA, GenBank di AS yang didirikan tahun 1982. Bioinformatika ialah ilmu yang mempelajari penerapan teknik komputasi untuk mengelola dan menganalisis informasi hayati. Bidang ini mencakup penerapan metode-metode matematika, statistika, dan informatika untuk memecahkan masalah-masalah biologi, terutama yang terkait dengan penggunaan sekuens DNA dan asam amino. Contoh topik utama bidang ini meliputi pangkalan data untuk mengelola informasi hayati, penyejajaran sekuens (sequence alignment), prediksi struktur untuk meramalkan struktur protein atau pun struktur sekunder RNA, analisis filogenetik, dan analisis ekspresi gen.
Bioinformatika pertamakali dikemukakan pada pertengahan 1980an untuk mengacu kepada penerapan ilmu komputer dalam bidang biologi. Meskipun demikian, penerapan bidang-bidang dalam bioinformatika seperti pembuatan pangkalan data dan pengembangan algoritma untuk analisis sekuens biologi telah dilakukan sejak tahun 1960an.
Kemajuan teknik biologi molekuler dalam mengungkap sekuens biologi protein (sejak awal 1950an) dan asam nukleat (sejak 1960an) mengawali perkembangan pangkalan data dan teknik analisis sekuens biologi. Pangkalan data sekuens protein mulai dikembangkan pada tahun 1960an di Amerika Serikat, sementara pangkalan data sekuens DNA dikembangkan pada akhir 1970an di Amerika Serikat dan Jerman pada Laboratorium Biologi Molekuler Eropa (European Molecular Biology Laboratory).
Penemuan teknik sekuensing DNA yang lebih cepat pada pertengahan 1970an menjadi landasan terjadinya ledakan jumlah sekuens DNA yang dapat diungkapkan pada 1980an dan 1990an. Hal ini menjadi salah satu pembuka jalan bagi proyek-proyek pengungkapan genom, yang meningkatkan kebutuhan akan pengelolaan dan analisis sekuens, dan pada akhirnya menyebabkan lahirnya bioinformatika.
Perkembangan jaringan internet juga mendukung berkembangnya bioinformatika. Pangkalan data bioinformatika yang terhubungkan melalui internet memudahkan ilmuwan dalam mengumpulkan hasil sekuensing ke dalam pangkalan data tersebut serta memperoleh sekuens biologi sebagai bahan analisis. Selain itu, penyebaran program-program aplikasi bioinformatika melalui internet memudahkan ilmuwan dalam mengakses program-program tersebut dan kemudian memudahkan pengembangannya.
Pangkalan Data sekuens biologi dapat berupa pangkalan data primer untuk menyimpan sekuens primer asam nukleat dan protein, pangkalan data sekunder untuk menyimpan motif sekuens protein, dan pangkalan data struktur untuk menyimpan data struktur protein dan asam nukleat.
Pangkalan data utama untuk sekuens asam nukleat saat ini adalah GenBank (Amerika Serikat), EMBL (the European Molecular Biology Laboratory, Eropa), dan DDBJ (DNA Data Bank of Japan, Jepang). Ketiga pangkalan data tersebut bekerja sama dan bertukar data secara harian untuk menjaga keluasan cakupan masing-masing pangkalan data. Sumber utama data sekuens asam nukleat adalah submisi (pengumpulan) langsung dari peneliti individual, proyek sekuensing genom, dan pendaftaran paten. Selain berisi sekuens asam nukleat, entri dalam pangkalan data sekuens asam nukleat pada umumnya mengandung informasi tentang jenis asam nukleat (DNA atau RNA), nama organisme sumber asam nukleat tersebut, dan segala sesuatu yang berkaitan dengan sekuens asam nukleat tersebut.

Selain asam nukleat, beberapa contoh pangkalan data penting yang menyimpan sekuens primer protein adalah PIR (Protein Information Resource, Amerika Serikat), Swiss-Prot (Eropa), dan TrEMBL (Eropa). Ketiga pangkalan data tersebut telah digabungkan dalam UniProt, yang didanai terutama oleh Amerika Serikat. Entri dalam UniProt mengandung informasi tentang sekuens protein, nama organisme sumber protein, pustaka yang berkaitan, dan komentar yang pada umumnya berisi penjelasan mengenai fungsi protein tersebut. Perangkat bioinformatika yang berkaitan erat dengan penggunaan pangkalan data sekuens Biologi ialah BLAST (Basic Local Alignment Search Tool). Penelusuran BLAST (BLAST search) pada pangkalan data sekuens memungkinkan ilmuwan untuk mencari sekuens baik asam nukleat maupun protein yang mirip dengan sekuens tertentu yang dimilikinya. Hal ini berguna misalnya untuk menemukan gen sejenis pada beberapa organisme atau untuk memeriksa keabsahan hasil sekuensing atau untuk memeriksa fungsi gen hasil sekuensing. Algoritma yang mendasari kerja BLAST adalah penyejajaran sekuens. PDB (Protein Data Bank, Bank Data Protein) ialah pangkalan data tunggal yang menyimpan model struktur tiga dimensi protein dan asam nukleat hasil penentuan eksperimental (dengan kristalografi sinar-X, spektroskopi NMR, dan mikroskopi elektron). PDB menyimpan data struktur sebagai koordinat tiga dimensi yang menggambarkan posisi atom-atom dalam protein atau pun asam nukleat. 

Contoh Bioinformatik

Pemodelan Menggunakan MODELLER

Saat ini pemodelan molekuler terutama pemodelan molekul protein berperan sangat penting dalam studi protein secara komprehensif dan juga mendukung pencarian alternatif design obat-obatan ataupun vaksin. Pemodelan molekuler dapat dilakukan dengan berbagai metode, terdapat tiga metode yang saat ini sering digunakan, diantaranya adalah metode de novo atau ab initio, metode threading, dan metode homology modeling atau dikenal juga sebagai pemodelan secara komparatif. MODELLER, seperti posting saya sebelumnya, merupakan salah satu program pemodelan molekuler yang menggunakan pendekatan pemodelan secara komparatif dalam pembuatan model molekul.

Kali ini, saya akan sedikit membahas bagaimana penggunaan MODELLER dalam pemodelan suatu struktur protein dengan perbedaan yang kecil dengan cetakannya (mutasi tunggal). Berikut ini merupakan contoh pemodelan struktur alpha globin yang mengalami mutasi disalah satu asam aminonya (W15R). Struktur tersebut belum pernah dikristalkan sebelumnya. ok, kita langsung menuju bagian intinya, pemodelan dengan MODELLER (saya menjalankannya di lingkungan unix/linux).

1. Langkah pertama, pastikan di komputer anda telah terinstall program MODELLER, saya menggunakan versi 9v7. Jika belum ada, silahkan download dari situs aslinya disini, pilih paket program yang sesuai dengan OS anda dan untuk instalasinya, di situs MODELLER telah dijelaskan dengan lengkap, silahkan merujuk kesana. Paket lain yang akan dipakai adalah program PyMOL, dan juga PyLab (matplotlib).
2. Setelah selesai download dan instalasinya, pastikan kembali bahwa program MODELLER sudah dapat digunakan dengan menggunakan shell atau command line. Buka shell/command line, kemudian ketik mod9v7 , jika perintah bash tersebut telah dikenali maka anda siap untuk melakukan pemodelan.
3. Download file yang saya sediakan buat input disini, file-file tersebut berisi file PDB dan beberapa scirpt yang digunakan dalam pemodelan nantinya.
4. Siapkan beberapa script atau baris perintah berikut ini atau bisa langsung menggunakan file yang telah di download (MODELLER melakukan pemodelan dengan menggunakan script, berbasis Python dan prosesnya berjalan di background).
- Script BuildProfile.py
#script untuk memodelkan protein globin alfa
#By: Andry Nur Hidayat
from modeller import *
log.verbose()
env = environ()
#-- Prepare the input files
#-- Read in the sequence database
sdb = sequence_db(env)
sdb.read(seq_database_file='globin.pir', seq_database_format='PIR',
 chains_list='ALL', minmax_db_seq_len=(142, 4000), clean_sequences=True)
#-- Write the sequence database in binary form
sdb.write(seq_database_file='globin.bin', seq_database_format='BINARY',
 chains_list='ALL')
#-- Now, read in the binary database
sdb.read(seq_database_file='globin.bin', seq_database_format='BINARY',
 chains_list='ALL')
#-- Read in the target sequence/alignment
aln = alignment(env)
aln.append(file='1Cd59.ali', alignment_format='PIR', align_codes='ALL')
#-- Convert the input sequence/alignment into
#   profile format
prf = aln.to_profile()
#-- Write out the profile in text format
prf.write(file='build_profile.prf', profile_format='TEXT')
#-- Convert the profile back to alignment format
aln = prf.to_alignment()
#-- Write out the alignment file
aln.write(file='build_profile.ali', alignment_format='PIR')
- Script align2d.py
from modeller import *
env = environ()
aln = alignment(env)
mdl = model(env, file='2dn2_N1', model_segment=('FIRST:A','LAST:A'))
aln.append_model(mdl, align_codes='2dn2_N1', atom_files='2dn2_N1.pdb')
aln.append(file='W15R.ali', align_codes='W15R')
aln.align2d()
aln.write(file='W15R-2dn2_N1.ali', alignment_format='PIR')
aln.write(file='W15R-2dn2_N1.pap', alignment_format='PAP')
- Script model-single.py
from modeller import *
from modeller.automodel import *
env = environ()
env.io.hetatm = True
a = automodel(env, alnfile='globin.pir',
 knowns='2dn2_N1', sequence='W15R',
 assess_methods=(assess.DOPE, assess.GA341))
a.starting_model = 1
a.ending_model = 5
a.make()
- Script evaluate_model.py
from modeller import *
from modeller.scripts import complete_pdb
log.verbose()    # request verbose output
env = environ()
env.libs.topology.read(file='$(LIB)/top_heav.lib') # read topology
env.libs.parameters.read(file='$(LIB)/par.lib') # read parameters
# read model file
mdl = complete_pdb(env, 'W15R.B99990002.pdb')
# Assess with DOPE:
s = selection(mdl)   # all atom selection
s.assess_dope(output='ENERGY_PROFILE NO_REPORT', file='W15R.profile',
 normalize_profile=True, smoothing_window=15)
- Script evaluate_template.py
from modeller import *
from modeller.scripts import complete_pdb
log.verbose()    # request verbose output
env = environ()
env.libs.topology.read(file='$(LIB)/top_heav.lib') # read topology
env.libs.parameters.read(file='$(LIB)/par.lib') # read parameters
# read model file
mdl = complete_pdb(env, '2dn2_N1.pdb')
# Assess with DOPE:
s = selection(mdl)   # all atom selection
s.assess_dope(output='ENERGY_PROFILE NO_REPORT', file='2dn2_N1.profile',
 normalize_profile=True, smoothing_window=15)
- Script plot_profiles.py
import pylab
import modeller
def get_profile(profile_file, seq):
 """Read `profile_file` into a Python array, and add gaps corresponding to
 the alignment sequence `seq`."""
 # Read all non-comment and non-blank lines from the file:
import pylab
import modeller
def get_profile(profile_file, seq):
 """Read `profile_file` into a Python array, and add gaps corresponding to
 the alignment sequence `seq`."""
 # Read all non-comment and non-blank lines from the file:
 f = file(profile_file)
 vals = []
 for line in f:
 if not line.startswith('#') and len(line) > 10:
 spl = line.split()
 vals.append(float(spl[-1]))
 # Insert gaps into the profile corresponding to those in seq:
 for n, res in enumerate(seq.residues):
 for gap in range(res.get_leading_gaps()):
 vals.insert(n, None)
 # Add a gap at position '0', so that we effectively count from 1:
 vals.insert(0, None)
 return vals
e = modeller.environ()
a = modeller.alignment(e, file='W15R-2dn2_N1.ali')

template = get_profile('2dn2_N1.profile', a['2dn2_N1'])
model = get_profile('W15R.profile', a['W15R'])
# Plot the template and model profiles in the same plot for comparison:
pylab.figure(1, figsize=(10,6))
pylab.xlabel('Alignment position')
pylab.ylabel('DOPE per-residue score')
pylab.plot(model, color='red', linewidth=2, label='W15R')
pylab.plot(template, color='green', linewidth=2, label='2DN2_N1')
pylab.legend()
pylab.savefig('dope_profile.png', dpi=70)
 f = file(profile_file)
 vals = []
 for line in f:
 if not line.startswith('#') and len(line) > 10:
 spl = line.split()
import pylab
import modeller
def get_profile(profile_file, seq):
 """Read `profile_file` into a Python array, and add gaps corresponding to
 the alignment sequence `seq`."""
 # Read all non-comment and non-blank lines from the file:
import pylab
import modeller
def get_profile(profile_file, seq):
 """Read `profile_file` into a Python array, and add gaps corresponding to
 the alignment sequence `seq`."""
 # Read all non-comment and non-blank lines from the file:
 f = file(profile_file)
 vals = []
 for line in f:
 if not line.startswith('#') and len(line) > 10:
 spl = line.split()
 vals.append(float(spl[-1]))
 # Insert gaps into the profile corresponding to those in seq:
 for n, res in enumerate(seq.residues):
 for gap in range(res.get_leading_gaps()):
 vals.insert(n, None)
 # Add a gap at position '0', so that we effectively count from 1:
 vals.insert(0, None)
 return vals
e = modeller.environ()
a = modeller.alignment(e, file='W15R-2dn2_N1.ali')

template = get_profile('2dn2_N1.profile', a['2dn2_N1'])
model = get_profile('W15R.profile', a['W15R'])
# Plot the template and model profiles in the same plot for comparison:
pylab.figure(1, figsize=(10,6))
pylab.xlabel('Alignment position')
pylab.ylabel('DOPE per-residue score')
pylab.plot(model, color='red', linewidth=2, label='W15R')
pylab.plot(template, color='green', linewidth=2, label='2DN2_N1')
pylab.legend()
pylab.savefig('dope_profile.png', dpi=70)
 f = file(profile_file)
 vals = []
 for line in f:
 if not line.startswith('#') and len(line) > 10:
 spl = line.split()
 vals.append(float(spl[-1]))
 # Insert gaps into the profile corresponding to those in seq:
 for n, res in enumerate(seq.residues):
 for gap in range(res.get_leading_gaps()):
 vals.insert(n, None)
 # Add a gap at position '0', so that we effectively count from 1:
 vals.insert(0, None)
 return vals
e = modeller.environ()
a = modeller.alignment(e, file='W15R-2dn2_N1.ali')

template = get_profile('2dn2_N1.profile', a['2dn2_N1'])
model = get_profile('W15R.profile', a['W15R'])
# Plot the template and model profiles in the same plot for comparison:
pylab.figure(1, figsize=(10,6))
pylab.xlabel('Alignment position')
pylab.ylabel('DOPE per-residue score')
pylab.plot(model, color='red', linewidth=2, label='W15R')
pylab.plot(template, color='green', linewidth=2, label='2DN2_N1')
pylab.legend()
pylab.savefig('dope_profile.png', dpi=70)
 vals.append(float(spl[-1]))
 # Insert gaps into the profile corresponding to those in seq:
 for n, res in enumerate(seq.residues):
 for gap in range(res.get_leading_gaps()):
 vals.insert(n, None)
 # Add a gap at position '0', so that we effectively count from 1:
 vals.insert(0, None)
 return vals
e = modeller.environ()
a = modeller.alignment(e, file='W15R-2dn2_N1.ali')

template = get_profile('2dn2_N1.profile', a['2dn2_N1'])
model = get_profile('W15R.profile', a['W15R'])
# Plot the template and model profiles in the same plot for comparison:
pylab.figure(1, figsize=(10,6))
pylab.xlabel('Alignment position')
pylab.ylabel('DOPE per-residue score')
pylab.plot(model, color='red', linewidth=2, label='W15R')
pylab.plot(template, color='green', linewidth=2, label='2DN2_N1')
pylab.legend()
pylab.savefig('dope_profile.png', dpi=70)
 
5. Sebelum kita mulai pemodelan ada baiknya, melihat file-file input yang sangat penting buat proses pemodelan nantinya. File input yang dibutuhkan adalah sturktur template, berupa file PDB (2dn2_N1.pdb), sekuen model (W15R.ali), file hasil pensejajaran (globin.pir)...semua file tersebut merupakan file text dan dapat dengan mudah diedit dengan text editor di lingkungan Linux. File yang cukup penting diperhatikan disini adalah file pesejajaran globin.pir, modeller dapat membuat/menggunakan file hasil pensejajaran berformat *.pir ataupun *.ali, tetapi yang lebih mudah digunakan adalah yang berformat *.pir. Mari kita lihat struktur filenya.

C; Produced by MODELLER

>P1;2dn2_N1
structureX:2dn2_N1: 1 :A: 142 :A:MOL_ID  1: :     ; 
MOLECULE  ALPHA GLOBIN HUMAN HEMOGLOBIN DEOXY 1.25A;  CHAIN  A, B;  ENGINEE:MOL_ID  1;
VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG
KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP
AVHASLDKFLASVSTVLTSKYR/.*

>P1;W15R
sequence:W15R:     : :     : ::: 0.00: 0.00
VLSPADKTNVKAARGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG
KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP
AVHASLDKFLASVSTVLTSKYR/.* 
bagian paling atas pada tanda '>' merupakan bagian header berisi nama sekuensnya, selanjutnya pada baris kedua berisi keterangan apakah sekuen yang ada merupakan template (structureX) atau target (sequence) dan harus terdapat 10 tanda 'titik dua' (:) yang bisa digunakan untuk memberi informasi tambahan untuk sekuen. Selanjutnya urutan sekuen (perhatikan bagian mana yang berbeda dari kedua sekuen yang ada?). Sekuen biasanya diakhiri dengan tanda bintang '*', tanda '/' merupakan tanda untuk memerintahkan modeller untuk memisahkan rantai untuk struktur yang berbeda, tanda titik '.' merupakan tanda yang digunakan untuk memerintahkan modeller agar suatu molekul selain protein/asam amino, biasanya ligan tidak mengalami pemodelan sehingga bentuknya sama persis dengan template. Karena struktur yang akan dimodel adalah struktur alpha globin dengan mutasi W15R, dan juga harus memuat informasi HEM maka tanda tersebut harus ada.
ok, selanjutnya tinggal proses yang mudah....pemodelan...mengapa mudah?karena selebihnya modeller yang akan bekerja.

6. Berikut langkah penggunaan script-script tersebut (jalankan di command line anda).
  • mod9v7 BuildProfile.py >>> untuk membuat profile, input yang diperlukan adalah file berekstensi *.pir dan file sekuen *.ali >>outputnya berupa globin.bin (suatu file binary)
  • mod9v7 align2d.py >>> untuk membuat profile hasil pensejajaran, input yang diperlukan berupa struktur template (*.pdb) dan file sekuen target *.ali >>> output berupa profile hasil pensejajaran *.ali dan *.pap
  • mod9v7 model-single.py >>> script utama untuk mengenerate model...proses komputasinya biasanya berjalan agak lama disini, karena prosesnya cukup kompleks. Input yang dibutuhkan adalah file *.pir dan disini model akan digenerate secara default, sesuai script sebanyak 5 buah (*.pdb) dan model yang paling baik adalah model yang memiliki nilai DOPE (Discrete Optimized Protein Enegry). Untuk melihat model mana yang baik anda dapat melihatnya pada bagian paling akhir pada file model-single.log. Pada gambar dibawah ini struktur yang paling baik menurut modeller adalah file W15R.B99990002.pdb.

Jika sudah mendapatkan file pdb dari model yang cocok dan 'bagus' menurut modeller, maka kita bisa mengecek sturkturnya menggunakan program visualisasi molekul. Saya menggunakan program PyMOL untuk melihat strukturnya. Check this out...bagaimana?

Mutasi tunggal yang terjadi pada asam amino ke 15, ternyata tidak mengubah konformasi tiga dimensi protein tersebut. Model yang anda dapatkan sempurna, semua asam amino termodelkan dengan baik, begitu juga dengan struktur Hem-nya.
  • mod9v7 evaluate_model.py >>> script untuk membuat profil dari model yang dianggap cocok >>output berupa file *.profile
  • mod9v7 evaluate_template.py >>> script untuk membuat profil dari template yang digunakan >> output berupa file *.profile. kedua proses diatas diperlukan untuk membuat grafik plot profile untuk menganalisa seberapa besar kemiripan dan kualitas dari model yang dibuat dengan templatenya.
  • mod9v7 plot_profiles.py >>> bertujuan untuk membuat plot grafik DOPE antara model dan templatenya. Output berupa file *.png.
Secara umum nilai energi bebas yang dibutuhkan oleh model hasil Modeller untuk membentuk konformasi tiga dimensi seperti sturktur template jauh lebih besar, hasil ini dapat dikarenakan oleh proses dari program modeller yang tetap mempertahankan bentuk 3D dari template walaupun terdapat mutasi sehingga nilai energinya menjadi besar.
Bagaimana?mudah bukan untuk memodelkan struktur protein....selain menggunkan program stand alone seperti Modeller, kita juga dapat menggunakan program dari webserver seperti SwissModel dari http://expasy.ch untuk memodelkan suatu molekul.

 source

http://bioinformatika-q.blogspot.com/

http://www.bioinformatika.org/tutorial/bioinformatika-struktural/pemodelan-molekuler/pemodelanmenggunakanmodeller

comment 0 komentar:

Posting Komentar

Delete this element to display blogger navbar

 
© not a programer | Design by Blog template in collaboration with Concert Tickets, and Menopause symptoms
Powered by Blogger