Hazel Kavili

Accio data!

github twitter linkedin email rss
rOpenSci Topluluğu için Paket İnceleme
Nov 29, 2017
4 minutes read

Sorular

R’ın birçok paket ile günlük işlerimizi, akademik çalışmalarımızı, araştırmalarımızı hızlandırdığını hepimiz biliyoruz. Pekiyi bu paketleri kimler yazıyor? Bu paketleri yazanların bir topluluğu (community) var mı? Paket yazarken uydukları kurallar, izledikleri yollar var mı? Bir paket yazıldıktan sonra illa ki CRAN’a göndermek gerekiyor mu? Bu paketlerin düzgün çalışıp çalışmadığını kontrol eden birileri var mı?

Bu kadar çok soru sanırım bu yazıyı doldurmaya yeter :) Bu yazıda bu sorulara cevap verdikten sonra paket inceleme süreçlerinden (package review), kendi deneyimimden bahsetmek ve sizleri de bu sürece gönüllü olmaya davet etmek istiyorum.

R’ın paketlerini indirebileceğiniz (yazdığınız paketleri gönderebileceğiniz) yerlerin başında CRAN geliyor. Oraya göndermediğiniz paketlerinizi Github’da da tutabileceğinizi, eğer özel (private) bir repoda değilse başkalarının bu pakete düzeltmeler, geliştirmeler yapmak isteyeceğini de unutmayın (ki bu harika bir şey).

rOpenSci ise open data, open science konularına gönül vermiş birçok insanın bir araya geldiği toplulukların başında. Temel amaçları tekrar üretilebilir araştırmaları desteklemek (reproducible research,yani bir arkadaşınıza aynı veri seti ve analizi gönderdiğinizde örneğin aynı sonuçları alabiliyor mu) ve bilim insanları için veri yönetimini kolaylaştırmak. İklim, meteoroloji, hava kalitesi, yer bilimleri gibi alanlarda ve veri toplama, veri erişimi, veri manipülasyonu, haritalama, metin işleme kategorilerde türlü paketler mevcut. Sizler de bu topluluğa uygun olduğunu düşündüğünüz paketlerinizi yollayabilirsiniz. Open peer review yapıldığını, yani paketinizi bu topluluğa gönderdiğiniz zaman her aşamasının, paketinizin çalışma alanından insanlar tarafından incelendiğini unutmayın. Paket sahibinin yazdığı kod dosyalarından, isimlendirmelerden tutun da fonksiyonları ve çıktılarını açıkladığı vignette’lere, markdown’lara, kullandığı lisansa kadar inceleme yapıp geri bildirim verebiliyorsunuz.

Bu grubun uyduğu bazı kurallar ve bir paket incelerken izlenmesi gereken adımlara ait rehberler var, ki bu da işinizi bir hayli kolaylaştırıyor. Örneğin fonksiyon ve değişken isimlerinde snake_case kullanılmasını, fonksiyon isimlerinin var olanlarla çakışmasını önleyecek isimler seçilmesini, README.md dosyalarının olmasını ve bu dosyaların paketi indirmek isteyen kişilere bazı temel bilgileri vermesini istiyorlar. Tabi ki bunun yanında yazılan fonksiyonların kod yapılarını, yorumlarla yazılıp yazılmadığını, performans testlerini geçip geçmediğini kontrol etmeniz ve iyi dökümante edilip edilmediğini de incelemeniz gerekiyor.

Bu kadar çok şeyi nasıl yapacağız, sorusu bir reviewer olmak için başvurduğumda benim de aklımdan geçmişti. Beni bu konuda gönüllü olmaya yaklaşık 8 ay önce R-Ladies organizasyonundan tanıdığım Maëlle Salmon ikna etmişti. Yeni bir şeyler öğrenmek için iyi bir fırsat olacağını düşünmüş ve reviewer formunu doldurmuştum. Ardında şu anda tidyverse developer advocate olan Mara Averick ile süreç hakkında konuşup biraz daha cesaret toplamıştım. İlk paketimi de henüz geçen hafta inceleme fırsatı buldum.

nasapower Paketi İncelemesi

Sanki beni hep NASA ile ilgili şeyler takip etmeye başlamış gibi hissederken, Adam Sparks’ın hazırladığı bu paketin incelemesi rOpenSci ekibinden teklif edildiğinde fazla düşünmeden kabul ettim :) Aslında teklif edilmesindeki temel sebep, şu anda doktoramı Yer Sistem Bilimleri’nde yapıyor olmam. Yani paket ve reviewer için perfect-match!

nasapower paketi, Prediction Of Worldwide Energy Resource adresinden, gerekli enlem ve boylam değerleri girildiğinde, 1983 yılı itibariyle 1˚ enlem ve 1˚ boylam çözünürlüğünde ortalama sıcaklık, minimum ve maksimum hava sıcaklığı, nemlilik gibi değerleri bir data frame halinde çalışma ortamınıza almanızı sağlıyor.

Bu paketin güzelliği de buradan geliyor, size analize ve modellemeye uygun, temiz bir veri seti sunuyor.

Elime kağıt kalem alıp agroclimatology kelimesiyle biraz araştırma yaptıktan sonra bu paketi nasıl inceleyeceğime, rOpenSci’ın hazırladığı şablon ile devam ettim. Genel hatları şu şekilde:

Documentation
For packages co-submitting to JOSS
Functionality
Final approval

Daha sonra kendi incelemelerimi kategorilere bölüp bir markdown dosyasında paylaştım:

Installation
Code Overall
rOpenSci criteria
Readme.md
Vignette
Errors and console messages
R CMD check
Other comments  

Tüm review sürecimi bitirmeden, paket sahibinin dökümanlara koyduğu grafiklerle, kendi sistemimde çalıştırdığımda elde ettiğim grafikler arasında fark gördüm ve bunu bir email ile bildirdim. Çok hızlı şekilde problemi çözdü ve ben de yorumlarımı Github sayfasına yolladım. Bu arada rnaturalearthdata, httr paketlerini de bir incelemiş oldum.

Bu aşamalar içerisinde en çok zorlandığım R CMD check aşaması oldu. Ancak Julia Silge’ın bu yazısı ile öğrenip uygulama fırsatı bulduğum, TRAVIS-CI (continuous integration) servisi ile bunu da tamamladım. Bu servis sayesinde yazdığınız kodlarla ilgili, Github’a her commit yolladığınızda sürekli olarak otomatik testler çalıştırarak, problemleri hızlıca tespit edebiliyorsunuz. Uygulamasını ise dökümanlara bakarak şu şekilde gerçekleştirdim:

Terminal ekranında paketin olduğu Github reposunu çalışma alanıma cloneladım:

git clone https://github.com/adamhsparks/nasapower

R Studio’da test ettim:

devtools::check()

Test sonucu aşağıdaki çıktıyı alırsanız ne mutlu. Alamazsanız da problemleri paket sahibine bildirmeyi unutmayın (veya kendi paketinizse çözmek konusunda araştırmalara girişin :))

Kısacası, bir paket incelemek bana bir bilim dalının varlığını, paket ve fonksiyonları incelemeyi, hiç kullanmadığım bir servisi kullanmayı ve kendim bir paket yazacak olsam nelere dikkat etmem gerektiğini öğretti. Siz de bu deneyimi yaşamak isterseniz yukarıda bahsettiğim adımları takip etmeye başlamanız yeterli olacaktır. 3 hafta olarak belirlenen inceleme süresi fazla fazla yetiyorken bu işin heyecanına kapılıp başka işleriniz aksayabiliyor :)


Back to posts


comments powered by Disqus