Taivasta kartoittamassa - mitä näemme yllämme?
Contents
Taivasta kartoittamassa - mitä näemme yllämme?#
Tähdet ovat aina kiehtoneet ihmismieltä, mutta mitä me varsinaisesti näemme paitsi kauniiden, kirkkaiden pisteiden peiton?
# AJA TÄMÄ SOLU ENSIN! Tässä otetaan käyttöön tarvittavat python-paketit.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Otetaan tarkasteltavaksi joukko tietoja yllämme näkyvistä kohteista, joiden laajemmat versiot löytyvät selityksineen osoitteesta http://www.astronexus.com/hyg HYG-tietokannasta. Pääpiirteissään kyseessä on sellaisten tähtien joukko, jotka ovat joko tarpeeksi kirkkaita näkyäkseen Maasta käsin tai lähellä Aurinkoa (noh, tähtitieteellisessä mitassa lähellä, 75 valovuoden etäisyydellä).
Mistä HYG on lyhenne? Käypä selvittämässä!
# Ajamalla tämän solun saat käyttöösi suuren katalogin tähtien tietoja.
# Kiitokset Adam Lameelle helposti luettavan setin luomisesta.
taivas = pd.read_csv("https://raw.githubusercontent.com/adamlamee/CODINGinK12/master/data/stars.csv")
Miltä data näyttää?#
# Tällä komennolla näet muuttujan ylimmät rivit. Mitä käy jos vaihdat suluissa olevaa numeroa tai poistat sen?
taivas.head(10)
proper | ra | dec | dist | mag | absmag | ci | temp | x | y | z | con | lum | var | var_min | var_max | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Sol | 0.000000 | 0.000000 | 0.0000 | -26.70 | 4.850 | 0.656 | 5756.588113 | 0.000005 | 0.000000 | 0.000000 | NaN | 1.000000 | NaN | NaN | NaN |
1 | Proxima Centauri | 14.495985 | -62.679485 | 1.2959 | 11.01 | 15.447 | 1.807 | 3383.441193 | -0.472264 | -0.361451 | -1.151219 | Cen | 0.000058 | V645 | 11.079 | 10.939 |
2 | Rigil Kentaurus | 14.660765 | -60.833976 | 1.3248 | -0.01 | 4.379 | 0.710 | 5567.728737 | -0.495203 | -0.414084 | -1.156625 | Cen | 1.543121 | NaN | 0.113 | -0.087 |
3 | NaN | 14.660346 | -60.838300 | 1.3248 | 1.35 | 5.739 | 0.900 | 4996.415833 | -0.495181 | -0.413973 | -1.156674 | Cen | 0.440961 | NaN | NaN | NaN |
4 | Barnard's Star | 17.963472 | 4.693388 | 1.8238 | 9.54 | 13.235 | 1.570 | 3691.168543 | -0.017373 | -1.816613 | 0.149123 | Oph | 0.000443 | V2500 | 9.590 | 9.490 |
5 | NaN | 10.941484 | 7.015320 | 2.3906 | 13.45 | 16.557 | 2.000 | 3169.353727 | -2.282811 | 0.649334 | 0.292057 | NaN | 0.000021 | NaN | NaN | NaN |
6 | Lalande 21185 | 11.055632 | 35.969877 | 2.5469 | 7.49 | 10.460 | 1.502 | 3790.500746 | -1.998000 | 0.504305 | 1.495504 | UMa | 0.005702 | NaN | NaN | NaN |
7 | NaN | 1.650199 | -17.949782 | 2.6267 | 12.57 | 15.473 | 1.850 | 3333.196615 | 2.270499 | 1.046970 | -0.809963 | NaN | 0.000056 | NaN | NaN | NaN |
8 | NaN | 1.650199 | -17.949782 | 2.6267 | 12.70 | 15.603 | NaN | NaN | 2.270631 | 1.047031 | -0.810010 | NaN | 0.000050 | NaN | NaN | NaN |
9 | NaN | 6.752559 | -16.715240 | 2.6371 | 8.44 | 11.334 | -0.030 | 10515.561780 | -0.494379 | 2.476814 | -0.758470 | CMa | 0.002549 | NaN | NaN | NaN |
# Tällä komennolla voit tarkistaa, montako riviä dataa on.
len(taivas)
119614
Taulukosta nähdään joukko kryptisiä sarakkeita. Tarkemmat selitykset löytyvät Astronexuksen sivulta, mutta oleellisimmat lienevät tähtien paikkatiedot (rektaskensio “ra”, deklinaatio “dec”, etäisyys “dist”) ja valaisuun liittyvät ominaisuudet (havaittu magnitudi “mag” ja absoluuttinen kirkkaus “absmag”, lämpötila “temp” sekä luminositeetti “lum”). Ryhdytään nyt tarkastelemaan mitä näistä voidaan nähdä.
(Tutustu rektaskensioon ja deklinaatioon täällä.)
Kerro, kerro, kuvaaja#
# Tässä otetaan "taivas"-tietorakenteesta kaksi saraketta ja luodaan niiden arvopareista kuvaaja.
plt.figure(figsize=(15, 4))
plt.scatter(taivas.ra, taivas.dec, s=0.01) # Mitä tietoja tässä käytettiin?
plt.xlim(24, 0)
plt.title("Kaikkien katalogissa olevien tähtien paikat Maasta katsottuna \n")
plt.xlabel('Tarvitsen nimen') # Korjaapa tämä otsikko sopivaksi!
plt.ylabel('Akseloin, siis olen') # Korjaapa tämä otsikko sopivaksi!
plt.show()
# Näetkö muotoja kuvassa? Mistä moiset voisivat johtua?

Tähtiä luokitellaan usein lämpötilansa ja kirkkautensa mukaan, siten että kirkkaammilla tähdillä on pienempi absoluuttinen magnitudi. Auringolla se on noin 4,8 (vai oliko? Mitä sanoo tarkastelemamme data?).
# Piirretään taas x,y-parien mukainen kuvaaja, jonka pisteitä
# käsitellään hieman niin, että niistä erottaakin jotakin.
plt.figure(figsize = (10,10))
plt.scatter(taivas.temp, taivas.absmag, s = 1, edgecolors = 'none', color = "red")
plt.xlim(2000,15000) # Mitä käy jos säädät näitä numeroita?
plt.ylim(20,-15)
plt.title("Keksipäs tähän kiva otsikko \n") # Muokkaa tämä sopivammaksi.
plt.ylabel("Absoluuttinen magnitudi")
plt.xlabel("Pintalämpötila (K)")
plt.show()

Painottuvatko tulokset jonnekin? Erottuvatko jotkin alueet muusta massasta? Löydätkö kuvasta kirkkaan, muttei erityisen lämpimän alueen (jättiläisiä)? Erityisen kuuman ja kirkkaan, mutta pienistä tähdistä koostuvan valkoisten kääpiöiden alueen?
Tähdistöt#
Harvempi tähti on yksinäinen, vaan useimmiten ne kuuluvat suurempiin tähtijoukkoihin joille on annettu erilaisia nimiä pitkin vuosituhansia ja kulttuuripiirejä. Kansainväliseen käyttöön vakiintuneimmat nimet ovat eurooppalaista perua ja löytyvät “taivas”-tietorakenteen sarakkeesta “con” (constellation, tähdistö).
# Tämä poimii sarakkeesta listan lyhenteitä, jotka vastaavat tähdistöjen nimiä.
taivas.sort_values('con').con.unique() # Pystytkö sanallistamaan, mitä tällä rivillä käskettiin?
array(['And', 'Ant', 'Aps', 'Aql', 'Aqr', 'Ara', 'Ari', 'Aur', 'Boo',
'CMa', 'CMi', 'CVn', 'Cae', 'Cam', 'Cap', 'Car', 'Cas', 'Cen',
'Cep', 'Cet', 'Cha', 'Cir', 'Cnc', 'Col', 'Com', 'CrA', 'CrB',
'Crt', 'Cru', 'Crv', 'Cyg', 'Del', 'Dor', 'Dra', 'Equ', 'Eri',
'For', 'Gem', 'Gru', 'Her', 'Hor', 'Hya', 'Hyi', 'Ind', 'LMi',
'Lac', 'Leo', 'Lep', 'Lib', 'Lup', 'Lyn', 'Lyr', 'Men', 'Mic',
'Mon', 'Mus', 'Nor', 'Oct', 'Oph', 'Ori', 'Pav', 'Peg', 'Per',
'Phe', 'Pic', 'PsA', 'Psc', 'Pup', 'Pyx', 'Ret', 'Scl', 'Sco',
'Sct', 'Ser', 'Sex', 'Sge', 'Sgr', 'Tau', 'Tel', 'TrA', 'Tri',
'Tuc', 'UMa', 'UMi', 'Vel', 'Vir', 'Vol', 'Vul', nan], dtype=object)
Tarkastellaan seuraavaksi, miten voisimme luokitella kunkin tähdistön sisältämiä tähtiä toisiinsa ja poimia sieltä joitain kiinnostavia yksilöitä.
# Tämä näyttää yhden tähdistön, vaihda kysyttyä lyhennettä alla ja tutki muitakin!
# Komento .query('...') antaa etsiä tietyntyyppistä dataa koko aineistosta.
constellation = taivas.query('con == "Vir"')
# Käytetään "subplot"-ominaisuutta piirtämään useita asioita yhtä aikaa.
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
# Tällä saat näkyviin kyseisen tähdistön 10 kirkkainta. Mitäs jos .headin arvoa muuttaisi?
constellation = constellation.sort_values('mag').head(10)
plt.scatter(constellation.ra, constellation.dec)
plt.gca().invert_xaxis()
plt.title("Tähdistön kuva taivaalla \n")
plt.xlabel('Rektaskensio')
plt.ylabel('Deklinaatio')
plt.subplot(1, 2, 2)
# Okei, mutta mites nämä suhtautuvat koko käsiteltyyn aineistoon? Nyt lyödäänkin yhden tähdistön kirkkaimmat
# pisteet koko kartalle näkyviin.
plt.scatter(taivas.temp, taivas.absmag, s = 1, edgecolors = 'none', alpha = 0.2)
plt.scatter(constellation.temp, constellation.absmag, color = 'red', edgecolors = 'none')
plt.xlim(2000,15000)
plt.ylim(20,-15)
plt.title("Verrattuna koko taivaaseen \n")
plt.ylabel("Absoluuttinen magnitudi")
plt.xlabel("Lämpötila (K)")
plt.show()

Miten tuloksesi asettuvat tähtien elinkaarta kuvaavalle Hertzsprung-Russell -kuvaajalle? (huomaa akselit!)

Aurinko, lähin tähtemme#
Aurinko on monin tavoin tärkeä meille ihmisille, niin planeettamme elämän mahdollistajana kuin parhaana tutkimuskohteenakin selvittäessämme, miten tähdet toimivat. Verrattuna kaikkeen muuhun koko aurinkokunnassa se on valtava, mutta kaikkien tähtien joukossa melkoinen höyhensarjalainen. Tarkastellaan vielä, miten se vertautuu näihin lähisukulaisiinsa.
# Aurinko, Sol, voidaan etsiä erilleen muista hakukomennolla.
aurinko = taivas.query('proper == "Sol"')
print(aurinko)
proper ra dec dist mag absmag ci temp x y \
0 Sol 0.0 0.0 0.0 -26.7 4.85 0.656 5756.588113 0.000005 0.0
z con lum var var_min var_max
0 0.0 NaN 1.0 NaN NaN NaN
# Jos nyt haluaisimme esimerkiksi vertailla sen lämpötilaa muihin...
isommat = taivas[taivas.temp > float(aurinko.temp)] # tässä float() on tarpeen muuttamaan
# tyypit samanlaisiksi, eli liukuluvuiksi
pienet = taivas[taivas.temp < float(aurinko.temp)]
print("Aurinkoa kuumempia tähtiä on listassa " + repr(len(isommat)))
print("Aurinkoa kylmempiä tähtiä on listassa " + repr(len(pienet)))
Aurinkoa kuumempia tähtiä on listassa 62067
Aurinkoa kylmempiä tähtiä on listassa 55591
Miten saisit vertailtua tähtien kirkkauksia (sekä havaittavaa että absoluuttista) ylläolevaan tapaan? Kokeile!