Created 37 articlesIn total 22575 words

「天文的資料科學:來用Python拉近我們與星空的距離」教育產品開發調查表單

天文背包黑客

想用Python來捕獲星星一探其奧秘的島民。此圖是我藉由Midjourney AI創作。每當島民們仰望星空,總幻想能伸手捕獲星星來一探其奧秘,但即使看了科普書籍及新聞報導,他們仍覺得離星空好遠。某天,一位島民在網上搜尋:「如何捕獲星星?」時,跳出一則訊息:「嗨,這是Astroha...

1

致力於推動開放科學及公民天文學的Astrohackers in Taiwan社群(一):參與兩場黑客松後所得到的啟發

天文背包黑客

此圖是我藉由Midjourney AI創作,象徵我2015年時背包上肩前往紐約華盛頓廣場公園參加Astro Hack Week天文黑客松「近年來,國外天文學術界開始紛紛提倡改以Python作為解密宇宙所用的程式語言,那為什麼沒有人在台灣成立天文相關的Python社群呢?

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[29]:結束這回合前先告訴來看熱鬧的鄉民們誰是黑蛋

天文背包黑客

黑蛋接通PM貳婰舞的來電,這次背景夾雜著「我要一杯Kahlua。」的點酒聲以及Django Reinhardt所彈奏的《Minor Swing》。「嗨,黑蛋,我看到你已將之前研究重力波開放科學中心網站及GWpy套件時的筆記,整理成『重力波資料簡介』頁面,這樣『重力波資料分析app』就可以結案囉。

1

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[28]:藉由Q-transform分析重力波訊號的頻率及強度隨時間的變化

天文背包黑客

「啾~~~」 黑蛋身處啁啾聲環繞的大學校園中,埋首研究「Gravitational Wave Quickview app」的原始碼,試圖了解該app那張標題為Q-transform的圖,究竟是如何畫出來的,又代表什麼意義。「原來是使用GWpy的q_transform()功能來分析重力波訊號呀。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[27]:濾除雜訊以揭露重力波訊號

天文背包黑客

「恩……咦?……恩……」 黑蛋盯著重力波的時間序列觀測資料圖,實在參不透眼前的訊號,為何來自兩個互繞的緻密星體合併時所產生的重力波事件。於是,他回頭查找「Gravitational Wave Quickview app」的原始碼,以及GWpy套件的文件,看看有什麼被他遺漏的地方。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[26]:在重力波資料分析頁面呈現重力波事件的時間序列觀測資料

天文背包黑客

黑蛋實驗性地在Jupyter Notebook上確認可以藉由GWpy套件的TimeSeries.fetch_open_data()功能取得並呈現重力波事件的觀測資料後,便開始著手開發「重力波資料分析app」的「重力波資料分析」頁面。他先在04_Gravitational_wave...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[25]:用GWpy套件取得重力波時間序列觀測資料

天文背包黑客

PM貳婰舞在他的分享螢幕畫面中操作「Gravitational Wave Quickview app」的同時向黑蛋說明任務:「客戶希望『重力波資料分析』頁面能參考這個app,讓使用者用下拉式選單選擇重力波事件,以呈現該事件的時間序列觀測資料,並能操作基本的資料處理及分析。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[24]:在重力波事件統計頁面上呈現緻密星體質量分佈圖

天文背包黑客

黑蛋邊聽著podcast邊看著PM貳婰舞傳來的訊息:「『重力波事件列表』頁面已經符合客戶需求,你可以接續開發『重力波事件統計』頁面了。客戶想要了解重力波事件列表中的這些緻密星體的質量分佈,大概會落在哪個範圍內。」 黑蛋在03_Gravitational_wave_statisti...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[23]:再版重力波事件列表頁面,新增轉換時間格式、去除缺值事件、分頁表格及匯出CSV/JSON檔等功能

天文背包黑客

PM貳婰舞向黑蛋說明功能新增任務:「客戶看了初版的『重力波事件列表』頁面後,列了四個想新增的功能。第一,他希望能在頁面中切換表格中的時間格式,將GPS時間系統切換成世界協調時間UTC,以便知道重力波事件是何年何月何日何時被觀測到。第二,他希望能一鍵去除欄位缺值的事件。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[22]:初版一刷重力波事件列表頁面

天文背包黑客

黑蛋知道可以藉由GWpy套件取得重力波事件列表後,開始著手開發「重力波資料分析app」的「重力波事件列表」頁面。因客戶想要套用相同版型,他先仿照「太陽系外行星資料分析app」的多頁架構 ,在Home.py放置app首頁內容,而其他頁面所屬的Python scripts則放到pages資料夾內。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[21]:用GWOSC及GWpy套件取得重力波事件清單

天文背包黑客

黑蛋得知重力波開放科學中心有提供多種取得重力波觀測資料的方式後,接著研究「Gravitational Wave Quickview app」的程式碼,以了解它是採用哪種方式。是從網站手動下載資料檔案後再經由程式讀取?是從API取得?還是藉由Python套件?

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[20]:初探重力波開放科學中心網站

天文背包黑客

PM貳婰舞在會議中跟黑蛋說明新案子:「這位新客戶一直有在關注我們公司blog的系列文章『跟著黑蛋用Streamlit速成天文資料分析Web App』,他看完『Streamlit導覽 』這篇文後,也到Streamlit gallery逛逛,意外發現『Gravitational Wa...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[19]:系外行星凌日分析頁面加上資料清理功能以濾除低頻訊號及異常值

天文背包黑客

資料清理前資料清理後黑蛋從PM貳婰舞傳來的訊息得知,客戶發現有些光變曲線,例如Kepler太空望遠鏡對於Kepler-10這個系外行星系統所觀測的光變曲線,會有長週期趨勢變化但不像是行星的遮擋效應,或者會出現因為儀器雜訊所造成的異常值,它們都會影響週期計算且不易在疊合光變曲線圖中看出凌日現象。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[18]:用Box Least Squares演算法分析出系外行星的軌道週期

天文背包黑客

黑蛋身在一個橫向捲軸遊戲中,他前方盡是無法跨越的坑洞,身旁有許多大小不一的箱子,他的任務是要選擇適合填平坑洞的箱子逐步往前進…… 「唉,又做了奇怪的夢……」 黑蛋認為應該是昨晚看了「Identifying transiting exoplanet signals in a lig...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[17]:初版一刷系外行星凌日分析頁面

天文背包黑客

黑蛋在背包客棧頂樓附有高腳桌椅的共同空間,吹著涼風配瓶啤酒,將Lightkurve的功能初步整合到「太陽系外行星資料分析app」中。他先在「太陽系外行星資料簡介」頁面加入Lightkurve套件的簡介及範例程式,作為取得系外行星資料的第四種方法。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[16]:用Lightkurve套件取得Kepler太空望遠鏡及凌日系外行星巡天衛星的觀測資料

天文背包黑客

黑蛋之前看了 「用Python拉近群眾與星空的距離:Astrohackers in Taiwan社群介紹」 這場2019年台灣Python年會的演講後,便加入講者提到的神祕的宇宙社團「Astrohackers-TW: Python在天文領域的應用」,他想起這社團的成員們會分享、討...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[15]:以凌日法發現系外行星的太空望遠鏡們

天文背包黑客

為了尋找與凌日法相關的觀測資料,黑蛋首先要知道系外行星各是被哪個觀測設施所發現。於是,他回頭查看NASA提供的系外行星資料表各欄位所代表的意義,找到「發現設施」這個欄位,它是指系外行星是由哪個地面天文台或太空望遠鏡所發現。黑蛋在「太陽系外行星資料分析app」用來取得NASA系外行...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[14]:簡介發現系外行星的凌日法(transit)

天文背包黑客

觀眾已散去、電影片尾字幕已跑完,但黑蛋的怒氣還未消。不是電影不好看,而是常常會有人在途中從銀幕前方進出影廳,頻頻打斷觀影興致。黑蛋只好計算著高矮胖瘦的影子究竟各遮住多少從光流洩而出的劇情,他甚至懷疑有同一個人會週期性地進出影廳。黑蛋簡單怒吃一波火雞肉飯後,沿著環潭公路至附近的圖書館開工。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[13]:用Plotly繪製系外行星資料統計圖

天文背包黑客

就在黑蛋切下一塊鹹派時,PM貳婰舞來電了。「客戶蠻滿意目前系外行星資料表篩選器頁面的功能,我們可以接續開發下一個頁面了。如之前討論,為了視覺化系外行星資料表的資料,新頁面需要呈現互動式的統計圖,客戶想要了解各種發現系外行星的方法所佔的比例,以及行星質量、半徑、軌道週期、發現年份等欄位不同數值區間的個數統計。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[12]:加上系外行星資料表距離欄位的單位轉換功能

天文背包黑客

此文所提及的太陽系外行星資料分析app以及完整程式碼。PM貳婰舞開啟與黑蛋的語音通話。「嗨,黑蛋,咦?你那邊怎麼會有鳥叫聲?喔,原來你在山上呀。對了,客戶表示目前系外行星資料表中,『與地球的距離』欄位的值是以秒差距這個單位呈現,他希望有可以切換成其他單位的功能,像是光年、天文單位...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[11]:用streamlit-aggrid美化系外行星資料表

天文背包黑客

黑蛋接通PM貳婰舞的來電,背景傳來《給愛麗絲》。「黑…黑蛋,抱歉,我現在人在外面,有點吵,我剛跟客戶開完會,他滿意現在已能連上『太陽系外行星資料分析app』的網頁自行操作,但希望我們能調整系外行星資料表的呈現。首先,他要求表格要滿版、欄位名稱要清楚顯示不要擠在一起、最前面不要顯示index數字。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[10]:透過Streamlit Cloud一鍵部署app

天文背包黑客

PM貳婰舞除了向公司內部其他團隊成員操作示範「太陽系外行星資料分析app」外,也把它展示給客戶看,他向黑蛋說:「客戶的回饋蠻正向的,我覺得它有潛力從公司的內部工具發展成為產品,不過目前這個app僅限在我們的筆電上以指令運行,尚無法讓客戶連上網頁自行操作,因此,想要請你研究看看有無...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[9]:將多個單頁apps整合成一個多頁app

天文背包黑客

PM貳婰舞看到黑蛋在會議中所展示的Streamlit apps,覺得用起來方便且開發快速,所以想要向「天文數智」公司內部其他團隊推廣Streamlit,不過他遇到一個問題,於是詢問黑蛋是否能協助解決:「目前『系外行星資料簡介』和『系外行星資料表篩選器』是兩個分開獨立的單頁apps...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[8]:再版系外行星資料表篩選器app,新增資料快取機制

天文背包黑客

「哎呀!資料表又要重新載入了…」 黑蛋發現目前在系外行星資料表篩選器app中每操作一次篩選,都會再次呼叫get_exoplanet_table_by_astroquery()函式,以致於要再次等待資料表載入。他了解到這是因為Streamlit app是基於一個Python scr...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[7]:初版一刷系外行星資料表篩選器app

天文背包黑客

黑蛋收到一則從Asana專案管理軟體傳來的任務通知,標題為:「研究能快速篩選系外行星資料表的方法」,PM貳婰舞在任務描述區塊中貼了一個錄影連結,他在影片中說明:「雖然我們現在能藉由程式取得並匯出系外行星資料表,但客戶時常會有資料篩選的需求,例如,他有時只要某年份區間內被發現的行星...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[6]:再版系外行星資料簡介app,添加範例程式於頁面上

天文背包黑客

經過這幾天的研究,黑蛋了解到,除了可以透過NASA系外行星資料庫網站手動下載系外行星資料表外,也可以藉由API或Astroquery套件取得,因此,他想將後兩者方法的介紹及使用範例,也加入到之前用Streamlit製作的系外行星資料簡介app中。

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[5]:用Astroquery套件取得系外行星資料表

天文背包黑客

就在黑蛋用API取得系外行星資料表,並將它整理匯出成客戶所需的CSV檔後的隔天,他意外發現「以Astroquery套件擷取線上天文觀測資料」這場2018年台灣Python年會的演講。看完演講錄影後,黑蛋了解到,Astroquery是一個用來查詢、取得天文資料的Python套件,它...

跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[4]:用NASA系外行星資料庫的API取得資料表

天文背包黑客

會議中,PM貳婰舞跟黑蛋說:「客戶對於我們之前透過NASA系外行星資料庫網站手動匯出的CSV檔,表示有太多不必要的欄位,希望聚焦幾個欄位且名稱要以中文呈現,他要求的欄位有『行星名稱』、『所屬恆星名稱』、『與地球的距離』、『行星軌道週期』、『行星質量』、『行星半徑』、『發現年份』、『發現方法』。

1

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[3]:初版一刷系外行星資料簡介app

天文背包黑客

黑蛋從NASA系外行星資料庫網站產出客戶所要求的資料報表後,開始整理要跟PM貳婰舞開工作進度報告會議的簡報,他心想:何不試試用Streamlit來呈現報告內容?首先,他開啟一個命名為exoplanet_data_intro.py的Python script,引入streamlit...

「跟著黑蛋用Streamlit速成天文資料分析Web App」系列文[2]:初探NASA系外行星資料庫

天文背包黑客

PM貳婰舞向黑蛋說明工作任務由來及需求:「客戶最近看完Neal Shusterman的小說《殺戒》三部曲,他說書中有一張羅列了近30個太陽系外行星的表,覺得有趣,好奇是否有更多的太陽系外行星、它們距離地球多遠、比地球大或小、它們的一年有幾天、何時被發現、…,於是委託我們抓取相關資料並產出報表。