Skip to main content

gVirtualXray (gVXR): Virtual X-Ray Imaging Library on GPU

What does gVXR do?

gVirtualXRay (gVXR) is a C++ library to simulate X-ray imaging. It is based on the Beer-Lambert law to compute the absorption of light (i.e. photons) by 3D objects (here polygon meshes). It is implemented on the graphics processing unit (GPU) using the OpenGL Shading Language (GLSL).

SimpleGVXR is a smaller library build on the top of gVirtualXRay. It provides wrappers to Python, R, Ruby, Tcl, C#, Java, and GNU Octave.

What can you do with gVXR?

X-ray simulations created with gVirtualXRay have been used in a wide range of applications, including

  • real-time medical simulators,
  • proposing a new densitometric radiographic modality in clinical imaging,
  • studying noise removal techniques in fluoroscopy,
  • teaching particle physics and X-ray imaging to undergraduate students in engineering, and XCT to masters students,
  • predicting image quality and artifacts in material science, etc. gVXR has also been used to produce a high number of realistic simulated images in optimisation problems and to train machine learning algorithms, with applications in oncology and radiology in medicine as well as material science.

Further details are available in three community review articles:

Who is it for?

gVXR is an application programming interface (API). It is for software developers who wish to simulate realistic X-ray images in realtime when photon scattering is negligible. gVXR's features can be used in C++, Python, R, Ruby, Tcl, C#, Java, and GNU Octave. To simplify the setting up of a simulation, a user-friendly JSON file format has been designed (note: for Python only at the moment).

If programming is not your thing, check out WebCT, a feature-rich environment for previewing and simulating X-ray scans on the web browser.

Is gVXR available for free?

Yes, gVXR is open source. Its source code is available under the BSD 3-Clause License. For details on use and redistribution please refer to http://opensource.org/licenses/BSD-3-Clause.

Is gVXR available as a package that can be deployed without building it?

Python wheels are available on Python Package Index (Pypi). For other programming languages, you will have to build gVXR from the source code.

Is gVXR code publicly available to download?

Yes. It is hosted in an established third-party source code repository called SourceForge.

Installation

pip install gvxr

You may also install Numpy, tifffile and Matplotlib to run the test below.

pip install numpy matplotlib tifffile

Usage

There are 6 main steps to simulate an X-ray image:

  1. Create a renderer (OpenGL context): gvxr.createOpenGLContext()
  2. X-ray source:
    • Position
      • x: -40.0 cm,
      • y: 0.0 cm,
      • z: 0.0 cm,
      • gvxr.setSourcePosition(-40.0, 0.0, 0.0, "cm")
    • Shape:
      • cone beam: gvxr.usePointSource(), or
      • Parallel (e.g. synchrotron): gvxr.useParallelBeam()
  3. Spectrum:
    • monochromatic (0.08 MeV, i.e. 80 keV),
    • 1000 photons per ray,
    • gvxr.setMonoChromaticPerPixelAtSDD(0.08, "MeV", 1000)
  4. Detector:
    • Position:
      • x: 10.0 cm,
      • y: 0.0 cm,
      • z: 0.0 cm,
      • gvxr.setDetectorPosition(10.0, 0.0, 0.0, "cm")
    • Orientation:
      • 0, 0, -1
      • gvxr.setDetectorUpVector(0, 0, -1)
    • Resolution:
      • $640 \times 320$ pixels
      • gvxr.setDetectorNumberOfPixels(640, 320)
    • Pixel spacing:
      • 0.5, 0.5, mm
      • gvxr.setDetectorPixelSize(0.5, 0.5, "mm")
  5. Sample:
    • Welsh dragon in a STL file:
      • ID: "Dragon",
      • STL file: "input_data/welsh-dragon-small.stl",
      • Unit: mm,
      • gvxr.loadMeshFile("Dragon", "input_data/welsh-dragon-small.stl", "mm")
    • Material of the sample (ID = "Dragon"):
      • For a chemical element such as iron, you can use the Z number or symbol:
        • gvxr.setElement("Dragon", 26), or
        • gvxr.setElement("Dragon", "Fe")
      • For a compound such as water, do not forget to specify the density:
        • gvxr.setCompound("Dragon", "H2O")
        • gvxr.setDensity("Dragon", 1.0, "g/cm3")
        • gvxr.setDensity("Dragon", 1.0, "g.cm-3")
      • For a mixture such as Titanium-Aluminum-Vanadium alloy, do not forget to specify the density:
        • gvxr.setMixture("Dragon", "Ti90Al6V4")
        • gvxr.setMixture("Dragon", [22, 13, 23], [0.9, 0.06, 0.04])
        • gvxr.setMixture("Dragon", ["Ti", "Al", "V"], [0.9, 0.06, 0.04]) # Not yet implemented
        • gvxr.setDensity("Dragon", 4.43, "g/cm3")
        • gvxr.setDensity("Dragon", 4.43, "g.cm-3")
  6. Compute the corresponding X-ray image: xray_image = gvxr.computeXRayImage()

You can find the Jupyter Notebook of the example below at: https://github.com/effepivi/gvxr-demos/blob/main/training-course/02-first_xray_simulation.ipynb.

#!/usr/bin/env python3

# Import packages
import os
import numpy as np # Who does not use Numpy?

import matplotlib # To plot images
import matplotlib.pyplot as plt # Plotting
from matplotlib.colors import LogNorm # Look up table
from matplotlib.colors import PowerNorm # Look up table

# from tifffile import imwrite # Write TIFF files

from gvxrPython3 import gvxr # Simulate X-ray images

# Create an OpenGL context
print("Create an OpenGL context")
gvxr.createOpenGLContext()

# Create a source
print("Set up the beam")
gvxr.setSourcePosition(-40.0,  0.0, 0.0, "cm")
gvxr.usePointSource()
#  For a parallel source, use gvxr.useParallelBeam()

# Set its spectrum, here a monochromatic beam
# 1000 photons of 80 keV (i.e. 0.08 MeV) per ray
gvxr.setMonoChromaticPerPixelAtSDD(0.08, "MeV", 1000)
# The following is equivalent: gvxr.setMonoChromaticPerPixelAtSDD(80, "keV", 1000)

# Set up the detector
print("Set up the detector")
gvxr.setDetectorPosition(10.0, 0.0, 0.0, "cm")
gvxr.setDetectorUpVector(0, 0, -1)
gvxr.setDetectorNumberOfPixels(640, 320)
gvxr.setDetectorPixelSize(0.5, 0.5, "mm")

# Locate the sample STL file from the package directory
path = os.path.dirname(gvxr.__file__)
fname = path + "/welsh-dragon-small.stl"

# Load the sample data
if not os.path.exists(fname):
    raise IOError(fname)

print("Load the mesh data from", fname)
gvxr.loadMeshFile("Dragon", fname, "mm")

print("Move ", "Dragon", " to the centre")
gvxr.moveToCentre("Dragon")

# Material properties
print("Set ", "Dragon", "'s material")

# Iron (Z number: 26, symbol: Fe)
gvxr.setElement("Dragon", 26)
gvxr.setElement("Dragon", "Fe")

# Liquid water
gvxr.setCompound("Dragon", "H2O")
gvxr.setDensity("Dragon", 1.0, "g/cm3")
gvxr.setDensity("Dragon", 1.0, "g.cm-3")

# Titanium Aluminum Vanadium Alloy
gvxr.setMixture("Dragon", "Ti90Al6V4")
gvxr.setMixture("Dragon", [22, 13, 23], [0.9, 0.06, 0.04])
# gvxr.setMixture("Dragon", ["Ti", "Al", "V"], [0.9, 0.06, 0.04]) # Not yet implemented
gvxr.setDensity("Dragon", 4.43, "g/cm3")
gvxr.setDensity("Dragon", 4.43, "g.cm-3")

# Compute an X-ray image
# We convert the array in a Numpy structure and store the data using single-precision floating-point numbers.
print("Compute an X-ray image")
x_ray_image = np.array(gvxr.computeXRayImage()).astype(np.single)

# Update the visualisation window
gvxr.displayScene()

# Create the output directory if needed
if not os.path.exists("output_data"):
    os.mkdir("output_data")

# Save the X-ray image in a TIFF file and store the data using single-precision floating-point numbers.
gvxr.saveLastXRayImage('output_data/raw_x-ray_image-02.tif')

# The line below will also works
# imwrite('output_data/raw_x-ray_image-02.tif', x_ray_image)

# Save the L-buffer
gvxr.saveLastLBuffer('output_data/lbuffer-02.tif')

# Display the X-ray image
# using a linear colour scale
plt.figure(figsize=(10, 5))
plt.title("Image simulated using gVirtualXray\nusing a linear colour scale")
plt.imshow(x_ray_image, cmap="gray")
plt.colorbar(orientation='vertical')
plt.show()

# using a logarithmic colour scale
plt.figure(figsize=(10, 5))
plt.title("Image simulated using gVirtualXray\nusing a logarithmic colour scale")
plt.imshow(x_ray_image, cmap="gray", norm=LogNorm(vmin=x_ray_image.min(), vmax=x_ray_image.max()))
plt.colorbar(orientation='vertical')
plt.show()

# using a Power-law colour scale (gamma=0.5)
plt.figure(figsize=(10, 5))
plt.title("Image simulated using gVirtualXray\nusing a Power-law colour scale ($\gamma=0.5$)")
plt.imshow(x_ray_image, cmap="gray", norm=PowerNorm(gamma=1./2.))
plt.colorbar(orientation='vertical')
plt.show()

# Display the X-ray image and compare three different lookup tables
plt.figure(figsize=(17, 7.5))

plt.suptitle("Image simulated with gVirtualXray visualised", y=0.75)

plt.subplot(131)
plt.imshow(x_ray_image, cmap="gray")
plt.colorbar(orientation='horizontal')
plt.title("using a linear colour scale")

plt.subplot(132)
plt.imshow(x_ray_image, norm=LogNorm(), cmap="gray")
plt.colorbar(orientation='horizontal')
plt.title("using a logarithmic colour scale")

plt.subplot(133)
plt.imshow(x_ray_image, norm=PowerNorm(gamma=1./2.), cmap="gray")
plt.colorbar(orientation='horizontal')
plt.title("using a Power-law colour scale ($\gamma=0.5$)")

plt.tight_layout()

plt.savefig("output_data/projection-02.pdf", dpi=600)

# Change the sample's colour
# By default the object is white, which is not always pretty. Let's change it to purple.
red = 102 / 255
green = 51 / 255
blue = 153 / 255
gvxr.setColour("Dragon", red, green, blue, 1.0)

# This image can be used in a research paper to illustrate the simulation environment, in which case you may want to change the background colour to white with:
gvxr.setWindowBackGroundColour(1.0, 1.0, 1.0)

# Update the visualisation window
gvxr.displayScene()

# Take the screenshot and save it in a file
screenshot = gvxr.takeScreenshot()
plt.imsave("output_data/screenshot-02.png", np.array(screenshot))

# or display it using Matplotlib
plt.figure(figsize=(10, 10))
plt.imshow(screenshot)
plt.title("Screenshot of the X-ray simulation environment")
plt.axis('off')
plt.show()


# Interactive visualisation
# The user can rotate the 3D scene and zoom-in and -out in the visualisation window.

# - Keys are:
#     - Q/Escape: to quit the event loop (does not close the window)
#     - B: display/hide the X-ray beam
#     - W: display the polygon meshes in solid or wireframe
#     - N: display the X-ray image in negative or positive
#     - H: display/hide the X-ray detector
# - Mouse interactions:
#     - Zoom in/out: mouse wheel
#     - Rotation: Right mouse button down + move cursor```
gvxr.renderLoop()

Awards & accolades

  1. 2nd place Eurographics 2009 - Medical Prize for "ImaGiNe-S : Imaging Guided Needle Simulation". DOI: 10.2312/egm.20091024
  2. Winner of Ken Brodlie Prize for best paper Theory and Practice of Computer Graphics 2009 (TPCG 2009) for "Simulation of X-ray Attenuation on the GPU". DOI: 10.2312/LocalChapterEvents/TPCG/TPCG09/025-032
  3. Winner of David Duce Prize for best short paper Computer Graphics and Visual Computing 2019 (CGVC 2019) for "Projectional Radiography Simulator: an Interactive Teaching Tool". DOI: 10.2312/cgvc.20191267
  4. Best poster presentation 6th Dimensional X-ray Computed Tomography Conference (dXCT 2022) for "WebCT: Fully Featured Browser-Based Interactive X-Ray Simulations for Scan Planning and Training".
  5. Runner-up award for best student presentation Image-Based Simulation for Industry (IBSim-4i) 2023 for "Creating Functional Digital Shadows of X-ray systems".
  6. 1st place CoSeC Impact Award 2023 for "Digital twins of industrial XCT scanners". URL: https://www.cosec.ac.uk/impact/cosec-announces-impact-award-for-2023/
  7. Best Presentation Award International Symposium on Machinery and Mechatronics for Agriculture and Biosystems Engineering (ISMAB) 2024 for "Enhancing Material Decomposition in spectral CT Imaging via Deep Learning".
  8. Best paper award for tomography outreach tools Developments in X-Ray Tomography XV, SPIE Optics & Photonics 2024 for "X-ray simulations with gVXR as a useful tool for education, data analysis, set-up of CT scans, and scanner development". DOI: 10.1117/12.3025315
  9. 3rd place Dirk Bartz Prize for Visual Computing in Medicine and Life Sciences 2025 (Eurographics Medical Prize) for "X-ray simulations with gVirtualXray in medicine and life sciences". DOI: 10.2312/evm.20251974

Build and test status of the trunk

gVirtualXRay may be built from source using CMake. The status of the latest build can be found on CDash.

gVXR is cross-platform: it runs on

  • MS Windows(Intel architecture only, it might work on ARM architecture too),
  • GNU/Linux (Intel & ARM architectures), and
  • MacOS computers (Intel architecture only).

It supports GPUs from any manufacturer. It can even run on platforms without GPUs (in this case, be patient as the CPU will be used).

gVXR is scalable: it runs on

  • Raspberry Pi,
  • laptops,
  • desktop PCs,
  • supercomputers, and
  • cloud infrastructures, including:
    • Google Colab,
    • Code Ocean, and
    • STFC cloud.

Containerization using Docker is even possible.

It should be possible to run it on other platforms, but this has not been tested.

How to cite

If you use gVXR in your own applications, particularly for research & development, I will be grateful if you could cite the articles as follows:

  • Seminal paper: F.P. Vidal, M. Garnier, N. Freud, J.M. Létang, and N.W. John: Simulation of X-ray attenuation on the GPU. Proceedings of Theory and Practice of Computer Graphics 2009, Eurographics Association, Cardiff, UK (2009), pp. 25-32, doi: 10.2312/LocalChapterEvents/TPCG/TPCG09/025-032
  • First reference to gVXR as an opensource software: F.P. Vidal and P.-F. Villard: Development and validation of real-time simulation of X-ray imaging with respiratory motion. Computerized Medical Imaging Graphics, 49 (2016), pp. 1-15, doi: 10.1016/j.compmedimag.2015.12.002
  • Clinical validation study: J.L. Pointon, T. Wen, J. Tugwell-Allsup, A. Sújar, J.M. Létang, and F.P. Vidal: Simulation of X-ray projections on GPU: Benchmarking gVirtualXray with clinically realistic phantoms. Computer Methods and Programs in Biomedicine, 234 (2023), pp. 107500, doi: 10.1016/j.cmpb.2023.107500
  • Comprehensive review paper: Vidal, F. P., Afshari, S., Ahmed, S., Albiol, A., Albiol, F., Béchet, É., … Villard, P.-F. (2025).: X-ray simulations with gVXR in education, digital twining, experiment planning, and data analysis Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms, vol. 568, article 165804, doi: 10.1016/j.nimb.2025.165804
@article{POINTON2023107500,
    title = {{Simulation of X-ray projections on GPU: Benchmarking gVirtualXray with clinically realistic phantoms}},
    journal = {Computer Methods and Programs in Biomedicine},
    volume = {234},
    pages = {107500},
    year = {2023},
    issn = {0169-2607},
    doi = {10.1016/j.cmpb.2023.107500},
    author = {Jamie Lea Pointon and Tianci Wen and Jenna Tugwell-Allsup and 
        Aaron S\'ujar and Jean Michel L\'etang and Franck Patrick Vidal}
}

@article{Vidal2016ComputMedImagingGraph,
    author = "Franck P. Vidal and Pierre-Frédéric Villard",
    title = "Development and validation of real-time simulation of X-ray imaging
    with respiratory motion ",
    journal = "Computerized Medical Imaging and Graphics ",
    year = "2016",
    volume = "49",
    pages = "1-15",
    month = apr,
    doi = "10.1016/j.compmedimag.2015.12.002",
    publisher = {Elsevier},
}

@inproceedings{Vidal2009TPCG,
    author = {F. P. Vidal and M. Garnier and N. Freud and J. M. L\'etang and N. W. John},
    title = {Simulation of {X-ray} Attenuation on the {GPU}},
    booktitle = {Proceedings of Theory and Practice of Computer Graphics 2009},
    year = 2009,
    pages = {25-32},
    month = jun,
    address = {Cardiff, UK},
    annotation = {Jun~17--19, 2009},
    note = {Winner of Ken Brodlie Prize for Best Paper},
    doi = {10.2312/LocalChapterEvents/TPCG/TPCG09/025-032},
    publisher = {Eurographics Association},
}

@article{Vidal2025NIMB,
	author = {Vidal, Franck P. and Afshari, Shaghayegh and Ahmed, Sharif and Albiol, Alberto and 
	    Albiol, Francisco and B{\'e}chet, {\'E}ric and Bellot, Alberto Corb{\'\i} and Bosse, Stefan and 
	    Burkhard, Simon and Chahid, Younes and Chou, Cheng-Ying and Culver, Robert and Desbarats, Pascal and 
	    Dixon, Lewis and Friemann, Johan and Garbout, Amin and Garc{\'\i}a-Lorenzo, Marcos and 
	    Giovannelli, Jean-Fran{\c c}ois and Hanna, Ross and Hatton, Cl{\'e}mentine and Henry, Audrey and 
	    Kelly, Graham and Leblanc, Christophe and Leonardi, Alberto and L{\'e}tang, Jean Michel and 
	    Lipscomb, Harry and Manchester, Tristan and Meere, Bas and Michelet, Claire and Middleburgh, Simon and 
	    Mihail, Radu P. and Mitchell, Iwan and Perera, Liam and Puig, Mart{\'\i} and Racy, Malek and 
	    Rouwane, Ali and Seznec, Herv{\'e} and S{\'u}jar, Aaron and Tugwell-Allsup, Jenna and 
	    Villard, Pierre-Fr{\'e}d{\'e}ric},
	doi = {10.1016/j.nimb.2025.165804},
	journal = {Nuclear Instruments and Methods in Physics Research Section B: Beam Interactions with Materials and Atoms},
	keywords = {X-ray imaging; Computed tomography; Simulation; GPU programming; Digital twinning; Registration; Machine learning},
	pages = {165804},
	title = {{X-ray simulations with gVXR in education, digital twining, experiment planning, and data analysis}},
	volume = 568,
	year = 2025
}

Scientific and Industrial Collaboration

If you are interested in any form of collaboration (e.g. to develop your own application), e.g. research papers or grant proposals, drop the package maintainer an email.

© Copyright 2011-2023, Dr Franck P. Vidal, School of Computer science and Electronic Engineering, Bangor University. All rights reserved

© Copyright 2024-, Prof Franck P. Vidal, Computed Tomography, Scientific Computing, Science and Technology Facilities Council (STFC). All rights reserved

Metadata

Release files for gvxr 2.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for gvxr 2.1.1
File Actions
gvxr-2.1.1-pp311-pypy311_pp80-manylinux_2_34_x86_64.whl PyPy 3.11 PyPy 3.11 8.0 Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-pp311-pypy311_pp80-manylinux_2_34_x86_64.whl
gvxr-2.1.1-pp311-pypy311_pp80-manylinux_2_34_aarch64.whl PyPy 3.11 PyPy 3.11 8.0 Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-pp311-pypy311_pp80-manylinux_2_34_aarch64.whl
gvxr-2.1.1-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl
gvxr-2.1.1-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl
gvxr-2.1.1-cp315-cp315t-manylinux_2_34_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-cp315-cp315t-manylinux_2_34_x86_64.whl
gvxr-2.1.1-cp315-cp315t-manylinux_2_34_aarch64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-cp315-cp315t-manylinux_2_34_aarch64.whl
gvxr-2.1.1-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details for gvxr-2.1.1-cp315-cp315-win_amd64.whl
gvxr-2.1.1-cp315-cp315-manylinux_2_34_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-cp315-cp315-manylinux_2_34_x86_64.whl
gvxr-2.1.1-cp315-cp315-manylinux_2_34_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-cp315-cp315-manylinux_2_34_aarch64.whl
gvxr-2.1.1-cp314-cp314t-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-cp314-cp314t-manylinux_2_34_x86_64.whl
gvxr-2.1.1-cp314-cp314t-manylinux_2_34_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-cp314-cp314t-manylinux_2_34_aarch64.whl
gvxr-2.1.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for gvxr-2.1.1-cp314-cp314-win_amd64.whl
gvxr-2.1.1-cp314-cp314-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-cp314-cp314-manylinux_2_34_x86_64.whl
gvxr-2.1.1-cp314-cp314-manylinux_2_34_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-cp314-cp314-manylinux_2_34_aarch64.whl
gvxr-2.1.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for gvxr-2.1.1-cp313-cp313-win_amd64.whl
gvxr-2.1.1-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-cp313-cp313-manylinux_2_34_x86_64.whl
gvxr-2.1.1-cp313-cp313-manylinux_2_34_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-cp313-cp313-manylinux_2_34_aarch64.whl
gvxr-2.1.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for gvxr-2.1.1-cp312-cp312-win_amd64.whl
gvxr-2.1.1-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-cp312-cp312-manylinux_2_34_x86_64.whl
gvxr-2.1.1-cp312-cp312-manylinux_2_34_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-cp312-cp312-manylinux_2_34_aarch64.whl
gvxr-2.1.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for gvxr-2.1.1-cp311-cp311-win_amd64.whl
gvxr-2.1.1-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-cp311-cp311-manylinux_2_34_x86_64.whl
gvxr-2.1.1-cp311-cp311-manylinux_2_34_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-cp311-cp311-manylinux_2_34_aarch64.whl
gvxr-2.1.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for gvxr-2.1.1-cp310-cp310-win_amd64.whl
gvxr-2.1.1-cp310-cp310-manylinux_2_34_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ x86-64 Details for gvxr-2.1.1-cp310-cp310-manylinux_2_34_x86_64.whl
gvxr-2.1.1-cp310-cp310-manylinux_2_34_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ ARM64 Details for gvxr-2.1.1-cp310-cp310-manylinux_2_34_aarch64.whl

Total release size: 764.2 MB

Release files / gvxr-2.1.1-pp311-pypy311_pp80-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-pp311-pypy311_pp80-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags Linux glibc 2.34+ x86-64 PyPy 3.11 PyPy 3.11 8.0
SHA-256 checksum
How to use checksums
c12709bd1613da38b67ed6b73875ca434d660503d31472736cf9594e207bceb7
BLAKE2b-256 checksum
How to use checksums
e985f6317d5124d2b4b2f97dc2b38bb5e1d961c1df69cb28d0bd206dad7826bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-pp311-pypy311_pp80-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-pp311-pypy311_pp80-manylinux_2_34_aarch64.whl
Size 30.2 MB
Tags Linux glibc 2.34+ ARM64 PyPy 3.11 PyPy 3.11 8.0
SHA-256 checksum
How to use checksums
5138b806cec3f6c991961cf3d61928143cdb10eb423f39ff58e2227dcf0eab3e
BLAKE2b-256 checksum
How to use checksums
0b62351d00ef01f61181ab115bf5d7f96dfc3b4c85e9e220550b5d9d0d4198bf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags Linux glibc 2.34+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
c155568c603ea49a044f1ebed1be8689dd40de9c46c9fc8b6f05e9ccfab1e582
BLAKE2b-256 checksum
How to use checksums
3df53360f5f97271ab731f997d96a05ad56d18ae139c0f1e63ac80e658904e46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl
Size 30.2 MB
Tags Linux glibc 2.34+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
f8caf311b1a894cde5347ab90788915c1a640123a8c1568a7aa2fbcf772d99d6
BLAKE2b-256 checksum
How to use checksums
0b9b2b078b2cdbb31902276eb231bc6f154bde2216b5d11a8a824df0a612b648
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp315-cp315t-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-cp315-cp315t-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
2e43783ff5ce5e0b0f7fa16876b18679adee13721ad06b04aa8e30ddd0cd956d
BLAKE2b-256 checksum
How to use checksums
3b1c2628246431507ca13349a6465accf8c16a6a9fe7f402c63e415cfeb34b7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp315-cp315t-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-cp315-cp315t-manylinux_2_34_aarch64.whl
Size 30.2 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
8c5d73fc2b5cdb3d20a2e883d13e52b6a96a4b8212141f0ba152c14fac7395bb
BLAKE2b-256 checksum
How to use checksums
0f3e1bc557d165ff848553bf70950e66c4f553cd69a9e73bd829b4957b3418f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp315-cp315-win_amd64.whl

Download URL gvxr-2.1.1-cp315-cp315-win_amd64.whl
Size 25.9 MB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
ef0beb619c442129eb3ad9e37df62e2abc8e3d79bfeccd0685131c55fb892de9
BLAKE2b-256 checksum
How to use checksums
250a67c377f31e5258b1bc36c860612051ef46816439c7fe4eb9da20a291809c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp315-cp315-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-cp315-cp315-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags CPython 3.15 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
5e1d926dfbe44832b8ec493cbb3dfb0db32786b7473ad9f4d0fe012b6f0ee39a
BLAKE2b-256 checksum
How to use checksums
cf8d0832e183dbf512e3cf5cd62981a3a9e56e107c43324080b02dadf38cba05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp315-cp315-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-cp315-cp315-manylinux_2_34_aarch64.whl
Size 30.3 MB
Tags CPython 3.15 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
a0934f9a058ebb9ffe72402d1d4f5511064dfe5142f7cb15c67f680356bcf130
BLAKE2b-256 checksum
How to use checksums
7c3554d42d535e6b7e8f52c8fe33cb07045a57d0e114c3c1da9c980c225c6967
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp314-cp314t-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-cp314-cp314t-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
c3440fef3117531bbab173d315103c63bb0bfb3e752bfcad59849b26d7fbb5bd
BLAKE2b-256 checksum
How to use checksums
a82139b9b4a0c74c2c57da5c35b0c6782e08652c9668461fb81f5684e40b7d5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp314-cp314t-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-cp314-cp314t-manylinux_2_34_aarch64.whl
Size 30.2 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
92f096a4a0e270f6c8a2444f0e588d14e697f7d088ed4da07ba9852d820cd866
BLAKE2b-256 checksum
How to use checksums
835320c3dd7f417809d5add0181f1afc1e8c13ae7645f32a88c4aef64ae070f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp314-cp314-win_amd64.whl

Download URL gvxr-2.1.1-cp314-cp314-win_amd64.whl
Size 25.9 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
dbe5b482dd1058a65574d437866cd0e3fdcc8813c045ba0675de312c283bbffd
BLAKE2b-256 checksum
How to use checksums
cb072afb7285eee205d1cf310dd2637e86ea6295993f9d3a8e1d9c3080cd7d74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-cp314-cp314-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags CPython 3.14 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
d45a3f46da364b538982f7023506cb1d8afd05681c3cc224f1e201e32e445445
BLAKE2b-256 checksum
How to use checksums
5871f811d5e6e14fea46c9e2bdcb0748d73fa3b757f296d5e3325a61ac91beea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp314-cp314-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-cp314-cp314-manylinux_2_34_aarch64.whl
Size 30.3 MB
Tags CPython 3.14 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
e28f9b4a287db3406d426e120c92e55ee2baca0598a1183ecdbd2f762c1430c1
BLAKE2b-256 checksum
How to use checksums
e74870b7d46b552612581d2c5aa3bf1eb56825782b5ead6c92f5893880bf60aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp313-cp313-win_amd64.whl

Download URL gvxr-2.1.1-cp313-cp313-win_amd64.whl
Size 25.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
c6985c5b150a4bb487da2409fb04fcbcfd2c539195907a297b38bdc8aa639f4b
BLAKE2b-256 checksum
How to use checksums
0fa0d03f25e0ff8d6d5af70a58904185759acabf846bc1112b6737bf9c40a3ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-cp313-cp313-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
0baa195f29e93b0c50bf8c20c758fb20569ecd47f604580dcebaaf100f21da4b
BLAKE2b-256 checksum
How to use checksums
066ca436fcfc9de13e830056636c540b5b0a64314e33bd627b609c60aee3ba9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp313-cp313-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-cp313-cp313-manylinux_2_34_aarch64.whl
Size 30.3 MB
Tags CPython 3.13 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
0eb1c243d30c5d3c861525599635eb7d3adbc6d002b4710a7e1d32532082d66a
BLAKE2b-256 checksum
How to use checksums
a4fa0c47470c0850463bb8dac48e0c96cf7ed94a137e314ba8fdcd4828e32b1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp312-cp312-win_amd64.whl

Download URL gvxr-2.1.1-cp312-cp312-win_amd64.whl
Size 25.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
1a0d76282125f35b6613ace7d3266bfd938a3f607a9ed7b365634134c9fa995f
BLAKE2b-256 checksum
How to use checksums
d8eca0d514d2466012bc08686b82afa04fc980a66a9f57b3cba6e844a3dc21ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-cp312-cp312-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
a9bf827625fb3eb96ac65b7f25494da47bc70e0826c29b1e5c53b1e75a0a7be5
BLAKE2b-256 checksum
How to use checksums
d075fa66cf9fa00ccf363d61c691525663a960aef1baf9754f152305815f4da4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp312-cp312-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-cp312-cp312-manylinux_2_34_aarch64.whl
Size 30.3 MB
Tags CPython 3.12 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
44de3746f52f3856786c150d35577a473b3b5ffc08dc493b77a4acec79efc089
BLAKE2b-256 checksum
How to use checksums
c31afc6e4ea3ec1d034941239a3539c6438ef757162b09d2a9e51a63e1aa82ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp311-cp311-win_amd64.whl

Download URL gvxr-2.1.1-cp311-cp311-win_amd64.whl
Size 25.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
20251923116623fc17e7ccedcd6a1bb5c79f259747f4739455fc441c6e7ec0fb
BLAKE2b-256 checksum
How to use checksums
c7c7c19a96492c62fa8233aa5b81784af9bfca64c38770ed43f09bb2b096153c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-cp311-cp311-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
6b4c03291d301c6970642001307fe5c0574e3ed20c4fad951e5b5f35f2a1f427
BLAKE2b-256 checksum
How to use checksums
662dc9b7130235d0854dc0b056ff5109ce5bb4fe75bccbf6ccb504e7eb3937ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp311-cp311-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-cp311-cp311-manylinux_2_34_aarch64.whl
Size 30.2 MB
Tags CPython 3.11 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
0406d27d6c840ec894e15b78513a7bc48e6f20029748e6a01db136da56c5a144
BLAKE2b-256 checksum
How to use checksums
0b88dd0f2870bfa6ee84746ca2f326aec96fa1f9542ac52da2f3e239374ba60e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp310-cp310-win_amd64.whl

Download URL gvxr-2.1.1-cp310-cp310-win_amd64.whl
Size 25.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
2361e2af43bcbad60f2593b7d239fc442b9a57b85080857ea63648b2eb187798
BLAKE2b-256 checksum
How to use checksums
df5da2578fe5e9d011fddfe09cba25a1ed49cb876557ea4b6ad9c620510fabb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp310-cp310-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.1-cp310-cp310-manylinux_2_34_x86_64.whl
Size 30.7 MB
Tags CPython 3.10 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
e69c64bd0003ff41eb01480e1c568495857511d26321657057d44eabfd7efbce
BLAKE2b-256 checksum
How to use checksums
16f3d08fd9612b2faf5be33745ff21a6030cc408b846cdbfb5aaa0c9004445e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / gvxr-2.1.1-cp310-cp310-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.1-cp310-cp310-manylinux_2_34_aarch64.whl
Size 30.2 MB
Tags CPython 3.10 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
651cfd4d5f6537bd4dfc889e746df407ed9043211ddc7b09c8380d881f73de0d
BLAKE2b-256 checksum
How to use checksums
5e458fa5f8f302117c1189e215e4d01b831b48bfbf0517365819713ab15c4763
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Security for gvxr 2.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page