import numpy as np
from joblib import dump, load
import pandas as pd
import gradio as gr
import warnings
import shap as shap
model = load('IFEnerg__7200s_26_04_2022_22_10alle_variablen_nachJonas_ohneprozetc_top4HZ.joblib')
#turning the arguments into a numpy array
def energie(Stahlsorte, Halbzeug_Typ, TotalDuration_min, IFTotalTime_min, IFPowerOnTime_min, IFTappingWeight, IFTappingTemperature, C, Si, Mn, P, S, Co, Cr, Mo, V, W, Ni, Nb, Al, RS02010_000004_FE_MO, RS02010_000001_FE_CRCARBURE, RS02010_000016_FE_CR006, RS02010_000003_FE_SI, RS02010_000013_FE_MANGANCARBURE, RS02010_000005_FE_V80, RS02010_000018_KOHLE, RS02010_000007_FE_W75_80, RS02020_000044_CHROMPAKETE, RS02020_000001_HACKSCHROTT, RS02020_000072_HACKSCHROTT, RS02020_000034_2343, RS02020_000013_2367, RS02020_000029_2344, RS02020_000048_2343, RS02020_000072_Manganarm, RS02020_000021_2365, RS02020_000016_2379, RS02020_000063_2345, RS02020_000513_2367, RS02020_000534_2343, RS02020_000043_Hackschrott, RS02020_000109_2379, RS02020_000006_CHROM_SCHROTT, RS02020_000049_2344, RS02020_000112_CR_SCHROTT, RS02020_000114_CHROM_SCHROTT, RS02020_000041_2379, RS02020_000563_2345, RS02020_000516_2379, RS02020_000564_2895, RS02020_000044_ChromSchrott, RS02020_000004_3343, RS02020_000002_3355, RS02020_000073_3343, RS02020_000043_KUPOLSCHROTT, RS02030_000437_4112, RS02030_000031_2343, RS02030_000039_2367, RS02030_000032_2344, RS02030_000043_2379, RS02030_000052_UMSCHMELZBLOCK, RS02030_000072_2601, RS02030_000163_2897, RS02030_000071_4112, RS02030_000175_4192, RS02030_000326_4197, RS02030_000269_2360, RS02030_000121_2895, RS02030_000087_2695, RS02030_000161_4034, RS02030_000164_2345, RS02030_000035_2360, RS02030_000171_4125, RS02030_000063_2519, RS02030_000009_2080, RS02030_000300_2897, RS02030_000034_2357, RS02030_000033_2345, RS02030_000038_2365, RS02030_000393_4057, RS02030_000281_2360, RS02030_000389_4021, RS02030_000045_2390, RS02030_000345_2419, RS02030_000415_2389, RS02030_000051_4125, RS02030_000144_3343, RS02030_000148_3355, RS02030_000145_3344, RS02030_000141_3333, RS02030_000179_3344):
x = np.array([Stahlsorte, Halbzeug_Typ, TotalDuration_min, IFTotalTime_min, IFPowerOnTime_min, IFTappingWeight, IFTappingTemperature, C, Si, Mn, P, S, Co, Cr, Mo, V, W, Ni, Nb, Al, RS02010_000004_FE_MO, RS02010_000001_FE_CRCARBURE, RS02010_000016_FE_CR006, RS02010_000003_FE_SI, RS02010_000013_FE_MANGANCARBURE, RS02010_000005_FE_V80, RS02010_000018_KOHLE, RS02010_000007_FE_W75_80, RS02020_000044_CHROMPAKETE, RS02020_000001_HACKSCHROTT, RS02020_000072_HACKSCHROTT, RS02020_000034_2343, RS02020_000013_2367, RS02020_000029_2344, RS02020_000048_2343, RS02020_000072_Manganarm, RS02020_000021_2365, RS02020_000016_2379, RS02020_000063_2345, RS02020_000513_2367, RS02020_000534_2343, RS02020_000043_Hackschrott, RS02020_000109_2379, RS02020_000006_CHROM_SCHROTT, RS02020_000049_2344, RS02020_000112_CR_SCHROTT, RS02020_000114_CHROM_SCHROTT, RS02020_000041_2379, RS02020_000563_2345, RS02020_000516_2379, RS02020_000564_2895, RS02020_000044_ChromSchrott, RS02020_000004_3343, RS02020_000002_3355, RS02020_000073_3343, RS02020_000043_KUPOLSCHROTT, RS02030_000437_4112, RS02030_000031_2343, RS02030_000039_2367, RS02030_000032_2344, RS02030_000043_2379, RS02030_000052_UMSCHMELZBLOCK, RS02030_000072_2601, RS02030_000163_2897, RS02030_000071_4112, RS02030_000175_4192, RS02030_000326_4197, RS02030_000269_2360, RS02030_000121_2895, RS02030_000087_2695, RS02030_000161_4034, RS02030_000164_2345, RS02030_000035_2360, RS02030_000171_4125, RS02030_000063_2519, RS02030_000009_2080, RS02030_000300_2897, RS02030_000034_2357, RS02030_000033_2345, RS02030_000038_2365, RS02030_000393_4057, RS02030_000281_2360, RS02030_000389_4021, RS02030_000045_2390, RS02030_000345_2419, RS02030_000415_2389, RS02030_000051_4125, RS02030_000144_3343, RS02030_000148_3355, RS02030_000145_3344, RS02030_000141_3333, RS02030_000179_3344])
prediction = model.predict(x.reshape(1, -1))
predictionround = np.around(prediction, decimals=0)
return predictionround
title = "Optirodig - ML v0.19"
description = """
Prognose des Energieverbrauches (kWh) beim Schmelzen von Stählen im Induktionsofen mit maschinellem Lernen.
Bzgl. der Stahlsorte und dem Halbzeug-Typ gelten folgende Labels für die Auswahl:
Halbzeug-Typ (Label)
1220V = 0 | 1320V67 = 1 | 1420V677 = 2 | 2T = 3
Stahlsorte (Label)
Warmarbeitsstahl: 1.2343 = 0 |
Werkzeugstahl: 1.2379 = 1 |
Schnellarbeitsstahl: 1.3343 = 2
"""
outputs = gr.outputs.Textbox(type="auto", label='Prognostizierter Energieverbrauch in kWh')
#gradio.inputs.Dropdown(self, choices, type="value", default=None, label=None, optional=False)
input_Stahlsorte = gr.inputs.Dropdown(["0", "1", "2"], type="index", default='1', label='Welche Stahlsorte soll gegossen werden (Label)?', optional=False)
input_halbzeug = gr.inputs.Dropdown(['0','1','2','3'], type="index", default='0', label='Welcher Halbzeug-Typ soll gegossen werden (Label)?', optional=False)
input_TotalDuration_min = gr.inputs.Number(127, 'TotalDuration_min [min]', optional=False)
input_IFTotalTime_min = gr.inputs.Number(98, 'IFTotalTime_min [min]', optional=False)
input_IFPowerOnTime_min = gr.inputs.Number(80, 'IFPowerOnTime_min [min]', optional=False)
input_IFTappingWeight = gr.inputs.Number(6735, 'IFTappingWeight [kg]', optional=False)
input_IFTappingTemperature = gr.inputs.Number(1525, 'IFTappingTemperature [°C]', optional=False)
input_C = gr.inputs.Number(1.5, 'C [%]', optional=False)
input_Si = gr.inputs.Number(0.4, 'Si [%]', optional=False)
input_Mn = gr.inputs.Number(0.45, 'Mn [%]', optional=False)
input_P = gr.inputs.Number(0.02, 'P [%]', optional=False)
input_S = gr.inputs.Number(0.1, 'S [%]', optional=False)
input_Co = gr.inputs.Number(0.02, 'Co [%]', optional=False)
input_Cr = gr.inputs.Number(11.2, 'Cr [%]', optional=False)
input_Mo = gr.inputs.Number(0.71, 'Mo [%]', optional=False)
input_V = gr.inputs.Number(0.67, 'V [%]', optional=False)
input_W = gr.inputs.Number(0.05, 'W [%]', optional=False)
input_Ni = gr.inputs.Number(0.2, 'Ni [%]', optional=False)
input_Nb = gr.inputs.Number(0.01, 'Nb [%]', optional=False)
input_Al = gr.inputs.Number(0.02, 'Al [%]', optional=False)
input_02010_000004_FE_MO = gr.inputs.Number(0, '02010_000004_FE_MO [kg]', optional=False)
input_02010_000001_FE_CRCARBURE = gr.inputs.Number(0, '02010_000001_FE_CRCARBURE [kg]', optional=False)
input_02010_000016_FE_CR006 = gr.inputs.Number(0, '02010_000016_FE_CR006 [kg]', optional=False)
input_02010_000003_FE_SI = gr.inputs.Number(0, '02010_000003_FE_SI [kg]', optional=False)
input_02010_000013_FE_MANGANCARBURE = gr.inputs.Number(0, '02010_000013_FE_MANGANCARBURE [kg]', optional=False)
input_02010_000005_FE_V80 = gr.inputs.Number(0, '02010_000005_FE_V80 [kg]', optional=False)
input_02010_000018_KOHLE = gr.inputs.Number(0, '02010_000018_KOHLE [kg]', optional=False)
input_02010_000007_FE_W75_80 = gr.inputs.Number(0, '02010_000007_FE_W75_80 [kg]', optional=False)
input_02020_000044_CHROMPAKETE = gr.inputs.Number(0, '02020_000044_CHROMPAKETE [kg]', optional=False)
input_02020_000001_HACKSCHROTT = gr.inputs.Number(0, '02020_000001_HACKSCHROTT [kg]', optional=False)
input_02020_000072_HACKSCHROTT = gr.inputs.Number(0, '02020_000072_HACKSCHROTT [kg]', optional=False)
input_02020_000034_2343 = gr.inputs.Number(0, '02020_000034_2343 [kg]', optional=False)
input_02020_000013_2367 = gr.inputs.Number(0, '02020_000013_2367 [kg]', optional=False)
input_02020_000029_2344 = gr.inputs.Number(0, '02020_000029_2344 [kg]', optional=False)
input_02020_000048_2343 = gr.inputs.Number(0, '02020_000048_2343 [kg]', optional=False)
input_02020_000072_Manganarm = gr.inputs.Number(0, '02020_000072_Manganarm [kg]', optional=False)
input_02020_000021_2365 = gr.inputs.Number(0, '02020_000021_2365 [kg]', optional=False)
input_02020_000016_2379 = gr.inputs.Number(0, '02020_000016_2379 [kg]', optional=False)
input_02020_000063_2345 = gr.inputs.Number(0, '02020_000063_2345 [kg]', optional=False)
input_02020_000513_2367 = gr.inputs.Number(0, '02020_000513_2367 [kg]', optional=False)
input_02020_000534_2343 = gr.inputs.Number(0, '02020_000534_2343 [kg]', optional=False)
input_02020_000043_Hackschrott = gr.inputs.Number(0, '02020_000043_Hackschrott [kg]', optional=False)
input_02020_000109_2379 = gr.inputs.Number(0, '02020_000109_2379 [kg]', optional=False)
input_02020_000006_CHROM_SCHROTT = gr.inputs.Number(0, '02020_000006_CHROM_SCHROTT [kg]', optional=False)
input_02020_000049_2344 = gr.inputs.Number(0, '02020_000049_2344 [kg]', optional=False)
input_02020_000112_CR_SCHROTT = gr.inputs.Number(0, '02020_000112_CR_SCHROTT [kg]', optional=False)
input_02020_000114_CHROM_SCHROTT = gr.inputs.Number(0, '02020_000114_CHROM_SCHROTT [kg]', optional=False)
input_02020_000041_2379 = gr.inputs.Number(0, '02020_000041_2379 [kg]', optional=False)
input_02020_000563_2345 = gr.inputs.Number(0, '02020_000563_2345 [kg]', optional=False)
input_02020_000516_2379 = gr.inputs.Number(0, '02020_000516_2379 [kg]', optional=False)
input_02020_000564_2895 = gr.inputs.Number(0, '02020_000564_2895 [kg]', optional=False)
input_02020_000044_ChromSchrott = gr.inputs.Number(0, '02020_000044_ChromSchrott [kg]', optional=False)
input_02020_000004_3343 = gr.inputs.Number(0, '02020_000004_3343 [kg]', optional=False)
input_02020_000002_3355 = gr.inputs.Number(0, '02020_000002_3355 [kg]', optional=False)
input_02020_000073_3343 = gr.inputs.Number(0, '02020_000073_3343 [kg]', optional=False)
input_02020_000043_KUPOLSCHROTT = gr.inputs.Number(0, '02020_000043_KUPOLSCHROTT [kg]', optional=False)
input_02030_000437_4112 = gr.inputs.Number(0, '02030_000437_4112 [kg]', optional=False)
input_02030_000031_2343 = gr.inputs.Number(0, '02030_000031_2343 [kg]', optional=False)
input_02030_000039_2367 = gr.inputs.Number(0, '02030_000039_2367 [kg]', optional=False)
input_02030_000032_2344 = gr.inputs.Number(0, '02030_000032_2344 [kg]', optional=False)
input_02030_000043_2379 = gr.inputs.Number(0, '02030_000043_2379 [kg]', optional=False)
input_02030_000052_UMSCHMELZBLOCK = gr.inputs.Number(0, '02030_000052_UMSCHMELZBLOCK [kg]', optional=False)
input_02030_000072_2601 = gr.inputs.Number(0, '02030_000072_2601 [kg]', optional=False)
input_02030_000163_2897 = gr.inputs.Number(0, '02030_000163_2897 [kg]', optional=False)
input_02030_000071_4112 = gr.inputs.Number(0, '02030_000071_4112 [kg]', optional=False)
input_02030_000175_4192 = gr.inputs.Number(0, '02030_000175_4192 [kg]', optional=False)
input_02030_000326_4197 = gr.inputs.Number(0, '02030_000326_4197 [kg]', optional=False)
input_02030_000269_2360 = gr.inputs.Number(0, '02030_000269_2360 [kg]', optional=False)
input_02030_000121_2895 = gr.inputs.Number(0, '02030_000121_2895 [kg]', optional=False)
input_02030_000087_2695 = gr.inputs.Number(0, '02030_000087_2695 [kg]', optional=False)
input_02030_000161_4034 = gr.inputs.Number(0, '02030_000161_4034 [kg]', optional=False)
input_02030_000164_2345 = gr.inputs.Number(0, '02030_000164_2345 [kg]', optional=False)
input_02030_000035_2360 = gr.inputs.Number(0, '02030_000035_2360 [kg]', optional=False)
input_02030_000171_4125 = gr.inputs.Number(0, '02030_000171_4125 [kg]', optional=False)
input_02030_000063_2519 = gr.inputs.Number(0, '02030_000063_2519 [kg]', optional=False)
input_02030_000009_2080 = gr.inputs.Number(0, '02030_000009_2080 [kg]', optional=False)
input_02030_000300_2897 = gr.inputs.Number(0, '02030_000300_2897 [kg]', optional=False)
input_02030_000034_2357 = gr.inputs.Number(0, '02030_000034_2357 [kg]', optional=False)
input_02030_000033_2345 = gr.inputs.Number(0, '02030_000033_2345 [kg]', optional=False)
input_02030_000038_2365 = gr.inputs.Number(0, '02030_000038_2365 [kg]', optional=False)
input_02030_000393_4057 = gr.inputs.Number(0, '02030_000393_4057 [kg]', optional=False)
input_02030_000281_2360 = gr.inputs.Number(0, '02030_000281_2360 [kg]', optional=False)
input_02030_000389_4021 = gr.inputs.Number(0, '02030_000389_4021 [kg]', optional=False)
input_02030_000045_2390 = gr.inputs.Number(0, '02030_000045_2390 [kg]', optional=False)
input_02030_000345_2419 = gr.inputs.Number(0, '02030_000345_2419 [kg]', optional=False)
input_02030_000415_2389 = gr.inputs.Number(0, '02030_000415_2389 [kg]', optional=False)
input_02030_000051_4125 = gr.inputs.Number(0, '02030_000051_4125 [kg]', optional=False)
input_02030_000144_3343 = gr.inputs.Number(0, '02030_000144_3343 [kg]', optional=False)
input_02030_000148_3355 = gr.inputs.Number(0, '02030_000148_3355 [kg]', optional=False)
input_02030_000145_3344 = gr.inputs.Number(0, '02030_000145_3344 [kg]', optional=False)
input_02030_000141_3333 = gr.inputs.Number(0, '02030_000141_3333 [kg]', optional=False)
input_02030_000179_3344 = gr.inputs.Number(0, '02030_000179_3344 [kg]', optional=False)
app = gr.Interface(fn=energie, inputs=[input_Stahlsorte, input_halbzeug, input_TotalDuration_min,
input_IFTotalTime_min,
input_IFPowerOnTime_min,
input_IFTappingWeight,
input_IFTappingTemperature,
input_C,
input_Si,
input_Mn,
input_P,
input_S,
input_Co,
input_Cr,
input_Mo,
input_V,
input_W,
input_Ni,
input_Nb,
input_Al,
input_02010_000004_FE_MO,
input_02010_000001_FE_CRCARBURE,
input_02010_000016_FE_CR006,
input_02010_000003_FE_SI,
input_02010_000013_FE_MANGANCARBURE,
input_02010_000005_FE_V80,
input_02010_000018_KOHLE,
input_02010_000007_FE_W75_80,
input_02020_000044_CHROMPAKETE,
input_02020_000001_HACKSCHROTT,
input_02020_000072_HACKSCHROTT,
input_02020_000034_2343,
input_02020_000013_2367,
input_02020_000029_2344,
input_02020_000048_2343,
input_02020_000072_Manganarm,
input_02020_000021_2365,
input_02020_000016_2379,
input_02020_000063_2345,
input_02020_000513_2367,
input_02020_000534_2343,
input_02020_000043_Hackschrott,
input_02020_000109_2379,
input_02020_000006_CHROM_SCHROTT,
input_02020_000049_2344,
input_02020_000112_CR_SCHROTT,
input_02020_000114_CHROM_SCHROTT,
input_02020_000041_2379,
input_02020_000563_2345,
input_02020_000516_2379,
input_02020_000564_2895,
input_02020_000044_ChromSchrott,
input_02020_000004_3343,
input_02020_000002_3355,
input_02020_000073_3343,
input_02020_000043_KUPOLSCHROTT,
input_02030_000437_4112,
input_02030_000031_2343,
input_02030_000039_2367,
input_02030_000032_2344,
input_02030_000043_2379,
input_02030_000052_UMSCHMELZBLOCK,
input_02030_000072_2601,
input_02030_000163_2897,
input_02030_000071_4112,
input_02030_000175_4192,
input_02030_000326_4197,
input_02030_000269_2360,
input_02030_000121_2895,
input_02030_000087_2695,
input_02030_000161_4034,
input_02030_000164_2345,
input_02030_000035_2360,
input_02030_000171_4125,
input_02030_000063_2519,
input_02030_000009_2080,
input_02030_000300_2897,
input_02030_000034_2357,
input_02030_000033_2345,
input_02030_000038_2365,
input_02030_000393_4057,
input_02030_000281_2360,
input_02030_000389_4021,
input_02030_000045_2390,
input_02030_000345_2419,
input_02030_000415_2389,
input_02030_000051_4125,
input_02030_000144_3343,
input_02030_000148_3355,
input_02030_000145_3344,
input_02030_000141_3333,
input_02030_000179_3344
], outputs=outputs, live=True, layout="horizontal", interpretation='default', num_shap=2.0, theme='huggingface', title=title, description=description)
#layout (str) - Layout of input and output panels. "horizontal" arranges them as two columns of equal height, "unaligned" arranges them as two columns of unequal height, and "vertical" arranges them vertically.
app.launch(share=False)