Skip to content

waldronlab/curator-desk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Curator Desk

Curator dashboard for reviewing BioAnalyzer predictions — sortable table + field-level feedback form. Built with R, Quarto, and DT and served on GitHub Pages (no server).

Live site: https://waldronlab.io/curator-desk/

Features (aligned with Streamlit app in BioAnalyzer-Backend)

  • Data: Load CSV (or Parquet if arrow is installed) from a path or URL at build time.
  • Table: Sortable, searchable, filterable (DT DataTables); Priority Score; PubMed links.
  • Feedback: Form for curator ID, PMID, overall verdict, comment, BioAnalyzer version, and field-by-field validation (curator TRUE label + “Was BioAnalyzer correct?”). Submit via a GitHub issue (CSV is pre-filled in the issue body). There’s also a “Download CSV only” option.

Prerequisites

  • R (≥ 4.0)
  • Quarto CLI
  • R packages: DT, jsonlite (and arrow if you use Parquet)
Rscript -e 'install.packages(c("DT", "jsonlite", "arrow"), repos = "https://cloud.r-project.org")'

Build locally

From the repo root (e.g. curator-desk/):

quarto render

Output is written to docs/. Open docs/index.html in a browser to test.

Data source

The table is built from a single dataset at render time:

  • Default: data/sample.csv (minimal example).
  • Custom: Set one of:
    • CURATOR_DATA_PATH — path to a local CSV/Parquet (e.g. ../results/analysis_results.csv).
    • CURATOR_DATA_URL — URL to a CSV/Parquet (e.g. raw GitHub URL).

Examples:

# Use a local file
export CURATOR_DATA_PATH="data/sample.csv"
quarto render

# Use a URL (e.g. raw file from GitHub)
export CURATOR_DATA_URL="https://raw.githubusercontent.com/your-org/your-repo/main/data/predictions.csv"
quarto render

To update the table with new data, re-run quarto render (or use a CI job that does this and publishes docs/).

CI and deployment

  • CI (.github/workflows/ci.yml) runs on every pull request and push to main: builds the site with Quarto, installs R dependencies (with cache), and checks that docs/index.html is produced. Use it as a required status check so PRs must pass before merge: Settings → Branches → Branch protection rules for main → Require status checks → select "Build & validate".
  • Deploy (.github/workflows/quarto-publish.yml) runs on push to main only: builds the site, uploads the artifact, and deploys to GitHub Pages. R package caching is enabled to speed up runs.

Feedback workflow (GitHub Pages only)

This project uses only GitHub Pages; no other platform (e.g. Vercel) is required.

  1. Curators fill the feedback form and click Submit review.
  2. A new tab opens on your repo’s new-issue page with the title and body pre-filled (the feedback CSV is in the body). The curator clicks Create on GitHub to create the issue.
  3. Maintainers review in the issue — the full feedback (curator initials, comments, field-by-field validation) is in the issue body as a CSV block.

Optionally, the GitHub Action (.github/workflows/curator-feedback-notify.yml) runs when an issue whose title contains "Curator feedback" is opened: it posts a short comment on the issue acknowledging the feedback. Review is done directly in the issue (the CSV is in the issue body).

Build-time options:

  • GITHUB_REPO — repo URL (e.g. https://github.com/owner/repo) so Submit review opens the correct new-issue page. Set in your deploy workflow or locally before quarto render.
  • BIOANALYZER_VERSION (default 1.0.0) — fixed version in the form.

File layout

curator-desk/
  _quarto.yml     # Quarto project, output-dir: docs
  index.qmd       # Main page: table + feedback form
  R/
    config.R      # STATUS_COLUMNS, options, feedback schema
    data.R        # load_data(), normalize_dataset(), priority_score, PMID link
    feedback.R    # feedback row builder (for reference; CSV is built in JS)
  data/           # Put your analyzed-papers CSV here
  curator-feedback/   # Feedback CSVs from submitted reviews (via GitHub Action)
  docs/           # Rendered output (git-tracked for Pages)
  README.md       # This file

Schema alignment

Column names and options match curator_table/app.py:

  • Status values: ABSENT, PARTIALLY_PRESENT, PRESENT
  • Feedback columns: PMID, curator_id, overall_verdict, comment, timestamp, bioanalyzer_version, plus pred__*, true__*, col_feedback__* for each status field.

About

Curator dashboard for reviewing BioAnalyzer predictions — sortable table, field-level feedback, submit via GitHub Issues

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors