Spaces:
Sleeping
Sleeping
initial commit
Browse files- .gitignore +1 -0
- .python-version +1 -0
- README.md +1 -1
- data/1.npy +3 -0
- data/2.npy +3 -0
- data/3.npy +3 -0
- data/4.npy +3 -0
- data/5.npy +3 -0
- dataset.py +25 -0
- main.py +94 -0
- pyproject.toml +12 -0
- uv.lock +0 -0
.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
__pycache__/
|
.python-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
3.13
|
README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
---
|
| 2 |
title: OneDtracing
|
| 3 |
-
emoji:
|
| 4 |
colorFrom: green
|
| 5 |
colorTo: purple
|
| 6 |
sdk: gradio
|
|
|
|
| 1 |
---
|
| 2 |
title: OneDtracing
|
| 3 |
+
emoji: ♫
|
| 4 |
colorFrom: green
|
| 5 |
colorTo: purple
|
| 6 |
sdk: gradio
|
data/1.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:9696de747529f706de056dffa26815d315e60244e34c4d728a80088266e9a3f2
|
| 3 |
+
size 1000128
|
data/2.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:82ea583f00318e7adc98609d2e62c1b2a7c566ff597cd5b70000de9df7dba991
|
| 3 |
+
size 1000128
|
data/3.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e9b0daf8bf094903e2a597637a6311521a0d10ceca5d40392b40f7630a89534b
|
| 3 |
+
size 1000128
|
data/4.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6fe0e49907576e2c6ace1b6bc41686c5ed0872bfb501af4c3865b79cb5396d85
|
| 3 |
+
size 1000128
|
data/5.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8ed56ccb36582570febe9f038a223be382cd45810911733c888fe088a35a3114
|
| 3 |
+
size 1000128
|
dataset.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import numpy as np
|
| 2 |
+
import os
|
| 3 |
+
|
| 4 |
+
def generate_npy_files(num_files=5, samples_per_file=1_000_000):
|
| 5 |
+
"""Generates .npy files containing 1D arrays of random floats."""
|
| 6 |
+
|
| 7 |
+
print(f"Starting generation of {num_files} files...")
|
| 8 |
+
|
| 9 |
+
for i in range(1, num_files + 1):
|
| 10 |
+
filename = f"{i}.npy"
|
| 11 |
+
|
| 12 |
+
# Generate 1M samples of random data (float64 by default)
|
| 13 |
+
data = np.random.randint(low=-128, high=128, size=samples_per_file, dtype=np.int8)
|
| 14 |
+
if not os.path.exists("data"):
|
| 15 |
+
os.mkdir("data")
|
| 16 |
+
# Save to disk with specified folder
|
| 17 |
+
np.save(f"data/{filename}", data)
|
| 18 |
+
|
| 19 |
+
file_size_mb = os.path.getsize(f"data/{filename}") / (1024 * 1024)
|
| 20 |
+
print(f"Created {filename} | Shape: {data.shape} | Size: {file_size_mb:.2f} MB")
|
| 21 |
+
|
| 22 |
+
print("\nSuccess: All files generated in the current directory.")
|
| 23 |
+
|
| 24 |
+
if __name__ == "__main__":
|
| 25 |
+
generate_npy_files()
|
main.py
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from pathlib import Path
|
| 2 |
+
import gradio as gr
|
| 3 |
+
import numpy as np
|
| 4 |
+
import plotly.graph_objects as go
|
| 5 |
+
|
| 6 |
+
POINT_BUDGET = 1500
|
| 7 |
+
DATA_DIR = Path(__file__).parent / "data"
|
| 8 |
+
|
| 9 |
+
def load_data_files():
|
| 10 |
+
data_arrays = []
|
| 11 |
+
for i in range(5):
|
| 12 |
+
file_path = DATA_DIR / f"{i}.npy"
|
| 13 |
+
if file_path.exists():
|
| 14 |
+
data_arrays.append(np.load(file_path, mmap_mode="r").reshape(-1))
|
| 15 |
+
return data_arrays
|
| 16 |
+
|
| 17 |
+
DATA_SOURCES = load_data_files()
|
| 18 |
+
TOTAL_SAMPLES = len(DATA_SOURCES[0]) if DATA_SOURCES else 1_000_000
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
def create_figure(start_pt, window_size):
|
| 22 |
+
|
| 23 |
+
end_pt = min(start_pt + window_size, TOTAL_SAMPLES)
|
| 24 |
+
view_size = end_pt - start_pt
|
| 25 |
+
|
| 26 |
+
dynamic_stride = max(1, view_size // POINT_BUDGET)
|
| 27 |
+
indices = np.arange(start_pt, end_pt, dynamic_stride)
|
| 28 |
+
|
| 29 |
+
fig = go.Figure()
|
| 30 |
+
colors = ['#00E5FF', '#FF3D00', '#76FF03', '#D500F9', '#FFC400']
|
| 31 |
+
|
| 32 |
+
for i, data in enumerate(DATA_SOURCES):
|
| 33 |
+
fig.add_trace(go.Scattergl(
|
| 34 |
+
x=indices,
|
| 35 |
+
y=data[indices],
|
| 36 |
+
mode="lines",
|
| 37 |
+
name=f"Trace {i}",
|
| 38 |
+
line=dict(width=1, color=colors[i]),
|
| 39 |
+
hoverinfo="skip"
|
| 40 |
+
))
|
| 41 |
+
|
| 42 |
+
fig.update_layout(
|
| 43 |
+
template="plotly_dark",
|
| 44 |
+
title=f"Stride: {dynamic_stride}x | Window: {start_pt:,} → {end_pt:,}",
|
| 45 |
+
height=600
|
| 46 |
+
)
|
| 47 |
+
|
| 48 |
+
return fig
|
| 49 |
+
|
| 50 |
+
|
| 51 |
+
with gr.Blocks() as demo:
|
| 52 |
+
|
| 53 |
+
gr.Markdown("### 🔬 ASCAD Trace Viewer (Stable HF Version)")
|
| 54 |
+
|
| 55 |
+
start_slider = gr.Slider(
|
| 56 |
+
minimum=0,
|
| 57 |
+
maximum=TOTAL_SAMPLES - 1000,
|
| 58 |
+
step=100,
|
| 59 |
+
value=0,
|
| 60 |
+
label="Start Index"
|
| 61 |
+
)
|
| 62 |
+
|
| 63 |
+
window_slider = gr.Slider(
|
| 64 |
+
minimum=1000,
|
| 65 |
+
maximum=50000,
|
| 66 |
+
step=1000,
|
| 67 |
+
value=20000,
|
| 68 |
+
label="Window Size"
|
| 69 |
+
)
|
| 70 |
+
|
| 71 |
+
trace_plot = gr.Plot()
|
| 72 |
+
|
| 73 |
+
start_slider.change(
|
| 74 |
+
create_figure,
|
| 75 |
+
inputs=[start_slider, window_slider],
|
| 76 |
+
outputs=trace_plot
|
| 77 |
+
)
|
| 78 |
+
|
| 79 |
+
window_slider.change(
|
| 80 |
+
create_figure,
|
| 81 |
+
inputs=[start_slider, window_slider],
|
| 82 |
+
outputs=trace_plot
|
| 83 |
+
)
|
| 84 |
+
|
| 85 |
+
# Initial load
|
| 86 |
+
demo.load(
|
| 87 |
+
create_figure,
|
| 88 |
+
inputs=[start_slider, window_slider],
|
| 89 |
+
outputs=trace_plot
|
| 90 |
+
)
|
| 91 |
+
|
| 92 |
+
|
| 93 |
+
if __name__ == "__main__":
|
| 94 |
+
demo.launch()
|
pyproject.toml
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[project]
|
| 2 |
+
name = "onedtracing"
|
| 3 |
+
version = "0.1.0"
|
| 4 |
+
description = "Add your description here"
|
| 5 |
+
readme = "README.md"
|
| 6 |
+
requires-python = ">=3.13"
|
| 7 |
+
dependencies = [
|
| 8 |
+
"dash>=4.0.0",
|
| 9 |
+
"gradio>=6.8.0",
|
| 10 |
+
"numpy>=2.4.2",
|
| 11 |
+
"plotly>=6.6.0",
|
| 12 |
+
]
|
uv.lock
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|