{"id":50521163,"url":"https://github.com/metagenopolis/crocodeel_interpreter","last_synced_at":"2026-06-03T04:03:21.168Z","repository":{"id":355277826,"uuid":"1226708079","full_name":"metagenopolis/CroCoDeEL_interpreter","owner":"metagenopolis","description":"A browser-based curation interface for contamination events detected by CroCoDeEL.","archived":false,"fork":false,"pushed_at":"2026-06-01T15:02:57.000Z","size":20946,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T16:08:34.652Z","etag":null,"topics":["curation","metagenomics","web-interface"],"latest_commit_sha":null,"homepage":"https://metagenopolis.github.io/CroCoDeEL_interpreter/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/metagenopolis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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":"2026-05-01T18:32:40.000Z","updated_at":"2026-06-01T15:30:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"e3ed7d9d-a5ee-41dc-9e02-9722911e31fa","html_url":"https://github.com/metagenopolis/CroCoDeEL_interpreter","commit_stats":null,"previous_names":["metagenopolis/crocodeel_interpreter"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/metagenopolis/CroCoDeEL_interpreter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metagenopolis%2FCroCoDeEL_interpreter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metagenopolis%2FCroCoDeEL_interpreter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metagenopolis%2FCroCoDeEL_interpreter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metagenopolis%2FCroCoDeEL_interpreter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metagenopolis","download_url":"https://codeload.github.com/metagenopolis/CroCoDeEL_interpreter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metagenopolis%2FCroCoDeEL_interpreter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33847265,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"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":["curation","metagenomics","web-interface"],"created_at":"2026-06-03T04:03:18.876Z","updated_at":"2026-06-03T04:03:21.159Z","avatar_url":"https://github.com/metagenopolis.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CroCoDeEL Interpretation Interface\n\nA browser-based curation interface for contamination events reported by [CroCoDeEL](https://github.com/metagenopolis/CroCoDeEL). Load a `contamination_events.tsv` and the matching `species_abundance.tsv` (and optionally a sample metadata file and a plate map), walk every flagged event through a scatterplot and seven diagnostic criteria with full sample/plate context, then commit a two-layer curation: an **event evaluation** (true positive / false positive / uncertain / pending) and, on the target sample, a **sample-level verdict** with an optional **keep / suppress** action. Export a curated TSV, a self-contained HTML report, or a full session JSON.\n\n\u003e **Live:** https://metagenopolis.github.io/CroCoDeEL_interpreter/\n\u003e\n\u003e Everything runs client-side \u0026mdash; **no data ever leaves the browser**. The session is auto-persisted to `IndexedDB` (no upload, no server).\n\nThe in-app **Help** tab is the authoritative reference for tabs, curation model, diagnostic criteria, file format aliases, keyboard shortcuts and configuration.\n\n## Bundled datasets\n\nLoadable in one click from the **Datasets** tab. Several ship with curated `metadata.tsv` and / or `plate_map.tsv` so the same-individual and proximity criteria can score. A welcome-tour demo (Lou et al. 2023, P3 cohort) is also bundled.\n\n## Input formats\n\nAll files are TSV. Column names are matched against several aliases (case-insensitive); the in-app **Help** tab carries the full table.\n\n- `contamination_events.tsv` \u0026mdash; **required.** CroCoDeEL output: `source`, `target`, `rate`, `probability`, `contamination_specific_species`. Header lines starting with `#` are parsed as run metadata.\n- `species_abundance.tsv` \u0026mdash; **required for the scatterplots and diagnostic checks.** Wide format: first column = species id, remaining columns = sample ids.\n- `metadata.tsv` \u0026mdash; *optional.* Unlocks the same-individual criterion and sample-context filters. Recognised fields include `sample_id`, `sample_name`, `subject_id`, `timepoint`, `biome`, `low_biomass`, `low_sequencing_depth`, `group_id`. Extra columns surface as generic pills.\n- `plate_map.tsv` \u0026mdash; *optional.* Unlocks the Plate tab and adjacency filters. Columns: `sample_id`, `plate`, `well` (alphanumeric or `row` + `column`).\n\n## Getting started\n\n```bash\nnpm install\nnpm run dev          # Vite dev server on http://localhost:5173\n```\n\nA welcome dialog offers the guided tour on first visit; you can replay it anytime from the **Help** tab.\n\n### Build for production\n\n```bash\nnpm run build        # static bundle in dist/\nnpm run preview      # preview the production build locally\n```\n\nThe output is fully static and can be served from any HTTP host. The build embeds the git short hash + build date as compile-time constants (visible as a chip in the header that links to the corresponding GitHub commit).\n\n### Deployment\n\nThe repository ships with `.github/workflows/deploy.yml` \u0026mdash; pushing to `main` automatically builds the bundle and deploys it to GitHub Pages. The Vite `base` is set to `/CroCoDeEL_interpreter/` to match the public URL.\n\n## Tech stack\n\n- React 18 + Vite\n- Tailwind CSS (with CSS variables for the dark theme)\n- D3 for color interpolation and the network force-layout\n- `react-range` for dual-thumb sliders\n- `lucide-react` icons\n- IndexedDB for the full session, with a one-shot migration from the legacy `lz-string`-compressed `localStorage` payload\n\n## Citing\n\nIf the interface contributes to a publication, please cite CroCoDeEL itself:\n\n\u003e Goulet L. et al., *CroCoDeEL: accurate control-free detection of cross-sample contamination in metagenomic data*, Nature Communications 2026. [doi.org/10.1038/s41467-026-72637-9](https://doi.org/10.1038/s41467-026-72637-9)\n\nSee [`CITATION.cff`](https://github.com/metagenopolis/CroCoDeEL/blob/main/CITATION.cff) in CroCoDeEL repository for the full author list and a machine-readable record.\n\n## License\n\nGNU General Public License v3.0 \u0026mdash; see [`COPYING`](./COPYING).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetagenopolis%2Fcrocodeel_interpreter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetagenopolis%2Fcrocodeel_interpreter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetagenopolis%2Fcrocodeel_interpreter/lists"}