diff --git a/scripts/barrier_picker_app/README.md b/scripts/barrier_picker_app/README.md index 2b0614f..2b803bf 100644 --- a/scripts/barrier_picker_app/README.md +++ b/scripts/barrier_picker_app/README.md @@ -38,7 +38,7 @@ cd scripts/barrier_picker_app docker compose up --build ``` -Then browse to http://localhost:8000/. +Then browse to http://localhost:8085/. The container mounts: - `/mnt/data/projects/cupido` (data volume, read-only) diff --git a/scripts/barrier_picker_app/docker-compose.yml b/scripts/barrier_picker_app/docker-compose.yml index 9c9a241..2365997 100644 --- a/scripts/barrier_picker_app/docker-compose.yml +++ b/scripts/barrier_picker_app/docker-compose.yml @@ -4,7 +4,7 @@ services: image: cupido-barrier-picker container_name: cupido-barrier-picker ports: - - "8000:8000" + - "8085:8000" volumes: # Project data volume (videos + tracking DBs + merged TSV) — read-only. - /mnt/data/projects/cupido:/mnt/data/projects/cupido:ro diff --git a/scripts/barrier_picker_app/static/index.html b/scripts/barrier_picker_app/static/index.html index 5e5a1f1..04a67bf 100644 --- a/scripts/barrier_picker_app/static/index.html +++ b/scripts/barrier_picker_app/static/index.html @@ -50,6 +50,32 @@ #flash.show { opacity: 1; } #flash.ok { background: #2d5; color: #042; } #flash.err { background: #d44; color: white; } + + /* Welcome modal */ + #help-btn { background: transparent; border: 1px solid #444; color: #aab; + font-size: 0.85rem; padding: 0.3rem 0.7rem; } + #help-btn:hover { background: #2a2a2a; } + #modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.85); + display: none; align-items: center; justify-content: center; + z-index: 100; padding: 1rem; } + #modal-backdrop.show { display: flex; } + #modal { background: #222; border: 1px solid #444; border-radius: 6px; + padding: 1.6rem 2rem; max-width: 640px; width: 100%; + max-height: 90vh; overflow-y: auto; color: #ddd; line-height: 1.55; } + #modal h2 { margin: 0 0 0.6rem; color: #fff; font-size: 1.2rem; } + #modal h3 { margin: 1.2rem 0 0.4rem; color: #cce; font-size: 0.95rem; + font-weight: 600; } + #modal p { margin: 0.5rem 0; } + #modal ol { padding-left: 1.4rem; margin: 0.5rem 0; } + #modal li { margin: 0.6rem 0; } + #modal .button-tag { display: inline-block; padding: 0.05rem 0.4rem; + background: #2d5; color: #053; border-radius: 3px; + font-weight: 600; font-size: 0.85rem; } + #modal-close { margin-top: 1.4rem; width: 100%; padding: 0.7rem; + background: #2d5; color: #053; font-weight: 600; + border-radius: 4px; cursor: pointer; border: 1px solid #1a4; + font-size: 0.95rem; } + #modal-close:hover { background: #3e6; }
@@ -57,8 +83,56 @@For each tracked video you'll mark the moment the barrier between + the two halves of the arena is removed and the flies start interacting. + That timestamp is what every downstream "post-opening" analysis needs.
+ +
+ — every ROI usable
+ — only ROIs 1, 3, 5 (top row); lower row will be excluded from analysis
+ — only ROIs 2, 4, 6 (bottom row); upper row excluded
+
+ Space play/pause · + 1/2/3 the three buttons · + s skip · u mark unusable +
+Each click saves to
+ barrier_opening.csv immediately, so closing the tab
+ and coming back resumes from where you left off.