预测生态系统分析器 (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函数的复杂性,这一阶段被证明是最具挑战性的。我投入了大量时间来寻找解决我们所面临的各种问题的好方法。然而,由于此时我对代码库有了更深入的了解,这个阶段也是最有成效的。
在此阶段,我提出了一个新功能,可以通过 #3324 选择性地检索 site.info,从而增强灵活性。此外,我还帮助重构并删除了现已停产的 BrownDog 软件包,通过 #3348 确保了干净且现代的代码库。我成功删除了 BrownDog 的所有实例,同时与我的导师积极讨论这些更改。
为了进一步提高convert_input函数的模块化,我决定在#3338中将其分解为更小的辅助函数。这种重组简化了代码库的导航和理解,使未来的开发人员更容易使用。
在整个 GSoC 期间,我与我的导师定期举行会议(每周三),讨论我们每周的进展、未来计划和推进项目的策略。我的导师的定期帮助确实帮助我将注意力集中在该项目上。
我非常感谢整个 PEcAn 团队为我提供了这个难得的成长、学习和与他人合作的机会。真正让 GSoC 与众不同的是旅程本身的乐趣。我不仅熟练掌握了一门新的编程语言,而且我作为一个人也得到了成长,通过每周的会议和与导师的互动走出了我的舒适区。这段经历在技术上和个人上都具有变革性。
继续前进,我计划继续与 PEcAN 长期合作,并尽我所能提高 PEcAN 的能力!现在就这样了! ??
ID | 标题 | 状态 |
---|---|---|
3359 | 更新DEV-INTRO.md | 合并 |
3312 | 在单个查询中组合多个 PEcAn.db 调用 | 合并 |
3308 | 删除 db.site.lat.lon 函数并将所有用法替换为 query.site | 合并 |
3301 | 为met2Cf.csv.R添加测试套件 | 合并 |
3300 | 从 data.land 中删除对 data.atmosphere 的依赖 | 合并 |
3291 | 添加脚本以识别代码库中的孤立函数 | 合并 |
3290 | 删除未使用的 inst/met2CF.R | 合并 |
3283 | 更新 API 端点 URL | 合并 |
3281 | 修复met2model.SIPNET功能中的文件扩展名搜索 | 合并 |
3276 | 更新 cos_solar_zenith_angle 函数的文档 | 合并 |
3246 | 修复 Markdown 文档中的拼写错误和错误 | 合并 |
3243 | 更新book.yml | 合并 |
3348 | 删除 Browndog | 打开 |
3338 | 重构convert_input以通过辅助函数执行任务 | 打开 |
3324 | 添加功能可选择获取 site.info(如果不存在) | 打开 |
3319 | 重构 met.process 和 dbfiles | 打开 |
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3