gVXR: Training and Mini-Hackathon
First day of Advanced Imaging and Data Analysis (AIDA) gVXR + CIL + qim3d Training and Mini-Hackathon.
Day 1 (Tuesday 10 November 2026) is a hands-on workshop that introduces gVXR (gVirtualXray), an open-source X-ray simulation framework that uses GPU-accelerated implementations of the Beer-Lambert law to generate realistic radiographs and CT projection data in real time. Participants will learn how to build virtual X-ray experiments, simulate CT acquisitions, and create synthetic datasets for imaging research and development.
The training concludes with a mini-hackathon where participants will apply the techniques covered during the tutorials to solve practical imaging problems and explore their own research ideas.
Description
This workshop provides an introduction to simulation-based X-ray imaging using gVXR.
Participants will learn how to:
- Create virtual X-ray imaging setups;
- Define X-ray sources and detectors;
- Model samples using surface meshes and voxelised data;
- Simulate realistic radiographs and CT acquisitions;
- Explore the effects of beam energy, filtration, and detector properties;
- Generate synthetic datasets for algorithm development and machine learning;
- Use simulation to support experiment planning and digital twinning.
The focus is on practical workflows and hands-on exercises using Python and Jupyter notebooks.
Who this workshop is for
This workshop is aimed at:
- Researchers working with X-ray imaging or tomography;
- Scientists planning imaging experiments;
- Developers building image analysis or reconstruction pipelines;
- Researchers and engineers interested in synthetic data generation for image segmentation and analysis with machine learning;
- Students interested in computational imaging;
- Anyone curious about simulation-driven imaging workflows.
Learning Objectives
By the end of this workshop, participants will be able to:
-
Understand the principles and applications of gVXR
- Explain what gVXR (gVirtualXray) is and why it was developed;
- Describe how gVXR is used in:
- Research;
- Education;
- Digital twinning;
- Experiment planning;
- Machine learning and AI.
-
Understand the physical foundations of X-ray image simulation
- Explain the Beer-Lambert attenuation law;
- Describe how X-ray attenuation depends on material composition, density, and thickness;
- Explain how gVXR models X-ray image formation.
-
Understand the capabilities and limitations of gVXR
- Identify the types of samples that can be simulated;
- Describe the main built-in functionalities, including:
- Material modelling;
- Source modelling;
- Detector modelling;
- Spectra generation;
- 3D visualisation;
- CT simulation;
- Understand how realistic imaging effects such as polychromatism, scintillation, blur, and noise are modelled;
- Understand how gVXR has been validated against experiments and other simulation methods.
-
Build and simulate virtual X-ray experiments
- Define sources, detectors, samples, and acquisition geometries;
- Generate realistic radiographs;
- Simulate complete CT acquisitions;
- Generate synthetic datasets for downstream analysis.
-
Use gVXR in practice
- Create reproducible workflows using Python and Jupyter notebooks;
- Use gVXR for experiment planning and digital twinning;
- Apply gVXR to practical imaging challenges during the mini-hackathon.
-
Discover advanced and alternative ways of using gVXR
- Use gVXR through multiple programming languages and interfaces;
- Build simulation workflows using JSON scene descriptions and WebCT;
- Integrate gVXR into scientific imaging, image-analysis, and machine-learning workflows.
Pre-requisites
- Basic knowledge of X-ray imaging is helpful but not required;
- Some familiarity with Python is beneficial;
- No previous experience with gVXR is necessary.
Practical Requirements
Participants should bring a laptop for the day.
The practical exercises will be delivered through a cloud-based platform, so no software installation is required during the training.
Exercises will be provided as Jupyter notebooks and Python scripts, allowing participants to reproduce the material on their own computers after the event. They are available from the gVXR Tutorials repository:
Reproducing the training at home
Instructions to install gVXR locally using Conda or pip are provided in this repository for participants wishing to repeat the exercises at home on Windows, or GNU/Linux.
Schedule
| Time | Session | Topics |
|---|---|---|
| 09:00 - 12:15 | Introduction to gVXR and Hands-on Exercises | • What is gVXR and what do people do with it? • What can we image? • Beer-Lambert attenuation law • Main built-in functionalities • Validation of gVXR • Simulating radiographic and CT acquisitions • Guided hands-on exercises Coffee break / fika included |
| 12:15 - 13:00 | Lunch | |
| 13:00 - 15:00 | ESS Tour | Visit of the European Spallation Source (ESS) facilities |
| 15:00 - 16:30 | Hands-on Exercises and Mini-Hackathon | • How to use gVXR in practice • Choose a challenge and form a team • Mini-hackathon • Instructor-led discussions and support Coffee break / fika included |
| 16:30 - 17:00 | Show-and-Tell | • One slide per team: question, method, result, takeaway |
| 17:00 - 19:00 | Posters and Pizza | Networking, discussions, and poster session |
Mini-hackathon
The training concludes with a mini-hackathon. The aim is to leave with a result you can show, not just a notebook you ran.
Participants pick a challenge (or bring their own), form small teams (1-3 people), build and iterate with gVXR, and present their result in a short show-and-tell.
| Track | Participants will… | …and show |
|---|---|---|
| A. CT artefact lab | Create, quantify and reduce CT artefacts: noise, blur, beam hardening, photon starvation, undersampling | A gallery of artefacts and the settings that cause or cure them |
| B. Digital twin | Build a digital twin of their own scanner, or improve an existing one | Real vs simulated images, side by side |
| C. Synthetic data for AI | Generate a labelled dataset with controlled variability | A dataset and a first trained model or analysis |
| D. Bring your own problem | Apply gVXR to their own research question | A feasibility or “what-if” study |
Every team delivers:
- One figure or short animation that tells the story;
- A reproducible setup: a JSON file or a notebook anyone can re-run;
- One finding: what did the simulation teach you?;
- Their work shared on GitHub (or as a zip) so others can reuse it.
For track D, bring a mesh (STL), a segmented volume, or a description of your scanner and sample.
Training Notebooks
| # | Notebook | Topic | Description |
|---|---|---|---|
| 1 | test_installation.ipynb |
Installation and validation | Verify that gVXR is correctly installed and that the graphics environment is working. |
| 2 | first_xray_simulation.ipynb |
First X-ray simulation | Create a first radiograph using a monochromatic source, an ideal detector, and a simple sample. |
| 3 | numpy_integration.ipynb |
NumPy integration | Access simulated data efficiently using NumPy arrays and avoid unnecessary memory copies. |
| 4 | multi_material-lungman_phantom.ipynb |
Multi-material samples | Create realistic simulations using multiple STL files and reproduce a clinical radiograph of the Lungman anthropomorphic chest phantom. |
| 5 | polychromatism.ipynb |
X-ray spectra and filtration | Simulate realistic X-ray tube spectra, investigate filtration, and visualise spectra. |
| 6 | scintillation.ipynb |
Detector modelling | Model scintillator-based detectors and study their energy response. |
| 7 | visualisation.ipynb |
3D visualisation | Explore the simulation environment using K3D widgets, gVXR’s own ViewerPanel Jupyter widget, static renderings, and interactive 3D windows. |
| 8 | magnification-simulation.ipynb |
CT simulation and imaging geometry | Investigate magnification, source-to-detector distance, image noise, and the impact of acquisition parameters on CT imaging. |
| 9 | magnification-reconstruction.ipynb |
CT reconstruction and artefact analysis | Reconstruct CT data using CIL, analyse artefacts, and evaluate image quality. |
| 10 | segmentation-to-CT_scan-simulation.ipynb |
Segmentation to simulation | Generate CT projection data and reconstructions from segmented images used as virtual phantoms. |
| 11 | simulated_data_generation.py |
Simulation to machine learning | Generate large synthetic datasets and labels for machine learning, segmentation, and image-analysis workflows. |