Contributing to Geoscientific Python through Metpy and Project Pythia

Ana Castaneda Montoya
Ana Castaneda Montoya

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.

PlotSurfaceAnalysis default output
Plot created with PlotSurfaceAnalysis() (click to enlarge)

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.

Comments:

Post a Comment:
  • HTML Syntax: Allowed
Unidata Developer's Blog
A weblog about software development by Unidata developers*
Unidata Developer's Blog
A weblog about software development by Unidata developers*

Welcome

FAQs

News@Unidata blog

Take a poll!

What if we had an ongoing user poll in here?

Browse By Topic
Browse by Topic
« August 2024
SunMonTueWedThuFriSat
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
       
Today