|
import gradio as gr |
|
import numpy as np |
|
|
|
|
|
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) |
|
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} |
|
|
|
|
|
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." |
|
) |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown("# Real-Time Health Monitoring API") |
|
|
|
|
|
blood_oxygen_interface.render() |
|
heart_rate_interface.render() |
|
sugar_level_interface.render() |
|
|
|
|
|
demo.launch() |