Coyote3 is a secure, scalable, and extensible web application designed as a one-stop solution for genomic variant interpretation, data management, and clinical reporting. Built by the Section for Molecular Diagnostics (SMD), Lund, Coyote3 streamlines complex diagnostics workflows into a unified interface for clinical geneticists, bioinformaticians, and laboratory personnel.
Coyote3 serves as a comprehensive platform for managing and interpreting DNA and RNA variant data within a clinical diagnostics context. It supports detailed analysis, collaborative review, and permission-controlled access to variant annotations, assay configurations, and reporting assets.
Coyote3 is engineered to meet the needs of modern molecular diagnostics laboratories by offering:
- Secure and auditable access to variant data
- Seamless integration with existing directory (LDAP) and storage systems (MongoDB)
- Role-based workflows supporting multiple user groups
- Extensible architecture tailored to evolving diagnostic pipelines
Coyote3 was developed to address the growing complexity and regulatory requirements in clinical genomics, particularly:
- Ensuring secure, traceable access to sensitive patient-derived variant data
- Supporting multi-assay, multi-user workflows across DNA and RNA pipelines
- Centralizing variant review, interpretation, and reporting in one application
- Allowing dynamic adaptation to different diagnostic panels, rules, and labs
Coyote3 is developed and maintained by the bioinformaticians at Section for Molecular Diagnostics (SMD), Lund, in close collaboration with clinical geneticists. The system is in active use for diagnostics casework, variant interpretation, and report creation.
- Centralized views for DNA, RNA, CNVs, and fusions
- Assay-specific panel and gene filtering
- Clinical-grade annotations and classification workflows
- Sample metadata, gene panels, and variant tracking
- Per-assay default configurations for filtering and quality
- Exportable reports for review boards and clinicians
- LDAP authentication with organizational group sync
- Role- and group-based permissions (admin, user, reviewer)
- Audit trail of changes and logins
- Assay-level summaries and quality metrics
- Sample and variant statistics by panel or user group
- Custom dashboards for reviewers or leads
Coyote3 is built using Python’s Flask web framework and structured with a modular blueprint-based architecture.
| Layer | Technology / Pattern |
|---|---|
| Web Framework | Flask (Blueprint modules for each feature) |
| Backend Database | MongoDB (via PyMongo) |
| Authentication | LDAP (via Flask-LDAP3-Login or custom binding) |
| Frontend | Jinja2 templates + Tailwind CSS |
| Permissions | Role-Based Access Control (RBAC) |
| Audit Logging | Action/event logging for traceability |
Each major functionality is organized into a Flask blueprint:
home– Landing page and samples dashboarddna– DNA variant search, filter, reviewrna– RNA fusion eventscoverage– Depth metrics by panel/sampleadmin– Users, roles, permissionsdashboard– Case review summariesprofile– User-specific profile and account operationslogin– LDAP auth and session handlingpublic– Minimal open endpoints (optional)common– Shared comments, search, and cross-workflow utilitiesdocs– In-app handbook and release information
Production is the default and recommended path. Development options are listed after production.
Install and verify:
git --version
docker --version
docker compose version
python3 --versiongit clone git@github.com:SMD-Bioinformatics-Lund/coyote3.git
cd coyote3Production env file:
cp example.env .coyote3_envDevelopment env file:
cp example.env .coyote3_dev_envUpdate values in .coyote3_env / .coyote3_dev_env (at minimum):
SECRET_KEYCOYOTE3_FERNET_KEYFLASK_MONGO_HOSTFLASK_MONGO_PORTCOYOTE3_DB_NAMECACHE_REDIS_URLCACHE_REDIS_HOSTREPORTS_BASE_PATHAPP_DNSPORT_NBRGENS_URIIGV_URI
Option A: compose wrapper (recommended)
./scripts/compose-with-version.sh up -d --buildOption B: scripted wrapper
./scripts/install.sh./scripts/compose-with-version.sh ps
./scripts/compose-with-version.sh logs --tail=100 coyote3_appOpen:
- App:
/ - Handbook:
/handbook
Option A: compose wrapper
./scripts/compose-with-version.sh -f docker-compose.dev.yml up -d --buildOption B: scripted wrapper
./scripts/install.dev.shexport COYOTE3_VERSION="$(python3 coyote/__version__.py)"
docker compose up -d --build
docker compose -f docker-compose.dev.yml up -d --build./scripts/compose-with-version.sh down
./scripts/compose-with-version.sh -f docker-compose.dev.yml downDocumentation for setup, operations, user workflows, and developer internals is maintained in docs/handbook/.
- Handbook home:
/handbook - Handbook page renderer:
/handbook/<path-to-markdown>.md - About page:
/handbook/about - Changelog:
/handbook/changelog - License:
/handbook/license
The in-app handbook renders markdown directly from docs/handbook/.
MkDocs configuration lives in mkdocs.yml.
Run locally:
pip install -r requirements-docs.txt
mkdocs serveBuild static site:
mkdocs buildTailwind is compiled locally from source instead of using a CDN stylesheet.
Input source:
coyote/static/css/tailwind.input.csstailwind.config.js
Generated output used by templates:
coyote/static/css/tailwind.css
Tailwind scans templates/source files and generates only the classes used by the application. Custom project color aliases (for example brown and olive) are defined once in tailwind.config.js and full shade scales are generated automatically.
Install frontend build dependencies:
npm installBuild CSS once:
npm run build:cssRun continuous CSS build in development:
npm run dev:cssKeep npm run dev:css running while editing templates/styles so the generated CSS stays up to date.
package.json version is auto-synced from coyote/__version__.py by:
scripts/sync-package-version.jsnpm install(viapostinstall)npm run build:css/npm run dev:css(via pre-scripts)
- Production image build (
Dockerfile) compiles Tailwind CSS during image build. - Development app image (
Dockerfile.dev) does not compile Tailwind during build. docker-compose.dev.ymlincludes a dedicatedcoyote3_dev_tailwindservice that installs npm dependencies, builds CSS, and continuously rebuilds CSS (npm run dev:css) while developing.- Compose image tags use
COYOTE3_VERSIONinstead of hardcoded values. - Use
./scripts/compose-with-version.sh up -dto run compose withCOYOTE3_VERSIONexported fromcoyote/__version__.py.
- Fine-grained permissions enforced by custom RBAC middleware
- LDAP-based identity binding and group mapping
- Full audit logging of user logins, data changes, and role escalations
- Access isolation between diagnostic groups or hospital units
Coyote3 is architected to support lab-specific workflows and pipelines:
- Custom assay configuration UI
- Dynamic filtering and gene set expansion
- Extendable role definitions and permission schemes
- Schema-aware editing of variant data and QC thresholds
© 2026 Section for Molecular Diagnostics (SMD), Lund. All rights reserved. Internal use only.
For inquiries, feedback, or deployment support, please contact the SMD development team at Lund.