L'analyseur prédictif d'écosystèmes (PEcAn) est un système de flux de travail scientifique permettant de gérer les immenses quantités de données environnementales accessibles au public et un système bayésien d'assimilation de données pour synthétiser ces informations dans des modèles d'écosystèmes de pointe.
Organisation : Projet PecAn
Mentors : Christopher Black (#infotroph), Shashank Singh (#moki1202)
Contributeur : Abhinav Pandey (#Sweetdevil144)
Durée du projet : 350 heures
Titre du projet : Optimiser PEcAn pour une utilisation autonome de simples
forfaits
Merci beaucoup, Chris, d'avoir écouté attentivement mes approches et de les avoir affinées de bien meilleures manières !!
Un merci tout spécial aux autres mentors également :David LeBauer, Shashank Singh et Michael Dietze
L'objectif de ce projet était d'enrichir le projet PEcAn en optimisant ses modules pour une utilisation autonome. Malgré le cadre robuste et les modules interconnectés de PEcAn, il devenait de plus en plus nécessaire de rendre ces modules exploitables de manière indépendante. Ce changement était essentiel pour simplifier l'utilisation, les tests et le développement des modules, rendant le système plus accessible et plus efficace pour les utilisateurs et les contributeurs. L'accent était mis sur l'optimisation des modules pour une utilisation autonome, en améliorant leur opérabilité individuelle au sein du cadre interconnecté de PEcAn. Notre priorité absolue était de « desserrer ces couplages » en revisitant le design et l'interface des packages PEcAn.
Cet été, j'ai eu le privilège de participer au Google Summer of Code, 2024 avec le PEcAn Project. Parmi les nombreux candidats talentueux sélectionnés pour le programme de cette année, je faisais partie d'entre eux sélectionnés pour contribuer à un Logiciel Open Source du monde réel qui a un impact mondial significatif. Alors que le programme touche à sa fin, j'aimerais réfléchir à ce que j'ai appris au cours des trois derniers mois avec PEcAn.
Mon parcours avec le Projet PEcAn a commencé bien avant la période officielle du GSoC, avec mon premier PR fusionné dès décembre 2023, soit cinq mois avant la chronologie du GSoC. Cette implication précoce m'a donné une expérience précieuse dans la navigation dans l'architecture complexe et la conception de base de code complexe de PEcAn. Cela m'a également permis de me familiariser avec le travail de l'organisation, notamment dans le langage de programmation R. Dès ces premiers jours, j’avais hâte d’approfondir le projet et d’apporter des contributions significatives.
La leçon la plus précieuse que le GSoC m'a apprise est la suivante : Nous apprenons en faisant, et nous ouvrons la voie même lorsque la voie à suivre semble incertaine. Mon expérience au cours de ce voyage GSoC m'a montré que ce que Ce que j'avais initialement prévu d'accomplir ne représentait qu'une fraction de ce que j'ai finalement réalisé.
Avec 15+ pull request, 6+ problèmes résolus et d'innombrables heures passées en réunions avec mes mentors, je me suis retrouvé progressivement aligné sur les objectifs du PEcAn Projet.
(Tous mes travaux dont je vais parler sont liés au bas de cette page.)
La période GSoC a été structurée en trois phases clés :
Phase 1 : Période de création de liens communautaires : Au cours de cette phase, je me suis familiarisé avec le projet et j'ai noué des liens solides avec mes mentors. Cette période m'a permis d'acquérir une solide compréhension des objectifs et des subtilités du projet. J'ai commencé par apporter des modifications mineures à la base de code tout en appréhendant les aspects clés de PEcAn. Mes efforts se sont concentrés sur la collecte de données qui deviendront plus tard cruciales pour relever les défis du projet.
Phase 2 : Découplage des packages de PEcAn : Ma tâche principale dans cette phase était de commencer à découpler les packages de PEcAn, mon point de départ étant le package data.land. Cela impliquait d'examiner attentivement les packages qui nécessitaient une amélioration de la modularité et de la flexibilité au sein du projet. Au cours de cette phase, j'ai supprimé la dépendance de data.land du package data.atmosphere en identifiant des instances infimes de dépendances et en les redirigeant vers les appels de base de données, ce qui a entraîné une réduction des dépendances globales. En plus de cela, j'ai également apporté quelques modifications mineures à Ajouter des suites de tests pour met2Cf.csv.R et à Supprimer la fonction db.site.lat.lon et remplacer toutes les utilisations par query.site . J'ai également combiné plusieurs appels à la base de données, ce qui a encore contribué à réduire les appels à la base de données effectués dans notre système et à réduire davantage la latence sur la base de données. J'ai également créé un script Python personnalisé pour identifier les fonctions orphelines qui n'étaient plus utilisées dans la base de code et effectué des nettoyages de ces instances.
Phase 3 : Amélioration de la fonction convert_input : Cette phase s'est avérée la plus difficile de toutes en raison de la complexité de la fonction convert_input dans PEcAn. J'ai consacré beaucoup de temps à trouver une bonne approche pour résoudre les différents problèmes auxquels nous étions confrontés. Cependant, cette phase a également été la plus productive, grâce à la compréhension beaucoup plus approfondie de la base de code que j'avais acquise à ce stade.
Au cours de cette phase, j'ai proposé une nouvelle fonction permettant de récupérer éventuellement site.info par #3324, améliorant ainsi la flexibilité. De plus, j'ai aidé à refactoriser et à supprimer le package BrownDog, désormais abandonné, garantissant une base de code propre et moderne via #3348. J'ai réussi à supprimer toutes les instances de BrownDog tout en discutant activement de ces changements avec mes mentors.
Pour améliorer encore la modularité de la fonction convert_input, j'ai décidé de la diviser en fonctions d'assistance plus petites dans le #3338. Cette restructuration simplifie la navigation et la compréhension de la base de code, facilitant ainsi le travail des futurs développeurs.
Tout au long de la période GSoC, j'ai eu des réunions régulières (tous les mercredis) avec mes mentors pour discuter de nos progrès hebdomadaires, des plans futurs et de la stratégie pour avancer dans le projet. Cette aide régulière de mes mentors m'a vraiment aidée à concentrer mon attention sur le projet.
Je suis profondément reconnaissant à toute l’équipe PEcAn de m’avoir offert cette incroyable opportunité de grandir, d’apprendre et de collaborer avec les autres. Ce qui rend GSoC vraiment unique, c'est la joie du voyage lui-même. J'ai non seulement acquis des compétences dans un nouveau langage de programmation, mais j'ai également grandi en tant que personne, sortant de ma zone de confort grâce à des réunions hebdomadaires et des interactions avec mes mentors. Cette expérience a été transformatrice, tant techniquement que personnellement.
En passant, je prévois de continuer à travailler avec PEcAN sur le long terme et d'améliorer les capacités de PEcAN de toutes les manières possibles !! C'est fini pour l'instant !! ??
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 |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!