Skip to content

Commit 808f5f4

Browse files
committed
add the mappings from solarforecastarbiter-core as an example
1 parent 9995eb4 commit 808f5f4

File tree

2 files changed

+92
-2
lines changed

2 files changed

+92
-2
lines changed

pvlib/iotools/midc.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,93 @@
33
import pandas as pd
44

55

6+
# MIDC_VARIABLE_MAP maps some variables of interest at each MIDC site to their
7+
# pvlib counterparts. The mapping dictionary for a site can be found by looking
8+
# up the Site's id in the dictionary. It is not a comprehensive list, and may
9+
# not be the best fit for your application, but should serve as a base for
10+
# creating your own mappings.
11+
#
12+
# In particular, these mappings coincide with the raw ddata files.
13+
# All site's field list can be found at:
14+
# https://midcdmz.nrel.gov/apps/daily.pl?site=<SITE ID>&live=1
15+
# Where id is the key found in this dictionary
16+
MIDC_VARIABLE_MAP = {
17+
'BMS': {
18+
'Global CMP22 (vent/cor) [W/m^2]': 'ghi',
19+
'Direct NIP [W/m^2]': 'dni',
20+
'Diffuse CM22-1 (vent/cor) [W/m^2]': 'dhi',
21+
'Avg Wind Speed @ 6ft [m/s]': 'wind_speed',
22+
'Tower Dry Bulb Temp [deg C]': 'temp_air',
23+
'Tower RH [%]': 'relative_humidity'},
24+
'UOSMRL': {
25+
'Global CMP22 [W/m^2]': 'ghi',
26+
'Direct NIP [W/m^2]': 'dni',
27+
'Diffuse Schenk [W/m^2]': 'dhi',
28+
'Air Temperature [deg C]': 'temp_air',
29+
'Relative Humidity [%]': 'relative_humidity',
30+
'Avg Wind Speed @ 10m [m/s]': 'wind_speed'},
31+
'HSU': {
32+
'Global Horiz [W/m^2]': 'ghi',
33+
'Direct Normal (calc) [W/m^2]': 'dni',
34+
'Diffuse Horiz (band_corr) [W/m^2]': 'dhi'},
35+
'UTPASRL': {
36+
'Global Horizontal [W/m^2]': 'ghi',
37+
'Direct Normal [W/m^2]': 'dni',
38+
'Diffuse Horizontal [W/m^2]': 'dhi',
39+
'CHP1 Temp [deg C]': 'temp_air'},
40+
'UAT': {
41+
'Global Horiz (platform) [W/m^2]': 'ghi',
42+
'Direct Normal [W/m^2]': 'dni',
43+
'Diffuse Horiz [W/m^2]': 'dhi',
44+
'Air Temperature [deg C]': 'temp_air',
45+
'Rel Humidity [%]': 'relative_humidity',
46+
'Avg Wind Speed @ 3m [m/s]': 'wind_speed'},
47+
'STAC': {
48+
'Global Horizontal [W/m^2]': 'ghi',
49+
'Direct Normal [W/m^2]': 'dni',
50+
'Diffuse Horizontal [W/m^2]': 'dhi',
51+
'Avg Wind Speed @ 10m [m/s]': 'wind_speed',
52+
'Air Temperature [deg C]': 'temp_air',
53+
'Rel Humidity [%]': 'relative_humidity'},
54+
'UNLV': {
55+
'Global Horiz [W/m^2]': 'ghi',
56+
'Direct Normal [W/m^2]': 'dni',
57+
'Diffuse Horiz (calc) [W/m^2]': 'dhi',
58+
'Dry Bulb Temp [deg C]': 'temp_air',
59+
'Avg Wind Speed @ 30ft [m/s]': 'wind_speed'},
60+
'ORNL': {
61+
'Global Horizontal [W/m^2]': 'ghi',
62+
'Direct Normal [W/m^2]': 'dni',
63+
'Diffuse Horizontal [W/m^2]': 'dhi',
64+
'Air Temperature [deg C]': 'temp_air',
65+
'Rel Humidity [%]': 'relative_humidity',
66+
'Avg Wind Speed @ 42ft [m/s]': 'wind_speed'},
67+
'NELHA': {
68+
'Global Horizontal [W/m^2]': 'ghi',
69+
'Air Temperature [W/m^2]': 'temp_air',
70+
'Avg Wind Speed @ 10m [m/s]': 'wind_speed',
71+
'Rel Humidity [%]': 'relative_humidity'},
72+
'ULL': {
73+
'Global Horizontal [W/m^2]': 'ghi',
74+
'Direct Normal [W/m^2]': 'dni',
75+
'Diffuse Horizontal [W/m^2]': 'dhi',
76+
'Air Temperature [deg C]': 'temp_air',
77+
'Rel Humidity [%]': 'relative_humidity',
78+
'Avg Wind Speed @ 3m [m/s]': 'wind_speed'},
79+
'VTIF': {
80+
'Global Horizontal [W/m^2]': 'ghi',
81+
'Direct Normal [W/m^2]': 'dni',
82+
'Diffuse Horizontal [W/m^2]': 'dhi',
83+
'Air Temperature [deg C]': 'temp_air',
84+
'Avg Wind Speed @ 3m [m/s]': 'wind_speed',
85+
'Rel Humidity [%]': 'relative_humidity'},
86+
'NWTC': {
87+
'Global PSP [W/m^2]': 'ghi',
88+
'Temperature @ 2m [deg C]': 'temp_air',
89+
'Avg Wind Speed @ 2m [m/s]': 'wind_speed',
90+
'Relative Humidity [%]': 'relative_humidity'}}
91+
92+
693
# Maps problematic timezones to 'Etc/GMT' for parsing.
794

895
TZ_MAP = {
@@ -95,6 +182,7 @@ def read_midc(filename, variable_map={}, raw_data=False):
95182
'Global Horizontal [W/m^2]': ghi,
96183
}
97184
185+
See the MIDC_VARIABLE_MAP for collection of mappings by site.
98186
For a full list of pvlib variable names see the `Variable Style Rules
99187
<https://pvlib-python.readthedocs.io/en/latest/variables_style_rules.html>`_.
100188

pvlib/test/test_midc.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ def test_read_midc_var_mapping_as_arg(test_mapping):
6868
def test_read_midc_raw_data_from_nrel():
6969
start_ts = pd.Timestamp('20181018')
7070
end_ts = pd.Timestamp('20181019')
71-
data = midc.read_midc_raw_data_from_nrel('UAT', start_ts, end_ts)
72-
assert 'Direct Normal [W/m^2]' in data.columns
71+
var_map = midc.MIDC_VARIABLE_MAP['UAT']
72+
data = midc.read_midc_raw_data_from_nrel('UAT', start_ts, end_ts, var_map)
73+
for k,v in var_map.items():
74+
assert v in data.columns
7375
assert data.index.size == 2880

0 commit comments

Comments
 (0)