Skip to content

HermanMeier/aec-hack-gscan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

56 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GSCAN Infra Vision AEC Hackathon

Problem

Efficiently render large (10 to 100s GBs) voxel (like a minecraft model) datasets in the browser.

Why?

GSCAN uses Muon tomography to image the inside (like X-ray) of infrastructure assests such as bridges.

The results give insight in the location of rebars and potential defects in the reinforced concrete.

Infrastructure asset owners / managers want to be able to easily view the muon tomography results. For this GScan wants to create a web app.

The problem is that the result muon tomography voxel models are very large (10 to 100s GBs), and can therefore not be loaded into the browser completely.

Solution

  1. Convert voxel data to NIFTI
  2. Precomputing slices of voxel data
  3. Serving the precomputed slices on an HTTP server
  4. Run the GScan Infra Vision + neuroglancer frontend

1. Convert voxel data to NIFTI

A tool to generate generate a NIfTI (nii.gz) file format from 3D numpy array where each voxel contains some value. It does not matter if it's normalized, represents scattering angles or something else - this is only a detail which will only have an effect on later visualization, not the NIfTI generation.

cd ./python/nifti-generator
uv sync
uv run nifti-generator -i input_reconstruction.pickle

2. Precomputing slices of voxel data

A comprehensive guide on precomputing the voxel model slices can be found in the precomputation README.md

To run the precomputation bash script:

cd ./python/nifti-generator
uv sync
bash precompute.sh <input_nifti_file_path> <output_dir_path>

3. Serving the precomputed slices on an HTTP server or cloud storage

Static file hosting is fine.

4. Run the GScan Infra Vision + neuroglancer frontend

Frontend code for visualizing slices of large voxel spaces

Requirements

Getting started

Clean install of Node packages:

  1. npm ci

There is a gotcha with running the frontend

  1. npm run build
  2. npm run preview

Developing

  • npm ci
  • npm run dev