預測生態系統分析器 (PEcAn) 是一個科學工作流程系統,用於管理大量公開可用的環境資料和貝葉斯資料同化系統,用於在最先進的生態系統模型中綜合這些資訊。
組織:PecAn Project
導師:Christopher Black (#infotrop)、Shashank Singh(#moki1202)
貢獻者:Abhinav Pandey (#Sweetdevil144)
專案持續時間: 350 小時
專案標題:最佳化 PEcAn 獨立使用單一
套餐
非常感謝克里斯,您仔細聆聽我的方法並以更好的方式改進它們! !
特別感謝其他導師:David LeBauer、Shashank Singh 和 Michael Dietze
該專案的目標是透過最佳化其獨立使用的模組來增強 PEcAn 專案。儘管 PEcAn 具有強大的框架和互連的模組,但越來越需要使這些模組獨立運作。這種轉變對於簡化模組使用、測試和開發至關重要,使系統對使用者和貢獻者來說更容易存取和更有效率。重點是優化獨立使用的模組,增強它們在 PEcAn 互連框架內的單獨可操作性。我們的首要任務是透過重新審視 PEcAn 套件的設計和介面來「重新鬆開這些耦合」。
今年夏天,我有幸與 PEcAn 專案一起參加 2024 年 Google 程式設計之夏。在今年計畫中選出的眾多才華橫溢的候選人中,我是其中之一,被選為具有重大全球影響力的現實世界開源軟體做出貢獻。隨著計畫接近尾聲,我想回顧過去三個月在PEcAn中學到的東西。
我的PEcAn 專案 之旅早在官方GSoC 週期之前就開始了,我的第一個PR 早在2023 年12 月就被合併了——比GSoC 時間表提前了五個月。這種早期的參與給了我寶貴的經驗,讓我能夠了解 PEcAn 複雜的架構和複雜的程式碼庫設計。它也讓我熟悉了組織的工作,特別是 R 程式語言。從早期開始,我就渴望更深入地參與這個專案並做出有意義的貢獻。
GSoC 教我的最有價值的一課是:我們透過實踐來學習,即使前方的道路似乎不確定,我們也會鋪平前進的道路。 我在這次 GSoC 之旅中的經歷向我展示了什麼我最初計劃完成的只是我最終實現的一小部分。
隨著15+ 個拉取請求、6+ 個問題的解決以及與導師的會議上花費的無數時間,我發現自己逐漸與PEcAn的目標保持一致項目.
(我將要討論的所有工作都連結在此頁面底部。)
GSoC 時期分為三個關鍵階段:
第一階段:社區聯繫期:在這個階段,我熟悉了這個項目,並與我的導師建立了牢固的聯繫。這次讓我對專案的目標和複雜性有了深入的了解。我首先對程式碼庫進行了一些小的更改,同時掌握了 PEcAn 的關鍵面向。我的工作重點是收集數據,這些數據後來對於解決專案挑戰至關重要。
階段 2:解耦 PEcAn 的套件:此階段的主要任務是開始解耦 PEcAn 的套件,起點是 data.land 套件。這涉及仔細檢查專案中需要改進模組化和靈活性的套件。在此階段,我透過找出依賴項的微小實例並將其重定向回資料庫調用,從 data.atmosphere 套件中刪除了 data.land 的依賴項,從而減少了總體依賴項。除此之外,我還對為met2Cf.csv.R 添加測試套件 和刪除db.site.lat.lon 函數並將所有用法替換為query.site .我還組合了多個資料庫調用,這進一步有助於減少我們系統中進行的資料庫調用,並進一步減少資料庫上的延遲。我還創建了一個自訂 python 腳本來找出程式碼庫中不再使用的孤立函數,並執行了此類實例的清理。
階段3:增強convert_input函數:由於PEcAn中convert_input函數的複雜性,這個階段被證明是最具挑戰性的。我投入了大量時間來尋找解決我們所面臨的各種問題的好方法。然而,由於此時我對程式碼庫有了更深入的了解,這個階段也是最有成效的。
為了進一步提高convert_input函數的模組化,我決定在#3338中將其分解為更小的輔助函數。這種重組簡化了程式碼庫的導航和理解,使未來的開發人員更容易使用。
在整個 GSoC 期間,我與導師定期舉行會議(每週三),討論我們每週的進度、未來計劃和專案推進的策略。導師的定期幫助確實幫助我將注意力集中在該專案上。
我非常感謝整個 PEcAn 團隊為我提供了這個難得的成長、學習和與他人合作的機會。真正讓 GSoC 與眾不同的是旅程本身的樂趣。我不僅熟練了一門新的程式語言,而且我作為一個人也得到了成長,透過每週的會議和與導師的互動走出了我的舒適區。這段經歷無論是在技術上還是對個人來說都是變革性的。
接下來,我計劃繼續與 PEcAN 長期合作,並盡我所能提升 PEcAN 的能力!現在就這樣了! ??
IDs | Title | State |
---|---|---|
3359 | Update DEV-INTRO.md | MERGED |
3312 | Combine multiple PEcAn.db calls in a single query | MERGED |
3308 | Remove db.site.lat.lon function and replace all usages with query.site | MERGED |
3301 | Add test suites for met2Cf.csv.R | MERGED |
3300 | Remove dependency on data.atmosphere from data.land | MERGED |
3291 | Add Script to Identify Orphaned Functions in Codebase | MERGED |
3290 | Remove unused inst/met2CF.R | MERGED |
3283 | Update API endpoint URLs | MERGED |
3281 | Fix file extension search in met2model.SIPNET function | MERGED |
3276 | Update Documentation for cos_solar_zenith_angle Function | MERGED |
3246 | Fix Typo Errors and Errors in Markdown documentations | MERGED |
3243 | Update book.yml | MERGED |
3348 | Remove Browndog | OPEN |
3338 | Refactor convert_input to Perform tasks via helper function | OPEN |
3324 | Add function to Optionally get site.info if not present | OPEN |
3319 | Refactor met.process and dbfiles | OPEN |
以上是我的 GSoC 經驗:PEcAn 項目的詳細內容。更多資訊請關注PHP中文網其他相關文章!