Spaces:
Sleeping
Sleeping
change dataset config
Browse files- README.md +20 -0
- app.py +4 -2
- backup/2025-10-23/new_user.json +0 -1
- backup/2025-10-23/test_user_1.json +0 -1
- backup/2025-10-23/test_user_2.json +0 -1
- test_api.sh +39 -56
README.md
CHANGED
|
@@ -9,3 +9,23 @@ app_file: start.py
|
|
| 9 |
pinned: false
|
| 10 |
license: apache-2.0
|
| 11 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
pinned: false
|
| 10 |
license: apache-2.0
|
| 11 |
---
|
| 12 |
+
|
| 13 |
+
# MuscleCare Dataset API
|
| 14 |
+
|
| 15 |
+
์ด Space๋ ์์ง๋ ์ด๋ ํผ๋ก๋ ๋ฐ์ดํฐ๋ฅผ Hugging Face Dataset ์ ์ฅ์์ ์
๋ก๋ํ๋ FastAPI ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
|
| 16 |
+
|
| 17 |
+
## ์๋ํฌ์ธํธ
|
| 18 |
+
- `GET /health` : ์๋ฒ ์ํ ํ์ธ
|
| 19 |
+
- `POST /upload_dataset` : `fatigue_dataset` ์คํค๋ง์ ๋ง์ถ ๋ฐฐ์น ๋ฐ์ดํฐ๋ฅผ Hugging Face Hub๋ก ์ ์ฅ
|
| 20 |
+
|
| 21 |
+
## ์คํ ๋ฐฉ๋ฒ
|
| 22 |
+
```bash
|
| 23 |
+
./start_server.sh
|
| 24 |
+
```
|
| 25 |
+
|
| 26 |
+
## ํ
์คํธ
|
| 27 |
+
```bash
|
| 28 |
+
./test_api.sh
|
| 29 |
+
```
|
| 30 |
+
|
| 31 |
+
ํ
์คํธ ์คํฌ๋ฆฝํธ๋ ์ํ ๋ฐฐ์น ๋ฐ์ดํฐ๋ฅผ `/upload_dataset` ์๋ํฌ์ธํธ๋ก ์ ์กํฉ๋๋ค. ์คํ ์ `HF_DATA_REPO_ID`์ `HF_DATA_TOKEN` ํ๊ฒฝ๋ณ์๊ฐ ์ค์ ๋์ด ์์ด์ผ ํฉ๋๋ค.
|
app.py
CHANGED
|
@@ -18,7 +18,8 @@ app = FastAPI(title="MuscleCare FastAPI Server")
|
|
| 18 |
|
| 19 |
# ----- ๋ชจ๋ธ -----
|
| 20 |
class DatasetItem(BaseModel):
|
| 21 |
-
|
|
|
|
| 22 |
session_id: Optional[str] = None
|
| 23 |
window_id: int
|
| 24 |
window_start_ms: int
|
|
@@ -112,6 +113,7 @@ async def upload_dataset(payload: DatasetBatchPayload):
|
|
| 112 |
|
| 113 |
# ์ ์คํค๋ง ์ ์
|
| 114 |
target_cols = [
|
|
|
|
| 115 |
"user_id",
|
| 116 |
"session_id",
|
| 117 |
"window_id",
|
|
@@ -199,7 +201,7 @@ async def upload_dataset(payload: DatasetBatchPayload):
|
|
| 199 |
rec = item.model_dump()
|
| 200 |
if not rec.get("timestamp_utc"):
|
| 201 |
rec["timestamp_utc"] = datetime.now().isoformat()
|
| 202 |
-
user_groups.setdefault(
|
| 203 |
|
| 204 |
results = {}
|
| 205 |
|
|
|
|
| 18 |
|
| 19 |
# ----- ๋ชจ๋ธ -----
|
| 20 |
class DatasetItem(BaseModel):
|
| 21 |
+
id: Optional[int] = None
|
| 22 |
+
user_id: str
|
| 23 |
session_id: Optional[str] = None
|
| 24 |
window_id: int
|
| 25 |
window_start_ms: int
|
|
|
|
| 113 |
|
| 114 |
# ์ ์คํค๋ง ์ ์
|
| 115 |
target_cols = [
|
| 116 |
+
"id",
|
| 117 |
"user_id",
|
| 118 |
"session_id",
|
| 119 |
"window_id",
|
|
|
|
| 201 |
rec = item.model_dump()
|
| 202 |
if not rec.get("timestamp_utc"):
|
| 203 |
rec["timestamp_utc"] = datetime.now().isoformat()
|
| 204 |
+
user_groups.setdefault(item.user_id, []).append(rec)
|
| 205 |
|
| 206 |
results = {}
|
| 207 |
|
backup/2025-10-23/new_user.json
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
[{"user_id": "new_user", "rms": 0.95, "freq": 60.1, "fatigue": 0.88, "timestamp": "2025-10-23T15:02:00.000000"}]
|
|
|
|
|
|
backup/2025-10-23/test_user_1.json
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
[{"user_id": "test_user_1", "rms": 0.85, "freq": 52.3, "fatigue": 0.72, "timestamp": "2025-10-23T14:55:00.000000"}]
|
|
|
|
|
|
backup/2025-10-23/test_user_2.json
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
[{"user_id": "test_user_2", "rms": 0.91, "freq": 58.7, "fatigue": 0.81, "timestamp": "2025-10-23T14:55:30.000000"}]
|
|
|
|
|
|
test_api.sh
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
|
| 2 |
|
| 3 |
# MuscleCare API ํ
์คํธ ์คํฌ๋ฆฝํธ
|
| 4 |
|
|
@@ -8,7 +8,7 @@
|
|
| 8 |
BASE_URL="${1:-http://localhost:7860}"
|
| 9 |
|
| 10 |
echo "======================================"
|
| 11 |
-
echo "๐งช MuscleCare API ํ
์คํธ"
|
| 12 |
echo "======================================"
|
| 13 |
echo "์๋ฒ: $BASE_URL"
|
| 14 |
echo ""
|
|
@@ -21,64 +21,47 @@ curl -X GET "$BASE_URL/health" \
|
|
| 21 |
echo ""
|
| 22 |
echo ""
|
| 23 |
|
| 24 |
-
# 2.
|
| 25 |
-
echo "2๏ธโฃ
|
| 26 |
echo "--------------------------------------"
|
| 27 |
-
curl -X POST "$BASE_URL/
|
| 28 |
-H "Content-Type: application/json" \
|
| 29 |
-H "accept: application/json" \
|
| 30 |
-d '{
|
| 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 |
-
echo "--------------------------------------"
|
| 66 |
-
curl -X POST "$BASE_URL/upload_logs" \
|
| 67 |
-
-H "Content-Type: application/json" \
|
| 68 |
-
-H "accept: application/json" \
|
| 69 |
-
-d '{
|
| 70 |
-
"user_id": "test_user_001",
|
| 71 |
-
"session_id": "session_124",
|
| 72 |
-
"measure_date": "2025-10-24",
|
| 73 |
-
"rms": 0.38,
|
| 74 |
-
"freq": 46.1,
|
| 75 |
-
"fatigue": 0.32,
|
| 76 |
-
"rms_base": 0.40,
|
| 77 |
-
"freq_base": 44.8,
|
| 78 |
-
"user_emb": [0.22, 0.06, 45.5, 0.72, 0.82, 0.035, 0.13, 0.0018, 0.42, 0.77, 0.92, 0.87],
|
| 79 |
-
"mode": "testing",
|
| 80 |
-
"window_count": 7,
|
| 81 |
-
"measurement_count": 1
|
| 82 |
}' | jq .
|
| 83 |
echo ""
|
| 84 |
echo ""
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
|
| 3 |
# MuscleCare API ํ
์คํธ ์คํฌ๋ฆฝํธ
|
| 4 |
|
|
|
|
| 8 |
BASE_URL="${1:-http://localhost:7860}"
|
| 9 |
|
| 10 |
echo "======================================"
|
| 11 |
+
echo "๐งช MuscleCare Dataset API ํ
์คํธ"
|
| 12 |
echo "======================================"
|
| 13 |
echo "์๋ฒ: $BASE_URL"
|
| 14 |
echo ""
|
|
|
|
| 21 |
echo ""
|
| 22 |
echo ""
|
| 23 |
|
| 24 |
+
# 2. ๋ฐฐ์น ๋ฐ์ดํฐ ์
๋ก๋
|
| 25 |
+
echo "2๏ธโฃ ๋ฐฐ์น ๋ฐ์ดํฐ ์
๋ก๋"
|
| 26 |
echo "--------------------------------------"
|
| 27 |
+
curl -X POST "$BASE_URL/upload_dataset" \
|
| 28 |
-H "Content-Type: application/json" \
|
| 29 |
-H "accept: application/json" \
|
| 30 |
-d '{
|
| 31 |
+
"batch_data": [
|
| 32 |
+
{
|
| 33 |
+
"user_id": "user_001",
|
| 34 |
+
"session_id": "session_001",
|
| 35 |
+
"window_id": 1001,
|
| 36 |
+
"window_start_ms": 0,
|
| 37 |
+
"window_end_ms": 2000,
|
| 38 |
+
"timestamp_utc": "2025-10-24T10:00:00Z",
|
| 39 |
+
"acc_x_mean": 0.01,
|
| 40 |
+
"acc_y_mean": -0.02,
|
| 41 |
+
"acc_z_mean": 0.98,
|
| 42 |
+
"gyro_x_mean": 0.001,
|
| 43 |
+
"gyro_y_mean": -0.003,
|
| 44 |
+
"gyro_z_mean": 0.002,
|
| 45 |
+
"rms_acc": 0.45,
|
| 46 |
+
"rms_gyro": 0.12,
|
| 47 |
+
"mean_freq_acc": 45.2,
|
| 48 |
+
"mean_freq_gyro": 12.5,
|
| 49 |
+
"entropy_acc": 0.62,
|
| 50 |
+
"entropy_gyro": 0.31,
|
| 51 |
+
"jerk_mean": 0.08,
|
| 52 |
+
"jerk_std": 0.01,
|
| 53 |
+
"stability_index": 0.9,
|
| 54 |
+
"rms_base": 0.4,
|
| 55 |
+
"freq_base": 40.0,
|
| 56 |
+
"user_emb": [0.1, 0.05, 0.02, 0.07, 0.11, 0.03, 0.04, 0.02, 0.09, 0.01, 0.08, 0.05],
|
| 57 |
+
"fatigue_prev": 0.3,
|
| 58 |
+
"fatigue": 0.32,
|
| 59 |
+
"fatigue_level": 1,
|
| 60 |
+
"quality_flag": 1,
|
| 61 |
+
"window_size_ms": 2000,
|
| 62 |
+
"overlap_rate": 0.5
|
| 63 |
+
}
|
| 64 |
+
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
}' | jq .
|
| 66 |
echo ""
|
| 67 |
echo ""
|