As part of my summer of 2024 internship I had the privilege of getting involved with some of NSF Unidata’s Python projects. My work ranged from creating educational tutorials to adding new functionalities to existing libraries, enhancing the resources available to the community.
Half of my summer was dedicated to working with Project Pythia cookbooks, domain-specific tutorials for the python geoscientific community. Before this internship, my experience with GitHub was very limited. Making contributions to Pythia Foundations helped me become more comfortable with the forking workflow.
I participated in Project Pythia’s hackathon at the beginning of June, where I collaborated with other students and scientists to create a new cookbook in just one week. This event taught me more about the inner workings of the cookbooks: how to start one, make it work, and get it published.
My final Project Pythia contribution was a new machine learning cookbook, which served as an introduction to running machine learning algorithms and complements NSF Unidata’s CyberTraining Project. The cookbook presents a basic regression problem with Linear Regression and Decision Tree Regression models.
During the second half of my summer I focused on making contributions to MetPy. One
of MetPy’s tools for reading data is the parse_wpc_surface_bulletin()
function,
which, as the name suggests, parses the surface bulletins from the Weather
Prediction Center (WPC) into a Pandas Dataframe.
This function had an issue parsing
bulletins for the Southern Hemisphere so I set out to fix it. After modifying the
function, I implemented new tests that ensure its correct performance.
While working with the WPC surface bulletins, I decided to create a new class to
make plotting these bulletins much easier. I developed a class called
PlotSurfaceAnalysis()
that reduces the code to a few lines and allows
customization of several different traits. You can see a full plotting example in
the PlotSurfaceAnalysis Examples notebook.
This summer internship taught me invaluable lessons about working with open-source projects. I gained practical skills in software development, such as version control with GitHub, collaborative coding, and managing contributions to complex projects. Working on MetPy and Project Pythia allowed me to understand the intricacies of contributing to large-scale, community-driven projects, which includes navigating codebases, adhering to coding standards, and writing comprehensive documentation.