-
Notifications
You must be signed in to change notification settings - Fork 1k
GSoC 2022 Projects
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.
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:
- 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!
- 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". - Use these specific goals to start putting together a proposal draft. For inspiration, see this good proposal from 2021: link
- 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.
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 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 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 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
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:
- Kevin Anderson [email protected]
- Mark Mikofski [email protected]