Skip to main content

Basic set of python tools

Project description

capetools 🕶

A set of python 🐍 tools to process and model PV

I put together a set of tools used to clean data and model bifacial systems using pvfactors, pvlib and bifacialvf 🌞

Install

As of 02/2019: bifacialvf has not yet merged this PR, the simulate function cannot take arbitrary metereological data on the form of pandas DataFrames. So we are force to install a custom fork of bifacialvf from here. This is way, a formal release of capetools to PyPI is not possible rght now, so we have to install by cloning from github.

The recommended method is to install capetools on a conda envirnment. Ideally create a conda env with python 3.6 and then clone and install using pip.

conda create --name=your_env_name python=3.7

git clone https://github.com/tcapelle/capetools/

go inside the cloned capetools repo and do:

pip install .

or on editable mode, git clone this repo, and from within the repo install using:

pip install -e .

Getting started 💪

from capetools.imports import *
from capetools.utils.missing import *
from capetools.utils.tmy import read_pvgis
from capetools.modelling.mypvfactors import *
from capetools.modelling.mybifacialvf import *
PATH = Path.cwd().parent/'data'
fname = PATH/'pvgis_tmy_chambery.csv'

We will ingest a PVGIS downloaded file for Chambery

gps_data, months, tmy_data = read_pvgis(fname)
tmy_data.head()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
temp humidity ghi dni dhi infra ws wd pressure
time(UTC)
2012-01-01 00:00:00 2.87 88.28 0.0 -0.0 0.0 259.63 1.33 170.0 99504.0
2012-01-01 01:00:00 3.59 90.07 0.0 -0.0 0.0 268.30 1.39 166.0 99508.0
2012-01-01 02:00:00 4.32 91.86 0.0 -0.0 0.0 276.97 1.45 162.0 99511.0
2012-01-01 03:00:00 5.04 93.64 0.0 -0.0 0.0 285.64 1.51 167.0 99517.0
2012-01-01 04:00:00 5.76 95.43 0.0 -0.0 0.0 294.32 1.57 171.0 99524.0

We can quickly look at missing data:

plot_missing(tmy_data)

png

as expected, no missing data !

Simulations

pvfactors

params = system_def(n_pvrows=3); params
{'n_pvrows': 3,
 'pvrow_height': 1.6218180900789148,
 'pvrow_width': 2.02,
 'tracking': False,
 'axis_azimuth': 0,
 'surface_tilt': 38,
 'surface_azimuth': 180,
 'albedo': 0.4,
 'gcr': 0.5,
 'rho_front_pvrow': 0.075,
 'rho_back_pvrow': 0.075,
 'cut': {0: {'front': 1, 'back': 7},
  1: {'front': 1, 'back': 7},
  2: {'front': 1, 'back': 7}}}
data = get_data(fname, params)
pvarray = run_pvfactors_simulation(data, params)
/home/tc256760/anaconda3/envs/fastai/lib/python3.7/site-packages/pvfactors/viewfactors/vfmethods.py:181: RuntimeWarning: invalid value encountered in true_divide
  vf_pvrow_to_gnd_surf * pvrow_surf_length / gnd_surf_length, 0.)
/home/tc256760/anaconda3/envs/fastai/lib/python3.7/site-packages/pvfactors/viewfactors/vfmethods.py:181: RuntimeWarning: divide by zero encountered in true_divide
  vf_pvrow_to_gnd_surf * pvrow_surf_length / gnd_surf_length, 0.)
/home/tc256760/anaconda3/envs/fastai/lib/python3.7/site-packages/pvfactors/viewfactors/vfmethods.py:531: RuntimeWarning: divide by zero encountered in true_divide
  vf_1_to_2 = (d1 + d2 - l1 - l2) / (2. * width)
/home/tc256760/anaconda3/envs/fastai/lib/python3.7/site-packages/pvfactors/viewfactors/vfmethods.py:531: RuntimeWarning: invalid value encountered in true_divide
  vf_1_to_2 = (d1 + d2 - l1 - l2) / (2. * width)
/home/tc256760/anaconda3/envs/fastai/lib/python3.7/site-packages/pvfactors/viewfactors/vfmethods.py:607: RuntimeWarning: invalid value encountered in true_divide
  vf_1_to_2 = np.abs(sum_2 - sum_1) / (2. * width_1)
/home/tc256760/anaconda3/envs/fastai/lib/python3.7/site-packages/pvfactors/viewfactors/vfmethods.py:222: RuntimeWarning: invalid value encountered in true_divide
  vf_i_to_j * length_i / length_j, 0.)
ax = plot_idx(pvarray)
ax.set_xlim(-2, 10)
(-2, 10)

png

res_pvfactors = individual_report(pvarray, index=data.index)
res_pvfactors.head()
<style scoped> .dataframe tbody tr th:only-of-type { vertical-align: middle; }
.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
</style>
qinc_0 qinc_1 qinc_2 qinc_3 qinc_4 qinc_5 qinc_6 qinc_front qinc_back
time(UTC)
2019-01-01 00:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2019-01-01 01:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2019-01-01 02:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2019-01-01 03:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
2019-01-01 04:00:00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
res_pvfactors['21 June 2019'].plot();

png

bifacialvf

res_bifacialvf = run_bifacialvf_simulation(data)
  0%|          | 0/8760 [00:00<?, ?it/s]/home/tc256760/Apps/bifacialvf/bifacialvf/vf.py:300: RuntimeWarning: divide by zero encountered in double_scalars
  projectedX2 = PcellX + np.float64(PcellY) / math.tan(startElvDown);      # Projection of ElvDown to ground in +x direction (X1 and X2 opposite nomenclature for front irradiance method)
  0%|          | 40/8760 [00:00<00:22, 379.91it/s]


********* 
Running Simulation for TMY3:  Chambery
Location:   Chambery
Lat:  45.637001  Long:  5.881  Tz  -1.0
Parameters: beta:  0   Sazm:  180   Height:  0.5   rtr separation:  8.0   Row type:  interior   Albedo:  0.4
Saving into output.csv




100%|██████████| 8760/8760 [00:27<00:00, 314.85it/s]

Finished
res_bifacialvf['21 June 2019'].plot();

png

Coontributing 👇

Read nbdev documentation please.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

capetools-1.0.2.tar.gz (21.8 kB view details)

Uploaded Source

Built Distribution

capetools-1.0.2-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file capetools-1.0.2.tar.gz.

File metadata

  • Download URL: capetools-1.0.2.tar.gz
  • Upload date:
  • Size: 21.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0.post20200106 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.6

File hashes

Hashes for capetools-1.0.2.tar.gz
Algorithm Hash digest
SHA256 7ee8e4c595ccbb2201e007a4f13032a7d04e27acc54a6b2bce2134010460dbc1
MD5 a89ea10638ab8929d180e9e1cc1531de
BLAKE2b-256 1c864cad8c56b7fe8dcd37bd9b0b05ab15796044c65875f4f5e51a8f765c3306

See more details on using hashes here.

File details

Details for the file capetools-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: capetools-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/44.0.0.post20200106 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.6

File hashes

Hashes for capetools-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c3a3bbfa730f5b33b7d8f5a6ae94f6cbf13da9c418ea83e107f64a3f7869e859
MD5 16bb73bdcf9162412a382a89387a1586
BLAKE2b-256 dea9e5644f647c580daf61da0de053440994f47444bf8d88e6c943db49f2c7b5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page