Skip to content
Will Holmgren edited this page Feb 27, 2020 · 11 revisions

Introduction

pvlib python is the world's most popular open source library for solar power modeling. We are participating in the 2020 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!

Students

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

Ideas

Below is a list of ideas of projects that GSoC participants can choose to work on in pvlib python.

Project Title: Create usage examples

Project Description: Create python scripts, jupyter notebooks, or stack overflow Q/A showing how to use pvlib-python for several common use cases for solar power modeling. Priority use cases include:

  • Calculating annual energy for a PV system at a given location and orientation, showing use of different models for plane-of-array irradiance, DC power, and cell temperature.
  • Comparing power output between fixed-tilt and tracking PV systems.
  • Calculating and comparing irradiance from various clear-sky models.
  • Comparing power output from a PV system using different PV panels and/or inverters in the system. Mentors will provide detailed descriptions of the use cases, guidance on the modeling process and usage of pvlib-python.

Expected Outcomes: The primary outcome is a set of python scripts in docs/examples, notebooks in docs/tutorials, or questions and answers on stackoverflow. A secondary outcome is to identify improvements to pvlib-python for usability and flexibility.

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

Mentors: Cliff Hansen, Mark Mikofski, Will Holmgren

Difficulty: Medium

Project Title: Overhaul documentation

Project Description: pvlib python documentation pages are not well-organized. Start with a blank page and create effective, beautiful documentation for pvlib python. Examples of documentation to emulate include SunPy.

Expected Outcomes: The primary outcome is source code for a set of documentation pages. Most source code will be in ReStructuredText format.

Skills Required / Preferred: Required: Technical writing. Preferred: Familiarity with python, sphinx, doctests, solar power modeling

Mentors: Cliff Hansen, Will Holmgren

Difficulty: Medium

Project Title: Benchmarking and Profiling

Project Description: pvlib python doesn't have any benchmarking #419 to test how long the model chain takes to execute and whether performance is improving or slowing down. 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 AirSpeed Velocity (asv) benchmarks and other profiling tools to measure and record performance over time, and to identify bottlenecks for improvement.

Expected Outcomes: Benchmarking is measured by one of the CI or GitHub Actions/Checks.

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

Mentors: Mark Mikofski, Cliff Hansen, Will Holmgren

Difficulty: Medium

Mentors

  1. Will Holmgren holmgren@email.arizona.edu
  2. Cliff Hansen cwhanse@sandia.gov
  3. Mark Mikofski mikofski@berkeley.edu

Dates and Other Details

  1. Due date for proposals is Feb 5th, target date is mid-January.
  2. NumFOCUS GSoC 2020 Coordinator: Mridul Seth seth.mridul@gmail.com
  3. The NumFOCUS umbrella GSoC repo is here: https://github.com/NumFOCUS/gsoc -- make sure ideas page (this), contact, source code, and main site links are correct
  4. Examples of other proposals here: https://github.com/pymc-devs/pymc3/wiki/GSoC-2020-projects
  5. Official Google guidelines here: https://google.github.io/gsocguides/mentor/defining-a-project-ideas-list
  6. According to NumFOCUS organizers, past projects like matplotlib have observed that each student may need have 2-3 mentors.

From official guidelines:

Each project on the Ideas list should include:

  • a project title/description
  • more detailed description of the project (2-5 sentences)
  • expected outcomes
  • skills required/preferred
  • possible mentors. And if possible, an easy, medium or hard rating of each project.