Tools for performing common tasks on solar PV data signals

# solar-data-tools

Tools for performing common tasks on solar PV data signals. These tasks include finding clear days in a data set, common data transforms, and fixing time stamp issues. These tools are designed to be automatic and require little if any input from the user. Libraries are included to help with data IO and plotting as well.

There is close integration between this repository and the Statistical Clear Sky repository, which provides a "clear sky model" of system output, given only measured power as an input.

See notebooks folder for examples.

## Install & Setup

### 3 ways of setting up, either approach works:

#### 1) Recommended: Set up conda environment with provided .yml file

We recommend setting up a fresh Python virtual environment in which to use solar-data-tools. We recommend using the Conda package management system, and creating an environment with the environment configuration file named pvi-user.yml, provided in the top level of this repository. This will install the statistical-clear-sky package as well.

Creating the env:

$conda env create -f pvi-user.yml  Starting the env: $ conda activate pvi_user


Stopping the env

$conda deactivate  Updating the env with latest $ conda env update -f pvi-user.yml


Additional documentation on setting up the Conda environment is available here.

#### 2) PIP Package

$pip install solar-data-tools  Alternative: Clone repo from GitHub Mimic the pip package by setting up locally. $ pip install -e path/to/root/folder


#### 3) Anaconda Package

\$ conda install -c slacgismo solar-data-tools


### Solvers

#### ECOS

By default, ECOS solver is used, which is supported by cvxpy because it is Open Source. However, it is found that Mosek solver is more stable. Thus, we encourage you to install it separately as below and obtain the license on your own.

#### MOSEK

MOSEK is a commercial software package. The included YAML file will install MOSEK for you, but you will still need to obtain a license. More information is available here:

## Usage

Users will primarily interact with this software through the DataHandler class.

from solardatatools import DataHandler
from solardatatools.dataio import get_pvdaq_data

pv_system_data = get_pvdaq_data(sysid=35, api_key='DEMO_KEY', year=[2011, 2012, 2013])

dh = DataHandler(pv_system_data)
dh.run_pipeline(power_col='dc_power')


If everything is working correctly, you should see something like the following

total time: 16.67 seconds
--------------------------------
Breakdown
--------------------------------
Preprocessing              6.52s
Cleaning                   8.62s
Filtering/Summarizing      1.53s
Data quality           0.23s
Clear day detect       0.19s
Clipping detect        0.21s
Capacity change detect 0.91s


## Contributors

Must enable pre-commit hook before pushing any contributions

pip install pre-commit
pre-commit install


Run pre-commit hook on all files

pre-commit run --all-files


## Test Coverage

In order to view the current test coverage metrics, run:

coverage run --source solardatatools -m unittest discover && coverage html
open htmlcov/index.html


## Versioning

We use Semantic Versioning for versioning. For the versions available, see the tags on this repository.

## Project details

Uploaded source
Uploaded py3