/ldg_core

Primary LanguageC++MIT LicenseMIT

About The Project

This is the implementation of grid layout method described in this EuroVis 2022 paper:

S. Frey, “Optimizing Grid Layouts for Level-of-Detail Exploration of Large Data Collections,” 2022, https://doi.org/10.1111/cgf.14537.

It has been tested on macOS BigSur and Ubuntu 22.04.

Prerequisites

These libraries are prerequisites for building

  • Cairo graphics library

  • bzip2

  • cmake

Getting Started

ldg_core can simply be built via cmake. These are exemplary steps to get you started on Linux/macOS.

  • cmake -DCMAKE_BUILD_TYPE=Release ..
  • cmake -DCMAKE_BUILD_TYPE=Debug ..
  • cmake .. -DCMAKE_BUILD_TYPE=Release -D CMAKE_CXX_COMPILER=clang-mp-14 -D CMAKE_EXE_LINKER_FLAGS=-lc++ (Note that on macOS, the standard compiler can be used but offers no support for OpenMP. For OpenMP, a different compiler needs to be used. For example, on my mac, I use clang-14 (obtained via macports).).

Usage

ldg_core can both be used to optimize the placement of member of data collections as well as rendering the resulting grid.

  • run_examples_1k.sh exemplifies the usage for datasets with 1024 members
  • run_examples_full.sh demonstrates the usage for the full datasets (note that this requires more compute time and memory to run)

The required data package can be downloaded from here: https://www.dropbox.com/s/cp4rsq8cyjfl7qs/ldg_data.zip?dl=0.

Unless any termination criteria are specified, the optimizer runs until it is interrupted by CTRL-C.
By default, it prints a short update with the current evaluation score and for how long the assignment has been unchanged (among others). It then completes the ongoing pass phase and then writes the assignment file "qtLeafAssigning.raw.bz" in the specified output directory.

command line switches

Useful command line switches for ldg_core (incomplete list, but should contain most important ones to get started); they all expect one argument:

  • --dataconf, -d | custom config format describing the input dataset (see description below).
  • --outDir | directory where to store generated assignment files
  • --distFuncType | 1: Euclidean distance or 2: Cosine distance
  • --seed | seed for the pseudo RNG
  • --nNeighbors | 4 (for 4-neighborhood, default) or 8 (for 8-neighborhood)
  • --termIterations | specify how many optimization iterations the code should run (default: infinity)
  • —termSame” | interrupt after the assignment hasn't been changed for said number of iterations.
  • --termTime | interrupt after running for a certain number of seconds

data config files

config files contain textual descriptions of the files to load. It assumes that the data is stored in a raw file.

  • VOLUME_FILE arg | name of the raw file to load
  • VOLUME_DIM arg0 arg1 arg2 | volume dimension in x, y, and z direction (integers)
  • VOLUME_DATA_TYPE arg | element type, possible values: UCHAR, USHORT, FLOAT, DOUBLE, UCHAR4
  • VOLUME_FORMAT | data format, possible values: RAW, RAW_BZ2 (raw data file compressed with bzip2)

License

Distributed under the MIT License. See license.md for more information.

Contact

Steffen Frey - s.d.frey@rug.nl

Project Link: https://github.com/freysn/ldg_core

An interactive demo for exploring LDGs is provided here: https://ldg-demo.github.io.