Skip to content

algbio/emerald-ui

Repository files navigation

EMERALD-UI logo EMERALD-UI

Live Application

Interactive Protein Sequence Alignment Visualization Tool, available at algbio.github.io/emerald-ui

EMERALD-UI provides advanced visualization of optimal and suboptimal protein sequence alignments, enabling researchers to explore conserved / robust regions between these alignments. These conserved regions are the alignment-safe windows introduced by the EMERALD algorithm.

About EMERALD

EMERALD goes beyond traditional pairwise sequence alignment by identifying not just the optimal alignment, but also suboptimal alignments and regions (safety windows) where alignments are consistently reliable across different scoring schemes. This has been described in Sensitive inference of alignment-safe intervals from biodiverse protein sequence clusters using EMERALD, Genome Biology 2023.

Key Features

  • Interactive Alignment Visualization: Explore the optimal and suboptimal alignment space between two sequences
  • Safety Window Analysis: Identify regions where alignments are conserved / robust
  • Multiple Input Methods: Load FASTA files, search UniProt database, or paste sequences directly
  • Customizable Parameters: Fine-tune the suboptimal alignment space by adjusting the suboptimality threshold (Δ delta), and fine-tune the robustness measure by adjusting the safety parameter (α alpha)
  • 3D Structure Integration: Overlay protein structure information when available
  • Export & Sharing: Generate publication-ready images and shareable URLs
  • Local-First with API Integrations: Alignment computation runs locally in your browser (WASM). External APIs are used for optional sequence/structure retrieval (UniProt, AlphaFold/RCSB), and an optional aggregate run counter is updated when analyses are run.

Technical Implementation

This application is built with:

  • Frontend: React 19 + TypeScript + Vite
  • Algorithm: WebAssembly (WASM) implementation of EMERALD
  • Visualization: Custom Canvas-based interactive plotting
  • Styling: CSS with CSS custom properties for theming
  • Data Sources: UniProt REST API, AlphaFold API, and RCSB PDB

Dependencies

Runtime dependencies

  • @emotion/styled ^11.14.0
  • @mui/material ^7.1.2
  • canvas2svg ^1.0.16
  • d3 ^7.9.0
  • jspdf ^4.2.1
  • molstar ^5.8.0
  • react ^19.1.0
  • react-dom ^19.1.0
  • react-icons ^5.5.0
  • svg2pdf.js ^2.7.0

Development dependencies

  • @eslint/js ^9.25.0
  • @types/d3 ^7.4.3
  • @types/react ^19.1.2
  • @types/react-dom ^19.1.2
  • @vitejs/plugin-react ^4.4.1
  • eslint ^9.25.0
  • eslint-plugin-react-hooks ^5.2.0
  • eslint-plugin-react-refresh ^0.4.19
  • gh-pages ^6.3.0
  • globals ^16.0.0
  • sass ^1.89.2
  • typescript ~5.8.3
  • typescript-eslint ^8.30.1
  • vite ^6.3.5

Acknowledgements

EMERALD-UI gratefully builds on two open-source visualization ecosystems:

Citation

Please cite the following reference when using EMERALD-UI for your research:

If your analysis includes protein structures, you may consider also citing the Mol* viewer used by EMERALD-UI:

  • David Sehnal, Sebastian Bittrich, Mandar Deshpande, Radka Svobodová, Karel Berka, Václav Bazgier, Sameer Velankar, Stephen K. Burley, Jaroslav Koča, Alexander S. Rose. Mol Viewer: modern web app for 3D visualization and analysis of large biomolecular structures*. Nucleic Acids Research 49(W1):W431-W437 (2021). https://doi.org/10.1093/nar/gkab314

Development Getting Started

Prerequisites

  • Node.js 18.0 or higher
  • npm or yarn package manager

Installation

  1. Clone the repository:
git clone https://github.com/algbio/emerald-ui.git
cd emerald-ui
  1. Install dependencies:
npm install
  1. Start the development server:
npm run dev
  1. Open your browser and navigate to http://localhost:5173

  2. New changes to the main branch are automatically published to github pages and visible at https://algbio.github.io/emerald-ui via the github workflow deploy-pages.yml. If you prefer to do this manually, you can also publish from the local installation by running:

npm run deploy

Project Structure

.
├── docs/                         # Documentation and design assets
├── public/                       # Static assets served by Vite
├── src/
│   ├── assets/                   # App bundled assets
│   ├── components/
│   │   ├── alignment/            # Alignment graphs and parameter panels
│   │   ├── information/          # Informational content components
│   │   ├── sequence/             # Sequence input and listing UI
│   │   ├── share/                # URL sharing and export UI
│   │   ├── shared/               # Reusable shared components
│   │   ├── structure/            # 3D structure visualization/superposition
│   │   └── ui/                   # Generic UI primitives and feedback
│   ├── context/                  # React context providers
│   ├── emerald-wasm/             # WASM wrapper and type declarations
│   ├── hooks/                    # Custom hooks
│   ├── temp/                     # Temporary/debug data
│   ├── types/                    # Project-level type declarations
│   ├── utils/
│   │   ├── api/                  # External API helpers
│   │   ├── canvas/               # Canvas rendering and plotting logic
│   │   ├── export/               # Export helpers (PNG/SVG/PDF)
│   │   ├── sequence/             # Sequence processing helpers
│   │   └── structure/            # Structure parsing/processing helpers
│   ├── App.tsx
│   └── main.tsx
├── index.html
├── package.json
└── vite.config.ts

Available Scripts

  • npm run dev - Start development server
  • npm run build - Build for production
  • npm run preview - Preview production build
  • npm run lint - Run ESLint

Contributing

Contributions are welcome! Please feel free to Report a Problem or a submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Releases

No releases published

Packages

 
 
 

Contributors