Skip to content

Commit

Permalink
Modified table to look nicer and added thc chart
Browse files Browse the repository at this point in the history
  • Loading branch information
jenny-nyx committed Aug 10, 2023
1 parent 2fd99cf commit 06c59f8
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 4 deletions.
5 changes: 3 additions & 2 deletions omf/models/hostingCapacity.html
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@
<!--<div id="copyrightNotice" style="width:1000px; margin:-25px auto 10px auto; padding-left:5px; color:gray">PVWatts &copy; was developed by the <a href="http://pvwatts.nrel.gov/">National Renewable Energy Lab</a></div>-->
{{ omfRunDebugBlock }}
{% if modelStatus == 'finished' %}
<style>td, th {padding:7 0 5 20;text-align: left;font-size:0.8em; border: 1px solid #cccccc;} </style>
<div id="output">
<p class="reportTitle">Mohca Hosting Capacity Distribution</p>
<div id="mohcaHistogramChart" class="tightContent">
Expand All @@ -108,7 +109,7 @@
</div>
<p class="reportTitle">Mohca Full Hosting Capacity Data Table</p>
<div id="mohcaHostingCapacityTable" class="tightContent">
<table style="width:100%">
<table style='margin:5px;width:990px'>
<tr>
{% for header in allOutputDataDict["mohcaHCTableHeadings"] %}
<th>{{ header }}</th>
Expand Down Expand Up @@ -143,7 +144,7 @@
</script>
</div>
<p class="reportTitle">Traditional Hosting Capacity Full Data Table</p>
<div id="traditionalHostingCapacityTable" class="tightContent">
<div id="traditionalHostingCapacityTable" class="tightContent" style="height:300px; overflow-y: scroll;">
<table style="width:100%">
<tr>
{% for header in allOutputDataDict["traditionalHCTableHeadings"] %}
Expand Down
41 changes: 39 additions & 2 deletions omf/models/hostingCapacity.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,33 @@
modelName, template = __neoMetaModel__.metadata(__file__)
hidden = False

def bar_chart_coloring( row ):
return 'orange' if row['thermal_violation'] and not row['voltage_violation'] else (
'green' if not row['thermal_violation'] and row['voltage_violation'] else 'red')

def colorby( hc_color_dict ):
''' generate a colorby CSV/JSON that works with omf.geo map interface.
To use, set omd['attachments'] = function JSON output'''
attachments_keys = {
"coloringFiles": {
"microgridColoring.csv": {
"csv": "<content>",
"colorOnLoadColumnIndex": "1" # color by default
}
}
}
hc_keys = hc_color_dict.keys()
color_step = float(1/len(hc_keys))
output_csv = 'bus,color\n'
for i, hc_key in enumerate(hc_color_dict):
my_color = i * color_step
hc_ob = hc_color_dict[hc_key]
all_items = hc_ob['loads'] + hc_ob['gen_obs_existing'] + [hc_ob['gen_bus']]
for item in all_items:
output_csv += item + ',' + str(my_color) + '\n'
attachments_keys['coloringFiles']['hostingCapColoring.csv']['csv'] = output_csv
return attachments_keys

def work(modelDir, inputDict):
outData = {}
# mohca data-driven hosting capacity
Expand Down Expand Up @@ -51,9 +78,19 @@ def work(modelDir, inputDict):
opendss.dssConvert.treeToDss(tree, pJoin(modelDir, 'circuit.dss'))
traditionalHCResults = opendss.hosting_capacity_all(pJoin(modelDir, 'circuit.dss'), int(inputDict["traditionalHCSteps"]), int(inputDict["traditionalHCkW"]))
tradHCDF = pd.DataFrame(traditionalHCResults)
tradHCDF['plot_color'] = tradHCDF.apply ( lambda row: bar_chart_coloring(row), axis=1 )
traditionalHCFigure = px.bar( tradHCDF, x='bus', y='max_kw', barmode='group', color='plot_color', color_discrete_map={ 'red': 'red', 'orange': 'orange', 'green': 'green'}, template='simple_white' )
traditionalHCFigure.update_xaxes(categoryorder='array', categoryarray=tradHCDF.bus.values)
colorToKey = {'orange':'thermal_violation', 'green': 'voltage_violation', 'red': 'both_violation'}
traditionalHCFigure.for_each_trace(lambda t: t.update(name = colorToKey[t.name],
legendgroup = colorToKey[t.name],
hovertemplate = t.hovertemplate.replace(t.name, colorToKey[t.name])
)
)
tradHCDF.drop(tradHCDF.columns[len(tradHCDF.columns)-1], axis=1, inplace=True)
omf.geo.map_omd(pJoin(modelDir, feederName), modelDir, open_browser=False )
outData['traditionalHCMap'] = open( pJoin( modelDir, "geoJson_offline.html"), 'r' ).read()
#outData['traditionalGraphData'] = json.dumps( traditionalHCFigure, cls=py.utils.PlotlyJSONEncoder )
outData['traditionalHCMap'] = open( pJoin( modelDir, "geoJson_offline.html"), 'r' ).read()
outData['traditionalGraphData'] = json.dumps( traditionalHCFigure, cls=py.utils.PlotlyJSONEncoder )
outData['traditionalHCTableHeadings'] = tradHCDF.columns.values.tolist()
outData['traditionalHCTableValues'] = ( list( tradHCDF.itertuples(index=False, name=None)))
# write final outputs
Expand Down

0 comments on commit 06c59f8

Please sign in to comment.