Spaces:
Sleeping
Sleeping
File size: 2,176 Bytes
b4c4e86 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | from pathlib import Path
import gradio as gr
import numpy as np
import plotly.graph_objects as go
POINT_BUDGET = 1500
DATA_DIR = Path(__file__).parent / "data"
def load_data_files():
data_arrays = []
for i in range(5):
file_path = DATA_DIR / f"{i}.npy"
if file_path.exists():
data_arrays.append(np.load(file_path, mmap_mode="r").reshape(-1))
return data_arrays
DATA_SOURCES = load_data_files()
TOTAL_SAMPLES = len(DATA_SOURCES[0]) if DATA_SOURCES else 1_000_000
def create_figure(start_pt, window_size):
end_pt = min(start_pt + window_size, TOTAL_SAMPLES)
view_size = end_pt - start_pt
dynamic_stride = max(1, view_size // POINT_BUDGET)
indices = np.arange(start_pt, end_pt, dynamic_stride)
fig = go.Figure()
colors = ['#00E5FF', '#FF3D00', '#76FF03', '#D500F9', '#FFC400']
for i, data in enumerate(DATA_SOURCES):
fig.add_trace(go.Scattergl(
x=indices,
y=data[indices],
mode="lines",
name=f"Trace {i}",
line=dict(width=1, color=colors[i]),
hoverinfo="skip"
))
fig.update_layout(
template="plotly_dark",
title=f"Stride: {dynamic_stride}x | Window: {start_pt:,} → {end_pt:,}",
height=600
)
return fig
with gr.Blocks() as demo:
gr.Markdown("### 🔬 ASCAD Trace Viewer (Stable HF Version)")
start_slider = gr.Slider(
minimum=0,
maximum=TOTAL_SAMPLES - 1000,
step=100,
value=0,
label="Start Index"
)
window_slider = gr.Slider(
minimum=1000,
maximum=50000,
step=1000,
value=20000,
label="Window Size"
)
trace_plot = gr.Plot()
start_slider.change(
create_figure,
inputs=[start_slider, window_slider],
outputs=trace_plot
)
window_slider.change(
create_figure,
inputs=[start_slider, window_slider],
outputs=trace_plot
)
# Initial load
demo.load(
create_figure,
inputs=[start_slider, window_slider],
outputs=trace_plot
)
if __name__ == "__main__":
demo.launch() |