Spaces:
Sleeping
Sleeping
import gradio as gr | |
import numpy as np | |
import pandas as pd | |
from sklearn.ensemble import GradientBoostingRegressor | |
import pickle | |
def create_gui(): | |
""" | |
Creates and launches the Gradio user interface for the biomass adsorption prediction. | |
""" | |
# Define the input and output components of the GUI | |
inputs = [ | |
gr.Dropdown( | |
["Benzocaine", "Ciprofloxacin", "Citalopram", "Diclofenac", "Dimetridazole", "Floxentine", "Ibuprofen", "Metronidazole", "Nitroimidazole", "Norfloxacin", "Oxytetracycline", "Salicylic Acid", "Sulfadiazine", "Sulfamethazine", "Sulfamethoxazole", "Tetracycline", "Triclosan"], label="Select Pharmaceutical" | |
), | |
gr.Slider(minimum=0, maximum=950, step=0.01, label="TemP (K)"), | |
gr.Slider(minimum=0, maximum=480, step=0.01, label="Time (min)"), | |
gr.Slider(minimum=0, maximum=250, step=0.01, label="PS (mm)"), | |
gr.Slider(minimum=0, maximum=2000, step=0.01, label="BET surface area (m2/g)"), | |
gr.Slider(minimum=0, maximum=1, step=0.01, label="Pore Volume (cm3)"), | |
gr.Slider(minimum=0, maximum=100, step=0.01, label="C (%)"), | |
gr.Slider(minimum=0, maximum=100, step=0.01, label="H (%)"), | |
gr.Slider(minimum=0, maximum=100, step=0.01, label="N (%)"), | |
gr.Slider(minimum=0, maximum=100, step=0.01, label="O (%)"), | |
] | |
outputs = [ | |
gr.Textbox(label="Predicted Maximum Adsorption Capacity, Qm (mg/g)") | |
] | |
# Define the title and description of the GUI | |
title = "GUI for Pharmaceutical Removal via Biochar Adsorption" | |
description = "This GUI uses machine learning to predict maximum absorption capacity (Qm) for the selected pharmaceutical based on various input parameters." | |
gr.Interface(fn=predict_qm, inputs=inputs, outputs=outputs, title=title, description=description).launch() | |
def predict_qm(pharmaceutical, temp, time, ps, bet, pv, c, h, n, o): | |
""" | |
Predicts maximum adsorption capacity (Qm) based on input features for the selected pharmaceutical. | |
Parameters: | |
pharmaceutical (str): Pharmaceutical type. | |
TemP (float): Temperature K of the biomass. | |
Time (float): Time it takes for biochar to remove pharmaceutical in minutes . | |
PS (float): Pore space in mm. | |
BET (float): Area of powder in m2/g being poured into the solution. | |
PV (float): Pore volume in cm3. | |
C (float): C (%) content of the biomass. | |
H (float): H (%) content of the biomass. | |
N (float): N (%) content of the biomass. | |
O (float): O (%) content of the biomass. | |
Returns: | |
float: The predicted maximum adsorption capacity (Qm). | |
""" | |
# Concatenate the inputs into a numpy array | |
input_data = pd.DataFrame([[temp, time, ps, bet, pv, c, h, n, o]], columns=["Temp", "Time", "PS", "BET", "PV", "C", "H", "N", "O"]) | |
# Load the trained model from the pickled file | |
with open('xgb_best_params.pkl', 'rb') as file: | |
loaded_model = pickle.load(file) | |
# Make predictions using the loaded machine learning model | |
prediction = loaded_model.predict(input_data) | |
qm = np.round(prediction[0], 2) | |
return qm | |
if __name__ == '__main__': | |
# Create GUI | |
create_gui() | |