İçeriğe geç

Ders 19.1 · Seviye 5 · Modül 19

Astronomlar neden kod yazar?

1.593 kelime · 3 kaynak pasajı · yaklaşık 7 dakika okuma · seslendirme 11 dk

Önce özete göz atDersin sonundaki özet, okumaya başlamadan önce yol haritası olarak.
  1. Modern gözlemevleri insanın elle inceleyemeyeceği kadar veri üretir: Rubin Gözlemevi günde yaklaşık 10 terabayt, on yılda yaklaşık 30 petabayt; bu veriyi işlemenin tek yolu yazılımdır.
  2. 1142 gökbilimciyle yapılan bir ankette hepsi yazılım kullanıyordu, yüzde 90'ı kendi kodunu yazıyordu ve en yaygın dil yüzde 67 ile Python'du; ama yalnızca yüzde 8'i ciddi bir yazılım eğitimi almıştı.
  3. Başlamak için Colab gibi kurulumsuz bir Jupyter defteri yeterli; değişken, liste, döngü ve fonksiyonla Wien ve Kepler yasalarını birkaç satırda hesaplayabilirsin.

Kanca

Şili'deki Vera C. Rubin Gözlemevi her yirmi dört saatte yaklaşık 10 terabayt veri üretiyor. Gözlemevinin kendi hesabıyla bu, neredeyse iki yıl boyunca aralıksız dizi izlemeye yetecek kadar veri. Her gece. On yıllık taramanın sonunda arşivde yaklaşık 30 petabayt ham görüntü birikmiş olacak.

Hiçbir insan bu görüntülere tek tek bakamaz. Bir yaşam boyu bakmaya çalışsa bile, tek bir gecenin verisine yetişemez. Bugünün teleskopları, bir gecede insanın ömür boyu bakamayacağı kadar veri üretiyor. Bu yüzden bugünün gökbilimcisi okülere değil, çoğu zaman bir kod penceresine bakıyor.

Merkezi soru

Gökbilimciler neden kod yazmak zorunda, bu işte neden Python öne çıktı, ve sen kendi bilgisayarında ya da tarayıcında ilk astronomi kodunu nasıl çalıştırabilirsin?

Anlatım

Veri seli

Rubin'in sayısını gündelik ölçeğe çevirelim. 30 petabayt, 30 milyon gigabayttır. Bir terabaytlık dizüstü bilgisayar diskine bölünce 30.000 disk eder. Gözlemevine göre görüntüler Şili'den Kaliforniya'ya birkaç dakikada aktarılıyor, eski görüntülerle karşılaştırılıyor ve gökyüzünde bir şey değiştiğinde uyarı üretiliyor. Bu karşılaştırmayı insan değil, yazılım yapıyor.

Rubin tek örnek değil. Ders 18.7'de gördüğümüz DESI'nin haritası da 14 milyondan fazla gök cismini kapsıyordu. Bu ölçekte bir soruyu cevaplamak, bir cetvel ve bir defterle değil, milyonlarca satırı aynı kurala göre işleyen bir kodla mümkün.

Gökbilimciler kod yazıyor mu gerçekten?

2014 sonu ile 2015 başı arasında Ivelina Momcheva ve Erik Tollerud, dünyanın dört bir yanından 1142 gökbilimciye yazılım alışkanlıklarını sordu. Sonuç açıktı: katılımcıların hepsi araştırmasında yazılım kullanıyordu; yüzde 90'ı en azından kodunun bir kısmını kendisi yazıyordu. En çok kullanılan dil Python'du, katılımcıların yaklaşık yüzde 67'si.

Anketin bir bulgusu da cesaret verici: kod yazan bu kadar insandan yalnızca yüzde 8'i yazılım geliştirme konusunda ciddi bir eğitim aldığını söylüyordu. Yüzde 43'ü hiç eğitim almamıştı. Yani gökbilimcilerin çoğu kodu, senin şimdi yapacağın gibi, işin içinde öğrendi.

Neden Python?

Python, okunması kolay, İngilizceye yakın sözcüklerle yazılan bir programlama dilidir. Bir satırı çalıştırıp sonucunu hemen görebilirsin; derlemek, beklemek gerekmez. Asıl gücü ise çevresindeki kütüphanelerden gelir: başkalarının yazıp paylaştığı hazır araçlar. Bir sonraki derste göreceğimiz Astropy, gökbilimciler tarafından gökbilim için yazılmış böyle bir araç takımıdır.

Kodun bir faydası daha var: tekrarlanabilirlik. Bir hesap makinesiyle yaptığın işlemleri bir hafta sonra hatırlamayabilirsin. Kod ise her adımı yazılı olarak saklar; başka biri aynı kodu aynı veriyle çalıştırıp aynı sonucu alabilir. Bilimde bir sonucun güvenilirliği, başkalarının onu yeniden üretebilmesine bağlıdır.

Çalışma ortamı: üç yol

Başlamak için hiçbir şey kurmak zorunda değilsin. Google'ın Colab hizmeti, kendi sayfasındaki tanımıyla, kurulum gerektirmeyen ve ücretsiz bir Jupyter defteri ortamıdır. Tarayıcında açarsın, bir hücreye kod yazarsın, çalıştırırsın.

Jupyter defteri, kodu, sonuçları ve açıklamaları aynı sayfada bir arada tutan bir çalışma kâğıdıdır. Her hücre ayrı ayrı çalışır; sonucu hemen altında görürsün. Gökbilimcilerin günlük çalışmasının büyük kısmı bu tür defterlerde geçer.

Kendi bilgisayarına kurmak istersen, Jupyter'in belgeleri yeni başlayanlara Anaconda dağıtımını öneriyor: Python'u, Jupyter defterini ve bilimsel hesapta sık kullanılan paketleri tek seferde kurar. Python'u zaten kullanıyorsan, aynı belgelere göre komut satırına «pip3 install jupyter» yazman yeterli. Defteri açmak için komut satırına «jupyter notebook» yazarsın.

İlk satırlar

İlk hücreye şunu yaz: «print("Merhaba, evren")». Çalıştırınca altında Merhaba, evren yazar. print, ekrana yazdır demek; tırnak içindeki her şey bir metindir. Bu kadar basit bir başlangıç, bilgisayara bir şey söyleyip cevabını almanın en kısa yolu.

İkinci adım bir değişken. «T = 5772» yazdığında bilgisayar T adında bir kutu açıp içine 5772 sayısını koyar. Buradaki eşittir işareti matematikteki eşitlik değil, bir atamadır: sağdaki değeri soldaki ada ver. Sonra «print(3e6 / T)» yazarsan, 3e6 üç milyon demektir, bilgisayar üç milyonu 5772'ye bölüp sonucu yazar.

Çözümlü problem: Wien yasası koda dönüşüyor

Ders 15.2'de Wien yasasını görmüştük: en parlak dalga boyu, nanometre olarak, üç milyon bölü kelvin cinsinden sıcaklık. Bunu bir kez değil, birçok cisim için hesaplamak istiyoruz. Bir liste ve bir döngü kuralım.

Birinci satır: «sicakliklar = [5772, 3000, 2.725]». Köşeli parantez bir liste açar: Güneş'in yüzey sıcaklığı, evren saydamlaştığı andaki sıcaklık ve bugünkü arka plan ışıması. İkinci satır: «for T in sicakliklar:». Bu bir döngü; listedeki her sayıyı sırayla T'ye koyar. Üçüncü satır, dört boşluk içeriden başlar: «print(T, 3e6 / T)».

Çalıştırınca üç satır çıkar. 5772 için yaklaşık 519,8; 3000 için tam 1000; 2,725 için yaklaşık 1.100.917 nanometre, yani bir milimetreden biraz fazla. Sesli okunuşu: kod, üç milyonu her sıcaklığa sırayla böler; iki virgül yedi yüz yirmi beş kelvin için sonuç, bir milyon yüz bin nanometre civarıdır. Üç satırlık bir kod, üç ayrı derste elle yaptığımız hesabı bir anda tekrarladı. Dikkat: Python ondalık ayırıcı olarak nokta kullanır; 2,725 değil, 2.725 yazılır.

Çözümlü problem: Kepler'in yasası bir fonksiyon oluyor

Kepler'in üçüncü yasasına göre, Güneş çevresindeki bir gezegenin yıl olarak dolanım süresi, astronomik birim olarak uzaklığının üç bölü iki kuvvetidir: P = a^1,5. Sesli okunuşu: dönem, uzaklığın bir buçuğuncu kuvveti. Python'da kuvvet iki yıldızla yazılır.

Bir fonksiyon tanımlayalım: «def donem(a):» ve bir alt satırda, içeriden, «return a ** 1.5». def, yeni bir komut tanımla demek; return, sonucu geri ver. Artık «print(donem(5.2))» yazınca Jüpiter için yaklaşık 11,86 yıl, «print(donem(30.07))» yazınca Neptün için yaklaşık 164,9 yıl çıkar. Merkür için, 0,387 astronomik birimle, yaklaşık 0,24 yıl. Bir kez tanımladığın fonksiyonu istediğin kadar kullanabilirsin.

Not almak ve hazır araçları çağırmak

Kod yalnızca bilgisayar için değil, sonra onu okuyacak insan için de yazılır; o insan çoğu zaman bir ay sonraki sensin. Python'da diyez işaretiyle başlayan her satır bir yorumdur: bilgisayar onu atlar, sen okursun. Örneğin Wien döngüsünün üstüne «# Wien yasası: tepe dalga boyu nanometre olarak» yazabilirsin. Değişkenlere de anlamlı adlar vermek, T yerine sicaklik demek, kodu okunur kılar.

Python'un kendi içinde hazır gelen araçlar da vardır; onları «import» ile çağırırsın. «import math» yazdıktan sonra «math.sqrt(2)» ikinin karekökünü, yaklaşık 1,414'ü verir; «math.pi» pi sayısını. Bir sonraki derste aynı yolla, gökbilimcilerin yazdığı çok daha güçlü bir araç takımını çağıracağız.

Hata mesajları dostundur

İlk denemelerde kırmızı hata mesajları göreceksin. Bir parantezi kapatmayı unutursan, bir satırı içeriden başlatmazsan ya da bir değişkenin adını yanlış yazarsan Python sana bunu söyler. Hata mesajının son satırı genellikle neyin yanlış gittiğini anlatır. Bunlar başarısızlık değil, bilgisayarın geri bildirimidir; gökbilimciler de her gün görür.

Aslında…

Yaygın yanlış✗ "Bir gökbilimci zamanının çoğunu teleskobun okülerine bakarak geçirir." ✓ Bugün profesyonel gözlemlerin büyük kısmı dedektörlerle, çoğu zaman uzaktan ya da otomatik olarak yapılır; gökbilimcilerin zamanının önemli bir kısmı elde edilen veriyi işlemekle, analiz etmekle ve modellemekle geçer.
Doğrusu

1142 gökbilimcinin katıldığı bir ankette hepsi araştırmasında yazılım kullanıyordu ve yüzde 90'ı kendi kodunu yazıyordu. Yanılgı, gökbilimi gece gökyüzüne bakan bir gözlemci imgesiyle özdeşleştiren eski resimlerden doğuyor; o imge amatör gözlemde hâlâ canlı, ama araştırmada verinin başında oturan biriyle yer değiştirdi.

Büyük resim

Kod yazmak, bugün gökbilimin ortak dilidir. Veri arşivlerine erişmek, görüntüleri işlemek, bir yıldızın parlaklığını ölçmek, bir ötegezegenin izini aramak, hepsi bu dille yapılır. Bu modülün geri kalanında her ders bir öncekinin üstüne bir araç ekleyecek.

İyi haber şu: profesyonel gökbilimcilerin kullandığı araçların ve verilerin çoğu herkese açık. Bir tarayıcı ve merak, bu dünyaya girmek için yeterli. Bu derste yazdığın üç satırlık döngü, gerçek bir araştırma kodunun en küçük yapı taşıdır.

Özet

  1. Modern gözlemevleri insanın elle inceleyemeyeceği kadar veri üretir: Rubin Gözlemevi günde yaklaşık 10 terabayt, on yılda yaklaşık 30 petabayt; bu veriyi işlemenin tek yolu yazılımdır.
  2. 1142 gökbilimciyle yapılan bir ankette hepsi yazılım kullanıyordu, yüzde 90'ı kendi kodunu yazıyordu ve en yaygın dil yüzde 67 ile Python'du; ama yalnızca yüzde 8'i ciddi bir yazılım eğitimi almıştı.
  3. Başlamak için Colab gibi kurulumsuz bir Jupyter defteri yeterli; değişken, liste, döngü ve fonksiyonla Wien ve Kepler yasalarını birkaç satırda hesaplayabilirsin.

Görev

Quiz

  1. Rubin Gözlemevi günde ve on yılda ne kadar veri üretiyor?
  2. Momcheva ve Tollerud'un anketine göre gökbilimcilerin yüzde kaçı kendi kodunu yazıyor ve en yaygın dil hangisi?
  3. Kurulum yapmadan Python kodu çalıştırmanın bir yolu nedir?
  4. «T = 5772» satırındaki eşittir işareti ne anlama gelir?
  5. Kodun bilimsel çalışmaya tekrarlanabilirlik açısından katkısı nedir?

Cevaplar

  1. Günde yaklaşık 10 terabayt; on yıllık taramanın sonunda yaklaşık 30 petabayt ham görüntü.
  2. Yüzde 90'ı en azından bir kısmını kendisi yazıyor; en yaygın dil yaklaşık yüzde 67 ile Python.
  3. Google Colab gibi, tarayıcıda çalışan ve kurulum gerektirmeyen bir Jupyter defteri kullanmak.
  4. Bir atama: sağdaki 5772 değeri T adlı değişkene verilir; matematikteki eşitlik değildir.
  5. Her adımı yazılı olarak sakladığı için başkası aynı kodu aynı veriyle çalıştırıp aynı sonucu alabilir.

Kaynaklar

Sonraki derse köprü

Bu derste Wien yasasını hesaplarken birimleri hep kafamızda tuttuk: üç milyonun nanometreyle, sıcaklığın kelvinle yazıldığını biz hatırladık. Gerçek çalışmada birimleri karıştırmak ciddi hatalara yol açar. Astropy adlı araç takımı birimleri, gökyüzü koordinatlarını ve zamanı sayılarla birlikte taşır. Tek bir satır kodla gökyüzünde bir yıldızın nerede olduğunu nasıl bulabilirsin?

Anlamadığın bir yer mi var?

Mentor yalnız bu dersin metnine dayanarak cevap verir. Metinde geçmeyen bir şey sorarsan uydurmaz, geçmediğini söyler.

Animasyon ve seslendirme notları

Animasyon ve seslendirme notları

  • Kanca: Şili'de bir dağın tepesinde gözlemevi; gece boyunca akan veri, sabaha kadar birikip bir sabit disk yığınına dönüşür. Ekranda "≈ 10 TB / 24 saat" ve "≈ 30 PB / 10 yıl" yazar.
  • Anket: Bir salonda 1142 kişi; ışık yanan yüzde 90'lık kısım klavyenin başında. Bir pasta dilimi Python'u yüzde 67 ile gösterir.
  • Ekran kaydı: Colab açılır; ilk hücreye print("Merhaba, evren") yazılır, çalıştırılır. Ardından ekranda tam kod görünür:

sicakliklar = [5772, 3000, 2.725]

for T in sicakliklar:

print(T, 3e6 / T)

Çıktı olarak 519.75..., 1000.0, 1100917.43... satırları belirir.

  • Fonksiyon: def donem(a): / return a ** 1.5 yazılır; donem(5.2) ve donem(30.07) çıktıları gezegen simgelerinin yanında görünür.
  • Hata: Girinti silinince kırmızı bir IndentationError çıkar; son satır vurgulanır.
  • Seslendirme: Matilda. "Jupyter defteri", "değişken", "liste", "döngü" ve "fonksiyon" ilk geçişte vurgulu okunur; kod satırları ekranda yazılırken yavaş tempoda okunur, tırnak ve parantezler sesli söylenmez.

Modül 19 — Veriyle Astronomi

Öğrenme hedefi: Python ortamını kurup temel kodları çalıştırabilmek