61 lines
1.7 KiB
Bash
Executable File
61 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# run_compare.sh — 对所有内置数据集跑纵向对比可视化(render-column)
|
||
#
|
||
# 用法:
|
||
# bash scripts/run_compare.sh [数据集目录] [输出目录]
|
||
#
|
||
# 默认:
|
||
# 数据集目录: ../../datasets/builtin
|
||
# 输出目录: render_compare
|
||
#
|
||
# 管道: inject → render-column(自动检测 + 渲染)
|
||
|
||
set -uo pipefail
|
||
|
||
BUILTIN_DIR="${1:-../../datasets/builtin}"
|
||
OUTPUT="${2:-render_compare}"
|
||
URL="${TS_ANA_TD_URL:-ws://root:taosdata@localhost:6041}"
|
||
|
||
# 多列数据集映射: dataset_name → value_col
|
||
declare -A VALUE_COLS=(
|
||
["ecg_002"]="ECG1"
|
||
["sensor_007"]="ankle_horiz_fwd"
|
||
)
|
||
|
||
mkdir -p "$OUTPUT"
|
||
|
||
total=0
|
||
ok=0
|
||
skip=0
|
||
|
||
for dataset_dir in "$BUILTIN_DIR"/*/; do
|
||
name=$(basename "$dataset_dir")
|
||
csv="$dataset_dir/data.csv"
|
||
[[ -f "$csv" ]] || { echo "SKIP $name: no data.csv"; ((skip++)); ((total++)); continue; }
|
||
|
||
# 确定 value 列
|
||
value_col="${VALUE_COLS[$name]:-value}"
|
||
|
||
echo "=== $name (value_col=$value_col) ==="
|
||
|
||
# 1. 注入
|
||
echo " [1/2] inject..."
|
||
uv run python -m ts_anomaly_td inject \
|
||
--csv "$csv" --stable "$name" --value-col "$value_col" --url "$URL" \
|
||
|| { echo " inject FAILED, skipping $name"; ((total++)); continue; }
|
||
|
||
# 2. 纵向对比渲染(内部自动检测 6 算法)
|
||
echo " [2/2] render-column..."
|
||
uv run python -m ts_anomaly_td render-column \
|
||
--gt-csv "$csv" --stable "$name" --value-col "$value_col" \
|
||
--output "$OUTPUT/${name}_compare.png" --url "$URL" \
|
||
&& { echo " → $OUTPUT/${name}_compare.png"; ((ok++)); } \
|
||
|| { echo " render-column FAILED"; }
|
||
|
||
((total++))
|
||
done
|
||
|
||
echo ""
|
||
echo "=== 完成: $ok/$total 成功, $skip 跳过 ==="
|
||
ls -la "$OUTPUT"/*_compare.png 2>/dev/null || echo "(无输出)"
|