"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Mi experiencia GSoC: Proyecto PEcAn

Mi experiencia GSoC: Proyecto PEcAn

Publicado el 2024-08-31
Navegar:125

My GSoC Experience : PEcAn Project

Acerca de PEcAN:

El Analizador Predictivo de Ecosistemas (PEcAn) es un sistema de flujo de trabajo científico para gestionar inmensas cantidades de datos ambientales disponibles públicamente y un sistema de asimilación de datos bayesianos para sintetizar esta información dentro de modelos de ecosistemas de última generación.

Resumen del proyecto

Organización: Proyecto PecAn

Mentores: Christopher Black (#infotroph), Shashank Singh(#moki1202)

Colaborador: Abhinav Pandey (#Sweetdevil144)

Duración del proyecto: 350 horas

Título del proyecto: Optimizar PEcAn para uso independiente de una sola
paquetes

¡¡Muchas gracias, Chris, por escuchar atentamente mis enfoques y refinarlos de maneras mucho mejores!!

Un agradecimiento especial también a otros mentores: David LeBauer, Shashank Singh y Michael Dietze

Sobre el proyecto:

El objetivo de este proyecto fue mejorar el Proyecto PEcAn optimizando sus módulos para uso independiente. A pesar del sólido marco de trabajo de PEcAn y de sus módulos interconectados, existía una creciente necesidad de hacer que estos módulos fueran operables de forma independiente. Este cambio fue esencial para simplificar el uso, las pruebas y el desarrollo del módulo, haciendo que el sistema sea más accesible y eficiente para los usuarios y contribuyentes. La atención se centró en optimizar los módulos para su uso independiente, mejorando su operatividad individual dentro del marco interconectado de PEcAn. Nuestra principal prioridad era "volver a aflojar estos acoplamientos" revisando el diseño y la interfaz de los paquetes PEcAn.

Descripción general

Este verano, tuve el privilegio de participar en Google Summer of Code, 2024 con el PEcAn Project. Entre los muchos candidatos talentosos seleccionados para el programa de este año, yo estuve entre uno de ellos seleccionados para contribuir a un software de código abierto del mundo real que tiene un impacto global significativo. A medida que el programa llega a su fin, me gustaría reflexionar sobre lo que he aprendido durante los últimos tres meses con PEcAn.

Mi viaje con el Proyecto PEcAn comenzó mucho antes del período oficial del GSoC, y mi primer PR se fusionó ya en diciembre de 2023, cinco meses antes del cronograma del GSoC. Esta participación temprana me brindó una valiosa experiencia al navegar por la intrincada arquitectura y el complejo diseño de la base de código de PEcAn. También me permitió familiarizarme con el trabajo de la organización, particularmente en el lenguaje de programación R. Desde esos primeros días, estaba ansioso por profundizar en el proyecto y hacer contribuciones significativas.

La lección más valiosa que GSoC me ha enseñado es esta: Aprendemos haciendo y allanamos el camino a seguir incluso cuando el camino a seguir parece incierto. Mi experiencia durante este viaje de GSoC me ha demostrado que lo que Lo que inicialmente planeé lograr fue solo una fracción de lo que finalmente logré.

Con 15 solicitudes de extracción, 6 problemas resueltos e innumerables horas dedicadas a reuniones con mis mentores, me encontré progresivamente alineado con los objetivos del Proyecto PEcAn.


Mis contribuciones a PEcAn

(Todo mi trabajo del que hablaré está vinculado al final de esta página.)

El período GSoC se estructuró en tres fases clave:

  1. Fase 1: Período de vinculación comunitaria: Durante esta fase, me familiaricé con el proyecto y construí fuertes conexiones con mis mentores. Este tiempo me permitió obtener una comprensión sólida de los objetivos y las complejidades del proyecto. Comencé haciendo cambios menores en el código base mientras entendía los aspectos clave de PEcAn. Mis esfuerzos se centraron en recopilar datos que luego serían cruciales para abordar los desafíos del proyecto.

  2. Fase 2: Desacoplamiento de los paquetes de PEcAn: Mi tarea principal en esta fase fue comenzar a desacoplar los paquetes de PEcAn, siendo mi punto de partida el paquete data.land. Esto implicó examinar cuidadosamente los paquetes que requerían mejoras en la modularidad y flexibilidad dentro del proyecto. Durante esta fase, eliminé la dependencia de data.land del paquete data.atmosphere al descubrir instancias diminutas de dependencias y redirigirlas nuevamente a las llamadas a la base de datos, lo que resultó en una reducción de las dependencias generales. Además de esto, también hice algunos cambios menores para Agregar conjuntos de pruebas para met2Cf.csv.R y para Eliminar la función db.site.lat.lon y reemplazar todos los usos con query.site. También combiné múltiples llamadas a la base de datos, lo que ayudó aún más a reducir las llamadas a la base de datos que se realizan en nuestro sistema y a reducir aún más la latencia en la base de datos. También creé un script de Python personalizado para identificar funciones huérfanas que ya no se utilizaban en el código base y realicé limpiezas de dichas instancias.

  3. Fase 3: Mejora de la función convert_input: esta fase resultó ser la más desafiante de todas debido a la complejidad de la función convert_input en PEcAn. Dediqué mucho tiempo a encontrar un buen enfoque para abordar los diversos problemas que habíamos enfrentado. Sin embargo, esta fase también fue la más productiva, gracias a la comprensión mucho más profunda del código base que había adquirido en ese momento.

Durante esta fase, propuse una nueva función para recuperar opcionalmente site.info en el número 3324, lo que mejora la flexibilidad. Además, ayudé a refactorizar y eliminar el paquete BrownDog, ahora descontinuado, garantizando una base de código limpia y moderna a través del n.° 3348. Eliminé con éxito todas las instancias de BrownDog mientras discutía activamente estos cambios con mis mentores.

Para mejorar aún más la modularidad de la función convert_input, decidí dividirla en funciones auxiliares más pequeñas en el n.° 3338. Esta reestructuración simplifica la navegación y la comprensión del código base, lo que facilita el trabajo de los futuros desarrolladores.

Durante el período GSoC, tuve reuniones periódicas (todos los miércoles) con mis mentores para discutir nuestro progreso semanal, planes futuros y estrategia para avanzar en el proyecto. Esta asistencia regular de mis mentores realmente me ayudó a centrar mi atención en el proyecto.

Estoy profundamente agradecido con todo el equipo de PEcAn por brindarme esta increíble oportunidad de crecer, aprender y colaborar con otros. Lo que realmente hace que GSoC sea único es la alegría del viaje en sí. No solo adquirí competencia en un nuevo lenguaje de programación, sino que también crecí como persona, saliendo de mi zona de confort a través de reuniones semanales e interacciones con mis mentores. Esta experiencia ha sido transformadora, tanto técnica como personalmente.

¡¡Continuando, planeo continuar trabajando con PEcAN a largo plazo y mejorar las capacidades de PEcAN en todo lo que pueda!! ¡¡Eso es todo por ahora!! ??

¿Lista de mis PR en el proyecto PEcAn?

ID Título Estado
3359 Actualizar DEV-INTRO.md FUSIONADO
3312 Combina múltiples llamadas a PEcAn.db en una sola consulta FUSIONADO
3308 Eliminar la función db.site.lat.lon y reemplazar todos los usos con query.site FUSIONADO
3301 Agregar conjuntos de pruebas para met2Cf.csv.R FUSIONADO
3300 Eliminar la dependencia de data.atmosphere de data.land FUSIONADO
3291 Agregar script para identificar funciones huérfanas en Codebase FUSIONADO
3290 Eliminar inst/met2CF.R no utilizado FUSIONADO
3283 Actualizar las URL de los puntos finales de la API FUSIONADO
3281 Reparar la búsqueda de extensiones de archivos en la función met2model.SIPNET FUSIONADO
3276 Actualizar documentación para la función cos_solar_zenith_angle FUSIONADO
3246 Corregir errores tipográficos y errores en la documentación de Markdown FUSIONADO
3243 Actualizar libro.yml FUSIONADO
3348 Eliminar perro marrón ABIERTO
3338 Refactorizar convert_input para realizar tareas mediante la función auxiliar ABIERTO
3324 Agregar función para obtener opcionalmente site.info si no está presente ABIERTO
3319 Refactorizar met.process y dbfiles ABIERTO
Declaración de liberación Este artículo se reproduce en: https://dev.to/devrx/my-gsoc-experience-pecan-project-bi0?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3