CoolFace
Apppublic

bonnarts/application

sourceHugging Faceupdated 4y agoView on Hugging Face
0likes
app.py111 linesDownload Raw Back to root
1# -*- coding: utf-8 -*-2"""3Created on Fri Jan 13 15:43:23 20234 5@author: Bonn_arts6"""7import streamlit as st8import requests9import numpy as np10import pickle11import streamlit as st12import matplotlib.pyplot as plt13import pandas as pd14 15 16st.title('Malaria prediction web app')17 18def malaria_prediction(input_list):19   20 21 22    input_data_as_numpy_array = np.asarray(input_list)23 24    input_data_reshaped = input_data_as_numpy_array.reshape(1,-1)25 26 27    prediction = loaded_model.predict(input_data_reshaped)28    print(prediction)29 30    if (prediction[0]==1):31        return'outbreak; control measures: vector control, case management and vaccines'32    else:33        return 'medium threat; control measures: antimalaria, IRS, ITN'34# Get API key35API_KEY = 'fbfcc4956a215ab7ad52a0368b7221bb'36BASE_URL = 'https://api.openweathermap.org/data/2.5/weather?'37 38 39# Get county names40county = ["Mombasa", "Kwale", "Kilifi", "Lamu", "Garissa", "Wajir", "Mandera", "Marsabit",41            "Isiolo", "Meru", "Embu", "Kitui", "Machakos", "Makueni", "Nyandarua", "Nyeri", "Kirinyaga",42            "Murang'a", "Kiambu", "West Pokot", "Samburu", "Uasin Gishu", "Elgeyo Marakwet",43            "Nandi", "Baringo", "Laikipia", "Nakuru", "Narok", "Kajiado", "Kericho", "Bomet", "Kakamega", "Vihiga",44            "Bungoma", "Busia", "Siaya", "Kisumu", "Homa Bay", "Migori", "Kisii", "Nyamira","Nairobi"]45            46 47 48# Create a function to make API calls49def get_weather_data(api_key, location):50    url = BASE_URL+ 'appid=' + API_KEY + '&q='+ county51    response = requests.get(url)52    return response.json()53county = st.selectbox("Select a county", county)54 55 56 57 58loaded_model = pickle.load(open('trained_model.sav', 'rb'))59 60 61def main():62    st.sidebar.title("Additional Inputs")63    # Extract weather information64    data = get_weather_data(API_KEY, county)65    rainfall = data["rain"]["3h"] if "rain" in data else 066    min_temp= data["main"]["temp_min"]67    max_temp= data["main"]["temp_max"]68    humidity1 = data["main"]["humidity"]69    humidity2 = data["main"]["humidity"]70 71    72    73    # Display weather information74    st.write(f"Min-temperature: {min_temp}")75    st.write(f"Max-temperature: {max_temp}")76    st.write(f"Relative humidity 0800hrs: {humidity1}")77    st.write(f"Relative humidity 1400hrs: {humidity2}")78    st.write(f"Rainfall: {rainfall}")79    mosqp = st.sidebar.number_input('Mosquito population',min_value=0, max_value=100000)80    case = st.sidebar.number_input('Number of cases',min_value=0, max_value=100000)81    if st.sidebar.button('Submit'):82        if not mosqp:83            st.error("mosquito population required.")84            st.error("malaria cases required.")85        else:86            st.warning('succesful')87 88    columns = ['rainfall','min_temp', 'max_temp', 'humidity1', 'humidity2', 'mosqp','case']89    df = pd.DataFrame(columns=columns)90    df.loc[0] = [data["rain"]["3h"] if "rain" in data else 0,data['main']['temp_min'], data['main']['temp_max'], data['main']['humidity'], data['main']['humidity'],mosqp,case]91    92 93    input_list =df94 95    diagnosis = ""96 97    if st.button("Predict"):98        if all(input_list):99        # Pass the input values to your model and get the output100           diagnosis = malaria_prediction(input_list)101           st.success(diagnosis)102           st.bar_chart([rainfall,min_temp,max_temp,humidity1,humidity2,mosqp,case])103        else:104            st.warning("Please fill in all the inputs")105            st.map(zoom=6)106            st.set_option('deprecation.showPyplotGlobalUse', False)107    108  109        110if __name__=='__main__':111    main()