Skip to main content

# RadFiled3D

Reason this release was yanked:

broke backward compatibility by 16 bytes

Project description

RadFiled3D

Tests

This Repository contains the file format and API according to the Paper: "RadField3D: A Data Generator and Data Format for Deep Learning in Radiation-Protection Dosimetry for Medical Applications".

The aim of this library is, to provide a simple to use API for a structured, binary file format, that can store all relevant information from a three dimensional radiation field calculated by applications that use algorithms like Monte-Carlo radiation transport simulations. Such a binary file format is useful, when one needs to process a huge amount of radiation field files like when training a neural network. With that use-case in mind, RadFiled3D also provides a python interface with a pyTorch integration. In order to directly iterate a dataset generated with the RadField3D tool, just jump to the section RadField3D Datasets.

🌟 Why Use RadFiled3D

  • Efficient Storage: Structured, binary file format for storing large amounts of radiation field data.
  • Easy Integration: Simple API for C++ and Python with pyTorch support.
  • High Performance: Optimized for fast data access and manipulation.
  • Versatile: Supports both Cartesian and Polar coordinate systems.
  • Extensible: Easily extendable to include additional metadata and data types.

Table of Contents

Building and Installing

Installing from PyPi

Prebuilt versions of this module for python 3.11, 3.12 and 3.13 for Windows and most Linuxsystems can be installed directly by using pip.

pip install RadFiled3D

Installing from Source

You can build and install this library and python module from source by using CMake and a C++ compiler. The CMake Project will be built automatically, but will take some time.

Prerequisites

  • C++ Compiler
    • g++ or clang for Linux
    • MSVC or clang from Visual Studio 2022 for Windows
  • CMake >= 3.30
  • Python >= 3.11

CMake

In order to use the module directly from another C++ Project, you can integrate it by adding the local location of this repository via add_submodule() and then link against the target libRadFiled3D. All classes are then available from the namespace RadFiled3D. Check the Example or the First Test File as a first reference.

Python

In order to use the Module from Python, we provide a setup.py file that handles the compilation and integration automatically from the python setuptools.

Installing locally

python -m pip install .

Building a wheel

python -m build --wheel

Getting Started

Disclaimer: Not all methods support keyword arguments as they need to be defined manually in the bindings. For some methods like add_layer or the Metadata methods those are implemented.

From Python

Simple example on how to create and store a radiation field. Find more in the example file: Example

from RadFiled3D.RadFiled3D import CartesianRadiationField, DType
from RadFiled3D.utils import FieldStore, StoreVersion
from RadFiled3D.metadata.v1 import Metadata


# Creating a cartesian radiation field
field = CartesianRadiationField(vec3(2.5, 2.5, 2.5), vec3(0.05, 0.05, 0.05))
# defining a channel and a layer on it
field.get_channel("channel1").add_layer("layer1", "unit1", DType.FLOAT32)

# accessing the voxels by using numpy arrays
array = field.get_channel("channel1").get_layer_as_ndarray("layer1")
assert array.shape == (50, 50, 50)
# modify voxels content by using numpy array as no data is copied, just referenced
array[2:5, 2:5, 2:5] = 2.0

# addressing a voxel by providing a point in space
voxel = field.get_channel("channel1").get_voxel_by_coord("layer1", 0.1, 2.4, 5)

# Store changes to a file
metadata = Metadata.default()
FieldStore.store(field, metadata, "test01.rf3", StoreVersion.V1)

# load data
field2 = FieldStore.load("test01.rf3")
metadata2 = FieldStore.load_metadata("test01.rf3")

Integrating with pyTorch

RadFiled3D comes with a submodule at RadFiled3D.pytorch. This module provides some dataset classes to support the usage. Datasets can be loaded from folders or .zip-Files.

from RadFiled3D.pytorch.datasets import MetadataLoadMode
from RadFiled3D.pytorch.datasets.cartesian import CartesianFieldSingleLayerDataset
from RadFiled3D.pytorch import DataLoaderBuilder
from RadFiled3D.pytorch.helpers import RadiationFieldHelper
from RadFiled3D.RadFiled3D import VoxelGrid
from torch import Tensor
from RadFiled3D.metadata.v1 import Metadata
from RadFiled3D.pytorch.types import TrainingInputData, DirectionalInput


# Extend one of the provided dataset classes to match the output to the current needs
class MyLayerDataset(CartesianFieldSingleLayerDataset):
    def __getitem____(self, idx: int) -> TrainingInputData:
        layer, metadata = super().__getitem__(idx)
        tube_dir = metadata.get_header().simulation.tube.radiation_direction
        tube_pos = metadata.get_header().simulation.tube.radiation_origin
        # transform the layers data to a tensor
        return TrainingInputData(
            input=DirectionalInput(
                direction=torch.tensor([tube_dir.x, tube_dir.y, tube_dir.z]),
                origin=torch.tensor([tube_pos.x, tube_pos.y, tube_pos.z]),
                spectrum=None
            )
            ground_truth=RadiationFieldHelper.load_tensor_from_layer(layer)
        )


def finalize_dataset(dataset: MyLayerDataset)
    dataset.set_channel_and_layer("test_channel", "test_layer")
    dataset.metadata_load_mode = MetadataLoadMode.HEADER

# Pass the dataset class and other options to the DataLoaderBuilder
builder = DataLoaderBuilder(
    "./test_dataset.zip",
    train_ratio=0.7,
    val_ratio=0.15,
    test_ratio=0.15,
    dataset_class=MyLayerDataset,
    on_dataset_created=finalize_dataset     # Optional: provide a finalizer to perform configuration of the dataset once it was created by the builder
)

# Build the training dataset
train_dl = builder.build_train_dataloader(
    batch_size=8,
    shuffle=True,
    worker_count=4
)

# iterate over the dataset
for field, metadata in train_dl:
    pass

Direct integration with RadField3D datasets

Directly iterate RadField3D datasets either by loading whole fields or iterating each voxel independently. The dataset classes will return pyTorch compatible NamedTuples, that preserve the structure of the raw radiation fields and layers.

from RadField3D.pytorch.datasets.radfield3d import RadField3DDataset
from RadField3D.pytorch.datasets.radfield3d import RadField3DVoxelwiseDataset
# import the pyTorch compatible datatypes
from RadField3D.pytorch import DataLoaderBuilder
from RadField3D.pytorch.types import DirectionalInput, PositionalInput, TrainingInputData, RadiationField


builder = DataLoaderBuilder(
    "./test_dataset_folder/",
    train_ratio=0.7,
    val_ratio=0.15,
    test_ratio=0.15,
    dataset_class=RadField3DDataset
)

train_dl = builder.build_train_dataloader(
    batch_size=8,
    shuffle=True,
    worker_count=4
)

# iterate over the dataset using fully useable pyTorch classes
for train_data in train_dl:
    input: DirectionalInput | PositionalInput = train_data.input
    field: RadiationField = train_data.ground_truth

TrainingInputData consists of two components metadata (as DirectionalInput or PositionalInput) contains the following information

  • radiation direction (x, y, z)
  • radiation origin (x, y, z)
  • field shape (Cone, Rectangle, Ellipsis)
  • field shape parameters (opening angle, size at origin, ...)
  • x-ray tube output spectrum

field (as RadiationField) contains the following information

  • direct x-ray beam component (as RadiationFieldChannel)
    • spectrum per voxel
    • fluence per voxel
    • statistical error per voxel
  • scatter field component (as RadiationFieldChannel)
    • spectrum per voxel
    • fluence per voxel
    • statistical error per voxel
  • geometry (binary density map)

Tracing paths in Cartesian Coordinate Systems

In order to integrate RadFiled3D with other simulation frameworks or applications, one can either take the final results and write it voxel-wise to RadFiled3D or one can already use RadFiled3D during the particle tracking. Therefore, this library offers GridTracers. Each of them implements a different line-segment tracing algorithm to find consecutive voxels that are intersected.

The following GridTracers exists:

  • SamplingGridTracer: Traces a line between two points in the grid using a sampling approach. In this approach the minimum sampling size is the length of the line segment. If the line segment is longer than the minimum sampling size, which is half the L2-Norm of the voxel size, the line is divided into segments of the minimum sampling size. This approach counts the hits if the line segment is incident to a voxel, only!
  • BresenhamGridTracer: Traces a line between two points in the grid using the Bresenham algorithm. This algorithm is a line rasterization algorithm that is used to trace a line between two points in a grid. The starting point is excluded as this can only exit a voxel.
  • LinetracingGridTracer: This class traces a line between two points in the grid using a combination of the SamplingGridTracer and a line tracing algorithm. First the lossy sampling tracer is used to trace the line. Then all adjacent voxels to the voxels that were hit are tested using a line-segment intersection test algorithm.

All those tracers can be created by calling the GridTracerFactory.construct(..) method. The tracers share one single interface method:

def trace(self, p1: vec3, p2: vec3) -> list[int]:

This method takes two points as the definition of the considered line-segment and returns the flat indices of all voxels intersected, that are inside the grid.

Example usage:

from RadFiled3D.RadFiled3D import vec3, GridTracerFactory, GridTracerAlgorithm, CartesianRadiationField, DType

field = CartesianRadiationField(vec3(1.0, 1.0, 1.0), vec3(0.01, 0.01, 0.01))
field.add_channel("test").add_layer("flux", "counts", DType.INT32)
hits_counts = field.get_channel("test").get_layer_as_ndarray("flux")
hits_counts = hits_counts.flatten()

tracer = GridTracerFactory.construct(field, GridTracerAlgorithm.SAMPLING)

indices = tracer.trace(vec3(0.5, 0.5, 0.0), vec3(0.5, 0.85, 1.0))
hits_counts[indices] += 1
grid_shape = field.get_voxel_counts()
hits_counts.reshape((grid_shape.x, grid_shape.y, grid_shape.z))

Faster loading of field series

As the RadFiled3D format possesses a dynamic structure, the loading of a radiation field requires the discovery of channels and layers as well as calculating the binary entry points of channels, layers and voxels. When loading datasets for machine learning, the structure of the fields loaded will likely be constant for each dataset. Therefore, the binary entry points can be precalculated to access only those parts of the RadFiled3D files that are really needed to increase the loading speed and to reduce the needed memory. This is relealized by the FieldAccessors objects.

from RadFiled3D.RadFiled3D import CartesianFieldAccessor, FieldType, uvec3
from RadFiled3D.utils import FieldStore
from RadFiled3D.metadata.v1 import Metadata

accessor: CartesianFieldAccessor = FieldStore.construct_field_accessor("a_file.rf3")
field_type = accessor.get_field_type()
assert field_type == FieldType.CARTESIAN

print(accessor)
field = accessor.access_field("a_similar_file.rf3")
layer = accessor.access_layer("a_similar_file.rf3", "channel1", "layer1")
voxel = accessor.access_voxel("a_similar_file.rf3", "channel1", "layer1", uvec3(0, 0, 0))

FieldAccessors are implemented for the two currently supported coordinate systems: CartesianFieldAccessor and PolarFieldAccessor. Depending on the actual field type, FieldStore.construct_field_accessor(AFile) returns one of them. The pyTorch Datasets are implemented using the FieldAccessor objects to allow for quicker access of datasets. The tests shall act as example code see test_field_accessor.py.

From C++

Simple example on how to create and store a radiation field. Find more in the example file: Example

#include <RadFiled3D/storage/RadiationFieldStore.hpp>
#include <RadFiled3D/RadiationField.hpp>

using namespace RadFiled3D;
using namespace RadFiled3D::Storage;

void main() {
    auto field = std::make_shared<CartesianRadiationField>(glm::vec3(2.5f), glm::vec3(0.05f)); // field extents: 2.5 m x 2.5 m x 2.5 m and voxel extents: 5 cm x 5 cm x 5 cm

    auto metadata = std::make_shared<RadFiled3D::Storage::V1::RadiationFieldMetadata>(
        // learn about the existing data fields from the example file in ./examples/cxx/examples01.cpp
    )

    FieldStore::store(field, metadata, "test_field.rf3", StoreVersion::V1);

    auto field2 = FieldStore::load("test_field.rf3");
}

Available Voxel Datatypes

In general, a C++ Scalar- or HistogramVoxel (and thus layers) can hold any datatype. But in order to deserialize them from a file or use them from Python, there is only a specific list implemented. The Available datatypes are:

C++ Type RadFiled3D.DType
float DType.FLOAT32
double DType.FLOAT64
int DType.INT32
uint8_t DType.BYTE
unsigned char DType.BYTE
char DType.SCHAR
uint32_t DType.UINT32
uint64_t DType.UINT64
unsigned long long DType.UINT64
glm::vec2 DType.VEC2
glm::vec3 DType.VEC3
glm::vec4 DType.VEC4
HistogramVoxel DType.HISTOGRAM
AngularResolvedVoxel DType.ANGULAR

Field Structure

RadFiled3D defines a field structure, that provides the user with the possibility to first define in which kind of space he wants to operate. Therefore one can choose between CartesianRadiationField and PolarRadiationField.

  • CartesianRadiationField: Segments a room defined by an extent of the room itself and each cuboid voxel into a set of voxels. Each voxel can be addressed by a 3D position (coordinate: x, y, z), a 3D index (number of the voxel in each dimension) or a flat 1D index.
  • PolarRadiationField: Segements the surface of a unit sphere into surface segments. Each segment (voxel) can be addressed by a 2D position (coordinate: theta, phi), a 2D index (number of the segment in each dimension) or a flat 1D index.

Fields are then partitioned into channels (VoxelGridBuffer/PolarSegmentsBuffer). All channels share the same size and resolution. A channel is again partitioned into layers (VoxelGrid/PolarSegment). Each layer holds the actual voxel data and can be constructed from various data types (float, double, uint32_t, uint64_t, glm::vec2, glm::vec3, glm::vec4, N-D-Histogram (list of floats)). Additionally, a layer has a unit string assigned to it as well as a statistical uncertainty to perserve those information.

Dependencies

RadFiled3D comes with a possibly low amount of dependencies. We integrated the OpenGL Math Library (GLM) just to provide those datatypes out of the box and as GLM is a head-only library we suspect no issues by doing so.

All C++ dependencies (Will be fetched by CMake):

All python dependencies:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

radfiled3d-1.3.1.tar.gz (19.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

radfiled3d-1.3.1-cp314-cp314-win_amd64.whl (641.7 kB view details)

Uploaded CPython 3.14Windows x86-64

radfiled3d-1.3.1-cp314-cp314-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

radfiled3d-1.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

radfiled3d-1.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

radfiled3d-1.3.1-cp313-cp313-win_amd64.whl (611.6 kB view details)

Uploaded CPython 3.13Windows x86-64

radfiled3d-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

radfiled3d-1.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

radfiled3d-1.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

radfiled3d-1.3.1-cp312-cp312-win_amd64.whl (611.6 kB view details)

Uploaded CPython 3.12Windows x86-64

radfiled3d-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

radfiled3d-1.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

radfiled3d-1.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

radfiled3d-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

radfiled3d-1.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

radfiled3d-1.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

File details

Details for the file radfiled3d-1.3.1.tar.gz.

File metadata

  • Download URL: radfiled3d-1.3.1.tar.gz
  • Upload date:
  • Size: 19.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for radfiled3d-1.3.1.tar.gz
Algorithm Hash digest
SHA256 9a7022e21e616d89c23ec1d14c5833134bcbe7eee43cdacfaaf5c1de39cf95c1
MD5 7d7186ab05a5426dbd29e142ba888cb9
BLAKE2b-256 17a7c6a95c3741ddb994f935f484e6e8ff4c5886651e5a7eb6c35b08a65d17b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1.tar.gz:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: radfiled3d-1.3.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 641.7 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for radfiled3d-1.3.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8744fe739d62a3d1a33152ea98334bc6d9c6f47c2a924e736b1ea610867b6250
MD5 f5102fee07a48308d49b3695fc733a68
BLAKE2b-256 d71ba7eeac67ef6631588eb0a09eb4572a8804e900392e72300f4d3aa075496d

See more details on using hashes here.

File details

Details for the file radfiled3d-1.3.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 582a4f03322a3bab50cdbb7ce28e1cc9a692a107e5bbe212d3b3249f1a7c51f3
MD5 451986739d29b1d1540fbb4effa8de3f
BLAKE2b-256 a2d89907e2fce0b71159b4530f42d3e012730eb230205b0adefa267d27a3b82a

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a91ce4c77e970f3a21690ea00ae5c75f3a7958cff81b637bb71bf0976eba5db9
MD5 d8c749981ce0dcd682b7a099c0157e7f
BLAKE2b-256 18878ed192ce570d9aeb67838345045d3fbbdf7a1a4183b49a34b46ed9872e0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 cd1cc341e360e3a31fc5b7e71d4513d57114fb440b8a374e6e5e577717549aa0
MD5 8d238ae2d8cf7f5874e7c745385f739e
BLAKE2b-256 d62d2c133d65f13b8f61aeb8eda15cf3be6a8081a2380573af07552c5714924f

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: radfiled3d-1.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 611.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for radfiled3d-1.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 628efcf80038e2f16f96daf11ef8a021a006496acbe7c5c3a50b806f47f8647f
MD5 451b9bc87cd3b91b057c98371195f550
BLAKE2b-256 2c6ad02d94fd46397c424d025869a16499e1f75f640cb2b2894e517f05e9ad29

See more details on using hashes here.

File details

Details for the file radfiled3d-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 597e75359a2be086321ad7c911633907dce907b3da5ba5b4f1d559d190a58848
MD5 1385ae283e0d72fd6496c32433e20d1a
BLAKE2b-256 2adff241851148be4d58cf30f3f57825350b2e0025dd6cdf0d287a0602ef2d35

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5f4afdb6405c5d1f624aa356b507cea743f4f19251e410a919bc0000aac9f204
MD5 27624e8aff5ea7939d715df9ebc1d392
BLAKE2b-256 287f4d13ca7471df8ae5794d43a7f11de6678e90022356637570d85d00a04e7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ce2bc7405f9495018ac24f85899937c94cd1af634a1df84baec2624d6db21ee3
MD5 9f9fac947edab8f6b2fb40300fd463c1
BLAKE2b-256 673dc64606f71e4e497cf224c43d8d38398df51aa6fdb10ffaf6bec0edb6db9e

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: radfiled3d-1.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 611.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for radfiled3d-1.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e01fe90d68c00f744ff28983410c50b78d160097ea7921024315e5ff7510045f
MD5 829cf7952a9abb7bfb5abf131406b27b
BLAKE2b-256 2113d7685cbad44817df1a454e127db1fd7d5d25471246273f7d1f016e054a7a

See more details on using hashes here.

File details

Details for the file radfiled3d-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 190f08765f065cacccc27630d406828b06797bf8eb7bd2f9cba9c26e221de5f7
MD5 56f6caa120b4854e2af7d7d001910223
BLAKE2b-256 24322c7a45bb6943ceba990f234d8ae28a8832f0d831499c8ccb78d2f1382b35

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fff5d21d5a55219c6c527c767ab27a669372c8d6a863423c9bca9876145d6ac3
MD5 2431231169a2ef087386f9e06bf6a5a9
BLAKE2b-256 803babde4622f84ef615280e4a91c8a6f93943dda1826594b758084c90bf4b08

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 2e50db372ff72f85e141bdf9861440cc432fcad94a697bd4dfe9fd25042a16b0
MD5 2ac29747ec647b9572d2e38e44c54e30
BLAKE2b-256 378184309be7d33e330b44bde7e84541c851288babac137c28a06eb93ec13481

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 58235cd03379c809859ff0f5f981f360719d5cae22f1aa5100f15f8cd775ffcc
MD5 00cdeed5824d24e9e6301a21492c1f6a
BLAKE2b-256 5b9305fd8d9b840b3fb0281fd800256532e97496433f8df137142dbff1f4f070

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2d80421fa53b8402a5b546d78b63e0a893ed17bddcbf1bbfcd77b8683252c083
MD5 322ddc91741374e235e8c8cb95d09cbd
BLAKE2b-256 bf66b05797f387120b80edab3764aa363626e147b76aa71820aec83442bf2fab

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file radfiled3d-1.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for radfiled3d-1.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e2f91d81505a051e13d3e71fdbd66490fa5c6bd330fab795af02b715e84c5352
MD5 95e929edb1a9d9745ccbe1007a2ff92c
BLAKE2b-256 358142a2acf5319f0146a8467f4ab4b540a69081e756892eb190fbfc1dd06ab7

See more details on using hashes here.

Provenance

The following attestation bundles were made for radfiled3d-1.3.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: package-test-publish.yml on Centrasis/RadFiled3D

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page