Heim  >  Artikel  >  Web-Frontend  >  Meine GSoC-Erfahrung: PEcAn-Projekt

Meine GSoC-Erfahrung: PEcAn-Projekt

WBOY
WBOYOriginal
2024-08-22 18:52:33525Durchsuche

My GSoC Experience : PEcAn Project

Über PEcAN:

Der Predictive Ecosystem Analyzer (PEcAn) ist ein wissenschaftliches Workflow-System zur Verwaltung der immensen Mengen öffentlich verfügbarer Umweltdaten und ein Bayesianisches Datenassimilationssystem zur Synthese dieser Informationen in hochmodernen Ökosystemmodellen.

Projektzusammenfassung

Organisation: PecAn Project

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

Mitwirkender: Abhinav Pandey (#Sweetdevil144)

Projektdauer: 350 Stunden

Projekttitel:Optimierung von PEcAn für die freistehende Nutzung von Single
Pakete

Vielen Dank, Chris, dass du dir meine Ansätze aufmerksam angehört und sie viel besser verfeinert hast!!

Ein besonderer Dank geht auch an andere Mentoren: David LeBauer, Shashank Singh und Michael Dietze

Über das Projekt:

Ziel dieses Projekts war es, das PEcAn-Projekt durch die Optimierung seiner Module für den eigenständigen Einsatz zu verbessern. Trotz des robusten Rahmens und der miteinander verbundenen Module von PEcAn bestand ein wachsender Bedarf, diese Module unabhängig voneinander betreibbar zu machen. Diese Änderung war von entscheidender Bedeutung, um die Modulnutzung, das Testen und die Entwicklung zu vereinfachen und das System für Benutzer und Mitwirkende zugänglicher und effizienter zu machen. Der Schwerpunkt lag auf der Optimierung der Module für den eigenständigen Einsatz und der Verbesserung ihrer individuellen Bedienbarkeit innerhalb des vernetzten PEcAn-Frameworks. Unsere oberste Priorität bestand darin, „diese Kopplungen wieder zu lösen“, indem wir das Design und die Schnittstelle von PEcAn-Paketen überarbeiteten.

Überblick

Diesen Sommer hatte ich das Privileg, mit dem PEcAn-Projekt am Google Summer of Code, 2024 teilzunehmen. Unter den vielen talentierten Kandidaten, die für das diesjährige Programm ausgewählt wurden, gehörte ich zu denen, die ausgewählt wurden, um zu einer realen Open-Source-Software beizutragen, die erhebliche globale Auswirkungen hat. Da sich das Programm dem Ende zuneigt, möchte ich darüber nachdenken, was ich in den letzten drei Monaten mit PEcAn gelernt habe.

Meine Reise mit dem PEcAn-Projekt begann lange vor dem offiziellen GSoC-Zeitraum, wobei meine erste PR bereits im Dezember 2023 zusammengeführt wurde – fünf Monate vor dem GSoC-Zeitplan. Durch diese frühe Einbindung konnte ich wertvolle Erfahrungen beim Navigieren in der komplizierten Architektur und dem komplexen Codebasisdesign von PEcAn sammeln. Dadurch konnte ich mich auch mit der Arbeit der Organisation vertraut machen, insbesondere mit der Programmiersprache R. Von Anfang an war ich bestrebt, tiefer in das Projekt einzutauchen und sinnvolle Beiträge zu leisten.

Die wertvollste Lektion, die GSoC mir beigebracht hat, ist diese: Wir lernen durch Handeln und ebnen den Weg nach vorne, auch wenn der Weg, der vor uns liegt, ungewiss erscheint. Meine Erfahrung während dieser GSoC-Reise hat mir gezeigt, was es bedeutet Was ich ursprünglich erreichen wollte, war nur ein Bruchteil dessen, was ich letztendlich erreicht hatte.

Mit über 15 Pull Requests, über 6 gelösten Problemen und unzähligen Stunden, die ich in Meetings mit meinen Mentoren verbracht habe, stellte ich fest, dass ich mich zunehmend den Zielen des PEcAn annäherte Projekt.


Meine Beiträge zu PEcAn

(Alle meine Arbeiten, die ich besprechen werde, sind unten auf dieser Seite verlinkt.)

Der GSoC-Zeitraum war in drei Schlüsselphasen gegliedert:

  1. Phase 1: Community-Bonding-Phase: Während dieser Phase habe ich mich mit dem Projekt vertraut gemacht und starke Verbindungen zu meinen Mentoren aufgebaut. Dieses Mal konnte ich ein fundiertes Verständnis der Ziele und Feinheiten des Projekts erlangen. Ich begann damit, kleinere Änderungen an der Codebasis vorzunehmen und gleichzeitig die wichtigsten Aspekte von PEcAn zu verstehen. Meine Bemühungen konzentrierten sich auf das Sammeln von Daten, die später für die Bewältigung der Projektherausforderungen von entscheidender Bedeutung sein sollten.

  2. Phase 2: Entkopplung der PEcAn-Pakete: Meine Hauptaufgabe in dieser Phase bestand darin, mit der Entkopplung der PEcAn-Pakete zu beginnen, wobei mein Ausgangspunkt das data.land-Paket war. Dazu gehörte eine sorgfältige Prüfung der Pakete, die eine Verbesserung der Modularität und Flexibilität innerhalb des Projekts erforderten. Während dieser Phase habe ich die Abhängigkeit von data.land vom data.atmosphere-Paket entfernt, indem ich winzige Instanzen von Abhängigkeiten ermittelt und sie stattdessen zurück zu den DB-Aufrufen umgeleitet habe, was zu einer Reduzierung der Gesamtabhängigkeiten führte. Darüber hinaus habe ich auch einige kleinere Änderungen an Testsuiten für met2Cf.csv.R hinzufügen und an Funktion db.site.lat.lon entfernen und alle Verwendungen durch query.site ersetzen . Ich habe auch mehrere DB-Aufrufe kombiniert, was weiter dazu beigetragen hat, die Datenbankaufrufe in unserem System zu reduzieren und die Latenz in der DB weiter zu reduzieren. Ich habe außerdem ein benutzerdefiniertes Python-Skript erstellt, um verwaiste Funktionen zu lokalisieren, die in der Codebasis nicht mehr verwendet wurden, und Bereinigungen solcher Instanzen durchzuführen.

  3. Phase 3: Verbesserung der Funktion „convert_input“: Diese Phase erwies sich aufgrund der Komplexität der Funktion „convert_input“ in PEcAn als die anspruchsvollste von allen. Ich habe viel Zeit darauf verwendet, einen guten Ansatz zur Bewältigung der verschiedenen Probleme zu finden, mit denen wir konfrontiert waren. Allerdings war diese Phase auch die produktivste, dank des viel tieferen Verständnisses der Codebasis, das ich zu diesem Zeitpunkt erlangt hatte.

Während dieser Phase habe ich eine neue Funktion vorgeschlagen, um site.info optional von #3324 abzurufen und so die Flexibilität zu erhöhen. Darüber hinaus habe ich dabei geholfen, das inzwischen eingestellte BrownDog-Paket umzugestalten und zu entfernen und so über #3348 eine saubere und moderne Codebasis sicherzustellen. Ich habe alle Instanzen von BrownDog erfolgreich entfernt und diese Änderungen aktiv mit meinen Mentoren besprochen.

Um die Modularität der Funktion „convert_input“ weiter zu verbessern, habe ich beschlossen, sie in #3338 in kleinere Hilfsfunktionen zu unterteilen. Diese Umstrukturierung vereinfacht die Navigation und das Verständnis der Codebasis und erleichtert so die Arbeit zukünftiger Entwickler.

Während des gesamten GSoC-Zeitraums hatte ich regelmäßige Treffen (jeden Mittwoch) mit meinen Mentoren, um unsere wöchentlichen Fortschritte, Zukunftspläne und Strategien für die Weiterentwicklung des Projekts zu besprechen. Diese regelmäßige Unterstützung durch meine Mentoren hat mir wirklich geholfen, mich auf das Projekt zu konzentrieren.

Ich bin dem gesamten PEcAn-Team zutiefst dankbar, dass es mir diese unglaubliche Gelegenheit gegeben hat, zu wachsen, zu lernen und mit anderen zusammenzuarbeiten. Was GSoC wirklich einzigartig macht, ist die Freude an der Reise selbst. Ich erlangte nicht nur Kenntnisse in einer neuen Programmiersprache, sondern wuchs auch als Mensch weiter und verließ durch wöchentliche Treffen und Interaktionen mit meinen Mentoren meine Komfortzone. Diese Erfahrung war sowohl technisch als auch persönlich transformativ.

Ich habe vor, auch in Zukunft langfristig mit PEcAN zusammenzuarbeiten und die Fähigkeiten von PEcAN in jeder erdenklichen Weise zu verbessern!! Das ist vorerst Schluss!! ??

Liste meiner PRs im PEcAn-Projekt?

IDs Titel Bundesstaat 3359 DEV-INTRO.md aktualisieren
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
VERSCHMELZT 3312 Kombinieren Sie mehrere PEcAn.db-Aufrufe in einer einzigen Abfrage VERSCHMELZT 3308 Entfernen Sie die Funktion db.site.lat.lon und ersetzen Sie alle Verwendungen durch query.site VERSCHMELZT 3301 Testsuiten für met2Cf.csv.R hinzufügen VERSCHMELZT 3300 Entfernen Sie die Abhängigkeit von data.atmosphere aus data.land VERSCHMELZT 3291 Fügen Sie ein Skript hinzu, um verwaiste Funktionen in der Codebasis zu identifizieren VERSCHMELZT 3290 Nicht verwendetes inst/met2CF.R entfernen VERSCHMELZT 3283 API-Endpunkt-URLs aktualisieren VERSCHMELZT 3281 Dateierweiterungssuche in der Funktion met2model.SIPNET korrigiert VERSCHMELZT 3276 Dokumentation für die Funktion cos_solar_zenith_angle aktualisieren VERSCHMELZT 3246 Tippfehler und Fehler in Markdown-Dokumentationen beheben VERSCHMELZT 3243 book.yml aktualisieren VERSCHMELZT 3348 Browndog entfernen ÖFFNEN 3338 Convert_input umgestalten, um Aufgaben über die Hilfsfunktion auszuführen ÖFFNEN 3324 Funktion hinzufügen, um optional site.info abzurufen, falls nicht vorhanden ÖFFNEN 3319 Met.process und dbfiles umgestalten ÖFFNEN

Das obige ist der detaillierte Inhalt vonMeine GSoC-Erfahrung: PEcAn-Projekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn