Skip to content

brinkmanlab/iMicroSeqDataPortal_Dashboard

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iMicroSeq Dashboard

Proof-of-concept web dashboard for the Canadian iMicroSeq Data Portal. It summarizes environmental sequencing data with summary cards, charts, and an interactive sample coverage map, and other interactive plots.

Live site: dashboard.imicroseq-dataportal.ca

Pages

Page File Description
At a Glance public/index.html Hero stats, growth chart, environmental breakdown, Canada coverage map
Interactive Dashboard public/dashboard.html Deeper charts (sample breakdown, viral loads, and related views)

Both pages share public/styles.css and public/app.js. Chart data is loaded from gzip-compressed JSON under public/data/.

Project structure

public/                 Static site (HTML, CSS, JS, images)
  app.js                Fetches /data/*.json.gz, renders Vega-Lite & Leaflet
  data/                 Generated JSON (gzip) + static geo assets
cf-worker/              Cloudflare Worker (serves `public/` as assets)
scripts/                Python builders + update_website_data.sh
  lib/imicroseq_common.py
data/                   Source export (not committed): imicroseq.csv.xz
wrangler.toml           Worker name, routes, assets binding

Prerequisites

  • Node.js 18+ (for Wrangler local dev and deploy)
  • Python 3 (to regenerate chart data from the portal export)

Local development

  1. Install dependencies:

    npm install
  2. Place the portal CSV export at data/imicroseq.csv.xz (see Updating data).

  3. Regenerate JSON assets (if you have the source file):

    bash scripts/update_website_data.sh
  4. Start the dev server (serves public/ via the Worker):

    npm run dev

    Wrangler prints a local URL (typically http://localhost:8787). Open index.html or dashboard.html from that origin so /data/*.json.gz paths resolve correctly.

Updating data

Chart and summary payloads are built from a single compressed export:

  • Input: data/imicroseq.csv.xz
  • Output: gzip JSON files in public/data/

Run all builders in one step:

bash scripts/update_website_data.sh

Individual scripts (run from repo root with python3):

Script Output
scripts/build_index_hero_stats.py index_hero_stats.json.gz
scripts/build_index_growth_per_year.py index_growth_per_year.json.gz
scripts/build_index_environmental_breakdown.py index_environmental_breakdown.json.gz
scripts/build_index_sample_coverage_map.py index_sample_coverage_map.json.gz
scripts/build_dashboard_sample_breakdown.py dashboard_sample_breakdown.json.gz
scripts/build_dashboard_viral_loads.py dashboard_viral_loads.json.gz

Static geo files (CAN.geo.json, ProvinceCapitalCoords.csv) live in public/data/ and are not regenerated by these scripts.

Optional R smoothing utilities for viral-load processing are under scripts/smoothing/.

Deployment

Deploy to Cloudflare Workers (custom domain configured in wrangler.toml):

npm run cf:deploy

The Worker serves static assets from public/; no application server is required beyond Cloudflare’s edge.

Tech stack

About

iMicroSeq Data Portal visualization dashboard

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 39.4%
  • R 32.0%
  • CSS 11.3%
  • HTML 9.3%
  • Python 7.3%
  • Shell 0.4%
  • TypeScript 0.3%