Biyoinformatiğe Girişte Sağda: Programlama

Biyoinformatik kampında ne yapıyorsunuz tam olarak, diye sorular alıyorum yakın çevremden. En doğrudan cevabım  “kod yazıyoruz” oluyor. Konuya uzak kişiler biyoloji ve programlamayı bir araya koyarken, programlama işlerinin yalnızca bilgisayar mühendisleri tarafından yapılabileceği önyargısına takılıyorlar.

Her şeyden önce bugün programlama Google Play Store’a kendi yazdığı uygulamayı yükleyebilen çocuklarla ortaokul yaşlarına kadar düştü. Bu çocuklar uzakta değil, bir tanesini tanıyorum; sanırım 12 yaşındaydı, JavaScript biliyordu.

Bahsi açılmışken madem, CoderDojo (http://coderdojoturkiye.com/) gönüllü eğitmen kişiler ile programlamaya meraklı çocukları ve gençleri bir araya getiriyor. Çocuğunuzu geleceğe hazırlamak için mükemmel bir seçim olabilir. Benim çocuğum yok ama olsaydı kesinlikle genç yaşta eline alacağı tablette programlamayla ilgilenmesini sağlardım. Yoksa konu Scratch’e mi geliyor ne?

Scratch de (https://scratch.mit.edu) web adresi üzerinden etkileşimli şeyler, oyunlar ve çizgi filmler yapılabilen bir proje. Bunun amacı gençlere ve gene çocuklara programlama mantığını oyunlaştırarak benimsetmek. Biyoinformatik kampında biz, programlama bilsek de bilmesek de Scratch’te iki adet oyun oluşturarak başladık. Bu hiç programlama bilmeyen kişiler için daha doğrusu programlama mantığını anlamak için sunulmuş en büyük nimetlerden biri; üstelik ücretsiz ve Türkçeye çevrilmiş arayüze de sahip.

Biyoinformatikte neden programlama yapıyoruz ve neden bilgisayar mühendisliği seviyesine çekmeden programlamayı kabullenmeliyiz? Bunlara bir miktar cevap verip, biyoinformatikte programlamaya başlangıç seviyesinde bir yol haritası vermeye çalışacağım.

Öncelikle bilgisayar mühendisliğini programlamaya ya da yazılımcılığa indirgemek büyük haksızlık olur. Belitmek gerek. Öte yandan programlama en basit tanımıyla “makinelerin dilinden konuşabilmektir.” İlerlediğimiz gelecekte bireylerin bunu yapabiliyor olması hayat kalitesinde önemli artışa sebep olacak gibi duruyor, o yüzden öncelikle programlama bilmeyi fazladan bir dil bilmek gibi görebiliriz.

Bilgisayarlar bizler gibi zeki değiller, bizler ne istersek onu yapıyorlar (çoğunlukla); ancak hızlılar ve kayda değer işlem kapasitelerine sahipler. Elimizde devasa miktarda bilgi var; kütüphanelere sığmayan bu verilerden çıkarılabilecek anlamlar sınırsız. Bu şekilde kulağa fazla klişe geliyor evet. Şöyle söylersek, insan DNA’sını dijital ortamda 3 milyar harf ile gösteriyoruz, bu harfleri tek tek sesli bir şekilde okumak 10 yıldan fazla sürüyor. ATGCTAGCTA, bu yalnızca içinden 10 tanesi. Harf harf okuyup süreyi üç yüz binle çarparak ne demek istediğimi anlayabilirsiniz. Şimdi bu 3 milyar harfin içinde az önce verdiğim 10 harflik dizinin yerini bulmanız gerekse ya da bundan içinde kaç tane olduğunu bilmeniz gerekse. Bunun, bir proteinin üzerinde görev yaptığı dizi olduğunu hayal edin ve bu proteinin DNA üzerinde nerelerde görev yaptığını bulmak isteyelim. İşte programlama tam olarak burada devreye giriyor; ve bugün bunu yapan tonlarca yazılım var.

Biyoinformatikte programlama devasa boyuttaki biyolojik verinin içinde aradığımızı bulmamıza yarıyor, bulduklarımızdan bir hikaye oluşturmamıza yarıyor. Çalıştığımız bilgi çöplüğü içinde anlamlı şeyler bulmamızı sağlayan bir araç.

Bir şeyler şekillendirebildiysem buradan sonrasında devam etmek isteyenlere bir yol çizmek isterim. Öncelikle vereceğim programlama hedeflerinde programlama dilinin Python olmasını tavsiye ederim. Biyoinformatikte oldukça yaygın, iş görür bir dil. Komutları açısında bilgisayar ile İngilizce konuşmak gibi.

Biyoinformatik kampına gelirken herkese CodeAcademy’de Python derslerinin ilk 9’unun tamamlanması ödevi verilmişti. Benzer şekilde devam etmeden önce en azından başlangıç seviyesinde Python bilgisine sahip olmanız gerektiğini hatırlatmak isterim.

Dizi Analizi

Programa bu adı veriyorum.

1) İlk hedefiniz Akdeniz değil (soğuk espriler…) bir DNA dizisindeki bazları yani harfleri saymak ve bu sayıları dizide bulunma yüzdeleri ile ekrana basan bir program yazmak. Bu dizi şu şekilde olsun:

“ATGCGCGCTAGCTAGCTATCGATTACGCGATATCGATATCGCTATATATACGCGCTAGCGCGCTATATCG”

Bu programda elde etmeniz gereken çıktı şu şekilde olmalı:

Toplam: 70
A: 17     Yüzde A: % 24.3
T: 19     Yüzde T: % 27.1
G: 16     Yüzde C: % 25.7
C: 18     Yüzde G: % 22.9

Bunu tamamladığınızda programınızı yanlışlıkla girilen A,T,G,C dışında harfleri de sayacak şekilde ve küçük harfle girilecek bir dizi ile de çalışacak şekilde iyileştirebilirsiniz. Daha ileri seviyede programınız diziyi input şeklinde isteyebilir veya bir txt dosyasından açabilir. Tamamen keyfe keder, kader, keyfe-kedr…

2) Programınızın bir sonraki yeteneği, diziyi üçlü gruplara (biyolojik anlamıyla kodlara) ayırması. Yani programınızın bir RNA dizisi ile çalıştığını varsayarsak kodonlara. Bunun için bir ipucu: [i:i+3]

Bunun çıktısı da şuna benzemeli:

[‘ATG’, ‘CGC’, ‘GCT’, ‘AGC’, …

2.1) Üçlü gruplara ayırdığımız DNA dizisini protein bilgisine dönüştürmek isteyelim. Bunun için üçlü gruplara karşılık gelen protein sembollerini bulmanız ve bunu uygun sırayla ekrana bastırmanız gerekmekte.  Şimdilik başlangıç kodonu gibi biyolojik şeyleri bir kenara itelim. Bu işlem için size bir de güzellik yapıyorum.

{ ‘TTT’: ‘F’, ‘TCT’: ‘S’, ‘TAT’: ‘Y’, ‘TGT’: ‘C’,
‘TTC’: ‘F’, ‘TCC’: ‘S’, ‘TAC’: ‘Y’, ‘TGC’: ‘C’,
‘TTA’: ‘L’, ‘TCA’: ‘S’, ‘TAA’: ‘*’, ‘TGA’: ‘*’,
‘TTG’: ‘L’, ‘TCG’: ‘S’, ‘TAG’: ‘*’, ‘TGG’: ‘W’,
‘CTT’: ‘L’, ‘CCT’: ‘P’, ‘CAT’: ‘H’, ‘CGT’: ‘R’,
‘CTC’: ‘L’, ‘CCC’: ‘P’, ‘CAC’: ‘H’, ‘CGC’: ‘R’,
‘CTA’: ‘L’, ‘CCA’: ‘P’, ‘CAA’: ‘Q’, ‘CGA’: ‘R’,
‘CTG’: ‘L’, ‘CCG’: ‘P’, ‘CAG’: ‘Q’, ‘CGG’: ‘R’,
‘ATT’: ‘I’, ‘ACT’: ‘T’, ‘AAT’: ‘N’, ‘AGT’: ‘S’,
‘ATC’: ‘I’, ‘ACC’: ‘T’, ‘AAC’: ‘N’, ‘AGC’: ‘S’,
‘ATA’: ‘I’, ‘ACA’: ‘T’, ‘AAA’: ‘K’, ‘AGA’: ‘R’,
‘ATG’: ‘M’, ‘ACG’: ‘T’, ‘AAG’: ‘K’, ‘AGG’: ‘R’,
‘GTT’: ‘V’, ‘GCT’: ‘A’, ‘GAT’: ‘D’, ‘GGT’: ‘G’,
‘GTC’: ‘V’, ‘GCC’: ‘A’, ‘GAC’: ‘D’, ‘GGC’: ‘G’,
‘GTA’: ‘V’, ‘GCA’: ‘A’, ‘GAA’: ‘E’, ‘GGA’: ‘G’,
‘GTG’: ‘V’, ‘GCG’: ‘A’, ‘GAG’: ‘E’, ‘GGG’: ‘G’
}

2.2) Programınız ne yapsın, bence önceden oluşturmuş olduğunuz üçlü grupları bir saysın ve en çok varolan 5 tanesini çıktı olarak göstersin. Acaba bunun için önce hepsini tek tek saydırmaya gerek var mı yoksa direkt en çok görülen 5 tanesini verecek bir komut olabilir mi, hımmm.

3) Complement ya da eşlenik dediğimiz kavram normalde çift zincir halinde bulunan DNA’nın bir zincirinin karşısındaki diğer zincirdir. Biyoloji bilgisi pek iyi olmayan kişiler için şöyle söyleyebiliriz: A’nın karşısına T, T’nin karşısına A, G’nin karşısına C ve C’nin karşısına G gelen bir dizi bu eşlenik. ATGC için TACG yani. Öyleyse yapmanız gereken en başta vermiş olduğum dizinin eşleniğini bulan bir kodu programınıza eklemeniz. Şöyle bir şeye benziyor olsa gerek: TACGCGCGATCGATCGATAGCTA….

4) Ters Eşlenik???  Bunun ne olduğu ve bunu yapmanın tek satırlık yolu… Bu program için bonus uğraşı olsun.

Dizi Analizi adını verdiğim programın içeriği ve amaçları bu şekilde olmalı. Bunları gerçekleştiren  bir program yazdıktan sonra dilediğiniz gibi süsleyebilir ya da yeni şeyler ekleyebilirsiniz. Şöyle bir şey de yapabiliriz, bana yazdığınız kodu veya çıktısını gönderebilirsiniz; ben de size eleştiri, tebrik, yardım, küfür…, övgü,  gibi geri dönüşler yapabilirim. Dilediğiniz gibi iletişim kurabilirsiniz: seyitzor@gmail.com Bu programı yazacak güç içinizde; ama bana doğrudan “hangi komutu kullanmalıyım” ya da kodda bir noktayı, virgülü koymayı unutup da “doğru yapıyorum hep şu hatayı veriyor allah allah” şeklinde mailler göndermeyiniz.

Bonne Chance

Dipnot: Biyoinformatik kampında yazdığımız ilk program aynen bu işleri yapıyordu. Hepsini güp güp verdim biraz zamanınızı alabilir, ama üzerinizde bir beklenti yok; hatta bana ” yapmıyorum ulan” diye mail de gönderebilirsiniz.

Edit: Bu kadarcık mı? Değil, buralarda olun.

 
 

Reklamlar

Yorum Yap

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s