31 Ağustos 2014 Pazar

Biraz Pythonlama

İlk yazımda size stajımın birinci haftasında ısınma turları olarak yaptığım oyunlardan bahsettim. Bu hafta işler biraz daha ciddileşiyor ve Python için kollarımızı sıvıyoruz.( Eğer daha önce python kullanmadıysanız codecademy’de  python dersini bitirmek yararlı olur.)  For döngüleri, liste ve sözlük oluşturma, oluşturduğumuz bu dizilerden istediğimiz veriye ulaşabilmek gibi temel yapıları anlamak için bazı fonksiyonlar oluşturmamız istendi bu adımda. Bu fonksiyonlar sırasıyla şu görevleri yerine getirmeliydi: Verilen DNA dizisini 3 bazlık kodonlara ayırmak, kodon dizisinden protein sekansının eldesi, verilen DNA dizisinin intronlarını liste olarak verme, tüm genomu verilen organizmaların intronlarının belirlenmesi ve txt dosyası olarak verilmesi, verilen intron dizisinden olası 20 bazlık miRNA ların bulunması ve liste olarak verilmesi. Olası miRNAları, intron sekansı boyunca 20 bazlık dizinin çerçeve kaydırma yöntemiyle bulunması mümkündür. Bu aşamada fonksiyonları yazarken başvurduğum bazı  kolaylıklardan bahsetmek istiyorum. Liste ve sözlükleri oluştururken istediğim veriye ulaşıp ulaşmadığımı her adımda kontrol etmek, for döngüsünün farklı adımlarında print komutuyla döngünüzün tam olarak ne çevirdiğini, aldığınız hata kodlarını aratıp sebeplerini anlamak, büyük veriler ile çalışmadan önce verinizin bir parçasıyla fonksiyonlarınızı geliştirmek, aldığınız veri çıktılarını anlayabilmek için kodun belli yerlerinde kolay ayırt edilir işaretler printlemek beni  yazdığım kodun içinde kaybolmaktan uzak tutmuştur. Bu ve bunlar gibi gerçek problemlerle paralellik gösteren  fonksiyon örneklerini Rosalind sitesinde bulabilirsiniz. Orada aldığınız puanlar ve küçük ödüller de motive edici olabiliyorJ. Aynı zamanda yazdığınız çözümü forumdaki insanlarla paylaşıp, aynı problem için oluşturulabilecek daha kısa ve dinamik kod olup olmadığını da görebilir böylece kodunuzu gereksiz satırlardan kurtarabilirsiniz.

Yeni biyoinormatiğe giriş adımları için bir sonraki yazımda görüşmek üzereJ

Hello world!

Merhaba, benim adım Hana Kamer. Ege üniversitesi Biyokimya bölümü mezunuyum. İstanbul Teknik Üniversitesi Moleküler Biyoloji bölümünde yüksek lisans yapmaktayım. Uzun zamandır biyoinformatik alanına duyduğum ilgiyi nasıl adım adım hayata geçirdiğimden bahsedeceğim  size bu yazı dizisinde. Yararlı kitap isimleri, konuları basite indirgemiş video linkleri ve dersler ile kullanışlı bir ortam yaratmayı umuyorum.
Biyoinformatik alanına atılmak için attığım ilk adım yazılım kursuna gitmek oldu. Bu kursta HTML, CSS gibi web development araçları öğrenmenin yanı sıra basit görevleri yerine getirebilecek çok uzun olmayan programlar yazabilecek kadar C# dili öğrendim. Fakat bu bilgileri kullanmamak beni yavaş yavaş köreltmeye başlamıştı. Bu yüzden her şeye en baştan bu sefer ucunu bırakmamak üzere başlamaya karar verdim. Öğrendiklerimi gerçek projede kullanabilmek için kendime bir staj yeri aramaya başladım. Aramalarımın sonunda Türkiye’nin ilk biyoinformatik şirketi AG Biyoinformatik şirketinin kurucusu olan Ahmet Raşit Öztürk ile iletişime geçtim ve kendisi beni Kayseri’de bulunan Genom ve Kök Hücre Merkezinde staj yapmak için kabul etti.
Genkök’e geldiğim zaman staja daha erken başlamış olan eski stajyerler “Tuna” isimli bir proje üzerinde çalışıyordu. Yeni stajyerler olarak bu projeye dahil olmak için belli adımlardan geçmemiz gerekiyordu. Bunlardan ilki scratch* ortamında 3 oyun yapmaktı. (1. Bildiğimiz en basit tenis mantığı, top sağdan sola gidecek, iki taraftaki engel 2 oyuncuyu temsil edercesine farklı tuş gruplarıyla aşağı yukarı gidebilecek, top engele dokunamazsa oyun bitecek 2. Yukarıdan serbest düşme hareketi gerçekleştiren (burada serbest düşme hızının sabit olmadığını göz önünde bulundurmanız gerekir) topun aşağıda sepetle yakalanması, top sepete düştüğünde topun sepetle hareket etmesi. 3. DX ball ile aynı mantıkta bir oyun.) Bu oyunları yaparken bilgisayarın komut okuma sırasını, ilerde programlamada kullanılacak olan for, while gibi loopların çalışma prensibini görselleştirmiş oluyorsunuz böylece arkada yatan mantığı özümsemiş oluyorsunuz. Oyunda hareketleri, eşitlikleri, verileri vs gruplandırdıkları gibi bunların şekillerini kendilerine özgü yaptıkları için hangi komutları kullanmanız gerektiği konusunda bu şekillerin uyumunu ipucu olarak kullanabilirsiniz.
Bu günlük yazımı burada sonlandırıyorum. Stajımın ilerleyen günlerinde tekrar görüşmek üzere...


*http://scratch.mit.edu/ sitesini ziyaret edip basit bir scratch oyunu yapmayı sakın unutmayınJ Mutlaka diğer çılgın insanların bu basit gibi görünen ortamda nasıl muhteşem oyunlar yaptığına da göz atın. Eminim bir an için scratch-pro olmak için gaza geleceksenizJ