Maison > interface Web > js tutoriel > Mon expérience GSoC : Projet PEcAn

Mon expérience GSoC : Projet PEcAn

WBOY
Libérer: 2024-08-22 18:52:33
original
543 Les gens l'ont consulté

My GSoC Experience : PEcAn Project

À propos de PECAN :

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.

Résumé du projet

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

À propos du projet :

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.

Aperçu

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.


Mes contributions à 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 :

  1. 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.

  2. 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.

  3. 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 !! ??

Liste de mes RP dans le projet PEcAn ?

ID Titre État ête> 3359 Mettre à jour DEV-INTRO.md
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
FUSIONNÉ 3312 Combiner plusieurs appels PEcAn.db dans 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É 3 300 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 Corriger les fautes de frappe et les erreurs dans les documentations Markdown FUSIONNÉ 3243 Mettre à jour book.yml FUSIONNÉ 3348 Supprimer Browndog OUVERT 3338 Refactoriser convert_input pour effectuer des tâches via une fonction d'assistance OUVERT 3324 Ajouter une fonction pour obtenir éventuellement site.info s'il n'est pas présent OUVERT 3319 Refactoriser met.process et dbfiles OUVERT

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal