samyak152002's picture
Update app.py
629d1ef verified
raw
history blame contribute delete
No virus
1.86 kB
import gradio as gr
import numpy as np
# Generate data for 100 seconds with unique variability
def generate_data(start_value, fluctuation, noise_scale, size):
time = np.arange(size)
data = start_value + fluctuation * np.sin(time / 10) + np.random.normal(scale=noise_scale, size=size)
data = np.clip(data, 0, None) # Ensure no negative values
return time.tolist(), data.tolist()
def fetch_blood_oxygen():
time, oxygen_level = generate_data(start_value=97, fluctuation=5, noise_scale=5, size=10)
return {"time": time, "oxygen_level": oxygen_level}
def fetch_heart_rate():
time, heart_rate = generate_data(start_value=75, fluctuation=10, noise_scale=10, size=10)
return {"time": time, "heart_rate": heart_rate}
def fetch_sugar_level():
time, sugar_level = generate_data(start_value=90, fluctuation=15, noise_scale=20, size=10)
return {"time": time, "sugar_level": sugar_level}
# Create Gradio interfaces for each of the APIs
blood_oxygen_interface = gr.Interface(
fn=fetch_blood_oxygen,
inputs=None,
outputs="json",
title="Blood Oxygen API",
description="Returns blood oxygen data over 100 seconds."
)
heart_rate_interface = gr.Interface(
fn=fetch_heart_rate,
inputs=None,
outputs="json",
title="Heart Rate API",
description="Returns heart rate data over 100 seconds."
)
sugar_level_interface = gr.Interface(
fn=fetch_sugar_level,
inputs=None,
outputs="json",
title="Sugar Level API",
description="Returns sugar level data over 100 seconds."
)
# Use Gradio Blocks to run all three interfaces
with gr.Blocks() as demo:
gr.Markdown("# Real-Time Health Monitoring API")
# Add the three interfaces
blood_oxygen_interface.render()
heart_rate_interface.render()
sugar_level_interface.render()
# Launch the app
demo.launch()