Skip to content

feat: Add interactive Shiny application, startpage landing, and dockerized deployment - #55

Open
JD2112 wants to merge 4 commits into
OestLab:masterfrom
JD2112:shiny-app
Open

feat: Add interactive Shiny application, startpage landing, and dockerized deployment#55
JD2112 wants to merge 4 commits into
OestLab:masterfrom
JD2112:shiny-app

Conversation

@JD2112

@JD2112 JD2112 commented Aug 18, 2026

Copy link
Copy Markdown

@lovisaor

Summary of Changes

Key Features & Modules

  1. Interactive Workflow Tabs:

    • Start Page & Pipeline Routing (module_startpage.R): Dedicated landing page with digital biology hero visuals, researcher profile links (LiU BKV / ÖstLab), publication DOI, and dynamic routing between Example Data and Custom Data pipelines.
    • Load / Create PAC (module_load.R): Seamlessly load the built-in Drosophila PAC dataset (9,131 seqs x 9 samples), upload .rds/.RData PAC objects, or generate new PAC objects from raw FASTQs + Pheno CSV with trimming controls.
    • Filter & Normalize (module_filter.R): Interactive sliders and selectors for size filtering (18–35 nt), minimum counts, coverage thresholds, and CPM/VST/RLOG normalizations with reactive summary metrics.
    • Annotation Explorer (module_annotate.R): Searchable, interactive DT tables and category breakdown charts for multi-mapping annotation hierarchies.
    • Post-Filtering Analysis (module_analyze.R): Comprehensive analysis suite including:
      • 2D/3D PCA visualization
      • Interactive DESeq2 differential expression volcano plots and tables
      • Size distribution and 5' nucleotide bias histograms
      • Composition stacked bars and pie charts
  2. UX & Design System (inst/shiny/www/style.css):

    • Modern, high-contrast solid design system with Google Fonts (Plus Jakarta Sans, Outfit, and JetBrains Mono).
    • Standardized 100% zoom web proportions with zero edge gaps on the header and 3-column footer.
    • Slide-in offcanvas drawer for live execution logs (.side-log-drawer).
    • Floating footer navigation controls for switching analysis modes.
  3. Package & Deployment Integration:

    • Added run_seqpac_app() in R/run_app.R to launch the Shiny application directly from an interactive R session.
    • Added Dockerfile (rocker/shiny-verse:latest) containerizing all CRAN/Bioconductor dependencies to serve the app on port 3838.
    • Added setup and verification guide in run-shiny.md.

Bug Fixes & Stability

  • S4 PAC Object Deserialization: Added to_s4_pac() helper to properly handle serialized S4 PAC objects from uploaded .rds files without encountering $ operator not defined for this S4 class.
  • DESeq2 Column Parsing: Corrected log2FC regex pattern matching for accurate up/down-regulated sequence counts.

Testing & Verification

  • All R scripts in inst/shiny/ have been verified for syntax with parse().
  • Successfully built and tested against local Docker container (rocker/shiny-verse:latest).
  • Verified both built-in example dataset analysis and custom PAC .rds file uploads.

Checklist

  • Code follows existing package naming and formatting conventions
  • Documentation & CHANGELOG.md updated
  • Zero syntax errors (R CMD check / script validation passed)
  • Tested locally and via Docker container

JD2112 added 4 commits June 24, 2026 14:45
- Create modular UI/Server components for analysis workflow

- Integrate launcher utility function run_seqpac_app()

- Add custom stylesheet for dashboard styling
…aration

- Implement standalone startpage with digital biology hero art and LiU author profiles
- Separate Built-in Drosophila Example data and Own Data upload pipelines
- Fix S4 PAC .rds file upload handling
- Add slide-in live execution log drawer and docked footer return button
- Standardize web UI scaling (1rem base) and edge-to-edge footer
- Update CHANGELOG.md with v0.1.0 changes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant