Giter Club home page Giter Club logo

ndviewer.jl's Introduction

NDViewer

Current Prototype

  • Supports loading any YAXArray.jl
  • Simple YAML syntax for slices and plots, which can be targeted from A UI to create viewer for a dataset
  • Makie plots and axes as plug-ins with attributes and arguments
  • Simple Tyler.jl plug-in prototype
  • Rudementary UI and layout for viewing slices with Colorbar

Goals

  • Usage for large simulation or any other use case that generates lots of 2d-4d data (satellites, neuro imaging, etc.)
  • Drag & Drop HDF5 or NetCDF files (or any other multi dimensional array format that we can read in Julia) and get simple UI to select columns and visual styles
  • Offer UI for simple usage, but expose all functionality programmatically as well
  • Be able to add any other Makie plot to viewer programmatically
  • All functionality is exposed via very simple plugins, which anyone can extent (e.g. offering surface plot of the data in the viewer is a plugin, slicing dims with a slider is one as well. E.g. a user could add a Tyler.jl plugin, to be able to plot maps on top of data).
  • Have sliders to select slice or step through time
  • Do analytics on data slices and display interactive overview plots
  • Work with large time series of 2d/3d data (terabytes if streaming)
  • One click export of movies animating selected time/slice
  • Executable that runs on windows/linux/osx, or stream data to WGLMakie in browser

NDViewer with SpeedyWeather Dataset and slices

image

NDViewer with SpeedyWeather on top of Tyler.jl

image

NDViewer with a 64gb cloud Dataset

image

ndviewer.jl's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar simondanisch avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ndviewer.jl's Issues

ERROR: TypeError: non-boolean (typeof(GeometryBasics.update)) used in boolean context

I just tried to run the examples. It looks like is failing here

data = map(arr_obs, Makie.map_latest(identity, widget.value)) do arr, idx
And I'm getting this error for all cases. Also, do you have specific branches for some packages ?

ERROR: TypeError: non-boolean (typeof(GeometryBasics.update)) used in boolean context
Stacktrace:
  [1] on_latest(f::Makie.var"#78#80"{…}, to_track::Nothing, observable::Observable{…}; update::Function, spawn::Bool)
    @ Makie ~/.julia/packages/Makie/z2T2o/src/interaction/observables.jl:58
  [2] on_latest(f::Function, observable::Observable{Any}; update::Function, spawn::Bool)
    @ Makie ~/.julia/packages/Makie/z2T2o/src/interaction/observables.jl:21
  [3] onany_latest(f::Function, observables::Observable{Int64}; update::Function, spawn::Bool)
    @ Makie ~/.julia/packages/Makie/z2T2o/src/interaction/observables.jl:70
  [4] map_latest!(f::Function, result::Observable{Int64}, observables::Observable{Int64}; update::Function, spawn::Bool)
    @ Makie ~/.julia/packages/Makie/z2T2o/src/interaction/observables.jl:75
  [5] map_latest(f::Function, observables::Observable{Int64}; spawn::Bool, ignore_equal_values::Bool)
    @ Makie ~/.julia/packages/Makie/z2T2o/src/interaction/observables.jl:80
  [6] map_latest(f::Function, observables::Observable{Int64})
    @ Makie ~/.julia/packages/Makie/z2T2o/src/interaction/observables.jl:78
  [7] slice_dim(arr::Observable{YAXArray{Float32, 5, Array{…}, Tuple{…}}}, dim::Int64, dim_name::String)
    @ NDViewer ~/Documents/NDViewer.jl/src/widgets.jl:42
  [8] get_dims!(arrays::Dict{…}, widgets::Dict{…}, target_dims::Vector{…}, names::Vector{…})
    @ NDViewer ~/Documents/NDViewer.jl/src/layers.jl:47
  [9] get_dims!(arrays::Dict{…}, widgets::Dict{…}, target_dims::Vector{…}, names::Vector{…})
    @ NDViewer ~/Documents/NDViewer.jl/src/layers.jl:55
 [10] create_slices(layers::Vector{Dict{…}}, data::YAXArray{Float32, 5, Array{…}, Tuple{…}})
    @ NDViewer ~/Documents/NDViewer.jl/src/layers.jl:119
 [11] create_plot(data::YAXArray{Float32, 5, Array{…}, Tuple{…}}, layers::Vector{Dict{…}})
    @ NDViewer ~/Documents/NDViewer.jl/src/layers.jl:253
 [12] wgl_create_plot(data::YAXArray{Float32, 5, Array{…}, Tuple{…}}, layers::Vector{Dict{…}})
    @ NDViewer ~/Documents/NDViewer.jl/src/layers.jl:297
 [13] load_from_yaml(yaml_str::String)
    @ NDViewer ~/Documents/NDViewer.jl/src/loading.jl:39
 [14] top-level scope
    @ ~/Documents/NDViewer.jl/examples/generic.jl:47
Some type information was truncated. Use `show(err)` to see complete types.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.