Skip to content
the-omics-osPublic

About

Life sciences components for Bubble Tea v2

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation


Crust

Life sciences components for Bubble Tea.

Sequences, molecules, plates, ontologies, elements, and variants — rendered natively in the terminal.


Go Reference  Bubble Tea v2  MIT License





SequenceViewer — DNA/RNA/protein inspection
SequenceViewer — property-aware DNA/RNA/protein inspection with view cycling, complement strands, and residue-level analysis.

What is Crust?

Crust is a standalone Go component library for structured biological inspection in the terminal. Each component is a normal Bubble Tea v2 model with typed constructors and functional options — drop any of them into your own TUI application.

import "github.com/the-omics-os/crust/sequenceviewer"

viewer := sequenceviewer.New(
    sequenceviewer.WithSequence("ATGGCTAGCTAGCTAGCTAGC", sequenceviewer.DNA),
    sequenceviewer.WithWidth(80),
    sequenceviewer.WithComplement(true),
)

No JSON protocols. No framework lock-in. Just tea.Model implementations you can embed, compose, and theme.


Components

Component Package What it does
SequenceViewer sequenceviewer DNA/RNA/protein display with IUPAC coloring, Clustal amino acid schemes, GC analysis, ORF detection, restriction sites, Tm estimation, and view-switchable property overlays
MoleculeViewer moleculeviewer 2D molecular structure from SMILES with Unicode bond rendering, atom navigation, functional-group highlighting, and a focused inspector pane
PlateMap platemap 96/384/1536-well assay plates with signal, z-score, and control views, hit calling, row/column sweeps, and replicate awareness
OntologyBrowser ontologybrowser Tree navigation for GO, Reactome, ChEBI, and Disease Ontology with lazy-load children, fuzzy search, and node selection
PeriodicTable periodictable Full 118-element interactive table with category coloring, property views, and a detail panel
VariantLens variantlens Multi-layer variant consequence inspector — nucleotide, codon, amino acid, and feature context aligned in one view
QCDashboard qcdashboard Multi-metric quality panel with pass/warn/fail status bars and configurable thresholds
ThresholdSlider thresholdslider Numeric threshold adjustment with visual bar and live item count feedback

Gallery

MoleculeViewer
MoleculeViewer — SMILES to 2D structure with atom navigation
PeriodicTable
PeriodicTable — 118 elements with category coloring
PlateMap
PlateMap — 96/384-well assay plate inspection
OntologyBrowser
OntologyBrowser — GO/Reactome/ChEBI tree navigation

Install

go get github.com/the-omics-os/crust@latest

Import only what you need:

import (
    "github.com/the-omics-os/crust/sequenceviewer"
    "github.com/the-omics-os/crust/periodictable"
    "github.com/the-omics-os/crust/platemap"
)

Requirements: Go 1.25+, Charm v2 (charm.land/bubbletea/v2, charm.land/lipgloss/v2)


Usage

Every component follows the same pattern — functional options, standard tea.Model interface, dynamic theming:

package main

import (
    "fmt"
    "os"

    tea "charm.land/bubbletea/v2"
    "github.com/the-omics-os/crust/periodictable"
)

func main() {
    m := periodictable.New(
        periodictable.WithWidth(100),
    )
    p := tea.NewProgram(m)
    if _, err := p.Run(); err != nil {
        fmt.Fprintf(os.Stderr, "error: %v\n", err)
        os.Exit(1)
    }
}
Run the built-in demos
go run ./sequenceviewer/cmd/demo/
go run ./moleculeviewer/cmd/demo/
go run ./periodictable/cmd/demo/
go run ./platemap/cmd/demo/
go run ./ontologybrowser/cmd/demo/
go run ./variantlens/cmd/demo/

Design Principles

  1. Standalone tea.Model — every component is a normal Bubble Tea v2 model. Typed constructors, functional options. No protocol coupling.
  2. Build on Bubbles, don't replace them — viewport for scrolling, textinput for search, key for bindings. Never reimplement solved problems.
  3. Domain-correct — IUPAC nucleotide colors, Clustal amino acid schemes, standard periodic table categories. Scientific conventions over aesthetics.
  4. Composable — each component is independently importable. No god package. Pick what you need.
  5. Dynamic theming — per-component Theme struct with DefaultTheme() and WithTheme(). No hardcoded colors.
  6. Compute-capable — components carry rich data, not just characters. Residues have chemophysical properties. Analysis runs natively in Go.

Interaction Semantics

All components share a consistent keyboard vocabulary:

Key Action
Arrow keys Navigate within the current view
Tab Cycle view modes / switch panes
Enter Confirm / select / expand
Esc Exit / dismiss / cancel
? Toggle help overlay

Architecture

Crust is a library. It has no opinions about your application architecture.

your-app/
  main.go           # Your Bubble Tea program
  ├── uses crust/sequenceviewer
  ├── uses crust/platemap
  └── uses crust/periodictable

crust/              # This repo — standalone components
  sequenceviewer/   # tea.Model + typed constructors
  moleculeviewer/   # tea.Model + SMILES parser + 2D layout
  platemap/         # tea.Model + well grid navigation
  ontologybrowser/  # tea.Model + lazy-load tree
  periodictable/    # tea.Model + 118 elements
  variantlens/      # tea.Model + multi-layer variant inspector
  qcdashboard/      # tea.Model + metric status bars
  thresholdslider/  # tea.Model + numeric adjustment

Components signal completion via typed messages (SubmitMsg, CancelMsg) and accept live data updates through Set*() mutators — making them ready for streaming workflows without requiring any protocol layer.


Part of Omics-OS

Crust is the terminal UI layer for the Omics-OS ecosystem. Lobster AI is the first consumer — its biocomp/ adapter layer wraps Crust components into the agent protocol for interactive multi-omics analysis sessions.

Lobster AI (multi-agent system)
  └── lobster-tui/internal/biocomp/   # Adapter layer
        └── wraps Crust components    # JSON → typed constructor → tea.Model
              └── crust/*             # This library

You don't need Lobster to use Crust. Any Bubble Tea application can embed these components directly.


Development

go mod tidy           # Sync dependencies
go build ./...        # Compile all packages
go test ./...         # Run all tests
go vet ./...          # Static analysis

Acknowledgements

Charm Crust exists because of the extraordinary work by Charm. Bubble Tea, Lip Gloss, Bubbles, and the entire Charm v2 stack make terminal UIs a joy to build. Thank you to @meowgorithm, @muesli, @caarlos0, @aymanbagabas, @bashbunni, and every Charm contributor. You changed what terminals can be.


Life sciences deserve better tools. Even in the terminal.

Omics-OS  ·  Lobster AI  ·  Docs  ·  GitHub

About

Life sciences components for Bubble Tea v2

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages