Spaces:
Runtime error
Runtime error
import numpy as np | |
import gradio as gr | |
import tensorflow as tf | |
import matplotlib.pyplot as plt | |
from matplotlib import cm | |
from PIL import Image | |
import pandas as pd | |
def normalise_data(data, min_val, max_val, low=0, high=1): | |
''' | |
Normalises the data to the range [low, high] | |
Parameters | |
---------- | |
data: numpy array, data to normalise | |
low: float, minimum value of the range | |
high: float, maximum value of the range | |
Returns | |
------- | |
normalised_data: float, normalised data | |
''' | |
normalised_data = (data - min_val)/(max_val - min_val) | |
normalised_data = (high - low)*normalised_data + low | |
return normalised_data | |
data = np.load('./data.npy') | |
data_DTW = np.load('./data_DTW.npy') | |
model = tf.keras.models.load_model('./model.h5',compile = False) | |
def predict(Cell_number, Duty_Cycle, Cycle_number): | |
# ------------------------ Prediction ------------------------ | |
# select cell data | |
# data = x_test_1 #if Cell_number == '1' else x_test_2 if Cell_number == '2' else x_test_3 | |
# data_DTW = x_test_DTW_1 #if Cell_number == '1' else x_test_DTW_2 if Cell_number == '2' else x_test_DTW_3 | |
# select cycle number | |
cycle = 0 if Cycle_number == '10' else 1 if Cycle_number == '50' else 2 if Cycle_number == '100' else 3 if Cycle_number == '200'else 4 if Cycle_number == '400' else 5 | |
IC_reference = data[0][0] | |
sample = data[Duty_Cycle-1][cycle] | |
sample_DTW = data_DTW[Duty_Cycle-1][cycle] #getDTWImage(IC_reference, sample, size) | |
prediction = model.predict(np.expand_dims(sample_DTW, axis=0)) | |
pred = {"LLI ": str(prediction[0][0]), "LAMPE ": str(prediction[0][1]), "LAMNE ": str(prediction[0][2])} | |
# --------------------------- IC + image---------------------------- | |
d = {' ': np.linspace(1, len(IC_reference), len(IC_reference)), 'pristine': IC_reference, 'degraded': sample} | |
df = pd.DataFrame(data=d) | |
image_array=sample_DTW.reshape(sample_DTW.shape[0], sample_DTW.shape[1]) | |
image_array = normalise_data(image_array, np.min(image_array), np.max(image_array)) | |
im = Image.fromarray(np.uint8(cm.inferno(image_array)*255)) | |
return pred, df, im | |
iface = gr.Interface( | |
fn=predict, | |
inputs=[gr.inputs.Radio(["Cell #1", "Cell #2", "Cell #3"]), gr.inputs.Slider(1, 1000, step=1), gr.inputs.Radio(["10", "50", "100", "200", "400", "1000"])], | |
title="LFP degradation diagnosis", | |
description="Enter cell number, duty cycle and cycle number to predict the percentage of LLI, LAMPE and LAMNE", | |
outputs=[gr.outputs.Label(label="Prediction"), gr.outputs.Timeseries(x=" ", y=["pristine", "degraded"], label="IC curves"), gr.outputs.Image(type='pil', label="DTW image")], | |
allow_screenshot=False, | |
theme="darkpeach", | |
layout="unaligned") | |
iface.launch() |