# Python
## Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

## C extensions
*.so

## Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
/lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

## Virtual environments
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
depictio-cli-venv/
depictio-venv/

## Package managers
### pipenv
#Pipfile.lock

### poetry
#poetry.lock

### pdm
.pdm.toml
#pdm.lock

### pixi
.pixi/
.pixi-data/
# pixi.lock is committed for reproducible builds

### pip
pip-log.txt
pip-delete-this-directory.txt

## PEP 582
__pypackages__/

# Testing & Coverage
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/
test-results/

# IDEs & Editors
## PyCharm and other JetBrains IDEs
.nfs*
# Refer to the JetBrains-specific .gitignore: https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore

## Spyder
.spyderproject
.spyproject

## Rope
.ropeproject

# Type Checkers
.mypy_cache/
.dmypy.json
dmypy.json
.pyre/
.pytype/

# Cython & Compilation
cython_debug/
*.manifest
*.spec

# Framework Specific
## Django
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

## Flask
instance/
.webassets-cache

## Scrapy
.scrapy

## Celery
celerybeat-schedule
celerybeat.pid

## Jupyter
.ipynb_checkpoints

## SageMath
*.sage.py

# Documentation
## Sphinx
docs/_build/

## mkdocs
/site

# Databases
/depictioDB/*
depictioDB/
depictioDB_bak/
depictioDB_dev/
depictioDB_K8S/
diagnostic.data/
journal/
*.db
dump.rdb

# Data Files
## Large/Heavy files
*.parquet
# Allow nf-core ampliseq multiqc data (any template version — `*` matches the
# version segment so a bump never has to touch these rules)
!depictio/projects/nf-core/ampliseq/*/run_1/multiqc_data/multiqc.parquet
!depictio/projects/nf-core/ampliseq/*/multiqc/multiqc_data/multiqc.parquet
# Allow nf-core viralrecon bundled run_1 (multiqc.parquet only — TSVs allow-listed below)
!depictio/projects/nf-core/viralrecon/*/run_1/multiqc/multiqc_data/multiqc.parquet
# Allow the catalog conformance project's synthetic MultiQC report (~70 KB,
# generated from stub logs so the e2e suite can exercise the MultiQC catalog
# outputs without vendoring a reference pipeline's 24 MB parquet)
!depictio/projects/init/catalog_conformance/run_1/multiqc/multiqc_data/multiqc.parquet
*.gz
*.csv
*.tsv
# Allow the adapt_feedb_ms realtime-demo seed (imported by the deploy doc's quickstart)
!depictio/projects/test/adapt_feedb_ms/phenobase.csv
# Allow nf-core ampliseq data files (any template version)
!depictio/projects/nf-core/ampliseq/*/*.tsv
!depictio/projects/nf-core/ampliseq/*/input/*.tsv
!depictio/projects/nf-core/ampliseq/*/input/samplesheet.csv
# Allow nf-core viralrecon bundled mosdepth TSVs (4 files under run_1/variants/bowtie2/mosdepth)
!depictio/projects/nf-core/viralrecon/*/run_1/variants/bowtie2/mosdepth/amplicon/*.tsv
!depictio/projects/nf-core/viralrecon/*/run_1/variants/bowtie2/mosdepth/genome/*.tsv
# Allow nf-core viralrecon canonical seed TSVs (recipe outputs materialised once
# and committed so init resolver can convert recipe DCs → file_scan instead of
# pruning them on every fresh deploy)
!depictio/projects/nf-core/viralrecon/*/*.tsv
# Allow the nf-core template reference inputs that the megatest never publishes.
# Each pipeline's megatest.yaml carries the curl lines that mirror these from
# nf-core/test-datasets; they are committed so the template is self-describing and
# SAMPLESHEET_FILE resolves without network access.
!depictio/projects/nf-core/differentialabundance/*/input/*.tsv
!depictio/projects/nf-core/funcscan/*/input/*.csv
!depictio/projects/nf-core/rnafusion/*/input/*.csv
!depictio/projects/nf-core/rnaseq/*/input/*.csv
!depictio/projects/nf-core/taxprofiler/*/input/*.csv
!depictio/projects/nf-core/chipseq/*/input/*.csv
!depictio/projects/nf-core/atacseq/*/input/*.csv
!depictio/projects/nf-core/cutandrun/*/input/*.csv
# chipseq is pre-DSL2 and publishes its software versions as CSV, not YAML.
!depictio/projects/nf-core/chipseq/*/pipeline_info/*.csv
# atacseq 1.2.2 is pre-DSL2 too and publishes the same CSV shape.
!depictio/projects/nf-core/atacseq/*/pipeline_info/*.csv
# Allow advanced_viz_showcase synthetic fixtures
!depictio/projects/init/advanced_viz_showcase/data/*.tsv
# Allow the catalog conformance project's generated data. Every file here is a
# copy of a catalog fixture, staged either as a recipe seed at the project root
# or inside the fake run tree — see scripts/generate_project.py.
!depictio/projects/init/catalog_conformance/*.tsv
!depictio/projects/init/catalog_conformance/run_1/**/*.tsv
# Allow the catalog CLI smoke project's staged raw tool output. Small, derived
# from the catalog's own fixtures, and the input the CLI runs the recipes on —
# see scripts/generate_fixtures.py.
!depictio/projects/test/catalog_cli_smoke/run_1/**/*.tsv
!depictio/projects/test/catalog_cli_smoke/run_1/**/*.csv
# Allow catalog fixtures (small samples co-located in each module folder)
!depictio/catalog/**/*.tsv
!depictio/catalog/**/*.csv

# Local-only projects (not version controlled)
depictio/projects/reference/pools/

## Application Data
data_prepare.json
data.json
data/depictio_data.json
data/depictio_data.json.bak
data/jbrowse_df_mapping_dict.json
wf_data/
data/minio/
user_data.json
*.b64
dashboards.json

# Security & Keys
## Keys
### ignore everything under depictio/keys
/depictio/keys/*
depictio/keys/internal_api_key.pem

### but keep the folder itself
!/depictio/keys/

### and keep your placeholder file
!/depictio/keys/.gitkeep

## Sensitive data
.env
.env.*
!.env.example
!docker-compose/
!docker-compose/.env

*_token.yaml
depictio/.depictio/
depictio/.depictio/*.yaml


## Screenshots
screenshot_*.png
# Ignore all screenshots recursively
depictio/dash/**/screenshots/**
# Dashboard screenshots are generated at runtime by the worker and served from
# here; the backend mkdir's the dir at boot (depictio/api/main.py). Not tracked
# by default — but the reference-dashboard thumbnails below are allow-listed so
# fresh deployments ship good cards (seeded onto the PVC by the helm
# copy-screenshot-files init container).
depictio/api/static/screenshots/**

# Dashboard logos are uploaded at runtime through the editor's Settings drawer
# (POST /dashboards/upload_logo); the backend mkdir's the dir at boot.
depictio/api/static/dashboard_logos/**

# Instance branding logos are uploaded at runtime through the admin Branding
# panel (POST /utils/branding/logo/{variant}); the backend mkdir's the dir.
depictio/api/static/branding/**

# Allow reference dashboard screenshots (iris, penguins, ampliseq)
# Iris dashboard (6824cb3b89d2b72169309737)
!depictio/dash/static/screenshots/6824cb3b89d2b72169309737.png
!depictio/dash/static/screenshots/6824cb3b89d2b72169309737_light.png
!depictio/dash/static/screenshots/6824cb3b89d2b72169309737_dark.png
# Penguins dashboard (6824cb3b89d2b72169309738)
!depictio/dash/static/screenshots/6824cb3b89d2b72169309738_light.png
!depictio/dash/static/screenshots/6824cb3b89d2b72169309738_dark.png
# Ampliseq MultiQC dashboard (646b0f3c1e4a2d7f8e5b8ca2)
!depictio/dash/static/screenshots/646b0f3c1e4a2d7f8e5b8ca2.png
!depictio/dash/static/screenshots/646b0f3c1e4a2d7f8e5b8ca2_light.png
!depictio/dash/static/screenshots/646b0f3c1e4a2d7f8e5b8ca2_dark.png
# Ampliseq Analysis dashboard (646b0f3c1e4a2d7f8e5b8ca6)
!depictio/dash/static/screenshots/646b0f3c1e4a2d7f8e5b8ca6_light.png
!depictio/dash/static/screenshots/646b0f3c1e4a2d7f8e5b8ca6_dark.png

# Allow reference dashboard screenshots served by the API (React viewer cards).
# These are regenerated against real reference data and committed so fresh
# deploys / rebuilt images carry correct thumbnails. Reference dashboards use
# deterministic seed IDs sharing the body `46b0f3c1e4a2d7f8e5b` (ampliseq
# 646b0f3c1e4a2d7f8e5b8..., viralrecon 746b0f3c1e4a2d7f8e5b9...); runtime
# dashboards get random ObjectIds and stay ignored.
!depictio/api/static/screenshots/?46b0f3c1e4a2d7f8e5b*.png
# Iris Petal Analysis (6a720e8b59acf2d013e48100) — a static-ID init dashboard
# like iris and penguins, but not yet created by db_init, so this thumbnail is
# ahead of the seeding it belongs to.
!depictio/api/static/screenshots/6a720e8b59acf2d013e48100_light.png
!depictio/api/static/screenshots/6a720e8b59acf2d013e48100_dark.png

# Ensure parent directories are also un-ignored
!depictio/
!depictio/dash/
!depictio/dash/static/
!depictio/dash/static/screenshots/

depictio/tests/dash/screenshots/

# Cloud Storage
## S3 (bundled SeaweedFS; legacy MinIO dir kept ignored)
minio_data/
seaweedfs_data/
seaweedfs_backup_data/
delta_dev/

# Software Specific
## JBrowse2
jbrowse2/
depictio/jbrowse2_configs/
jbrowse-watcher-plugin/jbrowse2_sessions/
jbrowse2_sessions/
jbrowse2_configs/
jbrowse-watcher-plugin/

## PyBuilder
.pybuilder/
target/

# System Files
.DS_Store

# Application Specific
## Depictio
# depictio/dash/static/
# depictio/dash/assets/
ldap_config/
ldap_db/

## Dashboard YAML directories
### Local dashboards (instance-specific, not version controlled)
dashboards/local/

### Templates are version controlled, so keep them
# dashboards/templates/

# Development Tools
.aider*

# CI/CD
## GitHub Actions
!iris.csv
!demographic_data.csv
!physical_features.csv
!sample_metadata.csv
!test_data.csv

# Cypress
depictio/tests/e2e-tests/node_modules/
depictio/tests/e2e-tests/cypress/screenshots/
# depictio/tests/e2e-tests/package-lock.json

# pnpm workspace root — `pnpm install` at the repo root creates a top-level
# node_modules alongside the per-package ones already ignored in each
# workspace member's own .gitignore.
/node_modules/

# Backups
depictio/backups/
depictio/depictio/backups/

# Benchmarks
benchmark_datasets/

# Sensitive Helm values files
helm-charts/depictio/values-*-secrets.yaml
helm-charts/depictio/*secrets*.yaml
# Snapshots of live releases (helm get values/manifest) — carry the same
# secrets the files above do, since the release has them already merged in.
.helm-backups/

# Profiling
prof_files/

# Development Environment
## Dev directories
dev/jbrowse_dev/assets/multiqc/
dev/jbrowse_dev/assets/
dev/flask-login/.env
dev/token/private_key.pem
dev/token/public_key.pem
dev/token/token.txt
dev/celery/jobs.json
dev/dev_design_visu/data/
dev/dev_delta/
dev/dev_minio/
!dev/multiqc_parser
dev/dev-multiqc-parquet/detailed_extraction_reports/
depictio/api/v1/configs/pools_dataset/*.xlsx
*.bak*
cache/

# Multi-instance devcontainer files
.env.instance
.env
data/depictio-*/
# Generated MultiQC scale-test fixtures + their machine-local project configs
data/scale_scenarios/
.devcontainer/docker-compose.git-mount.yaml
docker-compose.override.yaml

# Old data directories (kept for backward compatibility reference)
# depictioDB/
# minio_data/
# cache/

# Auto-generated claude-mem session context (per-directory CLAUDE.md)
# Only curated CLAUDE.md files are tracked — opt-in via negation below.
**/CLAUDE.md
!/CLAUDE.md
!/depictio/dash/CLAUDE.md
!/depictio/api/v1/endpoints/utils_endpoints/CLAUDE.md

# Superseded skill definitions (now lives in .claude/)
.claude-code/

# AI session handoff / continuation prompt scratch
**/CONTINUATION_PROMPT*.md
**/HANDOFF.md
**/*_HANDOFF.md

# Dashboard YAML exports — auto-generated/instance-specific, dir created on-demand by loader.py
depictio/dashboards_yaml/

# Locally-downloaded nf-core fixture files (regenerable via
# dev/advanced_viz_docs_screenshots/extract_nfcore_fixtures.py)
dev/advanced_viz_docs_screenshots/fixtures/

# Node modules (any package directory)
**/node_modules/

# IDE / editor settings
**/.vscode/

# Generated CLI configs (emitted by upload.sh on the fly)
**/.cli_config.generated.yaml
.depictio-instance-CLI.yaml

# Generated catalog-preview single-file bundle (built via pnpm run build:catalog-preview)
depictio/viewer/dist-catalog-preview/
depictio/viewer/dist-table-harness/

# Generated Iconify icon subset (emitted by depictio/viewer/scripts/generate-icon-subset.mjs,
# which every `pnpm dev` / `pnpm build` runs first). Regenerate with `pnpm run icons`.
depictio/viewer/src/generated/

# Nextflow runtime artifacts (from local pipeline validation runs)
.nextflow/
.nextflow.log*
work/

# Benchmark harness generated artifacts (datasets + results are generated live,
# never committed — see benchmark/README.md). The glob covers the per-run
# directories a `--output` flag creates alongside the default one.
benchmark/output*/
