Sabunlamadan, şişirmeden

Her geçen yıl, bir önceki yıla göre daha çok makale yazılıyor. Bizde de, dünyada da durum bu. Şaşırmamak gerek. Bir kere araştırmacıların üzerindeki baskılar arttı. Onun için ufak-büyük demeden her çalışmayı makaleye çevirmek için muazzam bir çaba var. Bu çabanın üzerine bir de kolayca veri toplanmasını ve süratleri gün be gün artan bilgisayarları koyun; resim kendiliğinden tamamlanır.

Bol araştırma, bol makale ilk başta kulağa hoş geliyor. Fakat hepimiz biliyoruz ki o makalelerin azımsanmayacak bir kısmında veri sabunlanıyor, sonuçlar şişiriliyor. Mavra olsun diye söylemiyorum. Zamanında yapılmış araştırmaları tekrar etmek isteyen diğer araştırmacılar bir türlü aynı sonuçları elde edemiyorlar. Hatta kullanılan veriye erişmek bile bir maharet.  Sahi, sonuçları tekrar etmek için iletişime geçtiğiniz bazı araştırmacıların ayak diremelerinde başka bir neden olmasın sakın? Pınar yazmıştı bunları.

Bilimsel çalışma tekrar edilebilir olmalı. Üzerinde “ağaçlar yeşil olmalı” yazan park levhasına benzedi. Eh, herhalde yani. Bilimin bir tane ilkesi olsa; o da bu olur herhalde. Tamam, şimdiye kadar bunun aksini söyleyene rastlamadım. Ancak iş özenli not almaya, paylaşmaya, kısacası tekrar edilebilir araştırma yapmaya geldiğinde pek çoğumuzun kaytardığı gerçeği gün gibi ortada duruyor.

Neden peki? Şu yüzden: Yaptığımız her adımı kayda düşmek, kullandığımız veriyi düzenleyip paylaşmak, deney adımlarını sıralamak kolay değil. Daha doğrusu değildi. Son yıllarda bize yardımcı olacak araçlar çıktı. Yenileri de arka arkaya geliştiriliyor. Ve neredeyse tamamı açık kaynak kodlu -haliyle ücretsiz- yazılımlar.

Bir saniye, bir saniye. Önce yardımcı araçlar ile ne demek istediğimi açıklamalıyım. Diyelim ki bir makale hazırlıyoruz. Klasik usulde önce bir yazılım ile makalenin yazılarını yazarız. Veriyi toplamak için başka bir yazılımı, işlemek içinse başka bir yazılımı kullanırız. Bir yandan bu yazılımlar arasında gezmek hata yapmayı kolaylaştırır. Çok dikkatli olmalı. Öte yandan, yaptıklarımızı  diğerleri ile paylaşmak istesek bir araba laf anlatmamız gerekir. İşte bu yazıda bahsedeceğim yardımcı araçalar, tek bir arayüz üzerinden hem makale yazmamızı, hem de hesaplama işlemlerini yapmamızı sağlıyorlar. Üstelik makaleyi tamamladıktan sonra pek çok değişik biçemde kaydedebiliyoruz. İster internete koyalım, ister dergiye gönderilecek hale çevirelim. Harika değil mi?

Ben de bir süredir bu araçları kullanıyorum. Öğrencilerimi de kullanmaları için cesaretlendiriyorum. Hatta bu dönem verdiğim yeni yüksek lisans dersini de bu tür bir araç ile hazırlıyorum. Kısa süre önce hazırladığım bir dersi örnek olması için internete koydum(html, pdf).

Şimdi de nasıl hazırlandığını anlatayım.

Jupyter Notebook

languages

Benim şu aralar en sık kullandığım araç. İlk ortaya çıktığında IPython Notebook olarak biliniyordu ve Python programlama diline yönelikti. Zaman içinde pek çok dili desteklemeye başladı. Örneğin benim kullandığım dilleri yandaki resimde görebilirsiniz. Kurulum işine girişmeden denemek isterseniz, şöyle bir hazır sayfa var.

Hızlıca başlamak için Continuum Analytics sayfasından Anaconda dağıtımını (Python 2.7 seçeneği) kurmanızı salık veririm. Anaconda kurulumuyla birlikte Jupyter Notebook dışında, Python programlama dili ve bilimsel hesaplama için pek çok paket yüklemiş olacaksınız. Belki bir ara Python da öğrenirsiniz, neden olmasın? Açıkçası şiddetle tavsiye ederim.

Kurulumu tamamladıktan sonra Anaconda Launcher diye bir programın yüklendiğini göreceksiniz. Oradan Notebook seçeneğine tıklayın. Program varsayılan internet tarayıcısında yeni bir pencere açacaktır. Sağdaki menüden yeni bir dosya (ilk başta sadece Python) açmayı seçin. Karşınıza ilk hücresi seçilmiş bir dosya çıkacak. Bu hücrelere kod, metin,matematiksel denklem, vb. yazabiliyorsunuz. Düz yazı diyebileceğimiz bu hücreler için Markdown adı verilen basit kurallar kullanılıyor. Örneğin bir kelimeyi koyu harflerle yazmak isterseniz,kelimenin önüne ve arkasına ** işaretlerini koymanız yeterli. İlk başta garip gözükse de, alıştıktan sonra metni çok da hızlı düzenleyebildiğinizi göreceksiniz. Benzer şekilde matematiksel ifadeleri de LaTeX komutları ile yazabilirsiniz. Kod ya da metin olan bir hücreden yenisine geçmek için Alt ve Enter tuşlarına birlikte basmanız (Alt + Enter) yeterli. Kullanmaya başladınız bile!

İyisi mi bu noktada örnek sayfalara bir göz atın. İnsanların Jupyter Notebook ile kitap dahi yazdıklarını göreceksiniz. İlham verecektir. Bu arada Python dışındaki dilleri kullanmak isterseniz, tek yapmanız gereken desteklenen dillere bakmak.

R ve KnitR

Hepimiz bir noktada veri işlemek durumunda kalıyoruz. Bu veri işleme basit bir ortalama almak da olabilir, karmaşık tahmin hesapları yapmak da. İstatistik hesapları için en sık kullanılan program R. Önceki yazımda R programlamaya başlamak için birkaç öneri yazmıştım. Hızlı bir başlangıç için bu aşamada R ve RStudio Desktop kurmanız yeterli.

Kabaca söylemek gerekirse R programı temel istatistik hesaplarını yapacak bir altyapı sunuyor. Ardından yapacağınız işe göre binlerce paketten istediklerinizi seçip rstudio_rmdyüklüyorsunuz. Bu paketlerin arasında tekrar edilebilir araştırma için kullanılabilecekler de var. Ben knitr paketini kullanıyorum. Bu paketi, RStudio’yu açtıktan sonra “Araçlar (Tools)” menüsü altındaki paket yükleme seçeneğini kullanarak kurabilirsiniz.

Knitr paketini kurduktan sonra yeni bir “R Markdown” dosyası açıp çalışmaya başlayabilirsiniz.  Tıpkı Jupyter Notebook gibi düz yazıları Markdown ile matematiksel ifadeleri de LaTeX ile yazabilirsiniz. Bu arada knitr ile yazdıklarınızı HTML ya da MS Word dosyası olarak kaydedebiliyorsunuz.

Başlamak isteyenler için ben bir örnek R Markdown dosyası ile HTML çıktısı ve MS Word çıktısı hazırladım.

Beaker

Son olarak benim de yeni denemeye başladığım Beaker Notebook aracından bahsedeyim. Önümüzdeki yıllarda ismini daha çok duyacağız gibime geliyor.

Beaker Notebook genel olarak Jupyter Notebook ile benzeşiyor. Zaten kendileri de Ipython Notebook için geliştirilen yazılımdan çok faydalandıklarını söylemişler. Fakat Jupyter Notebook ile kıyaslayınca daha güzel bir arayüz tasarladıklarını teslim etmeliyim. Görünüş bir yana, Beaker asıl aynı dokümanda birden fazla dil ile çalışmaya izin vermesi ile parlıyor. Ancak dosyayı kaydetmeye gelince Jupyter Notebook ya da knitr paketine göre henüz oldukça gerideler.

beaker

Markdown, LaTeX, Python ve R

 

İşte size, iki tanesini sık kullandığım, üç araç. Eminim daha nice araç çıkacaktır. Örneğin daha yakın zamanda büyük veri analizi için meşhur Apache grubunun Zeppelin aracına rastladım.

Eğer ısrar edip, bu araçlardan birini kullanmaya alışırsanız sadece tekrar edilebilir araştırma yapmış olmayacaksınız, adım gibi eminim ki aynı zamanda araştırma yapma süreniz de kısalacak. Hadi seçiverin birini.

Sabunlamadan, şişirmeden” üzerine 2 yorum

  1. Bir diger secenek emacs’in org-mode u. Makdown benzeri bir syntax’i var ve yazdiklarinizi latex, html, markdown gibi formatlara export etmek cok kolay.

    ayrica babel kullanip lisp, python, r, ledger, gnuplot, dot vs gibi pek cok dilin kodunu “tangle” edebilirsiniz sonuclari dogrudan metinde kullanabilirisniz. CMU’da kimya profesoru olan John Kitchin’in guzel yazilari var bu konularla ilgili: http://kitchingroup.cheme.cmu.edu/blog/category/orgmode/ Ayrica ozellikle e-mail grubundan destek almak cok kolay. emacs stackexchange ve reddit deki emacs subredit’i de oldukca hizli.

    Surdurulebilir bilim disinda ben yapilacak isler ve ajanda fonksiyonlarini da severek kullaniyorum.

    Birkac ay once referanslarimin yonetimini de Kitchin’in org-ref modu ile yapmaya basladim, helm-bibtex ile birlikte cok kullanisli oldu.

Bir Cevap Yazın

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