Spaces:
Sleeping
Sleeping
# -*- coding: utf-8 -*- | |
""" | |
Created on Tue Mar 14 08:58:24 2023 | |
@author: BorowyP | |
""" | |
import os | |
from PIL import Image | |
import matplotlib.pyplot as plt | |
import numpy as np | |
import pandas as pd | |
import xarray as xr | |
import panel as pn | |
import panel.widgets as pnw | |
import hvplot.pandas | |
import hvplot.xarray | |
homefolder = os.getcwd() | |
os.chdir(homefolder) | |
def list_folder(): | |
for i in range(len(os.listdir(os.getcwd()))): | |
print(str(i) + ' ' +str(os.listdir(os.getcwd())[i])) | |
def get_path(standort, k_nk, mA_oA): | |
os.chdir(homefolder), | |
os.chdir('Stahlrahmen-Fotos') | |
os.chdir(standort), | |
os.chdir(k_nk), | |
os.chdir(mA_oA) | |
return os.getcwd() | |
# create relative Path's to folder of directory | |
glienig_k_oA = get_path('Glienig', 'K', 'oA') | |
grliebitz_k_oA = get_path('GrLiebitz', 'K', 'oA') | |
krausnick_k_oA = get_path('Krausnick', 'K', 'oA') | |
halbe_k_oA = get_path('Halbe', 'K', 'oA') | |
spreeau_k_oA = get_path('Spreeau', 'K', 'oA') | |
hberg_k_oA = get_path('Hangelsberg', 'K', 'oA') | |
glienig_nk_oA = get_path('Glienig', 'nK', 'oA') | |
grliebitz_nk_oA = get_path('GrLiebitz', 'nK', 'oA') | |
krausnick_nk_oA = get_path('Krausnick', 'nK', 'oA') | |
halbe_nk_oA = get_path('Halbe', 'nK', 'oA') | |
spreeau_nk_oA = get_path('Spreeau', 'nK', 'oA') | |
hberg_nk_oA = get_path('Hangelsberg', 'nK', 'oA') | |
glienig_k_mA = get_path('Glienig', 'K', 'mA') | |
grliebitz_k_mA = get_path('GrLiebitz', 'K', 'mA') | |
krausnick_k_mA = get_path('Krausnick', 'K', 'mA') | |
halbe_k_mA = get_path('Halbe', 'K', 'mA') | |
spreeau_k_mA = get_path('Spreeau', 'K', 'mA') | |
hberg_k_mA = get_path('Hangelsberg', 'K', 'mA') | |
glienig_nk_mA = get_path('Glienig', 'nK', 'mA') | |
grliebitz_nk_mA = get_path('GrLiebitz', 'nK', 'mA') | |
krausnick_nk_mA = get_path('Krausnick', 'nK', 'mA') | |
halbe_nk_mA = get_path('Halbe', 'nK', 'mA') | |
spreeau_nk_mA = get_path('Spreeau', 'nK', 'mA') | |
hberg_nk_mA = get_path('Hangelsberg', 'nK', 'mA') | |
# create a multidemensional xarray of all pictures located in the relative directory | |
def create_xarray(relative_path): | |
#print(relative_path) | |
#print(os.getcwd()) | |
os.chdir(relative_path) | |
#print(os.getcwd()) | |
liste = os.listdir(os.getcwd()) | |
rgb_list = [] | |
for i in range(len(liste)): | |
#print(liste[i]) | |
im = plt.imread(liste[i]) | |
x = np.arange(len(im[0])) | |
y = np.arange(len(im)) | |
channel = np.arange(3) | |
im_xr = xr.DataArray(im,coords={'y': y,'x': x,'channel': channel},dims=["y", "x", "channel"]) | |
rgb_list.append(im_xr) | |
#print(str(liste[i]) + ' ' + | |
# 'y-Achse: ' + ' ' + str(len(im)) + ', ' + | |
# 'x-Achse: ' + ' ' + str(len(im[0])) + ', ' + 'channel: ' + ' ' + str(len(im[0][0]))) | |
#print(' ') | |
x = np.arange(len(rgb_list[0][0])) | |
y = np.arange(len(rgb_list[0])) | |
channel = np.arange(3) | |
time = np.arange(len(rgb_list)) | |
xar = xr.DataArray(rgb_list, | |
dims=("time", | |
"y", "x", "channel") | |
, | |
coords={"x": x, | |
"y": y, | |
"channel": channel, | |
"time" : time}, | |
name='rgb') | |
return xar | |
# plot the xarray | |
def plot(xar): | |
return xar.hvplot.rgb(x='x', y='y', bands='channel', data_aspect=1, flip_yaxis=True, xaxis=False, yaxis=None, widget_type='scrubber', | |
widget_location='bottom') | |
# widgets for interactive | |
auflage_button = pn.widgets.RadioButtonGroup( | |
name='Auflage', | |
options=['mit Auflage', 'ohne Auflage'], | |
button_type='success') | |
k_nk_button = pn.widgets.RadioButtonGroup( | |
name='k_nk', | |
options=['k', 'nk'], | |
button_type='success') | |
Stndrt_button = pn.widgets.RadioButtonGroup( | |
name='Standort', | |
options=['Glienig', 'Groß Liebitz', 'Krausnick', 'Hangelsberg', 'Spreeau', 'Halbe'], | |
button_type='success') | |
# create an interactive dataframe to assign the widgets and get the desired actions | |
param_df = pd.DataFrame({'Standort' : [ | |
'Glienig', | |
'Glienig', | |
'Glienig', | |
'Glienig', | |
'Groß Liebitz', | |
'Groß Liebitz', | |
'Groß Liebitz', | |
'Groß Liebitz', | |
'Krausnick', | |
'Krausnick', | |
'Krausnick', | |
'Krausnick', | |
'Hangelsberg', | |
'Hangelsberg', | |
'Hangelsberg', | |
'Hangelsberg', | |
'Spreeau', | |
'Spreeau', | |
'Spreeau', | |
'Spreeau', | |
'Halbe', | |
'Halbe', | |
'Halbe', | |
'Halbe'], | |
'k_nk' : [ | |
'k', | |
'k', | |
'nk', | |
'nk', | |
'k', | |
'k', | |
'nk', | |
'nk', | |
'k', | |
'k', | |
'nk', | |
'nk', | |
'k', | |
'k', | |
'nk', | |
'nk', | |
'k', | |
'k', | |
'nk', | |
'nk', | |
'k', | |
'k', | |
'nk', | |
'nk', | |
], | |
'Auflage' : [ | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
'mit Auflage', | |
'ohne Auflage', | |
] | |
}) | |
# make interactive with hvplot.pandas | |
param_dfi = param_df.interactive() | |
param_df_pipe = param_dfi[ | |
(param_dfi.Standort == Stndrt_button) & | |
(param_dfi.k_nk == k_nk_button) & | |
(param_dfi.Auflage == auflage_button) | |
] | |
# make anything interactive with pipe | |
def callback(param_df_pipe): | |
if Stndrt_button.value == 'Glienig' and k_nk_button.value == 'k' and auflage_button.value == 'mit Auflage': | |
return create_xarray(glienig_k_mA).pipe(plot) | |
if Stndrt_button.value == 'Glienig' and k_nk_button.value == 'k' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(glienig_k_oA).pipe(plot) | |
if Stndrt_button.value == 'Glienig' and k_nk_button.value == 'nk' and auflage_button.value == 'mit Auflage': | |
return create_xarray(glienig_nk_mA).pipe(plot) | |
if Stndrt_button.value == 'Glienig' and k_nk_button.value == 'nk' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(glienig_nk_oA).pipe(plot) | |
###################################################################################################################### | |
if Stndrt_button.value == 'Groß Liebitz' and k_nk_button.value == 'k' and auflage_button.value == 'mit Auflage': | |
return create_xarray(grliebitz_k_mA).pipe(plot) | |
if Stndrt_button.value == 'Groß Liebitz' and k_nk_button.value == 'k' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(grliebitz_k_oA).pipe(plot) | |
if Stndrt_button.value == 'Groß Liebitz' and k_nk_button.value == 'nk' and auflage_button.value == 'mit Auflage': | |
return create_xarray(grliebitz_nk_mA).pipe(plot) | |
if Stndrt_button.value == 'Groß Liebitz' and k_nk_button.value == 'nk' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(grliebitz_nk_oA).pipe(plot) | |
####################################################################################################################### | |
if Stndrt_button.value == 'Krausnick' and k_nk_button.value == 'k' and auflage_button.value == 'mit Auflage': | |
return create_xarray(krausnick_k_mA).pipe(plot) | |
if Stndrt_button.value == 'Krausnick' and k_nk_button.value == 'k' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(krausnick_k_oA).pipe(plot) | |
if Stndrt_button.value == 'Krausnick' and k_nk_button.value == 'nk' and auflage_button.value == 'mit Auflage': | |
return create_xarray(krausnick_nk_mA).pipe(plot) | |
if Stndrt_button.value == 'Krausnick' and k_nk_button.value == 'nk' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(krausnick_nk_oA).pipe(plot) | |
####################################################################################################################### | |
if Stndrt_button.value == 'Hangelsberg' and k_nk_button.value == 'k' and auflage_button.value == 'mit Auflage': | |
return create_xarray(hberg_k_mA).pipe(plot) | |
if Stndrt_button.value == 'Hangelsberg' and k_nk_button.value == 'k' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(hberg_k_oA).pipe(plot) | |
if Stndrt_button.value == 'Hangelsberg' and k_nk_button.value == 'nk' and auflage_button.value == 'mit Auflage': | |
return create_xarray(hberg_nk_mA).pipe(plot) | |
if Stndrt_button.value == 'Hangelsberg' and k_nk_button.value == 'nk' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(hberg_nk_oA).pipe(plot) | |
####################################################################################################################### | |
if Stndrt_button.value == 'Spreeau' and k_nk_button.value == 'k' and auflage_button.value == 'mit Auflage': | |
return create_xarray(spreeau_k_mA).pipe(plot) | |
if Stndrt_button.value == 'Spreeau' and k_nk_button.value == 'k' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(spreeau_k_oA).pipe(plot) | |
if Stndrt_button.value == 'Spreeau' and k_nk_button.value == 'nk' and auflage_button.value == 'mit Auflage': | |
return create_xarray(spreeau_nk_mA).pipe(plot) | |
if Stndrt_button.value == 'Spreeau' and k_nk_button.value == 'nk' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(spreeau_nk_oA).pipe(plot) | |
######################################################################################################################## | |
if Stndrt_button.value == 'Halbe' and k_nk_button.value == 'k' and auflage_button.value == 'mit Auflage': | |
return create_xarray(halbe_k_mA).pipe(plot) | |
if Stndrt_button.value == 'Halbe' and k_nk_button.value == 'k' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(halbe_k_oA).pipe(plot) | |
if Stndrt_button.value == 'Halbe' and k_nk_button.value == 'nk' and auflage_button.value == 'mit Auflage': | |
return create_xarray(halbe_nk_mA).pipe(plot) | |
if Stndrt_button.value == 'Halbe' and k_nk_button.value == 'nk' and auflage_button.value == 'ohne Auflage': | |
return create_xarray(halbe_nk_oA).pipe(plot) | |
stahlrahmen = pn.Row(param_df_pipe.pipe(callback), pn.Column(pn.pane.Markdown('## Stahlrahmen'), | |
pn.pane.Markdown('Quadratische Stahlrahmen (Kantenlänge ca. 1x1m) zur Bestimmung der Abbauraten (Oberflächenmessungen) der Streuschicht.')) | |
) | |
template = pn.template.FastListTemplate( | |
title='Stahlrahmen', | |
sidebar=[pn.pane.Markdown( | |
"## Einstellungen"), | |
'Standort',Stndrt_button, | |
'Gekalkt/ungekalkt', k_nk_button, | |
'Auflage',auflage_button | |
], | |
main=[pn.pane.Markdown( | |
"## Streufall Stahlrahmen"), | |
stahlrahmen#.panel() | |
], | |
accent_base_color="#88d8b0", | |
header_background="#88d8b0", | |
) | |
template.servable(); | |
#print('fertig!') | |
# To launch this dashboard as a web server, we can simply run | |
# cd C:\Users\BorowyP\Desktop\Dashboard-Preasi\Stahlrahmen | |
# panel serve 20230313_Stahlrahmen_Docker_relative_path.ipynb --autoreload |