• Stars
    star
    127
  • Rank 282,790 (Top 6 %)
  • Language
    Clojure
  • License
    MIT License
  • Created about 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Interactive document creation for exploratory graphics and visualizations. 咲いて (in bloom). Built on top of hanami vega/vega-lite library with CodeMirror and self hosted ClojureScript

Clojars Project

saite

Data exploration, dashboards and interactive documents; with editor support (emacs, vim, sublime, and paredit), graphics and visualization; markdown; and LaTex. 咲いて (in bloom). Built on top of Hanami Vega/Vega-Lite library, CodeMiror, MathJax, amd Specter.

saite logo

Saite is a Clojure(Script) client/server application for the dynamic exploration of data and the creation and sharing of interactive documents and dashboards. Documents fully support creation of interactive visualizations, coupled with editors, markdown and LaTex. Dashboards can use any Re-com component for interactive widgets mixed with Vega/Vega-Lite visualizations. These documents and dashboards are saved as simple text and thus may be shared via any number of ways. End user creation of documents is highly declarative in form and nature. Dashboards may use of mixture of client side widgets and visualization and server side dataset processing for the final data to use.

Table of Contents

toc

Introduction

Saite is a Clojure(Script) client/server application for dynamic interactive data exploration, mixed server/client dashboard creation, and the creation of live shareable documents. Documents and dashboards fully support creation of interactive visualizations, coupled with editors, Re-com components, markdown and LaTex. These documents and dashboards are saved as simple text and thus may be shared via any number of ways. End user creation of documents is highly declarative in form and nature, while dashboards are a mix of declarative forms and reactive functions.

Vega-Lite (VGL) and/or Vega (VG) specifications. These specifications are declarative and completely specified by data (JSON maps). VGL compiles into the lower level grammar of VG which in turn compiles to a runtime format utilizting lower level runtime environments such as D3, HTML5 Canvas, and WebGL.

Visualizations are formed from parameterized templates which are recursively transformed into legal VGL or VG specifications. In Saite, creating and transforming these templates is generally done on the server side in typical REPL style development. Transformed templates (with their data or data source) are sent to one or more sessions (brower viewers) for rendering.

Saite also functions as an example application built with Hanami. As such it has all the capability of Hanami's template system and recursive transformation of parameterized templates.

Saite also uses the tab system provided by Hanami for automatic tab construction and updates, plus the application specific tab capabilities of that system. Further, Saite makes use of Hanami's visualization messaging system, in particular, the user-msg multimethod with implementations for application initialization, namespace creation, server side code execution, saving and reading of documents and code files, saving all visualizations, et.al.

Installation

Uberjar

There is a self installing/updating uberjar that makes a plug and play application of Saite. This is the quickest and easiest way to simply use Saite as a kind of "super notebook" or Clojure(Script) analog of RStudio. See aerosaite for more on this.

Library

To install, add the following to your project :dependencies:

[aerial.saite "1.1.0"]

Running

To get a full running system, you will first need to activate the server:

(ns aerial.saite.examples

  (:require
           ...
           [aerial.saite.core :as saite]
           ...))

(saite/start 3000) ; start the server on port 3000
;;;
;;; To stop the server:
;;; (saite/stop)

Once the server is running, in your browser, navigate to the port you used when starting it. The client will initialize and show the starting page. The default starting page is determined on the client via the header function aerial.saite.core/saite-header. The 'on page load' initialization code block is the final piece of code in aerial.saite.core.cljs.

Outline

[total new documentation being written]

An attempt at an outline for the documentation

  • Overview

    • Videos

    • Tutorials

    • Capabilities

      • Dynamic data exploration
      • Interactive documents
      • Full client/server dashboards
    • startup

      • <-> convert tab
      • Scratch tab
    • Controls panel

      • Logo
      • Session marker
      • Application spinner
      • Load and save group
        • Documents
        • Code files
      • Editor visibility group
        • Open (show)
        • Close (hide)
      • Tab manipulation group
        • Add
        • Duplicate
        • Frame mgt
        • Undo and Redo
        • Left/right movement
        • Edit
        • Delete
      • Info group
        • Theme
        • Quick help
        • Documentation
    • Tabs panel

  • Control panel

  • Tabs

    • Editor / output
    • Editor / document body
  • Editors

    • Modes
      • emacs, vim, sublime
    • Paredit
    • Keys
      • Bindings
      • Functions
      • Configuration
      • Defaults
  • Namespaces

    • Per tab and/or cross tab
    • Dynamic dependencies
    • Requirements
  • Document construction

    • Picture frames
    • Visualizations
    • Markdown
    • LaTex
    • Live editors
    • Tab local frame markdown and live editor defaults
    • Auto frame insertions
      • Vis
      • Text
      • Code mirror
      • Markdown
  • Dashboard construction

    • Reactive components
    • Callback symbols and registry
    • Mixed client/server code
  • Auto run on document load

    • Three modes
      • :clj, :cljs, :mixed
    • Order of running
    • Methods

Overview

Videos

Tutorials

More Repositories

1

hanami

Interactive arts and charts plotting with Clojure(Script) and Vega-lite / Vega. Flower viewing 花見 (hanami)
Clojure
343
star
2

hanasu

A very light weight, simple websocket based messaging system in Clojure(Script). Converse/talk 話す(hanasu).
Clojure
25
star
3

DMM

Data Flow Matrix Machines. Generalization of recurrent neural networks.
Clojure
15
star
4

aerobio

Extensible full DAG streaming computation server with services and jobs for RNA-Seq, Tn-Seq, WG-Seq and Term-Seq.
Clojure
6
star
5

gaisr

Genomic Analysis Illuminating Structured RNA
Clojure
5
star
6

js-local-vcf

Javascript local VCF and Tabix index file parsing and processing
JavaScript
5
star
7

aerial.utils

Various utility functionality covering common tasks; trees; clustering; graphs; probability, stats, and information theory, et.al.
Clojure
5
star
8

js-local-bam

Javascript local BAM and BAI index file parsing and processing
JavaScript
4
star
9

JS-Binary-VCF-Tabix

JavaScript BGZF VCF and binary Tabix readers
JavaScript
4
star
10

bbhanami

Bare Bones example Hanami client/server app
Clojure
3
star
11

jsbgzf

Javascript bgzf inflation and deflation
JavaScript
2
star
12

clj-iobio

A robust, flexible, full program DAG, declarative tool definition, extensible toolset iobio server in Clojure. With function nodes, streaming and non streaming flow, dynamic caching, logging, and superior error handling.
Clojure
1
star
13

pyhanasu

Hanasu for Python
Python
1
star
14

Aerial

Aerial graph/model db
1
star
15

msgpacket

Client<->Server/Peer<->Peer message protocol and implementations
Clojure
1
star
16

aerial.bio.utils

Various bioinformatic general utility tools for unified file reading, sequence xform, sequence entropy information processing , et.al.
Clojure
1
star