Yol haritası
Mişko video-only davranış testi platformu olarak başlar. Core roadmap içinde sensör yoktur. Tüm ölçümler kamera karelerinden, kalibrasyondan, apparatus geometrisinden ve kod sahipli paradigma spec’lerinden türetilir.
Kamera karesi -> detection veya segmentation -> tracking -> pikselden cm'ye kalibrasyon -> apparatus koordinatlarında trajectory -> zone ve event metrikleri -> kalite kontrol metrikleri -> Mişko'da valide edilmiş özet sonuçAdım 0 - Kimlik ✅
Bölüm başlığı “Adım 0 - Kimlik ✅”- Docker açılışında superadmin bootstrap.
- Public kayıt kaldırıldı.
- İçeriden kullanıcı yönetimi.
Adım 1 - Lab temeli ✅
Bölüm başlığı “Adım 1 - Lab temeli ✅”Laboratorysingleton: kurulum başına bir lab. ✅- Kurulum sihirbazı lab ve
SUPERADMIN’i birlikte oluşturur (CLI, Docker açılışı). ✅ - İkinci laboratuvar oluşturulması reddedilir (singleton garantisi). ✅
- Beş rol:
SUPERADMIN,LAB_MANAGER,RESEARCHER,TECHNICIAN,VIEWER. ✅ requirePermission(...)ile kodda tanımlı izin matrisi. ✅Environmentinstance’ları: bir paradigma template’inden oluşturulan isimli, kalıcı test düzenekleri (paradigma başına birden çok). ✅
Tamamlandı: Laboratory singleton ve Environment modelleri + migration’lar; kurulum sihirbazı (backend/prisma/bootstrap-admin.js) lab + superadmin’i birlikte oluşturur. Lab API’si: GET/PATCH /api/lab (lab:configure). Paradigmalar salt-okunur, kod sahipli template’lerdir; GET /api/paradigms ve GET /api/paradigms/:key ile sunulur. Bir ortam (environment), bir paradigmanın isimli instance’ıdır; fiziksel değerleri kendine yeten bir snapshot’a ({ paradigmKey, schemaVersion, apparatus, zones }) çözülür, değerler kod tarafından sabit parametre aralıklarına göre doğrulanır ve testte kilitli kalır. Environment API’si: GET /api/environments, GET /api/environments/:id, POST /api/environments, PATCH /api/environments/:id, DELETE /api/environments/:id (yazma işlemleri apparatus:write ister). Bir lab, aynı paradigmadan birden çok ortam tutabilir (ör. iki ayrı Morris su tankı). Frontend bir Ortamlar menüsü sunar; Paradigmalar sayfası salt-okunur bir katalogdur ve her paradigma detay sayfası yeni bir ortam oluşturabilir.
Adım 2 - Bilimsel kontrat
Bölüm başlığı “Adım 2 - Bilimsel kontrat”- Kod sahipli
ParadigmSpeckayıt defteri (11 paradigma):MWM,OPEN_FIELD,EPM,ROTAROD,Y_MAZE,NOVEL_OBJECT,BARNES_MAZE,THREE_CHAMBER,LIGHT_DARK,POLE,TREADMILL. ✅ - Ölçüm mimarisi içindeki kod sahipli metrik sözlüğü. ✅
- Kanonik birimler: sonuçlar
cm,cm_s,s,count,ratio,percent,deg,rpm,g,booleankullanır; apparatus parametreleri ek olarakmmvectaşır. ✅ - Paradigma başına parametreler, bölgeler, metrikler, QC gereksinimleri ve artefakt beklentileri. ✅
- Metrik başına
valueType/validRange/templated(zone-bazlı) - hem manuel giriş hem CV bu sözleşmeye göre doğrular. ✅ schemaVersionile sonuç şema versiyonlama. ✅- Salt-okunur inceleme API’si:
GET /api/paradigms,GET /api/paradigms/:key,GET /api/paradigms/metrics,GET /api/paradigms/units. ✅
Tamamlandı: kayıt defterleri backend/src/config/{units,metrics,paradigms}.js içinde; isKnownMetricKey(...) Step 4’te tanımsız sonuç anahtarlarını reddetmeye hazır. Bekleyen: paradigma detay sayfalarının frontend’de gösterilmesi ve reddetme mantığının sonuç gönderimine bağlanması.
Çıkış kriteri: her metriğin birimi, tanımı, input listesi ve aggregation davranışı vardır.
Adım 3 - Senaryo: merkezî deney tanımı ✅
Bölüm başlığı “Adım 3 - Senaryo: merkezî deney tanımı ✅”Scenario, bir deneyin eksiksiz ve yeniden kullanılabilir tanımıdır; böylece test
başlatmak “denek seç ve başlat” kadar basit olur. Domain küçük kalır: Denek
(fare, sade tutulur), Paradigma (salt-okunur katalog), Ortam (paradigmanın
isimli instance’ı - fiziksel kurulum), Senaryo (merkezî nesne) ve Test
(tek koşu).
Bir senaryo bir veya birden çok Environment’a (N-N) referans verir; böylece bir
veya birden çok paradigmayı kapsayabilir; her ortamın paradigması metriklerini
sabitler. Senaryoda geç/kal kriteri yoktur - davranışsal sonuç veridir,
verdikt değil.
Test, Denek + Senaryo’dur ve ortam ortam koşulur (Başlat → metrik
sonuçlarını gir → Bitir). Sonuç ortam başına saklanır
(result.environments[envId].metrics), ortamın paradigma sözlüğüne göre
doğrulanır - CV servisinin göndereceği şekille aynı.
- Başlangıç
Scenario’su (POOL | MAZE | STICK | PATH) isimli ortam paketine dönüştürüldü (+ opsiyonel oturum param). ✅ Test.resultortam-bazlı yapısal JSON;passed/verdikt yok. ✅- sinyal (ham, CV) / metrik (tanım) / metrik sonucu (değer) ayrıldı. ✅
Subjectsade başlangıç modeli olarak kalır. ✅
Önceki plandan çıkarılanlar: zengin Subject, WeightLog,
DiseaseModel/Treatment, Study -> Group, ayrı Apparatus modeli. Fiziksel
düzenek Environment’tır; kalibrasyon Adım 5’te kalır.
Adım 4 - Fake CV ile video-only sınır
Bölüm başlığı “Adım 4 - Fake CV ile video-only sınır”X-Service-KeyilePOST /api/tests/:id/result.captureSessionIdile idempotency.- Aktif paradigma spec’i ve metrik sözlüğüne göre sonuç validasyonu.
- Kendi PostgreSQL’i ve
/healthendpoint’i olancv-service/iskeleti. - Sahte ama geçerli metriklerle stub sonuç push.
- Video ve artefaktlar için MinIO.
Adım 5 - Geometri ve kalibrasyon
Bölüm başlığı “Adım 5 - Geometri ve kalibrasyon”- Circle, rectangle, plus ve custom polygon için apparatus geometri editörü.
- Platform, center, periphery, quadrant, wall annulus ve arm zone editörü.
- Referans kareyle pikselden cm’ye kalibrasyon ve reprojection error.
- Sabit apparatus kalibrasyonu ve test başına override.
- Tank merkezli koordinatlar, ham cm değerleri ve normalize mesafelerle MWM normalizasyonu.
Adım 6 - Gerçek video CV MVP
Bölüm başlığı “Adım 6 - Gerçek video CV MVP”- Kamera adapter’ları:
local_usb, yüklenen video dosyası ve sonra telefon stream’i. - Fare lokalizasyonu için detection veya segmentation modeli.
- ByteTrack veya eşdeğer tracker.
- OpenCV preprocessing ve homography.
- Kare bazlı telemetri CV servisinde kalır.
- Özet metrikler Mişko’ya push edilir.
| Paradigma | MVP metrikleri |
|---|---|
| MWM | Escape latency, path length, swim speed, quadrant time, thigmotaxis, probe trial için platform crossings. |
| Open Field | Distance, mean speed, center time, periphery time, immobility. |
| EPM | Open arm time, closed arm time, open arm entries, closed arm entries. |
| Rotarod | İlk aşamada manuel incelemeyle trial duration ve fall candidate event’leri. |
Adım 7 - Kalite kontrol ve inceleme
Bölüm başlığı “Adım 7 - Kalite kontrol ve inceleme”- Tracking confidence, dropped frame ratio, calibration error, occlusion ratio, out-of-bounds ratio, lighting warning ve contrast warning.
- QC durumları:
PASS,WARN,REVIEW_REQUIRED,FAIL. - QC, metrik sonuçlarının yanında saklanır (veriyi niteler, verdikt değildir).
- Video, overlay, trajectory ve metrik özetiyle manuel inceleme ekranı.
- Study export’ları düşük kaliteli koşuları varsayılan olarak filtreler.
Adım 8 - Analiz ve raporlama
Bölüm başlığı “Adım 8 - Analiz ve raporlama”- Testlerini toplayan senaryo dashboard’ları; denek gruplarını (
Subject.groupName) karşılaştırma. - Test’ler arası denek geçmişi.
- MWM acquisition curve ve probe summary.
- Open Field ve EPM özetleri.
- Rotarod tekrarlı trial curve’leri.
- Metrik tanımları ve QC durumuyla CSV ve JSON export.
Adım 9 - Gelişmiş davranış modülleri
Bölüm başlığı “Adım 9 - Gelişmiş davranış modülleri”- Opsiyonel pose-estimation adapter’ı: DeepLabCut, SLEAP veya başka açık kaynak model.
- Rearing, grooming, freezing, risk assessment ve head direction classifier’ları.
- İyileştirilmiş Rotarod fall detection.
- Single-animal iş akışları stabil olduktan sonra multi-animal desteği.
Adım 10 - Canlı izleme ve kaynaklar
Bölüm başlığı “Adım 10 - Canlı izleme ve kaynaklar”- WebSocket veya SSE ile CV’den Vue live paneline akış.
- RTSP ve HTTP adapter’ları.
- Telefon
getUserMediapush adapter’ı. - Canlı QC uyarıları.
Adım 11 - Açık kaynak deployment
Bölüm başlığı “Adım 11 - Açık kaynak deployment”- Mişko ve CV servisi için final lisans stratejisi.
- Tüm local stack için Docker Compose profili.
- GHCR image publishing.
- GitHub Pages docs deploy.
- Örnek dataset’ler, demo videolar ve örnek apparatus tanımları.
Non-goals
Bölüm başlığı “Non-goals”- Core mimaride sensor fusion yok.
- RFID, accelerometer, load cell veya IR beam bağımlılığı yok.
- Mişko PostgreSQL içinde ham kare telemetrisi yok.
- Bilimsel paradigma tanımları için editable DB row yok.
- İlk mimaride cross-lab multi-tenant deployment yok.