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 d'un seul
forfaits
Merci beaucoup, Chris, d'avoir écouté attentivement mes approches et de les avoir affinées de bien meilleures manières !!
Un merci spécial aux autres mentors également :David LeBauer, Shashank Singh et Michael Dietze
L'objectif de ce projet était d'améliorer 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 « relâcher ces couplages » en revisitant la conception 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 le calendrier 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 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 GSoC m'a appris 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 progressivement aligné sur les objectifs du Projet PEcAn.
(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 assistance 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, à la fois techniquement et 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 !! ??
ID | Titre | État |
---|---|---|
3359 | Mettre à jour DEV-INTRO.md | FUSIONNÉ |
3312 | Combinez plusieurs appels PEcAn.db en une seule requête | FUSIONNÉ |
3308 | Supprimez la fonction db.site.lat.lon et remplacez toutes les utilisations par query.site | FUSIONNÉ |
3301 | Ajouter des suites de tests pour met2Cf.csv.R | FUSIONNÉ |
3300 | Supprimer la dépendance à data.atmosphere de data.land | FUSIONNÉ |
3291 | Ajouter un script pour identifier les fonctions orphelines dans Codebase | FUSIONNÉ |
3290 | Supprimer inst/met2CF.R inutilisé | FUSIONNÉ |
3283 | Mettre à jour les URL des points de terminaison de l'API | FUSIONNÉ |
3281 | Correction de la recherche d'extension de fichier dans la fonction met2model.SIPNET | FUSIONNÉ |
3276 | Mettre à jour la documentation pour la fonction cos_solar_zenith_angle | FUSIONNÉ |
3246 | Correction des fautes de frappe et des erreurs dans les documentations Markdown | FUSIONNÉ |
3243 | Mettre à jour book.yml | FUSIONNÉ |
3348 | Supprimer Browndog | OUVRIR |
3338 | Refactoriser convert_input pour effectuer des tâches via la fonction d'assistance | OUVRIR |
3324 | Ajouter une fonction pour obtenir éventuellement site.info s'il n'est pas présent | OUVRIR |
3319 | Refactoriser met.process et dbfiles | OUVRIR |
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3