inviwo

Inviwo - Interactive Visualization Workshop

https://github.com/inviwo/inviwo

Science Score: 39.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.9%) to scientific vocabulary

Keywords

flow-visualization glsl inviwo opencl opengl scientific-visualization visualization volume-visualization
Last synced: 6 months ago · JSON representation

Repository

Inviwo - Interactive Visualization Workshop

Basic Info
  • Host: GitHub
  • Owner: inviwo
  • License: bsd-2-clause
  • Language: C++
  • Default Branch: master
  • Size: 848 MB
Statistics
  • Stars: 494
  • Watchers: 32
  • Forks: 151
  • Open Issues: 66
  • Releases: 4
Topics
flow-visualization glsl inviwo opencl opengl scientific-visualization visualization volume-visualization
Created over 8 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License Code of conduct Citation Authors

README.md

# Inviwo - Interactive Visualization Workshop [![Build Status](https://github.com/inviwo/inviwo/actions/workflows/inviwo.yml/badge.svg?branch=master)](https://github.com/inviwo/inviwo/actions/workflows/inviwo.yml?query=branch%3Amaster) [![BSD licensed](https://img.shields.io/badge/license-BSD-blue.svg?maxAge=2592000)](https://github.com/inviwo/inviwo/blob/master/LICENSE) [![Release version](https://img.shields.io/github/release/inviwo/inviwo.svg?maxAge=86400)](https://github.com/inviwo/inviwo/releases/latest) [![Slack](https://img.shields.io/badge/slack-join?style=social&logo=slack)](https://join.slack.com/t/inviwo/shared_invite/enQtNTc2Nzc2NDQwNzIxLTRiMWM1ZWJiYjljZjkwNWE3OTk3MzYxODZlMDUyMzRmZjUzMzBiZjVhNTM3NWUyNzU1MjI4OWJjMzdkODViMzM) ![](docs/images/inviwo-screenshot.png)


Introduction

Inviwo is a powerful visualization framework designed for scientists, researchers, and developers who need to transform complex data into meaningful visual representations. Whether you're working with medical imaging, scientific simulations, or data analysis, Inviwo provides an intuitive platform for building customized visualization solutions.

With its visual programming interface, you can rapidly prototype complex data processing workflows by connecting components in a visual graph. The framework is designed to be flexible, allowing you to add new functionality with both Python and C++ depending on your preference and needs. More information is available at www.inviwo.org.

Why you might want to use Inviwo:

Freely available for commercial use under the Simplified BSD License.
Cross-platform and runs on Windows, Linux and Mac OS X.
Easily extendable through inclusion of external modules and applications.
Integrated with a GUI for rapid prototyping of data processing pipelines.
Develop in Python or C++, whichever you prefer.

Main Ideas

  • Visual Programming - Build complex data processing pipelines through an intuitive drag-and-drop interface without writing code.
  • Interactive Visualization - Explore your data dynamically with real-time interaction and immediate visual feedback.
  • Multi-language Support - Develop processors in Python for rapid prototyping or C++ for performance-critical tasks.
  • Extensible Architecture - Easily extend functionality through modules for specialized domains like medical imaging or molecular visualization.
  • Visual Debugging - Inspect intermediate results by hovering over data ports, simplifying the debugging process.
  • Data Format Versatility - Support for numerous data formats including HDF5, DICOM, NIfTI, RAW volumes, and common image formats.
  • Easy Parallel Computing - Leverage parallel processing on CPUs and GPUs with simplified abstractions to boost performance.
  • Cross-platform Compatibility - Develop on your platform of choice with full support for Windows, Linux, and macOS.

Quickstart

There are two main ways to get started with Inviwo. You can either install the latest version or build it from source.

Installing Inviwo

Using the precompiled version is the easiest way to get started. It allows you to use the visual interface and develop new functionality using Python.

  1. Download the latest precompiled version for your platform
  2. Extract the archive and run the Inviwo application
  3. Use the Getting started window to browse examples, for instance the Mandelbrot set showcasing a processor built using python.

Build from source

Building Inviwo from source code is the most flexible and allows you to develop new functionality and applications in both C++ and Python. - See the build instructions.

Documentation

Inviwo uses a data processing pipeline where multiple processors are connected through ports to form a pipeline, see the Inviwo network. For example, you might have a data reader processor that loads a volume dataset through its outport, which connects to the inport of a visualization processor that renders the volume, and finally connects to a canvas processor that displays the result. These processors could come from different modules - like the base module for data I/O, the OpenGL module for rendering, and perhaps a specialized module for particular visualization techniques. The visual programming interface makes it easy to construct these pipelines by dragging and connecting processors, while the modular architecture allows you to extend the system with new processors and capabilities through additional modules. - A processor is a fundamental building block in Inviwo that performs a specific data processing or visualization task. - A property is a configurable parameter of a processor that allows users to control its behavior, such as adjusting visualization parameters, numerical values, or algorithm settings. - A port is a connection point on a processor that allows data to flow in (inport) or out (outport) of the processor. - A module is a collection of related processors, data structures, and utilities that extends Inviwo's functionality for a specific domain or purpose.

Detailed descriptions of how to use and develop new functionality can be found in: - Getting started contains videos and high-level descriptions of the user interface and core concepts in Inviwo. - Create Python processors is perhaps the quickest way of extending the Inviwo functionality. - Create C++ processors is the most flexible way of extending the Inviwo functionality. - Create modules to organize your new functionality. - Build instructions details how to setup your environment.
- API details all classes and functions in Inviwo. - Changelog contains info about new key functionalities and breaking changes.

For help and general discussion join us on our Slack server

Applications built with Inviwo

The Inviwo framework and data processing pipelines built using the Inviwo network editor can be integrated into your application. Here are two examples that uses the Inviwo framework under the hood: - Visual Neuro is a visual analysis tool understanding cohorts of brain imaging and clinical data. - ENVISIoN visualizes electronic structure quantities from ab-initio calculations.

Use already implemented techniques from the community

There are a large number of modules developed and maintained in other repositories. These can be added through the CMake option IVW_EXTERNAL_MODULES, see Inviwo modules for more details. The following modules add a variety of functionalities to Inviwo. Please refer to the respective repository for possible issues related to them.

  • Dicom reader Adds support for reading DICOM image/volume files (.dcm file ending)
  • Molecular visualization Adds support for molecular data structures along with reading PDB and mmCIF files. Molecules are rendered in van-der-Waals, Licorice, and Ball and Stick representations.
  • Tensor visualization Adds support for reading/writing tensor fields. Includes algorithms such as HyperLIC and Anisotropy raycasting.
  • Topology visualization Integrates the Topology Toolkit into Inviwo. Includes algorithms for critical points, integral lines, persistence diagrams, persistence curves, merge trees, contour trees, Reeb graphs, Morse-Smale complexes, topological simplification, topology-aware compression, harmonic design, fiber surfaces, continuous scatterplots, Jacobi sets, Reeb spaces, bottleneck and Wasserstein distances between persistence diagrams etc.
  • Clustering Cluster rows of a DataFrame. Supported clustering methods are k-means, DBSCAN, agglomerative, and spectral clustering
  • Vector Graphics Integrates NanoVG, which is a small antialiased vector graphics rendering library for OpenGL.
  • NetCDF Adds support for reading NetCDF files
  • OpenMesh Integrats the OpenMesh library, which is a data structure for polygonal meshes. Includes for example mesh decimation and vertex normal generation.
  • Spring-mass system Simulation of spring-mass system.
  • Visualization Toolkit Integrates support for VTK, which has algorithms for surface reconstruction, implicit modeling, decimation and much more.
  • Photon mapping Volume illumination algorithm for time-varying heterogenous media.
  • Temporal Tree Maps Temporal treemaps for visualizing trees whose topology and data change over time.
  • Developer tools Log inviwo events, useful for debugging interaction.

Is your repository missing above? Just add it and make a pull request!

Project Structure

The repository structure is organized as follows:

``` .github <- Github Actions workflows

apps <- Application entry points inviwo <- Main GUI application for visual programming inviwoglfwminimum <- Minimal GLFW/OpenGL example application inviwoqtminimum <- Minimal Qt/OpenGL example application inviwopyapp <- Python-based application

cmake <- CMake build configuration

data <- Example datasets

docs <- Documentation and images

ext <- External dependencies

include <- Public header files

modules <- Inviwo extension modules basegl <- OpenGL rendering python <- Python integration opengl <- OpenGL utilities ... <- Various domain-specific modules

resources <- Application resources (icons, etc.)

src <- Core source code core <- Framework core functionality py <- Python bindings qt <- Qt-based user interface sys <- System utilities

tests <- Test suite images <- Test image data integrationtests <- Integration tests regression <- Regression tests volumes <- Test volume data

tools <- Development and maintenance tools codegen <- Code generation utilities jenkins <- CI configuration meta <- Metadata tools refactoring <- Code refactoring scripts

CMakeLists.txt <- Main CMake configuration CMakePresets.json <- CMake build presets vcpkg.json <- Package dependencies ```

How to cite

Please cite this paper if you use Inviwo in your research. @Article{inviwo2019, author = {J{\"o}nsson, Daniel and Steneteg, Peter and Sund{\'e}n, Erik and Englund, Rickard and Kottravel, Sathish and Falk, Martin and Ynnerman, Anders and Hotz, Ingrid and Ropinski, Timo}, title = {Inviwo - A Visualization System with Usage Abstraction Levels}, journal = {IEEE Transactions on Visualization and Computer Graphics}, year = {2019}, volume = {26}, number = {11}, pages = {3241-3254}, doi = {10.1109/TVCG.2019.2920639}, ISSN = {1077-2626}, }

Sponsors

This work is supported by Linkping University, Ulm University, and KTH Royal Institute of Technology as well as grants from the Swedish e-Science Research Centre (SeRC), the Excellence Center at Linkping - Lund in Information Technology (ELLIIT), the Swedish Research Council (Vetenskapsrdet), DFG (German Research Foundation), and the BMBF.

Owner

  • Name: Inviwo
  • Login: inviwo
  • Kind: organization
  • Email: info@inviwo.org

A software framework for rapid visualization prototyping

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 20
  • Total pull requests: 219
  • Average time to close issues: over 2 years
  • Average time to close pull requests: 12 days
  • Total issue authors: 5
  • Total pull request authors: 8
  • Average comments per issue: 1.65
  • Average comments per pull request: 0.84
  • Merged pull requests: 163
  • Bot issues: 0
  • Bot pull requests: 15
Past Year
  • Issues: 4
  • Pull requests: 116
  • Average time to close issues: 1 day
  • Average time to close pull requests: 5 days
  • Issue authors: 4
  • Pull request authors: 6
  • Average comments per issue: 1.5
  • Average comments per pull request: 1.01
  • Merged pull requests: 83
  • Bot issues: 0
  • Bot pull requests: 7
Top Authors
Issue Authors
  • martinfalk (11)
  • petersteneteg (4)
  • r-englund (3)
  • ResearchDaniel (1)
  • SuMinRo (1)
Pull Request Authors
  • petersteneteg (130)
  • martinfalk (59)
  • dependabot[bot] (15)
  • ResearchDaniel (11)
  • rartino (1)
  • RasmusHogslatt (1)
  • arrebarritra (1)
  • SuMinRo (1)
Top Labels
Issue Labels
T: Bug (12) P: Jenkins (2) P: Documentation (2) T: For discussion (2) P: Python (2) P: QT (2) S: Unix (1) P: Build System (1) C: GCC (1) T: Feature (1) T: Question (1) C: MSVC (1) T:Refactoring (1) P: CMake (1)
Pull Request Labels
J: Auto Format (38) dependencies (15) github_actions (15) J: Regression Test Failure (8) T: Feature (2) J: Unit Test Failure (2) CI: Debug (2) J: Warning Test Failure (2) J: Integration Test Failure (2) P: QT (1)

Dependencies

.github/workflows/inviwo.yml actions
  • Trass3r/setup-cpp v1 composite
  • actions/checkout v3 composite
  • actions/checkout v2 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • jurplel/install-qt-action v2 composite
  • mikepenz/release-changelog-builder-action v3 composite
  • svenstaro/upload-release-action v2 composite
apps/inviwopyapp/requirements.txt pypi
  • PySide6 *
  • numpy *
  • rich *
  • shiboken6 *
.github/actions/configure-build-env/action.yml actions
  • actions/checkout v4 composite
  • ilammy/msvc-dev-cmd v1.13.0 composite
  • petersteneteg/ccache-action v1.1.0 composite
.github/actions/install-dependencies/action.yml actions
  • KyleMayes/install-llvm-action v2 composite
  • actions/setup-python v5 composite
  • jurplel/install-qt-action v3 composite
tools/docker/Dockerfile docker
  • imagia/nvidia-opengl 1.0-glvnd-1.3-runtime-ubuntu20.04 build
requirements.txt pypi
  • Sphinx *
  • numpy *
  • recommonmark *
  • sphinx-rtd-theme *
tools/vcpkg/bext-sml/vcpkg.json vcpkg
  • vcpkg-cmake *
  • vcpkg-cmake-config *
tools/vcpkg/pybind11/vcpkg.json vcpkg
  • vcpkg-cmake *
  • vcpkg-cmake-config *
tools/vcpkg/sgct/vcpkg.json vcpkg
  • catch2 *
  • glad *
  • glfw3 *
  • glm *
  • json-schema-validator *
  • libpng *
  • minizip *
  • nlohmann-json *
  • scnlib *
  • stb *
  • tinyxml2 *
  • vcpkg-cmake *
  • vcpkg-cmake-config *
  • zlib *
tools/vcpkg/warn/vcpkg.json vcpkg
  • vcpkg-cmake *
  • vcpkg-cmake-config *
  • vcpkg-get-python-packages *
vcpkg.json vcpkg
  • assimp *
  • benchmark *
  • bext-sml *
  • bxzstr *
  • cimg *
  • curlcpp *
  • eigen3 *
  • fast-float *
  • fmt *
  • freetype *
  • glew *
  • glfw3 *
  • glm *
  • gtest *
  • inja *
  • libjpeg-turbo *
  • libpng *
  • llnl-units *
  • md4c *
  • minizip *
  • nifticlib *
  • nlohmann-json *
  • openexr *
  • pegtl *
  • pybind11 *
  • roaring *
  • tclap *
  • tiff *
  • tinydir *
  • tinyxml2 *
  • utfcpp *
  • warn *
  • zlib *