{"id":39511530,"url":"https://github.com/oss-slu/cv_zebrafish","last_synced_at":"2026-01-18T06:03:47.873Z","repository":{"id":314350485,"uuid":"1036294795","full_name":"oss-slu/cv_zebrafish","owner":"oss-slu","description":"CV Zebrafish — a modular software tool to track and analyze zebrafish movements from high-speed imaging. It integrates with DeepLabCut outputs to compute metrics like fin angles, movement timing, speed, and behavior classification","archived":false,"fork":false,"pushed_at":"2025-12-05T21:10:20.000Z","size":104762,"stargazers_count":2,"open_issues_count":5,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-06T04:27:05.174Z","etag":null,"topics":["deeplabcut","hacktoberfest","python","zebrafish"],"latest_commit_sha":null,"homepage":"https://oss-slu.github.io/projects/cv_zebrafish/about","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oss-slu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-11T21:26:22.000Z","updated_at":"2025-12-05T21:10:25.000Z","dependencies_parsed_at":"2025-09-12T01:09:24.605Z","dependency_job_id":"ecc21ac2-9fa1-45dd-94c3-d075ee010510","html_url":"https://github.com/oss-slu/cv_zebrafish","commit_stats":null,"previous_names":["oss-slu/cv_zebrafish"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oss-slu/cv_zebrafish","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oss-slu%2Fcv_zebrafish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oss-slu%2Fcv_zebrafish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oss-slu%2Fcv_zebrafish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oss-slu%2Fcv_zebrafish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oss-slu","download_url":"https://codeload.github.com/oss-slu/cv_zebrafish/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oss-slu%2Fcv_zebrafish/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28531992,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deeplabcut","hacktoberfest","python","zebrafish"],"created_at":"2026-01-18T06:03:47.046Z","updated_at":"2026-01-18T06:03:47.867Z","avatar_url":"https://github.com/oss-slu.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CV Zebrafish\n\nDesktop toolkit for validating DeepLabCut zebrafish CSVs, generating JSON configs, running kinematic calculations, and rendering Plotly graphs through a PyQt UI.\n\n## Quickstart\n\n### Prereqs\n- Python 3.10+\n- Git\n- System packages for Qt (Windows: included with PyQt5 wheels; macOS/Linux may need Qt libraries)\n\n### Setup (Conda)\n```bash\nconda env create -f environment.yml\nconda activate cvzebrafish\n```\n\u003e `environment.yml` declares Python 3.10 and all app/test dependencies; prefer this over ad-hoc pip installs.\n\n### Run the UI\n```bash\npython app.py\n```\nThe flow walks through CSV/JSON selection, validation, config generation, calculations, and graph viewing.\n\n### Run tests\n```bash\npytest\n```\n\n## Project Layout (current)\n```text\napp.py                         # PyQt entry point (adds src/ to sys.path)\nassets/\n├── images/                    # UI icons / art\n└── sample_data/               # Example configs/CSVs (paired with data/samples)\ndata/\n└── samples/\n    ├── csv/                   # DLC CSV fixtures used by UI/tests\n    └── jsons/                 # BaseConfig + generated config examples\ndocs/\n├── architecture/              # Calculation/graph design notes\n├── howtos/                    # UI + validation how-tos\n└── product/                   # Product summary, presentations, meeting minutes\nlegacy/                        # Bruce pipeline for regression comparisons\nsrc/\n├── app_platform/paths.py      # Writable paths/utilities\n├── core/\n│   ├── calculations/          # Metrics, driver, exports\n│   ├── config/configSetup.py  # Config discovery/merging\n│   ├── graphs/                # Loader, runner, Plotly plotters (fin/tail, spines)\n│   ├── parsing/Parser.py      # DLC CSV parser\n│   └── validation/            # CSV/JSON validators + config generator\n├── data/                      # DB ingestion helpers\n├── session/                   # Session persistence for the UI\n└── ui/\n    ├── components/            # Shared widgets (sliders, checks, etc.)\n    └── scenes/                # Landing, CSV/JSON input, Config Generator, Calculation, Graph Viewer, Verify\ntests/\n└── unit/                      # Core + UI unit tests (pytest)\n```\n\n## Feature Highlights\n- **Validation:** CSV/JSON verifiers with structural and likelihood checks.\n- **Config generation:** UI scene builds configs from detected body parts and saves JSON.\n- **Calculations:** Fin/tail angles, yaw, spine metrics, bout/peak detection, enriched exports.\n- **Graphs:** Modular Plotly plotters (fin-tail timelines, spine snapshots) with Kaleido PNG rendering.\n- **UI:** Multi-scene PyQt flow with session save/load to resume work.\n- **Legacy parity:** Legacy pipeline kept under `legacy/` for comparison.\n\n## Known Gaps / Next Steps\n- No dependency lockfile; add `requirements.txt`/`conda-lock` if needed.\n- No CI or lint/type tooling; add GitHub Actions to run pytest.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foss-slu%2Fcv_zebrafish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foss-slu%2Fcv_zebrafish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foss-slu%2Fcv_zebrafish/lists"}