Powered By Blogger

Kamis, 26 Juni 2014

BIOINFORMATIKA


PENDAHULUAN

Bioinformatika adalah salah satu cabang baru ilmu biologi yang merupakan perpaduan antara biologi dan teknologi informasi. Menurut Durso (1997) bioinformatika adalah manajemen dan analisis informasi biologis yang disimpan dalam database.

Ilmu ini mengajarkan aplikasi, analisis, dan mengorganisir miliaran bit informasi genetik dalam sel mahluk hidup. Studi bioinformatika terutama didukung uleh studi genomik, biologi komputasi, dan teknologi komputer. Menurut Roderick (lihat Hieter & Boguski, 1997), genomik adalah studi yang berhubungan dengan pemetaan, sekuen, dan analisis genom. Walaupun belum jelas, secara umum Genomik bisa diartikan sebagai penggunaan informasi genom secara sistematis, dengan data eksperimental baru untuk menjawab permasalahan biologis, medis, maupun industri (Jordan, 1999). 
Bioinformatika sendiri mencakup kajian yang lebih mendalam dari genomik. Dalam studi bioinformatika digunakan komputer yang mampu menyimpan data dalam jumlah yang sangat banyak dan didukung berbagai macam software untuk menganalisis jutaan data yang berasal dari mahluk hidup.
PEMBAHASAN

Studi Bioinformatika mulai tumbuh sebagai akibat dari perkembangan berbagai metode sekuens baru yang menghasilka data yang sangat banyak. Hal tersebut, secara kebetulan, didukung pula oleh teknologi penyimpanan, manajemen, dan pertukaran data melalui komputer. Inovasi dalam pemetaan dan sekuensing memiliki peran penting dalam proses pengambilan data biologis. Penggunaan Yeast Artificial Chromosome (YAC), sangat membantu dalam konstruksi peta fisik genom kompleks secara lengkap (Touchmann & Green, 1998). Untuk mengklon fragmen-fragmen DNA besar (sekitar 150.000 pasangan basa) digunakan bacterial Artificial Chromosome (BAC). 
Kemungkinan, teknologi yang paling banyak kontribusinya adalah teknologi PCR. Walaupun tergolong tua (PCR ditemukan tahun 1985), meode ini sangat efektif, dan telah mengalami penyempurnaan selama bertahun-tahun.
Perkembangan teknologi sekuensing dimulai dan semi-automatic sequencer yang pertama pada tahun 1987, dilanjutkan dengan Taq Cycle sequencing pada tahun 1990. Pelabelan Flourescen fragmen DNA dengan Sanger dideoxy Chain Termination Method, merupakan dasar bagi proyek sekuensing skala besar (Venter et. al., 199).
Seluruh perkembangan tersebut sia-sia saja tanpa obyek yang diteliti, yang memiliki nilai komersil tinggi dan data yang berlimpah. Gampang ditebak, pasti Manusia melalui Human Genome Project.
Selain perkembangan dalam bidang Genomik, Bioinformatika sangat dipengaruhi oleh perkembangan di bidang teknologi informasi dan komputer. Pada fase awal (sekitar tahun 80-an) perkembangan yang paling signifikan adalah kapasitas penyimpanan data. Dari hanya baeberapa puluh byte (1980), hingga mencapai Terabyte (1 terabyte=1 trilyun byte),
Setelah pembuatan database, selanjutnya dimulai perkembangan pemuatan perangkat lunak untuk mengolah data. Awalnya, metode yang digunakan hanya pencariaan kata kunci, dan kalimat pendek. perkembangan selanjutnya berupa perangkat lunak dengan algoritma yang lebih kompleks, seperti penyandian nukleotida, menjadi asam-asam amino, kemudian membuat struktur proteinnya. Saat ini, perangkat lunak yang tersedia meliputi pembacaan sekuens nukleotida dari gel elektroforesis, prediksi kode protein, identifikasi primer, perbandingan sekuens, analisis kekerabatan, pengenalan pola dan prediksi struktur. Dengan perkembangan seperti diatas, ternyata masih belum cukup. Kurangnya pemahaman terhadap sistem biologis dan organisasi molekular membua analisis sekuens masih mengalami kesulitan. Perbandingan sekuens antar spesies masih sulit akibat variabilitas DNA.
Usaha yang dilakukan saat ini, baru mencoba mempelajari eori-teori tersebut melalui proses inferensi, penyesuaian model, dan belajar dari contoh yang tersedia (Baldi & Brunac, 1998). Perkembangan perangkat keras komputer juga berperan sangat penting. Kecepatan prosesor, kapasitas RAM, dan kartu grafik merupakan salah satu pendorong majunya bioinformatika. Terakhir perkembangan bioinformatika sangat dipengaruhi oleh pertumbuhan jaringan Internet. Mulai dari e-mail, FTP, Telnet (1980-an), Gopher, WAIS, hingga ditemukannya World Wide Web oleh Tim Berners-Lee pada tahun 1990, mendukung kemudahan transfer data yang cepat dan mudah. Saat ini, telah tersedia sekitar 400 database biologis yang dapat diakses melalui internet.

Potensi dan Aplikasi Bioinformatika
Potensi komersial dari aplikasi bioinformatika sangat menggiurkan. Pada tahun 1998 saja, pangsa pasarnya mencapai sekitar $290 juta, dan diperkirakan akan mencapai $2 milyar pada tahun 2005.
Selama bulan Maret tahun 2000 investasi pada bidang ini sedikitberkurang. Hal tersebut disebabkan oleh pernyataan Presiden AS Bill Clinton dan PM Inggris Tony Blair, yang membebaskan akses terhadap informasi genom manusia sehingga dianggap menghalangi paten terhadap genom manusia. Tapi, pada akhir bulan, investasi mulai kembali normal karena bioinformatika masih dianggap cukup prospektif di masa depan.Menurut laporan Ventureone di Amerika Serikat pada tahun 2001 dana-dana ventura telah mencapai $700 juta digunakan untuk pengembangan bioinformatika.Sementara itu, kepala Divisi Teknologi Khusus untuk Bioinformatika yang pertama di Microsoft menganggap, ini adalah peluang yang amat besar. Penjualan komputer untuk ilmuwan-ilmuwan akan mencapai $43 juta.

                                               ANALISA

Berdasarkan informasi dari situs http://www.scimagojr.com/, yang melakukan data mining dari database scopus, ternyata jumlah publikasi internasional bereputasi dari Indonesia sangat memprihatinkan. Tidak tanggung-tanggung, jumlahnya kalah dari Thailand, dan kalah jauh dari Malaysia dan Singapura. Di sini, diperlukan suatu strategi riset yang visioner dalam mengejar ketertinggalan kita, terutama dalam konteks pangan, energi, dan air.

Indonesia memiliki SDM yang mumpuni dalam bidang IT. Hal tersebut tidak dapat diingkari, sebab kita telah berulang kali menang dalam kompetisi internasional IT. Hanya saja, dalam konteks riset, kita memerlukan pendidikan yang berkesinambungan agar SDM tersebut dapat diarahkan demi kepentingan ristek.
Ristek seyogyanya bekerja sama dengan perguruan tinggi, dalam rangka mendidik pakar IT yang berfokus dalam riset bioinformatika. Salah satu bentuknya bisa membentuk suatu prodi atau pusat kajian baru. Sehingga, lulusan dari prodi tersebut dapat langsung digunakan oleh Ristek untuk riset pangan, energi dan air.
Di satu sisi, penguasaan informasi menunjukkan kekuatan suatu bangsa. Human Genome Project, yang diinisiasi oleh Amerika Serikat, telah diikuti oleh Jepang dan Uni Eropa. Jika kita ingin memiliki riset tingkat dunia dalam bidang pangan, energi, dan air, maka seyogyanya kita lebih fokus pada pembangunan database keanekaragaman hayati Indonesia.
Sudah ada beberapa pihak yang memulainya, misalnya Fakultas Farmasi dan Fasilkom UI, yang dapat diakses pada http://herbaldb.farmasi.ui.ac.id/. Tentu saja, ditunggu pembangunan database-database lain, terutama yang berfokus pada riset pangan, energi dan air.

Sumber :


Selasa, 10 Juni 2014

Program Stream Socket


Socket adalah mekanisme komunikasi yang memungkinkan terjadinya pertukaran data antar program atau proses baik dalam satu mesin maupun antar mesin. Gaya pemrograman soket sendiri berawal dari sistem Unix BSD yang terkenal dengan kepeloporannya pada bidang penanganan jaringan, sehingga sering disebut BSD Socket.
Sedangkan Socket Stream adalah socket komunikasi full-duplex berbasis aliran (stream) data. Pada model komunikasi Socket Stream, koneksi dua aplikasi harus dalam kondisi tersambung dengan benar untuk dapat bertukar data. Ini dapat dianalogikan seperti komunikasi telepon. Jika sambungan telepon di salah satu titik putus, maka komunikasi tidak dapat terjadi. Koneksi model seperti ini akan menjamin data dapat dipertukarkan dengan baik, namun memiliki kelemahan dalam hal penggunaan jalur data yang relatif besar dan tidak boleh terputus. 

Proses dalam TCP adalah:
11. Untuk melakukan sambungan client server, program serverseharusnya berjalan terlebih dahulu.
  2.  Di sisi server disediakan sebuah socket, yang disebut welcoming socket yang fungsinya untuk mengesan adanya permintaan sambungan daripada client.
33. Di sisi client terdapatnya client socket. Jika ingin menghubungiserver, maka melalui client socket-nya, client membuat sambungan ke welcoming socket milik server, dengan mode three-way handshake.
44. Setelah welcoming socket menerima sambungan daripada client socket, aplikasi server akan membuat sambungan socket di sisiserver. Dengan connection socket ini, client socket dan connection socket berinteraksi antara satu sama lain untuk mengirim dan menerima data.

   Berikut adalah contoh program client server yang menggunakan stream socket dengan bahasa pemrograman C.


Client:
1.  #include <stdio.h>
2.  #include <stdlib.h>
3.  #include <unistd.h>
4.  #include <errno.h>
5.  #include <string.h>
6.  #include <netdb.h>
7.  #include <sys/types.h>
8.  #include <netinet/in.h>
9.  #include <sys/socket.h>
10.  
11. #define PORT 3333
12. #define MAXDATASIZE 100
13.  
14. int main(int argc, char const *argv[])
15. {
16.         int sockfd, numbytes;
17.         char buf[MAXDATASIZE];
18.         struct hostent *he;
19.         struct sockaddr_in their_addr;
20.  
21.         if (argc != 2)
22.         {
23.                 fprintf(stderr, "usage: client hostname\n");
24.                 exit(1);
25.         }
26.  
27.         if ((he=gethostbyname(argv[1])) == NULL)
28.         {
29.                 perror("gethostbyname");
30.                 exit(1);
31.         }
32.  
33.         if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
34.         {
35.                 perror("socket");
36.                 exit(1);
37.         }
38.  
39.         their_addr.sin_family = AF_INET;
40.         their_addr.sin_port = htons(PORT);
41.         their_addr.sin_addr = *((struct in_addr *)he->h_addr);
42.         memset(&(their_addr.sin_zero), '\0', 8);
43.  
44.         if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1)
45.         {
46.                 perror("connect");
47.                 exit(1);
48.         }
49.  
50.         if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1)
51.         {
52.                 perror("recv");
53.                 exit(1);
54.         }
55.  
56.         buf[numbytes] = '\0';
57.         printf("Received: %s", buf);
58.         close(sockfd);
59.  
60.         return 0;
61. } 

Penjelasan dari client.c:
Pada program tersebut mendeskripsikan client ke server pada hostname:port  tertentu. yang didalamnya terdapat  pembuatan socket yang akan melakukan pengalamatan ke server dan melakukan koneksi  ke server dengan menggunakan perintah connect ().
Server:
1.  #include <stdio.h>
2.  #include <stdlib.h>
3.  #include <unistd.h>
4.  #include <errno.h>
5.  #include <string.h>
6.  #include <sys/types.h>
7.  #include <sys/socket.h>
8.  #include <netinet/in.h>
9.  #include <arpa/inet.h>
10. #include <sys/wait.h>
11. #include <signal.h>
12.  
13. #define MYPORT 3333
14. #define BACKLOG 10
15.  
16. void sigchld_handler(int s)
17. {
18.         while(wait(NULL) > 0);
19. }
20.  
21. int main(void)
22. {
23.         int sockfd, new_fd;
24.         struct sockaddr_in my_addr;
25.         struct sockaddr_in their_addr;
26.         int sin_size;
27.         struct sigaction sa;
28.         int yes=1;
29.  
30.         if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
31.         {
32.                 perror("socket");
33.                 exit(1);
34.         }
35.  
36.         if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1)
37.         {
38.                 perror("setsockopt");
39.                 exit(1);
40.         }
41.  
42.         my_addr.sin_family = AF_INET;
43.         my_addr.sin_port = htons(MYPORT);
44.         my_addr.sin_addr.s_addr = INADDR_ANY;
45.         memset(&(my_addr.sin_zero), '\0', 8);
46.  
47.         if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
48.         {
49.                 perror("bind");
50.                 exit(1);
51.         }
52.  
53.         if (listen(sockfd, BACKLOG) == -1)
54.         {
55.                 perror("listen");
56.                 exit(1);
57.         }
58.  
59.         sa.sa_handler = sigchld_handler;
60.         sigemptyset(&sa.sa_mask);
61.         sa.sa_flags = SA_RESTART;
62.  
63.         if (sigaction(SIGCHLD, &sa, NULL) == -1)
64.         {
65.                 perror("sigaction");
66.                 exit(1);
67.         }
68.  
69.         while(1)
70.         {
71.                 sin_size = sizeof(struct sockaddr_in);
72.  
73.                 if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)
74.                 {
75.                         perror("accept");
76.                         continue;
77.                 }
78.  
79.                 printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr));
80.  
81.                 if (!fork())
82.                 {
83.                         close(sockfd);
84.  
85.                         if (send(new_fd, "Pengiriman data dengan stream socket berhasil!\n", 14, 0) == -1)
86.                         {
87.                                 perror("send");
88.                         }
89.  
90.                         close(new_fd);
91.                         exit(0);
92.                 }
93.  
94.                 close(new_fd);
95.         }
96.  
97.         return 0;
98.  
99. } 

Penjelasan dari server.c:
Pada program ini melakukan prosedur pembukaan koneksi yang didalamnya berupa langkah-langkah seperti membuat socket, mengikat socket, menyiapkan socket, menerima koneksi, dan pengalamatan socket.

Langkah-langkah menjalankan program:
1.       Simpan program client dengan nama client.c dan program server dengan nama server.c
2.       Lakukan instalasi gcc atau compiler untuk bahasa c lainnya pada program ini menggunakan os fedora
#yum install gcc
3.       Untuk kompilasi program dengan perintah:
#gcc client.c –o client
#gcc server.c –o server
4.       Untuk menjalankan program dengan perintah:
#./server
#./client <ip server>


Berikut tampilan output dari program tersebut:

Client

Server
 

Referensi:
http://salmaann.blogspot.com/2014/05/program-stream-socket.html#more

http://ilhampratamap.blogspot.com/2014/05/program-stream-socket.html