Skip to content
Kevin Anderson edited this page Mar 14, 2022 · 5 revisions

Introduction

pvlib python is an open source library for solar power modeling. We are participating in the 2022 Google Summer of Code (GSoC) under the NumFOCUS GSoC application. Come help us improve and extend these capabilities, and learn about solar power in the process!

The goal of GSoC is to help get people started in the open-source world. Our 2021 GSoC contributor described his experience working with pvlib here.

NOTE: unlike previous years, applicants need not be a currently-enrolled student. You can read more about eligibility here.

Contributing guide

Please read the Students contributing guide on the NumFOCUS GSoC repo. Also check out the list of pvlib project ideas below!

Your next steps should be something like this:

  1. Pick a project idea you find interesting and relevant to your skill set. The following section has some ideas, but you're welcome to come up with your own project idea as well!
  2. Come up with some specific goals for the project. For example, using the "pvlib example gallery" idea below, a specific goal might look like "A new example using pvlib.irradiance.xyz to do XYZ".
  3. Use these specific goals to start putting together a proposal draft. For inspiration, see this good proposal from 2021: link
  4. Get feedback on your draft by posting a new thread in the pvlib google group. It's okay if the draft is still a work in progress!

If you have questions, feel free to ask on our google group or directly (mentor contact info is at the bottom of this page).

The application period for GSoC 2022 is April 4-19 1800 UTC.

Ideas

Below is a list of project ideas that we think could make good GSoC projects. Applicants are welcome to submit proposals for other project ideas, but we strongly encourage you to discuss your project idea with us in advance of submitting your proposal. To get feedback on a project idea, or a draft proposal, please start a new thread in the pvlib google group.


Project Title: Add to the pvlib example gallery

Project Description: The pvlib example gallery is a collection of stand-alone python scripts showing examples of using pvlib to model various aspects of solar power. It is organized roughly by modeling topic/pvlib module. Most topics have only one or two examples that only cover a small part of the relevant pvlib functionality. Some parts of pvlib don't even have a topic section yet! This project's goal is to add new examples in one or more gallery topic areas. Proposals for any topic areas are welcome, but here are some gaps that would be great to address:

  • New topic: examples of customizing pvlib's ModelChain class for common use cases
  • New topic: examples of using pvlib.iotools to retrieve and parse weather data that then gets passed on to the modeling part of pvlib
  • Existing topics: flesh out with additional examples

Expected Outcomes: The primary outcome is a set of python scripts in docs/examples. A secondary outcome is to identify improvements to pvlib-python for usability and flexibility.

Skills Required / Preferred: some python required, familiarity with solar power modeling preferred, but not required.

Mentors: Kevin Anderson, Mark Mikofski

Length: 175 or 350 hour, depending on number of examples

Difficulty: Easy


Project Title: Benchmarking and Profiling

Project Description: pvlib python has a small set of benchmarks (see here and here) to test how long various models take to execute and whether performance is improving or slowing down. However, only a small fraction of the package is currently benchmarked. Solar power simulation often requires analyzing very long (multi-year) or high-resolution (sub-hour) time-series, therefore benchmarking performance and profiling is important to analysts. The goal of this project is to implement a broader and more cohesive set of AirSpeed Velocity (asv) benchmarks to measure and record performance over time, and to identify bottlenecks for improvement.

Expected Outcomes: One or more pvlib modules is fully covered by asv benchmarks

Skills Required / Preferred: some python required, curiosity, desire to learn, knowledge of asv, profiling, or benchmarks desirable

Mentors: Kevin Anderson, Mark Mikofski

Length: 175 or 350 hour, depending on number of benchmarked modules

Difficulty: Medium


Project Title: CEC parameter extraction automation

Project Description: A key part of the PV modeling ecosystem is the CEC module database. pvlib uses a processed version of this database produced periodically by the SAM team. As the underlying CEC database updates over time, it would be nice to be able to automate the SAM team's process so that the processed version is kept updated as well. This project is to adapt the manual parameter extraction process currently followed by the SAM team and create a robust, automatable codebase that can perform this parameter extraction in a hands-off fashion.

Expected Outcomes: A new repository in the pvlib organization implementing the parameter extraction process, and ideally a scheduled GitHub Action to execute the process ~weekly.

Skills Required / Preferred: some python required, PV I-V modeling a plus

Mentors: Kevin Anderson, Mark Mikofski

Length: 350 hours

Difficulty: Hard

Mentors

We encourage you to post questions to the pvlib google group, but if you have a question that you don't want to post publicly, you can also email us directly:

  1. Kevin Anderson kevin.anderson@nrel.gov
  2. Mark Mikofski mikofski@berkeley.edu