trnslator/tests/test_energyseries.py
2020-11-02 10:43:07 -05:00

149 lines
3.3 KiB
Python

import os
import trnslator as tr
import pandas as pd
import pytest
from path import Path
from trnslator import EnergySeries, get_eplus_dirs, settings
import numpy as np
@pytest.fixture(
scope="module",
params=[
get_eplus_dirs(settings.ep_version) / "ExampleFiles" / "5ZoneNightVent1.idf",
get_eplus_dirs(settings.ep_version)
/ "ExampleFiles"
/ "BasicsFiles"
/ "AdultEducationCenter.idf",
],
)
def energy_series(config, request):
from trnslator import ReportData
outputs = {
"ep_object": "Output:Variable".upper(),
"kwargs": {
"Key_Value": "OCCUPY-1",
"Variable_Name": "Schedule Value",
"Reporting_Frequency": "Hourly",
},
}
wf = "tests/input_data/CAN_PQ_Montreal.Intl.AP.716270_CWEC.epw"
sql = tr.run_eplus(
request.param,
weather_file=wf,
output_report="sql_file",
prep_outputs=[outputs],
annual=True,
expandobjects=True,
)
report = ReportData.from_sqlite(
sql,
table_name=("Heating:Electricity", "Heating:Gas", "Heating:DistrictHeating"),
)
hl = EnergySeries.from_sqlite(
report,
name="Heating",
normalize=False,
sort_values=False,
concurrent_sort=False,
to_units="kWh",
)
yield hl
@pytest.fixture(
params=(["Water Heater Tank Temperature", "WaterSystems:EnergyTransfer"])
)
def rd(request):
from trnslator import ReportData
file = Path("tests/input_data/trnsys/HeatPumpWaterHeater.sqlite")
rd = ReportData.from_sqlite(file, table_name=request.param)
assert not rd.empty
yield rd
def test_EnergySeries(rd):
import matplotlib.pyplot as plt
from trnslator import EnergySeries
es = EnergySeries.from_sqlite(rd)
es.plot()
plt.show()
print(es)
@pytest.mark.parametrize("kind", ["polygon", "surface", "contour"])
def test_plot_3d(energy_series, kind):
hl = energy_series.copy()
hl.plot3d(
save=True,
axis_off=False,
kind=kind,
cmap="Reds",
fig_width=4,
fig_height=4,
edgecolors="grey",
linewidths=0.01,
)
@pytest.mark.skipif(
os.environ.get("CI", "False").lower() == "true",
reason="Skipping this test on CI environment.",
)
def test_plot_2d(energy_series):
hl = energy_series.copy()
hl.plot2d(
save=True,
axis_off=False,
cmap="Reds",
subplots=False,
fig_width=6,
fig_height=2,
edgecolors="k",
linewidths=0.5,
filename=hl.name + "_heatmap",
)
@pytest.fixture(scope="module")
def from_csv(config):
file = "tests/input_data/test_profile.csv"
df = pd.read_csv(file, index_col=[0], names=["Heat"])
ep = tr.EnergySeries(
df.Heat,
units="BTU/hour",
frequency="1H",
to_units="kW",
sort_values=False,
use_timeindex=True,
)
# ep = ep.unit_conversion(to_units='kW')
yield ep
@pytest.mark.skipif(
os.environ.get("CI", "False").lower() == "true",
reason="Skipping this test on CI environment.",
)
def test_discretize(from_csv):
epc = from_csv.copy()
res = epc.discretize_tsam()
res.plot()
def test_discretize_tsam(from_csv):
ep = from_csv.copy()
ldc_disc = ep.discretize_tsam(noTypicalPeriods=10)
ldc_disc.plot2d(subplots=False)