Last chance! 50% off DataCamp Premium
Sale ends in
Bu yıl PyCon 2017'de, bilimsel Python topluluğundan iki kişi açılış konuşması yaptı: Dr. Jake VanderPlas bilim insanlarının neden Python’u benimsediğini ve benimsemeleri gerektiğini anlattı; Dr. Kathryn Huff ise Python topluluğunun bilim topluluklarına nasıl yardımcı olabileceğini ve neden olması gerektiğini ele aldı. Bu iki konuşma birlikte, bilimsel araştırma ile Python programlamanın birbirini nasıl tamamladığına, günümüzde pek çok çalışan bilim insanının neden Python’u benimsemesinin en iyi seçenek olduğuna ve Python topluluğunun bilimsel araştırmaları neden ve nasıl etkin biçimde destekleyebileceğine dair bütüncül ve tutarlı bir çerçeve sunuyor.

Jake VanderPlas, Seattle’daki Washington Üniversitesi eScience Institute’ta bir gökbilimcidir. Aynı zamanda SciPy, scikit-learn ve altair gibi Python paketlerine katkıda bulunmuş, daha geniş bilimsel Python topluluğunun da aktif bir üyesidir.
Çoğu kişi gökbilimcileri dev teleskopların başında merceklere bakarken hayal eder; ancak Jake, profesyonel yaşamlarında çoğu gökbilimcinin hiç teleskoptan bakmadığını, veri toplama sürelerinin büyük bölümünü veritabanı sorguları yaparak geçirdiklerini söyledi. Fakat veritabanları, gökbilimcilerin yüzleştiği görevlerin gerektirdiği hesaplama becerilerinin yalnızca görünen kısmı; Jake bununla ilgili birkaç aydınlatıcı örnek verdi. Örneğin, aşağıdaki TRAPPIST-1 Ötegezegen Sistemi görselleştirmesine bakalım:

Bunun gerçek bir fotogerçekçi görüntü olduğunu düşünmek cazip gelebilir; ama aslında bir sanatçının yorumudur: özgün veri değildir. Gezegene dair varlık, bir yıldızın tutulmasından çıkarımlanmış ve aşağıdaki ve sonraki veriler üzerinde (görsel formunda, Ethan Kruse’un verileri) bu tür bir sistemin istatistiksel modellenmesiyle saptanmıştır:

Peki tüm bu çıkarım ve istatistiksel analiz nasıl yapıldı? Elbette Python ile. Hem de ‘son derece ayrıntılı bir istatistiksel modelleme’ yoluyla; dahası, Jake’in söylediğine göre, bu türden sistemleri bulmak ‘karmaşık bir veri analizi hattında istatistiksel kod yazmaya’ dayanıyor.
Jake’in bize gösterdiği bu (astronomideki) bilimsel projelerin birçoğu, veri işleme ve analiz hattında Python programlama dilini kullanıyor. Üstelik bu projeler yalnızca açık kaynak bir programlama diliyle yazılmakla kalmıyor, kodları da github’da yer alıyor; örneğin Kepler ve JWST. JWST, diğer yıldızların çevresindeki gezegenlerin atmosferlerinde gazları keşfedip kimyasal bileşimi ortaya çıkarmaya ve böylece olası yaşam izlerini belirlemeye çalışıyor — bu projeler Python ile yazılıyor, github’da barındırılıyor ve Jupyter not defterleri gibi araçlar kullanıyor.
Acaba bu yalnızca birkaç Python projesinden ibaret bir anekdot mu, yoksa kural mı? Astronomide öyle değil. Jake, Python kullanan yayınların düzenli olarak arttığını gösteren bir analiz yaptı:

Şu Python Hokey Sopasına bir bakın! Öyleyse bilim insanlarının giderek daha çok Python kullandığını saptadık; peki neden Python kullanıyorlar?
Jake şu soruyu sordu: ‘Python bilime neden bu kadar etkili bir araç sağlıyor?’
Yapıştırıcı olarak Python: tarihsel olarak birçok çalışan bilim insanı, deneyden ve/veya veriden aktarılabilir sonuçlara ulaşabilmek için veritabanı sorgulama, komut satırı sihirbazlığı, özel ya da tescilli yazılımlar ve veri görselleştirme araçlarını içeren, sakar, karmaşık ve aslında abartılı veri boru hatlarıyla uğraşmak zorunda kaldı. Jake VanderPlas, kısmen bunu iyi ifade ettiği için Dave Beazley’den alıntı yaptı:
‘Bilim insanları... simülasyon kodlarından veri analizi paketlerine, veritabanlarına, görselleştirme araçlarına ve ev yapımı yazılımlara kadar çok çeşitli sistemlerle çalışırlar — bunların her biri kullanıcıya farklı arayüzler ve dosya biçimleri sunar. Sonuç olarak, bir bilim insanı zamanının hatırı sayılır bir kısmını yalnızca tüm bu bileşenleri bir şekilde birlikte çalıştırmaya çalışarak geçirebilir...’
Ve Python, bilimsel araştırmada kullanmak isteyeceğiniz araçların çoğuyla birlikte çalışabilir: bağlar, yani bir yapıştırıcıdır. Jake’in dediği gibi, Python, ‘insanların çalıştığı o karma araç yığınını bir araya getirmek için kullanılıyor; üst düzey Python söz dizimi bu düşük seviyeli C/Fortran kütüphanelerini sarmalar.’
Araştırmacıların Python’a akın etmesinin (ve henüz etmemiş olanların da “etmesi gerektiğinin”) bir diğer nedeni,
SciPy) ekosisteminin bulunmasıdır.“Piller dahil” özellikler, web’i kazımanıza, web sunucuları başlatmanıza, dosya sistemleri ve veritabanlarıyla çalışmanıza, json okumaya ve çok daha fazlasına olanak tanır!
Asıl heyecan verici olan ise “üçüncü taraf” modüllerdir. Örnekler arasında şunlar vardır, ancak bunlarla sınırlı değildir:
Jake’in dediği gibi, “çözmeniz gereken bir sorun varsa, size yardımcı olacak bir kütüphane bulma olasılığınız çok yüksek ve muhtemelen github’da!”

Python yazması görece kolaydır, özellikle C gibi dillere kıyasla. Jake’in dediği gibi, ‘Python’da, özellikle örneğin C’den geldiğinizde, ne olmasını istiyorsanız onu yazarsınız ve olur; adeta çalıştırılabilir sözde kod yazmak gibidir.’
Ayrıca Perry Greenfield’dan şu alıntıyı yaptı: ‘Python, geliştiriciler için çok güçlü, ama aynı zamanda Gökbilimciler için de erişilebilir bir dildir. Bu iki insan grubunun aynı araçları kullanmasını sağlamak, bence, her zaman fark edilmeyen veya dile getirilmeyen büyük bir fayda sağlar.’
Örneğin IPython ve Jupyter not defterleri gibi araçlar sayesinde, anlık olarak dinamik kodlama ve keşifsel, yinelemeli veri analizi için harika bir fırsat vardır. Bu da düşük giriş engeli sunar; çünkü bilimsel kodlama zaten doğrusal olmayan ve keşifseldir. Jake, bazı kişilerin bu araçların yavaş olduğundan şikâyet edebileceğini belirtti; ancak bilimsel araştırma açısından kilit olan geliştirme hızıdır, yürütme hızı değil — bu da bu araçları ideal kılar.
Açık kaynak yazılım, bilimsel araştırmanın gerektirdiği açıklığa çok uygun bir yaklaşıma sahiptir (hatta belki birçok bilimsel araştırmadan bile daha fazla). Bunu Katy Huff’ın açılış konuşmasını tartışırken daha ayrıntılı ele alacağız; ancak bilim yalnızca yayımlanan makalelerde gerçekleşmez, bilim sonuçta ve o sonuca götüren talimatlar/protokoller ile sonucu tekrarlanabilir kılma becerisinde gerçekleşir; bu da açık kaynak yazılım geliştirmesinin tam olarak amaçladığı şeydir. Jake, Buckheit ve Donoho’dan (1995, Jon Claerbout’tan aktarma) şu alıntıyı verdi:
Bir hesaplamalı sonuca dair makale reklamdır, bilimsel çalışma değil. Asıl bilimsel çalışma, sonucu üreten tam yazılım ortamı, kod ve veridir. — Buckheit ve Donoho, 1995
Açık kaynak yazılım ile Python (bilimsel ve diğer) ekosisteminin benimsediği yaklaşım, bizi bilimdeki tekrarlanabilirlik krizinden çıkarmaya yardımcı olabilecek bir çerçeve sunuyor: ‘tekrarlanabilirliği çözmek, açık bilimle ilgilidir’ ve Python ekosistemindeki bilimsel araştırmanın işbirliğine dayalı, akran denetimli, GitHub’da yayımlanabilir doğası, bilimdeki bu açıklığın anahtarıdır. 2016’da (Einstein’ın öngördüğü) kütleçekim dalgalarının nasıl saptandığını incelemek istersem, yapmam gereken tek şey LIGO deposuna buradan gitmektir. Ya da araştırmalarında Astropy paketini kullanan giderek artan sayıdaki gökbilimciden biriyseniz, kodu ve onu üreten topluluğu burada bulabilirsiniz; bu kadar açık olması, topluluğun daha geniş Python topluluğunda bulduğu açık kaynak ve açık bilim yaklaşımını modellemesinin doğrudan bir sonucudur. Jake’in (Perry Greenfield’dan uyarlayarak) Python topluluğundan astronomi topluluğunun öğrendiğini düşündüğü şeylere dair tabloya göz atın:

“Gücünüzü kendi amaçlarım için kullanmak için buradayım” dedi Dr. Kathryn Huff, PyCon topluluğuna, ve Python programlama topluluğunun neden ve nasıl bilimin dünyayı kurtarmasına yardımcı olabileceğine dair ikna edici bir argüman sundu. Konuşması, genel olarak açık kaynak yazılım geliştirme ile özel olarak Python’un, Bilimsel Hesaplamada ve genel bilimsel araştırma ve uygulamada neden bu kadar etkili olduğunu ayrıntılı ve tutkulu bir biçimde temellendirdi. Bir adım daha ileri giderek, geniş Python programlama ve geliştirme topluluğunun Python becerilerini bilim topluluğuna yardım etmek ve dünyayı kurtarmak için kullanabileceği pek çok alanı gösterdi. Eğer su’nun insanlık için ciddi bir sorun olduğunu düşünüyorsanız, ya da sağlık veya enerjinin, Kathryn’in katkı sunabileceğiniz açık konuları olan projeleri ve GitHub depoları hazırdı. Katkıda bulunabileceğiniz, açık konuları olan onlarca proje ve paket örneği verdi.
Kathryn (Katy) bir Nükleer Mühendis, uzun süredir SciPy topluluğuna katkıda bulunuyor, Journal of Open Source Software ile ilgileniyor ve zamanının önemli bir bölümünü bilim insanlarının bilgisayarları daha iyi kullanarak keşif yapmalarına, tekrarlanabilirliği ve bilim insanlarının bilgisayar kullanma kolaylığını artırmaya yardımcı olan The Hacker Within ile Software ve Data Carpentry girişimlerine adıyor.
Katy’nin misyonu, nükleer enerjinin üretim biçimini iyileştirmek; peki tercih ettiği araç ne? Python! Python topluluğunun bilimsel araştırma topluluğuna sayısız şekilde nasıl yardımcı olabileceğine girmeden önce, bunun neden gerçekten gerekli olduğuna dair güçlü bir argüman sundu. Katy, bilimi titiz, yapılandırılmış, topluluk denetimi gerektiren bir uğraş olarak tanımlayan R. K. Merton’ı (1945) alıntıladı (bu, örgütlü kuşkuculuğun nasıl görüneceğine dair harika bir çalışma tanımıdır); bunların hepsi, açık kaynak Python topluluğunun tartışmasız nitelikleridir.

Katy, bilimin temel ilkelerini sıralayarak ve Açık Kaynak Yazılım geliştirme topluluğunun, Pisagor Çağı’ndan (MÖ 6. yüzyıl) bu yana bu ilkelere en iyi şekilde bağlı kalan topluluk olduğunu vurgulayarak bunun önemini pekiştirdi. Bilimin bu temel ilkeleri şunlardır:
Bilgisayarlar bilim insanlarına şunları yapmada “yardımcı olmalı”:

Öyleyse, bilgisayarların bilim insanlarına yardımcı olabilmesi için daha fazla bilim insanını Python gibi açık kaynak yazılımlar kullanmaya teşvik etmede sorun nedir?
Bu nedenle Katy’nin Python topluluğuna çağrısı:
“Sizi dahil etmek istiyorum”.
Ve bu tür bir seferberlik, çalışan araştırmacıların Python kullanması için bir başka neden: emrinizde büyük bir açık kaynak programcı topluluğu var. Katy’nin dahil olduğu bir diğer yaklaşım da, çalışan bilim insanlarını işleri için bilgisayar kullanımı konusunda eğitmek. Bu amaçla birkaç program mevcut. Tüm çalışan bilim insanlarına, grubunuza, bölümünüze veya üniversitenize yardımcı olup olamayacaklarını görmek için Software Carpentry ve Data Carpentry’e göz atmanızı öneririm (yanıt: hesaplama yapıyorsanız, büyük olasılıkla yardımcı olabilirler).
Peki Dr. Katy Huff, programcıların nasıl yardımcı olmasını öneriyor? Dört basit adımda:
‘Python, geliştiriciler için çok güçlü, ama [bilim insanları] için de erişilebilir bir dildir. Bu iki insan grubunun aynı araçları kullanmasını sağlamak, bence, her zaman fark edilmeyen veya dile getirilmeyen büyük bir fayda sağlar.’
Her türlü düşünce, yanıt ve/veya fikirlerinizi benimle Twitter üzerinden paylaşmaktan çekinmeyin: @hugobowne.
blog
Dario Radečić
15 dk.

blog
Abid Ali Awan
14 dk.
Eğitim
Adel Nehme
Eğitim
Kurtis Pykes
8 dk.