Bagus bayu baskara (bebebe)

BIOINFORMATIKA

PENDAHULUAN
APA ITU BIOINFORMATIKA?
Bioinformatika, sesuai dengan asal katanya yaitu “bio” dan “informatika”, adalah gabungan antara ilmu biologi dan ilmu teknik informasi (TI). Pada umumnya, Bioinformatika didefenisikan sebagai aplikasi dari alat komputasi dan analisa untuk menangkap dan menginterpretasikan data-data biologi. Ilmu ini merupakan ilmu baru yang yang merangkup berbagai disiplin ilmu termasuk ilmu komputer, matematika dan fisika, biologi, dan ilmu kedokteran, dimana kesemuanya saling menunjang dan saling bermanfaat satu sama lainnya.

PEMBAHASAN
Istilah bioinformatics mulai dikemukakan pada pertengahan era 1980-an untuk mengacu pada penerapan komputer dalam biologi. Namun demikian, penerapan bidang-bidang dalam bioinformatika (seperti pembuatan basis data dan pengembangan algoritma untuk analisis sekuens biologis) sudah dilakukan sejak tahun 1960-an.
Kemajuan teknik biologi molekular dalam mengungkap sekuens biologis dari protein (sejak awal 1950-an) dan asam nukleat (sejak 1960-an) mengawali perkembangan basis data dan teknik analisis sekuens biologis. Basis data sekuens protein mulai dikembangkan pada tahun 1960-an di Amerika Serikat, sementara basis data sekuens DNA dikembangkan pada akhir 1970-an di Amerika Serikat dan Jerman (pada European Molecular Biology Laboratory, Laboratorium Biologi Molekular Eropa). Penemuan teknik sekuensing DNA yang lebih cepat pada pertengahan 1970-an menjadi landasan terjadinya ledakan jumlah sekuens DNA yang berhasil diungkapkan pada 1980-an dan 1990-an, menjadi salah satu pembuka jalan bagi proyek-proyek pengungkapan genom, meningkatkan kebutuhan akan pengelolaan dan analisis sekuens, dan pada akhirnya menyebabkan lahirnya bioinformatika.
Perkembangan Internet juga mendukung berkembangnya bioinformatika. Basis data bioinformatika yang terhubung melalui Internet memudahkan ilmuwan mengumpulkan hasil sekuensing ke dalam basis data tersebut maupun memperoleh sekuens biologis sebagai bahan analisis. Selain itu, penyebaran program-program aplikasi bioinformatika melalui Internet memudahkan ilmuwan mengakses program-program tersebut dan kemudian memudahkan pengembangannya.

Berikut ini adalah bidang-bidang yang terkait dengan penerapan Bio-Informatika :
1. Biophysics
Biologi molekul merupakan pengembangan yang lahir dari biophysics. Biophysics adalah sebuah bidang interdisipliner yang mengaplikasikan teknik- teknik dari ilmu Fisika untuk memahami struktur dan fungsi biologi (British Biophysical Society).

2. Cheminformatics
Cheminformatics adalah kombinasi dari sintesis kimia, penyaringan biologis, dan pendekatan data-mining yang digunakan untuk penemuan dan pengembangan obat (Cambridge Healthech Institute’s Sixth Annual Cheminformatics conference). Ruang lingkup akademis dari cheminformatics ini sangat luas. Contoh bidang minatnya antara lain: Synthesis Planning, Reaction and Structure Retrieval, 3-D Structure Retrieval, Modelling, Computational Chemistry, Visualisation Tools and Utilities.

3. Computational Biology
Computational biology merupakan bagian dari Bioinformatika (dalam arti yang paling luas) yang paling dekat dengan bidang Biologi umum klasik. Fokus dari computational biology adalah gerak evolusi, populasi, dan biologi teoritis daripada biomedis dalam molekul dan sel.

4. Genomics
Genomics adalah bidang ilmu yang menganalisa atau membandingkan seluruh komplemen genetik dari satu spesies atau lebih.

5. Mathematical Biology
Mathematical biology lebih mudah dibedakan dengan Bioinformatika daripada computational biology dengan Bioinformatika. Mathematical biology juga menangani masalah-masalah biologi, namun metode yang digunakan untuk menangani masalah tersebut tidak perlu secara numerik dan tidak perlu diimplementasikan dalam software maupun hardware.

6. Pharmacogenomics
Pharmacogenomics adalah aplikasi dari pendekatan genomik dan teknologi pada identifikasi dari target-target obat. Contohnya meliputi menjaring semua genom untuk penerima yang potensial dengan menggunakan cara Bioinformatika, atau dengan menyelidiki bentuk pola dari ekspresi gen di dalam baik patogen maupun induk selama terjadinya infeksi, atau maupun dengan memeriksa karakteristik pola-pola ekspresi yang ditemukan dalam tumor atau contoh dari pasien untuk kepentingan diagnosa (kemungkinan untuk mengejar target potensial terapi kanker).

7. Proteomics
Istilah proteomics pertama kali digunakan untuk menggambarkan himpunan dari protein-protein yang tersusun (encoded) oleh genom. Ilmu yang mempelajari proteome, yang disebut proteomics, pada saat ini tidak hanya memperhatikan semua protein di dalam sel yang diberikan, tetapi juga himpunan dari semua bentuk isoform dan modifikasi dari semua protein, interaksi diantaranya, deskripsi struktural dari proteinprotein dan kompleks-kompleks orde tingkat tinggi dari protein, dan mengenai masalah tersebut hampir semua pasca genom.

Manfaat Bioinformatika :
1. Bioinformatika dalam bidang Klinis
Perananan Bioinformatika dalam bidang klinis ini sering juga disebut sebagai informatika klinis (clinical informatics). Aplikasi dari clinical informatics ini adalah berbentuk manajemen data-data klinis dari pasien melalui Electrical Medical Record (EMR) yang dikembangkan oleh Clement J. McDonald dari Indiana University School of Medicine pada tahun 1972. McDonald pertama kali mengaplikasikan EMR pada 33 orang pasien penyakit gula (diabetes). Sekarang EMR ini telah diaplikasikan pada berbagai penyakit. Data yang disimpan meliputi data analisa diagnosa laboratorium, hasil konsultasi dan saran, foto ronsen, ukuran detak jantung, dll. Dengan data ini dokter akan bisa menentukan obat yang sesuai dengan kondisi pasien tertentu. Lebih jauh lagi, dengan dibacanya genom manusia, akan memungkinkan untuk mengetahui penyakit genetik seseorang, sehingga personal care terhadap pasien menjadi lebih akurat.

2. Bioinformatika dalam bidang Virologi
Khusus di bidang Virologi (ilmu virus), kemajuan bioinformatika telah berperan dalam mempercepat kemajuan ilmu ini. Sebelum kemajuan bioinformatika, untuk mengklasifikasikan virus kita harus melihat morfologinya terlebih dahulu. Untuk melihat morfologi virus dengan akurat, biasanya digunakan mikroskop elektron yang harganya sangat mahal sehingga tidak bisa dimiliki oleh semua laboratorium. Selain itu, kita harus bisa mengisolasi dan mendapatkan virus itu sendiri.

3. Bioinformatika Untuk Penemuan Obat
Cara untuk menemukan obat biasanya dilakukan dengan menemukan zat/senyawa yang dapat menekan perkembangbiakan suatu agent penyebab penyakit. Karena perkembangbiakan agent tersebut dipengaruhi oleh banyak faktor, maka faktor-faktor inilah yang dijadikan target. Diantaranya adalah enzim-enzim yang diperlukan untuk perkembangbiakan suatu agent Mula mula yang harus dilakukan adalah analisa struktur dan fungsi enzim-enzim tersebut.Kemudian mencari atau mensintesa zat/senyawa yang dapat menekan fungsi dari enzim-enzim tersebut.

4. Bioinformatika Untuk Identifikasi Agent Penyakit Baru
Bioinformatika juga menyediakan tool yang sangat penting untuk identifikasi agent penyakit yang belum dikenal penyebabnya. Banyak sekali penyakit baru yang muncul dalam dekade ini, dan diantaranya yang masih hangat adalah SARS (Severe Acute Respiratory Syndrome).

5. Bioinformatika Untuk Identifikasi Agent Penyakit Baru
Bioteknologi telah diterapkan secara luas dalam bidang pertanian, antara lain yaitu:
Pupuk Hayati (biofertiliser) yaitu suatu bahan yang berasal dari jasad hidup, khususnya mikrobia yang digunakan untuk meningkatkan kuantitas dan kualitas produksi tanaman.
Kultur in vitro, yaitu pembiakan tanaman dengan menggunakan bagian tanaman yang ditumbuhkan pada media bernutrisi dalam kondisi aseptik.
Kultur in vitro memungkinkan perbanyakan tanaman secara massal dalam waktu yang singkat.
Teknologi DNA Rekombinaan, pengembangan tanaman transgenik, misalnya galur tanaman transgenik yang membawa gen cry dari Bacillus thuringiensis untuk pengendalian hama.

ANALISIS
Bioinformatika ternyata sangat berperan di dalam kehidupan di era modern in, maka dari itu perkembangan teknologi di saat ini sudah semakin maju, khusunya di bidang biologi yaitu bioinformatika. Perkembangan tersebut memiliki dampak positif dan negatif. Dampak positif nya, manusia dapat menyelesaikan masalah yang menyangkut makhluk hidup secara lebih terorganisir dengan bantuan teknologi. Berbagai macam penyakit yang dulu nya tidak bisa disembuhkan, sekarang dapat terselesaikan dengan bantuan teknologi bioinformatika. Sedangakan dampak negatif nya, manusia akan ketergantungan pada teknologi saja. Bila teknologi tersebut melakukan kesalahan atau malfungsi, maka akan berakibat fatal. Dan ternyata terdapat beberapa bidang di bioinformatika, seperti, Biophysics, Cheminformatics, Computational Biology, Genomics, Mathematical Biology, Pharmacogenomics, dan Proteomics.

REFERENSI

READMORE
 

DATAGRAM SOCKET

Socket programming merupakan pemrogramman yang bertujuan agar satu program dapat berinteraksi dengan program lainnya dalam satu jaringan. Terdapat banyak socket yang terdapat pada system operasi linux, namun terdapat 2 socket yang paling utama yaitu stream socket dan datagram socket. Datagram socket merupakan connectionless socket karena untuk interaksi client server tidak harus selalu terhubung terus menerus. Berikut adalah contoh program client server menggunakan datagram socket yang dibuat menggunakan bahasa C :

CLIENT

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

#define MYPORT 4950

Baris diatas menjelaskan nomor port server yang digunakan

int main(int argc, char *argv[])
{
    int sockfd;
    struct sockaddr_in their_addr;
    struct hostent *he;
    int numbytes;

Blok diatas berisikan informasi alamat dari server.

  
    if (argc != 3)
    {
        fprintf(stderr,"usage: client hostname message\n");
        exit(1);
    }

    // dpt info tentang host
    if ((he=gethostbyname(argv[1])) == NULL)
    {
        perror("gethostbyname");
        exit(1);
    }

Blok diatas untuk mencari info tentang host.


    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
    {
        perror("socket");
        exit(1);
    }

Blok diatas untuk membuat socket dengan perintah socket. “AF_NET” menunjukkan bahwa socket dihubungkan dengan protocol internet, dan “SOCK_DGRAM” menunjukkan bahwa program ini memakai datagram socket, yang berarti connectionless.

    their_addr.sin_family = AF_INET;
    their_addr.sin_port = htons(MYPORT);
    their_addr.sin_addr = *((struct in_addr *)he->h_addr);
    memset(&(their_addr.sin_zero), '\0', 8);

Pada baris awal yaitu untuk host byte order atau big endian. Baris selanjutnya untuk network byte order. Dan diakhiri dengan menset semua nilai ke 0.

    if ((numbytes=sendto(sockfd, argv[2], strlen(argv[2]), 0, (struct sockaddr *)&their_addr, sizeof(struct sockaddr))) == -1)
    {
        perror("sendto");
        exit(1);
    }

    printf("Kirim %d byte ke %s\n", numbytes,
    inet_ntoa(their_addr.sin_addr));
    close(sockfd);
   
    return 0;
}

Blok program diatas merupakan proses koneksi ke server. Selanjutnya terdapat proses pengiriman data ke server dan diakhiri dengan menutup hubungan dengan perintah close().


SERVER

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define MYPORT 4950
#define MAXBUFLEN 100

Bagian diatas ini merupakan deskripsi dari nomor port yang digunakan yaitu “4950” dan dibawahnya adalah jumlah koneksi yang diperbolehkan.


int main(void)
{
    int sockfd;
    struct sockaddr_in my_addr;
    struct sockaddr_in their_addr;
    int addr_len, numbytes;
    char buf[MAXBUFLEN];

Pada blok diatas terdapat “sockfd” yang merupakan koneksi saat ini. Baris selanjutnya merupakan penetapan ip address server dan dilanjutkan penetapan ip address dari client.


    if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
    {
        perror("socket");
        exit(1);
    }

Blok di atas adalah untuk membuat socket dengan perintah socket().


    my_addr.sin_family = AF_INET;
    my_addr.sin_port = htons(MYPORT);
    my_addr.sin_addr.s_addr = INADDR_ANY;
    memset(&(my_addr.sin_zero), '\0', 8);

Blok diatas untuk melakukan proses pengalamatan. Pada baris awal yaitu untuk host byte order atau big endian. Baris selanjutnya untuk network byte order. Baris ketiga disi dengan ip address server. Dan akan menset semua nilai menjadi 0.

    if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
    {
        perror("bind");
        exit(1);
    }

Blok di atas adalah untuk mengikatkan socket kepada sebuah alamat network dengan perintah bind().

    addr_len = sizeof(struct sockaddr);

    if ((numbytes=recvfrom(sockfd,buf, MAXBUFLEN-1, 0, (struct sockaddr *)&their_addr, &addr_len)) == -1)
    {
        perror("recvfrom");
        exit(1);
    }

    printf("Mendapat paket dari : %s\n",inet_ntoa(their_addr.sin_addr));
    printf("Panjang paket : %d bytes \n",numbytes);
    buf[numbytes] = '\0';
    printf("Isi paket : \"%s\"\n",buf);
    close(sockfd);

    return 0;
}

Blok program diatas merupakan proses koneksi dengan client. Selanjutnya terdapat proses penerimaan data dari client dan diakhiri dengan menutup hubungan dengan perintah close().


LANGKAH-LANGKAH MENJALANKAN PROGRAM

1.    Simpan program client dengan nama client.c dan program server dengan server.c.

2.    Lakukan instalasi gcc atau compiler untuk bahasa c lainnya :

·         #yum install gcc

3.    Lakukan kompilasi program :

·         #gcc client.c –o client
·         #gcc server.c –o server

4.    Jalankan program server lalu dilanjutkan dengan menjalankan program client :

·         #./server
·         #./client <ip server> <pesan tanpa spasi/dalam tanda kutip>


OUTPUT SERVER DAN CLIENT



READMORE
 

Socket Programming TCP

Socket programming merupakan pemrogramman yang bertujuan agar satu program dapat berinteraksi dengan program lainnya dalam satu jaringan. Penggunaan socket programming memungkinkan adanya komunikasi antara client dan server. Salah satu contohnya sederhana penggunaan socket programming adalah pembuatan program untuk chatting. Program tersebut sebenarnya merupakan bentuk aplikasi komunikasi antara server dan client. Berikut adalah contoh socket programming client server yang dibuat menggunakan bahasa C :

CLIENT

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define PORT 3333
#define MAXDATASIZE 100

Bagian diatas ini merupakan deskripsi dari nomor port yang digunakan yaitu “3333” dan dibawahnya adalah jumlah byte maksimal yang dikirimkan.

int main(int argcchar const *argv[])
{
        int sockfd, numbytes;
        char buf[MAXDATASIZE];
        struct hostent *he;
        struct sockaddr_in their_addr;

Blok diatas berisikan informasi alamat dari server.

        if (argc != 2)
        {
                fprintf(stderr"usage: client hostname\n");
                exit(1);
        }

        if ((he=gethostbyname(argv[1])) == NULL)
        {
                perror("gethostbyname");
                exit(1);
        }

Blok diatas untuk mencari info tentang host.

        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
        {
                perror("socket");
                exit(1);
        }

Blok diatas untuk membuat socket dengan perintah socket. “AF_NET” menunjukkan bahwa socket dihubungkan dengan protocol internet, dan “SOCK_STREAM” menunjukkan bahwa program ini memakai stream socket atau TCP, yang berarti connection oriented.

        their_addr.sin_family = AF_INET;
        their_addr.sin_port = htons(PORT);
        their_addr.sin_addr = *((struct in_addr *)he->h_addr);
        memset(&(their_addr.sin_zero)'\0'8);

Pada baris awal yaitu untuk host byte order atau big endian. Baris selanjutnya untuk network byte order. Dan yang lainnya diisi 0.

        if (connect(sockfd(struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1)
        {
                perror("connect");
                exit(1);
        }

        if ((numbytes=recv(sockfd, buf, MAXDATASIZE-10)) == -1)
        {
                perror("recv");
                exit(1);
        }

        buf[numbytes] '\0';
        printf("Received: %s", buf);
        close(sockfd);
        return 0;
}
                     
Blok program diatas merupakan proses koneksi ke server untuk melakukan proses pengiriman data ke server dengan perintah connect(). Selanjutnya terdapat proses penerimaan data yang datang dari server dengan perintah “recv”. Dan diakhiri dengan menutup hubungan dengan perintah close().


SERVER

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/wait.h>
#include <signal.h>

#define MYPORT 3333
#define BACKLOG 10

Bagian diatas ini merupakan deskripsi dari nomor port yang digunakan yaitu “3333” dan dibawahnya adalah jumlah koneksi yang diperbolehkan.


void sigchld_handler(int s)
{
        while(wait(NULL) 0);
}

int main(void)
{
        int sockfd, new_fd;
        struct sockaddr_in my_addr;
        struct sockaddr_in their_addr;
        int sin_size;
        struct sigaction sa;
        int yes=1;

Pada blok diatas terdapat “sockfd” yang merupakan koneksi saat ini dan “newfd” merupakan koneksi baru. Baris selanjutnya merupakan penetapan ip address server dan dilanjutkan penetapan ip address dari client.

        if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
        {
                perror("socket");
                exit(1);
        }

Blok di atas adalah untuk membuat socket dengan perintah socket().“AF_NET” menunjukkan bahwa socket dihubungkan dengan protocol internet, dan “SOCK_STREAM” menunjukkan bahwa program ini memakai stream socket atau TCP, yang berarti connection oriented.

        if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(int)) == -1)
        {
                perror("setsockopt");
                exit(1);
        }

        my_addr.sin_family = AF_INET;
        my_addr.sin_port = htons(MYPORT);
        my_addr.sin_addr.s_addr = INADDR_ANY;
        memset(&(my_addr.sin_zero)'\0'8);

Blok diatas untuk melakukan proses pengalamatan. Pada baris awal yaitu untuk host byte order atau big endian. Baris selanjutnya untuk network byte order. Baris ketiga disi dengan ip address server. Dan yang lainnya diisi 0.
        if (bind(sockfd(struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
        {
                perror("bind");
                exit(1);
        }

Blok di atas adalah untuk mengikatkan socket kepada sebuah alamat network dengan perintah bind().

        if (listen(sockfd, BACKLOG) == -1)
        {
                perror("listen");
                exit(1);
        }

Blok di atas adalah untuk menerima koneksi yang masuk dengan perintah listen().

        sa.sa_handler = sigchld_handler;
        sigemptyset(&sa.sa_mask);
        sa.sa_flags = SA_RESTART;

        if (sigaction(SIGCHLD, &sa, NULL) == -1)
        {
                perror("sigaction");
                exit(1);
        }

        while(1)
        {
                sin_size sizeof(struct sockaddr_in);

                if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)
                {
                        perror("accept");
                        continue;
                }

Blok di atas adalah untuk menerima koneksi yang masuk meserver dengan perintah accept().

                printf("server: got connection from %s\n", inet_ntoa(their_addr.sin_addr));

                if (!fork())
                {
                        close(sockfd);

                        if (send(new_fd"Pengiriman data dengan stream socket berhasil!\n"140) == -1)
                        {
                                perror("send");
                        }

                        close(new_fd);
                        exit(0);
                }

Blok di atas adalah untuk melakukan proses komunikasi dengan client yaitu proses menerima dan mengirim data dengan perintah read(). Lalu menutup socket.

                close(new_fd);
        }

        return 0;

}


LANGKAH-LANGKAH MENJALANKAN PROGRAM

1.  Simpan program client dengan nama client.c dan program server dengan server.c.

2.   Lakukan instalasi gcc atau compiler untuk bahasa c lainnya (menggunakan os fendora) :

·         #yum install gcc

3.    Lakukan kompilasi program :

·         #gcc client.c –o client
·         #gcc server.c –o server

4.    Jalankan program server lalu dilanjutkan dengan menjalankan program client :

·         #./server

·         #./client <ip server>


OUTPUT SERVER DAN CLIENT





READMORE