def test_simplified_solis_dni_extra():
    expected = pd.DataFrame(np.array([[963.555414, 1069.33637, 129.693603]]),
                            columns=['dni', 'ghi', 'dhi'])
    expected = expected[['ghi', 'dni', 'dhi']]

    out = clearsky.simplified_solis(80, dni_extra=pd.Series(1370))
    assert_frame_equal(expected, out)
def test_ineichen_series():
    times = pd.date_range(start='2014-06-24',
                          end='2014-06-25',
                          freq='3h',
                          tz='America/Phoenix')
    apparent_zenith = pd.Series(np.array([
        124.0390863, 113.38779941, 82.85457044, 46.0467599, 10.56413562,
        34.86074109, 72.41687122, 105.69538659, 124.05614124
    ]),
                                index=times)
    am = pd.Series(np.array([
        nan, nan, 6.97935524, 1.32355476, 0.93527685, 1.12008114, 3.01614096,
        nan, nan
    ]),
                   index=times)
    expected = pd.DataFrame(
        np.array([[0., 0., 0.], [0., 0., 0.],
                  [65.49426624, 321.16092181, 25.54562017],
                  [704.6968125, 888.90147035, 87.73601277],
                  [1044.1230677, 953.24925854, 107.03109696],
                  [853.02065704, 922.06124712, 96.42909484],
                  [251.99427693, 655.44925241, 53.9901349], [0., 0., 0.],
                  [0., 0., 0.]]),
        columns=['ghi', 'dni', 'dhi'],
        index=times)

    out = clearsky.ineichen(apparent_zenith, am, 3)
    assert_frame_equal(expected, out)
def test_simplified_solis_series_elevation():
    expected = pd.DataFrame(np.array([[959.335463, 1064.653145, 129.125602]]),
                            columns=['dni', 'ghi', 'dhi'])
    expected = expected[['ghi', 'dni', 'dhi']]

    out = clearsky.simplified_solis(pd.Series(80))
    assert_frame_equal(expected, out)
def test_ineichen_dni_extra():
    expected = pd.DataFrame(np.array(
        [[1042.72590228, 946.35279683, 110.75033088]]),
                            columns=['ghi', 'dni', 'dhi'])

    out = clearsky.ineichen(10, 1, 3, dni_extra=pd.Series(1370))
    assert_frame_equal(expected, out)
def test_ineichen_altitude():
    expected = pd.DataFrame(np.array(
        [[1134.24312405, 994.95377835, 154.40492924]]),
                            columns=['ghi', 'dni', 'dhi'])

    out = clearsky.ineichen(10, 1, 3, altitude=pd.Series(2000))
    assert_frame_equal(expected, out)
def test_axis_azimuth():
    apparent_zenith = pd.Series([30])
    apparent_azimuth = pd.Series([90])

    tracker_data = tracking.singleaxis(apparent_zenith, apparent_azimuth,
                                       axis_tilt=0, axis_azimuth=90,
                                       max_angle=90, backtrack=True,
                                       gcr=2.0/7.0)

    expect = pd.DataFrame({'aoi': 30, 'surface_azimuth': 180,
                           'surface_tilt': 0, 'tracker_theta': 0},
                          index=[0], dtype=np.float64)
    expect = expect[SINGLEAXIS_COL_ORDER]

    assert_frame_equal(expect, tracker_data)

    apparent_zenith = pd.Series([30])
    apparent_azimuth = pd.Series([180])

    tracker_data = tracking.singleaxis(apparent_zenith, apparent_azimuth,
                                       axis_tilt=0, axis_azimuth=90,
                                       max_angle=90, backtrack=True,
                                       gcr=2.0/7.0)

    expect = pd.DataFrame({'aoi': 0, 'surface_azimuth': 180,
                           'surface_tilt': 30, 'tracker_theta': 30},
                          index=[0], dtype=np.float64)
    expect = expect[SINGLEAXIS_COL_ORDER]

    assert_frame_equal(expect, tracker_data)
def test_nans():
    apparent_zenith = np.array([10, np.nan, 10])
    apparent_azimuth = np.array([180, 180, np.nan])
    with np.errstate(invalid='ignore'):
        tracker_data = tracking.singleaxis(apparent_zenith, apparent_azimuth,
                                           axis_tilt=0, axis_azimuth=0,
                                           max_angle=90, backtrack=True,
                                           gcr=2.0/7.0)
    expect = {'tracker_theta': np.array([0, nan, nan]),
              'aoi': np.array([10, nan, nan]),
              'surface_azimuth': np.array([90, nan, nan]),
              'surface_tilt': np.array([0, nan, nan])}
    for k, v in expect.items():
        assert_allclose(tracker_data[k], v, atol=1e-7)

    # repeat with Series because nans can differ
    apparent_zenith = pd.Series(apparent_zenith)
    apparent_azimuth = pd.Series(apparent_azimuth)
    with np.errstate(invalid='ignore'):
        tracker_data = tracking.singleaxis(apparent_zenith, apparent_azimuth,
                                           axis_tilt=0, axis_azimuth=0,
                                           max_angle=90, backtrack=True,
                                           gcr=2.0/7.0)
    expect = pd.DataFrame(np.array(
        [[ 0., 10., 90.,  0.],
         [nan, nan, nan, nan],
         [nan, nan, nan, nan]]),
        columns=['tracker_theta', 'aoi', 'surface_azimuth', 'surface_tilt'])
    assert_frame_equal(tracker_data, expect)
Exemple #8
0
def test_PVSystem_get_irradiance():
    system = pvsystem.PVSystem(surface_tilt=32, surface_azimuth=135)
    times = pd.date_range(start='20160101 1200-0700',
                          end='20160101 1800-0700',
                          freq='6H')
    location = Location(latitude=32, longitude=-111)
    solar_position = location.get_solarposition(times)
    irrads = pd.DataFrame({
        'dni': [900, 0],
        'ghi': [600, 0],
        'dhi': [100, 0]
    },
                          index=times)

    irradiance = system.get_irradiance(solar_position['apparent_zenith'],
                                       solar_position['azimuth'],
                                       irrads['dni'], irrads['ghi'],
                                       irrads['dhi'])

    expected = pd.DataFrame(data=np.array(
        [[883.65494055, 745.86141676, 137.79352379, 126.397131, 11.39639279],
         [0., -0., 0., 0., 0.]]),
                            columns=[
                                'poa_global', 'poa_direct', 'poa_diffuse',
                                'poa_sky_diffuse', 'poa_ground_diffuse'
                            ],
                            index=times)

    assert_frame_equal(irradiance, expected, check_less_precise=2)
def test_axis_tilt():
    apparent_zenith = pd.Series([30])
    apparent_azimuth = pd.Series([135])

    tracker_data = tracking.singleaxis(apparent_zenith, apparent_azimuth,
                                       axis_tilt=30, axis_azimuth=180,
                                       max_angle=90, backtrack=True,
                                       gcr=2.0/7.0)

    expect = pd.DataFrame({'aoi': 7.286245, 'surface_azimuth': 142.65730,
                           'surface_tilt': 35.98741,
                           'tracker_theta': -20.88121},
                          index=[0], dtype=np.float64)
    expect = expect[SINGLEAXIS_COL_ORDER]

    assert_frame_equal(expect, tracker_data)

    tracker_data = tracking.singleaxis(apparent_zenith, apparent_azimuth,
                                       axis_tilt=30, axis_azimuth=0,
                                       max_angle=90, backtrack=True,
                                       gcr=2.0/7.0)

    expect = pd.DataFrame({'aoi': 47.6632, 'surface_azimuth': 50.96969,
                           'surface_tilt': 42.5152, 'tracker_theta': 31.6655},
                          index=[0], dtype=np.float64)
    expect = expect[SINGLEAXIS_COL_ORDER]

    assert_frame_equal(expect, tracker_data)
Exemple #10
0
def test_spa_python_numba_physical(expected_solpos, golden_mst):
    times = pd.date_range(datetime.datetime(2003, 10, 17, 12, 30, 30),
                          periods=1,
                          freq='D',
                          tz=golden_mst.tz)
    with warnings.catch_warnings():
        # don't warn on method reload or num threads
        # ensure that numpy is the most recently used method so that
        # we can use the warns filter below
        warnings.simplefilter("ignore")
        ephem_data = solarposition.spa_python(times,
                                              golden_mst.latitude,
                                              golden_mst.longitude,
                                              pressure=82000,
                                              temperature=11,
                                              delta_t=67,
                                              atmos_refract=0.5667,
                                              how='numpy',
                                              numthreads=1)
    with pytest.warns(UserWarning):
        ephem_data = solarposition.spa_python(times,
                                              golden_mst.latitude,
                                              golden_mst.longitude,
                                              pressure=82000,
                                              temperature=11,
                                              delta_t=67,
                                              atmos_refract=0.5667,
                                              how='numba',
                                              numthreads=1)
    expected_solpos.index = times
    assert_frame_equal(expected_solpos, ephem_data[expected_solpos.columns])
Exemple #11
0
def test_spa_python_numba_physical_dst(expected_solpos, golden):
    times = pd.date_range(datetime.datetime(2003, 10, 17, 13, 30, 30),
                          periods=1,
                          freq='D',
                          tz=golden.tz)

    with warnings.catch_warnings():
        # don't warn on method reload or num threads
        warnings.simplefilter("ignore")
        ephem_data = solarposition.spa_python(times,
                                              golden.latitude,
                                              golden.longitude,
                                              pressure=82000,
                                              temperature=11,
                                              delta_t=67,
                                              atmos_refract=0.5667,
                                              how='numba',
                                              numthreads=1)
    expected_solpos.index = times
    assert_frame_equal(expected_solpos, ephem_data[expected_solpos.columns])

    with pytest.warns(UserWarning):
        # test that we get a warning when reloading to use numpy only
        ephem_data = solarposition.spa_python(times,
                                              golden.latitude,
                                              golden.longitude,
                                              pressure=82000,
                                              temperature=11,
                                              delta_t=67,
                                              atmos_refract=0.5667,
                                              how='numpy',
                                              numthreads=1)
Exemple #12
0
def test_perez_components(irrad_data, ephem_data, dni_et, relative_airmass):
    dni = irrad_data['dni'].copy()
    dni.iloc[2] = np.nan
    out = irradiance.perez(40,
                           180,
                           irrad_data['dhi'],
                           dni,
                           dni_et,
                           ephem_data['apparent_zenith'],
                           ephem_data['azimuth'],
                           relative_airmass,
                           return_components=True)
    expected = pd.DataFrame(
        np.array([[0., 31.46046871, np.nan, 45.45539877],
                  [0., 26.84138589, np.nan, 31.72696071],
                  [0., 0., np.nan, 4.47966439],
                  [0., 4.62212181, np.nan, 9.25316454]]).T,
        columns=['sky_diffuse', 'isotropic', 'circumsolar', 'horizon'],
        index=irrad_data.index)
    expected_for_sum = expected['sky_diffuse'].copy()
    expected_for_sum.iloc[2] = 0
    sum_components = out.iloc[:, 1:].sum(axis=1)
    sum_components.name = 'sky_diffuse'

    assert_frame_equal(out, expected, check_less_precise=2)
    assert_series_equal(sum_components, expected_for_sum, check_less_precise=2)
Exemple #13
0
def test_read_crn(testfile, columns, dtypes):
    index = pd.DatetimeIndex([
        '2019-01-01 16:10:00', '2019-01-01 16:15:00', '2019-01-01 16:20:00',
        '2019-01-01 16:25:00'
    ],
                             freq=None).tz_localize('UTC')
    values = np.array([[
        53131, 20190101, 1610, 20190101, 910, 3, -111.17, 32.24, nan, 0.0,
        296.0, 0, 4.4, 'C', 0, 90.0, 0, nan, nan, 24, 0, 0.78, 0
    ],
                       [
                           53131, 20190101, 1615, 20190101, 915, 3, -111.17,
                           32.24, 3.3, 0.0, 183.0, 0, 4.0, 'C', 0, 87.0, 0,
                           nan, nan, 1182, 0, 0.36, 0
                       ],
                       [
                           53131, 20190101, 1620, 20190101, 920, 3, -111.17,
                           32.24, 3.5, 0.0, 340.0, 0, 4.3, 'C', 0, 83.0, 0,
                           nan, nan, 1183, 0, 0.53, 0
                       ],
                       [
                           53131, 20190101, 1625, 20190101, 925, 3, -111.17,
                           32.24, 4.0, 0.0, 393.0, 0, 4.8, 'C', 0, 81.0, 0,
                           nan, nan, 1223, 0, 0.64, 0
                       ]])
    expected = pd.DataFrame(values, columns=columns, index=index)
    for (col, _dtype) in zip(expected.columns, dtypes):
        expected[col] = expected[col].astype(_dtype)
    out = crn.read_crn(testfile)
    assert_frame_equal(out, expected)
def test_ineichen_series_perez_enhancement():
    times = pd.date_range(start='2014-06-24',
                          end='2014-06-25',
                          freq='3h',
                          tz='America/Phoenix')
    apparent_zenith = pd.Series(np.array([
        124.0390863, 113.38779941, 82.85457044, 46.0467599, 10.56413562,
        34.86074109, 72.41687122, 105.69538659, 124.05614124
    ]),
                                index=times)
    am = pd.Series(np.array([
        nan, nan, 6.97935524, 1.32355476, 0.93527685, 1.12008114, 3.01614096,
        nan, nan
    ]),
                   index=times)
    expected = pd.DataFrame(
        np.array([[0., 0., 0.], [0., 0., 0.],
                  [91.1249279, 321.16092171, 51.17628184],
                  [716.46580547, 888.9014706, 99.50500553],
                  [1053.42066073, 953.24925905, 116.3286895],
                  [863.54692748, 922.06124652, 106.9553658],
                  [271.06382275, 655.44925213, 73.05968076], [0., 0., 0.],
                  [0., 0., 0.]]),
        columns=['ghi', 'dni', 'dhi'],
        index=times)

    out = clearsky.ineichen(apparent_zenith, am, 3, perez_enhancement=True)
    assert_frame_equal(expected, out)
Exemple #15
0
def test_get_solarposition(expected_solpos, golden_mst):
    times = pd.date_range(datetime.datetime(2003, 10, 17, 12, 30, 30),
                          periods=1, freq='D', tz=golden_mst.tz)
    ephem_data = golden_mst.get_solarposition(times, temperature=11)
    ephem_data = np.round(ephem_data, 3)
    expected_solpos.index = times
    expected_solpos = np.round(expected_solpos, 3)
    assert_frame_equal(expected_solpos, ephem_data[expected_solpos.columns])
def test_from_epw():
    from test_epw import epw_testfile
    from pvlib.iotools import read_epw
    data, meta = read_epw(epw_testfile)
    loc = Location.from_epw(meta, data)
    assert loc.name is not None
    assert loc.altitude != 0
    assert loc.tz != 'UTC'
    assert_frame_equal(loc.weather, data)
def test_get_irradiance():
    system = tracking.SingleAxisTracker(max_angle=90,
                                        axis_tilt=30,
                                        axis_azimuth=180,
                                        gcr=2.0 / 7.0,
                                        backtrack=True)
    times = pd.date_range(start='20160101 1200-0700',
                          end='20160101 1800-0700',
                          freq='6H')
    # latitude=32, longitude=-111
    solar_position = pd.DataFrame(np.array([[
        55.36421554, 55.38851771, 34.63578446, 34.61148229, 172.32003763,
        -3.44516534
    ],
                                            [
                                                96.50000401, 96.50000401,
                                                -6.50000401, -6.50000401,
                                                246.91581654, -3.56292888
                                            ]]),
                                  columns=[
                                      'apparent_zenith', 'zenith',
                                      'apparent_elevation', 'elevation',
                                      'azimuth', 'equation_of_time'
                                  ],
                                  index=times)
    irrads = pd.DataFrame({
        'dni': [900, 0],
        'ghi': [600, 0],
        'dhi': [100, 0]
    },
                          index=times)
    solar_zenith = solar_position['apparent_zenith']
    solar_azimuth = solar_position['azimuth']

    # invalid warnings already generated in horizon test above,
    # no need to clutter test output here
    with np.errstate(invalid='ignore'):
        tracker_data = system.singleaxis(solar_zenith, solar_azimuth)

    # some invalid values in irradiance.py. not our problem here
    with np.errstate(invalid='ignore'):
        irradiance = system.get_irradiance(tracker_data['surface_tilt'],
                                           tracker_data['surface_azimuth'],
                                           solar_zenith, solar_azimuth,
                                           irrads['dni'], irrads['ghi'],
                                           irrads['dhi'])

    expected = pd.DataFrame(data=np.array(
        [[961.80070, 815.94490, 145.85580, 135.32820, 10.52757492],
         [nan, nan, nan, nan, nan]]),
                            columns=[
                                'poa_global', 'poa_direct', 'poa_diffuse',
                                'poa_sky_diffuse', 'poa_ground_diffuse'
                            ],
                            index=times)

    assert_frame_equal(irradiance, expected, check_less_precise=2)
def test_get_clearsky_haurwitz(times):
    tus = Location(32.2, -111, 'US/Arizona', 700, 'Tucson')
    clearsky = tus.get_clearsky(times, model='haurwitz')
    expected = pd.DataFrame(data=np.array([[0.],
                                           [242.30085588], [559.38247117],
                                           [384.6873791], [0.]]),
                            columns=['ghi'],
                            index=times)
    assert_frame_equal(expected, clearsky)
def test_from_tmy_2():
    from test_tmy import TMY2_TESTFILE
    from pvlib.iotools import read_tmy2
    data, meta = read_tmy2(TMY2_TESTFILE)
    loc = Location.from_tmy(meta, data)
    assert loc.name is not None
    assert loc.altitude != 0
    assert loc.tz != 'UTC'
    assert_frame_equal(loc.weather, data)
Exemple #20
0
def test_liujordan():
    expected = pd.DataFrame(np.array(
        [[863.859736967, 653.123094076, 220.65905025]]),
                            columns=['ghi', 'dni', 'dhi'],
                            index=[0])
    out = irradiance.liujordan(pd.Series([10]),
                               pd.Series([0.5]),
                               pd.Series([1.1]),
                               dni_extra=1400)
    assert_frame_equal(out, expected)
def test_prepare_inputs_from_poa(sapm_dc_snl_ac_system, location, weather,
                                 total_irrad):
    data = weather.copy()
    data[['poa_global', 'poa_diffuse', 'poa_direct']] = total_irrad
    mc = ModelChain(sapm_dc_snl_ac_system, location)
    mc.prepare_inputs_from_poa(data)
    # weather attribute
    assert_frame_equal(mc.weather, weather)
    # total_irrad attribute
    assert_frame_equal(mc.total_irrad, total_irrad)
def test_campbell_norman():
    expected = pd.DataFrame(np.array(
        [[863.859736967, 653.123094076, 220.65905025]]),
                            columns=['ghi', 'dni', 'dhi'],
                            index=[0])
    out = irradiance.campbell_norman(pd.Series([10]),
                                     pd.Series([0.5]),
                                     pd.Series([109764.21013135818]),
                                     dni_extra=1400)
    assert_frame_equal(out, expected)
def test_get_clearsky_simplified_solis(times):
    tus = Location(32.2, -111, 'US/Arizona', 700, 'Tucson')
    clearsky = tus.get_clearsky(times, model='simplified_solis')
    expected = pd.DataFrame(data=np.array(
        [[0., 0., 0.], [70.00146271, 638.01145669, 236.71136245],
         [101.69729217, 852.51950946, 577.1117803],
         [86.1679965, 755.98048017, 385.59586091], [0., 0., 0.]]),
                            columns=['dhi', 'dni', 'ghi'],
                            index=times)
    expected = expected[['ghi', 'dni', 'dhi']]
    assert_frame_equal(expected, clearsky, check_less_precise=2)
Exemple #24
0
def test_get_solarposition_no_kwargs(expected_solpos, golden):
    times = pd.date_range(datetime.datetime(2003, 10, 17, 13, 30, 30),
                          periods=1,
                          freq='D',
                          tz=golden.tz)
    ephem_data = solarposition.get_solarposition(times, golden.latitude,
                                                 golden.longitude)
    expected_solpos.index = times
    expected_solpos = np.round(expected_solpos, 2)
    ephem_data = np.round(ephem_data, 2)
    assert_frame_equal(expected_solpos, ephem_data[expected_solpos.columns])
Exemple #25
0
def test_scale_voltage_current_power():
    data = pd.DataFrame(
        np.array([[2, 1.5, 10, 8, 12, 0.5, 1.5]]),
        columns=['i_sc', 'i_mp', 'v_oc', 'v_mp', 'p_mp', 'i_x', 'i_xx'],
        index=[0])
    expected = pd.DataFrame(
        np.array([[6, 4.5, 20, 16, 72, 1.5, 4.5]]),
        columns=['i_sc', 'i_mp', 'v_oc', 'v_mp', 'p_mp', 'i_x', 'i_xx'],
        index=[0])
    out = pvsystem.scale_voltage_current_power(data, voltage=2, current=3)
    assert_frame_equal(out, expected, check_less_precise=5)
def test_simplified_solis_pressure():
    expected = pd.DataFrame(np.array(
        [[964.26930718, 1067.96543669, 127.22841797],
         [961.88811874, 1066.36847963, 128.1402539],
         [959.58112234, 1064.81837558, 129.0304193]]),
                            columns=['dni', 'ghi', 'dhi'])
    expected = expected[['ghi', 'dni', 'dhi']]

    out = clearsky.simplified_solis(80,
                                    pressure=pd.Series([95000, 98000, 101000]))
    assert_frame_equal(expected, out)
Exemple #27
0
def test_spa_c_physical_dst(expected_solpos, golden):
    times = pd.date_range(datetime.datetime(2003, 10, 17, 13, 30, 30),
                          periods=1,
                          freq='D',
                          tz=golden.tz)
    ephem_data = solarposition.spa_c(times,
                                     golden.latitude,
                                     golden.longitude,
                                     pressure=82000,
                                     temperature=11)
    expected_solpos.index = times
    assert_frame_equal(expected_solpos, ephem_data[expected_solpos.columns])
Exemple #28
0
def test_sun_rise_set_transit_spa(expected_rise_set_spa, golden):
    # solution from NREL SAP web calculator
    south = Location(-35.0, 0.0, tz='UTC')
    times = pd.DatetimeIndex(
        [datetime.datetime(1996, 7, 5, 0),
         datetime.datetime(2004, 12, 4, 0)]).tz_localize('UTC')
    sunrise = pd.DatetimeIndex([
        datetime.datetime(1996, 7, 5, 7, 8, 15),
        datetime.datetime(2004, 12, 4, 4, 38, 57)
    ]).tz_localize('UTC').tolist()
    sunset = pd.DatetimeIndex([
        datetime.datetime(1996, 7, 5, 17, 1, 4),
        datetime.datetime(2004, 12, 4, 19, 2, 3)
    ]).tz_localize('UTC').tolist()
    transit = pd.DatetimeIndex([
        datetime.datetime(1996, 7, 5, 12, 4, 36),
        datetime.datetime(2004, 12, 4, 11, 50, 22)
    ]).tz_localize('UTC').tolist()
    frame = pd.DataFrame(
        {
            'sunrise': sunrise,
            'sunset': sunset,
            'transit': transit
        },
        index=times)

    result = solarposition.sun_rise_set_transit_spa(times,
                                                    south.latitude,
                                                    south.longitude,
                                                    delta_t=65.0)
    result_rounded = pd.DataFrame(index=result.index)
    # need to iterate because to_datetime does not accept 2D data
    # the rounding fails on pandas < 0.17
    for col, data in result.iteritems():
        result_rounded[col] = data.dt.round('1s')

    assert_frame_equal(frame, result_rounded)

    # test for Golden, CO compare to NREL SPA
    result = solarposition.sun_rise_set_transit_spa(
        expected_rise_set_spa.index,
        golden.latitude,
        golden.longitude,
        delta_t=65.0)

    # round to nearest minute
    result_rounded = pd.DataFrame(index=result.index)
    # need to iterate because to_datetime does not accept 2D data
    for col, data in result.iteritems():
        result_rounded[col] = data.dt.round('s').tz_convert('MST')

    assert_frame_equal(expected_rise_set_spa, result_rounded)
Exemple #29
0
def test_ephemeris_physical_no_tz(expected_solpos, golden_mst):
    times = pd.date_range(datetime.datetime(2003, 10, 17, 19, 30, 30),
                          periods=1,
                          freq='D')
    ephem_data = solarposition.ephemeris(times,
                                         golden_mst.latitude,
                                         golden_mst.longitude,
                                         pressure=82000,
                                         temperature=11)
    expected_solpos.index = times
    expected_solpos = np.round(expected_solpos, 2)
    ephem_data = np.round(ephem_data, 2)
    assert_frame_equal(expected_solpos, ephem_data[expected_solpos.columns])
Exemple #30
0
def test_pyephem_physical(expected_solpos, golden_mst):
    times = pd.date_range(datetime.datetime(2003, 10, 17, 12, 30, 30),
                          periods=1,
                          freq='D',
                          tz=golden_mst.tz)
    ephem_data = solarposition.pyephem(times,
                                       golden_mst.latitude,
                                       golden_mst.longitude,
                                       pressure=82000,
                                       temperature=11)
    expected_solpos.index = times
    assert_frame_equal(expected_solpos.round(2),
                       ephem_data[expected_solpos.columns].round(2))