Package: capetools
capetools 🕶A set of python 🐍 tools to process and model PVI put together a set of tools used to clean data and model bifacial systems usingpvfactors,pvlibandbifacialvf🌞InstallAs of 02/2019:bifacialvfhas not yet merged thisPR, 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 fromhere. 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 aconda envwithpython 3.6and then clone and install using pip.conda create --name=your_env_name python=3.7git 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 💪fromcapetools.importsimport*fromcapetools.utils.missingimport*fromcapetools.utils.tmyimportread_pvgisfromcapetools.modelling.mypvfactorsimport*fromcapetools.modelling.mybifacialvfimport*PATH=Path.cwd().parent/'data'fname=PATH/'pvgis_tmy_chambery.csv'We will ingest a PVGIS downloaded file for Chamberygps_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>temphumidityghidnidhiinfrawswdpressuretime(UTC)2012-01-01 00:00:002.8788.280.0-0.00.0259.631.33170.099504.02012-01-01 01:00:003.5990.070.0-0.00.0268.301.39166.099508.02012-01-01 02:00:004.3291.860.0-0.00.0276.971.45162.099511.02012-01-01 03:00:005.0493.640.0-0.00.0285.641.51167.099517.02012-01-01 04:00:005.7695.430.0-0.00.0294.321.57171.099524.0We can quickly look at missing data:plot_missing(tmy_data)as expected, no missing data !Simulationspvfactorsparams=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)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_0qinc_1qinc_2qinc_3qinc_4qinc_5qinc_6qinc_frontqinc_backtime(UTC)2019-01-01 00:00:000.00.00.00.00.00.00.00.00.02019-01-01 01:00:000.00.00.00.00.00.00.00.00.02019-01-01 02:00:000.00.00.00.00.00.00.00.00.02019-01-01 03:00:000.00.00.00.00.00.00.00.00.02019-01-01 04:00:000.00.00.00.00.00.00.00.00.0res_pvfactors['21 June 2019'].plot();bifacialvfres_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]

Finishedres_bifacialvf['21 June 2019'].plot();Coontributing 👇Readnbdevdocumentation please.