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.setMonoChromatic(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.setMonoChromatic(0.08, "MeV", 1000);
# The following is equivalent: gvxr.setMonoChromatic(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

Release files for gvxr 2.1.0

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.0
File
gvxr-2.1.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.34+ ARM64 Details
gvxr-2.1.0-cp315-cp315t-manylinux_2_34_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-cp315-cp315t-manylinux_2_34_aarch64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ ARM64 Details
gvxr-2.1.0-cp315-cp315-win_amd64.whl CPython 3.15 CPython 3.15 Windows x86-64 Details
gvxr-2.1.0-cp315-cp315-manylinux_2_34_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-cp315-cp315-manylinux_2_34_aarch64.whl CPython 3.15 CPython 3.15 Linux glibc 2.34+ ARM64 Details
gvxr-2.1.0-cp314-cp314t-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-cp314-cp314t-manylinux_2_34_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ ARM64 Details
gvxr-2.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
gvxr-2.1.0-cp314-cp314-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-cp314-cp314-manylinux_2_34_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ ARM64 Details
gvxr-2.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
gvxr-2.1.0-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-cp313-cp313-manylinux_2_34_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ ARM64 Details
gvxr-2.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
gvxr-2.1.0-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-cp312-cp312-manylinux_2_34_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ ARM64 Details
gvxr-2.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
gvxr-2.1.0-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-cp311-cp311-manylinux_2_34_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ ARM64 Details
gvxr-2.1.0-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
gvxr-2.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
gvxr-2.1.0-cp310-cp310-manylinux_2_34_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ x86-64 Details
gvxr-2.1.0-cp310-cp310-manylinux_2_34_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ ARM64 Details

Total release size: 705.2 MB

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

Download URL gvxr-2.1.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags Linux glibc 2.34+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
9b30bc02bb18090f001c8e88e6f7266e2dba369cf698f2d177cb85d0dc8199ed
BLAKE2b-256 checksum
How to use checksums
5b7734a3cb3ff669da8c1c029522c5fd699a403a52de5e36001c45bea7cbf028
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.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags Linux glibc 2.34+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
75585fa63b40616703405cec4f22b1b34ef03ebc200bbcb30e1ceec73b9a3023
BLAKE2b-256 checksum
How to use checksums
bda781c98f99d840adb78d8786ebcd0fff9a93d97be126b36ba94b0534ce4051
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.0-cp315-cp315t-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.0-cp315-cp315t-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
b51c73218f5a712552333aa2cecc2e1b472672ceb6ff4007d9d98f6591f7401a
BLAKE2b-256 checksum
How to use checksums
7a5629225d31c746fa826dd5fa934caa43c1d228c4e5ef3aa2371d0588e27458
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.0-cp315-cp315t-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-cp315-cp315t-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
454b83f4e63dc3a645459769dd2cea21c242fe5296602ef54af8979b104b021a
BLAKE2b-256 checksum
How to use checksums
8da27f68b8a9e0587f23144877c279b4c07cf7aff0f60bc4bbe679f83477a308
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.0-cp315-cp315-win_amd64.whl

Download URL gvxr-2.1.0-cp315-cp315-win_amd64.whl
Size 25.0 MB
Tags CPython 3.15 Windows x86-64
SHA-256 checksum
How to use checksums
2e9c91c9b92b81016731be86f951e1e85dd84bd8f2c0c2dd8c4d862ccacc03d7
BLAKE2b-256 checksum
How to use checksums
a3e1d72a7161a582f10079149e435bc643d2abbe89e1412a9b5b52e2ce8812ff
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.0-cp315-cp315-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.0-cp315-cp315-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags CPython 3.15 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
fa0b8212ff2485accb1843120f56ee7ace954502d6c6977c4b33b902d1e57c51
BLAKE2b-256 checksum
How to use checksums
151bd7a8462a49b47d7af3c71b89e1ef7d30259cd10aa3f3d63bb2756f901907
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.0-cp315-cp315-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-cp315-cp315-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags CPython 3.15 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
8c0aff41890f44c2cd22ce331251ce289a9527ec66b61124bdfe45959063ccec
BLAKE2b-256 checksum
How to use checksums
c8536c876cb44e4e0c494418a81d99624ece89a0aee90681d999162970344a91
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.0-cp314-cp314t-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.0-cp314-cp314t-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
b7a7e9deda9b123624d74606405b40570f18d43a0c5a7b3d4a96f9235bb3ac44
BLAKE2b-256 checksum
How to use checksums
e56fd2a701ed95e6b54d8a427d417248f2875e08804e24e28e593e0950f47031
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.0-cp314-cp314t-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-cp314-cp314t-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
a7428b7c3ac5addd6b67e6d517dddbe97d45edf84843316e489501f1e517e866
BLAKE2b-256 checksum
How to use checksums
9a3a241d9422403c40218f57ccce8a702b9e1e8dd4518f0df14613c981e7cd49
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.0-cp314-cp314-win_amd64.whl

Download URL gvxr-2.1.0-cp314-cp314-win_amd64.whl
Size 25.0 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
4cc4f8e16383bcc1ffdc6d5e92240a75f24ab7f1f0e1d2db213650a3986cbb9c
BLAKE2b-256 checksum
How to use checksums
90b5ec1e8141df411ea15f7adce6db6eee3869c97a0f7968ce9f6a0229abdd4b
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.0-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.0-cp314-cp314-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags CPython 3.14 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
562a2da38a80cdbeaf69579b101baeb2320e822e31ac394de12aca61688f05ea
BLAKE2b-256 checksum
How to use checksums
d8e72b69bb6853c1630869813bf025113999ddc0a97cf52b4f5d05cd4cce3a27
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.0-cp314-cp314-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-cp314-cp314-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags CPython 3.14 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
d2d7d15aca82a63e1e34550372d9669b4e15bd8e8a58c9b01e49a872fd5d9d25
BLAKE2b-256 checksum
How to use checksums
5f14d2706a2c90aa47ab22a4e3c04304907acfbea5e5cbe3b80acb8e17ba119a
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.0-cp313-cp313-win_amd64.whl

Download URL gvxr-2.1.0-cp313-cp313-win_amd64.whl
Size 24.9 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
cf620a9fc392bd86bdaf8c0cf2d6a421d1a90fa5c3bd9af793026467f85a1339
BLAKE2b-256 checksum
How to use checksums
2a22f5d8bb189d069eed03566fb83df5e2d4800816b5a207aca6d43515d64e46
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.0-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.0-cp313-cp313-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
10a45c1b43a6a3213d552f2a0d29fb599b4cafd49568cbba822f0b5050eb2894
BLAKE2b-256 checksum
How to use checksums
21c7cb312c81eec82788aca5301f7897303034329dc4d2d199ae1e0e34593b13
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.0-cp313-cp313-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-cp313-cp313-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags CPython 3.13 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
b19319c135518350cb3c11c72d935a35b069c8444679413a7a39cffe4f10783f
BLAKE2b-256 checksum
How to use checksums
41e8e2ec5b7d5f24b458ce5aed88b9b24726edc255c8ccbad1c935e18b97f089
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.0-cp312-cp312-win_amd64.whl

Download URL gvxr-2.1.0-cp312-cp312-win_amd64.whl
Size 24.9 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3ec146321b7875552f33c4b8aa5dc602bf676354b075c65ca51d7c234b079440
BLAKE2b-256 checksum
How to use checksums
11cdb20214be40fb469c2ee12b2cf4dfd337cf11222d7b81b1f1578323e5ae4a
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.0-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.0-cp312-cp312-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
9345a3be3c976f8d6277a32682f07ff0932c8030052e325237895a1b4cae05ea
BLAKE2b-256 checksum
How to use checksums
c234ac476a602b7652484b8caa88c1090a1b1cf1f124e34d6e4e7acf958d2824
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.0-cp312-cp312-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-cp312-cp312-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags CPython 3.12 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
3531479edf13aa5ba98fbe9cd032963ae66b5e84815d7fadff0ce48c15938778
BLAKE2b-256 checksum
How to use checksums
24c73b00a07fcd3909c8c42acbfaefbb4e37165438bc9408af4ea86bf8239756
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.0-cp311-cp311-win_amd64.whl

Download URL gvxr-2.1.0-cp311-cp311-win_amd64.whl
Size 24.9 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
53e175dc6d541d77f7479e17ee365fb35824322520901056ce4631ea16dd6e6f
BLAKE2b-256 checksum
How to use checksums
85ebd01f52dae1271be9da8d519868d2e4e3c9765a47d8e466b840e4f8ee9411
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.0-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.0-cp311-cp311-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
a4bbbc665318c840b002b2a11649536af51beb112a3b66f0a373a604517ea264
BLAKE2b-256 checksum
How to use checksums
28a2566c151b1f3f43197f6b58b1a1abaed50bd819112e8654ccfaaf8eca0f65
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.0-cp311-cp311-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-cp311-cp311-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags CPython 3.11 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
328aba16ae9fa2b0f828b820c6c846a827b3f10bf0b2a0a4750ca50df4b233d7
BLAKE2b-256 checksum
How to use checksums
7a50cb7c1b9a29d38eb67de2ce44cc33c8abbb4ca731318994db0978c7ae3085
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.0-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL gvxr-2.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 29.6 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
17df8e0772c82d6728d0992742f6a8ed6b7bd6b512bd773e172a8e2869e3d3ab
BLAKE2b-256 checksum
How to use checksums
919d99892d4444f0e28b51c0739c7b29ab18c16028c072be7b6fe9443cbf0922
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.0-cp310-cp310-win_amd64.whl

Download URL gvxr-2.1.0-cp310-cp310-win_amd64.whl
Size 24.9 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d41de74cd6efc48fcd779398c0cd3279ac53bffe0106ad91154c53b821aee395
BLAKE2b-256 checksum
How to use checksums
5195c089011490b1e7afe20f9e48e131aac2e606fbc26ba0501f4e19c8666273
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.0-cp310-cp310-manylinux_2_34_x86_64.whl

Download URL gvxr-2.1.0-cp310-cp310-manylinux_2_34_x86_64.whl
Size 29.4 MB
Tags CPython 3.10 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
091115cc66572cf71555f135377e9c086e2eb7357cf297ddcfde71ecfb0fdf5b
BLAKE2b-256 checksum
How to use checksums
2f988e857c370ee6bab19f2acce2cb757f407e8296745f677789c551dc068220
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.0-cp310-cp310-manylinux_2_34_aarch64.whl

Download URL gvxr-2.1.0-cp310-cp310-manylinux_2_34_aarch64.whl
Size 29.0 MB
Tags CPython 3.10 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
4e3014208598c15160c8721b8fe7b4366cb53bbd1701d99fc9c45bb16e20bbc1
BLAKE2b-256 checksum
How to use checksums
2fec2fac844c06092335355ae65a75e9d10f58b7a765315fbfe038a3bc4b65e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

2.1.0 This release

25 release files

2.0.6

14 release files

2.0.4

9 release files

2.0.3

19 release files

2.0.1

9 release files

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